[libcxx-commits] [libcxx] faa019c - [libc++] Fix segmentation fault in __do_put_integral
via libcxx-commits
libcxx-commits at lists.llvm.org
Wed Nov 10 12:26:46 PST 2021
Author: MarcoFalke
Date: 2021-11-10T21:26:05+01:00
New Revision: faa019c0e38e8cb33d7e7fee92aa548bd052939e
URL: https://github.com/llvm/llvm-project/commit/faa019c0e38e8cb33d7e7fee92aa548bd052939e
DIFF: https://github.com/llvm/llvm-project/commit/faa019c0e38e8cb33d7e7fee92aa548bd052939e.diff
LOG: [libc++] Fix segmentation fault in __do_put_integral
6 chars are not sufficient to represent all formats for 64 bit integers.
This was accidentally introduced in commit b889cbf36635a302f5b77560f1769178f196c2c7 (https://reviews.llvm.org/D112830).
This causes failures in downstream projects, for example:
* https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40817
* https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40841
Differential Revision: https://reviews.llvm.org/D113600
Added:
Modified:
libcxx/include/locale
Removed:
################################################################################
diff --git a/libcxx/include/locale b/libcxx/include/locale
index 478ca1ea06c08..0397caf92b59d 100644
--- a/libcxx/include/locale
+++ b/libcxx/include/locale
@@ -1476,7 +1476,7 @@ num_put<_CharT, _OutputIterator>::__do_put_integral(iter_type __s, ios_base& __i
char const* __len) const
{
// Stage 1 - Get number in narrow char
- char __fmt[6] = {'%', 0};
+ char __fmt[8] = {'%', 0};
this->__format_int(__fmt+1, __len, is_signed<_Integral>::value, __iob.flags());
// Worst case is octal, with showbase enabled. Note that octal is always
// printed as an unsigned value.
More information about the libcxx-commits
mailing list