diff options
author | Jean-Philippe Garcia Ballester <giga@le-pec.org> | 2006-05-12 12:15:37 +0000 |
---|---|---|
committer | Jean-Philippe Garcia Ballester <giga@le-pec.org> | 2006-05-12 12:15:37 +0000 |
commit | f10e8874b28f78c5b2cc4bd0e9af2167634d5922 (patch) | |
tree | 2b7e58fa9e0defd0d2eb05e4cac9b5de77556c97 | |
parent | 49f537bdbe73e5a41dd8d7bd98cd381a8d42a3e8 (diff) | |
download | libssh-f10e8874b28f78c5b2cc4bd0e9af2167634d5922.tar.gz libssh-f10e8874b28f78c5b2cc4bd0e9af2167634d5922.tar.xz libssh-f10e8874b28f78c5b2cc4bd0e9af2167634d5922.zip |
libssh/keyfiles.c: Fix bug when reading private keys with libgcrypt
git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@73 7dcaeef0-15fb-0310-b436-a5af3365683c
-rw-r--r-- | libssh/keyfiles.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/libssh/keyfiles.c b/libssh/keyfiles.c index b96cc63e..b65cdfb6 100644 --- a/libssh/keyfiles.c +++ b/libssh/keyfiles.c @@ -134,15 +134,16 @@ int asn1_check_sequence(BUFFER *buffer) unsigned char *j; int i; u32 size; + u32 padding; if (!buffer_get_data(buffer,&tmp,1) || tmp != ASN1_SEQUENCE) return 0; size=asn1_get_len(buffer); - if (size != buffer_get_len(buffer) - buffer->pos) + if ((padding = buffer_get_len(buffer) - buffer->pos - size) > 0) for (i = buffer_get_len(buffer) - buffer->pos - size, j = buffer_get(buffer) + size + buffer->pos; i; i--, j++) { - if (*j != 1) /* padding is allowed */ + if (*j != padding) /* padding is allowed */ return 0; /* but nothing else */ } return 1; |