summaryrefslogtreecommitdiff
path: root/bcprov/src/main/java/org/bouncycastle/asn1/ASN1Integer.java
diff options
context:
space:
mode:
Diffstat (limited to 'bcprov/src/main/java/org/bouncycastle/asn1/ASN1Integer.java')
-rw-r--r--bcprov/src/main/java/org/bouncycastle/asn1/ASN1Integer.java11
1 files changed, 11 insertions, 0 deletions
diff --git a/bcprov/src/main/java/org/bouncycastle/asn1/ASN1Integer.java b/bcprov/src/main/java/org/bouncycastle/asn1/ASN1Integer.java
index c3c3f9cf..ab6d2020 100644
--- a/bcprov/src/main/java/org/bouncycastle/asn1/ASN1Integer.java
+++ b/bcprov/src/main/java/org/bouncycastle/asn1/ASN1Integer.java
@@ -89,6 +89,17 @@ public class ASN1Integer
ASN1Integer(byte[] bytes, boolean clone)
{
+ if (bytes.length > 1)
+ {
+ if (bytes[0] == 0 && (bytes[1] & 0x80) == 0)
+ {
+ throw new IllegalArgumentException("malformed integer");
+ }
+ if (bytes[0] == (byte)0xff && (bytes[1] & 0x80) != 0)
+ {
+ throw new IllegalArgumentException("malformed integer");
+ }
+ }
this.bytes = (clone) ? Arrays.clone(bytes) : bytes;
}