From 0f4cbb3375c2160cc68a9206213cec778184fda8 Mon Sep 17 00:00:00 2001 From: chme Date: Mon, 31 Dec 2018 08:26:40 +0100 Subject: [PATCH] [http/jsonapi] Use strtok_r instead of strtok --- src/http.c | 14 ++++++++------ src/httpd_jsonapi.c | 12 +++++++----- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/http.c b/src/http.c index 06315041..0cc85a23 100644 --- a/src/http.c +++ b/src/http.c @@ -597,6 +597,7 @@ metadata_packet_get(struct http_icy_metadata *metadata, AVFormatContext *fmtctx) { uint8_t *buffer; char *icy_token; + char *save_pr; char *ptr; char *end; @@ -604,13 +605,13 @@ metadata_packet_get(struct http_icy_metadata *metadata, AVFormatContext *fmtctx) if (!buffer) return -1; - icy_token = strtok((char *)buffer, ";"); + icy_token = strtok_r((char *)buffer, ";", &save_pr); while (icy_token != NULL) { ptr = strchr(icy_token, '='); if (!ptr || (ptr[1] == '\0')) { - icy_token = strtok(NULL, ";"); + icy_token = strtok_r(NULL, ";", &save_pr); continue; } @@ -647,7 +648,7 @@ metadata_packet_get(struct http_icy_metadata *metadata, AVFormatContext *fmtctx) if (end) *end = '\''; - icy_token = strtok(NULL, ";"); + icy_token = strtok_r(NULL, ";", &save_pr); } av_free(buffer); @@ -663,6 +664,7 @@ metadata_header_get(struct http_icy_metadata *metadata, AVFormatContext *fmtctx) uint8_t *buffer; uint8_t *utf; char *icy_token; + char *save_pr; char *ptr; av_opt_get(fmtctx, "icy_metadata_headers", AV_OPT_SEARCH_CHILDREN, &buffer); @@ -677,13 +679,13 @@ metadata_header_get(struct http_icy_metadata *metadata, AVFormatContext *fmtctx) if (!utf) return -1; - icy_token = strtok((char *)utf, "\r\n"); + icy_token = strtok_r((char *)utf, "\r\n", &save_pr); while (icy_token != NULL) { ptr = strchr(icy_token, ':'); if (!ptr || (ptr[1] == '\0')) { - icy_token = strtok(NULL, "\r\n"); + icy_token = strtok_r(NULL, "\r\n", &save_pr); continue; } @@ -698,7 +700,7 @@ metadata_header_get(struct http_icy_metadata *metadata, AVFormatContext *fmtctx) else if ((strncmp(icy_token, "icy-genre", strlen("icy-genre")) == 0) && !metadata->genre) metadata->genre = strdup(ptr); - icy_token = strtok(NULL, "\r\n"); + icy_token = strtok_r(NULL, "\r\n", &save_pr); } free(utf); diff --git a/src/httpd_jsonapi.c b/src/httpd_jsonapi.c index f70ed1b5..0acf3751 100644 --- a/src/httpd_jsonapi.c +++ b/src/httpd_jsonapi.c @@ -1756,21 +1756,23 @@ queue_tracks_add_byuris(const char *param, int pos, int *total_count) { char *uris; char *uri; + char *ptr; const char *id; int count = 0; int ret = 0; *total_count = 0; - if (strlen(param) == 0) + CHECK_NULL(L_WEB, uris = strdup(param)); + uri = strtok_r(uris, ",", &ptr); + + if (!uri) { DPRINTF(E_LOG, L_WEB, "Empty query parameter 'uris'\n"); + free(uris); return -1; } - uris = strdup(param); - uri = strtok(uris, ","); - do { count = 0; @@ -1811,7 +1813,7 @@ queue_tracks_add_byuris(const char *param, int pos, int *total_count) *total_count += count; } - while ((uri = strtok(NULL, ","))); + while ((uri = strtok_r(NULL, ",", &ptr))); free(uris);