]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
ldb: ldbdump key and pack format version comments
authorAaron Haslett <aaronhaslett@catalyst.net.nz>
Mon, 20 May 2019 04:19:51 +0000 (16:19 +1200)
committerKarolin Seeger <kseeger@samba.org>
Wed, 28 Aug 2019 07:36:29 +0000 (07:36 +0000)
For testing we need to know the actual KV level key of records and each
record's pack format version. This patch makes ldbdump add comments with
that info. We will parse it out in python tests.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=13978

Signed-off-by: Aaron Haslett <aaronhaslett@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Gary Lockyer <gary@catalyst.net.nz>
Autobuild-User(master): Andrew Bartlett <abartlet@samba.org>
Autobuild-Date(master): Wed May 22 05:58:17 UTC 2019 on sn-devel-184

(cherry picked from commit a666a99e4dc594bc153cd26b24cddd547c1cc750)

lib/ldb/tools/ldbdump.c

index 4697661a59dcd8d104c687ac8e488d58e90c77be..f01403418f1cc6ce5a85b93a2a23c5102e6ec477 100644 (file)
@@ -36,6 +36,26 @@ static struct ldb_context *ldb;
 bool show_index = false;
 bool validate_contents = false;
 
+static void print_data(TDB_DATA d)
+{
+       unsigned char *p = (unsigned char *)d.dptr;
+       int len = d.dsize;
+       while (len--) {
+               if (isprint(*p) && !strchr("\"\\", *p)) {
+                       fputc(*p, stdout);
+               } else {
+                       printf("\\%02X", *p);
+               }
+               p++;
+       }
+}
+
+static unsigned int pull_uint32(uint8_t *p)
+{
+       return p[0] | (p[1]<<8) | (p[2]<<16) | (p[3]<<24);
+}
+
+
 static int traverse_fn(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA _dbuf, void *state)
 {
        int ret, i, j;
@@ -79,6 +99,10 @@ static int traverse_fn(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA _dbuf, void *sta
                }
        }
 
+       printf("# key: ");
+       print_data(key);
+       printf("\n# pack format: %#010x\n", pull_uint32(_dbuf.dptr));
+
        if (!validate_contents || ldb_dn_is_special(msg->dn)) {
                ldb_ldif_write_file(ldb, stdout, &ldif);
                TALLOC_FREE(msg);