Don't free(9) a pointer which has been modified.

Chapeau de pointe:	mux
This commit is contained in:
Poul-Henning Kamp 2002-04-23 18:52:39 +00:00
parent 708da94ef2
commit 3c9f58204e
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=95320
2 changed files with 14 additions and 12 deletions

View file

@ -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);
}
}

View file

@ -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);
}
}