summaryrefslogtreecommitdiff
path: root/source3/lib/util.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/lib/util.c')
-rw-r--r--source3/lib/util.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/source3/lib/util.c b/source3/lib/util.c
index 97ff4e24a0..2b71b3cb3d 100644
--- a/source3/lib/util.c
+++ b/source3/lib/util.c
@@ -449,13 +449,14 @@ smb_ucs2_t *unix_clean_path(const smb_ucs2_t *s)
/* reduce any /../ */
t = ns;
- while ((r = strstr_wa(t, "/.."))) {
+ while (*t && (r = strstr_wa(t, "/.."))) {
t = &(r[3]);
if (*t == UCS2_CHAR('/') || *t == 0) {
*r = 0;
p = strrchr_w(ns, UCS2_CHAR('/'));
if (!p) p = ns;
- memmove(p, t, (strlen_w(t) + 1) * sizeof(smb_ucs2_t));
+ if (*t == 0) *p = 0;
+ else memmove(p, t, (strlen_w(t) + 1) * sizeof(smb_ucs2_t));
t = p;
}
}