File wavpack-CVE-2020-35738.patch of Package wavpack.25158

+++ a/src/wputils.c
Index: wavpack-4.70.0/src/wputils.c
===================================================================
--- wavpack-4.70.0.orig/src/wputils.c	2021-03-16 11:48:14.767189525 +0100
+++ wavpack-4.70.0/src/wputils.c	2021-03-16 12:12:13.722917470 +0100
@@ -942,8 +942,18 @@ int WavpackSetConfiguration (WavpackCont
     int num_chans = config->num_channels;
     int i;
 
-    if (!config->sample_rate) {
-        strcpy (wpc->error_message, "sample rate cannot be zero!");
+    if (config->sample_rate <= 0) {
+        strcpy (wpc->error_message, "sample rate cannot be zero or negative!");
+        return FALSE;
+    }
+
+    if (num_chans <= 0 || num_chans > NEW_MAX_STREAMS * 2) {
+        strcpy (wpc->error_message, "invalid channel count!");
+        return FALSE;
+    }
+
+    if (config->block_samples && (config->block_samples < 16 || config->block_samples > 131072)) {
+        strcpy (wpc->error_message, "invalid custom block samples!");
         return FALSE;
     }
 
@@ -1096,10 +1106,10 @@ int WavpackPackInit (WavpackContext *wpc
     else
         wpc->block_samples = wpc->config.sample_rate;
 
-    while (wpc->block_samples * wpc->config.num_channels > 150000)
+    while ((int64_t) wpc->block_samples * wpc->config.num_channels > 150000)
         wpc->block_samples /= 2;
 
-    while (wpc->block_samples * wpc->config.num_channels < 40000)
+    while ((int64_t) wpc->block_samples * wpc->config.num_channels < 40000)
         wpc->block_samples *= 2;
 
     if (wpc->config.block_samples) {
openSUSE Build Service is sponsored by