input/curl, ...: use strncmp() instead of memcmp() to avoid crash
This commit is contained in:
parent
06116382ee
commit
31d77ec580
@ -433,8 +433,8 @@ CurlInputStream::Open(const char *url, Mutex &mutex, Cond &cond)
|
|||||||
static InputStream *
|
static InputStream *
|
||||||
input_curl_open(const char *url, Mutex &mutex, Cond &cond)
|
input_curl_open(const char *url, Mutex &mutex, Cond &cond)
|
||||||
{
|
{
|
||||||
if (memcmp(url, "http://", 7) != 0 &&
|
if (strncmp(url, "http://", 7) != 0 &&
|
||||||
memcmp(url, "https://", 8) != 0)
|
strncmp(url, "https://", 8) != 0)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
return CurlInputStream::Open(url, mutex, cond);
|
return CurlInputStream::Open(url, mutex, cond);
|
||||||
|
@ -274,31 +274,31 @@ try {
|
|||||||
static SongEnumerator *
|
static SongEnumerator *
|
||||||
soundcloud_open_uri(const char *uri, Mutex &mutex, Cond &cond)
|
soundcloud_open_uri(const char *uri, Mutex &mutex, Cond &cond)
|
||||||
{
|
{
|
||||||
assert(memcmp(uri, "soundcloud://", 13) == 0);
|
assert(strncmp(uri, "soundcloud://", 13) == 0);
|
||||||
uri += 13;
|
uri += 13;
|
||||||
|
|
||||||
char *u = nullptr;
|
char *u = nullptr;
|
||||||
if (memcmp(uri, "track/", 6) == 0) {
|
if (strncmp(uri, "track/", 6) == 0) {
|
||||||
const char *rest = uri + 6;
|
const char *rest = uri + 6;
|
||||||
u = xstrcatdup("https://api.soundcloud.com/tracks/",
|
u = xstrcatdup("https://api.soundcloud.com/tracks/",
|
||||||
rest, ".json?client_id=",
|
rest, ".json?client_id=",
|
||||||
soundcloud_config.apikey.c_str());
|
soundcloud_config.apikey.c_str());
|
||||||
} else if (memcmp(uri, "playlist/", 9) == 0) {
|
} else if (strncmp(uri, "playlist/", 9) == 0) {
|
||||||
const char *rest = uri + 9;
|
const char *rest = uri + 9;
|
||||||
u = xstrcatdup("https://api.soundcloud.com/playlists/",
|
u = xstrcatdup("https://api.soundcloud.com/playlists/",
|
||||||
rest, ".json?client_id=",
|
rest, ".json?client_id=",
|
||||||
soundcloud_config.apikey.c_str());
|
soundcloud_config.apikey.c_str());
|
||||||
} else if (memcmp(uri, "user/", 5) == 0) {
|
} else if (strncmp(uri, "user/", 5) == 0) {
|
||||||
const char *rest = uri + 5;
|
const char *rest = uri + 5;
|
||||||
u = xstrcatdup("https://api.soundcloud.com/users/",
|
u = xstrcatdup("https://api.soundcloud.com/users/",
|
||||||
rest, "/tracks.json?client_id=",
|
rest, "/tracks.json?client_id=",
|
||||||
soundcloud_config.apikey.c_str());
|
soundcloud_config.apikey.c_str());
|
||||||
} else if (memcmp(uri, "search/", 7) == 0) {
|
} else if (strncmp(uri, "search/", 7) == 0) {
|
||||||
const char *rest = uri + 7;
|
const char *rest = uri + 7;
|
||||||
u = xstrcatdup("https://api.soundcloud.com/tracks.json?q=",
|
u = xstrcatdup("https://api.soundcloud.com/tracks.json?q=",
|
||||||
rest, "&client_id=",
|
rest, "&client_id=",
|
||||||
soundcloud_config.apikey.c_str());
|
soundcloud_config.apikey.c_str());
|
||||||
} else if (memcmp(uri, "url/", 4) == 0) {
|
} else if (strncmp(uri, "url/", 4) == 0) {
|
||||||
const char *rest = uri + 4;
|
const char *rest = uri + 4;
|
||||||
/* Translate to soundcloud resolver call. libcurl will automatically
|
/* Translate to soundcloud resolver call. libcurl will automatically
|
||||||
follow the redirect to the right resource. */
|
follow the redirect to the right resource. */
|
||||||
|
@ -389,7 +389,7 @@ NfsStorage::OpenDirectory(const char *uri_utf8)
|
|||||||
static Storage *
|
static Storage *
|
||||||
CreateNfsStorageURI(EventLoop &event_loop, const char *base)
|
CreateNfsStorageURI(EventLoop &event_loop, const char *base)
|
||||||
{
|
{
|
||||||
if (memcmp(base, "nfs://", 6) != 0)
|
if (strncmp(base, "nfs://", 6) != 0)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
const char *p = base + 6;
|
const char *p = base + 6;
|
||||||
|
@ -182,7 +182,7 @@ SmbclientDirectoryReader::GetInfo(gcc_unused bool follow)
|
|||||||
static Storage *
|
static Storage *
|
||||||
CreateSmbclientStorageURI(gcc_unused EventLoop &event_loop, const char *base)
|
CreateSmbclientStorageURI(gcc_unused EventLoop &event_loop, const char *base)
|
||||||
{
|
{
|
||||||
if (memcmp(base, "smb://", 6) != 0)
|
if (strncmp(base, "smb://", 6) != 0)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
SmbclientInit();
|
SmbclientInit();
|
||||||
|
@ -34,7 +34,7 @@ Log(const Domain &domain, gcc_unused LogLevel level, const char *msg)
|
|||||||
bool
|
bool
|
||||||
uri_supported_scheme(const char *uri)
|
uri_supported_scheme(const char *uri)
|
||||||
{
|
{
|
||||||
return memcmp(uri, "http://", 7) == 0;
|
return strncmp(uri, "http://", 7) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static constexpr auto music_directory = PATH_LITERAL("/music");
|
static constexpr auto music_directory = PATH_LITERAL("/music");
|
||||||
|
Loading…
Reference in New Issue
Block a user