"Mbed TLS - Medium, CVSS 5.9 - A buffer-length typo reduces a 2048-bit DH modulus to one byte. TLS 1.2 DHE_RSA sessions are decryptable when the client accepts the broken parameters. GOAHEAD-SA-2026-0005."
Not familiar with those implementation details but was this the root cause?
[–] eichin 2 days ago
[–] tialaramex 2 days ago
A fat pointer is one ordinary thin pointer, plus a pointer-sized blob of extra information, commonly a length. Examples would be Rust's &[T] slice reference, its &str string reference and a pointer for dynamic dispatch &dyn Shape in which that extra blob is pointing to a v-table of functions for how this particular type implements the Shape trait.
[–] eichin 2 days ago
But no, the actual problem was so much less subtle.
[–] tialaramex 2 days ago
But one possibility for their misunderstanding is related in that it'd be a confusion between an item (key #4) and the index to that item (4) and yeah, these APIs do encourage you to make that sort of mistake.
Or do you just add it to the list of C crimes, that "passing storage length and pointer" is maybe the worst possible way to return written-to storage from a function :-)