[{"id":1759432,"web_url":"http://patchwork.ozlabs.org/comment/1759432/","msgid":"<mvm1snujtv2.fsf@suse.de>","list_archive_url":null,"date":"2017-08-29T15:06:57","subject":"Re: [PATCH] iconv_open: Fix heap corruption on gconv_init failure\n\t[BZ #22026]","submitter":{"id":37,"url":"http://patchwork.ozlabs.org/api/people/37/","name":"Andreas Schwab","email":"schwab@suse.de"},"content":"On Aug 29 2017, fweimer@redhat.com (Florian Weimer) wrote:\n\n> diff --git a/iconv/gconv_db.c b/iconv/gconv_db.c\n> index b748467de5..de3e5d92fe 100644\n> --- a/iconv/gconv_db.c\n> +++ b/iconv/gconv_db.c\n> @@ -318,9 +318,12 @@ gen_steps (struct derivation_step *best, const char *toset,\n>  \t\t  if (__builtin_expect (status, __GCONV_OK) != __GCONV_OK)\n>  \t\t    {\n>  \t\t      failed = 1;\n> -\t\t      /* Make sure we unload this modules.  */\n> -\t\t      --step_cnt;\n> +\t\t      /* Do not call the end function because the init\n> +\t\t\t function has failed.  */\n>  \t\t      result[step_cnt].__end_fct = NULL;\n> +# ifdef PTR_MANGLE\n> +\t\t      PTR_MANGLE (result[step_cnt].__end_fct);\n> +# endif\n\nYou still need to decrement step_cnt, otherwise you have a resource\nleak.\n\nAndreas.","headers":{"Return-Path":"<libc-alpha-return-83833-incoming=patchwork.ozlabs.org@sourceware.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":["patchwork-incoming@bilbo.ozlabs.org","mailing list libc-alpha@sourceware.org"],"Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=sourceware.org\n\t(client-ip=209.132.180.131; helo=sourceware.org;\n\tenvelope-from=libc-alpha-return-83833-incoming=patchwork.ozlabs.org@sourceware.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (1024-bit key;\n\tsecure) header.d=sourceware.org header.i=@sourceware.org\n\theader.b=\"C7/orKQ/\"; dkim-atps=neutral","sourceware.org; auth=none"],"Received":["from sourceware.org (server1.sourceware.org [209.132.180.131])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xhX6r2g4kz9t2Q\n\tfor <incoming@patchwork.ozlabs.org>;\n\tWed, 30 Aug 2017 01:07:16 +1000 (AEST)","(qmail 81734 invoked by alias); 29 Aug 2017 15:07:10 -0000","(qmail 81722 invoked by uid 89); 29 Aug 2017 15:07:09 -0000"],"DomainKey-Signature":"a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id\n\t:list-unsubscribe:list-subscribe:list-archive:list-post\n\t:list-help:sender:from:to:cc:subject:references:date:in-reply-to\n\t:message-id:mime-version:content-type; q=dns; s=default; b=KMJpW\n\t15vFoJNvAXEHWnLk4KPN1JYQih41S8MKiru++KabLELHt+8zwncAjZXNwkNwe31E\n\t9oj93JkYODPk+NszBbh2EcgGrrPwcKXwqpUseqS/NWIqfexKTyc4REugi+UPfiDx\n\tJnmdf4brgOVDER62jjwPsMuGImh671RIdYDKeo=","DKIM-Signature":"v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id\n\t:list-unsubscribe:list-subscribe:list-archive:list-post\n\t:list-help:sender:from:to:cc:subject:references:date:in-reply-to\n\t:message-id:mime-version:content-type; s=default; bh=ILWtBreEGSM\n\tcKoE8cSlfGNVlhi8=; b=C7/orKQ/1dl90949iNeVoFVkbZnAmQYypVDmF4YGfk1\n\t07y8AUU7UYltR+SgawybZlgq+Hi1eUMmXfvbxYefvILkpYcHi7omN1ocAH/AB7rE\n\tG6bsRjfizisD8Y7VkrKKWb1n54KBV3pYvrb/QxucjzqqM7Z1BaDKGC56asDUKQoA\n\t=","Mailing-List":"contact libc-alpha-help@sourceware.org; run by ezmlm","Precedence":"bulk","List-Id":"<libc-alpha.sourceware.org>","List-Unsubscribe":"<mailto:libc-alpha-unsubscribe-incoming=patchwork.ozlabs.org@sourceware.org>","List-Subscribe":"<mailto:libc-alpha-subscribe@sourceware.org>","List-Archive":"<http://sourceware.org/ml/libc-alpha/>","List-Post":"<mailto:libc-alpha@sourceware.org>","List-Help":"<mailto:libc-alpha-help@sourceware.org>,\n\t<http://sourceware.org/ml/#faqs>","Sender":"libc-alpha-owner@sourceware.org","X-Virus-Found":"No","X-Spam-SWARE-Status":"No, score=-26.9 required=5.0 tests=BAYES_00, GIT_PATCH_0,\n\tGIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RP_MATCHES_RCVD,\n\tSPF_PASS autolearn=ham version=3.3.2 spammy=","X-HELO":"mx1.suse.de","From":"Andreas Schwab <schwab@suse.de>","To":"fweimer@redhat.com (Florian Weimer)","Cc":"libc-alpha@sourceware.org","Subject":"Re: [PATCH] iconv_open: Fix heap corruption on gconv_init failure\n\t[BZ #22026]","References":"<20170829145554.680BF4015E8BE@oldenburg.str.redhat.com>","X-Yow":"A GRAM??  A BRAM...  A GROOM...  A BROOM...  Oh, Yeh!!  Wash the\n\tROOM!!","Date":"Tue, 29 Aug 2017 17:06:57 +0200","In-Reply-To":"<20170829145554.680BF4015E8BE@oldenburg.str.redhat.com> (Florian\n\tWeimer's message of \"Tue, 29 Aug 2017 16:55:54 +0200\")","Message-ID":"<mvm1snujtv2.fsf@suse.de>","User-Agent":"Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux)","MIME-Version":"1.0","Content-Type":"text/plain"}},{"id":1759455,"web_url":"http://patchwork.ozlabs.org/comment/1759455/","msgid":"<3772746a-c2e7-4918-c23f-605212a9cc80@redhat.com>","list_archive_url":null,"date":"2017-08-29T15:28:06","subject":"Re: [PATCH] iconv_open: Fix heap corruption on gconv_init failure\n\t[BZ #22026]","submitter":{"id":14312,"url":"http://patchwork.ozlabs.org/api/people/14312/","name":"Florian Weimer","email":"fweimer@redhat.com"},"content":"On 08/29/2017 05:06 PM, Andreas Schwab wrote:\n> On Aug 29 2017, fweimer@redhat.com (Florian Weimer) wrote:\n> \n>> diff --git a/iconv/gconv_db.c b/iconv/gconv_db.c\n>> index b748467de5..de3e5d92fe 100644\n>> --- a/iconv/gconv_db.c\n>> +++ b/iconv/gconv_db.c\n>> @@ -318,9 +318,12 @@ gen_steps (struct derivation_step *best, const char *toset,\n>>  \t\t  if (__builtin_expect (status, __GCONV_OK) != __GCONV_OK)\n>>  \t\t    {\n>>  \t\t      failed = 1;\n>> -\t\t      /* Make sure we unload this modules.  */\n>> -\t\t      --step_cnt;\n>> +\t\t      /* Do not call the end function because the init\n>> +\t\t\t function has failed.  */\n>>  \t\t      result[step_cnt].__end_fct = NULL;\n>> +# ifdef PTR_MANGLE\n>> +\t\t      PTR_MANGLE (result[step_cnt].__end_fct);\n>> +# endif\n> \n> You still need to decrement step_cnt, otherwise you have a resource\n> leak.\n\nLike this?\n\nThanks,\nFlorian\niconv_open: Fix heap corruption on gconv_init failure [BZ #22026]\n\nAlso mangle the __end_fct function pointer on the error handling\npath.\n\n2017-08-29  Florian Weimer  <fweimer@redhat.com>\n\n\t[BZ #22026]\n\t* iconv/gconv_db.c (gen_steps): Decrement step_cnt after resetting\n\t__end_fct.  Mangle __end_fct after setting it to NULL.\n\t* iconv/Makefile (tests): Add tst-gconv-init-failure.\n\t(modules-names, modules-names-tests): Add\n\ttst-gconv-init-failure-mod.\n\t(gconv-modules): New target.\n\t(tst-gconv-init-failure-mod.so): Link against libsupport.\n\t(tst-gconv-init-failure): Depend on gconv-modules,\n\ttst-gconv-init-failure-mod.so.\n\t* iconv/tst-gconv-init-failure-mod.c: New file.\n\t* iconv/tst-gconv-init-failure.c: Likewise.\n\t* iconv/test-gconv-modules: Likewise.\n\ndiff --git a/iconv/Makefile b/iconv/Makefile\nindex b2fead0479..fd3575178e 100644\n--- a/iconv/Makefile\n+++ b/iconv/Makefile\n@@ -61,6 +61,20 @@ ifeq ($(run-built-tests),yes)\n xtests-special += $(objpfx)test-iconvconfig.out\n endif\n \n+# Make a copy of the file because gconv module names are constructed\n+# relative to the path of the configuration file.\n+$(objpfx)gconv-modules: test-gconv-modules\n+\tcp $< $@\n+\n+ifeq (yes,$(build-shared))\n+tests += tst-gconv-init-failure\n+modules-names += tst-gconv-init-failure-mod\n+modules-names-tests += tst-gconv-init-failure-mod\n+$(objpfx)tst-gconv-init-failure-mod.so: $(libsupport)\n+$(objpfx)tst-gconv-init-failure.out: \\\n+ $(objpfx)gconv-modules $(objpfx)tst-gconv-init-failure-mod.so\n+endif\n+\n include ../Rules\n \n $(inst_bindir)/iconv: $(objpfx)iconv_prog $(+force)\ndiff --git a/iconv/gconv_db.c b/iconv/gconv_db.c\nindex 7a95aeaeac..1f8293672e 100644\n--- a/iconv/gconv_db.c\n+++ b/iconv/gconv_db.c\n@@ -318,9 +318,13 @@ gen_steps (struct derivation_step *best, const char *toset,\n \t\t  if (__builtin_expect (status, __GCONV_OK) != __GCONV_OK)\n \t\t    {\n \t\t      failed = 1;\n-\t\t      /* Make sure we unload this modules.  */\n-\t\t      --step_cnt;\n+\t\t      /* Do not call the end function because the init\n+\t\t\t function has failed.  */\n \t\t      result[step_cnt].__end_fct = NULL;\n+# ifdef PTR_MANGLE\n+\t\t      PTR_MANGLE (result[step_cnt].__end_fct);\n+# endif\n+\t\t      --step_cnt;\n \t\t      break;\n \t\t    }\n \t\t}\ndiff --git a/iconv/test-gconv-modules b/iconv/test-gconv-modules\nnew file mode 100644\nindex 0000000000..edacd8cb1d\n--- /dev/null\n+++ b/iconv/test-gconv-modules\n@@ -0,0 +1,23 @@\n+# Test modules for gconv.\n+# Copyright (C) 2017 Free Software Foundation, Inc.\n+# This file is part of the GNU C Library.\n+\n+# The GNU C Library is free software; you can redistribute it and/or\n+# modify it under the terms of the GNU Lesser General Public\n+# License as published by the Free Software Foundation; either\n+# version 2.1 of the License, or (at your option) any later version.\n+\n+# The GNU C Library is distributed in the hope that it will be useful,\n+# but WITHOUT ANY WARRANTY; without even the implied warranty of\n+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n+# Lesser General Public License for more details.\n+\n+# You should have received a copy of the GNU Lesser General Public\n+# License along with the GNU C Library; if not, see\n+# <http://www.gnu.org/licenses/>.\n+\n+# To activate these modules, tests need to put a directory with the\n+# modules and a copy of this file (under the name gconv-modules) on\n+# GCONV_PATH.\n+\n+module\tTST-GCONV-INIT-FAILURE//\tUTF-8//\ttst-gconv-init-failure-mod\ndiff --git a/iconv/tst-gconv-init-failure-mod.c b/iconv/tst-gconv-init-failure-mod.c\nnew file mode 100644\nindex 0000000000..7e7d1b9a15\n--- /dev/null\n+++ b/iconv/tst-gconv-init-failure-mod.c\n@@ -0,0 +1,49 @@\n+/* Test gconv module for tst-gconv-init-failure.\n+   Copyright (C) 2017 Free Software Foundation, Inc.\n+   This file is part of the GNU C Library.\n+\n+   The GNU C Library is free software; you can redistribute it and/or\n+   modify it under the terms of the GNU Lesser General Public\n+   License as published by the Free Software Foundation; either\n+   version 2.1 of the License, or (at your option) any later version.\n+\n+   The GNU C Library is distributed in the hope that it will be useful,\n+   but WITHOUT ANY WARRANTY; without even the implied warranty of\n+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n+   Lesser General Public License for more details.\n+\n+   You should have received a copy of the GNU Lesser General Public\n+   License along with the GNU C Library; if not, see\n+   <http://www.gnu.org/licenses/>.  */\n+\n+#include <errno.h>\n+#include <gconv.h>\n+#include <support/check.h>\n+#include <support/support.h>\n+\n+int\n+gconv (struct __gconv_step *step,\n+       struct __gconv_step_data *data,\n+       const unsigned char **inptrp,\n+       const unsigned char *inend,\n+       unsigned char **outbufstart, size_t *irreversible,\n+       int do_flush, int consume_incomplete)\n+{\n+  FAIL_EXIT1 (\"gconv called\");\n+  return __GCONV_INTERNAL_ERROR;\n+}\n+\n+int\n+gconv_init (struct __gconv_step *ignored)\n+{\n+  write_message (\"info: gconv_init called, returning error\\n\");\n+  errno = ENOMEM;\n+  return __GCONV_NOMEM;\n+}\n+\n+int\n+gconv_end (struct __gconv_step *ignored)\n+{\n+  FAIL_EXIT1 (\"gconv_end called\");\n+  return __GCONV_INTERNAL_ERROR;\n+}\ndiff --git a/iconv/tst-gconv-init-failure.c b/iconv/tst-gconv-init-failure.c\nnew file mode 100644\nindex 0000000000..92dfbd4ccd\n--- /dev/null\n+++ b/iconv/tst-gconv-init-failure.c\n@@ -0,0 +1,58 @@\n+/* Check that module __end_fct is not invoked when the init function fails.\n+   Copyright (C) 2017 Free Software Foundation, Inc.\n+   This file is part of the GNU C Library.\n+\n+   The GNU C Library is free software; you can redistribute it and/or\n+   modify it under the terms of the GNU Lesser General Public\n+   License as published by the Free Software Foundation; either\n+   version 2.1 of the License, or (at your option) any later version.\n+\n+   The GNU C Library is distributed in the hope that it will be useful,\n+   but WITHOUT ANY WARRANTY; without even the implied warranty of\n+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n+   Lesser General Public License for more details.\n+\n+   You should have received a copy of the GNU Lesser General Public\n+   License along with the GNU C Library; if not, see\n+   <http://www.gnu.org/licenses/>.  */\n+\n+#include <errno.h>\n+#include <iconv.h>\n+#include <libgen.h>\n+#include <stdio.h>\n+#include <stdlib.h>\n+#include <support/check.h>\n+#include <support/support.h>\n+#include <support/test-driver.h>\n+#include <sys/auxv.h>\n+\n+/* Test GCONV_PATH to the directory containing the program\n+   executable.  */\n+static void\n+activate_test_gconv_modules (void)\n+{\n+  unsigned long ptr = getauxval (AT_EXECFN);\n+  if (ptr == 0)\n+    {\n+      printf (\"warning: AT_EXECFN not support, cannot run test\\n\");\n+      exit (EXIT_UNSUPPORTED);\n+    }\n+  char *test_program_directory = dirname (xstrdup ((const char *) ptr));\n+  TEST_VERIFY (setenv (\"GCONV_PATH\", test_program_directory, 1) == 0);\n+  free (test_program_directory);\n+}\n+\n+static int\n+do_test (void)\n+{\n+  activate_test_gconv_modules ();\n+\n+  TEST_VERIFY (iconv_open (\"UTF-8\", \"tst-gconv-init-failure//\")\n+               == (iconv_t) -1);\n+  if (errno != ENOMEM)\n+    FAIL_EXIT1 (\"unexpected iconv_open error: %m\");\n+\n+  return 0;\n+}\n+\n+#include <support/test-driver.c>","headers":{"Return-Path":"<libc-alpha-return-83835-incoming=patchwork.ozlabs.org@sourceware.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":["patchwork-incoming@bilbo.ozlabs.org","mailing list libc-alpha@sourceware.org"],"Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=sourceware.org\n\t(client-ip=209.132.180.131; helo=sourceware.org;\n\tenvelope-from=libc-alpha-return-83835-incoming=patchwork.ozlabs.org@sourceware.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (1024-bit key;\n\tsecure) header.d=sourceware.org header.i=@sourceware.org\n\theader.b=\"AMkiowi8\"; dkim-atps=neutral","sourceware.org; auth=none","ext-mx09.extmail.prod.ext.phx2.redhat.com;\n\tdmarc=none (p=none dis=none) header.from=redhat.com","ext-mx09.extmail.prod.ext.phx2.redhat.com;\n\tspf=fail smtp.mailfrom=fweimer@redhat.com"],"Received":["from sourceware.org (server1.sourceware.org [209.132.180.131])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xhXbH1b26z9t33\n\tfor <incoming@patchwork.ozlabs.org>;\n\tWed, 30 Aug 2017 01:28:27 +1000 (AEST)","(qmail 55319 invoked by alias); 29 Aug 2017 15:28:20 -0000","(qmail 54850 invoked by uid 89); 29 Aug 2017 15:28:19 -0000"],"DomainKey-Signature":"a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id\n\t:list-unsubscribe:list-subscribe:list-archive:list-post\n\t:list-help:sender:subject:to:cc:references:from:message-id:date\n\t:mime-version:in-reply-to:content-type; q=dns; s=default; b=wLCs\n\thlYELry0P412SnCBoUfUmNjbT3pR/M6lB1zP+7QINYPyXmqsUrn01t95pW6hnwBV\n\tvEVimaZFETAXSDGGtL1XSh0UW4MrnT+LURmdpvCYcLotRacGjRxt5gr9+cfA2Tw+\n\tjVLMdG+Dc/n9hLL+/mgKeSh6dt9tEPz7j+4sYh0=","DKIM-Signature":"v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id\n\t:list-unsubscribe:list-subscribe:list-archive:list-post\n\t:list-help:sender:subject:to:cc:references:from:message-id:date\n\t:mime-version:in-reply-to:content-type; s=default; bh=3JYJQwgQlx\n\tgsQ41b5960Oqd+3KY=; b=AMkiowi8vIipDoqMeLUxxhJbXttqQ+pJAK055XxQx+\n\tZ1icY9NoT2UG6OliRgfcguYS6QPgFgZ0XIU0Mzdt8YqQywHHN8R+yMN2yw6Bbo8n\n\tReJ4OCfTqBlYgneSoJyA83++QkgqVWVQctI1JAOM80WCk16Ykp/JIOAjk8pZWycf\n\ts=","Mailing-List":"contact libc-alpha-help@sourceware.org; run by ezmlm","Precedence":"bulk","List-Id":"<libc-alpha.sourceware.org>","List-Unsubscribe":"<mailto:libc-alpha-unsubscribe-incoming=patchwork.ozlabs.org@sourceware.org>","List-Subscribe":"<mailto:libc-alpha-subscribe@sourceware.org>","List-Archive":"<http://sourceware.org/ml/libc-alpha/>","List-Post":"<mailto:libc-alpha@sourceware.org>","List-Help":"<mailto:libc-alpha-help@sourceware.org>,\n\t<http://sourceware.org/ml/#faqs>","Sender":"libc-alpha-owner@sourceware.org","X-Virus-Found":"No","X-Spam-SWARE-Status":"No, score=-26.9 required=5.0 tests=BAYES_00, GIT_PATCH_0,\n\tGIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RP_MATCHES_RCVD,\n\tSPF_HELO_PASS autolearn=ham version=3.3.2 spammy=","X-HELO":"mx1.redhat.com","DMARC-Filter":"OpenDMARC Filter v1.3.2 mx1.redhat.com 5D69C4ACA7","Subject":"Re: [PATCH] iconv_open: Fix heap corruption on gconv_init failure\n\t[BZ #22026]","To":"Andreas Schwab <schwab@suse.de>","Cc":"libc-alpha@sourceware.org","References":"<20170829145554.680BF4015E8BE@oldenburg.str.redhat.com>\n\t<mvm1snujtv2.fsf@suse.de>","From":"Florian Weimer <fweimer@redhat.com>","Message-ID":"<3772746a-c2e7-4918-c23f-605212a9cc80@redhat.com>","Date":"Tue, 29 Aug 2017 17:28:06 +0200","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101\n\tThunderbird/52.2.1","MIME-Version":"1.0","In-Reply-To":"<mvm1snujtv2.fsf@suse.de>","Content-Type":"multipart/mixed;\n\tboundary=\"------------E91EC50FE4EAD431A6639FC1\""}},{"id":1759459,"web_url":"http://patchwork.ozlabs.org/comment/1759459/","msgid":"<mvmwp5mie3d.fsf@suse.de>","list_archive_url":null,"date":"2017-08-29T15:32:54","subject":"Re: [PATCH] iconv_open: Fix heap corruption on gconv_init failure\n\t[BZ #22026]","submitter":{"id":37,"url":"http://patchwork.ozlabs.org/api/people/37/","name":"Andreas Schwab","email":"schwab@suse.de"},"content":"On Aug 29 2017, Florian Weimer <fweimer@redhat.com> wrote:\n\n> diff --git a/iconv/gconv_db.c b/iconv/gconv_db.c\n> index 7a95aeaeac..1f8293672e 100644\n> --- a/iconv/gconv_db.c\n> +++ b/iconv/gconv_db.c\n> @@ -318,9 +318,13 @@ gen_steps (struct derivation_step *best, const char *toset,\n>  \t\t  if (__builtin_expect (status, __GCONV_OK) != __GCONV_OK)\n>  \t\t    {\n>  \t\t      failed = 1;\n> -\t\t      /* Make sure we unload this modules.  */\n> -\t\t      --step_cnt;\n> +\t\t      /* Do not call the end function because the init\n> +\t\t\t function has failed.  */\n>  \t\t      result[step_cnt].__end_fct = NULL;\n> +# ifdef PTR_MANGLE\n> +\t\t      PTR_MANGLE (result[step_cnt].__end_fct);\n> +# endif\n> +\t\t      --step_cnt;\n\nPlease keep the comment (with a spelling fix).\n\nOk with that change.\n\nAndreas.","headers":{"Return-Path":"<libc-alpha-return-83836-incoming=patchwork.ozlabs.org@sourceware.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":["patchwork-incoming@bilbo.ozlabs.org","mailing list libc-alpha@sourceware.org"],"Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=sourceware.org\n\t(client-ip=209.132.180.131; helo=sourceware.org;\n\tenvelope-from=libc-alpha-return-83836-incoming=patchwork.ozlabs.org@sourceware.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (1024-bit key;\n\tsecure) header.d=sourceware.org header.i=@sourceware.org\n\theader.b=\"UyU+eVC+\"; dkim-atps=neutral","sourceware.org; auth=none"],"Received":["from sourceware.org (server1.sourceware.org [209.132.180.131])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xhXhr5L3Tz9t33\n\tfor <incoming@patchwork.ozlabs.org>;\n\tWed, 30 Aug 2017 01:33:16 +1000 (AEST)","(qmail 27949 invoked by alias); 29 Aug 2017 15:33:09 -0000","(qmail 23583 invoked by uid 89); 29 Aug 2017 15:33:06 -0000"],"DomainKey-Signature":"a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id\n\t:list-unsubscribe:list-subscribe:list-archive:list-post\n\t:list-help:sender:from:to:cc:subject:references:date:in-reply-to\n\t:message-id:mime-version:content-type; q=dns; s=default; b=hV2Xr\n\tZ5ypX9xLObAE/BmUgIhyJRcgRkcApWc+hSyszb2Uks54p+ZFjDaoZ9q9las9P4jK\n\tKt4Ki7bwe7qkipONTtqyXKn9qPNykwn5Lg7kbd0fu6NlciBEKNTjdTzI3LT9neOx\n\tBZcUEF4nmpml3gGFMfeJ0+XCAZXS6r8geXOQ+g=","DKIM-Signature":"v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id\n\t:list-unsubscribe:list-subscribe:list-archive:list-post\n\t:list-help:sender:from:to:cc:subject:references:date:in-reply-to\n\t:message-id:mime-version:content-type; s=default; bh=HUGliuygVDH\n\tv3s0QYcp3/2QkGVo=; b=UyU+eVC+O9nez1N9aUV6fPkRGaPBeDRkHk8ONPV9hhR\n\twl5ZRobzoYVL1Pb0okKBasd+t40j3GNdflCny1DdtpfwDrI3SHHD0DpomuvwPe3V\n\tWl/Enu3y9/IEj+vWxUydoCqEnacPPivklYVo33slkm7ppXOaunfFcY9DrYbYcGis\n\t=","Mailing-List":"contact libc-alpha-help@sourceware.org; run by ezmlm","Precedence":"bulk","List-Id":"<libc-alpha.sourceware.org>","List-Unsubscribe":"<mailto:libc-alpha-unsubscribe-incoming=patchwork.ozlabs.org@sourceware.org>","List-Subscribe":"<mailto:libc-alpha-subscribe@sourceware.org>","List-Archive":"<http://sourceware.org/ml/libc-alpha/>","List-Post":"<mailto:libc-alpha@sourceware.org>","List-Help":"<mailto:libc-alpha-help@sourceware.org>,\n\t<http://sourceware.org/ml/#faqs>","Sender":"libc-alpha-owner@sourceware.org","X-Virus-Found":"No","X-Spam-SWARE-Status":"No, score=-26.9 required=5.0 tests=BAYES_00, GIT_PATCH_0,\n\tGIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RP_MATCHES_RCVD,\n\tSPF_PASS autolearn=ham version=3.3.2 spammy=","X-HELO":"mx1.suse.de","From":"Andreas Schwab <schwab@suse.de>","To":"Florian Weimer <fweimer@redhat.com>","Cc":"libc-alpha@sourceware.org","Subject":"Re: [PATCH] iconv_open: Fix heap corruption on gconv_init failure\n\t[BZ #22026]","References":"<20170829145554.680BF4015E8BE@oldenburg.str.redhat.com>\n\t<mvm1snujtv2.fsf@suse.de>\n\t<3772746a-c2e7-4918-c23f-605212a9cc80@redhat.com>","X-Yow":"NOW, I'm taking the NEXT FLIGHT to ACAPULCO so I can write POEMS about\n\tBROKEN GUITAR STRINGS and sensuous PRE-TEENS!!","Date":"Tue, 29 Aug 2017 17:32:54 +0200","In-Reply-To":"<3772746a-c2e7-4918-c23f-605212a9cc80@redhat.com> (Florian\n\tWeimer's message of \"Tue, 29 Aug 2017 17:28:06 +0200\")","Message-ID":"<mvmwp5mie3d.fsf@suse.de>","User-Agent":"Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux)","MIME-Version":"1.0","Content-Type":"text/plain"}}]