diff --git a/lib/asn1/der_cmp.c b/lib/asn1/der_cmp.c index 0a9c4ea76..306fcbdf5 100644 --- a/lib/asn1/der_cmp.c +++ b/lib/asn1/der_cmp.c @@ -60,10 +60,12 @@ heim_bit_string_cmp(const heim_bit_string *p, const heim_bit_string *q) i = memcmp(p->data, q->data, p->length / 8); if (i) return i; - i = p->length / 8; + if ((p->length % 8) == 0) + return 0; + i = (p->length / 8); r1 = ((unsigned char *)p->data)[i]; r2 = ((unsigned char *)q->data)[i]; - i = 8 - p->length % 8; + i = 8 - (p->length % 8); r1 = r1 >> i; r2 = r2 >> i; return r1 - r2;