os_getcwd(): do not realloc if there was no malloc(). exim-4_89_RC5
authorHeiko Schlittermann (HS12-RIPE) <hs@schlittermann.de>
Sun, 12 Feb 2017 21:50:18 +0000 (16:50 -0500)
committerPhil Pennock <pdp@exim.org>
Sun, 12 Feb 2017 21:50:18 +0000 (16:50 -0500)
(cherry picked from commit 4a5ee04fd186cb7d86a4f70821dacc55f8cce98d)
(changelog added)
Signed-off-by: Phil Pennock <pdp@exim.org>
doc/doc-txt/ChangeLog
src/src/os.c

index 0af5504e35a9fd8a0f6868b440f4fbf8673e0c1d..39e17b3509fc485bed763936f61bde19fa919d96 100644 (file)
@@ -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
 -----------------
index 47af038f78216beaf73e6dcc1935dd28695dec21..ca24e8dd27e47d42df5140e55de39cd0a072c6d8 100644 (file)
@@ -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