Fix issues with config segfaults

This commit is contained in:
Paul Dino Jones 2025-03-21 19:44:55 -04:00
parent 3063d0a668
commit 8e577c0f87
3 changed files with 21 additions and 2 deletions

View File

@ -44,6 +44,11 @@ int strtoeffecttype(const char* effect, DeviceSettings* ds)
ds->is_valid = true; ds->is_valid = true;
ds->effect_type = EFFECT_GEARSHIFT; ds->effect_type = EFFECT_GEARSHIFT;
} }
if (strcicmp(effect, "Suspension") == 0)
{
ds->is_valid = true;
ds->effect_type = EFFECT_SUSPENSION;
}
if (strcicmp(effect, "ABS") == 0) if (strcicmp(effect, "ABS") == 0)
{ {
ds->is_valid = true; ds->is_valid = true;
@ -243,11 +248,13 @@ int getNumberOfConfigs(const char* config_file_str)
int getconfigtouse2(const char* config_file_str, char* car, int sim) int getconfigtouse2(const char* config_file_str, char* car, int sim)
{ {
slogt("inside first pass");
config_t cfg; config_t cfg;
config_init(&cfg); config_init(&cfg);
if (!config_read_file(&cfg, config_file_str)) if (!config_read_file(&cfg, config_file_str))
{ {
fprintf(stderr, "%s:%d - %s\n", config_error_file(&cfg), config_error_line(&cfg), config_error_text(&cfg)); fprintf(stderr, "%s:%d - %s\n", config_error_file(&cfg), config_error_line(&cfg), config_error_text(&cfg));
config_destroy(&cfg);
return -1; return -1;
} }
@ -262,6 +269,7 @@ int getconfigtouse2(const char* config_file_str, char* car, int sim)
int j = 0; int j = 0;
if ( configs == 1 ) if ( configs == 1 )
{ {
config_destroy(&cfg);
return -1; return -1;
} }
int confignum = -1; int confignum = -1;
@ -297,6 +305,8 @@ int getconfigtouse2(const char* config_file_str, char* car, int sim)
break; break;
} }
} }
config_destroy(&cfg);
return confignum; return confignum;
} }
@ -307,6 +317,7 @@ int getconfigtouse1(const char* config_file_str, char* car, int sim)
if (!config_read_file(&cfg, config_file_str)) if (!config_read_file(&cfg, config_file_str))
{ {
fprintf(stderr, "%s:%d - %s\n", config_error_file(&cfg), config_error_line(&cfg), config_error_text(&cfg)); fprintf(stderr, "%s:%d - %s\n", config_error_file(&cfg), config_error_line(&cfg), config_error_text(&cfg));
config_destroy(&cfg);
return -1; return -1;
} }
config_setting_t* config = NULL; config_setting_t* config = NULL;
@ -319,6 +330,7 @@ int getconfigtouse1(const char* config_file_str, char* car, int sim)
int j = 0; int j = 0;
if ( configs == 1 ) if ( configs == 1 )
{ {
config_destroy(&cfg);
return -1; return -1;
} }
int confignum = -1; int confignum = -1;
@ -365,6 +377,8 @@ int getconfigtouse1(const char* config_file_str, char* car, int sim)
break; break;
} }
} }
config_destroy(&cfg);
return confignum; return confignum;
} }
@ -375,6 +389,7 @@ int getconfigtouse(const char* config_file_str, char* car, int sim)
if (!config_read_file(&cfg, config_file_str)) if (!config_read_file(&cfg, config_file_str))
{ {
fprintf(stderr, "%s:%d - %s\n", config_error_file(&cfg), config_error_line(&cfg), config_error_text(&cfg)); fprintf(stderr, "%s:%d - %s\n", config_error_file(&cfg), config_error_line(&cfg), config_error_text(&cfg));
config_destroy(&cfg);
return -1; return -1;
} }
@ -388,6 +403,7 @@ int getconfigtouse(const char* config_file_str, char* car, int sim)
int j = 0; int j = 0;
if ( configs == 1 ) if ( configs == 1 )
{ {
config_destroy(&cfg);
return 0; return 0;
} }
int confignum = 0; int confignum = 0;
@ -662,7 +678,7 @@ int devsetup(const char* device_type, const char* device_subtype, const char* co
const char* effect; const char* effect;
config_setting_lookup_string(device_settings, "effect", &effect); config_setting_lookup_string(device_settings, "effect", &effect);
strtoeffecttype(effect, ds); strtoeffecttype(effect, ds);
if (ds->effect_type == EFFECT_TYRESLIP || ds->effect_type == EFFECT_TYRELOCK || ds->effect_type == EFFECT_ABSBRAKES) if (ds->effect_type == EFFECT_TYRESLIP || ds->effect_type == EFFECT_TYRELOCK || ds->effect_type == EFFECT_ABSBRAKES || ds->effect_type == EFFECT_SUSPENSION )
{ {
gettyre(device_settings, ds); gettyre(device_settings, ds);
ds->threshold = 0; ds->threshold = 0;

View File

@ -63,7 +63,8 @@ typedef enum
EFFECT_GEARSHIFT = 1, EFFECT_GEARSHIFT = 1,
EFFECT_ABSBRAKES = 2, EFFECT_ABSBRAKES = 2,
EFFECT_TYRESLIP = 3, EFFECT_TYRESLIP = 3,
EFFECT_TYRELOCK = 4 EFFECT_TYRELOCK = 4,
EFFECT_SUSPENSION = 5
} }
VibrationEffectType; VibrationEffectType;

View File

@ -158,12 +158,14 @@ int main(int argc, char** argv)
if (!config_read_file(&cfg, ms->config_str)) if (!config_read_file(&cfg, ms->config_str))
{ {
fprintf(stderr, "%s:%d - %s\n", config_error_file(&cfg), config_error_line(&cfg), config_error_text(&cfg)); fprintf(stderr, "%s:%d - %s\n", config_error_file(&cfg), config_error_line(&cfg), config_error_text(&cfg));
config_destroy(&cfg);
goto cleanup_final; goto cleanup_final;
} }
else else
{ {
slogi("Openend monocoque configuration file"); slogi("Openend monocoque configuration file");
} }
config_destroy(&cfg);