diff options
author | Andreas Schneider <asn@cryptomilk.org> | 2015-10-14 20:45:49 +0200 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2015-10-20 17:16:38 +0200 |
commit | 21bf499bb4fbb4127f74966a6ea66ba282ee1cf5 (patch) | |
tree | 4eab0d43fae3c8646913fe3f93925c35ff9752fb /src | |
parent | 8ec46cbd42c2af7b7e1a06e3b3087e97526b558e (diff) | |
download | libssh-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')
-rw-r--r-- | src/agent.c | 17 |
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; } |