s4:registry - util.c - treat unsupported and binary values as the same in the convers...
authorMatthias Dieter Wallnöfer <mwallnoefer@yahoo.de>
Mon, 15 Mar 2010 10:15:19 +0000 (11:15 +0100)
committerMatthias Dieter Wallnöfer <mwallnoefer@yahoo.de>
Mon, 15 Mar 2010 12:28:12 +0000 (13:28 +0100)
We don't need to provide an extra representation for all available registry types.
But if we treat all unsupported types as binary we also get our tools (regtree,
regshell, regdiff...) working with them in a basic manner.

source4/lib/registry/util.c

index ba284de8db7531bd587f3e803d01ec3f78bbbf65..fd75f91aac04bfab176f13a85cee150da68beeee 100644 (file)
@@ -84,9 +84,6 @@ _PUBLIC_ char *reg_val_data_string(TALLOC_CTX *mem_ctx,
                                                                  NULL, false);
                        }
                        break;
-               case REG_BINARY:
-                       ret = data_blob_hex_string_upper(mem_ctx, &data);
-                       break;
                case REG_DWORD:
                        if (data.length == sizeof(uint32_t)) {
                                ret = talloc_asprintf(mem_ctx, "0x%8.8x",
@@ -99,12 +96,9 @@ _PUBLIC_ char *reg_val_data_string(TALLOC_CTX *mem_ctx,
                                                      BVAL(data.data, 0));
                        }
                        break;
-               case REG_MULTI_SZ:
-                       /* FIXME: We don't support this yet */
-                       break;
+               case REG_BINARY:
                default:
-                       /* FIXME */
-                       /* Other datatypes aren't supported -> return "NULL" */
+                       ret = data_blob_hex_string_upper(mem_ctx, &data);
                        break;
        }
 
@@ -159,9 +153,6 @@ _PUBLIC_ bool reg_string_to_val(TALLOC_CTX *mem_ctx,
                                                          (void **)&data->data,
                                                          &data->length, false);
                        break;
-               case REG_BINARY:
-                       *data = strhex_to_data_blob(mem_ctx, data_str);
-                       break;
                case REG_DWORD: {
                        uint32_t tmp = strtol(data_str, NULL, 0);
                        *data = data_blob_talloc(mem_ctx, NULL, sizeof(uint32_t));
@@ -174,13 +165,10 @@ _PUBLIC_ bool reg_string_to_val(TALLOC_CTX *mem_ctx,
                        SBVAL(data->data, 0, tmp);
                        }
                        break;
-               case REG_MULTI_SZ:
-                       /* FIXME: We don't support this yet */
-                       return false;
+               case REG_BINARY:
                default:
-                       /* FIXME */
-                       /* Other datatypes aren't supported -> return no success */
-                       return false;
+                       *data = strhex_to_data_blob(mem_ctx, data_str);
+                       break;
        }
        return true;
 }