summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorGregory P. Smith <greg@krypto.org>2022-11-03 21:41:20 (GMT)
committerGitHub <noreply@github.com>2022-11-03 21:41:20 (GMT)
commitbee107028922adc55421611b4bf7da14b8a64010 (patch)
treebd0106d52ff050c365dfa559fec9ee2100088d28 /Modules
parent0ee59a9ca3b3576d903d92f5e1a0b6c955a2e3ac (diff)
downloadcpython-bee107028922adc55421611b4bf7da14b8a64010.zip
cpython-bee107028922adc55421611b4bf7da14b8a64010.tar.gz
cpython-bee107028922adc55421611b4bf7da14b8a64010.tar.bz2
gh-73691: Increase size limits in _xxtestfuzz (#99070)
Now that our int<->str conversions are size limited and we have the _pylong module handling larger integers, we don't need to limit everything just to avoid wasting time in the quadratic time DoS-like case while fuzzing. We can tweak these further after seeing how this goes.
Diffstat (limited to 'Modules')
-rw-r--r--Modules/_xxtestfuzz/fuzzer.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/Modules/_xxtestfuzz/fuzzer.c b/Modules/_xxtestfuzz/fuzzer.c
index 366e81a..fb0c191 100644
--- a/Modules/_xxtestfuzz/fuzzer.c
+++ b/Modules/_xxtestfuzz/fuzzer.c
@@ -142,7 +142,7 @@ static int fuzz_struct_unpack(const char* data, size_t size) {
}
-#define MAX_JSON_TEST_SIZE 0x10000
+#define MAX_JSON_TEST_SIZE 0x100000
PyObject* json_loads_method = NULL;
/* Called by LLVMFuzzerTestOneInput for initialization */
@@ -335,7 +335,7 @@ static int fuzz_sre_match(const char* data, size_t size) {
return 0;
}
-#define MAX_CSV_TEST_SIZE 0x10000
+#define MAX_CSV_TEST_SIZE 0x100000
PyObject* csv_module = NULL;
PyObject* csv_error = NULL;
/* Called by LLVMFuzzerTestOneInput for initialization */
@@ -393,7 +393,7 @@ static int fuzz_csv_reader(const char* data, size_t size) {
return 0;
}
-#define MAX_AST_LITERAL_EVAL_TEST_SIZE 0x10000
+#define MAX_AST_LITERAL_EVAL_TEST_SIZE 0x100000
PyObject* ast_literal_eval_method = NULL;
/* Called by LLVMFuzzerTestOneInput for initialization */
static int init_ast_literal_eval(void) {
@@ -459,6 +459,9 @@ int LLVMFuzzerInitialize(int *argc, char ***argv) {
PyConfig config;
PyConfig_InitPythonConfig(&config);
config.install_signal_handlers = 0;
+ /* Raise the limit above the default allows exercising larger things
+ * now that we fall back to the _pylong module for large values. */
+ config.int_max_str_digits = 8086;
PyStatus status;
status = PyConfig_SetBytesString(&config, &config.program_name, *argv[0]);
if (PyStatus_Exception(status)) {