[arch-commits] Commit in ming/trunk (4 files)

Connor Behan cbehan at archlinux.org
Thu Jan 2 22:22:11 UTC 2020


    Date: Thursday, January 2, 2020 @ 22:22:10
  Author: cbehan
Revision: 546663

upgpkg: ming r3160.50098023-1

Git version with python fixes

Added:
  ming/trunk/pull-145.patch
  ming/trunk/pull-179.patch
  ming/trunk/python3.patch
Modified:
  ming/trunk/PKGBUILD

----------------+
 PKGBUILD       |   26 ++-
 pull-145.patch |  389 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 pull-179.patch |   81 +++++++++++
 python3.patch  |  102 ++++++++++++++
 4 files changed, 591 insertions(+), 7 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2020-01-02 21:09:49 UTC (rev 546662)
+++ PKGBUILD	2020-01-02 22:22:10 UTC (rev 546663)
@@ -2,7 +2,7 @@
 # Contributor: mar77i <mysatyre at gmail dot com>
 
 pkgname=ming
-pkgver=0.4.8
+pkgver=r3160.50098023
 pkgrel=1
 pkgdesc="SWF output library"
 arch=('x86_64')
@@ -9,15 +9,27 @@
 url="http://www.libming.net/"
 license=('GPL' 'LGPL')
 depends=('freetype2' 'libpng' 'flex' 'giflib')
-makedepends=('bison' 'pkg-config' 'python2')
+makedepends=('bison' 'pkgconf' 'python' 'git')
 options=('!emptydirs')
