Patchwork slirp/tftp.c: fix mode field

login
register
mail settings
Submitter Sergei Gavrikov
Date Jan. 10, 2011, 9:46 p.m.
Message ID <alpine.DEB.2.00.1101102325100.3913@sg-laptop>
Download mbox | patch
Permalink /patch/78245/
State New
Headers show

Comments

Sergei Gavrikov - Jan. 10, 2011, 9:46 p.m.
Hi,

According to RFC 1350 http://www.ietf.org/rfc/rfc1350.txt [Page 5]:

    The mode field contains the string "netascii", "octet", or "mail"
    (or any combination of upper and lower case, such as "NETASCII",
    NetAscii", etc.)

Unfortunately, current implementation of internal TFTP server breaks the
requests with the mode fields like "OCTET\0". For example, the RedBoot's
TFTP client sends the same (in upper case). So, it is not possible to
get internal TFTP working with RedBoot loader. If you do not have doubts
about STRCASECMP(3), a patch is provided.

Thanks,
Sergei

Signed-off-by: Sergei Gavrikov <sergei.gavrikov@gmail.com>
---
 slirp/tftp.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

Patch

diff --git a/slirp/tftp.c b/slirp/tftp.c
index 55e4692..6ad1da0 100644
--- a/slirp/tftp.c
+++ b/slirp/tftp.c
@@ -311,7 +311,7 @@  static void tftp_handle_rrq(Slirp *slirp, struct tftp_t *tp, int pktlen)
     return;
   }
 
-  if (memcmp(&tp->x.tp_buf[k], "octet\0", 6) != 0) {
+  if (strcasecmp(&tp->x.tp_buf[k], "octet") != 0) {
       tftp_send_error(spt, 4, "Unsupported transfer mode", tp);
       return;
   }