projects
/
firefly-linux-kernel-4.4.55.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge remote-tracking branches 'asoc/fix/davinci', 'asoc/fix/es8328', 'asoc/fix/fsl...
[firefly-linux-kernel-4.4.55.git]
/
crypto
/
asymmetric_keys
/
x509_cert_parser.c
diff --git
a/crypto/asymmetric_keys/x509_cert_parser.c
b/crypto/asymmetric_keys/x509_cert_parser.c
index 3000ea3b6687451df7b5459e01cbf4215f9e9c85..021d39c0ba75a8ce3c8c6cb4ea2c41cddd954ad7 100644
(file)
--- 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;
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;
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;
hour > 23 ||
min > 59 ||
sec > 59)
goto invalid_time;
-
+
*_t = mktime64(year, mon, day, hour, min, sec);
return 0;
*_t = mktime64(year, mon, day, hour, min, sec);
return 0;