Fix a bug which causes wrong filename being written into the syslog

in the case when client sends request with RFC2347 options.

Approved by:	re
MFC After:	2 weeks
This commit is contained in:
sobomax 2003-11-20 13:36:31 +00:00
parent 18a4a482e1
commit dced91d8f3

View File

@ -364,8 +364,9 @@ tftp(struct tftphdr *tp, int size)
int i, first = 1, has_options = 0, ecode;
struct formats *pf;
char *filename, *mode, *option, *ccp;
char fnbuf[MAXPATHLEN];
filename = cp = tp->th_stuff;
cp = tp->th_stuff;
again:
while (cp < buf + size) {
if (*cp == '\0')
@ -376,6 +377,14 @@ tftp(struct tftphdr *tp, int size)
nak(EBADOP);
exit(1);
}
i = cp - tp->th_stuff;
if (i >= sizeof(fnbuf)) {
nak(EBADOP);
exit(1);
}
memcpy(fnbuf, tp->th_stuff, i);
fnbuf[i] = '\0';
filename = fnbuf;
if (first) {
mode = ++cp;
first = 0;