Revert "s4:registry/util - Don't include the trailing '\0' in the internal data forma...
[ira/wip.git] / source4 / lib / registry / util.c
index b3b6e49ea5e6ab7b560eaec7ef2768dcc7a3dd91..9409a8f4bc958482b166c3bcc4f07e9fa61a35a5 100644 (file)
@@ -20,7 +20,6 @@
 #include "includes.h"
 #include "lib/registry/registry.h"
 #include "librpc/gen_ndr/winreg.h"
-#include "param/param.h"
 
 /**
  * @file
@@ -64,18 +63,25 @@ _PUBLIC_ char *reg_val_data_string(TALLOC_CTX *mem_ctx,
        switch (type) {
                case REG_EXPAND_SZ:
                case REG_SZ:
-                       convert_string_talloc(mem_ctx, iconv_convenience, CH_UTF16, CH_UNIX,
-                                             data.data, data.length,
-                                             (void **)&ret);
-                       return ret;
+                       convert_string_talloc_convenience(mem_ctx,
+                                                         iconv_convenience,
+                                                         CH_UTF16, CH_UNIX,
+                                                         data.data,
+                                                         data.length,
+                                                         (void **)&ret,
+                                                         NULL, false);
+                       break;
                case REG_BINARY:
-                       ret = data_blob_hex_string(mem_ctx, &data);
-                       return ret;
+                       ret = data_blob_hex_string_upper(mem_ctx, &data);
+                       break;
                case REG_DWORD:
-                       if (*(int *)data.data == 0)
-                               return talloc_strdup(mem_ctx, "0");
-                       return talloc_asprintf(mem_ctx, "0x%x",
-                                              *(int *)data.data);
+                       if (*(int *)data.data == 0) {
+                               ret = talloc_strdup(mem_ctx, "0");
+                       } else {
+                               ret = talloc_asprintf(mem_ctx, "0x%x",
+                                                     *(int *)data.data);
+                       }
+                       break;
                case REG_MULTI_SZ:
                        /* FIXME */
                        break;
@@ -120,13 +126,16 @@ _PUBLIC_ bool reg_string_to_val(TALLOC_CTX *mem_ctx,
 
        /* Convert data appropriately */
 
-       switch (*type)
-       {
+       switch (*type) {
                case REG_SZ:
                case REG_EXPAND_SZ:
-               data->length = convert_string_talloc(mem_ctx, iconv_convenience, CH_UNIX, CH_UTF16,
-                                                    data_str, strlen(data_str),
-                                                    (void **)&data->data);
+                       convert_string_talloc_convenience(mem_ctx,
+                                                         iconv_convenience,
+                                                         CH_UNIX, CH_UTF16,
+                                                         data_str,
+                                                         strlen(data_str)+1,
+                                                         (void **)&data->data,
+                                                         &data->length, false);
                        break;
 
                case REG_DWORD: {