[tls] Do not access beyond the end of a 24-bit integer
authorMichael Brown <mcb30@ipxe.org>
Fri, 31 Jul 2015 22:47:50 +0000 (23:47 +0100)
committerMichael Brown <mcb30@ipxe.org>
Fri, 31 Jul 2015 23:06:58 +0000 (00:06 +0100)
commit1ac743411192af0a83043c9135039a1f1269608e
tree69fe7edb6f6193fe0ff424aeb9dbf3896b043bcf
parent2849932c4853ba36edafb5ae16c67e5976d95372
[tls] Do not access beyond the end of a 24-bit integer

The current implementation handles big-endian 24-bit integers (which
occur in several TLS record types) by treating them as big-endian
32-bit integers which are shifted by 8 bits.  This can result in
"Invalid read" errors when running under valgrind, if the 24-bit field
happens to be exactly at the end of an I/O buffer.

Fix by ensuring that we touch only the three bytes which comprise the
24-bit integer.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/net/tls.c