7 Commits

Author SHA1 Message Date
jun
466982ffcb Use better terminology for overflow and integer 'underflow' 2025-05-15 09:11:31 +02:00
jun
ec074d5753 Fix potential int-promotion bugs in ckdint
Expressions like
(uin16_t)a * (uint16_t)b * (uint16_t)c
might be promoted to (signed) int (in that example, on platforms where sizeof(int) > sizeof(uint16_t)),
and therefore lead to undefined behaviour on overflow.

The above expression can be fixed as
1u * (uint16_t)a * (uint16_t)b * (uint16_t)c
(The 1u makes sure a, b, and c would be promoted to unsigned int (instead of int) on platforms where sizeof(int) > sizeof(uint16_t))

cf. https://stackoverflow.com/questions/27001604/32-bit-unsigned-multiply-on-64-bit-causing-undefined-behavior
2025-05-15 08:46:54 +02:00
jun
37f9011166 Add guf_alloc_tracker 2025-05-14 14:47:20 +02:00
jun
6ffb79f7a0 Fix implementation defined behaviour in guf_wrapping_mul 2025-05-14 08:51:41 +02:00
jun
6091eac820 Add guf_math_ckdint IMPL_STATIC etc. 2025-05-13 14:56:21 +02:00
jun
873cdf20b1 Add checked mul arithmetic 2025-05-13 12:45:17 +02:00
jun
9c417d2aa1 Add checked arithmetic 2025-05-11 08:55:03 +02:00