lkml.org 
[lkml]   [2009]   [Sep]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [PATCH] fix %*s%n in sscanf
    From
    On Fri, Sep 25, 2009 at 2:27 PM, Andy Spencer <andy753421@gmail.com> wrote:
    > When using %*s, sscanf should honor conversion specifiers immediately following
    > the %*s. For example, the following code should find the position of the end of
    > the string "hello".
    >
    >  int end;
    >  char buf[] = "hello    world";
    >  sscanf(buf, "%*s%n", &end);
    >  printf("%d\n", end);
    >
    > Ideally, sscanf would advance the fmt and str pointers the same as it would
    > without the *, but the code for that is rather complicated and is not included
    > in the patch.


    Yeah, seems reasonable. So, without your patch, sscanf() in kernel
    will ignore everything after '*', right?


    >
    > Please CC me in replies.
    >
    >
    > Signed-off-by: Andy Spencer <andy753421@gmail.com>


    Fortunately, a quick grep shows no one uses '%*' in sscanf()
    in kernel space:

    % grep 'sscanf(.*\".*%\*.*\".*)' -nr ./

    For completeness,

    Acked-by: WANG Cong <xiyou.wangcong@gmail.com>

    >
    > diff --git a/lib/vsprintf.c b/lib/vsprintf.c
    > index 73a14b8..da2daf2 100644
    > --- a/lib/vsprintf.c
    > +++ b/lib/vsprintf.c
    > @@ -1766,7 +1766,7 @@ int vsscanf(const char * buf, const char * fmt, va_list args)
    >                 * advance both strings to next white space
    >                 */
    >                if (*fmt == '*') {
    > -                       while (!isspace(*fmt) && *fmt)
    > +                       while (!isspace(*fmt) && *fmt != '%' && *fmt)
    >                                fmt++;
    >                        while (!isspace(*str) && *str)
    >                                str++;
    >
    --
    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/

    \
     
     \ /
      Last update: 2009-09-25 09:05    [W:0.039 / U:59.548 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site