File xfsprogs-libfrog-fs_table_lookup_mount-should-realpath-the-ar.patch of Package xfsprogs.17980

From be66eb8ef581ae50ec9fe6ff8a95a58fe62c2b45 Mon Sep 17 00:00:00 2001
From: "Darrick J. Wong" <darrick.wong@oracle.com>
Date: Mon, 26 Mar 2018 21:27:28 -0500
Subject: [PATCH] libfrog: fs_table_lookup_mount should realpath the argument
Git-commit: be66eb8ef581ae50ec9fe6ff8a95a58fe62c2b45
Patch-mainline: v4.16.0-rc1
References: bsc#1181299

Call realpath on the dir argument so that we're comparing canonical
paths when looking for the mountpoint.  This fixes the problem where
'/home/' doesn't match '/home' even though they refer to the same thing.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
Acked-by: Anthony Iliopoulos <ailiop@suse.com>

---
 libfrog/paths.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/libfrog/paths.c b/libfrog/paths.c
index 62b4eda6a0cc..19ee1ea9e4d9 100644
--- a/libfrog/paths.c
+++ b/libfrog/paths.c
@@ -102,16 +102,19 @@ fs_table_lookup_mount(
 	uint		i;
 	dev_t		dev = 0;
 	char		rpath[PATH_MAX];
+	char		dpath[PATH_MAX];
 
 	if (fs_device_number(dir, &dev))
 		return NULL;
+	if (!realpath(dir, dpath))
+		return NULL;
 
 	for (i = 0; i < fs_count; i++) {
 		if (fs_table[i].fs_flags != FS_MOUNT_POINT)
 			continue;
 		if (!realpath(fs_table[i].fs_dir, rpath))
 			continue;
-		if (strcmp(rpath, dir) == 0)
+		if (strcmp(rpath, dpath) == 0)
 			return &fs_table[i];
 	}
 	return NULL;
-- 
2.30.0

openSUSE Build Service is sponsored by