summaryrefslogtreecommitdiffstats
path: root/libssh/keyfiles.c
diff options
context:
space:
mode:
Diffstat (limited to 'libssh/keyfiles.c')
-rw-r--r--libssh/keyfiles.c5
1 files changed, 3 insertions, 2 deletions
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;