At Mon, 02 Dec 2002 11:39:34 +0100 (MET),
Clemens Ladisch wrote:
> 
> Jaroslav Kysela wrote:
> > revision 1.6
> > date: 2002/11/28 13:54:34;  author: perex;  state: Exp;  lines: +3 -4
> >
> > Fixed parsiong of id where dst is NULL
> >
> > Index: initval.h
> > ===================================================================
> > RCS file: /cvsroot/alsa/alsa-kernel/include/initval.h,v
> > retrieving revision 1.5
> > retrieving revision 1.6
> > diff -u -r1.5 -r1.6
> > --- initval.h   23 Nov 2002 10:41:53 -0000      1.5
> > +++ initval.h   28 Nov 2002 13:54:34 -0000      1.6
> > @@ -156,10 +156,9 @@
> >         for (s = *str; isalpha(*s) || isdigit(*s) || *s == '_'; s++);
> >         if (s != *str) {
> >                 *dst = (char *)kmalloc(s - *str, GFP_KERNEL);
> > -               if ((d = *dst) != NULL) {
> > -                       s = *str;
> > -                       while (isalpha(*s) || isdigit(*s) || *s == '_')
> > +               s = *str; d = *dst;
> > +               while (isalpha(*s) || isdigit(*s) || *s == '_')
> > +                       if (d != NULL)
> >                                 *d++ = *s++;
> > -               }
> >         }
> >         *str = s;
> 
> I'm not sure I understand what this patch tries to fix. Revision 1.5 seems
> to work when kmalloc fails (it skips the input field and returns NULL),
> but revision 1.6 goes into an infinite loop because s isn't incremented
> when d == NULL.

i guess s should be proceeded even if kmalloc fails, i.e. skip the
word.

> 
> And IMNSHO the returned string should be zero-terminated.

yep.


Takashi

Attachment: initval-fix.dif
Description: Binary data

Reply via email to