mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-01-12 15:36:17 +01:00
tests/desktop-app-info: fix stack-use-after-scope
Fix the tests, by allocating the structure. ==121338==ERROR: AddressSanitizer: stack-use-after-scope on address 0x7ffe44018610 at pc 0x00000040ff71 bp 0x7ffe440178f0 sp 0x7ffe440178e8 READ of size 8 at 0x7ffe44018610 thread T0 #0 0x40ff70 in test_launch_uris_with_terminal ../gio/tests/desktop-app-info.c:1393 #1 0x7efd97b831e8 in test_case_run ../glib/gtestutils.c:2947 #2 0x7efd97b831e8 in g_test_run_suite_internal ../glib/gtestutils.c:3037 #3 0x7efd97b82d23 in g_test_run_suite_internal ../glib/gtestutils.c:3056 #4 0x7efd97b82d23 in g_test_run_suite_internal ../glib/gtestutils.c:3056 #5 0x7efd97b82d23 in g_test_run_suite_internal ../glib/gtestutils.c:3056 #6 0x7efd97b84189 in g_test_run_suite ../glib/gtestutils.c:3136 #7 0x7efd97b842c5 in g_test_run ../glib/gtestutils.c:2248 #8 0x4055bc in main ../gio/tests/desktop-app-info.c:1901 #9 0x7efd9564a50f in __libc_start_call_main (/lib64/libc.so.6+0x2750f) #10 0x7efd9564a5c8 in __libc_start_main_alias_1 (/lib64/libc.so.6+0x275c8) #11 0x4059f4 in _start (/home/elmarco/src/gnome/glib/build/gio/tests/desktop-app-info+0x4059f4) Address 0x7ffe44018610 is located in stack of thread T0 at offset 128 in frame #0 0x404d1f in main ../gio/tests/desktop-app-info.c:1823 This frame has 6 object(s): [48, 52) 'argc' (line 1821) [64, 72) 'path' (line 1870) [96, 104) 'argv' (line 1822) [128, 144) '<unknown>' <== Memory access at offset 128 is inside this variable [160, 176) '<unknown>' [192, 288) 'supported_terminals' (line 1825) Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
This commit is contained in:
parent
20c4fcb2a7
commit
f50a4f8501
@ -1382,6 +1382,18 @@ typedef struct {
|
||||
TerminalLaunchType type;
|
||||
} TerminalLaunchData;
|
||||
|
||||
static TerminalLaunchData *
|
||||
terminal_launch_data_new (const char *exec, TerminalLaunchType type)
|
||||
{
|
||||
TerminalLaunchData *d = NULL;
|
||||
|
||||
d = g_new0 (TerminalLaunchData, 1);
|
||||
d->exec = exec;
|
||||
d->type = type;
|
||||
|
||||
return d;
|
||||
}
|
||||
|
||||
static void
|
||||
test_launch_uris_with_terminal (gconstpointer data)
|
||||
{
|
||||
@ -1849,27 +1861,26 @@ main (int argc,
|
||||
|
||||
path = g_strdup_printf ("/desktop-app-info/launch-uris-with-terminal/with-path/%s",
|
||||
supported_terminals[i]);
|
||||
g_test_add_data_func (path, &(TerminalLaunchData) {
|
||||
.exec = supported_terminals[i],
|
||||
.type = TERMINAL_LAUNCH_TYPE_COMMAND_LINE_WITH_PATH_OVERRIDE,
|
||||
}, test_launch_uris_with_terminal);
|
||||
|
||||
g_free (path);
|
||||
g_test_add_data_func_full (path,
|
||||
terminal_launch_data_new (supported_terminals[i],
|
||||
TERMINAL_LAUNCH_TYPE_COMMAND_LINE_WITH_PATH_OVERRIDE),
|
||||
test_launch_uris_with_terminal, g_free);
|
||||
g_clear_pointer (&path, g_free);
|
||||
|
||||
path = g_strdup_printf ("/desktop-app-info/launch-uris-with-terminal/with-context/%s",
|
||||
supported_terminals[i]);
|
||||
g_test_add_data_func (path, &(TerminalLaunchData) {
|
||||
.exec = supported_terminals[i],
|
||||
.type = TERMINAL_LAUNCH_TYPE_COMMAND_LINE_WITH_CONTEXT,
|
||||
}, test_launch_uris_with_terminal);
|
||||
g_test_add_data_func_full (path,
|
||||
terminal_launch_data_new (supported_terminals[i],
|
||||
TERMINAL_LAUNCH_TYPE_COMMAND_LINE_WITH_CONTEXT),
|
||||
test_launch_uris_with_terminal, g_free);
|
||||
g_clear_pointer (&path, g_free);
|
||||
|
||||
path = g_strdup_printf ("/desktop-app-info/launch-uris-with-terminal/with-desktop-path/%s",
|
||||
supported_terminals[i]);
|
||||
g_test_add_data_func (path, &(TerminalLaunchData) {
|
||||
.exec = supported_terminals[i],
|
||||
.type = TERMINAL_LAUNCH_TYPE_KEY_FILE_WITH_PATH,
|
||||
}, test_launch_uris_with_terminal);
|
||||
g_test_add_data_func_full (path,
|
||||
terminal_launch_data_new (supported_terminals[i],
|
||||
TERMINAL_LAUNCH_TYPE_KEY_FILE_WITH_PATH),
|
||||
test_launch_uris_with_terminal, g_free);
|
||||
g_clear_pointer (&path, g_free);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user