1*8ccd4a63SDavid du Colombier #include "headers.h"
2*8ccd4a63SDavid du Colombier
3*8ccd4a63SDavid du Colombier SmbProcessResult
smbcomecho(SmbSession * s,SmbHeader * h,uchar * pdata,SmbBuffer * b)4*8ccd4a63SDavid du Colombier smbcomecho(SmbSession *s, SmbHeader *h, uchar *pdata, SmbBuffer *b)
5*8ccd4a63SDavid du Colombier {
6*8ccd4a63SDavid du Colombier ushort echocount, e;
7*8ccd4a63SDavid du Colombier if (!smbcheckwordcount("comecho", h, 1))
8*8ccd4a63SDavid du Colombier return SmbProcessResultFormat;
9*8ccd4a63SDavid du Colombier echocount = smbnhgets(pdata);
10*8ccd4a63SDavid du Colombier for (e = 0; e < echocount; e++) {
11*8ccd4a63SDavid du Colombier ulong bytecountfixupoffset;
12*8ccd4a63SDavid du Colombier SmbProcessResult pr;
13*8ccd4a63SDavid du Colombier if (!smbbufferputheader(s->response, h, &s->peerinfo)
14*8ccd4a63SDavid du Colombier || !smbbufferputs(s->response, e))
15*8ccd4a63SDavid du Colombier return SmbProcessResultMisc;
16*8ccd4a63SDavid du Colombier bytecountfixupoffset = smbbufferwriteoffset(s->response);
17*8ccd4a63SDavid du Colombier if (!smbbufferputbytes(s->response, smbbufferreadpointer(b), smbbufferreadspace(b))
18*8ccd4a63SDavid du Colombier || !smbbufferfixuprelatives(s->response, bytecountfixupoffset))
19*8ccd4a63SDavid du Colombier return SmbProcessResultMisc;
20*8ccd4a63SDavid du Colombier pr = smbresponsesend(s);
21*8ccd4a63SDavid du Colombier if (pr != SmbProcessResultOk)
22*8ccd4a63SDavid du Colombier return SmbProcessResultDie;
23*8ccd4a63SDavid du Colombier }
24*8ccd4a63SDavid du Colombier return SmbProcessResultOk;
25*8ccd4a63SDavid du Colombier }
26