s3-registry: Check return code of push_reg_sz().
authorAndreas Schneider <asn@samba.org>
Mon, 10 Dec 2012 16:47:15 +0000 (17:47 +0100)
committerGünther Deschner <gd@samba.org>
Wed, 12 Dec 2012 08:42:32 +0000 (09:42 +0100)
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Guenther Deschner <gd@samba.org>
source3/registry/reg_perfcount.c

index 3203e092e36726ee3efbe7a09a44245b8ea5cd49..e51d3743208a43eda9da745f8be0b663fc4dc545 100644 (file)
@@ -158,6 +158,7 @@ static uint32 _reg_perfcount_multi_sz_from_tdb(TDB_CONTEXT *tdb,
        char *buf1 = *retbuf;
        uint32 working_size = 0;
        DATA_BLOB name_index, name;
+       bool ok;
 
        memset(temp, 0, sizeof(temp));
        snprintf(temp, sizeof(temp), "%d", keyval);
@@ -178,7 +179,11 @@ static uint32 _reg_perfcount_multi_sz_from_tdb(TDB_CONTEXT *tdb,
                buffer_size = 0;
                return buffer_size;
        }
-       push_reg_sz(talloc_tos(), &name_index, (const char *)kbuf.dptr);
+       ok = push_reg_sz(talloc_tos(), &name_index, (const char *)kbuf.dptr);
+       if (!ok) {
+               buffer_size = 0;
+               return buffer_size;
+       }
        memcpy(buf1+buffer_size, (char *)name_index.data, working_size);
        buffer_size += working_size;
        /* Now encode the actual name */
@@ -191,7 +196,11 @@ static uint32 _reg_perfcount_multi_sz_from_tdb(TDB_CONTEXT *tdb,
        memset(temp, 0, sizeof(temp));
        memcpy(temp, dbuf.dptr, dbuf.dsize);
        SAFE_FREE(dbuf.dptr);
-       push_reg_sz(talloc_tos(), &name, temp);
+       ok = push_reg_sz(talloc_tos(), &name, temp);
+       if (!ok) {
+               buffer_size = 0;
+               return buffer_size;
+       }
        memcpy(buf1+buffer_size, (char *)name.data, working_size);
        buffer_size += working_size;