-
-
Notifications
You must be signed in to change notification settings - Fork 8.9k
Open
Description
Operating System Info
Other
Other OS
Linux
OBS Studio Version
32.0.2
OBS Studio Version (Other)
No response
OBS Studio Log URL
N/A
OBS Studio Crash Log URL
No response
Expected Behavior
The app should not crash.
Current Behavior
The app crashes.
Steps to Reproduce
- Open the settings window when there are no outputs in the system.
Anything else we should know?
I debugged it and found the problem.
Backtrace:
#0 __strcmp_evex () at ../sysdeps/x86_64/multiarch/strcmp-evex.S:320
#1 0x00007ffff67b2fbc in find_output (id=0x0) at /usr/src/debug/obs-studio/obs-studio-32.0.2/libobs/obs-output.c:126
#2 obs_get_output_supported_video_codecs (id=0x0)
at /usr/src/debug/obs-studio/obs-studio-32.0.2/libobs/obs-output.c:3296
#3 0x00005555557e9136 in OBSBasicSettings::ResetEncoders (this=0x7fffffffbee0, streamOnly=false)
at /usr/src/debug/obs-studio/obs-studio-32.0.2/frontend/settings/OBSBasicSettings_Stream.cpp:1604
#4 0x000055555583a615 in OBSBasicSettings::LoadOutputSettings (this=0x7fffffffbee0)
at /usr/src/debug/obs-studio/obs-studio-32.0.2/frontend/settings/OBSBasicSettings.cpp:2165
#5 OBSBasicSettings::LoadSettings (this=0x7fffffffbee0, changedOnly=false)
at /usr/src/debug/obs-studio/obs-studio-32.0.2/frontend/settings/OBSBasicSettings.cpp:2918
#6 0x0000555555827f57 in OBSBasicSettings::OBSBasicSettings (this=<optimized out>, parent=<optimized out>,
this=<optimized out>, parent=<optimized out>)
at /usr/src/debug/obs-studio/obs-studio-32.0.2/frontend/settings/OBSBasicSettings.cpp:828
#7 0x00005555558ed0d4 in OBSBasic::on_action_Settings_triggered (this=0x555555fdda80)
at /usr/src/debug/obs-studio/obs-studio-32.0.2/frontend/widgets/OBSBasic_MainControls.cpp:206It crashes because the find_output function does not check its input id parameter for null.
obs-studio/libobs/obs-output.c
Lines 122 to 130 in c025f21
| const struct obs_output_info *find_output(const char *id) | |
| { | |
| size_t i; | |
| for (i = 0; i < obs->output_types.num; i++) | |
| if (strcmp(obs->output_types.array[i].id, id) == 0) | |
| return obs->output_types.array + i; | |
| return NULL; | |
| } |
The following patch fixes the problem:
--- a/libobs/obs-output.c
+++ b/libobs/obs-output.c
@@ -121,6 +121,9 @@
const struct obs_output_info *find_output(const char *id)
{
+ if (id == NULL)
+ return NULL;
+
size_t i;
for (i = 0; i < obs->output_types.num; i++)
if (strcmp(obs->output_types.array[i].id, id) == 0)
Metadata
Metadata
Assignees
Labels
No labels