From bb33d92ccb5a2aed3219a99e2fd3f3df48fb00de Mon Sep 17 00:00:00 2001 From: "Heiko Schlittermann (HS12-RIPE)" Date: Sun, 12 Feb 2017 16:50:18 -0500 Subject: [PATCH] os_getcwd(): do not realloc if there was no malloc(). (cherry picked from commit 4a5ee04fd186cb7d86a4f70821dacc55f8cce98d) (changelog added) Signed-off-by: Phil Pennock --- doc/doc-txt/ChangeLog | 5 ++++- src/src/os.c | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog index 0af5504e3..39e17b350 100644 --- a/doc/doc-txt/ChangeLog +++ b/doc/doc-txt/ChangeLog @@ -6,7 +6,7 @@ options, and new features, see the NewStuff file next to this ChangeLog. Exim version 4.89 -------------------- +----------------- JH/01 Bug 1922: Support IDNA2008. This has slightly different conversion rules than -2003 did; needs libidn2 in addition to libidn. @@ -99,6 +99,9 @@ PP/08 Reduce a number of compilation warnings under clang; building with JH/17 Fix inbound CHUNKING when DKIM disabled at runtime. +HS/01 Fix portability problems introduced by PP/08 for platforms where + realloc(NULL) is not equivalent to malloc() [SunOS et al]. + Exim version 4.88 ----------------- diff --git a/src/src/os.c b/src/src/os.c index 47af038f7..ca24e8dd2 100644 --- a/src/src/os.c +++ b/src/src/os.c @@ -879,7 +879,7 @@ char * b = (char *)buffer; if (!size) size = PATH_MAX; if (!b && !(b = malloc(size))) return NULL; if (!(b = getcwd(b, size))) return NULL; -return realloc(b, strlen(b) + 1); +return buffer ? buffer : realloc(b, strlen(b) + 1); } #endif -- 2.30.2