mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-03-02 21:15:27 +08:00
Cygwin: mbrtowi: fix segfault when pwi is NULL
mbrtowi was missing null-checks on pwi, but NULL is passed from regex/engine.c:173. In a git repo with sendemail.smtpserver set, this results in a segfault when using git-send-email, which calls: git config --get-regexp '^sende?mail[.]' Fixes: 60c25da90d01 ("Cygwin: mbrtowi: define replacement for mbrtowc, returning UTF-32 value") Signed-off-by: David McFarland <corngood@gmail.com>
This commit is contained in:
parent
c743751aaf
commit
53f7fb20a0
@ -159,6 +159,7 @@ mbrtowi (wint_t *pwi, const char *s, size_t n, mbstate_t *ps)
|
|||||||
len = mbrtowc (&w1, s, n, ps);
|
len = mbrtowc (&w1, s, n, ps);
|
||||||
if (len == (size_t) -1 || len == (size_t) -2)
|
if (len == (size_t) -1 || len == (size_t) -2)
|
||||||
return len;
|
return len;
|
||||||
|
if (pwi)
|
||||||
*pwi = w1;
|
*pwi = w1;
|
||||||
/* Convert surrogate pair to wint_t value */
|
/* Convert surrogate pair to wint_t value */
|
||||||
if (len > 0 && w1 >= 0xd800 && w1 <= 0xdbff)
|
if (len > 0 && w1 >= 0xd800 && w1 <= 0xdbff)
|
||||||
@ -169,6 +170,7 @@ mbrtowi (wint_t *pwi, const char *s, size_t n, mbstate_t *ps)
|
|||||||
if (len2 > 0 && w2 >= 0xdc00 && w2 <= 0xdfff)
|
if (len2 > 0 && w2 >= 0xdc00 && w2 <= 0xdfff)
|
||||||
{
|
{
|
||||||
len += len2;
|
len += len2;
|
||||||
|
if (pwi)
|
||||||
*pwi = (((w1 & 0x3ff) << 10) | (w2 & 0x3ff)) + 0x10000;
|
*pwi = (((w1 & 0x3ff) << 10) | (w2 & 0x3ff)) + 0x10000;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
Loading…
x
Reference in New Issue
Block a user