From: Peter Johnson Date: Mon, 23 Oct 2006 03:32:06 +0000 (-0000) Subject: genmodule.c: Fix edge cases in string handling. X-Git-Tag: v0.6.0~117 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bfac47e0623224bc3edda752c4f8af4797d92bd7;p=yasm genmodule.c: Fix edge cases in string handling. svn path=/trunk/yasm/; revision=1664 --- diff --git a/libyasm/genmodule.c b/libyasm/genmodule.c index f34fa1c7..ee35c830 100644 --- a/libyasm/genmodule.c +++ b/libyasm/genmodule.c @@ -92,10 +92,12 @@ main(int argc, char *argv[]) while (fgets(str, MAXLINE, in)) { /* Strip off any trailing whitespace */ len = strlen(str); - strp = &str[len-1]; - while (isspace(*strp)) { - *strp-- = '\0'; - len--; + if (len > 0) { + strp = &str[len-1]; + while (len > 0 && isspace(*strp)) { + *strp-- = '\0'; + len--; + } } strp = str; @@ -141,7 +143,7 @@ main(int argc, char *argv[]) keepgoing: /* Check for continuation */ - if (str[len-1] == '\\') { + if (len > 0 && str[len-1] == '\\') { str[len-1] = '\0'; while (isspace(*strp)) *strp-- = '\0'; @@ -204,10 +206,8 @@ keepgoing: for (i=0; i