Padding byte in cifs readx response

Jeremy Allison jra at samba.org
Fri Aug 8 13:56:51 MDT 2014


On Thu, Aug 07, 2014 at 04:16:45PM -0700, Christof Schmitt wrote:
> 
> Thanks. Attached is an updated patch series. I think the only remaining
> issue is that 'make test' now fails against the source4 DC, the source3
> file server should be good.

One more comment. struct smb_request contains the 'cmd'
field, which means that reply_outbuf() *knows* when it's
creating an outbuf for a readX reply.

Can't you just always add the pad byte inside:

void reply_outbuf(struct smb_request *req, uint8 num_words, uint32 num_bytes)
{
        char *outbuf;
        if (!create_outbuf(req, req, (const char *)req->inbuf, &outbuf, num_words,
                           num_bytes)) {
                smb_panic("could not allocate output buffer\n");
        }
        req->outbuf = (uint8_t *)outbuf;
}

by adding 1 to num_bytes when cmd==readX and then
using srv_set_message() or some version of the code
inside there to fix up the outbuf at creation time.

The talloc_realloc() in your patch really worries me.

Jeremy.


More information about the samba-technical mailing list