diff options
author | phk <phk@FreeBSD.org> | 2002-04-23 18:52:39 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 2002-04-23 18:52:39 +0000 |
commit | 6a45f19d900c22a97eb40dfe73ba95fe0a22fe6e (patch) | |
tree | aea637c3f555b5e97d31897e2e01d3c9c78b6faa | |
parent | 834fdde07aa3e3bd0fa935c43bf688eb6d0850de (diff) | |
download | FreeBSD-src-6a45f19d900c22a97eb40dfe73ba95fe0a22fe6e.zip FreeBSD-src-6a45f19d900c22a97eb40dfe73ba95fe0a22fe6e.tar.gz |
Don't free(9) a pointer which has been modified.
Chapeau de pointe: mux
-rw-r--r-- | sys/amd64/amd64/autoconf.c | 13 | ||||
-rw-r--r-- | sys/i386/i386/autoconf.c | 13 |
2 files changed, 14 insertions, 12 deletions
diff --git a/sys/amd64/amd64/autoconf.c b/sys/amd64/amd64/autoconf.c index 60b3725..85808d5 100644 --- a/sys/amd64/amd64/autoconf.c +++ b/sys/amd64/amd64/autoconf.c @@ -290,31 +290,32 @@ hwaddr_to_sockaddr(char *ev, struct sockaddr_dl *sa) static int decode_nfshandle(char *ev, u_char *fh) { - u_char *cp; + u_char *cp, *ep; int len, val; - if ((cp = getenv(ev)) == NULL) + ep = cp = getenv(ev); + if (cp == NULL) return(0); if ((strlen(cp) < 2) || (*cp != 'X')) { - freeenv(cp); + freeenv(ep); return (0); } len = 0; cp++; for (;;) { if (*cp == 'X') { - freeenv(cp); + freeenv(ep); return(len); } if ((sscanf(cp, "%2x", &val) != 1) || (val > 0xff)) { - freeenv(cp); + freeenv(ep); return(0); } *(fh++) = val; len++; cp += 2; if (len > NFSX_V2FH) { - freeenv(cp); + freeenv(ep); return(0); } } diff --git a/sys/i386/i386/autoconf.c b/sys/i386/i386/autoconf.c index 60b3725..85808d5 100644 --- a/sys/i386/i386/autoconf.c +++ b/sys/i386/i386/autoconf.c @@ -290,31 +290,32 @@ hwaddr_to_sockaddr(char *ev, struct sockaddr_dl *sa) static int decode_nfshandle(char *ev, u_char *fh) { - u_char *cp; + u_char *cp, *ep; int len, val; - if ((cp = getenv(ev)) == NULL) + ep = cp = getenv(ev); + if (cp == NULL) return(0); if ((strlen(cp) < 2) || (*cp != 'X')) { - freeenv(cp); + freeenv(ep); return (0); } len = 0; cp++; for (;;) { if (*cp == 'X') { - freeenv(cp); + freeenv(ep); return(len); } if ((sscanf(cp, "%2x", &val) != 1) || (val > 0xff)) { - freeenv(cp); + freeenv(ep); return(0); } *(fh++) = val; len++; cp += 2; if (len > NFSX_V2FH) { - freeenv(cp); + freeenv(ep); return(0); } } |