Skip to content

Commit 752de1e

Browse files
committed
Merge remote-tracking branch 'libretro/master' into warmenhoven/dev/macOS-Core-Audio-Mic-Fix
2 parents 282308d + 5e6a298 commit 752de1e

File tree

5 files changed

+44
-46
lines changed

5 files changed

+44
-46
lines changed

gfx/drivers/vulkan.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1768,8 +1768,9 @@ static void vulkan_font_render_message(vk_t *vk,
17681768

17691769
for (;;)
17701770
{
1771-
const char *delim = strchr(msg, '\n');
1772-
size_t msg_len = delim ? (size_t)(delim - msg) : strlen(msg);
1771+
size_t _msg_len = strlen(msg);
1772+
const char *delim = memchr(msg, '\n', _msg_len + 1);
1773+
size_t msg_len = delim ? (size_t)(delim - msg) : _msg_len;
17731774

17741775
/* Draw the line */
17751776
vulkan_font_render_line(vk, font, glyph_q, msg, msg_len,

gfx/drivers_shader/glslang_util.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,14 @@
2828
#include "glslang_util.h"
2929
#include "../../verbosity.h"
3030

31-
static char *slang_get_include_file(const char *line)
31+
static char *slang_get_include_file(const char *line, size_t len)
3232
{
3333
char *end = NULL;
34-
char *start = (char*)strchr(line, '\"');
34+
char *start = (char*)memchr(line, '\"', len + 1);
3535
if (!start)
3636
return NULL;
3737
start++;
38-
if (!(end = (char*)strchr(start, '\"')))
38+
if (!(end = (char*)memchr(start, '\"', len - (start - line))))
3939
return NULL;
4040
*end = '\0';
4141
return start;
@@ -226,7 +226,7 @@ bool glslang_read_shader_file(const char *path,
226226
if ( !strncmp("#include ", line, STRLEN_CONST("#include ")) || include_optional )
227227
{
228228
char include_path[PATH_MAX_LENGTH];
229-
char *include_file = slang_get_include_file(line);
229+
char *include_file = slang_get_include_file(line, strlen(line));
230230

231231
if (string_is_empty(include_file))
232232
{

libretro-common/formats/json/rjson.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1011,7 +1011,7 @@ double rjson_get_double(rjson_t *json)
10111011
snprintf(test, sizeof(test), "%.1f", 0.0f);
10121012
json->decimal_sep = test[1];
10131013
}
1014-
if (json->decimal_sep != '.' && (p = strchr(str, '.')) != NULL)
1014+
if (json->decimal_sep != '.' && (p = memchr(str, '.', strlen(str) + 1)) != NULL)
10151015
{
10161016
double res;
10171017
*p = json->decimal_sep;

libretro-common/net/net_http.c

Lines changed: 35 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -328,15 +328,16 @@ void net_http_urlencode_full(char *s, const char *source, size_t len)
328328
size_t tmp_len;
329329
char url_domain[256];
330330
char url_path[PATH_MAX_LENGTH];
331-
char *tmp = NULL;
332-
int count = 0;
331+
int count = 0;
332+
char *tmp = url_path;
333333

334334
strlcpy(url_path, source, sizeof(url_path));
335-
tmp = url_path;
336335

337336
while (count < 3 && tmp[0] != '\0')
338337
{
339338
tmp = strchr(tmp, '/');
339+
if (!tmp)
340+
break;
340341
count++;
341342
tmp++;
342343
}
@@ -1155,11 +1156,11 @@ int net_http_fd(struct http_t *state)
11551156
return state->conn->fd;
11561157
}
11571158

1158-
static ssize_t net_http_receive_header(struct http_t *state, ssize_t newlen)
1159+
static ssize_t net_http_receive_header(struct http_t *state, ssize_t len)
11591160
{
11601161
struct response *response = (struct response*)&state->response;
11611162

1162-
response->pos += newlen;
1163+
response->pos += len;
11631164

11641165
while (response->part < P_BODY)
11651166
{
@@ -1227,7 +1228,7 @@ static ssize_t net_http_receive_header(struct http_t *state, ssize_t newlen)
12271228

12281229
if (response->part >= P_BODY)
12291230
{
1230-
newlen = response->pos;
1231+
len = response->pos;
12311232
response->pos = 0;
12321233
if (response->bodytype == T_LEN)
12331234
{
@@ -1243,7 +1244,7 @@ static ssize_t net_http_receive_header(struct http_t *state, ssize_t newlen)
12431244
response->data = (char*)realloc(response->data, response->buflen);
12441245
}
12451246
}
1246-
return newlen;
1247+
return len;
12471248
}
12481249

12491250
static bool net_http_receive_body(struct http_t *state, ssize_t newlen)
@@ -1411,12 +1412,9 @@ static bool net_http_redirect(struct http_t *state, const char *location)
14111412
bool net_http_update(struct http_t *state, size_t* progress, size_t* total)
14121413
{
14131414
struct response *response;
1414-
ssize_t newlen = 0;
1415-
1416-
if (!state)
1417-
return true;
1415+
ssize_t _len = 0;
14181416

1419-
if (state->err)
1417+
if (!state || state->err)
14201418
return true;
14211419

14221420
if (!state->conn)
@@ -1444,26 +1442,38 @@ bool net_http_update(struct http_t *state, size_t* progress, size_t* total)
14441442

14451443
#ifdef HAVE_SSL
14461444
if (state->ssl && state->conn->ssl_ctx)
1447-
newlen = ssl_socket_receive_all_nonblocking(state->conn->ssl_ctx, &state->err,
1445+
_len = ssl_socket_receive_all_nonblocking(state->conn->ssl_ctx, &state->err,
14481446
(uint8_t*)response->data + response->pos,
14491447
response->buflen - response->pos);
14501448
else
14511449
#endif
1452-
newlen = socket_receive_all_nonblocking(state->conn->fd, &state->err,
1450+
_len = socket_receive_all_nonblocking(state->conn->fd, &state->err,
14531451
(uint8_t*)response->data + response->pos,
14541452
response->buflen - response->pos);
14551453

14561454
if (response->part < P_BODY)
14571455
{
1458-
if (newlen < 0 || state->err)
1459-
goto error;
1460-
newlen = net_http_receive_header(state, newlen);
1456+
if (_len < 0 || state->err)
1457+
{
1458+
net_http_conn_pool_remove(state->conn);
1459+
state->err = true;
1460+
response->part = P_DONE;
1461+
response->status = -1;
1462+
return true;
1463+
}
1464+
_len = net_http_receive_header(state, _len);
14611465
}
14621466

14631467
if (response->part >= P_BODY && response->part < P_DONE)
14641468
{
1465-
if (!net_http_receive_body(state, newlen))
1466-
goto error;
1469+
if (!net_http_receive_body(state, _len))
1470+
{
1471+
net_http_conn_pool_remove(state->conn);
1472+
state->err = true;
1473+
response->part = P_DONE;
1474+
response->status = -1;
1475+
return true;
1476+
}
14671477
}
14681478

14691479
if (progress)
@@ -1480,9 +1490,9 @@ bool net_http_update(struct http_t *state, size_t* progress, size_t* total)
14801490
if (response->part != P_DONE)
14811491
return false;
14821492

1483-
for (newlen = 0; (size_t)newlen < response->headers->size; newlen++)
1493+
for (_len = 0; (size_t)_len < response->headers->size; _len++)
14841494
{
1485-
if (string_is_equal_case_insensitive(response->headers->elems[newlen].data, "connection: close"))
1495+
if (string_is_equal_case_insensitive(response->headers->elems[_len].data, "connection: close"))
14861496
{
14871497
net_http_conn_pool_remove(state->conn);
14881498
state->conn = NULL;
@@ -1496,23 +1506,14 @@ bool net_http_update(struct http_t *state, size_t* progress, size_t* total)
14961506

14971507
if (response->status >= 300 && response->status < 400)
14981508
{
1499-
for (newlen = 0; (size_t)newlen < response->headers->size; newlen++)
1509+
for (_len = 0; (size_t)_len < response->headers->size; _len++)
15001510
{
1501-
if (string_starts_with_case_insensitive(response->headers->elems[newlen].data, "Location: "))
1502-
{
1503-
return net_http_redirect(state, response->headers->elems[newlen].data + STRLEN_CONST("Location: "));
1504-
}
1511+
if (string_starts_with_case_insensitive(response->headers->elems[_len].data, "Location: "))
1512+
return net_http_redirect(state, response->headers->elems[_len].data + STRLEN_CONST("Location: "));
15051513
}
15061514
}
15071515

15081516
return true;
1509-
1510-
error:
1511-
net_http_conn_pool_remove(state->conn);
1512-
state->err = true;
1513-
response->part = P_DONE;
1514-
response->status = -1;
1515-
return true;
15161517
}
15171518

15181519
/**
@@ -1542,12 +1543,8 @@ int net_http_status(struct http_t *state)
15421543
**/
15431544
struct string_list *net_http_headers(struct http_t *state)
15441545
{
1545-
if (!state)
1546+
if (!state || !state->err)
15461547
return NULL;
1547-
1548-
if (state->err)
1549-
return NULL;
1550-
15511548
return state->response.headers;
15521549
}
15531550

menu/menu_displaylist.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@ static int filebrowser_parse(
317317
default:
318318
/* if a core has / in its list of supported extensions, the core
319319
supports loading of directories on the host file system */
320-
if (exts && strchr(exts, '/'))
320+
if (exts && memchr(exts, '/', strlen(exts) + 1))
321321
menu_entries_prepend(info_list,
322322
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_USE_THIS_DIRECTORY),
323323
msg_hash_to_str(MENU_ENUM_LABEL_USE_THIS_DIRECTORY),

0 commit comments

Comments
 (0)