From 312a85ce01d007900f4093675643c3bde4297bac Mon Sep 17 00:00:00 2001 From: kai Date: Sun, 24 Mar 2013 19:42:18 +0100 Subject: [PATCH] Fix a buffer overrun on Linux/PPC64. The buffer in realToMangleBuffer() is too small for a longdouble. --- dmd2/expression.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/dmd2/expression.c b/dmd2/expression.c index 827b916b..f89a44fb 100644 --- a/dmd2/expression.c +++ b/dmd2/expression.c @@ -2640,7 +2640,12 @@ void realToMangleBuffer(OutBuffer *buf, real_t value) buf->writestring("NAN"); // no -NAN bugs else { +#if IN_LLVM + // The buffer is too small for a longdouble on PPC. + char buffer[36]; +#else char buffer[32]; +#endif int n = ld_sprint(buffer, 'A', value); assert(n > 0 && n < sizeof(buffer)); for (int i = 0; i < n; i++)