summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/doc-txt/ChangeLog1
-rw-r--r--src/OS/os.h-SunOS54
-rw-r--r--src/src/store.c9
3 files changed, 9 insertions, 5 deletions
diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog
index 3311ae8f5..cc589c567 100644
--- a/doc/doc-txt/ChangeLog
+++ b/doc/doc-txt/ChangeLog
@@ -318,6 +318,7 @@ JH/55 TLS: as server, reject connections with ALPN indicating non-smtp use.
JH/56 Make the majority of info read from config files readonly, for defence-in-
depth against exploits. Suggestion by Qualsy.
+ Not supported on Solaris 10.
Exim version 4.94
diff --git a/src/OS/os.h-SunOS5 b/src/OS/os.h-SunOS5
index f5bc31668..1ceafa701 100644
--- a/src/OS/os.h-SunOS5
+++ b/src/OS/os.h-SunOS5
@@ -38,6 +38,10 @@ it seems. */
# define MISSING_UNSETENV_3
#endif
+#if _POSIX_C_SOURCE < 200809L
+# define MISSING_POSIX_MEMALIGN
+#endif
+
/* SunOS5 doesn't accept getcwd(NULL, 0) to auto-allocate
a buffer */
diff --git a/src/src/store.c b/src/src/store.c
index ad4da3c2e..e8819e3e3 100644
--- a/src/src/store.c
+++ b/src/src/store.c
@@ -255,14 +255,11 @@ log_write(0, LOG_MAIN|LOG_PANIC_DIE, "Taint mismatch, %s: %s %d\n",
void
store_writeprotect(int pool)
{
+#if !defined(COMPILE_UTILITY) && !defined(MISSING_POSIX_MEMALIGN)
for (storeblock * b = chainbase[pool]; b; b = b->next)
- {
-#ifndef COMPILE_UTILITY
if (mprotect(b, ALIGNED_SIZEOF_STOREBLOCK + b->length, PROT_READ) != 0)
- DEBUG(D_any) debug_printf("config block mprotect: (%d) %s\n", errno, strerror(errno))
+ DEBUG(D_any) debug_printf("config block mprotect: (%d) %s\n", errno, strerror(errno));
#endif
- ;
- }
}
/******************************************************************************/
@@ -346,12 +343,14 @@ if (size > yield_length[pool])
if (++nblocks[pool] > maxblocks[pool])
maxblocks[pool] = nblocks[pool];
+#ifndef MISSING_POSIX_MEMALIGN
if (pool == POOL_CONFIG)
{
long pgsize = sysconf(_SC_PAGESIZE);
posix_memalign((void **)&newblock, pgsize, (mlength + pgsize - 1) & ~(pgsize - 1));
}
else
+#endif
newblock = internal_store_malloc(mlength, func, linenumber);
newblock->next = NULL;
newblock->length = length;