diff --git a/crypto/secp256k1/libsecp256k1/contrib/lax_der_parsing.c b/crypto/secp256k1/libsecp256k1/contrib/lax_der_parsing.c index bf562303ed..484259c3d6 100644 --- a/crypto/secp256k1/libsecp256k1/contrib/lax_der_parsing.c +++ b/crypto/secp256k1/libsecp256k1/contrib/lax_der_parsing.c @@ -120,7 +120,7 @@ int ecdsa_signature_parse_der_lax(const secp256k1_context* ctx, secp256k1_ecdsa_ /* Copy R value */ if (rlen > 32) { overflow = 1; - } else if (rlen) { + } else if (rlen > 0 && rlen <= 32) { memcpy(tmpsig + 32 - rlen, input + rpos, rlen); } @@ -132,7 +132,7 @@ int ecdsa_signature_parse_der_lax(const secp256k1_context* ctx, secp256k1_ecdsa_ /* Copy S value */ if (slen > 32) { overflow = 1; - } else if (slen) { + } else if (slen > 0 && slen <= 32) { memcpy(tmpsig + 64 - slen, input + spos, slen); }