[BZ,#17596] mblen return code when n is zero

Message ID 5465A7FC.4080701@linux.vnet.ibm.com
State Committed
Headers

Commit Message

Rajalakshmi S Nov. 14, 2014, 6:58 a.m. UTC
  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.
  

Comments

Paul Eggert Nov. 14, 2014, 7:45 p.m. UTC | #1
On 11/13/2014 10:58 PM, Rajalakshmi Srinivasaraghavan wrote:
> This patch adds a check to return -2 when n is zero in mblen(),
> mbrlen(),mbrtowc() and mbrtoc16().

mblen should return -1 in this case, right?  I don't see where it's 
allowed to return -2.  Likewise for mbtowc.
  
Andreas Schwab Nov. 14, 2014, 8:59 p.m. UTC | #2
Paul Eggert <eggert@cs.ucla.edu> writes:

> mblen should return -1 in this case, right?  I don't see where it's
> allowed to return -2.  Likewise for mbtowc.

Both handle that already.

Andreas.
  
Ondrej Bilka Nov. 27, 2014, 5:06 p.m. UTC | #3
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
>
  
Mike Frysinger March 6, 2015, 10:36 a.m. UTC | #4
On 27 Nov 2014 18:06, Ondřej Bílka wrote:
> Andreas, do you have more comments or could you commit it as it looks as
> correct fix?

lets push it
-mike
  
Ondrej Bilka April 3, 2015, 1:49 p.m. UTC | #5
On Fri, Mar 06, 2015 at 05:36:46AM -0500, Mike Frysinger wrote:
> On 27 Nov 2014 18:06, Ondřej Bílka wrote:
> > Andreas, do you have more comments or could you commit it as it looks as
> > correct fix?
> 
> lets push it
> -mike

Done.
  

Patch

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