about summary refs log tree commit diff
path: root/iconvdata/Makefile
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2021-01-27 13:36:12 +0100
committerFlorian Weimer <fweimer@redhat.com>2021-01-27 14:02:47 +0100
commit7d88c6142c6efc160c0ee5e4f85cde382c072888 (patch)
treed2f22ab9b4993c1b40dacc1a2d183e9916d9dbd8 /iconvdata/Makefile
parentdf359a25ba6f6bda06104229fbfe284c1fb30915 (diff)
downloadglibc-7d88c6142c6efc160c0ee5e4f85cde382c072888.tar.gz
glibc-7d88c6142c6efc160c0ee5e4f85cde382c072888.tar.xz
glibc-7d88c6142c6efc160c0ee5e4f85cde382c072888.zip
gconv: Fix assertion failure in ISO-2022-JP-3 module (bug 27256)
The conversion loop to the internal encoding does not follow
the interface contract that __GCONV_FULL_OUTPUT is only returned
after the internal wchar_t buffer has been filled completely.  This
is enforced by the first of the two asserts in iconv/skeleton.c:

	      /* We must run out of output buffer space in this
		 rerun.  */
	      assert (outbuf == outerr);
	      assert (nstatus == __GCONV_FULL_OUTPUT);

This commit solves this issue by queuing a second wide character
which cannot be written immediately in the state variable, like
other converters already do (e.g., BIG5-HKSCS or TSCII).

Reported-by: Tavis Ormandy <taviso@gmail.com>
Diffstat (limited to 'iconvdata/Makefile')
-rw-r--r--iconvdata/Makefile4
1 files changed, 3 insertions, 1 deletions
diff --git a/iconvdata/Makefile b/iconvdata/Makefile
index c8c532a3e4..55c527a5f7 100644
--- a/iconvdata/Makefile
+++ b/iconvdata/Makefile
@@ -74,7 +74,7 @@ ifeq (yes,$(build-shared))
 tests = bug-iconv1 bug-iconv2 tst-loading tst-e2big tst-iconv4 bug-iconv4 \
 	tst-iconv6 bug-iconv5 bug-iconv6 tst-iconv7 bug-iconv8 bug-iconv9 \
 	bug-iconv10 bug-iconv11 bug-iconv12 tst-iconv-big5-hkscs-to-2ucs4 \
-	bug-iconv13
+	bug-iconv13 bug-iconv14
 ifeq ($(have-thread-library),yes)
 tests += bug-iconv3
 endif
@@ -322,6 +322,8 @@ $(objpfx)bug-iconv10.out: $(objpfx)gconv-modules \
 			  $(addprefix $(objpfx),$(modules.so))
 $(objpfx)bug-iconv12.out: $(objpfx)gconv-modules \
 			  $(addprefix $(objpfx),$(modules.so))
+$(objpfx)bug-iconv14.out: $(objpfx)gconv-modules \
+			  $(addprefix $(objpfx),$(modules.so))
 
 $(objpfx)iconv-test.out: run-iconv-test.sh $(objpfx)gconv-modules \
 			 $(addprefix $(objpfx),$(modules.so)) \