From: pcarana Date: Fri, 1 Feb 2019 23:17:19 +0000 (-0600) Subject: Cast INTEGER_t as unsigned long and use as such X-Git-Tag: v0.0.2~98^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=efa67b45603f95a093e59f69eee24d1d383ee508;p=thirdparty%2FFORT-validator.git Cast INTEGER_t as unsigned long and use as such --- diff --git a/src/asn1/signed_data.c b/src/asn1/signed_data.c index 08236a89..862127c8 100644 --- a/src/asn1/signed_data.c +++ b/src/asn1/signed_data.c @@ -257,7 +257,7 @@ validate(struct SignedData *sdata, struct signed_object_args *args) error = asn_INTEGER2ulong(&sdata->version, &version); if (error) { if (errno) - pr_errno(errno, "Error converting SignedData version: "); + pr_errno(errno, "Error converting SignedData version"); return pr_err("The SignedData version isn't a valid unsigned long"); } if (version != 3) { @@ -306,7 +306,7 @@ validate(struct SignedData *sdata, struct signed_object_args *args) error = asn_INTEGER2ulong(&sinfo->version, &version); if (error) { if (errno) - pr_errno(errno, "Error converting SignerInfo version: "); + pr_errno(errno, "Error converting SignerInfo version"); return pr_err("The SignerInfo version isn't a valid unsigned long"); } if (version != 3) { diff --git a/src/object/manifest.c b/src/object/manifest.c index e26e1e5a..2af1dfb7 100644 --- a/src/object/manifest.c +++ b/src/object/manifest.c @@ -28,7 +28,7 @@ validate_dates(GeneralizedTime_t *this, GeneralizedTime_t *next) static int validate_manifest(struct Manifest *manifest) { - long version; + unsigned long version; bool is_sha256; int error; @@ -49,11 +49,11 @@ validate_manifest(struct Manifest *manifest) /* rfc6486#section-4.4.2 */ if (manifest->version != NULL) { - error = asn_INTEGER2long(manifest->version, &version); + error = asn_INTEGER2ulong(manifest->version, &version); if (error) { if (errno) - pr_errno(errno, "Error casting manifest version: "); - return pr_err("The manifest version isn't a valid long"); + pr_errno(errno, "Error casting manifest version"); + return pr_err("The manifest version isn't a valid unsigned long"); } if (version != 0) return -EINVAL; diff --git a/src/object/roa.c b/src/object/roa.c index 10f7f0b1..1a5ca01b 100644 --- a/src/object/roa.c +++ b/src/object/roa.c @@ -10,10 +10,11 @@ #include "object/signed_object.h" static int -print_addr4(struct resources *parent, long asn, struct ROAIPAddress *roa_addr) +print_addr4(struct resources *parent, unsigned long asn, + struct ROAIPAddress *roa_addr) { struct ipv4_prefix prefix; - long max_length; + unsigned long max_length; char str[INET_ADDRSTRLEN]; const char *str2; int error; @@ -23,20 +24,20 @@ print_addr4(struct resources *parent, long asn, struct ROAIPAddress *roa_addr) return error; if (roa_addr->maxLength != NULL) { - error = asn_INTEGER2long(roa_addr->maxLength, &max_length); + error = asn_INTEGER2ulong(roa_addr->maxLength, &max_length); if (error) { if (errno) - pr_errno(errno, "Error casting ROA's IPv4 maxLength: "); - return pr_err("The ROA's IPv4 maxLength isn't a valid long"); + pr_errno(errno, "Error casting ROA's IPv4 maxLength"); + return pr_err("The ROA's IPv4 maxLength isn't a valid unsigned long"); } if (max_length < 0 || 32 < max_length) { - return pr_err("maxLength (%ld) is out of bounds (0-32).", + return pr_err("maxLength (%lu) is out of bounds (0-32).", max_length); } if (prefix.len > max_length) { - return pr_err("Prefix length (%u) > maxLength (%ld)", + return pr_err("Prefix length (%u) > maxLength (%lu)", prefix.len, max_length); } } @@ -50,9 +51,9 @@ print_addr4(struct resources *parent, long asn, struct ROAIPAddress *roa_addr) prefix.len); } - printf("AS%ld,%s/%u", asn, str2, prefix.len); + printf("AS%lu,%s/%u", asn, str2, prefix.len); if (roa_addr->maxLength != NULL) - printf(",%ld", max_length); + printf(",%lu", max_length); else printf(",%u", prefix.len); printf("\n"); @@ -61,10 +62,11 @@ print_addr4(struct resources *parent, long asn, struct ROAIPAddress *roa_addr) } static int -print_addr6(struct resources *parent, long asn, struct ROAIPAddress *roa_addr) +print_addr6(struct resources *parent, unsigned long asn, + struct ROAIPAddress *roa_addr) { struct ipv6_prefix prefix; - long max_length; + unsigned long max_length; char str[INET6_ADDRSTRLEN]; const char *str2; int error; @@ -74,20 +76,20 @@ print_addr6(struct resources *parent, long asn, struct ROAIPAddress *roa_addr) return error; if (roa_addr->maxLength != NULL) { - error = asn_INTEGER2long(roa_addr->maxLength, &max_length); + error = asn_INTEGER2ulong(roa_addr->maxLength, &max_length); if (error) { if (errno) - pr_errno(errno, "Error casting ROA's IPv6 maxLength: "); - return pr_err("The ROA's IPv6 maxLength isn't a valid long"); + pr_errno(errno, "Error casting ROA's IPv6 maxLength"); + return pr_err("The ROA's IPv6 maxLength isn't a valid unsigned long"); } if (max_length < 0 || 128 < max_length) { - return pr_err("maxLength (%ld) is out of bounds (0-128).", + return pr_err("maxLength (%lu) is out of bounds (0-128).", max_length); } if (prefix.len > max_length) { - return pr_err("Prefix length (%u) > maxLength (%ld)", + return pr_err("Prefix length (%u) > maxLength (%lu)", prefix.len, max_length); } } @@ -101,9 +103,9 @@ print_addr6(struct resources *parent, long asn, struct ROAIPAddress *roa_addr) prefix.len); } - printf("AS%ld,%s/%u", asn, str2, prefix.len); + printf("AS%lu,%s/%u", asn, str2, prefix.len); if (roa_addr->maxLength != NULL) - printf(",%ld", max_length); + printf(",%lu", max_length); else printf(",%u", prefix.len); printf("\n"); @@ -112,7 +114,7 @@ print_addr6(struct resources *parent, long asn, struct ROAIPAddress *roa_addr) } static int -print_addr(struct resources *parent, long asn, uint8_t family, +print_addr(struct resources *parent, unsigned long asn, uint8_t family, struct ROAIPAddress *roa_addr) { switch (family) { @@ -129,33 +131,32 @@ static int __handle_roa(struct RouteOriginAttestation *roa, struct resources *parent) { struct ROAIPAddressFamily *block; - unsigned long as_id; - long version; + unsigned long as_id, version; int b; int a; int error; if (roa->version != NULL) { - error = asn_INTEGER2long(roa->version, &version); + error = asn_INTEGER2ulong(roa->version, &version); if (error) { if (errno) - pr_errno(errno, "Error casting ROA's version: "); + pr_errno(errno, "Error casting ROA's version"); return pr_err("The ROA's version isn't a valid long"); } /* rfc6482#section-3.1 */ if (version != 0) - return pr_err("ROA's version (%ld) is nonzero.", version); + return pr_err("ROA's version (%lu) is nonzero.", version); } error = asn_INTEGER2ulong(&roa->asID, &as_id); if (error) { if (errno) - pr_errno(errno, "Error casting ROA's AS ID value: "); + pr_errno(errno, "Error casting ROA's AS ID value"); return pr_err("ROA's AS ID couldn't be parsed as unsigned long"); } /* rfc6482#section-3.2 (more or less.) */ if (!resources_contains_asn(parent, as_id)) { - return pr_err("ROA is not allowed to attest for AS %d", + return pr_err("ROA is not allowed to attest for AS %lu", as_id); } @@ -183,8 +184,8 @@ __handle_roa(struct RouteOriginAttestation *roa, struct resources *parent) error = asn_INTEGER2ulong(&roa->asID, &as_id); if (error) { if (errno) - pr_errno(errno, "Error casting AS ID at address list: "); - return error; + pr_errno(errno, "Error casting AS ID at address list"); + return pr_err("Address list AS ID couldn't be parsed as unsigned long"); } error = print_addr(parent, as_id, block->addressFamily.buf[1], diff --git a/src/resource.c b/src/resource.c index f761522b..7bf8555b 100644 --- a/src/resource.c +++ b/src/resource.c @@ -410,13 +410,13 @@ add_asn(struct resources *resources, ASId_t min, ASId_t max, error = asn_INTEGER2ulong(&min, &asn_min); if (error) { if (errno) - pr_errno(errno, "Error converting ASN min value: "); + pr_errno(errno, "Error converting ASN min value"); return pr_err("Added ASN min value isn't a valid unsigned long"); } error = asn_INTEGER2ulong(&max, &asn_max); if (error) { if (errno) - pr_errno(errno, "Error converting ASN max value: "); + pr_errno(errno, "Error converting ASN max value"); return pr_err("Added ASN max value isn't a valid unsigned long"); } if (parent && !rasn_contains(parent->asns, asn_min, asn_max)) @@ -428,7 +428,7 @@ add_asn(struct resources *resources, ASId_t min, ASId_t max, return pr_enomem(); } - error = rasn_add(resources->asns, min, max); + error = rasn_add(resources->asns, asn_min, asn_max); if (error){ pr_err("Error adding ASN range to certificate resources: %s", sarray_err2str(error)); @@ -506,7 +506,7 @@ resources_empty(struct resources *res) } bool -resources_contains_asn(struct resources *res, long asn) +resources_contains_asn(struct resources *res, unsigned long asn) { return rasn_contains(res->asns, asn, asn); } diff --git a/src/resource.h b/src/resource.h index daee8d39..fa1acb87 100644 --- a/src/resource.h +++ b/src/resource.h @@ -17,7 +17,7 @@ int resources_add_ip(struct resources *, struct IPAddressFamily *); int resources_add_asn(struct resources *, struct ASIdentifiers *); bool resources_empty(struct resources *); -bool resources_contains_asn(struct resources *, long); +bool resources_contains_asn(struct resources *, unsigned long); bool resources_contains_ipv4(struct resources *, struct ipv4_prefix *); bool resources_contains_ipv6(struct resources *, struct ipv6_prefix *); diff --git a/src/resource/asn.c b/src/resource/asn.c index 16734426..b140768c 100644 --- a/src/resource/asn.c +++ b/src/resource/asn.c @@ -6,17 +6,17 @@ #include "sorted_array.h" struct asn_node { - long min; - long max; + unsigned long min; + unsigned long max; }; static enum sarray_comparison asn_cmp(void *arg1, void *arg2) { - long n1min = ((struct asn_node *) arg1)->min; - long n1max = ((struct asn_node *) arg1)->max; - long n2min = ((struct asn_node *) arg2)->min; - long n2max = ((struct asn_node *) arg2)->max; + unsigned long n1min = ((struct asn_node *) arg1)->min; + unsigned long n1max = ((struct asn_node *) arg1)->max; + unsigned long n2min = ((struct asn_node *) arg2)->min; + unsigned long n2max = ((struct asn_node *) arg2)->max; if (n1min == n2min && n1max == n2max) return SACMP_EQUAL; @@ -56,25 +56,9 @@ rasn_put(struct resources_asn *asns) } int -rasn_add(struct resources_asn *asns, ASId_t min, ASId_t max) +rasn_add(struct resources_asn *asns, unsigned long min, unsigned long max) { - unsigned long l_min; - unsigned long l_max; - int error; - - error = asn_INTEGER2ulong(&min, &l_min); - if (error) { - if (errno) - pr_errno(errno, "ASN min value: "); - return pr_err("ASN min value isn't a valid unsigned long"); - } - error = asn_INTEGER2ulong(&max, &l_max); - if (error) { - if (errno) - pr_errno(errno, "ASN max value: "); - return pr_err("ASN max value isn't a valid unsigned long"); - } - struct asn_node n = { l_min, l_max }; + struct asn_node n = { min, max }; return sarray_add((struct sorted_array *) asns, &n); } @@ -85,7 +69,7 @@ rasn_empty(struct resources_asn *asns) } bool -rasn_contains(struct resources_asn *asns, long min, long max) +rasn_contains(struct resources_asn *asns, unsigned long min, unsigned long max) { struct asn_node n = { min, max }; return sarray_contains((struct sorted_array *) asns, &n); diff --git a/src/resource/asn.h b/src/resource/asn.h index aaa5cefe..d1bb4af3 100644 --- a/src/resource/asn.h +++ b/src/resource/asn.h @@ -10,8 +10,8 @@ struct resources_asn *rasn_create(void); void rasn_get(struct resources_asn *); void rasn_put(struct resources_asn *); -int rasn_add(struct resources_asn *, ASId_t, ASId_t); +int rasn_add(struct resources_asn *, unsigned long, unsigned long); bool rasn_empty(struct resources_asn *); -bool rasn_contains(struct resources_asn *, long, long); +bool rasn_contains(struct resources_asn *, unsigned long, unsigned long); #endif /* SRC_RESOURCE_ASN_H_ */