aboutsummaryrefslogtreecommitdiff
path: root/libsframe/sframe-impl.h
diff options
context:
space:
mode:
authorIndu Bhagat <indu.bhagat@oracle.com>2022-12-23 13:04:06 -0800
committerIndu Bhagat <indu.bhagat@oracle.com>2022-12-23 13:04:06 -0800
commit995bc59782363e7634fe3034aa9363528cb8b2e5 (patch)
treecddb66fc1be3495fe25970492b8ee280bc345f41 /libsframe/sframe-impl.h
parentc9397e5758137b75940e9cefcaaae499f86e7326 (diff)
downloadbinutils-995bc59782363e7634fe3034aa9363528cb8b2e5.zip
binutils-995bc59782363e7634fe3034aa9363528cb8b2e5.tar.gz
binutils-995bc59782363e7634fe3034aa9363528cb8b2e5.tar.bz2
libsframe: fix a memory leak in sframe_decode
sframe_decode () needs to malloc a temporary buffer of the same size as the input buffer (containing the SFrame section bytes) when endian flipping is needed. The decoder keeps the endian flipped contents in this buffer for its usage. This code is necessary when the target endianneess is not the same as host endianness. The malloc'd buffer needs to be kept track of, so that it can freed up in sframe_decoder_free () later. ChangeLog: * libsframe/sframe-impl.h (struct sframe_decoder_ctx): Add new member to keep track of the internally malloc'd buffer. * libsframe/sframe.c (sframe_decoder_free): Free it up. (sframe_decode): Update the reference to the buffer.
Diffstat (limited to 'libsframe/sframe-impl.h')
-rw-r--r--libsframe/sframe-impl.h15
1 files changed, 11 insertions, 4 deletions
diff --git a/libsframe/sframe-impl.h b/libsframe/sframe-impl.h
index 0e61c97..340d3b3 100644
--- a/libsframe/sframe-impl.h
+++ b/libsframe/sframe-impl.h
@@ -32,10 +32,17 @@ extern "C"
struct sframe_decoder_ctx
{
- sframe_header sfd_header; /* SFrame header. */
- uint32_t *sfd_funcdesc; /* SFrame function desc entries table. */
- void *sfd_fres; /* SFrame FRE table. */
- int sfd_fre_nbytes; /* Number of bytes needed for SFrame FREs. */
+ /* SFrame header. */
+ sframe_header sfd_header;
+ /* SFrame function desc entries table. */
+ uint32_t *sfd_funcdesc;
+ /* SFrame FRE table. */
+ void *sfd_fres;
+ /* Number of bytes needed for SFrame FREs. */
+ int sfd_fre_nbytes;
+ /* Reference to the internally malloc'd buffer, if any, for endian flipping
+ the original input buffer before decoding. */
+ void *sfd_buf;
};
struct sframe_encoder_ctx