1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-09 09:57:48 +03:00

Remove the direct inbuf reference from construct_reply_common()

This commit is contained in:
Volker Lendecke 2008-12-19 18:07:44 +01:00
parent 13eefa7c43
commit ae0c6cff25
2 changed files with 11 additions and 10 deletions

View File

@ -7489,8 +7489,6 @@ struct idle_event *event_add_idle(struct event_context *event_ctx,
void *private_data); void *private_data);
NTSTATUS allow_new_trans(struct trans_state *list, int mid); NTSTATUS allow_new_trans(struct trans_state *list, int mid);
void respond_to_all_remaining_local_messages(void); void respond_to_all_remaining_local_messages(void);
bool create_outbuf(TALLOC_CTX *mem_ctx, const char *inbuf, char **outbuf,
uint8_t num_words, uint32_t num_bytes);
void reply_outbuf(struct smb_request *req, uint8 num_words, uint32 num_bytes); void reply_outbuf(struct smb_request *req, uint8 num_words, uint32 num_bytes);
const char *smb_fn_name(int type); const char *smb_fn_name(int type);
void add_to_common_flags2(uint32 v); void add_to_common_flags2(uint32 v);

View File

@ -37,7 +37,8 @@ SIG_ATOMIC_T got_sig_term = 0;
extern bool global_machine_password_needs_changing; extern bool global_machine_password_needs_changing;
extern int max_send; extern int max_send;
static void construct_reply_common(const char *inbuf, char *outbuf); static void construct_reply_common(struct smb_request *req, const char *inbuf,
char *outbuf);
/* Accessor function for smb_read_error for smbd functions. */ /* Accessor function for smb_read_error for smbd functions. */
@ -1248,8 +1249,9 @@ static const struct smb_message_struct {
allocate and initialize a reply packet allocate and initialize a reply packet
********************************************************************/ ********************************************************************/
bool create_outbuf(TALLOC_CTX *mem_ctx, const char *inbuf, char **outbuf, static bool create_outbuf(TALLOC_CTX *mem_ctx, struct smb_request *req,
uint8_t num_words, uint32_t num_bytes) const char *inbuf, char **outbuf, uint8_t num_words,
uint32_t num_bytes)
{ {
/* /*
* Protect against integer wrap * Protect against integer wrap
@ -1270,7 +1272,7 @@ bool create_outbuf(TALLOC_CTX *mem_ctx, const char *inbuf, char **outbuf,
return false; return false;
} }
construct_reply_common(inbuf, *outbuf); construct_reply_common(req, inbuf, *outbuf);
srv_set_message(*outbuf, num_words, num_bytes, false); srv_set_message(*outbuf, num_words, num_bytes, false);
/* /*
* Zero out the word area, the caller has to take care of the bcc area * Zero out the word area, the caller has to take care of the bcc area
@ -1286,7 +1288,7 @@ bool create_outbuf(TALLOC_CTX *mem_ctx, const char *inbuf, char **outbuf,
void reply_outbuf(struct smb_request *req, uint8 num_words, uint32 num_bytes) void reply_outbuf(struct smb_request *req, uint8 num_words, uint32 num_bytes)
{ {
char *outbuf; char *outbuf;
if (!create_outbuf(req, (char *)req->inbuf, &outbuf, num_words, if (!create_outbuf(req, req, (char *)req->inbuf, &outbuf, num_words,
num_bytes)) { num_bytes)) {
smb_panic("could not allocate output buffer\n"); smb_panic("could not allocate output buffer\n");
} }
@ -1592,11 +1594,12 @@ void remove_from_common_flags2(uint32 v)
common_flags2 &= ~v; common_flags2 &= ~v;
} }
static void construct_reply_common(const char *inbuf, char *outbuf) static void construct_reply_common(struct smb_request *req, const char *inbuf,
char *outbuf)
{ {
srv_set_message(outbuf,0,0,false); srv_set_message(outbuf,0,0,false);
SCVAL(outbuf,smb_com,CVAL(inbuf,smb_com)); SCVAL(outbuf, smb_com, req->cmd);
SIVAL(outbuf,smb_rcls,0); SIVAL(outbuf,smb_rcls,0);
SCVAL(outbuf,smb_flg, FLAG_REPLY | (CVAL(inbuf,smb_flg) & FLAG_CASELESS_PATHNAMES)); SCVAL(outbuf,smb_flg, FLAG_REPLY | (CVAL(inbuf,smb_flg) & FLAG_CASELESS_PATHNAMES));
SSVAL(outbuf,smb_flg2, SSVAL(outbuf,smb_flg2,
@ -1612,7 +1615,7 @@ static void construct_reply_common(const char *inbuf, char *outbuf)
void construct_reply_common_req(struct smb_request *req, char *outbuf) void construct_reply_common_req(struct smb_request *req, char *outbuf)
{ {
construct_reply_common((char *)req->inbuf, outbuf); construct_reply_common(req, (char *)req->inbuf, outbuf);
} }
/**************************************************************************** /****************************************************************************