From f10e8874b28f78c5b2cc4bd0e9af2167634d5922 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Garcia Ballester Date: Fri, 12 May 2006 12:15:37 +0000 Subject: 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 --- libssh/keyfiles.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'libssh/keyfiles.c') diff --git a/libssh/keyfiles.c b/libssh/keyfiles.c index b96cc63..b65cdfb 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; -- cgit