From 9fdac529b4eae2e8093db8308fcf95d270b2bfa7 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Fri, 31 Oct 2008 16:50:51 +0100 Subject: path: removed sanitizePathDup() We don't need to sanitize the path, because the mapper already checks for malformed paths. --- src/command.c | 6 ++---- src/path.c | 40 ---------------------------------------- src/path.h | 3 --- 3 files changed, 2 insertions(+), 47 deletions(-) diff --git a/src/command.c b/src/command.c index 452568238..dc71f1d1a 100644 --- a/src/command.c +++ b/src/command.c @@ -830,10 +830,8 @@ handle_update(struct client *client, mpd_unused int argc, char *argv[]) unsigned ret; assert(argc <= 2); - if (argc == 2 && !(path = sanitizePathDup(argv[1]))) { - command_error(client, ACK_ERROR_ARG, "invalid path"); - return COMMAND_RETURN_ERROR; - } + if (argc == 2) + path = g_strdup(argv[1]); ret = directory_update_init(path); if (ret > 0) { diff --git a/src/path.c b/src/path.c index 62a2362b5..f241fce8c 100644 --- a/src/path.c +++ b/src/path.c @@ -168,43 +168,3 @@ char *pfx_dir(char *dst, /* this is weird, but directory.c can use it more safely/efficiently */ return (dst + pfx_len + 1); } - -char *sanitizePathDup(const char *path) -{ - int len = strlen(path) + 1; - char *ret = xmalloc(len); - char *cp = ret; - - memset(ret, 0, len); - - len = 0; - - /* eliminate more than one '/' in a row, like "///" */ - while (*path) { - while (*path == '/') - path++; - if (*path == '.') { - /* we don't want to have hidden directories, or '.' or - ".." in our path */ - free(ret); - return NULL; - } - while (*path && *path != '/') { - *(cp++) = *(path++); - len++; - } - if (*path == '/') { - *(cp++) = *(path++); - len++; - } - } - - if (len && ret[len - 1] == '/') { - len--; - ret[len] = '\0'; - } - - DEBUG("sanitized: %s\n", ret); - - return xrealloc(ret, len + 1); -} diff --git a/src/path.h b/src/path.h index e341169b0..c1003d846 100644 --- a/src/path.h +++ b/src/path.h @@ -55,7 +55,4 @@ char *pfx_dir(char *dst, const char *path, const size_t path_len, const char *pfx, const size_t pfx_len); -/* strips extra "///" and leading "/" and trailing "/" */ -char *sanitizePathDup(const char *path); - #endif -- cgit v1.2.3