path: removed sanitizePathDup()
We don't need to sanitize the path, because the mapper already checks for malformed paths.
This commit is contained in:
parent
f291876772
commit
9fdac529b4
|
@ -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) {
|
||||
|
|
40
src/path.c
40
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);
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue