Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 6 Jan 2002 10:03:55 -0800 (PST)
From:      Warner Losh <imp@FreeBSD.org>
To:        cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/usr.sbin/pccard/pccardd readcis.c
Message-ID:  <200201061803.g06I3tO85445@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
imp         2002/01/06 10:03:55 PST

  Modified files:
    usr.sbin/pccard/pccardd readcis.c 
  Log:
  Update length more correctly when parsing a cis info field.
  
  Before, we were using
          while (*p++ && --len > 0);
  to do this.  However, len doesn't get decremented for the NUL byte, so when
  we used len later to see if we still have CIS left for some optional fields,
  we'd run off the end of an array and dump core.
  
  Instead, replace it with
          len -= strlen(p) + 1;
          p += strlen(p) + 1;
  which is more correct.  It is a little bogus to assume that p points to
  a valid C string, but only a little.  The PC Card SPEC mandates that it
  does, and we already depend on that with the use of strdup a few lines
  earlier.  Since much of the rest of the cis parsing code isn't hyper
  retentive about error checking, I'll leave that level of checking for
  another time and/or another committer :-).
  
  Revision  Changes    Path
  1.22      +12 -5     src/usr.sbin/pccard/pccardd/readcis.c

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200201061803.g06I3tO85445>