path: removed sanitizePathDup()

We don't need to sanitize the path, because the mapper already checks
for malformed paths.
This commit is contained in:
Max Kellermann 2008-10-31 16:50:51 +01:00
parent f291876772
commit 9fdac529b4
3 changed files with 2 additions and 47 deletions

View File

@ -830,10 +830,8 @@ handle_update(struct client *client, mpd_unused int argc, char *argv[])
unsigned ret; unsigned ret;
assert(argc <= 2); assert(argc <= 2);
if (argc == 2 && !(path = sanitizePathDup(argv[1]))) { if (argc == 2)
command_error(client, ACK_ERROR_ARG, "invalid path"); path = g_strdup(argv[1]);
return COMMAND_RETURN_ERROR;
}
ret = directory_update_init(path); ret = directory_update_init(path);
if (ret > 0) { if (ret > 0) {

View File

@ -168,43 +168,3 @@ char *pfx_dir(char *dst,
/* this is weird, but directory.c can use it more safely/efficiently */ /* this is weird, but directory.c can use it more safely/efficiently */
return (dst + pfx_len + 1); 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);
}

View File

@ -55,7 +55,4 @@ char *pfx_dir(char *dst,
const char *path, const size_t path_len, const char *path, const size_t path_len,
const char *pfx, const size_t pfx_len); const char *pfx, const size_t pfx_len);
/* strips extra "///" and leading "/" and trailing "/" */
char *sanitizePathDup(const char *path);
#endif #endif