aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Philippe Garcia Ballester <giga@le-pec.org>2006-05-12 12:15:37 +0000
committerJean-Philippe Garcia Ballester <giga@le-pec.org>2006-05-12 12:15:37 +0000
commitf10e8874b28f78c5b2cc4bd0e9af2167634d5922 (patch)
tree2b7e58fa9e0defd0d2eb05e4cac9b5de77556c97
parent49f537bdbe73e5a41dd8d7bd98cd381a8d42a3e8 (diff)
downloadlibssh-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.c5
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;