components/openssh/patches/038-print_libcrypto_errors.patch
author Tomas Kuthan <tomas.kuthan@oracle.com>
Wed, 20 Apr 2016 13:13:57 -0700
changeset 5821 7c212462920b
parent 5310 a06a01eef195
permissions -rw-r--r--
PSARC/2016/216 OpenSSH 7.2p2 upgrade. Host keys and moduli updates 23046459 Generate moduli file for OpenSSH

#
# Return OpenSSL error messages in ssherr() for SSH_ERR_LIBCRYPTO_ERROR.
#
# After code refactoring for library-like interfaces,OpenSSL error string
# were replaced by generic and vague "error in libcrypto" message.
#
# This patch returns OpenSSL error strings for SSH_ERR_LIBCRYPTO_ERROR errors.
#
# Patch submitted upstream:
# https://bugzilla.mindrot.org/show_bug.cgi?id=2508
#
diff -pur old/ssherr.c new/ssherr.c
--- old/ssherr.c
+++ new/ssherr.c
@@ -17,11 +17,13 @@
 
 #include <errno.h>
 #include <string.h>
+#include <openssl/err.h>
 #include "ssherr.h"
 
 const char *
 ssh_err(int n)
 {
+	static char err_str[256];
 	switch (n) {
 	case SSH_ERR_SUCCESS:
 		return "success";
@@ -68,7 +70,8 @@ ssh_err(int n)
 	case SSH_ERR_SIGNATURE_INVALID:
 		return "incorrect signature";
 	case SSH_ERR_LIBCRYPTO_ERROR:
-		return "error in libcrypto";  /* XXX fetch and return */
+		ERR_error_string_n(ERR_get_error(), err_str, sizeof (err_str));
+		return err_str;
 	case SSH_ERR_UNEXPECTED_TRAILING_DATA:
 		return "unexpected bytes remain after decoding";
 	case SSH_ERR_SYSTEM_ERROR: