]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - lib/asn1_decoder.c
x86/speculation: Rework speculative_store_bypass_update()
[mirror_ubuntu-artful-kernel.git] / lib / asn1_decoder.c
index 0bd8a611eb83c99aad01fcee01143bbaad490845..1ef0cec38d7879332966f8095d0bfdc0c7580230 100644 (file)
@@ -228,7 +228,7 @@ next_op:
                hdr = 2;
 
                /* Extract a tag from the data */
-               if (unlikely(dp >= datalen - 1))
+               if (unlikely(datalen - dp < 2))
                        goto data_overrun_error;
                tag = data[dp++];
                if (unlikely((tag & 0x1f) == ASN1_LONG_TAG))
@@ -274,7 +274,7 @@ next_op:
                                int n = len - 0x80;
                                if (unlikely(n > 2))
                                        goto length_too_long;
-                               if (unlikely(dp >= datalen - n))
+                               if (unlikely(n > datalen - dp))
                                        goto data_overrun_error;
                                hdr += n;
                                for (len = 0; n > 0; n--) {
@@ -284,6 +284,9 @@ next_op:
                                if (unlikely(len > datalen - dp))
                                        goto data_overrun_error;
                        }
+               } else {
+                       if (unlikely(len > datalen - dp))
+                               goto data_overrun_error;
                }
 
                if (flags & FLAG_CONS) {