Commit 6a69ab5e authored by Simon Kelley's avatar Simon Kelley

Fix error-handling problem in TFTP server.

parent fc92ead0
...@@ -312,7 +312,10 @@ void tftp_request(struct listener *listen, time_t now) ...@@ -312,7 +312,10 @@ void tftp_request(struct listener *listen, time_t now)
!(filename = next(&p, end)) || !(filename = next(&p, end)) ||
!(mode = next(&p, end)) || !(mode = next(&p, end)) ||
(strcasecmp(mode, "octet") != 0 && strcasecmp(mode, "netascii") != 0)) (strcasecmp(mode, "octet") != 0 && strcasecmp(mode, "netascii") != 0))
{
len = tftp_err(ERR_ILL, packet, _("unsupported request from %s"), daemon->addrbuff); len = tftp_err(ERR_ILL, packet, _("unsupported request from %s"), daemon->addrbuff);
is_err = 1;
}
else else
{ {
if (strcasecmp(mode, "netascii") == 0) if (strcasecmp(mode, "netascii") == 0)
...@@ -505,13 +508,13 @@ void check_tftp_listeners(fd_set *rset, time_t now) ...@@ -505,13 +508,13 @@ void check_tftp_listeners(fd_set *rset, time_t now)
{ {
tmp = transfer->next; tmp = transfer->next;
prettyprint_addr(&transfer->peer, daemon->addrbuff);
if (FD_ISSET(transfer->sockfd, rset)) if (FD_ISSET(transfer->sockfd, rset))
{ {
/* we overwrote the buffer... */ /* we overwrote the buffer... */
daemon->srv_save = NULL; daemon->srv_save = NULL;
prettyprint_addr(&transfer->peer, daemon->addrbuff);
if ((len = recv(transfer->sockfd, daemon->packet, daemon->packet_buff_sz, 0)) >= (ssize_t)sizeof(struct ack)) if ((len = recv(transfer->sockfd, daemon->packet, daemon->packet_buff_sz, 0)) >= (ssize_t)sizeof(struct ack))
{ {
if (ntohs(mess->op) == OP_ACK && ntohs(mess->block) == (unsigned short)transfer->block) if (ntohs(mess->op) == OP_ACK && ntohs(mess->block) == (unsigned short)transfer->block)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment