2009-03-02 Jeff Johnston <jjohnstn@redhat.com>
* libc/stdlib/wctomb_r.c (_wctomb_r): When checking single-byte charset, cast wchar to size_t in case wchar_t is signed. * libc/stdlib/wctomb.c (wctomb): Add similar single-byte check.
This commit is contained in:
parent
49b09e5afa
commit
95d85fcb1a
|
@ -1,3 +1,9 @@
|
|||
2009-03-02 Jeff Johnston <jjohnstn@redhat.com>
|
||||
|
||||
* libc/stdlib/wctomb_r.c (_wctomb_r): When checking single-byte
|
||||
charset, cast wchar to size_t in case wchar_t is signed.
|
||||
* libc/stdlib/wctomb.c (wctomb): Add similar single-byte check.
|
||||
|
||||
2009-03-02 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* libc/stdlib/wctomb_r.c (_wctomb_r): Return EILSEQ in case of an
|
||||
|
|
|
@ -48,6 +48,7 @@ effects vary with the locale.
|
|||
|
||||
#include <newlib.h>
|
||||
#include <stdlib.h>
|
||||
#include <errno.h>
|
||||
|
||||
int
|
||||
_DEFUN (wctomb, (s, wchar),
|
||||
|
@ -62,6 +63,12 @@ _DEFUN (wctomb, (s, wchar),
|
|||
if (s == NULL)
|
||||
return 0;
|
||||
|
||||
/* Verify that wchar is a valid single-byte character. */
|
||||
if ((size_t)wchar >= 0x100) {
|
||||
errno = EILSEQ;
|
||||
return -1;
|
||||
}
|
||||
|
||||
*s = (char) wchar;
|
||||
return 1;
|
||||
#endif /* not _MB_CAPABLE */
|
||||
|
|
|
@ -207,7 +207,7 @@ _DEFUN (_wctomb_r, (r, s, wchar, state),
|
|||
return 0;
|
||||
|
||||
/* otherwise we are dealing with a single byte character */
|
||||
if (wchar >= 0x100)
|
||||
if ((size_t)wchar >= 0x100)
|
||||
{
|
||||
r->_errno = EILSEQ;
|
||||
return -1;
|
||||
|
|
Loading…
Reference in New Issue