]> git.ipfire.org Git - thirdparty/FORT-validator.git/commitdiff
Cast INTEGER_t as unsigned long and use as such
authorpcarana <pc.moreno2099@gmail.com>
Fri, 1 Feb 2019 23:17:19 +0000 (17:17 -0600)
committerpcarana <pc.moreno2099@gmail.com>
Fri, 1 Feb 2019 23:17:19 +0000 (17:17 -0600)
src/asn1/signed_data.c
src/object/manifest.c
src/object/roa.c
src/resource.c
src/resource.h
src/resource/asn.c
src/resource/asn.h

index 08236a89ca4b1af92a87d579adc5729ad2a29cb6..862127c84086cd65a0044d22cd344df3c861df58 100644 (file)
@@ -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) {
index e26e1e5ad16aa2950daa6f8acad1f34373e67401..2af1dfb795d3acee3318d6aada14b9a929f48eb6 100644 (file)
@@ -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;
index 10f7f0b1d1a54afd02919cd46ab754ea311b9128..1a5ca01bf532bdfc5b29bc8dd333988d3d975da6 100644 (file)
 #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],
index f761522b04b74259969d242890d1745c182c1df5..7bf8555b2f4bcedb9871fb31e8467f6441a88fa6 100644 (file)
@@ -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);
 }
index daee8d393566c3b06646da7b8fc7ecb6242f6797..fa1acb87a8b4e4f92834c2adad3ccf7a2ff7eb2b 100644 (file)
@@ -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 *);
 
index 167344260e30e0ab96a61ccf66082bbd9cf68295..b140768c6673bd1213ff9cb04c7a1540e6c4839a 100644 (file)
@@ -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);
index aaa5cefe1c585808375006b0e7f4fd304b8237c8..d1bb4af304782923fb76fa44926cb38d3680a863 100644 (file)
@@ -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_ */