Undefined-Behavior in function cJSON_SetNumberHelper
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 70/100
Direzione di ricerca
Il bug si trova in cJSON_SetNumberHelper in cJSON.c. NaN non supera nessuno dei due confronti di intervallo, quindi finisce nel ramo else, e il cast (int)number è un comportamento indefinito. Leggi cJSON_CreateNumber, che la issue cita come caso simile, per vedere come lì viene gestito NaN. È completato quando un input NaN non viene più convertito in int e il risultato valueint è definito, e quando è stato aggiunto un test sotto tests/ che copre NaN.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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)
- Lingua principale
- C
- Stelle
- 13k
- Fork
- 3.5k
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di DaveGamble/cJSON
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
DaveGamble/cJSON#1094 · 1 reazione ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
DaveGamble/cJSON#1093 ·
-
Use-after-free in cJSONUtils_ApplyPatches when a patch removes the patch arrayForse già presa @iliasabk l’ha presa 28 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
DaveGamble/cJSON#1082 ·
-
Use-after-free in cJSON_ReplaceItemInObject when the key is the item's own nameForse già presa @iliasabk l’ha presa 29 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
DaveGamble/cJSON#1081 ·
-
buffer_skip_whitespace accepts every byte below 0x21 as whitespaceForse già presa @AetherAI3 l’ha presa 40 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
DaveGamble/cJSON#1074 ·
Tutte le issue di DaveGamble/cJSON
Issue simili
-
backlog bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
EchoTools/nevr-runtime#653 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
InfiniTimeOrg/InfiniTime#2492 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 80/100
I maintainer di solito rispondono entro 1 giorno
-
system: coco
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
FujiNetWIFI/fujinet-config#274 ·
I maintainer di solito rispondono entro 1 giorno
-
base-files: 82_config_generate: regenerate /etc/board.json if 0-bytes / truncated after power cutAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
openwrt/openwrt#25940 · 5 commenti ·
I maintainer di solito rispondono entro 1 giorno