readlink: realpath requires PATH_MAX, bb_common_bufsiz1 can be too small
authorDenis Vlasenko <vda.linux@googlemail.com>
Sat, 10 Nov 2007 01:31:19 +0000 (01:31 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Sat, 10 Nov 2007 01:31:19 +0000 (01:31 -0000)
umount: don't actually need char[2 * PATH_MAX] for realpath

coreutils/readlink.c
util-linux/umount.c

index b6e389a21fa0418b2ea84c1610d3dc1525a9e2f1..1ab94595a9164c069f19e91f79bd597c17f694ac 100644 (file)
@@ -8,7 +8,6 @@
  */
 
 #include <getopt.h>
-
 #include "libbb.h"
 
 int readlink_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
@@ -16,6 +15,7 @@ int readlink_main(int argc, char **argv)
 {
        char *buf;
        char *fname;
+       char pathbuf[PATH_MAX];
 
        USE_FEATURE_READLINK_FOLLOW(
                unsigned opt;
@@ -34,7 +34,7 @@ int readlink_main(int argc, char **argv)
        logmode = LOGMODE_NONE;
 
        if (opt) {
-               buf = realpath(fname, bb_common_bufsiz1);
+               buf = realpath(fname, pathbuf);
        } else {
                buf = xmalloc_readlink_or_warn(fname);
        }
index 17d88b38822a09fcfe504f6ca9223417f996f8fc..7c1b81347fd15855a3346400676f0e4b3b514f17 100644 (file)
@@ -25,7 +25,7 @@ int umount_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
 int umount_main(int argc, char **argv)
 {
        int doForce;
-       char path[2*PATH_MAX];
+       char path[PATH_MAX + 2];
        struct mntent me;
        FILE *fp;
        char *fstype = 0;
@@ -89,7 +89,7 @@ int umount_main(int argc, char **argv)
 
                // Do we already know what to umount this time through the loop?
                if (m)
-                       safe_strncpy(path, m->dir, PATH_MAX);
+                       safe_strncpy(path, m->dir, sizeof(path));
                // For umount -a, end of mtab means time to exit.
                else if (opt & OPT_ALL)
                        break;