Package: sox / 14.4.2+git20190427-5

0024-CVE-2021-33844.patch Patch series | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
From: Helmut Grohne <helmut@subdivi.de>
Date: Sat, 11 Nov 2023 18:18:40 +0100
Subject: wav: reject 0 bits per sample to avoid division by zero

Bug: https://sourceforge.net/p/sox/bugs/349/
Bug-Debian: https://bugs.debian.org/1021135
---
 src/testall.sh | 1 +
 src/wav.c      | 7 ++++++-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/testall.sh b/src/testall.sh
index e739837..e1454c2 100755
--- a/src/testall.sh
+++ b/src/testall.sh
@@ -67,3 +67,4 @@ t voc
 t vox -r 8130
 t wav
 t wve
+t wav -e gsm-full-rate
diff --git a/src/wav.c b/src/wav.c
index 2624632..c55b87e 100644
--- a/src/wav.c
+++ b/src/wav.c
@@ -506,7 +506,7 @@ static int startread(sox_format_t * ft)
     unsigned short wChannels;       /* number of channels */
     uint32_t      dwSamplesPerSecond; /* samples per second per channel */
     uint32_t      dwAvgBytesPerSec;/* estimate of bytes per second needed */
-    uint16_t wBitsPerSample;  /* bits per sample */
+    uint16_t wBitsPerSample = 0;  /* bits per sample */
     uint32_t wFmtSize;
     uint16_t wExtSize = 0;    /* extended field for non-PCM */
 
@@ -954,6 +954,11 @@ static int startread(sox_format_t * ft)
         break;
 
     default:
+        if (ft->encoding.bits_per_sample == 0)
+        {
+            lsx_fail_errno(ft, SOX_EHDR, "WAV file bits per sample is zero");
+            return SOX_EOF;
+        }
         wav->numSamples = div_bits(qwDataLength, ft->encoding.bits_per_sample) / ft->signal.channels;
         ft->signal.length = wav->numSamples * ft->signal.channels;
     }