aboutsummaryrefslogtreecommitdiff
path: root/rcynic
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2013-11-06 00:51:53 +0000
committerRob Austein <sra@hactrn.net>2013-11-06 00:51:53 +0000
commitbe84d9b9f26c15e619199a87661c136e2ddb58e8 (patch)
treeeb2d71ee277a535b3b33b2f4e9d5d9c1c79b2e12 /rcynic
parentfaafc15ecf6233aaffe548cf0d008ddb1bc8f0d2 (diff)
Check for manifestNumber too big. Fixes #652.
svn path=/trunk/; revision=5582
Diffstat (limited to 'rcynic')
-rw-r--r--rcynic/rcynic.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/rcynic/rcynic.c b/rcynic/rcynic.c
index 3907e120..558b4a89 100644
--- a/rcynic/rcynic.c
+++ b/rcynic/rcynic.c
@@ -223,6 +223,7 @@ static const struct {
QB(bad_public_key, "Bad public key") \
QB(bad_roa_asID, "Bad ROA asID") \
QB(bad_certificate_serial_number, "Bad certificate serialNumber") \
+ QB(bad_manifest_number, "Bad manifestNumber") \
QB(certificate_bad_signature, "Bad certificate signature") \
QB(certificate_failed_validation, "Certificate failed validation") \
QB(cms_econtent_decode_error, "CMS eContent decode error") \
@@ -255,7 +256,6 @@ static const struct {
QB(manifest_lists_missing_object, "Manifest lists missing object") \
QB(manifest_not_yet_valid, "Manifest not yet valid") \
QB(missing_resources, "Missing resources") \
- QB(negative_manifest_number, "Negative manifestNumber") \
QB(nonconformant_asn1_time_value, "Nonconformant ASN.1 time value") \
QB(nonconformant_public_key_algorithm,"Nonconformant public key algorithm")\
QB(nonconformant_signature_algorithm, "Nonconformant signature algorithm")\
@@ -4298,8 +4298,9 @@ static Manifest *check_manifest_1(rcynic_ctx_t *rc,
goto done;
}
- if (ASN1_INTEGER_cmp(manifest->manifestNumber, asn1_zero) < 0) {
- log_validation_status(rc, uri, negative_manifest_number, generation);
+ if (ASN1_INTEGER_cmp(manifest->manifestNumber, asn1_zero) < 0 ||
+ ASN1_INTEGER_cmp(manifest->manifestNumber, asn1_twenty_octets) > 0) {
+ log_validation_status(rc, uri, bad_manifest_number, generation);
goto done;
}