]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - crypto/asymmetric_keys/x509_cert_parser.c
Merge branches 'for-4.4/upstream-fixes', 'for-4.5/async-suspend', 'for-4.5/container...
[mirror_ubuntu-artful-kernel.git] / crypto / asymmetric_keys / x509_cert_parser.c
index 3000ea3b6687451df7b5459e01cbf4215f9e9c85..021d39c0ba75a8ce3c8c6cb4ea2c41cddd954ad7 100644 (file)
@@ -531,7 +531,11 @@ int x509_decode_time(time64_t *_t,  size_t hdrlen,
        if (*p != 'Z')
                goto unsupported_time;
 
-       mon_len = month_lengths[mon];
+       if (year < 1970 ||
+           mon < 1 || mon > 12)
+               goto invalid_time;
+
+       mon_len = month_lengths[mon - 1];
        if (mon == 2) {
                if (year % 4 == 0) {
                        mon_len = 29;
@@ -543,14 +547,12 @@ int x509_decode_time(time64_t *_t,  size_t hdrlen,
                }
        }
 
-       if (year < 1970 ||
-           mon < 1 || mon > 12 ||
-           day < 1 || day > mon_len ||
+       if (day < 1 || day > mon_len ||
            hour > 23 ||
            min > 59 ||
            sec > 59)
                goto invalid_time;
-       
+
        *_t = mktime64(year, mon, day, hour, min, sec);
        return 0;