From: Vsevolod Stakhov Date: Sun, 15 Jan 2017 17:38:25 +0000 (+0000) Subject: [Minor] Check mmap return code X-Git-Tag: 1.5.0~342 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=6ffffe0d5f155aa5d212df92d97c62e2de71baa3;p=rspamd.git [Minor] Check mmap return code --- diff --git a/src/controller.c b/src/controller.c index 78445c606..25eb54db8 100644 --- a/src/controller.c +++ b/src/controller.c @@ -345,13 +345,24 @@ rspamd_check_encrypted_password (struct rspamd_controller_worker_ctx *ctx, if (cache->len == 0) { /* Mmap region */ +#ifdef MAP_NOCORE + m = mmap (NULL, password->len, PROT_WRITE, + MAP_PRIVATE | MAP_ANON | MAP_NOCORE, -1, 0); +#else m = mmap (NULL, password->len, PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0); - memcpy (m, password->begin, password->len); - (void)mprotect (m, password->len, PROT_READ); - (void)mlock (m, password->len); - cache->begin = m; - cache->len = password->len; +#endif + if (m != MAP_FAILED) { + memcpy (m, password->begin, password->len); + (void)mprotect (m, password->len, PROT_READ); + (void)mlock (m, password->len); + cache->begin = m; + cache->len = password->len; + } + else { + msg_err_ctx ("cannot store cached password, mmap failed: %s", + strerror (errno)); + } } }