-source=(https://github.com/libming/libming/archive/${pkgname}-${pkgver//./_}.tar.gz)
-md5sums=('70c28c1e41d5888aa158e6e15644b742')
+source=(git+https://github.com/libming/libming.git python3.patch pull-145.patch pull-179.patch)
+sha256sums=('SKIP'
+            '7794e62df85c94d1ab1e9de0fc11222f52b9920a4babed4a74906f6ed1bcfb1d'
+            '863be1aadbd12d957b39e731ab4b7d7c18f5d5fe38b993020f86c4e7123072ff'
+            '5e8281464ba030d228d3c6a1c45c6b7ca2a4a6c698f03022a4c66999458d8d63')
 
+pkgver() {
+  cd "$srcdir"/libming
+  printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
+}
+
 build() {
-  cd "$srcdir"/libming-${pkgname}-${pkgver//./_}/
+  cd "$srcdir"/libming
+  git apply ../pull-145.patch
+  git apply ../pull-179.patch
+  git apply ../python3.patch
+
   ./autogen.sh
-  PYTHON=/usr/bin/python2 ./configure --prefix=/usr --enable-python
+  PYTHON=/usr/bin/python ./configure --prefix=/usr --enable-python
 
   # Strange that this can fail when we let the Makefile do it
   pushd src/actioncompiler
@@ -28,7 +40,7 @@
 }
 
 package() {
-  cd "$srcdir"/libming-${pkgname}-${pkgver//./_}/
+  cd "$srcdir"/libming
   make DESTDIR="$pkgdir" install
 }
 

Added: pull-145.patch
===================================================================
--- pull-145.patch	                        (rev 0)
+++ pull-145.patch	2020-01-02 22:22:10 UTC (rev 546663)
@@ -0,0 +1,389 @@
+From d13db01ea1c416f51043bef7496cfb25c2dde29a Mon Sep 17 00:00:00 2001
+From: Hugo Lefeuvre <hle at debian.org>
+Date: Fri, 25 May 2018 22:11:51 -0400
+Subject: [PATCH 1/7] decompile: Fix null pointer dereference in getInt
+
+When getInt is passed a PUSH_REGISTER parameter, it retrieves the
+content of this register and returns the value contained by this
+register as an int. When this register is empty, we call getInt with
+a NULL pointer and a null pointer dereference occurs.
+
+In this patch we first make sure that regs[act->p.RegisterNumber] is
+not NULL before doing anything with it.
+
+Fixes #133 (CVE-2018-9132).
+---
+ NEWS             |  1 +
+ util/decompile.c | 10 +++++++++-
+ 2 files changed, 10 insertions(+), 1 deletion(-)
+
+diff --git a/NEWS b/NEWS
+index 129d55fe..609d6d05 100644
+--- a/NEWS
++++ b/NEWS
+@@ -43,6 +43,7 @@
+     with empty acts (NULL act->p.String). Perform deep copy in pushdup,
+     instead of shallow copy (issue #121).
+   * Fix heap-buffer-overflow in getString (CVE-2018-7867, issue #116).
++  * Fix null pointer dereference in getInt (CVE-2018-9132, issue #133).
+ 
+ 0.4.8 - 2017-04-07
+ 
+diff --git a/util/decompile.c b/util/decompile.c
+index e9341356..28aa0bf6 100644
+--- a/util/decompile.c
++++ b/util/decompile.c
+@@ -481,7 +481,15 @@ getInt(struct SWF_ACTIONPUSHPARAM *act)
+ 	case PUSH_NULL: /* NULL */
+ 		return 0;
+ 	case PUSH_REGISTER: /* REGISTER */
+-		return getInt(regs[act->p.RegisterNumber]);
++		if (regs[act->p.RegisterNumber])
++		{
++			return getInt(regs[act->p.RegisterNumber]);
++		}
++		else
++		{
++			SWF_warn("WARNING: retrieving undefined register values.\n");
++			break;
++		}
+ 	case PUSH_DOUBLE: /* DOUBLE */
+ 		return (int)act->p.Double;
+ 	case PUSH_INT: /* INTEGER */
+
+From 835cdd0776456483466c6d640d251548e7d9dcdb Mon Sep 17 00:00:00 2001
+From: Hugo Lefeuvre <hle at debian.org>
+Date: Fri, 25 May 2018 22:22:33 -0400
+Subject: [PATCH 2/7] decompile: fix use-after-free in decompileJUMP
+
+Same issue as f42fdb4 (functions accessing actions array without
+checking the validity of n, the user entered index), same fix.
+
+In this patch we also fix other source code places which might be
+affected by the same bug.
+
+Fixes #131 (CVE-2018-9009).
+---
+ NEWS             | 1 +
+ util/decompile.c | 8 ++++----
+ 2 files changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/NEWS b/NEWS
+index 609d6d05..a1464d03 100644
+--- a/NEWS
++++ b/NEWS
+@@ -44,6 +44,7 @@
+     instead of shallow copy (issue #121).
+   * Fix heap-buffer-overflow in getString (CVE-2018-7867, issue #116).
+   * Fix null pointer dereference in getInt (CVE-2018-9132, issue #133).
++  * Fix heap-use-after-free in decompileJUMP (CVE-2018-9009, issue #131).
+ 
+ 0.4.8 - 2017-04-07
+ 
+diff --git a/util/decompile.c b/util/decompile.c
+index 28aa0bf6..72a51618 100644
+--- a/util/decompile.c
++++ b/util/decompile.c
+@@ -1937,7 +1937,7 @@ decompileJUMP(int n, SWF_ACTION *actions, int maxn)
+ 			{
+ 				sactif = (struct SWF_ACTIONIF *)&(actions[n+i+j]);
+ 				/* chk whether last jump does lead us back to start of loop */
+-				if (sactif->Actions[sactif->numActions-1].SWF_ACTIONRECORD.ActionCode==SWFACTION_JUMP
++				if (OpCode(sactif->Actions, sactif->numActions-1, maxn) == SWFACTION_JUMP
+ 				    && sactif->Actions[sactif->numActions-1].SWF_ACTIONJUMP.BranchOffset+
+ 				    sactif->Actions[sactif->numActions-1].SWF_ACTIONJUMP.Offset==
+ 				    actions[n].SWF_ACTIONRECORD.Offset )
+@@ -2342,7 +2342,7 @@ decompileIF(int n, SWF_ACTION *actions, int maxn)
+ 	 * that points to a JUMP above the IF statement.
+ 	 */
+ 	if(n && isLogicalOp(n-1, actions, maxn) &&
+-	   (sact->Actions[sact->numActions-1].SWF_ACTIONRECORD.ActionCode == SWFACTION_JUMP) &&
++	   (OpCode(sact->Actions, sact->numActions-1, maxn) == SWFACTION_JUMP) &&
+ 	   ( (sact->Actions[sact->numActions-1].SWF_ACTIONJUMP.Offset +
+ 	      sact->Actions[sact->numActions-1].SWF_ACTIONJUMP.BranchOffset) < actions[n].SWF_ACTIONRECORD.Offset) &&
+ 	      isLogicalOp(sact->numActions-2, sact->Actions, maxn) ) 
+@@ -2432,7 +2432,7 @@ decompileIF(int n, SWF_ACTION *actions, int maxn)
+ 	 */
+ 	
+ 	if( isLogicalOp(n-1, actions, maxn) &&
+-	    ( (sact->Actions[sact->numActions-1].SWF_ACTIONRECORD.ActionCode == SWFACTION_JUMP) &&
++	    ((OpCode(sact->Actions, sact->numActions-1, maxn) == SWFACTION_JUMP) &&
+ 	       sact->Actions[sact->numActions-1].SWF_ACTIONJUMP.BranchOffset < 0) ) 
+ 	{
+ 		if(0)	    dumpRegs();
+@@ -2468,7 +2468,7 @@ decompileIF(int n, SWF_ACTION *actions, int maxn)
+ 	}
+ 	{ // WTF ???
+ #define SOME_IF_DEBUG 0	/* coders only */
+-		int has_else_or_break= ((sact->Actions[sact->numActions-1].SWF_ACTIONRECORD.ActionCode == SWFACTION_JUMP) &&
++		int has_else_or_break= ((OpCode(sact->Actions, sact->numActions-1, maxn) == SWFACTION_JUMP) &&
+ 			(sact->Actions[sact->numActions-1].SWF_ACTIONJUMP.BranchOffset > 0 )) ? 1:0;
+ 		int has_lognot=(OpCode(actions, n-1, maxn) == SWFACTION_LOGICALNOT) ? 1:0;
+ 		int else_action_cnt=0,is_logor=0,is_logand=0,sbi,sbe;
+
+From 60c8371a4275f986080eec86e8f0076f31539ee6 Mon Sep 17 00:00:00 2001
+From: Hugo Lefeuvre <hle at debian.org>
+Date: Fri, 25 May 2018 22:28:18 -0400
+Subject: [PATCH 3/7] swftypes: fix type issue causing memory exhaustion
+
+This commit fixes the memory exhaustion issue in
+parseSWF_ACTIONRECORD (fixes: #109, CVE-2018-7876).
+
+The original issue consists is triggered by an integer overflow in
+parseSWF_ACTIONRECORD, where we read a UI16 and store it in a WORD,
+which is defined as SI16. This is because type WORD (=SI16) is used
+for NumParam (in SWF_ACTIONDEFINEFUNCTION), while the specification
+says it should be UI16 (page 92 of the spec).
+
+This patch addresses this type issue by changing type of NumParam
+from WORD to UI16.
+---
+ NEWS            | 1 +
+ util/swftypes.h | 2 +-
+ 2 files changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/NEWS b/NEWS
+index a1464d03..0a946b00 100644
+--- a/NEWS
++++ b/NEWS
+@@ -45,6 +45,7 @@
+   * Fix heap-buffer-overflow in getString (CVE-2018-7867, issue #116).
+   * Fix null pointer dereference in getInt (CVE-2018-9132, issue #133).
+   * Fix heap-use-after-free in decompileJUMP (CVE-2018-9009, issue #131).
++  * Fix memory exhaustion in parseSWF_ACTIONRECORD (CVE-2018-7876, #109).
+ 
+ 0.4.8 - 2017-04-07
+ 
+diff --git a/util/swftypes.h b/util/swftypes.h
+index fe80eb2c..9648c628 100644
+--- a/util/swftypes.h
++++ b/util/swftypes.h
+@@ -363,7 +363,7 @@ struct SWF_ACTIONDEFINEFUNCTION {
+ 	UI16	Length;
+ 	UI32	Offset;
+ 	STRING	FunctionName;
+-	WORD	NumParams;
++	UI16    NumParams;
+ 	STRING	*Params;
+ 	WORD	CodeSize;
+ 	int	numActions;
+
+From 6631f9b7927868ed13f870e153ff71013add0554 Mon Sep 17 00:00:00 2001
+From: Hugo Lefeuvre <hle at debian.org>
+Date: Fri, 25 May 2018 22:39:12 -0400
+Subject: [PATCH 4/7] decompile: fix buffer-overflow in getString
+
+getString prints a 32 bit integer to a 10 char buffer, but the number
+itself has 10 digits so there's an overflow.
+
+Similar to #116, same fix.
+
+Fixes #111, CVE-2018-7873.
+---
+ NEWS             |  1 +
+ util/decompile.c | 14 ++++++++++++--
+ 2 files changed, 13 insertions(+), 2 deletions(-)
+
+diff --git a/NEWS b/NEWS
+index 0a946b00..a40acd69 100644
+--- a/NEWS
++++ b/NEWS
+@@ -46,6 +46,7 @@
+   * Fix null pointer dereference in getInt (CVE-2018-9132, issue #133).
+   * Fix heap-use-after-free in decompileJUMP (CVE-2018-9009, issue #131).
+   * Fix memory exhaustion in parseSWF_ACTIONRECORD (CVE-2018-7876, #109).
++  * Fix heap-buffer-overflow in function getString (CVE-2018-7873, #111).
+ 
+ 0.4.8 - 2017-04-07
+ 
+diff --git a/util/decompile.c b/util/decompile.c
+index 72a51618..61f53350 100644
+--- a/util/decompile.c
++++ b/util/decompile.c
+@@ -358,9 +358,19 @@ getString(struct SWF_ACTIONPUSHPARAM *act)
+ 		return t;
+ 	}
+ 	case PUSH_INT: /* INTEGER */
+-		t=malloc(10); /* 32-bit decimal */
+-		sprintf(t,"%ld", act->p.Integer );
++	{
++		char length_finder[1];
++		int needed_length = snprintf(length_finder, 1, "%ld", act->p.Integer) + 1;
++		if (needed_length <= 0)
++		{
++		        SWF_warn("WARNING: could not evaluate size of buffer (memory issue ?).\n");
++		        break;
++		}
++
++		t = malloc(needed_length);
++		sprintf(t, "%ld", act->p.Integer );
+ 		return t;
++	}
+ 	case PUSH_CONSTANT: /* CONSTANT8 */
+ 		if (act->p.Constant8 > poolcounter)
+ 		{
+
+From 2f8b17e6552f21eb7ff1265e1aa8897fd8a604f9 Mon Sep 17 00:00:00 2001
+From: Hugo Lefeuvre <hle at debian.org>
+Date: Fri, 25 May 2018 22:45:22 -0400
+Subject: [PATCH 5/7] decompile: fix null pointer dereference in newVar3
+
+getString (indirectly called by getName) is passed a variable of non
+standard type 10 (= "PUSH_VARIABLE"), which seems to return the
+string contained in passed variable, without quotes. If contained
+string is NULL, a NULL pointer is returned, which later causes NULL
+pointer dereference.
+
+In this patch we address this issue such that if the variable contains
+an invalid string, we act just like in the PUSH_STRING case. Otherwise
+a copy of the string is returned.
+
+Fixes: #118 (CVE-2018-7866).
+---
+ NEWS             | 1 +
+ util/decompile.c | 9 ++++++++-
+ 2 files changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/NEWS b/NEWS
+index a40acd69..7eb256ca 100644
+--- a/NEWS
++++ b/NEWS
+@@ -47,6 +47,7 @@
+   * Fix heap-use-after-free in decompileJUMP (CVE-2018-9009, issue #131).
+   * Fix memory exhaustion in parseSWF_ACTIONRECORD (CVE-2018-7876, #109).
+   * Fix heap-buffer-overflow in function getString (CVE-2018-7873, #111).
++  * Fix null pointer dereference in newVar3 (CVE-2018-7866, #118).
+ 
+ 0.4.8 - 2017-04-07
+ 
+diff --git a/util/decompile.c b/util/decompile.c
+index 61f53350..dee2ba0f 100644
+--- a/util/decompile.c
++++ b/util/decompile.c
+@@ -397,7 +397,14 @@ getString(struct SWF_ACTIONPUSHPARAM *act)
+ 	case 12:
+ 	case 11: /* INCREMENTED or DECREMENTED VARIABLE */
+ 	case PUSH_VARIABLE: /* VARIABLE */
+-		return act->p.String;
++		if (!act->p.String)
++		{
++		        SWF_warn("WARNING: Call to getString with PUSH_VARIABLE defining NULL string.\n");
++		        break;
++		}
++		t=malloc(strlen(act->p.String)+1); /* NULL character */
++		strcpy(t,act->p.String);
++		return t;
+ 	default: 
+ 		fprintf (stderr,"  Can't get string for type: %d\n", act->Type);
+ 		break;
+
+From 86badaaa948e5d7d4db01c0404452bbafee30201 Mon Sep 17 00:00:00 2001
+From: Hugo Lefeuvre <hle at debian.org>
+Date: Sun, 10 Jun 2018 16:33:29 -0400
+Subject: [PATCH 6/7] decompile: introduce new method Offset
+
+The getString method in decompile.c is vulnerable to a buffer
+overflow which can be triggered using a crafted SWF file.
+
+This vulnerability is the consequence of unchecked accesses to the
+actions array when getting the offset of SWF_ACTIONRECORD objects.
+
+This pattern is present a bit everywhere in the source code, leading
+to a large number of potential flaws similar to this one. In this
+commit we introduce a new Offset method similar to the OpCode method
+which handles bound checking when retrieving the offset of
+SWF_ACTIONRECORD objects.
+
+This commit also modifies getString to use this newly introduced
+method and address the previously explained bug.
+
+Usage of the newly introduced Offset method will be generalized in a
+future commit.
+
+Please, note that this commit won't be sufficient to fix #144
+(CVE-2018-11226) since another issue is triggered by the same sample.
+---
+ util/decompile.c | 20 +++++++++++++++++++-
+ 1 file changed, 19 insertions(+), 1 deletion(-)
+
+diff --git a/util/decompile.c b/util/decompile.c
+index dee2ba0f..e444e2f7 100644
+--- a/util/decompile.c
++++ b/util/decompile.c
+@@ -964,6 +964,24 @@ decompileGETURL2 (SWF_ACTION *act)
+ 	return 0;
+ }
+ 
++static inline int Offset(SWF_ACTION *actions, int n, int maxn)
++{
++	if(!n || n >= maxn)
++	{
++#if DEBUG
++		SWF_warn("Offset: want %i, max %i\n", n, maxn);
++#endif
++		return -999;
++	} else if (n < 1) {
++
++#if DEBUG
++		SWF_warn("Offset: want %i < 1\n", n);
++#endif
++		return -998;
++	}
++	return actions[n].SWF_ACTIONRECORD.Offset;
++}
++
+ static inline int OpCode(SWF_ACTION *actions, int n, int maxn)
+ {
+ 	if(!n || n >= maxn)
+@@ -2126,7 +2144,7 @@ decompile_SWITCH(int n, SWF_ACTION *actions, int maxn, int off1end)
+ 	int offSave;
+ 	for (i=0; i<n_firstactions; i++) // seek last op in 1st if
+ 	{
+-		if (actions[i+1].SWF_ACTIONRECORD.Offset==off1end)
++		if (Offset(actions, i+1, maxn) == off1end)
+ 		{
+ 			// println("found #off end first= %d",i+1);
+ 			if (OpCode(actions, i, maxn) == SWFACTION_JUMP)
+
+From 6c24ac45b8524516547d78a6fe463d4ff4b856ba Mon Sep 17 00:00:00 2001
+From: Hugo Lefeuvre <hle at debian.org>
+Date: Sat, 30 Jun 2018 14:15:08 -0400
+Subject: [PATCH 7/7] decompile: fix loop cond issue leading to OOB read
+
+In decompileSETTARGET a while loop is used to count the number of
+operations until a certain type of operation has been reached. This
+loop uses action_cnt+n < maxn as stop condition, meaning that
+action_cnt+n = maxn might be true after the loop.
+
+This is wrong because action_cnt is used as the number of operations
+to process in an array of maxn-n-1 elements.
+
+Fix the loop's stop condition and switch to for loop for better
+readability.
+
+This patch is the second part of the CVE-2018-11226 fix (fixes: #144).
+---
+ util/decompile.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/util/decompile.c b/util/decompile.c
+index e444e2f7..cf1a372d 100644
+--- a/util/decompile.c
++++ b/util/decompile.c
+@@ -3197,7 +3197,7 @@ decompileSETTARGET(int n, SWF_ACTION *actions, int maxn, int is_type2)
+ 	{
+ 		INDENT
+ 		println("tellTarget('%s') {" ,name);
+-		while(action_cnt+n<maxn)
++		for (; action_cnt+n < maxn-1; action_cnt++)
+ 		{
+ 			if (OpCode(actions, n+1+action_cnt, maxn)==SWFACTION_SETTARGET
+ 			    || OpCode(actions, n+1+action_cnt, maxn)==SWFACTION_SETTARGET2
+@@ -3207,7 +3207,6 @@ decompileSETTARGET(int n, SWF_ACTION *actions, int maxn, int is_type2)
+ 			{
+ 				break;
+ 			}
+-			action_cnt++;
+ 		}
+ 		decompileActions(action_cnt,&actions[n+1],gIndent+1);
+ 		INDENT

Added: pull-179.patch
===================================================================
--- pull-179.patch	                        (rev 0)
+++ pull-179.patch	2020-01-02 22:22:10 UTC (rev 546663)
@@ -0,0 +1,81 @@
+From 3dc0338e4a36a3092720ebaa5b908ba3dca467d9 Mon Sep 17 00:00:00 2001
+From: Young Xiao <YangX92 at hotmail.com>
+Date: Sat, 16 Mar 2019 17:27:18 +0800
+Subject: [PATCH 1/3] SWFShape_setLeftFillStyle: prevent fill overflow
+
+---
+ src/blocks/shape.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/src/blocks/shape.c b/src/blocks/shape.c
+index 67c81dcf..cfab7bca 100644
+--- a/src/blocks/shape.c
++++ b/src/blocks/shape.c
+@@ -1169,6 +1169,11 @@ SWFShape_setLeftFillStyle(SWFShape shape, SWFFillStyle fill)
+ 			return;		
+ 		idx = getFillIdx(shape, fill);
+ 	}
++	else if (idx >= 255 && shape->useVersion == SWF_SHAPE1)
++	{
++		SWF_error("Too many fills for SWFShape V1.\n" 
++			  "Use a higher SWFShape version\n");
++	}
+ 				
+ 	record = addStyleRecord(shape);
+ 	record.record.stateChange->leftFill = idx;
+
+From 2be22fcf56a223dafe8de0e8a20fe20e8bbdb0b9 Mon Sep 17 00:00:00 2001
+From: Young Xiao <YangX92 at hotmail.com>
+Date: Sat, 16 Mar 2019 17:42:14 +0800
+Subject: [PATCH 2/3] decompileAction: Prevent heap buffer overflow and
+ underflow with using OpCode
+
+---
+ util/decompile.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/util/decompile.c b/util/decompile.c
+index e9341356..1df56da5 100644
+--- a/util/decompile.c
++++ b/util/decompile.c
+@@ -3202,7 +3202,6 @@ decompileCAST(int n, SWF_ACTION *actions, int maxn)
+ int
+ decompileAction(int n, SWF_ACTION *actions, int maxn)
+ {
+-	if( n > maxn ) SWF_error("Action overflow!!");
+ 
+ #ifdef DEBUG
+ 	fprintf(stderr,"%d:\tACTION[%3.3d]: %s\n",
+@@ -3210,7 +3209,7 @@ decompileAction(int n, SWF_ACTION *actions, int maxn)
+ 	        actionName(actions[n].SWF_ACTIONRECORD.ActionCode));
+ #endif
+ 
+-	switch(actions[n].SWF_ACTIONRECORD.ActionCode)
++	switch(OpCode(actions, n, maxn))
+ 	{
+ 	case SWFACTION_END:
+ 		return 0;
+
+From 2223f7a1e431455a1411bee77c90db94a6f8e8fe Mon Sep 17 00:00:00 2001
+From: Young Xiao <YangX92 at hotmail.com>
+Date: Sat, 16 Mar 2019 18:50:24 +0800
+Subject: [PATCH 3/3] Fix left shift of a negative value in SWFInput_readSBits.
+ Check for number before before left-shifting by (number-1).
+
+---
+ src/blocks/input.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/blocks/input.c b/src/blocks/input.c
+index 478a0fe1..6e4a8320 100644
+--- a/src/blocks/input.c
++++ b/src/blocks/input.c
+@@ -113,7 +113,7 @@ SWFInput_readSBits(SWFInput input, int number)
+ {
+ 	int num = SWFInput_readBits(input, number);
+ 
+-	if ( num & (1<<(number-1)) )
++	if(number && num & (1<<(number-1)))
+ 		return num - (1<<number);
+ 	else
+ 		return num;

Added: python3.patch
===================================================================
--- python3.patch	                        (rev 0)
+++ python3.patch	2020-01-02 22:22:10 UTC (rev 546663)
@@ -0,0 +1,102 @@
+From 4db8a8a45301b21c78d285abd16617457be260dc Mon Sep 17 00:00:00 2001
+From: Connor Behan <connor.behan at gmail.com>
+Date: Thu, 2 Jan 2020 17:22:05 -0500
+Subject: [PATCH] Python3
+
+---
+ macros/python.m4 | 28 ++++++++++++++--------------
+ 1 file changed, 14 insertions(+), 14 deletions(-)
+
+diff --git a/macros/python.m4 b/macros/python.m4
+index 30c68cd5..fdab8e03 100644
+--- a/macros/python.m4
++++ b/macros/python.m4
+@@ -94,8 +94,8 @@ AC_DEFUN([AC_PYTHON_DEVEL],[
+ 	#
+ 	AC_MSG_CHECKING([for a version of Python >= '2.1.0'])
+ 	ac_supports_python_ver=`$PYTHON -c "import sys, string; \
+-		ver = string.split(sys.version)[[0]]; \
+-		print ver >= '2.1.0'"`
++		ver = sys.version.split()[[0]]; \
++		print(ver >= '2.1.0')"`
+ 	if test "$ac_supports_python_ver" != "True"; then
+ 		if test -z "$PYTHON_NOVERSIONCHECK"; then
+ 			AC_MSG_RESULT([no])
+@@ -121,8 +121,8 @@ to something else than an empty string.
+ 	if test -n "$1"; then
+ 		AC_MSG_CHECKING([for a version of Python $1])
+ 		ac_supports_python_ver=`$PYTHON -c "import sys, string; \
+-			ver = string.split(sys.version)[[0]]; \
+-			print ver $1"`
++			ver = sys.version.split()[[0]]; \
++			print(ver $1)"`
+ 		if test "$ac_supports_python_ver" = "True"; then
+ 	   	   AC_MSG_RESULT([yes])
+ 		else
+@@ -157,7 +157,7 @@ $ac_distutils_result])
+ 	AC_MSG_CHECKING([for Python include path])
+ 	if test -z "$PYTHON_CPPFLAGS"; then
+ 		python_path=`$PYTHON -c "import distutils.sysconfig; \
+-           		print distutils.sysconfig.get_python_inc();"`
++           		print(distutils.sysconfig.get_python_inc());"`
+ 		if test -n "${python_path}"; then
+ 		   	python_path="-I$python_path"
+ 		fi
+@@ -174,21 +174,21 @@ $ac_distutils_result])
+ 		# (makes two attempts to ensure we've got a version number
+ 		# from the interpreter)
+ 		py_version=`$PYTHON -c "from distutils.sysconfig import *; \
+-			from string import join; \
+-			print join(get_config_vars('VERSION'))"`
++			from string import whitespace; \
++			print(' '.join(get_config_vars('VERSION')))"`
+ 		if test "$py_version" = "[None]"; then
+ 			if test -n "$PYTHON_VERSION"; then
+ 				py_version=$PYTHON_VERSION
+ 			else
+ 				py_version=`$PYTHON -c "import sys; \
+-					print sys.version[[:3]]"`
++					print(sys.version[[:3]])"`
+ 			fi
+ 		fi
+ 
+ 		PYTHON_LDFLAGS=`$PYTHON -c "from distutils.sysconfig import *; \
+-			from string import join; \
+-			print '-L' + get_python_lib(0,1), \
+-		      	'-lpython';"`$py_version
++			from string import whitespace; \
++			print('-L' + get_python_lib(0,1), \
++		      	'-lpython');"`$py_version
+ 	fi
+ 	AC_MSG_RESULT([$PYTHON_LDFLAGS])
+ 	AC_SUBST([PYTHON_LDFLAGS])
+@@ -199,7 +199,7 @@ $ac_distutils_result])
+ 	AC_MSG_CHECKING([for Python site-packages path])
+ 	if test -z "$PYTHON_SITE_PKG"; then
+ 		PYTHON_SITE_PKG=`$PYTHON -c "import distutils.sysconfig; \
+-		        print distutils.sysconfig.get_python_lib(0,0);"`
++		        print(distutils.sysconfig.get_python_lib(0,0));"`
+ 	fi
+ 	AC_MSG_RESULT([$PYTHON_SITE_PKG])
+ 	AC_SUBST([PYTHON_SITE_PKG])
+@@ -211,7 +211,7 @@ $ac_distutils_result])
+ 	if test -z "$PYTHON_EXTRA_LIBS"; then
+ 	   PYTHON_EXTRA_LIBS=`$PYTHON -c "import distutils.sysconfig; \
+                 conf = distutils.sysconfig.get_config_var; \
+-                print conf('LOCALMODLIBS'), conf('LIBS')"`
++                print(conf('LOCALMODLIBS') + ' ' + conf('LIBS'))"`
+ 	fi
+ 	AC_MSG_RESULT([$PYTHON_EXTRA_LIBS])
+ 	AC_SUBST(PYTHON_EXTRA_LIBS)
+@@ -223,7 +223,7 @@ $ac_distutils_result])
+ 	if test -z "$PYTHON_EXTRA_LDFLAGS"; then
+ 		PYTHON_EXTRA_LDFLAGS=`$PYTHON -c "import distutils.sysconfig; \
+ 			conf = distutils.sysconfig.get_config_var; \
+-			print conf('LINKFORSHARED')"`
++			print(conf('LINKFORSHARED'))"`
+ 	fi
+ 	AC_MSG_RESULT([$PYTHON_EXTRA_LDFLAGS])
+ 	AC_SUBST(PYTHON_EXTRA_LDFLAGS)
+-- 
+2.21.0
+



More information about the arch-commits mailing list