This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PING][PATCH] [BZ #17596] mblen return code when n is zero
- From: OndÅej BÃlka <neleai at seznam dot cz>
- To: Rajalakshmi Srinivasaraghavan <raji at linux dot vnet dot ibm dot com>
- Cc: Paul Eggert <eggert at cs dot ucla dot edu>, Andreas Schwab <schwab at suse dot de>, libc-alpha at sourceware dot org
- Date: Thu, 27 Nov 2014 18:06:25 +0100
- Subject: Re: [PING][PATCH] [BZ #17596] mblen return code when n is zero
- Authentication-results: sourceware.org; auth=none
- References: <1415890908-50691-1-git-send-email-raji at linux dot vnet dot ibm dot com> <mvmk32z3y5l dot fsf at hawking dot suse dot de> <5464D746 dot 2030300 at cs dot ucla dot edu> <5465A7FC dot 4080701 at linux dot vnet dot ibm dot com>
Andreas, do you have more comments or could you commit it as it looks as
correct fix?
On Fri, Nov 14, 2014 at 12:28:04PM +0530, Rajalakshmi Srinivasaraghavan wrote:
>
> On 11/13/2014 09:37 PM, Paul Eggert wrote:
> >Andreas Schwab wrote:
> >>A non-existing character is valid, no?
> >
> >Yes, mbrtowc should return (size_t) -2 when given an empty input buffer.
> >
> Thanks for the comment.Attaching the patch changing the rc to -2.
>
> >From 959044f00cf11f3d46269ebca1a858a237d9ff4e Mon Sep 17 00:00:00 2001
> From: Rajalakshmi Srinivasaraghavan <raji@linux.vnet.ibm.com>
> Date: Fri, 14 Nov 2014 00:47:17 -0600
> Subject: [PATCH] [BZ #17596] mblen return code when n is zero
>
> This patch adds a check to return -2 when n is zero in mblen(),
> mbrlen(),mbrtowc() and mbrtoc16().
>
> [BZ #17596]
> * wcsmbs/mbrtowc.c (__mbrtowc): Add check for n=0.
> * wcsmbs/mbrtoc16.c (mbrtoc16): Likewise.
> ---
> NEWS | 2 +-
> wcsmbs/mbrtoc16.c | 2 ++
> wcsmbs/mbrtowc.c | 2 ++
> 3 files changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/NEWS b/NEWS
> index c582c8e..d8dc436 100644
> --- a/NEWS
> +++ b/NEWS
> @@ -34,7 +34,7 @@ Version 2.20
> 16966, 16967, 16977, 16978, 16984, 16990, 16996, 17009, 17022, 17031,
> 17042, 17048, 17050, 17058, 17061, 17062, 17069, 17075, 17078, 17079,
> 17084, 17086, 17088, 17092, 17097, 17125, 17135, 17137, 17150, 17153,
> - 17187, 17213, 17259, 17261, 17262, 17263, 17319, 17325, 17354.
> + 17187, 17213, 17259, 17261, 17262, 17263, 17319, 17325, 17354, 17596.
>
> * Optimized strchrnul implementation for AArch64. Contributed by ARM Ltd.
>
> diff --git a/wcsmbs/mbrtoc16.c b/wcsmbs/mbrtoc16.c
> index 69105ba..d2ad553 100644
> --- a/wcsmbs/mbrtoc16.c
> +++ b/wcsmbs/mbrtoc16.c
> @@ -77,6 +77,8 @@ mbrtoc16 (char16_t *pc16, const char *s, size_t n, mbstate_t *ps)
> n = 1;
> }
>
> + if (n == 0)
> + return (size_t) -2;
> /* Tell where we want the result. */
> data.__outbuf = outbuf;
> data.__outbufend = outbuf + sizeof (wchar_t);
> diff --git a/wcsmbs/mbrtowc.c b/wcsmbs/mbrtowc.c
> index 8070bd8..bfcb4b7 100644
> --- a/wcsmbs/mbrtowc.c
> +++ b/wcsmbs/mbrtowc.c
> @@ -59,6 +59,8 @@ __mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
> n = 1;
> }
>
> + if (n == 0)
> + return (size_t) -2;
> /* Tell where we want the result. */
> data.__outbuf = outbuf;
> data.__outbufend = outbuf + sizeof (wchar_t);
> --
> 1.8.3.1
>