Browse Source

fix an overflow in wcsxfrm when n==0

posix allows zero length destination
rs-1.0
Szabolcs Nagy 12 years ago
parent
commit
f1471d3216
  1. 6
      src/locale/wcsxfrm.c

6
src/locale/wcsxfrm.c

@ -6,10 +6,12 @@
size_t __wcsxfrm_l(wchar_t *restrict dest, const wchar_t *restrict src, size_t n, locale_t loc) size_t __wcsxfrm_l(wchar_t *restrict dest, const wchar_t *restrict src, size_t n, locale_t loc)
{ {
size_t l = wcslen(src); size_t l = wcslen(src);
if (l >= n) { if (l < n) {
wmemcpy(dest, src, l+1);
} else if (n) {
wmemcpy(dest, src, n-1); wmemcpy(dest, src, n-1);
dest[n-1] = 0; dest[n-1] = 0;
} else wcscpy(dest, src); }
return l; return l;
} }

Loading…
Cancel
Save