build: add -Wformat-security

On some distros format-security is turned on to detect possible issues
with non-string literals as format strings

Let's explicitly turn it on and fix the ImgUi text formatting to avoid
compile issues on those platforms

Signed-off-by: William Casarin <jb55@jb55.com>
This commit is contained in:
William Casarin 2025-07-01 13:56:46 -07:00
parent 5d34e8de1b
commit 2b4dd7f436
4 changed files with 13 additions and 10 deletions

View file

@ -502,6 +502,7 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|AppleClang")
if (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
target_compile_options(${PROJECT_NAME} PRIVATE
-Wall -Wextra -Wno-error
-Wformat-security
-Wno-return-type
-Wno-unused-parameter
-Wno-unused-function
@ -529,6 +530,7 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|AppleClang")
elseif (CMAKE_SYSTEM_NAME STREQUAL "NintendoSwitch")
target_compile_options(${PROJECT_NAME} PRIVATE
-Wall -Wextra -Wno-error
-Wformat-security
-Wno-return-type
-Wno-unused-parameter
-Wno-unused-function
@ -579,6 +581,7 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|AppleClang")
target_compile_options(${PROJECT_NAME} PRIVATE
-Wall -Wextra -Wno-error
-Wformat-security
-Wno-unused-parameter
-Wno-unused-function
-Wno-unused-variable

View file

@ -395,7 +395,7 @@ void PresetsCustomWidget(WidgetInfo& info) {
ImGui::TableNextRow();
ImGui::TableNextColumn();
ImGui::AlignTextToFramePadding();
ImGui::Text(name.c_str());
ImGui::Text("%s", name.c_str());
for (int i = PRESET_SECTION_SETTINGS; i < PRESET_SECTION_MAX; i++) {
ImGui::TableNextColumn();
DrawSectionCheck(name, !info.presetValues["blocks"].contains(blockInfo[i].names[1]), &info.apply[i],

View file

@ -647,7 +647,7 @@ void PlandomizerOverlayText(std::pair<Rando::Item, uint32_t> drawObject) {
imageMax.y - ImGui::CalcTextSize(std::to_string(drawObject.second).c_str()).y - 2);
ImGui::SetCursorScreenPos(textPos);
ImGui::Text(std::to_string(drawObject.second).c_str());
ImGui::Text("%s", std::to_string(drawObject.second).c_str());
// Overlay item info
if (drawObject.first.GetRandomizerGet() >= RG_PROGRESSIVE_HOOKSHOT &&
@ -665,7 +665,7 @@ void PlandomizerOverlayText(std::pair<Rando::Item, uint32_t> drawObject) {
ImGui::SetCursorScreenPos(textPos);
std::string overlayText = "+";
overlayText += extractNumberInParentheses(drawObject.first.GetName().english.c_str());
ImGui::Text(overlayText.c_str());
ImGui::Text("%s", overlayText.c_str());
}
if (drawObject.first.GetRandomizerGet() >= RG_FOREST_TEMPLE_BOSS_KEY &&
drawObject.first.GetRandomizerGet() <= RG_GANONS_CASTLE_BOSS_KEY) {
@ -678,7 +678,7 @@ void PlandomizerOverlayText(std::pair<Rando::Item, uint32_t> drawObject) {
break;
}
}
ImGui::Text(shortName.c_str());
ImGui::Text("%s", shortName.c_str());
}
if (drawObject.first.GetRandomizerGet() >= RG_OCARINA_A_BUTTON &&
drawObject.first.GetRandomizerGet() <= RG_OCARINA_C_RIGHT_BUTTON) {
@ -691,7 +691,7 @@ void PlandomizerOverlayText(std::pair<Rando::Item, uint32_t> drawObject) {
break;
}
}
ImGui::Text(shortName.c_str());
ImGui::Text("%s", shortName.c_str());
}
}
@ -1066,7 +1066,7 @@ void PlandomizerDrawHintsWindow() {
ImGui::SeparatorText(hintData.hintName.c_str());
ImGui::Text("Current Hint: ");
ImGui::SameLine();
ImGui::TextWrapped(hintData.hintText.c_str());
ImGui::TextWrapped("%s", hintData.hintText.c_str());
if (spoilerHintData.size() > 0) {
hintInputText = plandoHintData[index].hintText.c_str();
@ -1115,9 +1115,9 @@ void PlandomizerDrawLocationsWindow(RandomizerCheckArea rcArea) {
auto randoArea = Rando::StaticData::GetLocation(checkID)->GetArea();
if (rcArea == RCAREA_INVALID || rcArea == randoArea) {
ImGui::TableNextColumn();
ImGui::TextWrapped(spoilerData.checkName.c_str());
ImGui::TextWrapped("%s", spoilerData.checkName.c_str());
ImGui::TableNextColumn();
ImGui::TextWrapped(spoilerData.checkRewardItem.GetName().english.c_str());
ImGui::TextWrapped("%s", spoilerData.checkRewardItem.GetName().english.c_str());
ImGui::TableNextColumn();
PlandomizerDrawItemSlots(index);
if (plandoLogData[index].checkRewardItem.GetRandomizerGet() == RG_ICE_TRAP) {

View file

@ -1085,7 +1085,7 @@ void CheckTrackerWindow::DrawElement() {
totalChecksSS << totalChecksAvailable << " Available / ";
}
totalChecksSS << totalChecksGotten << " Checked / " << totalChecks << " Total";
ImGui::Text(totalChecksSS.str().c_str());
ImGui::Text("%s", totalChecksSS.str().c_str());
UIWidgets::PaddedSeparator();
@ -1194,7 +1194,7 @@ void CheckTrackerWindow::DrawElement() {
}
}
ImGui::Text(areaTotalsSS.str().c_str());
ImGui::Text("%s", areaTotalsSS.str().c_str());
UIWidgets::Tooltip(areaTotalsTooltipSS.str().c_str());
} else {
ImGui::Text("???");