From fda6d0730b2bb5868e44c2c9345ebc976adb8c48 Mon Sep 17 00:00:00 2001 From: Aurelien David Date: Thu, 27 Feb 2025 14:54:17 +0100 Subject: [PATCH] laser: fix memleak (closes #3114) --- src/laser/lsr_dec.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/laser/lsr_dec.c b/src/laser/lsr_dec.c index d8b4f7f306..d7e0c1a0c9 100644 --- a/src/laser/lsr_dec.c +++ b/src/laser/lsr_dec.c @@ -646,12 +646,14 @@ static void lsr_read_any_uri(GF_LASeRCodec *lsr, XMLRI *iri, const char *name) len = lsr_read_vluimsbf5(lsr, "len"); if (len > gf_bs_available(lsr->bs)) { lsr->last_error = GF_NON_COMPLIANT_BITSTREAM; + if (s) { gf_free(s); } return; } len_rad = s ? (u32) strlen(s) : 0; iri->string = (char*)gf_malloc(sizeof(char)*(len_rad+1+len+1)); if (!iri->string) { lsr->last_error = GF_OUT_OF_MEM; + if (s) { gf_free(s); } return; } @@ -780,7 +782,7 @@ static void lsr_read_id(GF_LASeRCodec *lsr, GF_Node *n) XMLRI *href = (XMLRI *)gf_list_get(lsr->deferred_hrefs, i); char *str_id = href ? href->string : NULL; if (!str_id) return; - + if (str_id[0] == '#') str_id++; /*skip 'N'*/ str_id++; @@ -888,7 +890,7 @@ static Fixed lsr_translate_coords(GF_LASeRCodec *lsr, u32 val, u32 nb_bits) static Fixed lsr_translate_scale(GF_LASeRCodec *lsr, u32 val) { - if (val >> (lsr->coord_bits-1) ) { + if (lsr && lsr->coord_bits && val >> (lsr->coord_bits-1) ) { s32 neg; if (lsr->coord_bits >= 31) neg = (s32)val - 0x80000000;