Skip to content

Commit 4c07e26

Browse files
committed
Code analysis fixes - fix some warnings and prevent garbage data
1 parent 162d00d commit 4c07e26

File tree

5 files changed

+65
-65
lines changed

5 files changed

+65
-65
lines changed

libretro-common/vfs/vfs_implementation.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,8 @@ libretro_vfs_implementation_file *retro_vfs_file_open_impl(
373373
}
374374
#endif
375375

376-
stream->orig_path = strdup(path);
376+
if (path)
377+
stream->orig_path = strdup(path);
377378

378379
#ifdef HAVE_MMAP
379380
if (stream->hints & RETRO_VFS_FILE_ACCESS_HINT_FREQUENT_ACCESS && mode == RETRO_VFS_FILE_ACCESS_READ)

menu/drivers/xmb.c

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1167,53 +1167,48 @@ static void xmb_render_messagebox_internal(
11671167
string_list_deinitialize(&list);
11681168
}
11691169

1170-
static char *xmb_path_dynamic_wallpaper(xmb_handle_t *xmb)
1170+
static void xmb_path_dynamic_wallpaper(xmb_handle_t *xmb, char *s, size_t len)
11711171
{
11721172
settings_t *settings = config_get_ptr();
11731173
bool menu_dynamic_wallpaper_enable = settings->bools.menu_dynamic_wallpaper_enable;
11741174
unsigned xmb_color_theme = settings->uints.menu_xmb_color_theme;
11751175
const char *path_menu_wallpaper = settings->paths.path_menu_wallpaper;
11761176
const char *dir_dynamic_wallpapers = settings->paths.directory_dynamic_wallpapers;
1177-
char path[PATH_MAX_LENGTH];
11781177
unsigned depth = (unsigned)xmb_list_get_size(xmb, MENU_LIST_PLAIN);
11791178

1180-
path[0] = '\0';
1181-
11821179
/* Do not update wallpaper in "Main Menu" playlists and inside playlist items */
11831180
if ( (xmb->categories_selection_ptr == XMB_SYSTEM_TAB_MAIN && depth > 3)
11841181
|| (xmb->categories_selection_ptr > xmb->system_tab_end && depth > 1))
11851182
{
11861183
if (string_is_empty(xmb->bg_file_path))
1187-
return NULL;
1188-
return strdup(xmb->bg_file_path);
1184+
return;
1185+
strlcpy(s, xmb->bg_file_path, len);
11891186
}
11901187

11911188
/* Dynamic wallpaper takes precedence as reset background,
11921189
* then comes 'menu_wallpaper', and then iconset 'bg.png' */
11931190
if (menu_dynamic_wallpaper_enable)
11941191
{
1195-
size_t _len = fill_pathname_join_special(
1196-
path,
1192+
size_t _len = fill_pathname_join_special(s,
11971193
dir_dynamic_wallpapers,
11981194
xmb->title_name,
1199-
sizeof(path));
1200-
strlcpy(path + _len, ".png", sizeof(path) - _len);
1195+
len);
1196+
strlcpy(s + _len, ".png", len - _len);
12011197
}
12021198

1203-
if (!string_is_empty(path) && path_is_valid(path))
1199+
if (!string_is_empty(s) && path_is_valid(s))
12041200
;/* no-op */
12051201
else if (!string_is_empty(path_menu_wallpaper))
1206-
strlcpy(path, path_menu_wallpaper, sizeof(path));
1202+
strlcpy(s, path_menu_wallpaper, len);
12071203
else if (xmb_color_theme == XMB_THEME_WALLPAPER)
1208-
fill_pathname_application_special(path, sizeof(path),
1204+
fill_pathname_application_special(s, len,
12091205
APPLICATION_SPECIAL_DIRECTORY_ASSETS_XMB_BG);
1210-
1211-
return strdup(path);
12121206
}
12131207

12141208
static void xmb_update_dynamic_wallpaper(xmb_handle_t *xmb, bool reset)
12151209
{
1216-
const char *path = xmb_path_dynamic_wallpaper(xmb);
1210+
char path[PATH_MAX_LENGTH];
1211+
xmb_path_dynamic_wallpaper(xmb, path, sizeof(path));
12171212

12181213
if (!string_is_equal(path, xmb->bg_file_path) || reset)
12191214
{

menu/menu_displaylist.c

Lines changed: 41 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -15407,38 +15407,42 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
1540715407
switch (type)
1540815408
{
1540915409
case DISPLAYLIST_SHADER_PRESET:
15410-
info->type_default = FILE_TYPE_SHADER_PRESET;
15411-
if (BIT32_GET(flags.flags, GFX_CTX_FLAGS_SHADERS_CG))
15412-
_len += strlcpy(new_exts + _len, "cgp", sizeof(new_exts) - _len);
15413-
if (BIT32_GET(flags.flags, GFX_CTX_FLAGS_SHADERS_GLSL))
1541415410
{
15415-
if (new_exts[_len-1] != '\0')
15416-
_len += strlcpy(new_exts + _len, "|", sizeof(new_exts) - _len);
15417-
_len += strlcpy(new_exts + _len, "glslp", sizeof(new_exts) - _len);
15418-
}
15419-
if (BIT32_GET(flags.flags, GFX_CTX_FLAGS_SHADERS_SLANG))
15420-
{
15421-
if (new_exts[_len-1] != '\0')
15422-
_len += strlcpy(new_exts + _len, "|", sizeof(new_exts) - _len);
15423-
strlcpy(new_exts + _len, "slangp", sizeof(new_exts) - _len);
15411+
info->type_default = FILE_TYPE_SHADER_PRESET;
15412+
if (BIT32_GET(flags.flags, GFX_CTX_FLAGS_SHADERS_CG))
15413+
_len += strlcpy(new_exts + _len, "cgp", sizeof(new_exts) - _len);
15414+
if (BIT32_GET(flags.flags, GFX_CTX_FLAGS_SHADERS_GLSL))
15415+
{
15416+
if (_len > 0)
15417+
_len += strlcpy(new_exts + _len, "|", sizeof(new_exts) - _len);
15418+
_len += strlcpy(new_exts + _len, "glslp", sizeof(new_exts) - _len);
15419+
}
15420+
if (BIT32_GET(flags.flags, GFX_CTX_FLAGS_SHADERS_SLANG))
15421+
{
15422+
if (_len > 0)
15423+
_len += strlcpy(new_exts + _len, "|", sizeof(new_exts) - _len);
15424+
strlcpy(new_exts + _len, "slangp", sizeof(new_exts) - _len);
15425+
}
1542415426
}
1542515427
break;
1542615428

1542715429
case DISPLAYLIST_SHADER_PASS:
15428-
info->type_default = FILE_TYPE_SHADER;
15429-
if (BIT32_GET(flags.flags, GFX_CTX_FLAGS_SHADERS_CG))
15430-
_len += strlcpy(new_exts + _len, "cg", sizeof(new_exts) - _len);
15431-
if (BIT32_GET(flags.flags, GFX_CTX_FLAGS_SHADERS_GLSL))
15432-
{
15433-
if (new_exts[_len-1] != '\0')
15434-
_len += strlcpy(new_exts + _len, "|", sizeof(new_exts) - _len);
15435-
_len += strlcpy(new_exts + _len, "glsl", sizeof(new_exts) - _len);
15436-
}
15437-
if (BIT32_GET(flags.flags, GFX_CTX_FLAGS_SHADERS_SLANG))
1543815430
{
15439-
if (new_exts[_len-1] != '\0')
15440-
_len += strlcpy(new_exts + _len, "|", sizeof(new_exts) - _len);
15441-
_len += strlcpy(new_exts + _len, "slang", sizeof(new_exts) - _len);
15431+
info->type_default = FILE_TYPE_SHADER;
15432+
if (BIT32_GET(flags.flags, GFX_CTX_FLAGS_SHADERS_CG))
15433+
_len += strlcpy(new_exts + _len, "cg", sizeof(new_exts) - _len);
15434+
if (BIT32_GET(flags.flags, GFX_CTX_FLAGS_SHADERS_GLSL))
15435+
{
15436+
if (_len > 0)
15437+
_len += strlcpy(new_exts + _len, "|", sizeof(new_exts) - _len);
15438+
_len += strlcpy(new_exts + _len, "glsl", sizeof(new_exts) - _len);
15439+
}
15440+
if (BIT32_GET(flags.flags, GFX_CTX_FLAGS_SHADERS_SLANG))
15441+
{
15442+
if (_len > 0)
15443+
_len += strlcpy(new_exts + _len, "|", sizeof(new_exts) - _len);
15444+
_len += strlcpy(new_exts + _len, "slang", sizeof(new_exts) - _len);
15445+
}
1544215446
}
1544315447
break;
1544415448
default:
@@ -15459,10 +15463,10 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
1545915463
{
1546015464
char new_exts[128];
1546115465
gfx_ctx_flags_t flags;
15462-
size_t _len = 0;
15466+
size_t _len = 0;
1546315467

15464-
flags.flags = 0;
15465-
new_exts[0] = '\0';
15468+
flags.flags = 0;
15469+
new_exts[0] = '\0';
1546615470

1546715471
filebrowser_clear_type();
1546815472
video_context_driver_get_flags(&flags);
@@ -15473,13 +15477,13 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
1547315477
_len += strlcpy(new_exts + _len, "cgp", sizeof(new_exts) - _len);
1547415478
if (BIT32_GET(flags.flags, GFX_CTX_FLAGS_SHADERS_GLSL))
1547515479
{
15476-
if (new_exts[_len-1] != '\0')
15480+
if (_len > 0)
1547715481
_len += strlcpy(new_exts + _len, "|", sizeof(new_exts) - _len);
1547815482
_len += strlcpy(new_exts + _len, "glslp", sizeof(new_exts) - _len);
1547915483
}
1548015484
if (BIT32_GET(flags.flags, GFX_CTX_FLAGS_SHADERS_SLANG))
1548115485
{
15482-
if (new_exts[_len-1] != '\0')
15486+
if (_len > 0)
1548315487
_len += strlcpy(new_exts + _len, "|", sizeof(new_exts) - _len);
1548415488
_len += strlcpy(new_exts + _len, "slangp", sizeof(new_exts) - _len);
1548515489
}
@@ -15497,27 +15501,27 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
1549715501
filebrowser_clear_type();
1549815502
info->type_default = FILE_TYPE_IMAGE;
1549915503
{
15500-
size_t _len = 0;
1550115504
char new_exts[128];
15502-
new_exts[0] = '\0';
15505+
size_t _len = 0;
15506+
new_exts[0] = '\0';
1550315507
#ifdef HAVE_RBMP
1550415508
_len += strlcpy(new_exts + _len, "bmp", sizeof(new_exts) - _len);
1550515509
#endif
1550615510
#ifdef HAVE_RPNG
15507-
if (_len > 0 && (new_exts[_len-1] != '\0'))
15511+
if (_len > 0)
1550815512
_len += strlcpy(new_exts + _len, "|", sizeof(new_exts) - _len);
1550915513
_len += strlcpy(new_exts + _len, "png", sizeof(new_exts) - _len);
1551015514
#endif
1551115515
#ifdef HAVE_RJPEG
15512-
if (_len > 0 && (new_exts[_len-1] != '\0'))
15516+
if (_len > 0)
1551315517
_len += strlcpy(new_exts + _len, "|", sizeof(new_exts) - _len);
1551415518
_len += strlcpy(new_exts + _len, "jpeg", sizeof(new_exts) - _len);
15515-
if (_len > 0 && (new_exts[_len-1] != '\0'))
15519+
if (_len > 0)
1551615520
_len += strlcpy(new_exts + _len, "|", sizeof(new_exts) - _len);
1551715521
_len += strlcpy(new_exts + _len, "jpg", sizeof(new_exts) - _len);
1551815522
#endif
1551915523
#ifdef HAVE_RTGA
15520-
if (_len > 0 && (new_exts[_len-1] != '\0'))
15524+
if (_len > 0)
1552115525
_len += strlcpy(new_exts + _len, "|", sizeof(new_exts) - _len);
1552215526
_len += strlcpy(new_exts + _len, "tga", sizeof(new_exts) - _len);
1552315527
#endif

retroarch.c

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2098,37 +2098,34 @@ struct string_list *dir_list_new_special(const char *input_dir,
20982098
#if defined(HAVE_CG) || defined(HAVE_GLSL) || defined(HAVE_SLANG) || defined(HAVE_HLSL)
20992099
{
21002100
gfx_ctx_flags_t flags;
2101-
size_t _len = 0;
2102-
flags.flags = 0;
2103-
ext_shaders[0] = '\0';
2101+
size_t _len = 0;
2102+
flags.flags = 0;
2103+
ext_shaders[0] = '\0';
21042104

21052105
video_context_driver_get_flags(&flags);
21062106

21072107
if (BIT32_GET(flags.flags, GFX_CTX_FLAGS_SHADERS_CG))
21082108
{
21092109
_len += strlcpy(ext_shaders + _len, "cgp", sizeof(ext_shaders) - _len);
2110-
if (ext_shaders[_len-1] != '\0')
2111-
_len += strlcpy(ext_shaders + _len, "|", sizeof(ext_shaders) - _len);
2110+
_len += strlcpy(ext_shaders + _len, "|", sizeof(ext_shaders) - _len);
21122111
_len += strlcpy(ext_shaders + _len, "cg", sizeof(ext_shaders) - _len);
21132112
}
21142113

21152114
if (BIT32_GET(flags.flags, GFX_CTX_FLAGS_SHADERS_GLSL))
21162115
{
2117-
if (ext_shaders[_len-1] != '\0')
2116+
if (_len > 0)
21182117
_len += strlcpy(ext_shaders + _len, "|", sizeof(ext_shaders) - _len);
21192118
_len += strlcpy(ext_shaders + _len, "glslp", sizeof(ext_shaders) - _len);
2120-
if (ext_shaders[_len-1] != '\0')
2121-
_len += strlcpy(ext_shaders + _len, "|", sizeof(ext_shaders) - _len);
2119+
_len += strlcpy(ext_shaders + _len, "|", sizeof(ext_shaders) - _len);
21222120
_len += strlcpy(ext_shaders + _len, "glsl", sizeof(ext_shaders) - _len);
21232121
}
21242122

21252123
if (BIT32_GET(flags.flags, GFX_CTX_FLAGS_SHADERS_SLANG))
21262124
{
2127-
if (ext_shaders[_len-1] != '\0')
2125+
if (_len > 0)
21282126
_len += strlcpy(ext_shaders + _len, "|", sizeof(ext_shaders) - _len);
21292127
_len += strlcpy(ext_shaders + _len, "slangp", sizeof(ext_shaders) - _len);
2130-
if (ext_shaders[_len-1] != '\0')
2131-
_len += strlcpy(ext_shaders + _len, "|", sizeof(ext_shaders) - _len);
2128+
_len += strlcpy(ext_shaders + _len, "|", sizeof(ext_shaders) - _len);
21322129
strlcpy(ext_shaders + _len, "slang", sizeof(ext_shaders) - _len);
21332130
}
21342131

tasks/task_cloudsync.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,10 @@ static file_list_t *task_cloud_sync_create_manifest(RFILE *file)
153153
return NULL;
154154

155155
if (!(json = rjson_open_rfile(file)))
156+
{
157+
free(list);
156158
return NULL;
159+
}
157160

158161
rjson_parse(json, list,
159162
tcs_object_member_handler,

0 commit comments

Comments
 (0)