dbwrap_tdb: Avoid a use of talloc_stackframe()
authorVolker Lendecke <vl@samba.org>
Wed, 16 Oct 2019 13:27:49 +0000 (15:27 +0200)
committerJeremy Allison <jra@samba.org>
Wed, 6 Nov 2019 20:36:34 +0000 (20:36 +0000)
For really large keys (that probably don't exist), use dump_data()

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
lib/dbwrap/dbwrap_tdb.c

index eb08a01a161551e3c7d2aad10fe750ec7bf56d68..1ac7dc9ed7a7e5195553c787e7720fa4deb43d12 100644 (file)
@@ -42,24 +42,24 @@ static NTSTATUS db_tdb_delete(struct db_record *rec);
 
 static void db_tdb_log_key(const char *prefix, TDB_DATA key)
 {
-       size_t len;
-       char *keystr;
-       TALLOC_CTX *frame;
        if (DEBUGLEVEL < 10) {
                return;
        }
-       frame = talloc_stackframe();
-       len = key.dsize;
        if (DEBUGLEVEL == 10) {
                /*
                 * Only fully spam at debuglevel > 10
                 */
-               len = MIN(10, key.dsize);
+               key.dsize = MIN(10, key.dsize);
        }
-       keystr = hex_encode_talloc(frame, (unsigned char *)(key.dptr),
-                                  len);
-       DBG_DEBUG("%s key %s\n", prefix, keystr);
-       TALLOC_FREE(frame);
+
+       if (key.dsize < 1024) {
+               char keystr[key.dsize*2+1];
+               hex_encode_buf(keystr, key.dptr, key.dsize);
+               DBG_DEBUG("%s key %s\n", prefix, keystr);
+               return;
+       }
+
+       dump_data(DEBUGLEVEL, key.dptr, key.dsize);
 }
 
 static int db_tdb_record_destr(struct db_record* data)