aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--umount.c7
-rw-r--r--util-linux/umount.c7
2 files changed, 12 insertions, 2 deletions
diff --git a/umount.c b/umount.c
index 3e23b9705..0eade5a36 100644
--- a/umount.c
+++ b/umount.c
@@ -22,6 +22,7 @@
*
*/
+#include <limits.h>
#include <stdio.h>
#include <mntent.h>
#include <errno.h>
@@ -236,6 +237,8 @@ static int umount_all(void)
extern int umount_main(int argc, char **argv)
{
+ char path[PATH_MAX];
+
if (argc < 2) {
show_usage();
}
@@ -282,7 +285,9 @@ extern int umount_main(int argc, char **argv)
else
return EXIT_FAILURE;
}
- if (do_umount(*argv) == TRUE)
+ if (realpath(*argv, path) == NULL)
+ perror_msg_and_die("%s", path);
+ if (do_umount(path) == TRUE)
return EXIT_SUCCESS;
perror_msg_and_die("%s", *argv);
}
diff --git a/util-linux/umount.c b/util-linux/umount.c
index 3e23b9705..0eade5a36 100644
--- a/util-linux/umount.c
+++ b/util-linux/umount.c
@@ -22,6 +22,7 @@
*
*/
+#include <limits.h>
#include <stdio.h>
#include <mntent.h>
#include <errno.h>
@@ -236,6 +237,8 @@ static int umount_all(void)
extern int umount_main(int argc, char **argv)
{
+ char path[PATH_MAX];
+
if (argc < 2) {
show_usage();
}
@@ -282,7 +285,9 @@ extern int umount_main(int argc, char **argv)
else
return EXIT_FAILURE;
}
- if (do_umount(*argv) == TRUE)
+ if (realpath(*argv, path) == NULL)
+ perror_msg_and_die("%s", path);
+ if (do_umount(path) == TRUE)
return EXIT_SUCCESS;
perror_msg_and_die("%s", *argv);
}