parent
							
								
									5e7e599baf
								
							
						
					
					
						commit
						88ab622f54
					
				
							
								
								
									
										105
									
								
								libssh-0.7.2-fix_agent_bigendian.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										105
									
								
								libssh-0.7.2-fix_agent_bigendian.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,105 @@ | ||||
| From 0425ac9ad0f8f1cefa12b448d31a400ced3e89b9 Mon Sep 17 00:00:00 2001 | ||||
| From: Andreas Schneider <asn@cryptomilk.org> | ||||
| Date: Wed, 14 Oct 2015 20:45:49 +0200 | ||||
| Subject: [PATCH] agent: Fix agent auth on big endian machines | ||||
| 
 | ||||
| BUG: https://red.libssh.org/issues/204 | ||||
| 
 | ||||
| Signed-off-by: Andreas Schneider <asn@cryptomilk.org> | ||||
| ---
 | ||||
|  ConfigureChecks.cmake |  1 + | ||||
|  include/libssh/priv.h | 10 ++++++++++ | ||||
|  src/agent.c           | 17 +++++++++++++---- | ||||
|  3 files changed, 24 insertions(+), 4 deletions(-) | ||||
| 
 | ||||
| diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake
 | ||||
| index c0326c2..3587b07 100644
 | ||||
| --- a/ConfigureChecks.cmake
 | ||||
| +++ b/ConfigureChecks.cmake
 | ||||
| @@ -56,6 +56,7 @@ check_include_file(libutil.h HAVE_LIBUTIL_H)
 | ||||
|  check_include_file(sys/time.h HAVE_SYS_TIME_H) | ||||
|  check_include_file(sys/param.h HAVE_SYS_PARAM_H) | ||||
|  check_include_file(arpa/inet.h HAVE_ARPA_INET_H) | ||||
| +check_include_file(byteswap.h HAVE_BYTESWAP_H)
 | ||||
|   | ||||
|  if (WIN32) | ||||
|    check_include_files("winsock2.h;ws2tcpip.h;wspiapi.h" HAVE_WSPIAPI_H) | ||||
| diff --git a/include/libssh/priv.h b/include/libssh/priv.h
 | ||||
| index 95a22c6..b7a80fe 100644
 | ||||
| --- a/include/libssh/priv.h
 | ||||
| +++ b/include/libssh/priv.h
 | ||||
| @@ -43,6 +43,16 @@
 | ||||
|  # endif | ||||
|  #endif /* !defined(HAVE_STRTOULL) */ | ||||
|   | ||||
| +#ifdef HAVE_BYTESWAP_H
 | ||||
| +#include <byteswap.h>
 | ||||
| +#endif
 | ||||
| +
 | ||||
| +#ifndef bswap_32
 | ||||
| +#define bswap_32(x) \
 | ||||
