This is a multi-part message in MIME format. --------------DDE38193B6E74523C9854D5E Content-Type: text/plain; charset=iso-8859-15 Content-Transfer-Encoding: 7bit johan verrept wrote: > > hello, > > minor bugfix for vsprintf.c, vsscanf did not discard whitespace in input: > - when encoutering whitespace in fmt not followed by '%' > - in conversion where result is ignored with '*' > > There is another bugfix in this, don't know from who. (picked it up with uml) > (vsscanf used to skip two characters in the fmt for a single char in the input if not in > conversion.) > > Patch against 2.4.12, I am afraid. Attached patch is beter. Both bugs are fixed and it adds fieldwidth support for conversions with ignored results. Again against 2.4.12. J. --------------DDE38193B6E74523C9854D5E Content-Type: text/plain; charset=iso-8859-15; name="vsprintf.c.diff" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="vsprintf.c.diff" --- linux-2.4.12-clean/lib/vsprintf.c Sun Sep 16 20:26:10 2001 +++ linux-2.4.12-devel/lib/vsprintf.c Thu Oct 18 03:06:47 2001 @@ -525,12 +525,15 @@ for (; *fmt; fmt++) { /* skip any white space in format */ if (isspace(*fmt)) { + /* space in fmt skips all space in input */ + while (isspace(*str)) str++; continue; } /* anything that is not a conversion must match exactly */ if (*fmt != '%') { - if (*fmt++ != *str++) + /* Don't bump fmt because the for header will do it */ + if (*fmt != *str++) return num; continue; } @@ -540,10 +543,25 @@ * advance both strings to next white space */ if (*fmt == '*') { - while (!isspace(*fmt)) + fmt++; + /* get fieldwidth */ + field_width = 0xffffffffUL; + if (isdigit(*fmt)) + field_width = skip_atoi(&fmt); + + /* skip possible conversion qualifier */ + if (*fmt == 'h' || *fmt == 'l' || *fmt == 'L' || *fmt == 'Z') fmt++; - while(!isspace(*str)) + + /* do not skip conversion char, the for loop will do this */ + + /* eat all whitespace before conversion! */ + while(isspace(*str)) + str++; + while(!isspace(*str) && field_width) { + field_width--; str++; + } continue; } --------------DDE38193B6E74523C9854D5E-- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/