diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8f24c4f..b5d5cb5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -52,12 +52,12 @@ if (WITH_GCRYPT)
   endif (NOT GCRYPT_FOUND)
 else (WITH_GCRYPT)
   find_package(OpenSSL)
-  if (NOT CRYPTO_FOUND)
+  if (NOT OPENSSL_FOUND)
     find_package(GCrypt)
     if (NOT GCRYPT_FOUND)
       message(FATAL_ERROR "Could not find OpenSSL or GCrypt")
     endif (NOT GCRYPT_FOUND)
-  endif (NOT CRYPTO_FOUND)
+  endif (NOT OPENSSL_FOUND)
 endif(WITH_GCRYPT)
 
 # config.h checks
diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake
index 07fb7bf..fc755fb 100644
--- a/ConfigureChecks.cmake
+++ b/ConfigureChecks.cmake
@@ -82,9 +82,9 @@ endif (UNIX)
 set(LIBSSH_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} CACHE INTERNAL "libssh required system libraries")
 
 # LIBRARIES
-if (CRYPTO_FOUND)
+if (OPENSSL_FOUND)
   set(HAVE_LIBCRYPTO 1)
-endif (CRYPTO_FOUND)
+endif (OPENSSL_FOUND)
 
 if (GCRYPT_FOUND)
   set(HAVE_LIBGCRYPT 1)
diff --git a/libssh/channels.c b/libssh/channels.c
index 7b13056..2d89acf 100644
--- a/libssh/channels.c
+++ b/libssh/channels.c
@@ -595,7 +595,7 @@ SSH_PACKET_CALLBACK(channel_rcv_request) {
 	if (strcmp(request, "exit-signal") == 0) {
 		const char *core = "(core dumped)";
 		ssh_string signal_s;
-		char *signal;
+		char *sig;
 		uint8_t i;
 
 		SAFE_FREE(request);
@@ -607,9 +607,9 @@ SSH_PACKET_CALLBACK(channel_rcv_request) {
 			return SSH_PACKET_USED;
 		}
 
-		signal = string_to_char(signal_s);
+		sig = string_to_char(signal_s);
 		string_free(signal_s);
-		if (signal == NULL) {
+		if (sig == NULL) {
 			leave_function();
 			return SSH_PACKET_USED;
 		}
@@ -620,8 +620,8 @@ SSH_PACKET_CALLBACK(channel_rcv_request) {
 		}
 
 		ssh_log(session, SSH_LOG_PACKET,
-				"Remote connection closed by signal SIG %s %s", signal, core);
-		SAFE_FREE(signal);
+				"Remote connection closed by signal SIG %s %s", sig, core);
+		SAFE_FREE(sig);
 
 		leave_function();
 		return SSH_PACKET_USED;
@@ -1899,20 +1899,20 @@ error:
 /**
  * @brief Send a signal to remote process (as described in RFC 4254, section 6.9).
  *
- * Sends a signal 'signal' to the remote process.
+ * Sends a signal 'sig' to the remote process.
  * Note, that remote system may not support signals concept.
  * In such a case this request will be silently ignored.
  * Only SSH-v2 is supported (I'm not sure about SSH-v1).
  *
  * @param[in]  channel  The channel to send signal.
  *
- * @param[in]  signal   The signal to send (without SIG prefix)
+ * @param[in]  sig      The signal to send (without SIG prefix)
  *                      (e.g. "TERM" or "KILL").
  *
  * @return              SSH_SUCCESS on success, SSH_ERROR if an error occured
  *                      (including attempts to send signal via SSH-v1 session).
  */
-int channel_request_send_signal(ssh_channel channel, const char *signal) {
+int channel_request_send_signal(ssh_channel channel, const char *sig) {
   ssh_buffer buffer = NULL;
   ssh_string encoded_signal = NULL;
   int rc = SSH_ERROR;
@@ -1928,7 +1928,7 @@ int channel_request_send_signal(ssh_channel channel, const char *signal) {
     goto error;
   }
 
-  encoded_signal = string_from_char(signal);
+  encoded_signal = string_from_char(sig);
   if (encoded_signal == NULL) {
     goto error;
   }
diff --git a/libssh/kex.c b/libssh/kex.c
index a599734..a411755 100644
--- a/libssh/kex.c
+++ b/libssh/kex.c
@@ -781,6 +781,7 @@ end:
    string_free(server_exp);
    string_free(serverkey);
    string_free(hostkey);
+   string_free(enc_session);
 
    publickey_free(srv);
    publickey_free(host);
diff --git a/libssh/packet.c b/libssh/packet.c
index 4003ed1..ad10b49 100644
--- a/libssh/packet.c
+++ b/libssh/packet.c
@@ -59,8 +59,12 @@ ssh_packet_callback default_packet_handlers[]= {
   ssh_packet_newkeys,                      // SSH2_MSG_NEWKEYS                    21
   NULL, NULL, NULL, NULL, NULL, NULL, NULL,
   NULL,                                    //                                     22-29
+#if WITH_SERVER
   ssh_packet_kexdh_init,                   // SSH2_MSG_KEXDH_INIT                 30
                                            // SSH2_MSG_KEX_DH_GEX_REQUEST_OLD     30
+#else
+  NULL,
+#endif
   ssh_packet_dh_reply,                     // SSH2_MSG_KEXDH_REPLY                31
                                            // SSH2_MSG_KEX_DH_GEX_GROUP           31
   NULL,                                    // SSH2_MSG_KEX_DH_GEX_INIT            32
diff --git a/libssh/session.c b/libssh/session.c
index ec127f5..1fe1f43 100644
--- a/libssh/session.c
+++ b/libssh/session.c
@@ -209,6 +209,9 @@ void ssh_free(ssh_session session) {
     ssh_list_free(session->ssh_message_list);
   }
 
+  if (session->packet_callbacks)
+    ssh_list_free(session->packet_callbacks);
+
   if (session->identity) {
     char *id;
 
diff --git a/tests/unittests/torture_options.c b/tests/unittests/torture_options.c
index 380896f..9bc84a0 100644
--- a/tests/unittests/torture_options.c
+++ b/tests/unittests/torture_options.c
@@ -70,6 +70,9 @@ START_TEST (torture_options_set_user)
 {
     int rc;
 #ifndef _WIN32
+#ifndef NSS_BUFLEN_PASSWD
+#define NSS_BUFLEN_PASSWD 4096
+#endif
     struct passwd pwd;
     struct passwd *pwdbuf;
     char buf[NSS_BUFLEN_PASSWD];
