diff --git a/source/lib/registry/ldb.c b/source/lib/registry/ldb.c index a8a9ed5..088e483 100644 --- a/source/lib/registry/ldb.c +++ b/source/lib/registry/ldb.c @@ -64,6 +64,15 @@ static void reg_ldb_unpack_value(TALLOC_CTX *mem_ctx, (void **)&data->data); break; + case REG_BINARY: + if (val) + *data = strhex_to_data_blob((char *)val->data); + else { + data->data = NULL; + data->length = 0; + } + break; + case REG_DWORD: { uint32_t tmp = strtoul((char *)val->data, NULL, 0); *data = data_blob_talloc(mem_ctx, &tmp, 4); @@ -97,6 +106,11 @@ static struct ldb_message *reg_ldb_pack_value(struct ldb_context *ctx, ldb_msg_add_value(msg, "data", &val, NULL); break; + case REG_BINARY: + ldb_msg_add_string(msg, "data", + data_blob_hex_string(mem_ctx, &data)); + break; + case REG_DWORD: ldb_msg_add_string(msg, "data", talloc_asprintf(mem_ctx, "0x%x",