| +    ((((x) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >>  8) | \
 | ||||
| +     (((x) & 0x0000ff00) <<  8) | (((x) & 0x000000ff) << 24))
 | ||||
| +#endif
 | ||||
| +
 | ||||
|  #ifdef _WIN32 | ||||
|   | ||||
|  /* Imitate define of inttypes.h */ | ||||
| diff --git a/src/agent.c b/src/agent.c
 | ||||
| index 922d753..e520773 100644
 | ||||
| --- a/src/agent.c
 | ||||
| +++ b/src/agent.c
 | ||||
| @@ -382,6 +382,9 @@ int ssh_agent_get_ident_count(struct ssh_session_struct *session) {
 | ||||
|      ssh_buffer_free(reply); | ||||
|      return -1; | ||||
|    } | ||||
| +#ifdef WORDS_BIGENDIAN
 | ||||
| +  type = bswap_32(type);
 | ||||
| +#endif
 | ||||
|   | ||||
|    SSH_LOG(SSH_LOG_WARN, | ||||
|        "Answer type: %d, expected answer: %d", | ||||
| @@ -392,7 +395,7 @@ int ssh_agent_get_ident_count(struct ssh_session_struct *session) {
 | ||||
|        return 0; | ||||
|    } else if (type != c2) { | ||||
|        ssh_set_error(session, SSH_FATAL, | ||||
| -          "Bad authentication reply message type: %d", type);
 | ||||
| +          "Bad authentication reply message type: %u", type);
 | ||||
|        ssh_buffer_free(reply); | ||||
|        return -1; | ||||
|    } | ||||
| @@ -507,8 +510,8 @@ ssh_string ssh_agent_sign_data(ssh_session session,
 | ||||
|      ssh_buffer reply; | ||||
|      ssh_string key_blob; | ||||
|      ssh_string sig_blob; | ||||
| -    int type = SSH2_AGENT_FAILURE;
 | ||||
| -    int flags = 0;
 | ||||
| +    unsigned int type = 0;
 | ||||
| +    unsigned int flags = 0;
 | ||||
|      uint32_t dlen; | ||||
|      int rc; | ||||
|   | ||||
| @@ -572,13 +575,19 @@ ssh_string ssh_agent_sign_data(ssh_session session,
 | ||||
|          ssh_buffer_free(reply); | ||||
|          return NULL; | ||||
|      } | ||||
| +#ifdef WORDS_BIGENDIAN
 | ||||
| +    type = bswap_32(type);
 | ||||
| +#endif
 | ||||
|   | ||||
|      if (agent_failed(type)) { | ||||
|          SSH_LOG(SSH_LOG_WARN, "Agent reports failure in signing the key"); | ||||
|          ssh_buffer_free(reply); | ||||
|          return NULL; | ||||
|      } else if (type != SSH2_AGENT_SIGN_RESPONSE) { | ||||
| -        ssh_set_error(session, SSH_FATAL, "Bad authentication response: %d", type);
 | ||||
| +        ssh_set_error(session,
 | ||||
| +                      SSH_FATAL,
 | ||||
| +                      "Bad authentication response: %u",
 | ||||
| +                      type);
 | ||||
|          ssh_buffer_free(reply); | ||||
|          return NULL; | ||||
|      } | ||||
| -- 
 | ||||
| 2.5.0 | ||||
| 
 | ||||
| @ -1,6 +1,6 @@ | ||||
| Name:           libssh | ||||
| Version:        0.7.2 | ||||
| Release:        1%{?dist} | ||||
| Release:        2%{?dist} | ||||
| Summary:        A library implementing the SSH protocol | ||||
| License:        LGPLv2+ | ||||
| URL:            http://www.libssh.org | ||||
| @ -9,6 +9,8 @@ BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) | ||||
| 
 | ||||
| Source0:        https://red.libssh.org/attachments/download/177/libssh-0.7.2.tar.xz | ||||
| 
 | ||||
| Patch0:         libssh-0.7.2-fix_agent_bigendian.patch | ||||
| 
 | ||||
| BuildRequires:  cmake | ||||
| BuildRequires:  doxygen | ||||
| BuildRequires:  openssl-devel | ||||
| @ -37,6 +39,8 @@ applications that use %{name}. | ||||
| %prep | ||||
| %setup -q | ||||
| 
 | ||||
| %patch0 -p1 -b .libssh-0.7.2-fix_agent_bigendian.patch | ||||
| 
 | ||||
| # Remove examples, they are not packaged and do not build on EPEL 5 | ||||
| sed -i -e 's|add_subdirectory(examples)||g' CMakeLists.txt | ||||
| rm -rf examples | ||||
| @ -89,6 +93,9 @@ rm -rf %{buildroot} | ||||
| %{_libdir}/libssh_threads.so | ||||
| 
 | ||||
| %changelog | ||||
| * Thu Oct 22 2015 Andreas Schneider <asn@redhat.com> - 0.7.2-2 | ||||
| - resolves: #1271230 - Fix ssh-agent support on big endian | ||||
| 
 | ||||
| * Wed Sep 30 2015 Andreas Schneider <asn@redhat.com> - 0.7.2-1 | ||||
| - Update to version 0.7.2 | ||||
|   * Fixed OpenSSL detection on Windows | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user