[mpd] Quoted argument unescaping fixed

This commit is contained in:
Wolfgang Scherer 2017-11-08 23:03:32 +01:00
parent 84fc4622d5
commit 5a960a3450

View File

@ -313,32 +313,36 @@ static char*
mpd_pars_quoted(char **input) mpd_pars_quoted(char **input)
{ {
char *arg; char *arg;
char *src;
char *dst;
char ch;
// skip double quote character // skip double quote character
(*input)++; (*input)++;
arg = *input; src = dst = arg = *input;
while ((ch = *src) != '"')
while (**input != '"')
{ {
// A backslash character escapes the following character // A backslash character escapes the following character and should be removed
if (**input == '\\') if (ch == '\\')
{ {
(*input)++; ch = *(++src);
} }
*dst++ = ch;
if (**input == 0) if (ch == 0)
{ {
// Error handling for missing double quote at end of parameter // Error handling for missing double quote at end of parameter
DPRINTF(E_LOG, L_MPD, "Error missing closing double quote in argument\n"); DPRINTF(E_LOG, L_MPD, "Error missing closing double quote in argument\n");
*input = src;
return NULL; return NULL;
} }
(*input)++; ++src;
} }
**input = '\0'; *dst = '\0';
(*input)++; *input = ++src;
return arg; return arg;
} }