[Buildroot] [git commit] package/gawk: fix double free during kernel build

Yann E. MORIN yann.morin.1998 at free.fr
Mon Oct 31 07:28:03 UTC 2022


commit: https://git.buildroot.net/buildroot/commit/?id=e6942ad11ff03a587ba557aa359d2064f2371c38
branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master

Backport an upstream patch to fix a crash during kernel build.

Details: https://bugs.gentoo.org/868567

Fixes:
  GEN     /home/buildroot/buildroot/output/build/linux-6.0.6/tools/objtool/arch/x86/lib/inat-tables.c
free(): double free detected in tcache 2
Aborted

Signed-off-by: James Hilliard <james.hilliard1 at gmail.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998 at free.fr>
---
 .../gawk/0002-Fix-a-bug-with-Node_elem_new.patch   | 155 +++++++++++++++++++++
 1 file changed, 155 insertions(+)

diff --git a/package/gawk/0002-Fix-a-bug-with-Node_elem_new.patch b/package/gawk/0002-Fix-a-bug-with-Node_elem_new.patch
new file mode 100644
index 0000000000..502f7dcd95
--- /dev/null
+++ b/package/gawk/0002-Fix-a-bug-with-Node_elem_new.patch
@@ -0,0 +1,155 @@
+From baab183439ff4e0c6b77d62156d447e61fc1dcfb Mon Sep 17 00:00:00 2001
+From: "Arnold D. Robbins" <arnold at skeeve.com>
+Date: Wed, 14 Sep 2022 21:08:59 +0300
+Subject: [PATCH] Fix a bug with Node_elem_new.
+
+Signed-off-by: James Hilliard <james.hilliard1 at gmail.com>
+[james.hilliard1 at gmail.com: backport from upstream commit
+baab183439ff4e0c6b77d62156d447e61fc1dcfb]
+---
+ ChangeLog         | 8 ++++++++
+ interpret.h       | 1 +
+ test/ChangeLog    | 5 +++++
+ test/Makefile.am  | 4 +++-
+ test/Makefile.in  | 9 ++++++++-
+ test/Maketests    | 5 +++++
+ test/elemnew1.awk | 9 +++++++++
+ test/elemnew1.ok  | 0
+ 8 files changed, 39 insertions(+), 2 deletions(-)
+ create mode 100644 test/elemnew1.awk
+ create mode 100644 test/elemnew1.ok
+
+diff --git a/ChangeLog b/ChangeLog
+index 5fb25483..cd9d9fcd 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,11 @@
++2022-09-14         Arnold D. Robbins     <arnold at skeeve.com>
++
++	* interpret.h (r_interpret): For the `push' opcodes, upref
++	the Node_elem_new. See test case elemnew1. Thanks to
++	Emanuel Attila Czirai <corre.a.buscar at gmail.com> for the report,
++	and to Jan Alexander Steffens (heftig)" <heftig at archlinux.org>
++	for the fix.
++	
+ 2022-09-04         Arnold D. Robbins     <arnold at skeeve.com>
+ 
+ 	* 5.2.0: Release tar ball made.
+diff --git a/interpret.h b/interpret.h
+index 57d060e6..268655b2 100644
+--- a/interpret.h
++++ b/interpret.h
+@@ -238,6 +238,7 @@ uninitialized_scalar:
+ 						_("reference to uninitialized argument `%s'") :
+ 						_("reference to uninitialized variable `%s'"),
+ 								save_symbol->vname);
++				UPREF(m);
+ 				PUSH(m);
+ 				break;
+ 
+diff --git a/test/ChangeLog b/test/ChangeLog
+index a73637bf..ea08edee 100644
+--- a/test/ChangeLog
++++ b/test/ChangeLog
+@@ -1,3 +1,8 @@
++2022-09-14         Arnold D. Robbins     <arnold at skeeve.com>
++
++	* Makefile.am (EXTRA_DIST): New test: elemnew1.
++	* elemnew1.awk, elemnew1.ok: New files.
++
+ 2022-09-04         Arnold D. Robbins     <arnold at skeeve.com>
+ 
+ 	* 5.2.0: Release tar ball made.
+diff --git a/test/Makefile.am b/test/Makefile.am
+index ab06974c..8a5c3c49 100644
+--- a/test/Makefile.am
++++ b/test/Makefile.am
+@@ -282,6 +282,8 @@ EXTRA_DIST = \
+ 	dumpvars.ok \
+ 	dynlj.awk \
+ 	dynlj.ok \
++	elemnew1.awk \
++	elemnew1.ok \
+ 	escapebrace.awk \
+ 	escapebrace.in \
+ 	escapebrace.ok \
+@@ -1480,7 +1482,7 @@ GAWK_EXT_TESTS = \
+ 	binmode1 charasbytes clos1way clos1way2 clos1way3 clos1way4 \
+ 	clos1way5 clos1way6 colonwarn commas crlf dbugeval dbugeval2 \
+ 	dbugeval3 dbugtypedre1 dbugtypedre2 delsub devfd devfd1 devfd2 \
+-	dfacheck1 dumpvars errno exit fieldwdth forcenum fpat1 fpat2 \
++	dfacheck1 dumpvars elemnew1 errno exit fieldwdth forcenum fpat1 fpat2 \
+ 	fpat3 fpat4 fpat5 fpat6 fpat7 fpat8 fpat9 fpatnull fsfwfs functab1 \
+ 	functab2 functab3 functab6 funlen fwtest fwtest2 fwtest3 fwtest4 \
+ 	fwtest5 fwtest6 fwtest7 fwtest8 genpot gensub gensub2 gensub3 \
+diff --git a/test/Makefile.in b/test/Makefile.in
+index 834feb09..a4fb1cc1 100644
+--- a/test/Makefile.in
++++ b/test/Makefile.in
+@@ -550,6 +550,8 @@ EXTRA_DIST = \
+ 	dumpvars.ok \
+ 	dynlj.awk \
+ 	dynlj.ok \
++	elemnew1.awk \
++	elemnew1.ok \
+ 	escapebrace.awk \
+ 	escapebrace.in \
+ 	escapebrace.ok \
+@@ -1748,7 +1750,7 @@ GAWK_EXT_TESTS = \
+ 	binmode1 charasbytes clos1way clos1way2 clos1way3 clos1way4 \
+ 	clos1way5 clos1way6 colonwarn commas crlf dbugeval dbugeval2 \
+ 	dbugeval3 dbugtypedre1 dbugtypedre2 delsub devfd devfd1 devfd2 \
+-	dfacheck1 dumpvars errno exit fieldwdth forcenum fpat1 fpat2 \
++	dfacheck1 dumpvars elemnew1 errno exit fieldwdth forcenum fpat1 fpat2 \
+ 	fpat3 fpat4 fpat5 fpat6 fpat7 fpat8 fpat9 fpatnull fsfwfs functab1 \
+ 	functab2 functab3 functab6 funlen fwtest fwtest2 fwtest3 fwtest4 \
+ 	fwtest5 fwtest6 fwtest7 fwtest8 genpot gensub gensub2 gensub3 \
+@@ -4476,6 +4478,11 @@ dfacheck1:
+ 	@-AWKPATH="$(srcdir)" $(AWK) -f $@.awk  < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ 	@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+ 
++elemnew1:
++	@echo $@
++	@-AWKPATH="$(srcdir)" $(AWK) -f $@.awk  >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
++	@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
++
+ exit:
+ 	@echo $@
+ 	@-$(LOCALES) AWK="$(AWKPROG)" "$(srcdir)"/$@.sh  > _$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+diff --git a/test/Maketests b/test/Maketests
+index 3a667af8..90828e7f 100644
+--- a/test/Maketests
++++ b/test/Maketests
+@@ -1432,6 +1432,11 @@ dfacheck1:
+ 	@-AWKPATH="$(srcdir)" $(AWK) -f $@.awk  < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ 	@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+ 
++elemnew1:
++	@echo $@
++	@-AWKPATH="$(srcdir)" $(AWK) -f $@.awk  >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
++	@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
++
+ exit:
+ 	@echo $@
+ 	@-$(LOCALES) AWK="$(AWKPROG)" "$(srcdir)"/$@.sh  > _$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+diff --git a/test/elemnew1.awk b/test/elemnew1.awk
+new file mode 100644
+index 00000000..58dc9fcd
+--- /dev/null
++++ b/test/elemnew1.awk
+@@ -0,0 +1,9 @@
++function add_flags(old) {
++  if (old)
++    return 0
++  if (!old)
++    return 1
++}
++BEGIN {
++  a[0]=add_flags(a[0])
++}
+diff --git a/test/elemnew1.ok b/test/elemnew1.ok
+new file mode 100644
+index 00000000..e69de29b
+-- 
+2.34.1
+



More information about the buildroot mailing list