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;
|
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) {
|
||||||
|
|
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 */
|
/* 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);
|
|
||||||
}
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue