[{"id":3684898,"web_url":"http://patchwork.ozlabs.org/comment/3684898/","msgid":"<f8b9b744-13ba-4eaf-a639-ce2f81ee0c76@linaro.org>","list_archive_url":null,"date":"2026-04-30T18:42:36","subject":"Re: [PATCH 1/2] libio: Fix gconv module reference counter overflow in\n swscanf","submitter":{"id":66065,"url":"http://patchwork.ozlabs.org/api/people/66065/","name":"Adhemerval Zanella Netto","email":"adhemerval.zanella@linaro.org"},"content":"On 29/04/26 11:59, Frédéric Bérat wrote:\n> The swscanf family of functions creates a wide-oriented FILE stream\n> on the stack. Initialization of this stream invokes `_IO_fwide`, which\n> clones the global locale's gconv transformation steps via\n> `__wcsmbs_clone_conv`. This increments the reference counter (`__counter`)\n> of the gconv module.\n> \n> Because the FILE stream is stack-allocated, `fclose` cannot be called,\n> and so `__gconv_release_step` is never invoked. The counter leaks,\n> eventually hitting the 32-bit integer overflow limit and aborting the\n> process.\n> \n> To resolve this, we introduce `_IO_wstrfile_fclose_stack`, a dedicated\n> cleanup function for stack-allocated FILE streams. This function invokes\n> `_IO_FINISH` and correctly releases the gconv steps via\n> `__gconv_release_step` without attempting to `free` the FILE pointer.\n> This cleanup function is then hooked into all variants of swscanf right\n> before they return.\n\nLGTM, thanks.\n\nReviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>\n\n> ---\n>  libio/iofwide.c                                   | 15 +++++++++++++++\n>  libio/iovswscanf.c                                |  4 +++-\n>  libio/libioP.h                                    |  1 +\n>  libio/swscanf.c                                   |  2 +-\n>  .../ldbl-128ibm-compat/ieee128-isoc23_swscanf.c   |  2 +-\n>  .../ldbl-128ibm-compat/ieee128-isoc23_vswscanf.c  |  4 +++-\n>  .../ldbl-128ibm-compat/ieee128-isoc99_swscanf.c   |  2 +-\n>  .../ldbl-128ibm-compat/ieee128-isoc99_vswscanf.c  |  4 +++-\n>  .../ieee754/ldbl-128ibm-compat/ieee128-swscanf.c  |  2 +-\n>  .../ieee754/ldbl-128ibm-compat/ieee128-vswscanf.c |  4 +++-\n>  sysdeps/ieee754/ldbl-opt/nldbl-compat.c           | 12 +++++++++---\n>  wcsmbs/isoc23_swscanf.c                           |  2 +-\n>  wcsmbs/isoc23_vswscanf.c                          |  4 +++-\n>  wcsmbs/isoc99_swscanf.c                           |  2 +-\n>  wcsmbs/isoc99_vswscanf.c                          |  4 +++-\n>  15 files changed, 49 insertions(+), 15 deletions(-)\n> \n> diff --git a/libio/iofwide.c b/libio/iofwide.c\n> index 8e71fdd21b..d016aa33ea 100644\n> --- a/libio/iofwide.c\n> +++ b/libio/iofwide.c\n> @@ -251,3 +251,18 @@ __libio_codecvt_length (struct _IO_codecvt *codecvt, __mbstate_t *statep,\n>  \n>    return result;\n>  }\n> +\n> +void\n> +_IO_wstrfile_fclose_stack (FILE *fp)\n> +{\n> +  _IO_FINISH (fp);\n> +  if (fp->_mode > 0)\n> +    {\n> +      struct _IO_codecvt *cc = fp->_codecvt;\n> +\n> +      __libc_lock_lock (__gconv_lock);\n> +      __gconv_release_step (cc->__cd_in.step);\n> +      __gconv_release_step (cc->__cd_out.step);\n> +      __libc_lock_unlock (__gconv_lock);\n> +    }\n> +}\n> diff --git a/libio/iovswscanf.c b/libio/iovswscanf.c\n> index a97f4eed1e..986d94178d 100644\n> --- a/libio/iovswscanf.c\n> +++ b/libio/iovswscanf.c\n> @@ -38,6 +38,8 @@ __vswscanf (const wchar_t *string, const wchar_t *format, va_list args)\n>    _IO_strfile sf;\n>    struct _IO_wide_data wd;\n>    FILE *f = _IO_strfile_readw (&sf, &wd, string);\n> -  return __vfwscanf_internal (f, format, args, 0);\n> +  int done = __vfwscanf_internal (f, format, args, 0);\n> +  _IO_wstrfile_fclose_stack (f);\n> +  return done;\n>  }\n>  ldbl_weak_alias (__vswscanf, vswscanf)\n> diff --git a/libio/libioP.h b/libio/libioP.h\n> index 1485d22619..1d4217e82a 100644\n> --- a/libio/libioP.h\n> +++ b/libio/libioP.h\n> @@ -645,6 +645,7 @@ extern FILE* _IO_new_file_fopen (FILE *, const char *, const char *,\n>  \t\t\t\t     int);\n>  extern void _IO_no_init (FILE *, int, int, struct _IO_wide_data *,\n>  \t\t\t const struct _IO_jump_t *) __THROW;\n> +extern void _IO_wstrfile_fclose_stack (FILE *) attribute_hidden;\n>  extern void _IO_new_file_init_internal (struct _IO_FILE_plus *)\n>    __THROW attribute_hidden;\n>  extern FILE* _IO_new_file_setbuf (FILE *, char *, ssize_t);\n> diff --git a/libio/swscanf.c b/libio/swscanf.c\n> index d36ef48258..583253a7dc 100644\n> --- a/libio/swscanf.c\n> +++ b/libio/swscanf.c\n> @@ -37,7 +37,7 @@ __swscanf (const wchar_t *s, const wchar_t *format, ...)\n>    va_start (arg, format);\n>    done = __vfwscanf_internal (f, format, arg, 0);\n>    va_end (arg);\n> -\n> +  _IO_wstrfile_fclose_stack (f);\n>    return done;\n>  }\n>  ldbl_strong_alias (__swscanf, swscanf)\n> diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_swscanf.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_swscanf.c\n> index 6b3915357f..2e95cdf010 100644\n> --- a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_swscanf.c\n> +++ b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_swscanf.c\n> @@ -35,7 +35,7 @@ ___ieee128_isoc23_swscanf (const wchar_t *string, const wchar_t *format, ...)\n>    va_start (ap, format);\n>    done = __vfwscanf_internal (fp, format, ap, mode_flags);\n>    va_end (ap);\n> -\n> +  _IO_wstrfile_fclose_stack (fp);\n>    return done;\n>  }\n>  strong_alias (___ieee128_isoc23_swscanf, __isoc23_swscanfieee128)\n> diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_vswscanf.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_vswscanf.c\n> index 295321147c..857903b2a6 100644\n> --- a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_vswscanf.c\n> +++ b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_vswscanf.c\n> @@ -28,6 +28,8 @@ ___ieee128_isoc23_vswscanf (wchar_t *string, const wchar_t *format, va_list ap)\n>    FILE *fp = _IO_strfile_readw (&sf, &wd, string);\n>    int mode_flags =\n>      SCANF_ISOC99_A | SCANF_ISOC23_BIN_CST | SCANF_LDBL_USES_FLOAT128;\n> -  return __vfwscanf_internal (fp, format, ap, mode_flags);\n> +  int done = __vfwscanf_internal (fp, format, ap, mode_flags);\n> +  _IO_wstrfile_fclose_stack (fp);\n> +  return done;\n>  }\n>  strong_alias (___ieee128_isoc23_vswscanf, __isoc23_vswscanfieee128)\n> diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_swscanf.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_swscanf.c\n> index 19b71940dd..2280bae1d0 100644\n> --- a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_swscanf.c\n> +++ b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_swscanf.c\n> @@ -34,7 +34,7 @@ ___ieee128_isoc99_swscanf (const wchar_t *string, const wchar_t *format, ...)\n>    va_start (ap, format);\n>    done = __vfwscanf_internal (fp, format, ap, mode_flags);\n>    va_end (ap);\n> -\n> +  _IO_wstrfile_fclose_stack (fp);\n>    return done;\n>  }\n>  strong_alias (___ieee128_isoc99_swscanf, __isoc99_swscanfieee128)\n> diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_vswscanf.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_vswscanf.c\n> index a1b51cb5b6..21cf25610a 100644\n> --- a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_vswscanf.c\n> +++ b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_vswscanf.c\n> @@ -27,6 +27,8 @@ ___ieee128_isoc99_vswscanf (wchar_t *string, const wchar_t *format, va_list ap)\n>    struct _IO_wide_data wd;\n>    FILE *fp = _IO_strfile_readw (&sf, &wd, string);\n>    int mode_flags = SCANF_ISOC99_A | SCANF_LDBL_USES_FLOAT128;\n> -  return __vfwscanf_internal (fp, format, ap, mode_flags);\n> +  int done = __vfwscanf_internal (fp, format, ap, mode_flags);\n> +  _IO_wstrfile_fclose_stack (fp);\n> +  return done;\n>  }\n>  strong_alias (___ieee128_isoc99_vswscanf, __isoc99_vswscanfieee128)\n> diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-swscanf.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-swscanf.c\n> index 7124ecb67c..fdfdf2b65c 100644\n> --- a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-swscanf.c\n> +++ b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-swscanf.c\n> @@ -34,7 +34,7 @@ ___ieee128_swscanf (const wchar_t *string, const wchar_t *format, ...)\n>    done = __vfwscanf_internal (fp, format, ap,\n>  \t\t\t      SCANF_LDBL_USES_FLOAT128);\n>    va_end (ap);\n> -\n> +  _IO_wstrfile_fclose_stack (fp);\n>    return done;\n>  }\n>  strong_alias (___ieee128_swscanf, __swscanfieee128)\n> diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vswscanf.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vswscanf.c\n> index 8294582c48..b860a8e87d 100644\n> --- a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vswscanf.c\n> +++ b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vswscanf.c\n> @@ -27,6 +27,8 @@ ___ieee128_vswscanf (const wchar_t *string, const wchar_t *format,\n>    _IO_strfile sf;\n>    struct _IO_wide_data wd;\n>    FILE *fp = _IO_strfile_readw (&sf, &wd, string);\n> -  return __vfwscanf_internal (fp, format, ap, SCANF_LDBL_USES_FLOAT128);\n> +  int done = __vfwscanf_internal (fp, format, ap, SCANF_LDBL_USES_FLOAT128);\n> +  _IO_wstrfile_fclose_stack (fp);\n> +  return done;\n>  }\n>  strong_alias (___ieee128_vswscanf, __vswscanfieee128)\n> diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-compat.c b/sysdeps/ieee754/ldbl-opt/nldbl-compat.c\n> index dcd5649200..e239cd5bc5 100644\n> --- a/sysdeps/ieee754/ldbl-opt/nldbl-compat.c\n> +++ b/sysdeps/ieee754/ldbl-opt/nldbl-compat.c\n> @@ -391,7 +391,9 @@ __nldbl_vswscanf (const wchar_t *s, const wchar_t *fmt, va_list ap)\n>    struct _IO_wide_data wd;\n>    FILE *f = _IO_strfile_readw (&sf, &wd, s);\n>  \n> -  return __vfwscanf_internal (f, fmt, ap, SCANF_LDBL_IS_DBL);\n> +  int ret = __vfwscanf_internal (f, fmt, ap, SCANF_LDBL_IS_DBL);\n> +  _IO_wstrfile_fclose_stack (f);\n> +  return ret;\n>  }\n>  libc_hidden_def (__nldbl_vswscanf)\n>  \n> @@ -955,7 +957,9 @@ __nldbl___isoc99_vswscanf (const wchar_t *s, const wchar_t *fmt, va_list ap)\n>    struct _IO_wide_data wd;\n>    FILE *f = _IO_strfile_readw (&sf, &wd, s);\n>  \n> -  return __vfwscanf_internal (f, fmt, ap, SCANF_LDBL_IS_DBL | SCANF_ISOC99_A);\n> +  int ret = __vfwscanf_internal (f, fmt, ap, SCANF_LDBL_IS_DBL | SCANF_ISOC99_A);\n> +  _IO_wstrfile_fclose_stack (f);\n> +  return ret;\n>  }\n>  libc_hidden_def (__nldbl___isoc99_vswscanf)\n>  \n> @@ -1115,9 +1119,11 @@ __nldbl___isoc23_vswscanf (const wchar_t *s, const wchar_t *fmt, va_list ap)\n>    struct _IO_wide_data wd;\n>    FILE *f = _IO_strfile_readw (&sf, &wd, s);\n>  \n> -  return __vfwscanf_internal (f, fmt, ap,\n> +  int ret = __vfwscanf_internal (f, fmt, ap,\n>  \t\t\t      SCANF_LDBL_IS_DBL | SCANF_ISOC99_A\n>  \t\t\t      | SCANF_ISOC23_BIN_CST);\n> +  _IO_wstrfile_fclose_stack (f);\n> +  return ret;\n>  }\n>  libc_hidden_def (__nldbl___isoc23_vswscanf)\n>  \n> diff --git a/wcsmbs/isoc23_swscanf.c b/wcsmbs/isoc23_swscanf.c\n> index 66b5290b3c..568ab138b4 100644\n> --- a/wcsmbs/isoc23_swscanf.c\n> +++ b/wcsmbs/isoc23_swscanf.c\n> @@ -33,6 +33,6 @@ __isoc23_swscanf (const wchar_t *s, const wchar_t *format, ...)\n>    done = __vfwscanf_internal (f, format, arg,\n>  \t\t\t      SCANF_ISOC99_A | SCANF_ISOC23_BIN_CST);\n>    va_end (arg);\n> -\n> +  _IO_wstrfile_fclose_stack (f);\n>    return done;\n>  }\n> diff --git a/wcsmbs/isoc23_vswscanf.c b/wcsmbs/isoc23_vswscanf.c\n> index d84efb9350..89b7241a7a 100644\n> --- a/wcsmbs/isoc23_vswscanf.c\n> +++ b/wcsmbs/isoc23_vswscanf.c\n> @@ -24,7 +24,9 @@ __isoc23_vswscanf (const wchar_t *string, const wchar_t *format, va_list args)\n>    _IO_strfile sf;\n>    struct _IO_wide_data wd;\n>    FILE *f = _IO_strfile_readw (&sf, &wd, string);\n> -  return __vfwscanf_internal (f, format, args,\n> +  int done = __vfwscanf_internal (f, format, args,\n>  \t\t\t      SCANF_ISOC99_A | SCANF_ISOC23_BIN_CST);\n> +  _IO_wstrfile_fclose_stack (f);\n> +  return done;\n>  }\n>  libc_hidden_def (__isoc23_vswscanf)\n> diff --git a/wcsmbs/isoc99_swscanf.c b/wcsmbs/isoc99_swscanf.c\n> index 493fe01520..c94f19ca41 100644\n> --- a/wcsmbs/isoc99_swscanf.c\n> +++ b/wcsmbs/isoc99_swscanf.c\n> @@ -32,6 +32,6 @@ __isoc99_swscanf (const wchar_t *s, const wchar_t *format, ...)\n>    va_start (arg, format);\n>    done = __vfwscanf_internal (f, format, arg, SCANF_ISOC99_A);\n>    va_end (arg);\n> -\n> +  _IO_wstrfile_fclose_stack (f);\n>    return done;\n>  }\n> diff --git a/wcsmbs/isoc99_vswscanf.c b/wcsmbs/isoc99_vswscanf.c\n> index 326f7bfd24..6bc134a807 100644\n> --- a/wcsmbs/isoc99_vswscanf.c\n> +++ b/wcsmbs/isoc99_vswscanf.c\n> @@ -33,6 +33,8 @@ __isoc99_vswscanf (const wchar_t *string, const wchar_t *format, va_list args)\n>    _IO_strfile sf;\n>    struct _IO_wide_data wd;\n>    FILE *f = _IO_strfile_readw (&sf, &wd, string);\n> -  return __vfwscanf_internal (f, format, args, SCANF_ISOC99_A);\n> +  int done = __vfwscanf_internal (f, format, args, SCANF_ISOC99_A);\n> +  _IO_wstrfile_fclose_stack (f);\n> +  return done;\n>  }\n>  libc_hidden_def (__isoc99_vswscanf)","headers":{"Return-Path":"<libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org>","X-Original-To":["incoming@patchwork.ozlabs.org","libc-alpha@sourceware.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","libc-alpha@sourceware.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256\n header.s=google header.b=hL77KAaE;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=sourceware.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (2048-bit key,\n unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256\n header.s=google header.b=hL77KAaE","sourceware.org;\n dmarc=pass (p=none dis=none) header.from=linaro.org","sourceware.org; spf=pass smtp.mailfrom=linaro.org","server2.sourceware.org;\n arc=none smtp.remote-ip=2607:f8b0:4864:20::122a"],"Received":["from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g632m4cJVz1yHv\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 01 May 2026 04:43:07 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 941D04310D6E\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 30 Apr 2026 18:43:05 +0000 (GMT)","from mail-dl1-x122a.google.com (mail-dl1-x122a.google.com\n [IPv6:2607:f8b0:4864:20::122a])\n by sourceware.org (Postfix) with ESMTPS id F16054371D7E\n for <libc-alpha@sourceware.org>; Thu, 30 Apr 2026 18:42:43 +0000 (GMT)","by mail-dl1-x122a.google.com with SMTP id\n a92af1059eb24-12c8ccc7755so1957580c88.0\n for <libc-alpha@sourceware.org>; Thu, 30 Apr 2026 11:42:43 -0700 (PDT)","from ?IPV6:2804:1b3:a7c0:44cb:1515:6c52:b4a9:e795?\n ([2804:1b3:a7c0:44cb:1515:6c52:b4a9:e795])\n by smtp.gmail.com with ESMTPSA id\n a92af1059eb24-12de320f2a7sm10094825c88.1.2026.04.30.11.42.38\n (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n Thu, 30 Apr 2026 11:42:40 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 941D04310D6E","OpenDKIM Filter v2.11.0 sourceware.org F16054371D7E"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org F16054371D7E","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org F16054371D7E","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1777574564; cv=none;\n b=KBjJtCTu0F2AThYCgHzP8AHVEVTdrAnDlLt3srJzHcb9Eqkx2LXbpsxOE9X/a2dEtvDBCbQHnHl69v/DkQmTvoNMWs7LHL0KXThO3hUUcWvb5RRllnZL1/e/JXyK0JA7KWn4LVdNSghNHbyiFjX0oCwXAw1OyzPjNBlnCpfshDo=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1777574564; c=relaxed/simple;\n bh=EnAjF5Ev2QfO/+9RHy7bBK4f08qVT42EzP9pZNZysQ0=;\n h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From;\n b=Oa8U6A8bGfi5gnTMVTBnwzg5S5axsMDa3vqz+mT3usxwjRp8VK6RwKxS12uvHKEYbUadTR08jSgHEj6oOVEckWqk2jhgZaCfiUqrRFKNJXSLUxshdlrjS8mTQJwYIqMRNdXWz+9cBbsntlCMuH+wqFpCYsi5g54i+uevPGBY9W0=","ARC-Authentication-Results":"i=1; server2.sourceware.org","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=linaro.org; s=google; t=1777574562; x=1778179362; darn=sourceware.org;\n h=content-transfer-encoding:in-reply-to:organization:from\n :content-language:references:to:subject:user-agent:mime-version:date\n :message-id:from:to:cc:subject:date:message-id:reply-to;\n bh=pzD2pojqwoQl9Ivmyjcp/ZtjXi+hoDJKDBIwRkQN1EE=;\n b=hL77KAaEjiDol6SSZwqNUR/RjoBCBMfDh7jcbEuLEIEWVbXUq+4v5Y5YxfW5GxcFK1\n NoLy/+sbK0SRcGM+Xr6fI5vvNumLS4+44ymCCnkUtYjm58Y374LTnxvSRtM6/Yk8EEvR\n 8eprI4WaJ6TijOruqXhTlO4TJxPpYKGCj6udHF3542I/UD13NuXT24K9u6Ftp0YT+9W1\n c/Hy1OfTwFchXYg8mPzZ18+RtTJBHcbVBcWNEV8Q7iOYD1QJ6toOUNl1yWIcH7NFkhaX\n pGX63u4jttAW6BHJ6K3HL9XP3BKZ2q+5B0spe++lbOpK33rWcybAFpCyhqoN35Uvu6Pe\n ct/A==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1777574562; x=1778179362;\n h=content-transfer-encoding:in-reply-to:organization:from\n :content-language:references:to:subject:user-agent:mime-version:date\n :message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n :message-id:reply-to;\n bh=pzD2pojqwoQl9Ivmyjcp/ZtjXi+hoDJKDBIwRkQN1EE=;\n b=Z2VEtvDGa1wJQyFZVjZRTKY5SlLe97zbsUh/zM+Z+uefoh0iadTg6+drrH5xw1CIog\n uYqm6yEd/f9dCo30+hJgVLDGK4KBDRWdS6x/fZbv6mWqsEX5a3iRCF3921kKJZp+Pdg+\n O0NQ9d2R2rmtBr1j/rOBSYdTzmOWM9gLsS1ihpeqcpBxUQ7tw8jwYAMLSnvEIB6gOnDu\n G7KxHZunhs2gaB23CDHTIBuglFbytjcoCDx30z9F7Zb78wZscj6Wnof0TEMUEunbEIyl\n vWu6MOPuSvAzA1mu6cZ4cA+rJq1BI6q4WiTJp2+YoK2bHS7t7AQpZaKSi6dLVfawtcNr\n wf/g==","X-Forwarded-Encrypted":"i=1;\n AFNElJ91L2VXTVFHIs9eWJv7uT3UnLVSXw1crmXUisJTLU8y4ONzvi3hfvexTCfSrwQX1wH2XMLmMvKsDQKm@sourceware.org","X-Gm-Message-State":"AOJu0YzGKfLaPh6CzngRWbXV6vKIFw4EBoO8zbkCOxEo5FlC7yZnYMw3\n 6Be6lf3AgmzhSfsvfaoJ/xjkmBClrjyMh8GbvJB7eQtP/uMfKY2hhNX8AS8NKlo1xlhfjviGxHM\n rbulU","X-Gm-Gg":"AeBDietPXgbCLteHkH8B5fivxOOF0G4tTqBTFM2QkdKnV+kb0NVzraBrqGfASMknxjG\n bxrRby4aULU1CNgXldDU8C3/0ZX5TK+StGyNRq4WgWndPAOIfrwyfJ2FBa63TZHa8IzYB0j3AJ9\n 4WQdesIU0hJM9J6iyzofOY6aGLmAgEH5egzW2XQr9QWzoWKD6sXcr9uGSwWF3rKaIGSm2GNcVaI\n gueN4XBFTkUZd1ZeLoEiDgzpti3f7A4AnQrVqk378Ke8IBaRTRX9aqgu0h8hQTGrRhkmTqiO+AE\n ZT1MfqGbpiySPtfG6GCLCVEuDM+0ysTTjDZSEGYV57yOL8QU0aB4q3+Bjp2iecP5rECXsnU+Jtg\n QipC3fYDnAA74I7+DQ0vEUwrnh97eJO62Nj46pOWgcvbkBv1MkDjL6ZvPdaiTPn+Ci0e56niq5a\n l6TW3dpY7DiIHzQGeYavVYjvIcdSCAGXi3BhFgzMuPf63yAUwpLnAIP1+PDTc8uC8iRVBL3eYrQ\n jG8H1v1zXvYO+CKLO9TRJedG8To8wVg4CXiMzTQxLfJwAUjeAPCbOY=","X-Received":"by 2002:a05:7022:6289:b0:128:d23d:81a2 with SMTP id\n a92af1059eb24-12dead1abfemr2293677c88.29.1777574562055;\n Thu, 30 Apr 2026 11:42:42 -0700 (PDT)","Message-ID":"<f8b9b744-13ba-4eaf-a639-ce2f81ee0c76@linaro.org>","Date":"Thu, 30 Apr 2026 15:42:36 -0300","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH 1/2] libio: Fix gconv module reference counter overflow in\n swscanf","To":"=?utf-8?b?RnLDqWTDqXJpYyBCw6lyYXQ=?= <fberat@redhat.com>,\n libc-alpha@sourceware.org, dj@redhat.com, fweimer@redhat.com","References":"<20260429145934.278803-1-fberat@redhat.com>\n <20260429145934.278803-2-fberat@redhat.com>","Content-Language":"en-US","From":"Adhemerval Zanella Netto <adhemerval.zanella@linaro.org>","Organization":"Linaro","In-Reply-To":"<20260429145934.278803-2-fberat@redhat.com>","Content-Type":"text/plain; charset=UTF-8","Content-Transfer-Encoding":"8bit","X-BeenThere":"libc-alpha@sourceware.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Libc-alpha mailing list <libc-alpha.sourceware.org>","List-Unsubscribe":"<https://sourceware.org/mailman/options/libc-alpha>,\n <mailto:libc-alpha-request@sourceware.org?subject=unsubscribe>","List-Archive":"<https://sourceware.org/pipermail/libc-alpha/>","List-Post":"<mailto:libc-alpha@sourceware.org>","List-Help":"<mailto:libc-alpha-request@sourceware.org?subject=help>","List-Subscribe":"<https://sourceware.org/mailman/listinfo/libc-alpha>,\n <mailto:libc-alpha-request@sourceware.org?subject=subscribe>","Errors-To":"libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org"}}]