libsframe: adjust an incorrect check in flip_sframe
authorIndu Bhagat <indu.bhagat@oracle.com>
Fri, 6 Jan 2023 17:29:48 +0000 (09:29 -0800)
committerIndu Bhagat <indu.bhagat@oracle.com>
Fri, 6 Jan 2023 17:29:48 +0000 (09:29 -0800)
commitcd9aea32cffd8089f6f63f4eb86d4dccfc0b3850
treef37383b0a8e0bcafc059af016f7f9c2efa4be087
parent47bb5b33f742b4338bfa9608288830aecb085da4
libsframe: adjust an incorrect check in flip_sframe

When sframe_encoder_write needs to flip the buffer containing the SFrame
section before writing, it is not necessary that the SFrame FDES are in
the order of their sfde_func_start_fre_off.  On the contrary, SFrame
FDEs will be sorted in the order of their start address.  So, remove
this incorrect assumption which is basically assuming that the last
sfde_func_start_fre_off seen will help determine the end of the flipped
buffer.

The function now keeps track of the bytes_flipped and then compares it with
the expected value.  Also, added two more checks at appropriate places:
 - check that the SFrame FDE read is within bounds
 - check that the SFrame FRE read is within bounds

libsframe/

* sframe.c (flip_sframe): Adjust an incorrect check.
Add other checks to ensure reads are within the buffer size.
libsframe/sframe.c