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>
