summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUri Simchoni <uri@samba.org>2016-10-07 11:05:07 +0300
committerJeremy Allison <jra@samba.org>2016-10-08 05:22:25 +0200
commitb3d938c9c03e8b726e966ccb979b09bd21e89f32 (patch)
treeec61495e255cedce8c601355588a90827412a122
parent06281e8f1b912540a8cc2a79497b074dbe559d53 (diff)
downloadsamba-b3d938c9c03e8b726e966ccb979b09bd21e89f32.tar.gz
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 <uri@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org> Autobuild-User(master): Jeremy Allison <jra@samba.org> Autobuild-Date(master): Sat Oct 8 05:22:25 CEST 2016 on sn-devel-144
-rw-r--r--source3/lib/sysquotas.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/source3/lib/sysquotas.c b/source3/lib/sysquotas.c
index c2d09dabf1b..eef87beafe0 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;
}