From: Jeremy Harris Date: Mon, 28 Jun 2021 18:49:00 +0000 (+0100) Subject: Readonly-config: not supported by Solaris 10 X-Git-Tag: exim-4.95-RC0~8 X-Git-Url: https://git.exim.org/exim.git/commitdiff_plain/a57492a480bce6d41dec5255d4a55550aa9d4f87?ds=sidebyside Readonly-config: not supported by Solaris 10 Broken-by: 753739fdef --- 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;