Martin Guy <martinw...@gmail.com> writes: > On 5/30/24 15:48, Måns Rullgård wrote: > >> Martin Guy <martinw...@gmail.com> writes: >> >>> -------- Forwarded Message -------- >>> Subject: CVE-2019-8354 claims to have been fixed in SoX, but isn't >>> Date: Thu, 30 May 2024 12:49:17 +0200 >>> From: Martin Guy <martinw...@gmail.com> >>> To: n...@nist.gov >>> >>> https://nvd.nist.gov/vuln/detail/CVE-2019-8354 >>> >>> claims to have been fixed on Apr 24 14:57:34 2019 +0100 in the SoX commit >>> logs: >>> >>> fix possible buffer size overflow in lsx_make_lpf() (CVE-2019-8354) >>> >>> The multiplication in the size argument malloc() might overflow, >>> resulting in a small buffer being allocated. Use calloc() instead. >>> >>> but the segmentation fault (core dumped) persists both immediately after >>> this commit and in all subsequent versions: > >> This crash has nothing to do with the multiplication overflow described > >> in the CVE. Still it's a bug, so I've fixed it. > > Thanks but > > -static void dft_stage_init( +static int dft_stage_init( unsigned instance, > double Fp, double Fs, double Fn, double att, double phase, stage_t * stage, > int L, int M) { @@ -229,6 +229,12 @@ static void dft_stage_init( else > f->post_peak = num_taps / 2; dft_length = lsx_set_dft_length(num_taps); + + > if (L > dft_length) { + lsx_fail("invalid DFT parameters"); + return > SOX_EINVAL; + } + f->coefs = calloc(dft_length, sizeof(*f->coefs)); for (i > = 0; i < num_taps; ++i) f->coefs[(i + dft_length - num_taps + 1) & > (dft_length - 1)] > > What if argument L, an int, whose value in the test case is 1,073,741,824, > overflows and goes negative? > > Remember, we are talking about deliberately and maliciously-crafted audio > files (the test piece has a sample rate of 3.28294e-06 and, though only 328 > samples long, has a duration of 3 years and 2 months). I'd rather it were > fixed against this eventuality than have to force the issue by trying to > invent an audio file that causes this behavior. I have more time-consuming > things to do, like verifying manually that all of the 25 CVEs open against > SoX since the last release really were fixed, as I can no longer trust the > commit logs; you evidently never tested this "fix" because the exact same > SEGV happens in the same place before and after the 2019 commit tagged > "CVE-2019-8354".
I am somewhat weary of your entitled attitude. You don't have to do anything whatsoever. The CVE addresses the possibility of a memory allocation being smaller than expected. The result of subsequent out of bounds accesses are impossible to predict, which qualifies the bug as a vulnerability. After the fix, it aborts without doing any harm. This is not exploitable. Now get off your high horse. -- Måns Rullgård _______________________________________________ SoX-devel mailing list SoX-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sox-devel