From 51292ac1383ec63a7d97a6e2e2ba121c25b3d282 Mon Sep 17 00:00:00 2001 From: Uri Simchoni Date: Fri, 7 Oct 2016 11:05:07 +0300 Subject: [PATCH] s3-sysquotas: correctly restore path when finding mount point When traversing the path backwards to find the mount point, if the root '/' is reached, then the character to be restored is not a '/'. BUG: https://bugzilla.samba.org/show_bug.cgi?id=12273 Signed-off-by: Uri Simchoni Reviewed-by: Jeremy Allison Autobuild-User(master): Jeremy Allison Autobuild-Date(master): Sat Oct 8 05:22:25 CEST 2016 on sn-devel-144 (cherry picked from commit b3d938c9c03e8b726e966ccb979b09bd21e89f32) --- source3/lib/sysquotas.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/source3/lib/sysquotas.c b/source3/lib/sysquotas.c index c2d09da..eef87be 100644 --- a/source3/lib/sysquotas.c +++ b/source3/lib/sysquotas.c @@ -82,6 +82,8 @@ static int sys_path_to_bdev(const char *path, char **mntpath, char **bdev, char } while (true) { + char save_ch; + p = strrchr(stat_mntpath, '/'); if (p == NULL) { DBG_ERR("realpath for %s does not begin with a '/'\n", @@ -93,6 +95,7 @@ static int sys_path_to_bdev(const char *path, char **mntpath, char **bdev, char ++p; } + save_ch = *p; *p = 0; if (sys_stat(stat_mntpath, &S, false) != 0) { DBG_WARNING("cannot stat real path component %s - %s\n", @@ -100,7 +103,7 @@ static int sys_path_to_bdev(const char *path, char **mntpath, char **bdev, char goto out; } if (S.st_ex_dev != devno) { - *p = '/'; + *p = save_ch; break; } -- 2.5.5