r12755: check the return value of ldb_timestring(), as this fails,
authorStefan Metzmacher <metze@samba.org>
Sat, 7 Jan 2006 10:56:55 +0000 (10:56 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:49:50 +0000 (13:49 -0500)
when gmtime() fails...

metze
(This used to be commit 523746f2712371041800301294c73bb7686bf2d5)

source4/nbt_server/wins/winsdb.c

index e64ebdd60a61689acf7e4b1308f8caa00cacc199..72dbd779595008f0bb43306de53caa65571130e2 100644 (file)
@@ -318,10 +318,14 @@ static int ldb_msg_add_winsdb_addr(struct ldb_message *msg,
 {
        struct ldb_val val;
        const char *str;
+       char *expire_time;
 
+       expire_time = ldb_timestring(msg, addr->expire_time);
+       if (!expire_time) return -1;
        str = talloc_asprintf(msg, "%s;winsOwner:%s;expireTime:%s;",
                              addr->address, addr->wins_owner,
-                             ldb_timestring(msg, addr->expire_time));
+                             expire_time);
+       talloc_free(expire_time);
        if (!str) return -1;
 
        val.data = discard_const_p(uint8_t, str);
@@ -588,8 +592,9 @@ struct ldb_message *winsdb_message(struct ldb_context *ldb,
 {
        int i, ret=0;
        size_t addr_count;
+       const char *expire_time;
        struct ldb_message *msg = ldb_msg_new(mem_ctx);
-       if (msg == NULL) goto failed;
+       if (msg == NULL) goto failed;   
 
        if (rec->is_static) {
                rec->state = WREPL_STATE_ACTIVE;
@@ -608,6 +613,11 @@ struct ldb_message *winsdb_message(struct ldb_context *ldb,
                rec->type = WREPL_TYPE_MHOMED;
        }
 
+       expire_time = ldb_timestring(msg, rec->expire_time);
+       if (!expire_time) {
+               goto failed;
+       }
+
        msg->dn = winsdb_dn(msg, rec->name);
        if (msg->dn == NULL) goto failed;
        ret |= ldb_msg_add_fmt(msg, "type", "0x%02X", rec->name->type);
@@ -622,8 +632,7 @@ struct ldb_message *winsdb_message(struct ldb_context *ldb,
        ret |= ldb_msg_add_fmt(msg, "recordState", "%u", rec->state);
        ret |= ldb_msg_add_fmt(msg, "nodeType", "%u", rec->node);
        ret |= ldb_msg_add_fmt(msg, "isStatic", "%u", rec->is_static);
-       ret |= ldb_msg_add_string(msg, "expireTime", 
-                                 ldb_timestring(msg, rec->expire_time));
+       ret |= ldb_msg_add_string(msg, "expireTime", expire_time);
        ret |= ldb_msg_add_fmt(msg, "versionID", "%llu", (long long)rec->version);
        ret |= ldb_msg_add_string(msg, "winsOwner", rec->wins_owner);
        ret |= ldb_msg_add_empty(msg, "address", 0);