diff options
author | Chris Zankel <chris@zankel.net> | 2016-01-21 05:16:13 +0000 |
---|---|---|
committer | Chris Zankel <chris@zankel.net> | 2016-01-21 05:16:13 +0000 |
commit | abc6a0eee5b5e3aaaf1d04260e3de3bc5d5c0937 (patch) | |
tree | e23eae0884d78fba55a41668cf809ae3ecd61159 /crypto/asymmetric_keys/x509_cert_parser.c | |
parent | fbac254eaaaf03131033caa87420f9af2e273907 (diff) | |
parent | 874fbf3b2b51ca47c6a69a8e8ec5e8480c492478 (diff) | |
download | linux-crypto-abc6a0eee5b5e3aaaf1d04260e3de3bc5d5c0937.tar.gz linux-crypto-abc6a0eee5b5e3aaaf1d04260e3de3bc5d5c0937.zip |
Merge tag 'v4.4'
Linux 4.4
Diffstat (limited to 'crypto/asymmetric_keys/x509_cert_parser.c')
-rw-r--r-- | crypto/asymmetric_keys/x509_cert_parser.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/crypto/asymmetric_keys/x509_cert_parser.c b/crypto/asymmetric_keys/x509_cert_parser.c index af71878d..021d39c0 100644 --- a/crypto/asymmetric_keys/x509_cert_parser.c +++ b/crypto/asymmetric_keys/x509_cert_parser.c @@ -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 || - hour < 0 || hour > 23 || - min < 0 || min > 59 || - sec < 0 || sec > 59) + 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; |