Timeout error found in cJSON_Compare
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 48/100
Línea de trabajo
Empieza compilando y ejecutando el POC minimizado contra cJSON_Parse, cJSON_Duplicate y cJSON_Compare; después, sigue el punto en el que la comparación deja de avanzar en el objeto anidado. El issue no indica ningún archivo fuente ni prueba de regresión; se considera terminado cuando el POC finaliza sin agotar el tiempo de espera y se conserva el comportamiento correcto de comparación.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Dear developers,
I found a timeout error in the cJSON_Compare API when fuzzing the cJSON library.
The following is the minimized POC code:
#include <fuzzer/FuzzedDataProvider.h>
#include <cstdint>
#include <cstdlib>
#include <cstring>
#include <string>
#include <vector>
#include "cjson/cJSON.h"
int main() {
bool case_sensitive_operations = true;
bool recurse_duplicate = true;
uint8_t operation_selector = 5;
// Consume variable-size data for JSON strings and object keys
std::string initial_json = "{\t\"%q\":{\t\"ky\"\001:{\"e\"\t:{\"ey\"\001:{\"\377\377\":{\"e\":{\"\037\"\001:{\"e\":{\"k\"\001:{\"e\"\t:{\t\"\"\001:{\"\377\377\"\001:{\"y\"\001:{\"seye\"\t:{\t\"ke\"\001:{\"\377k\"\001:{\"ke8\"\001:{\t\"%v\"\t:{\t\"key\"\001:{\"\377\377\377\037\"\001:{\"e\"\t:{\t\"k\"\001:{\"e\"\t:{\t\"k\"\001:{\"\377\377\377\"\001:{\"y\"\t:{\t\"ey\"\001:{\"\377\377\377\037\"\001:{\"e\"\t:{\"k\"\001:{\"e\"\t:{\t\"k\":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}{\".t\000\000\000\377\377\377}";
// Create initial JSON object using cJSON_Parse
cJSON* root = nullptr;
if (!initial_json.empty()) {
root = cJSON_Parse(initial_json.c_str());
}
// Create a duplicate of the object using cJSON_Duplicate
cJSON* duplicated_object = cJSON_Duplicate(root, recurse_duplicate ? 1 : 0);
// Compare the original and duplicate objects using cJSON_Compare
if (duplicated_object != nullptr) {
cJSON_bool comparison_result = cJSON_Compare(root, duplicated_object, case_sensitive_operations ? 1 : 0);
(void)comparison_result; // Suppress unused variable warning
}
cleanup:
// Clean up all allocated memory
if (root != nullptr) {
cJSON_Delete(root);
}
if (duplicated_object != nullptr) {
cJSON_Delete(duplicated_object);
}
return 0;
}
- Lenguaje dominante
- C
- Estrellas
- 13k
- Forks
- 3.5k
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de DaveGamble/cJSON
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
DaveGamble/cJSON#1094 · 1 reacción ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
DaveGamble/cJSON#1093 ·
-
Use-after-free in cJSONUtils_ApplyPatches when a patch removes the patch arrayPosiblemente ocupada @iliasabk la tomó hace 22 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
DaveGamble/cJSON#1082 ·
-
Use-after-free in cJSON_ReplaceItemInObject when the key is the item's own namePosiblemente ocupada @iliasabk la tomó hace 23 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
DaveGamble/cJSON#1081 ·
-
buffer_skip_whitespace accepts every byte below 0x21 as whitespacePosiblemente ocupada @AetherAI3 la tomó hace 34 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
DaveGamble/cJSON#1074 ·
Todos los issues de DaveGamble/cJSON
Issues similares
-
Add `pdfcpu` to the pantryAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
bug good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
tmewett/BrogueCE#929 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
bug : find_key() compares kty against "ocy" instead of "oct", breaking kid-less HS256 verificationAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
OpenPrinting/cups#1756 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 76/100
SteamGridDB/SGDBoop#147 ·
-
Doc: insert executor and incremental consolidation leave sorted runs, not globally sorted headsAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 83/100
semantic-reasoning/wirelog#2133 ·
Los mantenedores suelen responder en 1 día