More tftp improvements
This commit is contained in:
parent
0a2eb2a8c9
commit
a4fb23fdba
1 changed files with 9 additions and 3 deletions
12
tftp.c
12
tftp.c
|
|
@ -240,6 +240,7 @@ static ssize_t tftp_sendto(int sock, char *pkt, size_t len,
|
||||||
switch (pkt_num(pkt)) {
|
switch (pkt_num(pkt)) {
|
||||||
case RRQ:
|
case RRQ:
|
||||||
case WRQ:
|
case WRQ:
|
||||||
|
case OACK:
|
||||||
len = pkt_xrqlen(pkt);
|
len = pkt_xrqlen(pkt);
|
||||||
break;
|
break;
|
||||||
case DATA:
|
case DATA:
|
||||||
|
|
@ -310,7 +311,7 @@ int tftp_put(struct nmrpd_args *args)
|
||||||
int fd, sock, ret, timeout, errors, ackblock;
|
int fd, sock, ret, timeout, errors, ackblock;
|
||||||
char rx[2048], tx[2048];
|
char rx[2048], tx[2048];
|
||||||
const char *file_remote = args->file_remote;
|
const char *file_remote = args->file_remote;
|
||||||
char *p;
|
char *val, *end;
|
||||||
|
|
||||||
sock = -1;
|
sock = -1;
|
||||||
ret = -1;
|
ret = -1;
|
||||||
|
|
@ -384,8 +385,13 @@ int tftp_put(struct nmrpd_args *args)
|
||||||
ackblock = pkt_num(rx + 2);
|
ackblock = pkt_num(rx + 2);
|
||||||
} else if (op == OACK) {
|
} else if (op == OACK) {
|
||||||
ackblock = 0;
|
ackblock = 0;
|
||||||
if ((p = pkt_optval(rx, "blksize"))) {
|
if ((val = pkt_optval(rx, "blksize"))) {
|
||||||
blksize = atoi(p);
|
blksize = strtol(val, &end, 10);
|
||||||
|
if (!blksize || (*end != '\0')) {
|
||||||
|
fprintf(stderr, "Error: invalid blksize in OACK: %s\n", val);
|
||||||
|
ret = -1;
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue