static uint32 Read24(const uint8* p) {
  return p[0] << 16 | p[1] << 8 | p[2];
}

This weakness involves numeric computation errors, such as integer overflows, underflows, or precision losses, which can lead to miscalculations and exploitable behaviors in software.