diff options
author | Eric Andersen <andersen@codepoet.org> | 2001-05-15 17:42:16 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2001-05-15 17:42:16 +0000 |
commit | c911a4389bbaa5ac85d725c8c05e452dfba8583d (patch) | |
tree | a0f435a6239c002578db8f019eb0fb427f1795b3 /util-linux | |
parent | 15649c11f3568ed6f030953844f201438379e03c (diff) |
Patch from Vladimir:
1) fixed a bug that could crash df, mount, and umount applets if the root
device name was longer then the word "root" (/dev/loop1 vs /dev/root) -
2) severl functions needed static declaration in the umount applet
3) update declaration for function in last_char_is() in libbb
Diffstat (limited to 'util-linux')
-rw-r--r-- | util-linux/mount.c | 6 | ||||
-rw-r--r-- | util-linux/umount.c | 33 |
2 files changed, 21 insertions, 18 deletions
diff --git a/util-linux/mount.c b/util-linux/mount.c index 0295fabc6..4e0e3e428 100644 --- a/util-linux/mount.c +++ b/util-linux/mount.c @@ -319,10 +319,14 @@ void show_mounts() while ((m = getmntent(mountTable)) != 0) { char *blockDevice = m->mnt_fsname; if (strcmp(blockDevice, "/dev/root") == 0) { - find_real_root_device_name( blockDevice); + blockDevice = find_real_root_device_name(blockDevice); } printf("%s on %s type %s (%s)\n", blockDevice, m->mnt_dir, m->mnt_type, m->mnt_opts); +#ifdef BB_FEATURE_CLEAN_UP + if(blockDevice != m->mnt_fsname) + free(blockDevice); +#endif } endmntent(mountTable); } else { diff --git a/util-linux/umount.c b/util-linux/umount.c index 0eade5a36..8565744f2 100644 --- a/util-linux/umount.c +++ b/util-linux/umount.c @@ -74,7 +74,7 @@ extern const char mtab_file[]; /* Defined in utility.c */ * TODO: Perhaps switch to using Glibc's getmntent_r * -Erik */ -void mtab_read(void) +static void mtab_read(void) { struct _mtab_entry_t *entry = NULL; struct mntent *e; @@ -97,7 +97,7 @@ void mtab_read(void) endmntent(fp); } -char *mtab_getinfo(const char *match, const char which) +static char *mtab_getinfo(const char *match, const char which) { struct _mtab_entry_t *cur = mtab_cache; @@ -111,8 +111,7 @@ char *mtab_getinfo(const char *match, const char which) if (strcmp(cur->device, "/dev/root") == 0) { /* Adjusts device to be the real root device, * or leaves device alone if it can't find it */ - find_real_root_device_name( cur->device); - return ( cur->device); + cur->device = find_real_root_device_name(cur->device); } #endif return cur->device; @@ -123,18 +122,7 @@ char *mtab_getinfo(const char *match, const char which) return NULL; } -char *mtab_first(void **iter) -{ - struct _mtab_entry_t *mtab_iter; - - if (!iter) - return NULL; - mtab_iter = mtab_cache; - *iter = (void *) mtab_iter; - return mtab_next(iter); -} - -char *mtab_next(void **iter) +static char *mtab_next(void **iter) { char *mp; @@ -145,10 +133,21 @@ char *mtab_next(void **iter) return mp; } +static char *mtab_first(void **iter) +{ + struct _mtab_entry_t *mtab_iter; + + if (!iter) + return NULL; + mtab_iter = mtab_cache; + *iter = (void *) mtab_iter; + return mtab_next(iter); +} + /* Don't bother to clean up, since exit() does that * automagically, so we can save a few bytes */ #ifdef BB_FEATURE_CLEAN_UP -void mtab_free(void) +static void mtab_free(void) { struct _mtab_entry_t *this, *next; |