Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package faad2 for openSUSE:Factory checked in at 2026-07-28 17:49:21 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/faad2 (Old) and /work/SRC/openSUSE:Factory/.faad2.new.2004 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "faad2" Tue Jul 28 17:49:21 2026 rev:6 rq:1367974 version:2.11.2.git18 Changes: -------- --- /work/SRC/openSUSE:Factory/faad2/faad2.changes 2026-06-28 21:05:09.487292257 +0200 +++ /work/SRC/openSUSE:Factory/.faad2.new.2004/faad2.changes 2026-07-28 17:49:58.227815965 +0200 @@ -1,0 +2,11 @@ +Wed Jul 22 17:44:42 UTC 2026 - Bjørn Lie <[email protected]> + +- Update to version 2.11.2.git18: + * fix signed overflow in fixed-point sample rounding before + saturation + * prevent num_bits_left underflow in ps_data extension parsing + * cap escape length in huffman_spectral_data_2 + * fix signed overflow in estimate_current_envelope energy sum + * fix ssr_gc_function signature mismatch in ssr gain control + +------------------------------------------------------------------- Old: ---- faad2-2.11.2.git13.obscpio New: ---- faad2-2.11.2.git18.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ faad2.spec ++++++ --- /var/tmp/diff_new_pack.AB2mU2/_old 2026-07-28 17:50:00.383891356 +0200 +++ /var/tmp/diff_new_pack.AB2mU2/_new 2026-07-28 17:50:00.387891496 +0200 @@ -24,7 +24,7 @@ %define so_name libfaad%so_version %define so_name_drm libfaad_drm%so_version Name: faad2 -Version: 2.11.2.git13 +Version: 2.11.2.git18 Release: 0 Summary: Freeware Advanced Audio (AAC) Decoder including SBR decoding License: GPL-2.0-or-later ++++++ _service ++++++ --- /var/tmp/diff_new_pack.AB2mU2/_old 2026-07-28 17:50:00.455893874 +0200 +++ /var/tmp/diff_new_pack.AB2mU2/_new 2026-07-28 17:50:00.459894013 +0200 @@ -1,7 +1,7 @@ <services> <service name="obs_scm" mode="manual"> <param name="filename">faad2</param> - <param name="revision">e87c7410155becdd05123d4bb532d7c7d56fca04</param> + <param name="revision">b743105de73f31f214f824e72d2001a3736da768</param> <param name="scm">git</param> <param name="submodules">disable</param> <param name="url">https://github.com/knik0/faad2.git</param> ++++++ faad2-2.11.2.git13.obscpio -> faad2-2.11.2.git18.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/faad2-2.11.2.git13/libfaad/huffman.c new/faad2-2.11.2.git18/libfaad/huffman.c --- old/faad2-2.11.2.git13/libfaad/huffman.c 2026-06-26 00:25:39.000000000 +0200 +++ new/faad2-2.11.2.git18/libfaad/huffman.c 2026-07-18 09:38:09.000000000 +0200 @@ -561,7 +561,7 @@ neg = (sp[k] < 0) ? 1 : 0; - for (i = 4; ; i++) + for (i = 4; i < 16; i++) { uint8_t b; if (get1bit_hcr(ld, &b)) @@ -570,7 +570,7 @@ break; } - if (i > 32) + if (i >= 16) return -1; if (getbits_hcr(ld, i, &off)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/faad2-2.11.2.git13/libfaad/lt_predict.c new/faad2-2.11.2.git18/libfaad/lt_predict.c --- old/faad2-2.11.2.git13/libfaad/lt_predict.c 2026-06-26 00:25:39.000000000 +0200 +++ new/faad2-2.11.2.git18/libfaad/lt_predict.c 2026-07-18 09:38:09.000000000 +0200 @@ -137,11 +137,13 @@ { if (sig_in >= 0) { - sig_in += (1 << (REAL_BITS-1)); + if (sig_in <= 0x7FFFFFFF - (1 << (REAL_BITS-1))) + sig_in += (1 << (REAL_BITS-1)); if (sig_in >= REAL_CONST(32768)) return 32767; } else { - sig_in += -(1 << (REAL_BITS-1)); + if (sig_in >= (int32_t)0x80000000 + (1 << (REAL_BITS-1))) + sig_in += -(1 << (REAL_BITS-1)); if (sig_in <= REAL_CONST(-32768)) return -32768; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/faad2-2.11.2.git13/libfaad/output.c new/faad2-2.11.2.git18/libfaad/output.c --- old/faad2-2.11.2.git13/libfaad/output.c 2026-06-26 00:25:39.000000000 +0200 +++ new/faad2-2.11.2.git18/libfaad/output.c 2026-07-18 09:38:09.000000000 +0200 @@ -488,13 +488,15 @@ hDecoder->internal_channel); if (tmp >= 0) { - tmp += (1 << (REAL_BITS-1)); + if (tmp <= 0x7FFFFFFF - (1 << (REAL_BITS-1))) + tmp += (1 << (REAL_BITS-1)); if (tmp >= REAL_CONST(32767)) { tmp = REAL_CONST(32767); } } else { - tmp += -(1 << (REAL_BITS-1)); + if (tmp >= (int32_t)0x80000000 + (1 << (REAL_BITS-1))) + tmp += -(1 << (REAL_BITS-1)); if (tmp <= REAL_CONST(-32768)) { tmp = REAL_CONST(-32768); @@ -511,14 +513,16 @@ hDecoder->internal_channel); if (tmp >= 0) { - tmp += (1 << (REAL_BITS-9)); + if (tmp <= 0x7FFFFFFF - (1 << (REAL_BITS-9))) + tmp += (1 << (REAL_BITS-9)); tmp >>= (REAL_BITS-8); if (tmp >= 8388607) { tmp = 8388607; } } else { - tmp += -(1 << (REAL_BITS-9)); + if (tmp >= (int32_t)0x80000000 + (1 << (REAL_BITS-9))) + tmp += -(1 << (REAL_BITS-9)); tmp >>= (REAL_BITS-8); if (tmp <= -8388608) { @@ -538,9 +542,11 @@ hDecoder->internal_channel); if (tmp >= 0) { - tmp += half; + if (tmp <= 0x7FFFFFFF - half) + tmp += half; } else { - tmp += -half; + if (tmp >= (int32_t)0x80000000 + half) + tmp += -half; } tmp = SAT_SHIFT(tmp, exp, sat_shift_mask); int_sample_buffer[(i*channels)+ch] = tmp; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/faad2-2.11.2.git13/libfaad/ps_syntax.c new/faad2-2.11.2.git18/libfaad/ps_syntax.c --- old/faad2-2.11.2.git13/libfaad/ps_syntax.c 2026-06-26 00:25:39.000000000 +0200 +++ new/faad2-2.11.2.git18/libfaad/ps_syntax.c 2026-07-18 09:38:09.000000000 +0200 @@ -450,11 +450,20 @@ num_bits_left = 8 * cnt; while (num_bits_left > 7) { + uint16_t bits_read; uint8_t ps_extension_id = (uint8_t)faad_getbits(ld, 2 DEBUGVAR(1,1013,"ps_data(): ps_extension_size")); num_bits_left -= 2; - num_bits_left -= ps_extension(ps, ld, ps_extension_id, num_bits_left); + bits_read = ps_extension(ps, ld, ps_extension_id, num_bits_left); + + /* ps_extension() decodes a variable amount of Huffman data and does + not stop at the advertised ps_extension_size, so it can read more + than num_bits_left. Clamp instead of letting the uint16_t wrap. */ + if (bits_read > num_bits_left) + num_bits_left = 0; + else + num_bits_left -= bits_read; } faad_getbits(ld, num_bits_left diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/faad2-2.11.2.git13/libfaad/sbr_hfadj.c new/faad2-2.11.2.git18/libfaad/sbr_hfadj.c --- old/faad2-2.11.2.git13/libfaad/sbr_hfadj.c 2026-06-26 00:25:39.000000000 +0200 +++ new/faad2-2.11.2.git18/libfaad/sbr_hfadj.c 2026-07-18 09:38:09.000000000 +0200 @@ -138,13 +138,19 @@ qmf_t Xsbr[MAX_NTSRHFG][64], uint8_t ch) { uint8_t m, l, j, k, k_l, k_h, p; - real_t nrg, div; + real_t div; (void)adj; /* TODO: remove parameter? */ #ifdef FIXED_POINT + /* the per-bin energy is accumulated over the envelope's time slots and, + for the wider bands, its QMF bins; that sum exceeds 32 bits on ordinary + content, so keep it in 64 bits. the running int32 sum otherwise wraps + before the limit test below can reject an over-range energy. */ + int64_t nrg; const real_t half = REAL_CONST(0.5); real_t limit; real_t mul; #else + real_t nrg; const real_t half = 0; /* Compiler is smart enough to eliminate +0 op. */ const real_t limit = FLT_MAX; #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/faad2-2.11.2.git13/libfaad/ssr.c new/faad2-2.11.2.git18/libfaad/ssr.c --- old/faad2-2.11.2.git13/libfaad/ssr.c 2026-06-26 00:25:39.000000000 +0200 +++ new/faad2-2.11.2.git18/libfaad/ssr.c 2026-07-18 09:38:09.000000000 +0200 @@ -37,6 +37,11 @@ #include "filtbank.h" #include "ssr.h" #include "ssr_fb.h" +#include "ssr_ipqf.h" + +static void ssr_gc_function(ssr_info *ssr, real_t *prev_fmd, + real_t *gc_function, uint8_t window_sequence, + uint16_t frame_len); void ssr_decode(ssr_info *ssr, fb_info *fb, uint8_t window_sequence, uint8_t window_shape, uint8_t window_shape_prev, @@ -90,7 +95,7 @@ if (window_sequence != EIGHT_SHORT_SEQUENCE) { ssr_gc_function(ssr, &prev_fmd[band * frame_len*2], - gc_function, window_sequence, band, frame_len); + gc_function, window_sequence, frame_len); for (i = 0; i < frame_len*2; i++) data[band * frame_len*2 + i] *= gc_function[i]; @@ -136,7 +141,7 @@ static void ssr_gc_function(ssr_info *ssr, real_t *prev_fmd, real_t *gc_function, uint8_t window_sequence, - uint8_t band, uint16_t frame_len) + uint16_t frame_len) { uint16_t i; uint16_t len_area1, len_area2; ++++++ faad2.obsinfo ++++++ --- /var/tmp/diff_new_pack.AB2mU2/_old 2026-07-28 17:50:01.011913316 +0200 +++ /var/tmp/diff_new_pack.AB2mU2/_new 2026-07-28 17:50:01.031914015 +0200 @@ -1,5 +1,5 @@ name: faad2 -version: 2.11.2.git13 -mtime: 1782426339 -commit: e87c7410155becdd05123d4bb532d7c7d56fca04 +version: 2.11.2.git18 +mtime: 1784360289 +commit: b743105de73f31f214f824e72d2001a3736da768
