/*The following definitions come from libsmb/clisecdesc.c */
-SEC_DESC *cli_query_secdesc(struct cli_state *cli,int fd);
+SEC_DESC *cli_query_secdesc(struct cli_state *cli,int fd, TALLOC_CTX *mem_ctx);
BOOL cli_set_secdesc(struct cli_state *cli,int fd, SEC_DESC *sd);
/*The following definitions come from libsmb/clistr.c */
/****************************************************************************
query the security descriptor for a open file
****************************************************************************/
-SEC_DESC *cli_query_secdesc(struct cli_state *cli,int fd)
+SEC_DESC *cli_query_secdesc(struct cli_state *cli,int fd, TALLOC_CTX *mem_ctx)
{
char param[8];
char *rparam=NULL, *rdata=NULL;
int rparam_count=0, rdata_count=0;
- TALLOC_CTX *mem_ctx=NULL;
prs_struct pd;
SEC_DESC *psd = NULL;
goto cleanup;
}
- if ((mem_ctx = talloc_init()) == NULL) {
- DEBUG(0,("talloc_init failed.\n"));
- goto cleanup;
- }
-
prs_init(&pd, rdata_count, mem_ctx, UNMARSHALL);
prs_append_data(&pd, rdata, rdata_count);
pd.data_offset = 0;
cleanup:
- talloc_destroy(mem_ctx);
safe_free(rparam);
safe_free(rdata);
return psd;
}
-
-
-
/****************************************************************************
set the security descriptor for a open file
****************************************************************************/
prs_mem_free(&pd);
return ret;
}
-
/* Converted OK */
fstrcpy(str, names[0]);
-
- safe_free(names[0]);
- safe_free(names);
- safe_free(types);
}
/* convert a string to a SID, either numeric or username/group */
sid_copy(sid, &sids[0]);
- safe_free(sids);
- safe_free(types);
-
done:
return result;
return EXIT_FAILED;
}
- sd = cli_query_secdesc(cli, fnum);
+ sd = cli_query_secdesc(cli, fnum, ctx);
if (!sd) {
printf("ERROR: secdesc query failed: %s\n", cli_errstr(cli));
if (!StringToSid(&sid, new_username))
return EXIT_PARSE_ERROR;
- old = cli_query_secdesc(cli, fnum);
+ old = cli_query_secdesc(cli, fnum, ctx);
cli_close(cli, fnum);
return EXIT_FAILED;
}
- old = cli_query_secdesc(cli, fnum);
+ old = cli_query_secdesc(cli, fnum, ctx);
if (!old) {
printf("calc_set: Failed to query old descriptor\n");