From b0bdf9549464dcf6058d55aeb81220b73cd9701c Mon Sep 17 00:00:00 2001 From: Alexander Drozdov Date: Fri, 31 Oct 2008 11:13:10 -0700 Subject: [PATCH] Fix underflow, incorrect assertion. --- src/ChangeLog | 6 ++++++ src/ftp-ls.c | 1 + src/retr.c | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/ChangeLog b/src/ChangeLog index e4f98d75..8a162245 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2008-10-31 Alexander Drozdov + + * retr.c (fd_read_hunk): Make assert deal with maxsize == 0. + + * ftp-ls.c (clean_line): Prevent underflow on empty lines. + 2008-10-26 Gisle Vanem * main.c (format_and_print_line): Put variables on top of diff --git a/src/ftp-ls.c b/src/ftp-ls.c index 409996c3..660302e5 100644 --- a/src/ftp-ls.c +++ b/src/ftp-ls.c @@ -75,6 +75,7 @@ clean_line(char *line) if (!len) return 0; if (line[len - 1] == '\n') line[--len] = '\0'; + if (!len) return 0; if (line[len - 1] == '\r') line[--len] = '\0'; for ( ; *line ; line++ ) if (*line == '\t') *line = ' '; diff --git a/src/retr.c b/src/retr.c index 85774297..21c9002e 100644 --- a/src/retr.c +++ b/src/retr.c @@ -393,7 +393,7 @@ fd_read_hunk (int fd, hunk_terminator_t terminator, long sizehint, long maxsize) char *hunk = xmalloc (bufsize); int tail = 0; /* tail position in HUNK */ - assert (maxsize >= bufsize); + assert (!maxsize || maxsize >= bufsize); while (1) { -- 2.39.2