summaryrefslogtreecommitdiff
path: root/source3/smbd
diff options
context:
space:
mode:
authorVolker Lendecke <vlendec@samba.org>2007-08-13 20:16:33 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:29:38 -0500
commit6624bf7fd28d20fab0becb7140627b88c24456ce (patch)
treef7d4fcf1933380de42e4ac8f3031e67609e505a4 /source3/smbd
parentff355558e37cbc0863b1955d63463f39b8820335 (diff)
downloadsamba-6624bf7fd28d20fab0becb7140627b88c24456ce.tar.gz
samba-6624bf7fd28d20fab0becb7140627b88c24456ce.tar.bz2
samba-6624bf7fd28d20fab0becb7140627b88c24456ce.zip
r24385: Convert call_nt_transact_query_security_desc to the new API
(This used to be commit f44e0aac2b47ea377c2ce701426e57ee15c42fe7)
Diffstat (limited to 'source3/smbd')
-rw-r--r--source3/smbd/nttrans.c73
1 files changed, 35 insertions, 38 deletions
diff --git a/source3/smbd/nttrans.c b/source3/smbd/nttrans.c
index e474c9a3b6..53ba37bafd 100644
--- a/source3/smbd/nttrans.c
+++ b/source3/smbd/nttrans.c
@@ -2239,10 +2239,15 @@ static size_t get_null_nt_acl(TALLOC_CTX *mem_ctx, SEC_DESC **ppsd)
Reply to query a security descriptor.
****************************************************************************/
-static int call_nt_transact_query_security_desc(connection_struct *conn, char *inbuf, char *outbuf, int length, int bufsize,
- uint16 **ppsetup, uint32 setup_count,
- char **ppparams, uint32 parameter_count,
- char **ppdata, uint32 data_count, uint32 max_data_count)
+static void call_nt_transact_query_security_desc(connection_struct *conn,
+ struct smb_request *req,
+ uint16 **ppsetup,
+ uint32 setup_count,
+ char **ppparams,
+ uint32 parameter_count,
+ char **ppdata,
+ uint32 data_count,
+ uint32 max_data_count)
{
char *params = *ppparams;
char *data = *ppdata;
@@ -2254,12 +2259,14 @@ static int call_nt_transact_query_security_desc(connection_struct *conn, char *i
files_struct *fsp = NULL;
if(parameter_count < 8) {
- return ERROR_DOS(ERRDOS,ERRbadfunc);
+ reply_doserror(req, ERRDOS, ERRbadfunc);
+ return;
}
fsp = file_fsp(SVAL(params,0));
if(!fsp) {
- return ERROR_DOS(ERRDOS,ERRbadfid);
+ reply_doserror(req, ERRDOS, ERRbadfid);
+ return;
}
security_info_wanted = IVAL(params,4);
@@ -2269,12 +2276,14 @@ static int call_nt_transact_query_security_desc(connection_struct *conn, char *i
params = nttrans_realloc(ppparams, 4);
if(params == NULL) {
- return ERROR_DOS(ERRDOS,ERRnomem);
+ reply_doserror(req, ERRDOS, ERRnomem);
+ return;
}
if ((mem_ctx = talloc_init("call_nt_transact_query_security_desc")) == NULL) {
DEBUG(0,("call_nt_transact_query_security_desc: talloc_init failed.\n"));
- return ERROR_DOS(ERRDOS,ERRnomem);
+ reply_doserror(req, ERRDOS, ERRnomem);
+ return;
}
/*
@@ -2289,7 +2298,8 @@ static int call_nt_transact_query_security_desc(connection_struct *conn, char *i
if (sd_size == 0) {
talloc_destroy(mem_ctx);
- return(UNIXERROR(ERRDOS,ERRnoaccess));
+ reply_unixerror(req, ERRDOS, ERRnoaccess);
+ return;
}
DEBUG(3,("call_nt_transact_query_security_desc: sd_size = %lu.\n",(unsigned long)sd_size));
@@ -2298,10 +2308,10 @@ static int call_nt_transact_query_security_desc(connection_struct *conn, char *i
if(max_data_count < sd_size) {
- send_nt_replies(inbuf, outbuf, bufsize, NT_STATUS_BUFFER_TOO_SMALL,
- params, 4, *ppdata, 0);
+ send_nt_replies_new(req, NT_STATUS_BUFFER_TOO_SMALL,
+ params, 4, *ppdata, 0);
talloc_destroy(mem_ctx);
- return -1;
+ return;
}
/*
@@ -2311,7 +2321,8 @@ static int call_nt_transact_query_security_desc(connection_struct *conn, char *i
data = nttrans_realloc(ppdata, sd_size);
if(data == NULL) {
talloc_destroy(mem_ctx);
- return ERROR_DOS(ERRDOS,ERRnomem);
+ reply_doserror(req, ERRDOS, ERRnomem);
+ return;
}
/*
@@ -2338,7 +2349,8 @@ security descriptor.\n"));
* Return access denied for want of a better error message..
*/
talloc_destroy(mem_ctx);
- return(UNIXERROR(ERRDOS,ERRnoaccess));
+ reply_unixerror(req, ERRDOS, ERRnoaccess);
+ return;
}
/*
@@ -2347,9 +2359,9 @@ security descriptor.\n"));
talloc_destroy(mem_ctx);
- send_nt_replies(inbuf, outbuf, bufsize, NT_STATUS_OK, params, 4, data,
- (int)sd_size);
- return -1;
+ send_nt_replies_new(req, NT_STATUS_OK, params, 4, data,
+ (int)sd_size);
+ return;
}
/****************************************************************************
@@ -3177,28 +3189,13 @@ static void handle_nttrans(connection_struct *conn,
case NT_TRANSACT_QUERY_SECURITY_DESC:
{
- char *inbuf, *outbuf;
- int size, bufsize;
-
START_PROFILE(NT_transact_query_security_desc);
-
- if (!reply_prep_legacy(req, &inbuf, &outbuf, &size,
- &bufsize)) {
- reply_nterror(req, NT_STATUS_NO_MEMORY);
- END_PROFILE(SMBnttrans);
- return;
- }
-
- reply_post_legacy(
- req,
- call_nt_transact_query_security_desc(
- conn, inbuf, outbuf,
- size, bufsize,
- &state->setup, state->setup_count,
- &state->param, state->total_param,
- &state->data, state->total_data,
- state->max_data_return));
-
+ call_nt_transact_query_security_desc(
+ conn, req,
+ &state->setup, state->setup_count,
+ &state->param, state->total_param,
+ &state->data, state->total_data,
+ state->max_data_return);
END_PROFILE(NT_transact_query_security_desc);
break;
}