Closed
Description
What is the issue?
The rust bindings uncompress()
and deserialize()
for each point object do not ensure the correct number of bytes are supplied before calling.
This is an issue if someone calls uncompress(&[])
with an empty array. The c code assumes it was passed a 48 byte array and will read the next sections of memory.
What needs to be done?
I think this will have to be checked in the rust uncompress()
/ deserialize()
functions.
For uncompress()
maybe something along the lines of pk_comp.len() == $pk_comp_size
.
It's generally safe to do a strict check on length to prevent signature malleability by appending bytes.
A little more challenging for deserialize()
as we have to handle the compressed and uncompressed byte lengths. But a check of the compression bit should do the trick.
Metadata
Metadata
Assignees
Labels
No labels