diff options
-rw-r--r-- | crypto/asn1/a_object.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/crypto/asn1/a_object.c b/crypto/asn1/a_object.c index 6fc7681c23..79f0ecd2a8 100644 --- a/crypto/asn1/a_object.c +++ b/crypto/asn1/a_object.c @@ -127,8 +127,12 @@ int a2d_ASN1_OBJECT(unsigned char *out, int olen, const char *buf, int num) if (tmp == NULL) goto err; } - while (blsize--) - tmp[i++] = (unsigned char)BN_div_word(bl, 0x80L); + while (blsize--) { + BN_ULONG t = BN_div_word(bl, 0x80L); + if (t == (BN_ULONG)-1) + goto err; + tmp[i++] = (unsigned char)t; + } } else { for (;;) { |