Browse Source
[qt] fix various crashes due to invalid/corrupted/outdated settings (#4070)
[qt] fix various crashes due to invalid/corrupted/outdated settings (#4070)
lots of "out of index" errors :) Signed-off-by: lizzie <lizzie@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4070 Reviewed-by: crueter <crueter@eden-emu.dev> Reviewed-by: MaranBr <maranbr@eden-emu.dev>pull/3842/head
committed by
crueter
No known key found for this signature in database
GPG Key ID: 425ACD2D4830EBC6
13 changed files with 149 additions and 71 deletions
-
8src/common/settings.h
-
4src/common/settings_enums.h
-
23src/common/settings_setting.h
-
50src/frontend_common/config.cpp
-
15src/input_common/drivers/udp_client.cpp
-
7src/qt_common/config/uisettings.h
-
7src/video_core/renderer_vulkan/renderer_vulkan.cpp
-
7src/yuzu/configuration/configure_motion_touch.cpp
-
8src/yuzu/game/game_list.cpp
-
14src/yuzu/main_window.cpp
-
2tools/README.md
-
63tools/fuzzsettings.cpp
-
12tools/fuzzsettings.sh
@ -0,0 +1,63 @@ |
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
|||
// SPDX-License-Identifier: GPL-3.0-or-later
|
|||
|
|||
#include <cstdio>
|
|||
#include <cstdlib>
|
|||
#include <cctype>
|
|||
#include <cstring>
|
|||
#include <ctime>
|
|||
#include <string>
|
|||
#include <string_view>
|
|||
|
|||
int main(int argc, char *argv[]) { |
|||
std::srand(unsigned(std::time(nullptr))); |
|||
|
|||
FILE *fp = std::fopen(argv[1], "rt"); |
|||
if (fp) { |
|||
char line[BUFSIZ]; |
|||
while (std::fgets(line, sizeof(line), fp)) { |
|||
if (line[0] == '[') { |
|||
std::printf("%s", line); |
|||
} else if (std::isspace(line[0])) { |
|||
std::printf("%s", line); |
|||
} else { |
|||
char *p = std::strchr(line, '='); |
|||
if (std::strstr(line, "\\default") == nullptr) { |
|||
// not default
|
|||
*p = '\0'; |
|||
std::string new_line{line}; |
|||
std::string value{p + 1}; |
|||
if (value == "true" || value == "false") { |
|||
new_line += std::string{} + "=TreufLAlse857874FJJakshjryiu475" + '\n'; |
|||
} else if (std::isdigit(value[0])) { |
|||
if (new_line == "size" |
|||
|| std::strstr(new_line.c_str(), "entries\\size") != nullptr |
|||
|| std::strstr(new_line.c_str(), "\\size")) { |
|||
new_line += "=-1\n"; |
|||
} else { |
|||
new_line += '=' + std::to_string(int(std::rand())) + '\n'; |
|||
} |
|||
} else { |
|||
std::string_view const cset{"03832///1/1/.1/1./1./1./1.1/.1194573290uwmgjouidyhiomHMNIODASJK,POF MSHDVLJPOIuksdtpsunmghns"}; |
|||
std::string rst{"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}; |
|||
for (size_t i = 0; i < rst.size(); ++i) |
|||
rst[i] = cset[std::rand() % cset.size()]; |
|||
|
|||
//new_line += "=\"" + rst + "\"";
|
|||
new_line += "=" + value; |
|||
} |
|||
std::printf("%s", new_line.c_str()); |
|||
} else { |
|||
// yes default
|
|||
*p = '\0'; |
|||
std::string new_line{line}; |
|||
std::string value{p + 1}; |
|||
new_line += "=false\n"; |
|||
std::printf("%s", new_line.c_str()); |
|||
} |
|||
} |
|||
} |
|||
std::fclose(fp); |
|||
} |
|||
return 0; |
|||
} |
|||
@ -0,0 +1,12 @@ |
|||
#!/bin/sh -ex |
|||
|
|||
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project |
|||
# SPDX-License-Identifier: GPL-3.0-or-later |
|||
|
|||
ROOTDIR=$(CDPATH='' cd -- "$(dirname -- "$0")/" && pwd) |
|||
|
|||
touch "$2" |
|||
|
|||
c++ "$ROOTDIR/fuzzsettings.cpp" -o fuzzsettings |
|||
./fuzzsettings "$1" >"$2" |
|||
rm fuzzsettings |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue