- cleanup memory if opening aliases failed and cleanup was requested.

This commit is contained in:
Bernhard Reutner-Fischer 2006-05-19 11:24:28 +00:00
parent 42c4259f68
commit e3c150bc67

View File

@ -364,8 +364,8 @@ static void include_conf ( struct dep_t **first, struct dep_t **current, char *b
} }
/* /*
* This function builds a list of dependency rules from /lib/modules/`uname -r\modules.dep. * This function builds a list of dependency rules from /lib/modules/`uname -r`\modules.dep.
* It then fills every modules and aliases with their default options, found by parsing * It then fills every modules and aliases with their default options, found by parsing
* modprobe.conf (or modules.conf, or conf.modules). * modprobe.conf (or modules.conf, or conf.modules).
*/ */
static struct dep_t *build_dep ( void ) static struct dep_t *build_dep ( void )
@ -389,7 +389,8 @@ static struct dep_t *build_dep ( void )
filename = bb_xasprintf("/lib/modules/%s/modules.dep", un.release ); filename = bb_xasprintf("/lib/modules/%s/modules.dep", un.release );
fd = open ( filename, O_RDONLY ); fd = open ( filename, O_RDONLY );
if (ENABLE_FEATURE_CLEAN_UP) free(filename); if (ENABLE_FEATURE_CLEAN_UP)
free(filename);
if (fd < 0) { if (fd < 0) {
/* Ok, that didn't work. Fall back to looking in /lib/modules */ /* Ok, that didn't work. Fall back to looking in /lib/modules */
if (( fd = open ( "/lib/modules/modules.dep", O_RDONLY )) < 0 ) { if (( fd = open ( "/lib/modules/modules.dep", O_RDONLY )) < 0 ) {
@ -552,16 +553,16 @@ static struct dep_t *build_dep ( void )
include_conf (&first, &current, buffer, sizeof(buffer), fd); include_conf (&first, &current, buffer, sizeof(buffer), fd);
close(fd); close(fd);
filename = bb_xasprintf("/lib/modules/%s/modules.alias", un.release ); filename = bb_xasprintf("/lib/modules/%s/modules.alias", un.release);
fd = open ( filename, O_RDONLY );
if (( fd = open ( filename, O_RDONLY )) < 0 ) { if (ENABLE_FEATURE_CLEAN_UP)
free(filename);
if (fd < 0) {
/* Ok, that didn't work. Fall back to looking in /lib/modules */ /* Ok, that didn't work. Fall back to looking in /lib/modules */
if (( fd = open ( "/lib/modules/modules.alias", O_RDONLY )) < 0 ) { if (( fd = open ( "/lib/modules/modules.alias", O_RDONLY )) < 0 ) {
return first; return first;
} }
} }
free(filename);
include_conf (&first, &current, buffer, sizeof(buffer), fd); include_conf (&first, &current, buffer, sizeof(buffer), fd);
close(fd); close(fd);