From 167eaed7836b456b7bedf38be4124a8fa27ccb69 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Fri, 9 Feb 2007 17:15:39 +0100 Subject: swapon: does not correctly deal with symlinks From: Marco d'Itri Signed-off-by: Karel Zak --- mount/swapon.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'mount/swapon.c') diff --git a/mount/swapon.c b/mount/swapon.c index 524547a91..ef8dcee90 100644 --- a/mount/swapon.c +++ b/mount/swapon.c @@ -17,6 +17,12 @@ #include "nls.h" #include "mount_blkid.h" #include "mount_by_label.h" +#include "realpath.h" + +#include /* for PATH_MAX */ +#ifndef PATH_MAX +#define PATH_MAX 8192 +#endif #define streq(s, t) (strcmp ((s), (t)) == 0) @@ -136,9 +142,17 @@ read_proc_swaps(void) { static int is_in_proc_swaps(const char *fname) { int i; + char canonical[PATH_MAX + 2]; + + if (!myrealpath(fname, canonical, PATH_MAX + 1)) { + fprintf(stderr, _("%s: cannot canonicalize %s: %s\n"), + progname, fname, strerror(errno)); + strncpy(canonical, fname, PATH_MAX + 1); + *(canonical + (PATH_MAX + 1)) = '\0'; + } for (i = 0; i < numSwaps; i++) - if (swapFiles[i] && !strcmp(fname, swapFiles[i])) + if (swapFiles[i] && !strcmp(canonical, swapFiles[i])) return 1; return 0; } -- cgit v1.2.3-55-g7522