CID-4275: don't leak `fixdevmtab'
This commit is contained in:
parent
a740eb5ac0
commit
2f403ebe4f
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: files.c,v 1.4 2006/09/27 19:05:46 christos Exp $ */
|
/* $NetBSD: files.c,v 1.5 2006/12/26 00:07:18 alc Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1992, 1993
|
* Copyright (c) 1992, 1993
|
||||||
@ -339,10 +339,12 @@ fixobjects(void)
|
|||||||
int
|
int
|
||||||
fixdevsw(void)
|
fixdevsw(void)
|
||||||
{
|
{
|
||||||
|
int error;
|
||||||
struct devm *dm, *res;
|
struct devm *dm, *res;
|
||||||
struct hashtab *fixdevmtab;
|
struct hashtab *fixdevmtab;
|
||||||
char mstr[16];
|
char mstr[16];
|
||||||
|
|
||||||
|
error = 0;
|
||||||
fixdevmtab = ht_new();
|
fixdevmtab = ht_new();
|
||||||
|
|
||||||
TAILQ_FOREACH(dm, &alldevms, dm_next) {
|
TAILQ_FOREACH(dm, &alldevms, dm_next) {
|
||||||
@ -358,6 +360,7 @@ fixdevsw(void)
|
|||||||
"device-major '%s' is inconsistent: "
|
"device-major '%s' is inconsistent: "
|
||||||
"block %d, char %d", dm->dm_name,
|
"block %d, char %d", dm->dm_name,
|
||||||
dm->dm_bmajor, dm->dm_cmajor);
|
dm->dm_bmajor, dm->dm_cmajor);
|
||||||
|
error = 1;
|
||||||
goto out;
|
goto out;
|
||||||
} else {
|
} else {
|
||||||
xerror(dm->dm_srcfile, dm->dm_srcline,
|
xerror(dm->dm_srcfile, dm->dm_srcline,
|
||||||
@ -365,6 +368,7 @@ fixdevsw(void)
|
|||||||
"block %d, char %d",
|
"block %d, char %d",
|
||||||
dm->dm_name, dm->dm_bmajor,
|
dm->dm_name, dm->dm_bmajor,
|
||||||
dm->dm_cmajor);
|
dm->dm_cmajor);
|
||||||
|
error = 1;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -382,6 +386,7 @@ fixdevsw(void)
|
|||||||
xerror(dm->dm_srcfile, dm->dm_srcline,
|
xerror(dm->dm_srcfile, dm->dm_srcline,
|
||||||
"device-major of character device '%s' "
|
"device-major of character device '%s' "
|
||||||
"is already defined", dm->dm_name);
|
"is already defined", dm->dm_name);
|
||||||
|
error = 1;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
(void)snprintf(mstr, sizeof(mstr), "%d", dm->dm_cmajor);
|
(void)snprintf(mstr, sizeof(mstr), "%d", dm->dm_cmajor);
|
||||||
@ -389,6 +394,7 @@ fixdevsw(void)
|
|||||||
xerror(dm->dm_srcfile, dm->dm_srcline,
|
xerror(dm->dm_srcfile, dm->dm_srcline,
|
||||||
"device-major of character major '%d' "
|
"device-major of character major '%d' "
|
||||||
"is already defined", dm->dm_cmajor);
|
"is already defined", dm->dm_cmajor);
|
||||||
|
error = 1;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
if (ht_insert(cdevmtab, intern(dm->dm_name), dm) ||
|
if (ht_insert(cdevmtab, intern(dm->dm_name), dm) ||
|
||||||
@ -402,6 +408,7 @@ fixdevsw(void)
|
|||||||
xerror(dm->dm_srcfile, dm->dm_srcline,
|
xerror(dm->dm_srcfile, dm->dm_srcline,
|
||||||
"device-major of block device '%s' "
|
"device-major of block device '%s' "
|
||||||
"is already defined", dm->dm_name);
|
"is already defined", dm->dm_name);
|
||||||
|
error = 1;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
(void)snprintf(mstr, sizeof(mstr), "%d", dm->dm_bmajor);
|
(void)snprintf(mstr, sizeof(mstr), "%d", dm->dm_bmajor);
|
||||||
@ -409,6 +416,7 @@ fixdevsw(void)
|
|||||||
xerror(dm->dm_srcfile, dm->dm_srcline,
|
xerror(dm->dm_srcfile, dm->dm_srcline,
|
||||||
"device-major of block major '%d' "
|
"device-major of block major '%d' "
|
||||||
"is already defined", dm->dm_bmajor);
|
"is already defined", dm->dm_bmajor);
|
||||||
|
error = 1;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
if (ht_insert(bdevmtab, intern(dm->dm_name), dm) ||
|
if (ht_insert(bdevmtab, intern(dm->dm_name), dm) ||
|
||||||
@ -419,10 +427,9 @@ fixdevsw(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (0);
|
|
||||||
out:
|
out:
|
||||||
ht_free(fixdevmtab);
|
ht_free(fixdevmtab);
|
||||||
return (1);
|
return (error);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user