aboutsummaryrefslogtreecommitdiff
path: root/src/agent.c
diff options
context:
space:
mode:
authorAndreas Schneider <asn@cryptomilk.org>2015-10-14 20:45:49 +0200
committerAndreas Schneider <asn@cryptomilk.org>2015-10-20 17:16:38 +0200
commit21bf499bb4fbb4127f74966a6ea66ba282ee1cf5 (patch)
tree4eab0d43fae3c8646913fe3f93925c35ff9752fb /src/agent.c
parent8ec46cbd42c2af7b7e1a06e3b3087e97526b558e (diff)
downloadlibssh-21bf499bb4fbb4127f74966a6ea66ba282ee1cf5.tar.gz
libssh-21bf499bb4fbb4127f74966a6ea66ba282ee1cf5.tar.xz
libssh-21bf499bb4fbb4127f74966a6ea66ba282ee1cf5.zip
agent: Fix agent auth on big endian machines
BUG: https://red.libssh.org/issues/204 Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
Diffstat (limited to 'src/agent.c')
-rw-r--r--src/agent.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/agent.c b/src/agent.c
index 922d7530..e520773b 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;
}