+++ /dev/null
-From 9dc2b215e83a63efa242f6acd3ab7af8b608e5a1 Mon Sep 17 00:00:00 2001
-From: Jeremy Harris <jgh146exb@wizmail.org>
-Date: Mon, 11 Jan 2016 15:50:22 +0000
-Subject: [PATCH] Expansions: Fix crash in crypteq: On OpenBSD a bad second-arg
- results in an error-return from crypt(). Errorcheck that return.
-
----
- src/expand.c | 14 +++++++++++---
- 1 file changed, 11 insertions(+), 3 deletions(-)
-
-diff --git a/src/expand.c b/src/expand.c
-index f144a75..2966c22 100644
---- a/src/expand.c
-+++ b/src/expand.c
-@@ -2791,7 +2791,7 @@ switch(cond_type)
- #define XSTR(s) STR(s)
- DEBUG(D_auth) debug_printf("crypteq: using %s()\n"
- " subject=%s\n crypted=%s\n",
-- (which == 0)? XSTR(DEFAULT_CRYPT) : (which == 1)? "crypt" : "crypt16",
-+ which == 0 ? XSTR(DEFAULT_CRYPT) : which == 1 ? "crypt" : "crypt16",
- coded, sub[1]);
- #undef STR
- #undef XSTR
-@@ -2800,8 +2800,16 @@ switch(cond_type)
- salt), force failure. Otherwise we get false positives: with an empty
- string the yield of crypt() is an empty string! */
-
-- tempcond = (Ustrlen(sub[1]) < 2)? FALSE :
-- (Ustrcmp(coded, sub[1]) == 0);
-+ if (coded)
-+ tempcond = Ustrlen(sub[1]) < 2 ? FALSE : Ustrcmp(coded, sub[1]) == 0;
-+ else if (errno == EINVAL)
-+ tempcond = FALSE;
-+ else
-+ {
-+ expand_string_message = string_sprintf("crypt error: %s\n",
-+ US strerror(errno));
-+ return NULL;
-+ }
- }
- break;
- #endif /* SUPPORT_CRYPTEQ */
---
-2.8.0.rc3
-