diff --git a/trunk/PKGBUILD b/trunk/PKGBUILD index 57dcc98..0856762 100644 --- a/trunk/PKGBUILD +++ b/trunk/PKGBUILD @@ -2,34 +2,29 @@ # Contributor: mar77i pkgname=ming -pkgver=r3160.50098023 +pkgver=0.4.8.r68.g04aee523 pkgrel=1 pkgdesc="SWF output library" arch=('x86_64') url="http://www.libming.net/" license=('GPL' 'LGPL') depends=('freetype2' 'libpng' 'flex' 'giflib') -makedepends=('bison' 'pkgconf' 'python' 'git') +makedepends=('bison' 'pkgconf' 'git') options=('!emptydirs') -source=(git+https://github.com/libming/libming.git python3.patch pull-145.patch pull-179.patch) -sha256sums=('SKIP' - '7794e62df85c94d1ab1e9de0fc11222f52b9920a4babed4a74906f6ed1bcfb1d' - '863be1aadbd12d957b39e731ab4b7d7c18f5d5fe38b993020f86c4e7123072ff' - '5e8281464ba030d228d3c6a1c45c6b7ca2a4a6c698f03022a4c66999458d8d63') +source=(git+https://github.com/libming/libming.git#commit=04aee52363688426eab74f5d6180c149654a6473) +sha256sums=('SKIP') pkgver() { cd "$srcdir"/libming - printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" + git describe --long | sed 's/^ming-//;s/\([^-]*-g\)/r\1/;s/[-_]/./g' } build() { cd "$srcdir"/libming - git apply ../pull-145.patch - git apply ../pull-179.patch - git apply ../python3.patch + export CFLAGS="$CFLAGS -fcommon" ./autogen.sh - PYTHON=/usr/bin/python ./configure --prefix=/usr --enable-python + PYTHON=/usr/bin/python ./configure --prefix=/usr # Strange that this can fail when we let the Makefile do it pushd src/actioncompiler diff --git a/trunk/pull-145.patch b/trunk/pull-145.patch deleted file mode 100644 index c7a0ee7..0000000 --- a/trunk/pull-145.patch +++ /dev/null @@ -1,389 +0,0 @@ -From d13db01ea1c416f51043bef7496cfb25c2dde29a Mon Sep 17 00:00:00 2001 -From: Hugo Lefeuvre -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 -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 -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 -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 -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 -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 -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 -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 -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 -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< -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 -