r2536: This is a classic case for the use of our new talloc code, and
authorAndrew Bartlett <abartlet@samba.org>
Wed, 22 Sep 2004 22:06:21 +0000 (22:06 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:59:03 +0000 (12:59 -0500)
convert_string_talloc().

Andrew Bartlett
(This used to be commit 79776006b37fa9df0586711edaba5335467461ac)

source4/torture/basic/charset.c

index 879f20617fd3781a6172859e2696ad48f14b23ea..cb29645de6dca49c976ab3de04b26e456a2acb44 100644 (file)
@@ -40,8 +40,9 @@ static NTSTATUS unicode_open(struct smbcli_tree *tree,
        int i;
        NTSTATUS status;
 
-       ucs_name = malloc((1+u_name_len)*2);
+       ucs_name = talloc(NULL, (1+u_name_len)*2);
        if (!ucs_name) {
+               printf("Failed to create UCS2 Name - talloc() failure\n");
                return NT_STATUS_NO_MEMORY;
        }
 
@@ -50,16 +51,16 @@ static NTSTATUS unicode_open(struct smbcli_tree *tree,
        }
        SSVAL(ucs_name, i*2, 0);
 
-       i = convert_string_allocate(CH_UTF16, CH_UNIX, ucs_name, (1+u_name_len)*2, (void **)&fname);
+       i = convert_string_talloc(ucs_name, CH_UTF16, CH_UNIX, ucs_name, (1+u_name_len)*2, (void **)&fname);
        if (i == -1) {
-               free(ucs_name);
+               printf("Failed to convert UCS2 Name into unix - convert_string_talloc() failure\n");
+               talloc_free(ucs_name);
                return NT_STATUS_NO_MEMORY;
        }
 
-       asprintf(&fname2, "%s%s", BASEDIR, fname);
+       fname2 = talloc_asprintf(ucs_name, "%s%s", BASEDIR, fname);
        if (!fname2) {
-               free(fname);
-               free(ucs_name);
+               talloc_free(ucs_name);
                return NT_STATUS_NO_MEMORY;
        }
 
@@ -79,9 +80,7 @@ static NTSTATUS unicode_open(struct smbcli_tree *tree,
 
        status = smb_raw_open(tree, mem_ctx, &io);
 
-       free(fname);
-       free(fname2);
-       free(ucs_name);
+       talloc_free(ucs_name);
 
        return status;
 }