Undefined-Behavior in function cJSON_SetNumberHelper
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 70/100
Línea de trabajo
El error está en cJSON_SetNumberHelper en cJSON.c. NaN no cumple ninguna de las dos comparaciones de rango, por lo que llega a la rama else, y el cast (int)number es comportamiento indefinido. Lee cJSON_CreateNumber, que el issue cita como caso similar, para ver cómo se gestiona NaN allí. Está terminado cuando una entrada NaN ya no se convierte a int y el resultado valueint está definido, y se ha añadido una prueba en tests/ que cubre NaN.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
CJSON_PUBLIC(double) cJSON_SetNumberHelper(cJSON *object, double number)
{
if (object == NULL)
{
return (double)NAN;
}
if (number >= INT_MAX)
{
object->valueint = INT_MAX;
}
else if (number <= (double)INT_MIN)
{
object->valueint = INT_MIN;
}
else
{
object->valueint = (int)number;
}
return object->valuedouble = number;
}
this UB is similar to that UB: cJSON_CreateNumber when input number is NaN
then cause NAN cast : int(NaN)
- 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 26 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 27 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 38 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
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
FriendsofECCE/ECCE#336 · 1 comentario ·
-
mediatek/filogic: OpenFi 6C (openfi,6c): func key has wrong polarity, event class and key codeAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
immortalwrt/immortalwrt#2501 ·
-
Taisei fails to build on BSD because the bundled openlibm is compiled with `-D_ANSI_SOURCE`.Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
taisei-project/taisei#454 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100