s3:libsmb: use trans2_bytes_push_str() in cli_set_ea_path()
authorStefan Metzmacher <metze@samba.org>
Thu, 7 Jul 2011 08:16:38 +0000 (10:16 +0200)
committerStefan Metzmacher <metze@samba.org>
Thu, 7 Jul 2011 12:49:50 +0000 (14:49 +0200)
metze

source3/libsmb/clifile.c

index 3fa124e6f1c39175a1b1b9ad8d04a4a1c967fc06..93b84177058c86d6ba0ae4709ffe01638d1052f1 100644 (file)
@@ -4104,21 +4104,24 @@ NTSTATUS cli_set_ea_path(struct cli_state *cli, const char *path,
        size_t srclen = 2*(strlen(path)+1);
        char *p;
        NTSTATUS status;
+       TALLOC_CTX *frame = talloc_stackframe();
 
-       param = SMB_MALLOC_ARRAY(uint8_t, 6+srclen+2);
+       param = talloc_array(talloc_tos(), uint8_t, 6);
        if (!param) {
                return NT_STATUS_NO_MEMORY;
        }
-       memset(param, '\0', 6);
        SSVAL(param,0,SMB_INFO_SET_EA);
-       p = (char *)(&param[6]);
+       SSVAL(param,2,0);
+       SSVAL(param,4,0);
 
-       p += clistr_push(cli, p, path, srclen, STR_TERMINATE);
-       param_len = PTR_DIFF(p, param);
+       param = trans2_bytes_push_str(param, cli_ucs2(cli),
+                                     path, strlen(path)+1,
+                                     NULL);
+       param_len = talloc_get_size(param);
 
        status = cli_set_ea(cli, TRANSACT2_SETPATHINFO, param, param_len,
                            ea_name, ea_val, ea_len);
-       SAFE_FREE(param);
+       SAFE_FREE(frame);
        return status;
 }