From 4a1884da5322dc9b6fec2b461fe0e8ca6425178a Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Sat, 3 Apr 2010 14:59:12 +0200 Subject: [PATCH] ftpd: shrink by 33 bytes Signed-off-by: Denys Vlasenko --- networking/ftpd.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/networking/ftpd.c b/networking/ftpd.c index 7605d48f3..375cc0ca5 100644 --- a/networking/ftpd.c +++ b/networking/ftpd.c @@ -981,17 +981,23 @@ handle_stou(void) static uint32_t cmdio_get_cmd_and_arg(void) { - size_t len; + int len; uint32_t cmdval; char *cmd; alarm(G.timeout); free(G.ftp_cmd); - len = 8 * 1024; /* Paranoia. Peer may send 1 gigabyte long cmd... */ - G.ftp_cmd = cmd = xmalloc_fgets_str_len(stdin, "\r\n", &len); - if (!cmd) - exit(0); + { + /* Paranoia. Peer may send 1 gigabyte long cmd... */ + /* Using separate len_on_stk instead of len optimizes + * code size (allows len to be in CPU register) */ + size_t len_on_stk = 8 * 1024; + G.ftp_cmd = cmd = xmalloc_fgets_str_len(stdin, "\r\n", &len_on_stk); + if (!cmd) + exit(0); + len = len_on_stk; + } /* De-escape telnet: 0xff,0xff => 0xff */ /* RFC959 says that ABOR, STAT, QUIT may be sent even during