From: Steve Dickson Date: Tue, 6 Mar 2012 16:03:38 +0000 (-0500) Subject: nfsmount: Fixed parsing error in the nfsmount.conf code. X-Git-Tag: nfs-utils-1-2-5-rc4~25 X-Git-Url: https://git.decadent.org.uk/gitweb/?p=nfs-utils.git;a=commitdiff_plain;h=bc3c8b3496598b6f7a2d0692f3351c3704cb4b9d nfsmount: Fixed parsing error in the nfsmount.conf code. When the options where prefixed with spaces (instead of tabs) the second option in the list was missed to so a miscalculation the the nfsmount.conf parsing code. Signed-off-by: Steve Dickson --- diff --git a/support/nfs/conffile.c b/support/nfs/conffile.c index 3990578..2f1e235 100644 --- a/support/nfs/conffile.c +++ b/support/nfs/conffile.c @@ -211,7 +211,7 @@ static void conf_parse_line(int trans, char *line, size_t sz) { char *val, *ptr; - size_t i; + size_t i, valsize; size_t j; static char *section = 0; static char *arg = 0; @@ -298,23 +298,16 @@ conf_parse_line(int trans, char *line, size_t sz) } line[strcspn (line, " \t=")] = '\0'; val = line + i + 1 + strspn (line + i + 1, " \t"); + valsize = 0; + while (val[valsize++]); - /* Skip trailing comments, if any */ - for (j = 0; j < sz - (val - line); j++) { - if (val[j] == '#' || val[j] == ';') { + /* Skip trailing spaces and comments */ + for (j = 0; j < valsize; j++) { + if (val[j] == '#' || val[j] == ';' || isspace(val[j])) { val[j] = '\0'; break; } } - - /* Skip trailing whitespace, if any */ - for (j--; j > 0; j--) { - if (isspace(val[j])) - val[j] = '\0'; - else - break; - } - /* XXX Perhaps should we not ignore errors? */ conf_set(trans, section, arg, line, val, 0, 0); return;