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