From c00f99f3f6ffd34f83b074da7ed05ff06d4a95c3 Mon Sep 17 00:00:00 2001 From: smitsohu Date: Fri, 8 Jan 2021 21:21:25 +0100 Subject: simplify clean_pathname function --- src/firejail/util.c | 31 +++++++++++-------------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/src/firejail/util.c b/src/firejail/util.c index a3927cc88..6cac535db 100644 --- a/src/firejail/util.c +++ b/src/firejail/util.c @@ -565,27 +565,18 @@ char *clean_pathname(const char *path) { if (!rv) errExit("malloc"); - if (len > 0) { - size_t i = 0, j = 0, cnt = 0; - for (; i < len; i++) { - if (path[i] == '/') - cnt++; - else - cnt = 0; - - if (cnt < 2) { - rv[j] = path[i]; - j++; - } - } - rv[j] = '\0'; - - // remove a trailing slash - if (j > 1 && rv[j - 1] == '/') - rv[j - 1] = '\0'; + size_t i = 0; + size_t j = 0; + while (path[i]) { + while (path[i] == '/' && path[i+1] == '/') + i++; + rv[j++] = path[i++]; } - else - *rv = '\0'; + rv[j] = '\0'; + + // remove a trailing slash + if (j > 1 && rv[j - 1] == '/') + rv[j - 1] = '\0'; return rv; } -- cgit v1.2.3-70-g09d2