diff options
author | Max Kellermann <max@duempel.org> | 2008-12-16 21:23:29 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2008-12-16 21:23:29 +0100 |
commit | 5aa1afe69344aa6b6be5ac55c79fce14e1f79d53 (patch) | |
tree | 927312b873f7ec61d1d239e601767baeabbbd6f4 /src | |
parent | c50115f9a2c0b5f8fc89906629386b74139212cf (diff) | |
download | mpd-5aa1afe69344aa6b6be5ac55c79fce14e1f79d53.tar.gz mpd-5aa1afe69344aa6b6be5ac55c79fce14e1f79d53.tar.xz mpd-5aa1afe69344aa6b6be5ac55c79fce14e1f79d53.zip |
command: reject unsupported URI schemes
When a client-specified URI has a scheme which is not supported, do
not try to open it as a local file, but provide a meaningful error
message.
Diffstat (limited to '')
-rw-r--r-- | src/command.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/command.c b/src/command.c index bc5273637..9793830c1 100644 --- a/src/command.c +++ b/src/command.c @@ -450,6 +450,12 @@ handle_add(struct client *client, G_GNUC_UNUSED int argc, char *argv[]) if (isRemoteUrl(path)) return addToPlaylist(path, NULL); + if (uri_has_scheme(path)) { + command_error(client, ACK_ERROR_NO_EXIST, + "unsupported URI scheme"); + return COMMAND_RETURN_ERROR; + } + result = addAllIn(path); if (result == (enum playlist_result)-1) { command_error(client, ACK_ERROR_NO_EXIST, @@ -1223,7 +1229,11 @@ handle_playlistadd(struct client *client, G_GNUC_UNUSED int argc, char *argv[]) if (isRemoteUrl(path)) result = spl_append_uri(path, playlist); - else + else if (uri_has_scheme(path)) { + command_error(client, ACK_ERROR_NO_EXIST, + "unsupported URI scheme"); + return COMMAND_RETURN_ERROR; + } else result = addAllInToStoredPlaylist(path, playlist); if (result == (enum playlist_result)-1) { |