summaryrefslogtreecommitdiffstats
path: root/include/libssh/string.h
diff options
context:
space:
mode:
authorJon Simons <jon@jonsimons.org>2014-01-21 23:36:08 -0800
committerAndreas Schneider <asn@cryptomilk.org>2014-01-23 11:17:13 +0100
commit7ff6b3537f43052db31a4cab6b900aa6b9c4559b (patch)
treece76d199a262a03bb7b965705e4ce75bc7adddac /include/libssh/string.h
parent368509f5d18ec801709935b4bf92d7ec99bf96d6 (diff)
downloadlibssh-7ff6b3537f43052db31a4cab6b900aa6b9c4559b.tar.gz
libssh-7ff6b3537f43052db31a4cab6b900aa6b9c4559b.tar.xz
libssh-7ff6b3537f43052db31a4cab6b900aa6b9c4559b.zip
pki_crypto: fix DSA signature extraction
Fix the DSA portion of 'pki_signature_to_blob': before this change, it is possible to sometimes observe DSA signature validation failure when testing with OpenSSH clients. The problem ended up being the following snippet which did not account for the case when 'ssh_string_len(x)' may be less than 20: r = make_bignum_string(sig->dsa_sig->r); ... memcpy(buffer, ((char *) ssh_string_data(r)) + ssh_string_len(r) - 20, 20); Above consider the case that ssh_string_len(r) is 19; in that case the memcpy unintentionally starts in the wrong place. The same situation can happen for value 's' in this code. To fix, adjust the offsets used for the input and output pointers, taking into account that the lengths of 'r' and 's' can be less than 20. With the fix I am no longer able to reproduce the original failure mode. BUG: https://red.libssh.org/issues/144 Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
Diffstat (limited to 'include/libssh/string.h')
0 files changed, 0 insertions, 0 deletions