Package: release.debian.org
Severity: normal
Tags: buster
User: release.debian....@packages.debian.org
Usertags: pu
X-Debbugs-Cc: jcowg...@debian.org

Attached debdiff fixes a few security issues in milkytracker
which don't warrant a DSA. I've verified all reproducers
and the (identical) patches have been in unstable for quite a
bit.

Cheers,
        Moritz
diff -Nru milkytracker-1.02.00+dfsg/debian/changelog 
milkytracker-1.02.00+dfsg/debian/changelog
--- milkytracker-1.02.00+dfsg/debian/changelog  2018-02-25 11:15:54.000000000 
+0100
+++ milkytracker-1.02.00+dfsg/debian/changelog  2020-09-18 15:32:18.000000000 
+0200
@@ -1,3 +1,10 @@
+milkytracker (1.02.00+dfsg-1+deb10u1) buster; urgency=medium
+
+  * CVE-2020-15569 (Closes: #964797)
+  * CVE-2019-14464, CVE-2019-14496, CVE-2019-14497 (Closes: #933964)
+
+ -- Moritz Mühlenhoff <j...@debian.org>  Fri, 18 Sep 2020 20:30:05 +0200
+
 milkytracker (1.02.00+dfsg-1) unstable; urgency=medium
 
   * New upstream version.
diff -Nru 
milkytracker-1.02.00+dfsg/debian/patches/0001-Fix-use-after-free-in-PlayerGeneric-destructor.patch
 
milkytracker-1.02.00+dfsg/debian/patches/0001-Fix-use-after-free-in-PlayerGeneric-destructor.patch
--- 
milkytracker-1.02.00+dfsg/debian/patches/0001-Fix-use-after-free-in-PlayerGeneric-destructor.patch
  1970-01-01 01:00:00.000000000 +0100
+++ 
milkytracker-1.02.00+dfsg/debian/patches/0001-Fix-use-after-free-in-PlayerGeneric-destructor.patch
  2020-09-18 15:30:01.000000000 +0200
@@ -0,0 +1,36 @@
+From d6f07ee05fe114ed843aad5f1a2492a73c2b9183 Mon Sep 17 00:00:00 2001
+From: Jeremy Clarke <gecko...@gmail.com>
+Date: Mon, 13 Apr 2020 23:53:51 +0100
+Subject: Fix use-after-free in PlayerGeneric destructor
+
+---
+ src/milkyplay/PlayerGeneric.cpp | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/src/milkyplay/PlayerGeneric.cpp b/src/milkyplay/PlayerGeneric.cpp
+index 8df2c13..59f7cba 100644
+--- a/src/milkyplay/PlayerGeneric.cpp
++++ b/src/milkyplay/PlayerGeneric.cpp
+@@ -202,15 +202,16 @@ PlayerGeneric::PlayerGeneric(mp_sint32 frequency, 
AudioDriverInterface* audioDri
+       
+ PlayerGeneric::~PlayerGeneric()
+ {
+-      if (mixer)
+-              delete mixer;
+ 
+       if (player)
+       {
+-              if (mixer->isActive() && !mixer->isDeviceRemoved(player))
++              if (mixer && mixer->isActive() && 
!mixer->isDeviceRemoved(player))
+                       mixer->removeDevice(player);
+               delete player;
+       }
++      
++      if (mixer)
++              delete mixer;
+ 
+       delete[] audioDriverName;
+       
+-- 
+2.20.1
+
diff -Nru milkytracker-1.02.00+dfsg/debian/patches/CVE-2019-144{64,96,97}.patch 
milkytracker-1.02.00+dfsg/debian/patches/CVE-2019-144{64,96,97}.patch
--- milkytracker-1.02.00+dfsg/debian/patches/CVE-2019-144{64,96,97}.patch       
1970-01-01 01:00:00.000000000 +0100
+++ milkytracker-1.02.00+dfsg/debian/patches/CVE-2019-144{64,96,97}.patch       
2020-09-18 15:30:01.000000000 +0200
@@ -0,0 +1,118 @@
+Description: This patch fixes the stack-based buffer overflow
+ and a heap-based buffer overflow.
+Author: Christopher O'Neill <c...@chrisoneill.co.uk>
+Author: Utkarsh Gupta <guptautkarsh2...@gmail.com>
+Bug-Debian: https://bugs.debian.org/933964
+Origin: 
https://github.com/milkytracker/MilkyTracker/commit/ea7772a3fae0a9dd0a322e8fec441d15843703b7
+Origin: 
https://github.com/milkytracker/MilkyTracker/commit/fd607a3439fcdd0992e5efded3c16fc79c804e34
+Bug: https://github.com/milkytracker/MilkyTracker/issues/182
+Bug: https://github.com/milkytracker/MilkyTracker/issues/183
+Bug: https://github.com/milkytracker/MilkyTracker/issues/184
+Last-Update: 2019-10-28
+
+--- a/src/milkyplay/LoaderS3M.cpp
++++ b/src/milkyplay/LoaderS3M.cpp
+@@ -340,7 +340,11 @@
+               return MP_OUT_OF_MEMORY;
+       
+       header->insnum = f.readWord(); // number of instruments
+-      header->patnum = f.readWord(); // number of patterns    
++    if (header->insnum > MP_MAXINS)
++        return MP_LOADER_FAILED;
++    header->patnum = f.readWord(); // number of patterns
++    if (header->patnum > 256)
++        return MP_LOADER_FAILED;
+       
+       mp_sint32 flags = f.readWord(); // st3 flags    
+ 
+--- a/src/milkyplay/LoaderXM.cpp
++++ b/src/milkyplay/LoaderXM.cpp
+@@ -63,8 +63,8 @@
+ mp_sint32 LoaderXM::load(XMFileBase& f, XModule* module)
+ {
+       mp_ubyte insData[230];          
+-      mp_sint32 smpReloc[96];
+-      mp_ubyte nbu[96];
++      mp_sint32 smpReloc[MP_MAXINSSAMPS];
++      mp_ubyte nbu[MP_MAXINSSAMPS];
+       mp_uint32 fileSize = 0;
+                       
+       module->cleanUp();
+@@ -117,6 +117,8 @@
+       memcpy(header->ord, hdrBuff+16, 256);
+       if(header->ordnum > MP_MAXORDERS)
+               header->ordnum = MP_MAXORDERS;
++    if(header->insnum > MP_MAXINS)
++        return MP_LOADER_FAILED;
+ 
+       delete[] hdrBuff;
+       
+@@ -143,7 +145,7 @@
+                       f.read(&instr[y].type,1,1);
+                       mp_uword numSamples = 0;
+                       f.readWords(&numSamples,1);
+-                      if(numSamples > 96)
++                      if(numSamples > MP_MAXINSSAMPS)
+                               return MP_LOADER_FAILED;
+                       instr[y].samp = numSamples;
+ 
+@@ -169,8 +171,8 @@
+                       if (instr[y].samp) {
+                               mp_ubyte* insDataPtr = insData;
+                               
+-                              memcpy(nbu, insDataPtr, 96);
+-                              insDataPtr+=96;
++                              memcpy(nbu, insDataPtr, MP_MAXINSSAMPS);
++                              insDataPtr+=MP_MAXINSSAMPS;
+                               
+                               TEnvelope venv;
+                               TEnvelope penv;
+@@ -285,7 +287,7 @@
+ 
+                               instr[y].samp = g;
+ 
+-                              for (sc = 0; sc < 96; sc++) {
++                              for (sc = 0; sc < MP_MAXINSSAMPS; sc++) {
+                                       if (smpReloc[nbu[sc]] == -1)
+                                               instr[y].snum[sc] = -1;
+                                       else
+@@ -491,6 +493,8 @@
+                               f.read(&instr[y].type,1,1);
+                               f.readWords(&instr[y].samp,1);
+                       }
++            if (instr[y].samp > MP_MAXINSSAMPS)
++                return MP_LOADER_FAILED;
+ 
+                       //printf("%i, %i\n", instr[y].size, instr[y].samp);
+ 
+@@ -532,8 +536,8 @@
+                               
+                               //f.read(&nbu,1,96);
+                               
+-                              memcpy(nbu, insDataPtr, 96);
+-                              insDataPtr+=96;
++                              memcpy(nbu, insDataPtr, MP_MAXINSSAMPS);
++                              insDataPtr+=MP_MAXINSSAMPS;
+                               
+                               TEnvelope venv;
+                               TEnvelope penv;
+@@ -650,7 +654,7 @@
+ 
+                               instr[y].samp = g;
+ 
+-                              for (sc = 0; sc < 96; sc++) {                   
                
++                              for (sc = 0; sc < MP_MAXINSSAMPS; sc++) {
+                                       if (smpReloc[nbu[sc]] == -1)
+                                               instr[y].snum[sc] = -1;
+                                       else
+--- a/src/milkyplay/XModule.h
++++ b/src/milkyplay/XModule.h
+@@ -40,6 +40,8 @@
+ 
+ #define MP_MAXTEXT 32
+ #define MP_MAXORDERS 256
++#define MP_MAXINS 255
++#define MP_MAXINSSAMPS 96
+ 
+ struct TXMHeader 
+ {
diff -Nru milkytracker-1.02.00+dfsg/debian/patches/series 
milkytracker-1.02.00+dfsg/debian/patches/series
--- milkytracker-1.02.00+dfsg/debian/patches/series     2018-02-25 
11:06:36.000000000 +0100
+++ milkytracker-1.02.00+dfsg/debian/patches/series     2020-09-18 
15:30:01.000000000 +0200
@@ -1 +1,3 @@
 01_remove-resources-music.patch
+CVE-2019-144{64,96,97}.patch
+0001-Fix-use-after-free-in-PlayerGeneric-destructor.patch

Reply via email to