summaryrefslogtreecommitdiffstats
path: root/libglusterfsclient
diff options
context:
space:
mode:
authorRaghavendra G <raghavendra@gluster.com>2009-09-01 00:34:02 +0000
committerAnand V. Avati <avati@dev.gluster.com>2009-09-08 03:22:57 -0700
commit6f1a9007f4876d46bd2d67e67312c24771d82bf5 (patch)
treea684ba46e04ba30d4e2303e2a36a96a4a9f40e34 /libglusterfsclient
parent8d696f317ef06e045de380d4408b814a3214ced7 (diff)
libglusterfsclient: handle paths terminating with '/' properly in libgf_trim_to_prev_dir.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com> BUG: 236 (Stack overflow due to infinite recursion in glusterfs_glh_realpath) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=236
Diffstat (limited to 'libglusterfsclient')
-rwxr-xr-xlibglusterfsclient/src/libglusterfsclient.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/libglusterfsclient/src/libglusterfsclient.c b/libglusterfsclient/src/libglusterfsclient.c
index 02328388d..e2c2f10b8 100755
--- a/libglusterfsclient/src/libglusterfsclient.c
+++ b/libglusterfsclient/src/libglusterfsclient.c
@@ -709,6 +709,7 @@ char *
libgf_trim_to_prev_dir (char * path)
{
char *idx = NULL;
+ int len = 0;
if (!path)
return NULL;
@@ -716,9 +717,14 @@ libgf_trim_to_prev_dir (char * path)
/* Check if we're already at root, if yes
* then there is no prev dir.
*/
- if (strlen (path) == 1)
+ len = strlen (path);
+ if (len == 1)
return path;
+ if (path[len - 1] == '/') {
+ path[len - 1] = '\0';
+ }
+
idx = libgf_rrindex (path, '/', 1);
/* Move to the char after the / */
++idx;