diff --git a/src/pc/configfile.c b/src/pc/configfile.c index cf2e7ac0c..d02e5947d 100644 --- a/src/pc/configfile.c +++ b/src/pc/configfile.c @@ -34,6 +34,7 @@ struct ConfigOption { float* floatValue; char* stringValue; }; + int maxStringLength; }; /* @@ -177,7 +178,7 @@ static const struct ConfigOption options[] = { {.name = "discordrpc_enable", .type = CONFIG_TYPE_BOOL, .boolValue = &configDiscordRPC}, #endif // coop-specific - {.name = "coop_join_ip", .type = CONFIG_TYPE_STRING, .stringValue = (char*)&configJoinIp}, + {.name = "coop_join_ip", .type = CONFIG_TYPE_STRING, .stringValue = (char*)&configJoinIp, .maxStringLength = MAX_CONFIG_STRING}, {.name = "coop_join_port", .type = CONFIG_TYPE_UINT , .uintValue = &configJoinPort}, {.name = "coop_host_port", .type = CONFIG_TYPE_UINT , .uintValue = &configHostPort}, {.name = "coop_host_save_slot", .type = CONFIG_TYPE_UINT , .uintValue = &configHostSaveSlot}, @@ -185,7 +186,7 @@ static const struct ConfigOption options[] = { {.name = "coop_player_knockback_strength", .type = CONFIG_TYPE_UINT , .uintValue = &configPlayerKnockbackStrength}, {.name = "coop_stay_in_level_after_star", .type = CONFIG_TYPE_UINT , .boolValue = &configStayInLevelAfterStar}, {.name = "coop_network_system", .type = CONFIG_TYPE_UINT , .uintValue = &configNetworkSystem}, - {.name = "coop_player_name", .type = CONFIG_TYPE_STRING, .stringValue = (char*)&configPlayerName}, + {.name = "coop_player_name", .type = CONFIG_TYPE_STRING, .stringValue = (char*)&configPlayerName, .maxStringLength = MAX_PLAYER_STRING}, {.name = "coop_player_model", .type = CONFIG_TYPE_UINT , .uintValue = &configPlayerModel}, {.name = "coop_player_palette", .type = CONFIG_TYPE_UINT , .uintValue = &configPlayerPalette}, {.name = "coop_60fps", .type = CONFIG_TYPE_UINT , .uintValue = &config60Fps}, @@ -344,8 +345,8 @@ void configfile_load(const char *filename) { sscanf(tokens[1], "%f", option->floatValue); break; case CONFIG_TYPE_STRING: - memset(option->stringValue, '\0', MAX_CONFIG_STRING); - strncpy(option->stringValue, tokens[1], MAX_CONFIG_STRING); + memset(option->stringValue, '\0', option->maxStringLength); + snprintf(option->stringValue, option->maxStringLength, "%s", tokens[1]); break; default: assert(0); // bad type