From 5589cf96c745613b171cc0788c2b5187c721e71a Mon Sep 17 00:00:00 2001 From: Taylor R Campbell Date: Tue, 20 Jun 2023 23:06:56 +0000 Subject: [PATCH] Sprinkle const and rk_UNCONST throughout the tests. --- kadmin/kadmind.c | 2 +- kdc/bx509d.c | 18 +-- kdc/httpkadmind.c | 8 +- kdc/kerberos5.c | 4 +- lib/asn1/check-ber.c | 2 +- lib/asn1/check-common.c | 13 +- lib/asn1/check-common.h | 14 +-- lib/asn1/check-der.c | 216 +++++++++++++++++----------------- lib/asn1/check-gen.c | 210 ++++++++++++++++++--------------- lib/asn1/check-template.c | 38 +++--- lib/gssapi/test_names.c | 14 +-- lib/hx509/cert.c | 2 +- lib/hx509/hxtool.c | 2 +- lib/hx509/jose.c | 6 +- lib/hx509/test_expr.c | 2 +- lib/hx509/test_soft_pkcs11.c | 13 +- lib/krb5/aes-test.c | 38 +++--- lib/krb5/context.c | 2 +- lib/krb5/crypto-evp.c | 2 +- lib/krb5/crypto.c | 2 +- lib/krb5/fcache.c | 1 - lib/krb5/kx509.c | 4 +- lib/krb5/parse-name-test.c | 4 +- lib/krb5/pkinit-ec.c | 2 +- lib/krb5/pkinit.c | 2 +- lib/krb5/sp800-108-kdf.c | 2 +- lib/krb5/store-test.c | 6 +- lib/krb5/test_canon.c | 2 +- lib/krb5/test_cc.c | 6 +- lib/krb5/test_config.c | 44 +++---- lib/krb5/test_fx.c | 24 ++-- lib/krb5/test_pac.c | 31 +++-- lib/krb5/test_pkinit_dh2key.c | 10 +- lib/krb5/test_pknistkdf.c | 11 +- lib/roken/base32-test.c | 2 +- lib/roken/base64-test.c | 2 +- lib/roken/hex-test.c | 2 +- lib/roken/parse_time-test.c | 4 +- lib/roken/test-mem.c | 2 +- lib/roken/test-mem.h | 3 +- lib/roken/test-readenv.c | 4 +- 41 files changed, 396 insertions(+), 380 deletions(-) diff --git a/kadmin/kadmind.c b/kadmin/kadmind.c index 30b9dfa87..2a29d428f 100644 --- a/kadmin/kadmind.c +++ b/kadmin/kadmind.c @@ -390,7 +390,7 @@ fuzz_stdin(krb5_context contextp) memset(&realm_params, 0, sizeof(realm_params)); realm_params.mask = KADM5_CONFIG_REALM | KADM5_CONFIG_DBNAME | KADM5_CONFIG_ACL_FILE | KADM5_CONFIG_STASH_FILE; - realm_params.realm = realm ? realm : "FUZZ.REALM"; + realm_params.realm = realm ? realm : rk_UNCONST("FUZZ.REALM"); realm_params.dbname = dbname; realm_params.acl_file = acl_file; realm_params.stash_file = stash_file; diff --git a/kdc/bx509d.c b/kdc/bx509d.c index 89c86b797..2dca66ad4 100644 --- a/kdc/bx509d.c +++ b/kdc/bx509d.c @@ -307,9 +307,9 @@ static krb5_error_code bad_req(struct bx509_request_desc *, krb5_error_code, int HEIMDAL_PRINTF_ATTRIBUTE((__printf__, 4, 5)); static krb5_error_code bad_enomem(struct bx509_request_desc *, krb5_error_code); -static krb5_error_code bad_400(struct bx509_request_desc *, krb5_error_code, char *); -static krb5_error_code bad_401(struct bx509_request_desc *, char *); -static krb5_error_code bad_403(struct bx509_request_desc *, krb5_error_code, char *); +static krb5_error_code bad_400(struct bx509_request_desc *, krb5_error_code, const char *); +static krb5_error_code bad_401(struct bx509_request_desc *, const char *); +static krb5_error_code bad_403(struct bx509_request_desc *, krb5_error_code, const char *); static krb5_error_code bad_404(struct bx509_request_desc *, const char *); static krb5_error_code bad_405(struct bx509_request_desc *, const char *); static krb5_error_code bad_500(struct bx509_request_desc *, krb5_error_code, const char *); @@ -360,7 +360,7 @@ validate_token(struct bx509_request_desc *r) r->sname = strdup(host); /* No need to check for ENOMEM here */ ret = kdc_validate_token(r->context, NULL /* realm */, token_type, &tok, - (const char **)&audiences.strings[i], 1, + (const char *const *)&audiences.strings[i], 1, &cprinc, &r->token_times); if (ret) return bad_403(r, ret, "Token validation failed"); @@ -665,19 +665,19 @@ bad_enomem(struct bx509_request_desc *r, krb5_error_code ret) } static krb5_error_code -bad_400(struct bx509_request_desc *r, int ret, char *reason) +bad_400(struct bx509_request_desc *r, int ret, const char *reason) { return bad_req(r, ret, MHD_HTTP_BAD_REQUEST, "%s", reason); } static krb5_error_code -bad_401(struct bx509_request_desc *r, char *reason) +bad_401(struct bx509_request_desc *r, const char *reason) { return bad_req(r, EACCES, MHD_HTTP_UNAUTHORIZED, "%s", reason); } static krb5_error_code -bad_403(struct bx509_request_desc *r, krb5_error_code ret, char *reason) +bad_403(struct bx509_request_desc *r, krb5_error_code ret, const char *reason) { return bad_req(r, ret, MHD_HTTP_FORBIDDEN, "%s", reason); } @@ -995,7 +995,7 @@ set_req_desc(struct MHD_Connection *connection, r->connection = connection; r->response = NULL; r->pp = NULL; - r->request.data = ""; + r->request.data = rk_UNCONST(""); r->request.length = sizeof(""); r->from = r->frombuf; r->tgt_addresses.len = 0; @@ -2841,7 +2841,7 @@ load_plugins(krb5_context context) #endif /* XXX kdc? */ - _krb5_load_plugins(context, "kdc", (const char **)dirs); + _krb5_load_plugins(context, "kdc", (const char * const *)dirs); #ifndef _WIN32 krb5_config_free_strings(cfdirs); diff --git a/kdc/httpkadmind.c b/kdc/httpkadmind.c index eb65b8dfe..d3ac64066 100644 --- a/kdc/httpkadmind.c +++ b/kdc/httpkadmind.c @@ -512,7 +512,7 @@ validate_token(kadmin_request_desc r) r->sname = strdup(host); /* No need to check for ENOMEM here */ ret = kdc_validate_token(r->context, NULL /* realm */, token_type, &tok, - (const char **)&audiences.strings[i], 1, + (const char * const *)&audiences.strings[i], 1, &r->cprinc, &r->token_times); if (ret) return bad_403(r, ret, "Token validation failed"); @@ -1726,7 +1726,7 @@ set_req_desc(struct MHD_Connection *connection, return ret; } /* HEIM_SVC_REQUEST_DESC_COMMON_ELEMENTS fields */ - r->request.data = ""; + r->request.data = rk_UNCONST(""); r->request.length = sizeof(""); r->from = r->frombuf; r->free_list = NULL; @@ -1862,7 +1862,7 @@ get_config(kadmin_request_desc r) const char *pname; /* Default configuration for principals that have none set: */ size_t bodylen = sizeof("include /etc/krb5.conf\n") - 1; - void *body = "include /etc/krb5.conf\n"; + const char *body = "include /etc/krb5.conf\n"; int freeit = 0; if (r->cname == NULL || r->cprinc == NULL) @@ -2423,7 +2423,7 @@ load_plugins(krb5_context context) #endif /* XXX kdc? */ - _krb5_load_plugins(context, "kdc", (const char **)dirs); + _krb5_load_plugins(context, "kdc", (const char * const *)dirs); #ifndef _WIN32 krb5_config_free_strings(cfdirs); diff --git a/kdc/kerberos5.c b/kdc/kerberos5.c index 45e587009..bb64f54ee 100644 --- a/kdc/kerberos5.c +++ b/kdc/kerberos5.c @@ -1205,7 +1205,7 @@ _kdc_encode_reply(krb5_context context, * Hide client name for privacy reasons */ if (r->fast.flags.requested_hidden_names) { - const Realm anon_realm = KRB5_ANON_REALM; + const Realm anon_realm = rk_UNCONST(KRB5_ANON_REALM); free_Realm(&rep->crealm); ret = copy_Realm(&anon_realm, &rep->crealm); @@ -2445,7 +2445,7 @@ _kdc_as_rep(astgs_request_t r) if (!config->historical_anon_realm && _kdc_is_anonymous(r->context, r->client_princ)) { - const Realm anon_realm = KRB5_ANON_REALM; + const Realm anon_realm = rk_UNCONST(KRB5_ANON_REALM); ret = copy_Realm(&anon_realm, &rep->crealm); } else if (f.canonicalize || r->client->flags.force_canonicalize) diff --git a/lib/asn1/check-ber.c b/lib/asn1/check-ber.c index 57450f422..2ec08a6d6 100644 --- a/lib/asn1/check-ber.c +++ b/lib/asn1/check-ber.c @@ -38,7 +38,7 @@ RCSID("$Id$"); -static const unsigned char *contentdata = (unsigned char *) +static const unsigned char *contentdata = (const unsigned char *) "\x30\x80\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x07\x02\xa0\x80\x30" "\x80\x02\x01\x03\x31\x0b\x30\x09\x06\x05\x2b\x0e\x03\x02\x1a\x05" "\x00\x30\x80\x06\x07\x2b\x06\x01\x05\x02\x03\x01\xa0\x80\x24\x80" diff --git a/lib/asn1/check-common.c b/lib/asn1/check-common.c index 8a6b5dacd..4a7c2f72b 100644 --- a/lib/asn1/check-common.c +++ b/lib/asn1/check-common.c @@ -167,8 +167,8 @@ print_bytes (unsigned const char *buf, size_t len) #define MAP_FAILED (-1) #endif -static char *current_test = ""; -static char *current_state = ""; +static const char *current_test = ""; +static const char *current_state = ""; static RETSIGTYPE segv_handler(int sig) @@ -196,11 +196,11 @@ int generic_test (const struct test_case *tests, unsigned ntests, size_t data_size, - int (ASN1CALL *encode)(unsigned char *, size_t, void *, size_t *), - size_t (ASN1CALL *length)(void *), + int (ASN1CALL *encode)(unsigned char *, size_t, const void *, size_t *), + size_t (ASN1CALL *length)(const void *), int (ASN1CALL *decode)(unsigned char *, size_t, void *, size_t *), void (ASN1CALL *free_data)(void *), - int (*cmp)(void *a, void *b), + int (*cmp)(const void *a, const void *b), int (ASN1CALL *copy)(const void *from, void *to)) { unsigned char *buf, *buf2; @@ -266,7 +266,8 @@ generic_test (const struct test_case *tests, if (memcmp (buf, tests[i].bytes, tests[i].byte_len) != 0) { printf ("encoding of %s has bad bytes:\n" "correct: ", tests[i].name); - print_bytes ((unsigned char *)tests[i].bytes, tests[i].byte_len); + print_bytes ((const unsigned char *)tests[i].bytes, + tests[i].byte_len); printf ("\nactual: "); print_bytes (buf, sz); printf ("\n"); diff --git a/lib/asn1/check-common.h b/lib/asn1/check-common.h index 6ea1f8126..4d4af9aa7 100644 --- a/lib/asn1/check-common.h +++ b/lib/asn1/check-common.h @@ -52,14 +52,14 @@ do { if ((ac)->e.length != (bc)->e.length || memcmp((ac)->e.data, (bc)->e.data, (ac)->e.length) != 0) return 1; } while(0) struct test_case { - void *val; + const void *val; ssize_t byte_len; const char *bytes; - char *name; + const char *name; }; -typedef int (ASN1CALL *generic_encode)(unsigned char *, size_t, void *, size_t *); -typedef size_t (ASN1CALL *generic_length)(void *); +typedef int (ASN1CALL *generic_encode)(unsigned char *, size_t, const void *, size_t *); +typedef size_t (ASN1CALL *generic_length)(const void *); typedef int (ASN1CALL *generic_decode)(unsigned char *, size_t, void *, size_t *); typedef void (ASN1CALL *generic_free)(void *); typedef int (ASN1CALL *generic_copy)(const void *, void *); @@ -68,11 +68,11 @@ int generic_test (const struct test_case *tests, unsigned ntests, size_t data_size, - int (ASN1CALL *encode)(unsigned char *, size_t, void *, size_t *), - size_t (ASN1CALL *length)(void *), + int (ASN1CALL *encode)(unsigned char *, size_t, const void *, size_t *), + size_t (ASN1CALL *length)(const void *), int (ASN1CALL *decode)(unsigned char *, size_t, void *, size_t *), void (ASN1CALL *free_data)(void *), - int (*cmp)(void *a, void *b), + int (*cmp)(const void *a, const void *b), int (ASN1CALL *copy)(const void *a, void *b)); int diff --git a/lib/asn1/check-der.c b/lib/asn1/check-der.c index 58c1446fd..1bb986f35 100644 --- a/lib/asn1/check-der.c +++ b/lib/asn1/check-der.c @@ -46,10 +46,10 @@ RCSID("$Id$"); static int -cmp_integer (void *a, void *b) +cmp_integer (const void *a, const void *b) { - int *ia = (int *)a; - int *ib = (int *)b; + const int *ia = a; + const int *ib = b; return *ib - *ia; } @@ -77,23 +77,25 @@ test_integer (void) int ntests = sizeof(tests) / sizeof(*tests); for (i = 0; i < ntests; ++i) { + char *name; tests[i].val = &values[i]; - if (asprintf (&tests[i].name, "integer %d", values[i]) < 0) + if (asprintf(&name, "integer %d", values[i]) < 0) errx(1, "malloc"); - if (tests[i].name == NULL) + if (name == NULL) errx(1, "malloc"); + tests[i].name = name; } ret = generic_test (tests, ntests, sizeof(int), (generic_encode)der_put_integer, - (generic_length) der_length_integer, + (generic_length)der_length_integer, (generic_decode)der_get_integer, (generic_free)NULL, cmp_integer, NULL); for (i = 0; i < ntests; ++i) - free (tests[i].name); + free(rk_UNCONST(tests[i].name)); return ret; } @@ -176,9 +178,9 @@ test_integer_more (void) } static int -cmp_unsigned (void *a, void *b) +cmp_unsigned (const void *a, const void *b) { - return *(unsigned int*)b - *(unsigned int*)a; + return *(const unsigned int*)b - *(const unsigned int*)a; } static int @@ -201,11 +203,13 @@ test_unsigned (void) int ntests = sizeof(tests) / sizeof(*tests); for (i = 0; i < ntests; ++i) { + char *name; tests[i].val = &values[i]; - if (asprintf (&tests[i].name, "unsigned %u", values[i]) < 0) + if (asprintf(&name, "unsigned %u", values[i]) < 0) errx(1, "malloc"); - if (tests[i].name == NULL) + if (name == NULL) errx(1, "malloc"); + tests[i].name = name; } ret = generic_test (tests, ntests, sizeof(int), @@ -216,12 +220,12 @@ test_unsigned (void) cmp_unsigned, NULL); for (i = 0; i < ntests; ++i) - free (tests[i].name); + free(rk_UNCONST(tests[i].name)); return ret; } static int -cmp_octet_string (void *a, void *b) +cmp_octet_string (const void *a, const void *b) { return der_heim_octet_string_cmp(a, b); } @@ -229,20 +233,14 @@ cmp_octet_string (void *a, void *b) static int test_octet_string (void) { - heim_octet_string s1 = {8, "\x01\x23\x45\x67\x89\xab\xcd\xef"}; + heim_octet_string s1 = {8, rk_UNCONST("\x01\x23\x45\x67\x89\xab\xcd\xef")}; struct test_case tests[] = { - {NULL, 8, "\x01\x23\x45\x67\x89\xab\xcd\xef", NULL } + {&s1, 8, "\x01\x23\x45\x67\x89\xab\xcd\xef", "a octet string" } }; int ntests = sizeof(tests) / sizeof(*tests); int ret; - tests[0].val = &s1; - if (asprintf (&tests[0].name, "a octet string") < 0) - errx(1, "malloc"); - if (tests[0].name == NULL) - errx(1, "malloc"); - ret = generic_test (tests, ntests, sizeof(heim_octet_string), (generic_encode)der_put_octet_string, (generic_length)der_length_octet_string, @@ -250,15 +248,14 @@ test_octet_string (void) (generic_free)der_free_octet_string, cmp_octet_string, NULL); - free(tests[0].name); return ret; } static int -cmp_bmp_string (void *a, void *b) +cmp_bmp_string (const void *a, const void *b) { - heim_bmp_string *oa = (heim_bmp_string *)a; - heim_bmp_string *ob = (heim_bmp_string *)b; + const heim_bmp_string *oa = a; + const heim_bmp_string *ob = b; return der_heim_bmp_string_cmp(oa, ob); } @@ -273,23 +270,12 @@ test_bmp_string (void) heim_bmp_string s2 = { 2, bmp_d2 }; struct test_case tests[] = { - {NULL, 2, "\x00\x20", NULL }, - {NULL, 4, "\x00\x20\x00\x20", NULL } + {&s1, 2, "\x00\x20", "a bmp string" }, + {&s2, 4, "\x00\x20\x00\x20", "second bmp string" } }; int ntests = sizeof(tests) / sizeof(*tests); int ret; - tests[0].val = &s1; - if (asprintf (&tests[0].name, "a bmp string") < 0) - errx(1, "malloc"); - if (tests[0].name == NULL) - errx(1, "malloc"); - tests[1].val = &s2; - if (asprintf (&tests[1].name, "second bmp string") < 0) - errx(1, "malloc"); - if (tests[1].name == NULL) - errx(1, "malloc"); - ret = generic_test (tests, ntests, sizeof(heim_bmp_string), (generic_encode)der_put_bmp_string, (generic_length)der_length_bmp_string, @@ -297,16 +283,14 @@ test_bmp_string (void) (generic_free)der_free_bmp_string, cmp_bmp_string, NULL); - free(tests[0].name); - free(tests[1].name); return ret; } static int -cmp_universal_string (void *a, void *b) +cmp_universal_string (const void *a, const void *b) { - heim_universal_string *oa = (heim_universal_string *)a; - heim_universal_string *ob = (heim_universal_string *)b; + const heim_universal_string *oa = a; + const heim_universal_string *ob = b; return der_heim_universal_string_cmp(oa, ob); } @@ -321,23 +305,12 @@ test_universal_string (void) heim_universal_string s2 = { 2, universal_d2 }; struct test_case tests[] = { - {NULL, 4, "\x00\x00\x00\x20", NULL }, - {NULL, 8, "\x00\x00\x00\x20\x00\x00\x00\x20", NULL } + {&s1, 4, "\x00\x00\x00\x20", "a universal string" }, + {&s2, 8, "\x00\x00\x00\x20\x00\x00\x00\x20", "second universal string" } }; int ntests = sizeof(tests) / sizeof(*tests); int ret; - tests[0].val = &s1; - if (asprintf (&tests[0].name, "a universal string") < 0) - errx(1, "malloc"); - if (tests[0].name == NULL) - errx(1, "malloc"); - tests[1].val = &s2; - if (asprintf (&tests[1].name, "second universal string") < 0) - errx(1, "malloc"); - if (tests[1].name == NULL) - errx(1, "malloc"); - ret = generic_test (tests, ntests, sizeof(heim_universal_string), (generic_encode)der_put_universal_string, (generic_length)der_length_universal_string, @@ -345,16 +318,14 @@ test_universal_string (void) (generic_free)der_free_universal_string, cmp_universal_string, NULL); - free(tests[0].name); - free(tests[1].name); return ret; } static int -cmp_general_string (void *a, void *b) +cmp_general_string (const void *a, const void *b) { - char **sa = (char **)a; - char **sb = (char **)b; + const char *const *sa = a; + const char *const *sb = b; return strcmp (*sa, *sb); } @@ -362,18 +333,20 @@ cmp_general_string (void *a, void *b) static int test_general_string (void) { - char *s1 = "Test User 1"; + const char *s1 = "Test User 1"; struct test_case tests[] = { {NULL, 11, "\x54\x65\x73\x74\x20\x55\x73\x65\x72\x20\x31", NULL } }; + char *name; int ret, ntests = sizeof(tests) / sizeof(*tests); tests[0].val = &s1; - if (asprintf (&tests[0].name, "the string \"%s\"", s1) < 0) + if (asprintf(&name, "the string \"%s\"", s1) < 0) errx(1, "malloc"); - if (tests[0].name == NULL) + if (name == NULL) errx(1, "malloc"); + tests[0].name = name; ret = generic_test (tests, ntests, sizeof(unsigned char *), (generic_encode)der_put_general_string, @@ -382,15 +355,15 @@ test_general_string (void) (generic_free)der_free_general_string, cmp_general_string, NULL); - free(tests[0].name); + free(name); return ret; } static int -cmp_generalized_time (void *a, void *b) +cmp_generalized_time (const void *a, const void *b) { - time_t *ta = (time_t *)a; - time_t *tb = (time_t *)b; + const time_t *ta = a; + const time_t *tb = b; return (int)(*tb - *ta); } @@ -407,11 +380,13 @@ test_generalized_time (void) int ntests = sizeof(tests) / sizeof(*tests); for (i = 0; i < ntests; ++i) { + char *name; tests[i].val = &values[i]; - if (asprintf (&tests[i].name, "time %d", (int)values[i]) < 0) + if (asprintf(&name, "time %d", (int)values[i]) < 0) errx(1, "malloc"); - if (tests[i].name == NULL) + if (name == NULL) errx(1, "malloc"); + tests[i].name = name; } ret = generic_test (tests, ntests, sizeof(time_t), @@ -422,14 +397,16 @@ test_generalized_time (void) cmp_generalized_time, NULL); for (i = 0; i < ntests; ++i) - free(tests[i].name); + free(rk_UNCONST(tests[i].name)); return ret; } static int -test_cmp_oid (void *a, void *b) +test_cmp_oid(const void *a, const void *b) { - return der_heim_oid_cmp((heim_oid *)a, (heim_oid *)b); + const heim_oid *oa = a; + const heim_oid *ob = b; + return der_heim_oid_cmp(oa, ob); } static unsigned oid_comp1[] = { 1, 1, 1 }; @@ -456,11 +433,13 @@ test_oid (void) int ntests = sizeof(tests) / sizeof(*tests); for (i = 0; i < ntests; ++i) { + char *name; tests[i].val = &values[i]; - if (asprintf (&tests[i].name, "oid %d", i) < 0) + if (asprintf(&name, "oid %d", i) < 0) errx(1, "malloc"); - if (tests[i].name == NULL) + if (name == NULL) errx(1, "malloc"); + tests[i].name = name; } ret = generic_test (tests, ntests, sizeof(heim_oid), @@ -471,14 +450,17 @@ test_oid (void) test_cmp_oid, NULL); for (i = 0; i < ntests; ++i) - free(tests[i].name); + free(rk_UNCONST(tests[i].name)); return ret; } static int -test_cmp_bit_string (void *a, void *b) +test_cmp_bit_string(const void *a, const void *b) { - return der_heim_bit_string_cmp((heim_bit_string *)a, (heim_bit_string *)b); + const heim_bit_string *sa = a; + const heim_bit_string *sb = a; + + return der_heim_bit_string_cmp(sa, sb); } static int @@ -488,17 +470,19 @@ test_bit_string (void) {NULL, 1, "\x00", NULL } }; heim_bit_string values[] = { - { 0, "" } + { 0, rk_UNCONST("") } }; int i, ret; int ntests = sizeof(tests) / sizeof(*tests); for (i = 0; i < ntests; ++i) { + char *name; tests[i].val = &values[i]; - if (asprintf (&tests[i].name, "bit_string %d", i) < 0) + if (asprintf(&name, "bit_string %d", i) < 0) errx(1, "malloc"); - if (tests[i].name == NULL) + if (name == NULL) errx(1, "malloc"); + tests[i].name = name; } ret = generic_test (tests, ntests, sizeof(heim_bit_string), @@ -509,14 +493,16 @@ test_bit_string (void) test_cmp_bit_string, NULL); for (i = 0; i < ntests; ++i) - free(tests[i].name); + free(rk_UNCONST(tests[i].name)); return ret; } static int -test_cmp_heim_integer (void *a, void *b) +test_cmp_heim_integer(const void *a, const void *b) { - return der_heim_integer_cmp((heim_integer *)a, (heim_integer *)b); + const heim_integer *ia = a; + const heim_integer *ib = b; + return der_heim_integer_cmp(ia, ib); } static int @@ -535,15 +521,15 @@ test_heim_integer (void) }; heim_integer values[] = { - { 1, "\x01", 1 }, - { 1, "\xff", 1 }, - { 2, "\x01\xff", 1 }, - { 2, "\x10\xff", 1 }, - { 2, "\xff\x01", 1 }, - { 2, "\xff\x00", 1 }, - { 0, "", 0 }, - { 1, "\x01", 0 }, - { 1, "\x80", 0 }, + { 1, rk_UNCONST("\x01"), 1 }, + { 1, rk_UNCONST("\xff"), 1 }, + { 2, rk_UNCONST("\x01\xff"), 1 }, + { 2, rk_UNCONST("\x10\xff"), 1 }, + { 2, rk_UNCONST("\xff\x01"), 1 }, + { 2, rk_UNCONST("\xff\x00"), 1 }, + { 0, rk_UNCONST(""), 0 }, + { 1, rk_UNCONST("\x01"), 0 }, + { 1, rk_UNCONST("\x80"), 0 }, }; int i, ret; int ntests = sizeof(tests) / sizeof(tests[0]); @@ -551,11 +537,13 @@ test_heim_integer (void) heim_integer i2; for (i = 0; i < ntests; ++i) { + char *name; tests[i].val = &values[i]; - if (asprintf (&tests[i].name, "heim_integer %d", i) < 0) + if (asprintf(&name, "heim_integer %d", i) < 0) errx(1, "malloc"); - if (tests[i].name == NULL) + if (name == NULL) errx(1, "malloc"); + tests[i].name = name; } ret = generic_test (tests, ntests, sizeof(heim_integer), @@ -566,7 +554,7 @@ test_heim_integer (void) test_cmp_heim_integer, NULL); for (i = 0; i < ntests; ++i) - free (tests[i].name); + free(rk_UNCONST(tests[i].name)); if (ret) return ret; @@ -582,9 +570,9 @@ test_heim_integer (void) } static int -test_cmp_boolean (void *a, void *b) +test_cmp_boolean(const void *a, const void *b) { - return !!*(int *)a != !!*(int *)b; + return !!*(const int *)a != !!*(const int *)b; } static int @@ -602,11 +590,13 @@ test_boolean (void) heim_integer i2; for (i = 0; i < ntests; ++i) { + char *name; tests[i].val = &values[i]; - if (asprintf (&tests[i].name, "heim_boolean %d", i) < 0) + if (asprintf(&name, "heim_boolean %d", i) < 0) errx(1, "malloc"); - if (tests[i].name == NULL) + if (name == NULL) errx(1, "malloc"); + tests[i].name = name; } ret = generic_test (tests, ntests, sizeof(int), @@ -617,7 +607,7 @@ test_boolean (void) test_cmp_boolean, NULL); for (i = 0; i < ntests; ++i) - free (tests[i].name); + free(rk_UNCONST(tests[i].name)); if (ret) return ret; @@ -822,10 +812,10 @@ check_heim_integer_same(const char *p, const char *norm_p, heim_integer *i) static int test_heim_int_format(void) { - heim_integer i = { 1, "\x10", 0 }; - heim_integer i2 = { 1, "\x10", 1 }; - heim_integer i3 = { 1, "\01", 0 }; - char *p = + heim_integer i = { 1, rk_UNCONST("\x10"), 0 }; + heim_integer i2 = { 1, rk_UNCONST("\x10"), 1 }; + heim_integer i3 = { 1, rk_UNCONST("\01"), 0 }; + const char *p = "FFFFFFFF" "FFFFFFFF" "C90FDAA2" "2168C234" "C4C6628B" "80DC1CD1" "29024E08" "8A67CC74" "020BBEA6" "3B139B22" "514A0879" "8E3404DD" "EF9519B3" "CD3A431B" "302B0A6D" "F25F1437" "4FE1356D" "6D51C245" @@ -834,7 +824,7 @@ test_heim_int_format(void) "FFFFFFFF" "FFFFFFFF"; heim_integer bni = { 128, - "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC9\x0F\xDA\xA2" + rk_UNCONST("\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC9\x0F\xDA\xA2" "\x21\x68\xC2\x34\xC4\xC6\x62\x8B\x80\xDC\x1C\xD1" "\x29\x02\x4E\x08\x8A\x67\xCC\x74\x02\x0B\xBE\xA6" "\x3B\x13\x9B\x22\x51\x4A\x08\x79\x8E\x34\x04\xDD" @@ -844,7 +834,7 @@ test_heim_int_format(void) "\xA6\x37\xED\x6B\x0B\xFF\x5C\xB6\xF4\x06\xB7\xED" "\xEE\x38\x6B\xFB\x5A\x89\x9F\xA5\xAE\x9F\x24\x11" "\x7C\x4B\x1F\xE6\x49\x28\x66\x51\xEC\xE6\x53\x81" - "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", + "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"), 0 }; heim_integer f; @@ -971,28 +961,32 @@ test_misc_cmp(void) /* diffrent lengths are diffrent */ { - const heim_octet_string os1 = { 1, "a" } , os2 = { 0, NULL }; + const heim_octet_string os1 = { 1, rk_UNCONST("a") }; + const heim_octet_string os2 = { 0, NULL }; ret = der_heim_octet_string_cmp(&os1, &os2); if (ret == 0) return 1; } /* diffrent data are diffrent */ { - const heim_octet_string os1 = { 1, "a" } , os2 = { 1, "b" }; + const heim_octet_string os1 = { 1, rk_UNCONST("a") }; + const heim_octet_string os2 = { 1, rk_UNCONST("b") }; ret = der_heim_octet_string_cmp(&os1, &os2); if (ret == 0) return 1; } /* diffrent lengths are diffrent */ { - const heim_bit_string bs1 = { 8, "a" } , bs2 = { 7, "a" }; + const heim_bit_string bs1 = { 8, rk_UNCONST("a") }; + const heim_bit_string bs2 = { 7, rk_UNCONST("a") }; ret = der_heim_bit_string_cmp(&bs1, &bs2); if (ret == 0) return 1; } /* diffrent data are diffrent */ { - const heim_bit_string bs1 = { 7, "\x0f" } , bs2 = { 7, "\x02" }; + const heim_bit_string bs1 = { 7, rk_UNCONST("\x0f") }; + const heim_bit_string bs2 = { 7, rk_UNCONST("\x02") }; ret = der_heim_bit_string_cmp(&bs1, &bs2); if (ret == 0) return 1; diff --git a/lib/asn1/check-gen.c b/lib/asn1/check-gen.c index 9ef295d3b..0ec1306dc 100644 --- a/lib/asn1/check-gen.c +++ b/lib/asn1/check-gen.c @@ -75,16 +75,16 @@ my_free_vers(my_vers *v) v->v = -1; } -static char *lha_principal[] = { "lha" }; -static char *lharoot_princ[] = { "lha", "root" }; -static char *datan_princ[] = { "host", "nutcracker.e.kth.se" }; -static char *nada_tgt_principal[] = { "krbtgt", "NADA.KTH.SE" }; +static const char *const lha_principal[] = { "lha" }; +static const char *const lharoot_princ[] = { "lha", "root" }; +static const char *const datan_princ[] = { "host", "nutcracker.e.kth.se" }; +static const char *const nada_tgt_principal[] = { "krbtgt", "NADA.KTH.SE" }; static int -cmp_principal (void *a, void *b) +cmp_principal(const void *a, const void *b) { - Principal *pa = a; - Principal *pb = b; + const Principal *pa = a; + const Principal *pb = b; int i; COMPARE_STRING(pa,pb,realm); @@ -124,19 +124,24 @@ test_principal (void) Principal values[] = { - { { KRB5_NT_PRINCIPAL, { 1, lha_principal } }, "SU.SE", NULL }, - { { KRB5_NT_PRINCIPAL, { 2, lharoot_princ } }, "SU.SE", NULL }, - { { KRB5_NT_SRV_HST, { 2, datan_princ } }, "E.KTH.SE", NULL } + { { KRB5_NT_PRINCIPAL, { 1, rk_UNCONST(lha_principal) } }, + rk_UNCONST("SU.SE"), NULL }, + { { KRB5_NT_PRINCIPAL, { 2, rk_UNCONST(lharoot_princ) } }, + rk_UNCONST("SU.SE"), NULL }, + { { KRB5_NT_SRV_HST, { 2, rk_UNCONST(datan_princ) } }, + rk_UNCONST("E.KTH.SE"), NULL } }; int i, ret; int ntests = sizeof(tests) / sizeof(*tests); for (i = 0; i < ntests; ++i) { + char *name; tests[i].val = &values[i]; - if (asprintf (&tests[i].name, "Principal %d", i) < 0) + if (asprintf(&name, "Principal %d", i) < 0) errx(1, "malloc"); - if (tests[i].name == NULL) + if (name == NULL) errx(1, "malloc"); + tests[i].name = name; } ret = generic_test (tests, ntests, sizeof(Principal), @@ -147,16 +152,16 @@ test_principal (void) cmp_principal, NULL); for (i = 0; i < ntests; ++i) - free (tests[i].name); + free(rk_UNCONST(tests[i].name)); return ret; } static int -cmp_authenticator (void *a, void *b) +cmp_authenticator(const void *a, const void *b) { - Authenticator *aa = a; - Authenticator *ab = b; + const Authenticator *aa = a; + const Authenticator *ab = b; int i; COMPARE_INTEGER(aa,ab,authenticator_vno); @@ -195,20 +200,24 @@ test_authenticator (void) }; Authenticator values[] = { - { 5, "E.KTH.SE", { KRB5_NT_PRINCIPAL, { 1, lha_principal } }, + { 5, rk_UNCONST("E.KTH.SE"), + { KRB5_NT_PRINCIPAL, { 1, rk_UNCONST(lha_principal) } }, NULL, 10, 99, NULL, NULL, NULL }, - { 5, "SU.SE", { KRB5_NT_PRINCIPAL, { 2, lharoot_princ } }, + { 5, rk_UNCONST("SU.SE"), + { KRB5_NT_PRINCIPAL, { 2, rk_UNCONST(lharoot_princ) } }, NULL, 292, 999, NULL, NULL, NULL } }; int i, ret; int ntests = sizeof(tests) / sizeof(*tests); for (i = 0; i < ntests; ++i) { + char *name; tests[i].val = &values[i]; - if (asprintf (&tests[i].name, "Authenticator %d", i) < 0) + if (asprintf(&name, "Authenticator %d", i) < 0) errx(1, "malloc"); - if (tests[i].name == NULL) + if (name == NULL) errx(1, "malloc"); + tests[i].name = name; } ret = generic_test (tests, ntests, sizeof(Authenticator), @@ -219,16 +228,16 @@ test_authenticator (void) cmp_authenticator, (generic_copy)copy_Authenticator); for (i = 0; i < ntests; ++i) - free(tests[i].name); + free(rk_UNCONST(tests[i].name)); return ret; } static int -cmp_KRB_ERROR (void *a, void *b) +cmp_KRB_ERROR(const void *a, const void *b) { - KRB_ERROR *aa = a; - KRB_ERROR *ab = b; + const KRB_ERROR *aa = a; + const KRB_ERROR *ab = b; int i; COMPARE_INTEGER(aa,ab,pvno); @@ -286,9 +295,10 @@ test_krb_error (void) }; int ntests = sizeof(tests) / sizeof(*tests); KRB_ERROR e1; - PrincipalName lhaprincipalname = { 1, { 1, lha_principal } }; - PrincipalName tgtprincipalname = { 1, { 2, nada_tgt_principal } }; - char *realm = "NADA.KTH.SE"; + PrincipalName lhaprincipalname = { 1, { 1, rk_UNCONST(lha_principal) } }; + PrincipalName tgtprincipalname = { 1, { 2, rk_UNCONST(nada_tgt_principal) } }; + char *realm = strdup("NADA.KTH.SE"); + int ret; e1.pvno = 5; e1.msg_type = 30; @@ -299,27 +309,29 @@ test_krb_error (void) e1.error_code = 31; e1.crealm = &realm; e1.cname = &lhaprincipalname; - e1.realm = "NADA.KTH.SE"; + e1.realm = rk_UNCONST("NADA.KTH.SE"); e1.sname = tgtprincipalname; e1.e_text = NULL; e1.e_data = NULL; tests[0].val = &e1; - return generic_test (tests, ntests, sizeof(KRB_ERROR), + ret = generic_test (tests, ntests, sizeof(KRB_ERROR), (generic_encode)encode_KRB_ERROR, (generic_length)length_KRB_ERROR, (generic_decode)decode_KRB_ERROR, (generic_free)free_KRB_ERROR, cmp_KRB_ERROR, (generic_copy)copy_KRB_ERROR); + free(realm); + return ret; } static int -cmp_Name (void *a, void *b) +cmp_Name(const void *a, const void *b) { - Name *aa = a; - Name *ab = b; + const Name *aa = a; + const Name *ab = b; COMPARE_INTEGER(aa,ab,element); @@ -363,13 +375,13 @@ test_Name (void) atv1[0].type.length = sizeof(cmp_CN)/sizeof(cmp_CN[0]); atv1[0].type.components = cmp_CN; atv1[0].value.element = choice_DirectoryString_printableString; - atv1[0].value.u.printableString.data = "Love"; + atv1[0].value.u.printableString.data = rk_UNCONST("Love"); atv1[0].value.u.printableString.length = 4; atv1[1].type.length = sizeof(cmp_L)/sizeof(cmp_L[0]); atv1[1].type.components = cmp_L; atv1[1].value.element = choice_DirectoryString_printableString; - atv1[1].value.u.printableString.data = "STOCKHOLM"; + atv1[1].value.u.printableString.data = rk_UNCONST("STOCKHOLM"); atv1[1].value.u.printableString.length = 9; /* n2 */ @@ -382,13 +394,13 @@ test_Name (void) atv2[0].type.length = sizeof(cmp_L)/sizeof(cmp_L[0]); atv2[0].type.components = cmp_L; atv2[0].value.element = choice_DirectoryString_printableString; - atv2[0].value.u.printableString.data = "STOCKHOLM"; + atv2[0].value.u.printableString.data = rk_UNCONST("STOCKHOLM"); atv2[0].value.u.printableString.length = 9; atv2[1].type.length = sizeof(cmp_CN)/sizeof(cmp_CN[0]); atv2[1].type.components = cmp_CN; atv2[1].value.element = choice_DirectoryString_printableString; - atv2[1].value.u.printableString.data = "Love"; + atv2[1].value.u.printableString.data = rk_UNCONST("Love"); atv2[1].value.u.printableString.length = 4; /* */ @@ -405,10 +417,10 @@ test_Name (void) } static int -cmp_KeyUsage (void *a, void *b) +cmp_KeyUsage(const void *a, const void *b) { - KeyUsage *aa = a; - KeyUsage *ab = b; + const KeyUsage *aa = a; + const KeyUsage *ab = b; return KeyUsage2int(*aa) != KeyUsage2int(*ab); } @@ -465,10 +477,10 @@ test_bit_string (void) } static int -cmp_TicketFlags (void *a, void *b) +cmp_TicketFlags(const void *a, const void *b) { - TicketFlags *aa = a; - TicketFlags *ab = b; + const TicketFlags *aa = a; + const TicketFlags *ab = b; return TicketFlags2int(*aa) != TicketFlags2int(*ab); } @@ -525,10 +537,10 @@ test_bit_string_rfc1510 (void) } static int -cmp_KerberosTime (void *a, void *b) +cmp_KerberosTime(const void *a, const void *b) { - KerberosTime *aa = a; - KerberosTime *ab = b; + const KerberosTime *aa = a; + const KerberosTime *ab = b; return *aa != *ab; } @@ -669,7 +681,7 @@ test_cert(void) for (i = 0; i < sizeof(certs)/sizeof(certs[0]); i++) { - ret = decode_Certificate((unsigned char *)certs[i].cert, + ret = decode_Certificate((const unsigned char *)certs[i].cert, certs[i].len, &c, &size); if (ret) return ret; @@ -759,7 +771,7 @@ test_SignedData(void) for (i = 0; i < sizeof(signeddata) / sizeof(signeddata[0]); i++) { - ret = decode_SignedData((unsigned char *)signeddata[i].sd, + ret = decode_SignedData((const unsigned char *)signeddata[i].sd, signeddata[i].len, &sd, &size); if (ret) return ret; @@ -772,10 +784,10 @@ test_SignedData(void) static int -cmp_TESTLargeTag (void *a, void *b) +cmp_TESTLargeTag(const void *a, const void *b) { - TESTLargeTag *aa = a; - TESTLargeTag *ab = b; + const TESTLargeTag *aa = a; + const TESTLargeTag *ab = b; COMPARE_INTEGER(aa,ab,foo); COMPARE_INTEGER(aa,ab,bar); @@ -811,7 +823,7 @@ struct test_data { int ok; size_t len; size_t expected_len; - void *data; + const void *data; }; static int @@ -993,7 +1005,7 @@ check_tag_length64s(void) } static int -cmp_TESTChoice (void *a, void *b) +cmp_TESTChoice(const void *a, const void *b) { return 0; } @@ -1031,7 +1043,7 @@ test_choice (void) memset(&c2_2, 0, sizeof(c2_2)); c2_2.element = choice_TESTChoice2_asn1_ellipsis; - c2_2.u.asn1_ellipsis.data = "\xa2\x03\x02\x01\x02"; + c2_2.u.asn1_ellipsis.data = rk_UNCONST("\xa2\x03\x02\x01\x02"); c2_2.u.asn1_ellipsis.length = 5; tests[1].val = &c2_2; @@ -1142,7 +1154,7 @@ test_extensible_choice(void) free_PA_FX_FAST_REQUEST(&r2); r.element = 0; - r.u.asn1_ellipsis.data = "hello"; + r.u.asn1_ellipsis.data = rk_UNCONST("hello"); r.u.asn1_ellipsis.length = sizeof("hello") - 1; ret = copy_PA_FX_FAST_REQUEST(&r, &r2); if (ret) @@ -1261,10 +1273,10 @@ test_decorated_choice(void) static int -cmp_TESTImplicit (void *a, void *b) +cmp_TESTImplicit(const void *a, const void *b) { - TESTImplicit *aa = a; - TESTImplicit *ab = b; + const TESTImplicit *aa = a; + const TESTImplicit *ab = b; COMPARE_INTEGER(aa,ab,ti1); COMPARE_INTEGER(aa,ab,ti2.foo); @@ -1273,10 +1285,10 @@ cmp_TESTImplicit (void *a, void *b) } static int -cmp_TESTImplicit2 (void *a, void *b) +cmp_TESTImplicit2(const void *a, const void *b) { - TESTImplicit2 *aa = a; - TESTImplicit2 *ab = b; + const TESTImplicit2 *aa = a; + const TESTImplicit2 *ab = b; COMPARE_INTEGER(aa,ab,ti1); COMPARE_INTEGER(aa,ab,ti3); @@ -1287,10 +1299,10 @@ cmp_TESTImplicit2 (void *a, void *b) } static int -cmp_TESTImplicit3 (void *a, void *b) +cmp_TESTImplicit3(const void *a, const void *b) { - TESTImplicit3 *aa = a; - TESTImplicit3 *ab = b; + const TESTImplicit3 *aa = a; + const TESTImplicit3 *ab = b; COMPARE_INTEGER(aa,ab,element); if (aa->element == choice_TESTImplicit3_ti1) { @@ -1303,10 +1315,10 @@ cmp_TESTImplicit3 (void *a, void *b) } static int -cmp_TESTImplicit4 (void *a, void *b) +cmp_TESTImplicit4(const void *a, const void *b) { - TESTImplicit4 *aa = a; - TESTImplicit4 *ab = b; + const TESTImplicit4 *aa = a; + const TESTImplicit4 *ab = b; COMPARE_INTEGER(aa,ab,element); if (aa->element == choice_TESTImplicit4_ti1) { @@ -1445,10 +1457,10 @@ test_implicit (void) } static int -cmp_TESTAlloc (void *a, void *b) +cmp_TESTAlloc(const void *a, const void *b) { - TESTAlloc *aa = a; - TESTAlloc *ab = b; + const TESTAlloc *aa = a; + const TESTAlloc *ab = b; IF_OPT_COMPARE(aa,ab,tagless) { COMPARE_INTEGER(aa,ab,tagless->ai); @@ -1516,7 +1528,7 @@ test_taglessalloc (void) c3.tagless = NULL; c3.three = 4; c3.tagless2 = &any3; - any3.data = "\x02\x01\x05"; + any3.data = rk_UNCONST("\x02\x01\x05"); any3.length = 3; tests[2].val = &c3; @@ -1534,10 +1546,10 @@ test_taglessalloc (void) } static int -cmp_TESTOptional (void *a, void *b) +cmp_TESTOptional(const void *a, const void *b) { - TESTOptional *aa = a; - TESTOptional *ab = b; + const TESTOptional *aa = a; + const TESTOptional *ab = b; IF_OPT_COMPARE(aa,ab,zero) { COMPARE_OPT_INTEGER(aa,ab,zero); @@ -1867,10 +1879,10 @@ check_TESTMechTypeList(void) } static int -cmp_TESTSeqOf4(void *a, void *b) +cmp_TESTSeqOf4(const void *a, const void *b) { - TESTSeqOf4 *aa = a; - TESTSeqOf4 *ab = b; + const TESTSeqOf4 *aa = a; + const TESTSeqOf4 *ab = b; int i; IF_OPT_COMPARE(aa, ab, b1) { @@ -1987,33 +1999,33 @@ test_seq4 (void) c[2].b3 = NULL; tests[2].val = &c[2]; - b1val[3].s1.data = ""; + b1val[3].s1.data = rk_UNCONST(""); b1val[3].s1.length = 0; b1val[3].u1 = 1LL; - b1val[3].s2.data = "\x01\x02"; + b1val[3].s2.data = rk_UNCONST("\x01\x02"); b1val[3].s2.length = 2; b1val[3].u2 = -1LL; - b2val[3].s1.data = ""; + b2val[3].s1.data = rk_UNCONST(""); b2val[3].s1.length = 0; b2val[3].u1 = 1LL; - b2val[3].s2.data = "\x01\x02"; + b2val[3].s2.data = rk_UNCONST("\x01\x02"); b2val[3].s2.length = 2; b2val[3].u2 = -1LL; - b2val[3].s3.data = "\x00\x01\x02\x03"; + b2val[3].s3.data = rk_UNCONST("\x00\x01\x02\x03"); b2val[3].s3.length = 4; b2val[3].u3 = 1LL<<63; - b3val[3].s1.data = ""; + b3val[3].s1.data = rk_UNCONST(""); b3val[3].s1.length = 0; b3val[3].u1 = 1LL; - b3val[3].s2.data = "\x01\x02"; + b3val[3].s2.data = rk_UNCONST("\x01\x02"); b3val[3].s2.length = 2; b3val[3].u2 = -1LL; - b3val[3].s3.data = "\x00\x01\x02\x03"; + b3val[3].s3.data = rk_UNCONST("\x00\x01\x02\x03"); b3val[3].s3.length = 4; b3val[3].u3 = 1LL<<63; - b3val[3].s4.data = "\x00"; + b3val[3].s4.data = rk_UNCONST("\x00"); b3val[3].s4.length = 1; b3val[3].u4 = 1LL<<32; @@ -2039,10 +2051,10 @@ test_seq4 (void) } static int -cmp_test_seqof5 (void *a, void *b) +cmp_test_seqof5(const void *a, const void *b) { - TESTSeqOf5 *aval = a; - TESTSeqOf5 *bval = b; + const TESTSeqOf5 *aval = a; + const TESTSeqOf5 *bval = b; IF_OPT_COMPARE(aval, bval, outer) { COMPARE_INTEGER(&aval->outer->inner, &bval->outer->inner, u0); @@ -2133,10 +2145,10 @@ test_seqof5(void) } static int -cmp_default(void *a, void *b) +cmp_default(const void *a, const void *b) { - TESTDefault *aa = a; - TESTDefault *ab = b; + const TESTDefault *aa = a; + const TESTDefault *ab = b; COMPARE_STRING(aa,ab,name); COMPARE_INTEGER(aa,ab,version); @@ -2173,23 +2185,25 @@ test_default(void) TESTDefault values[] = { #ifndef DISABLE_TEST_64 - { "Heimdal", 8, 9223372036854775807LL, 1 }, + { rk_UNCONST("Heimdal"), 8, 9223372036854775807LL, 1 }, #endif - { "heimdal", 7, 2147483647, 0 }, + { rk_UNCONST("heimdal"), 7, 2147483647, 0 }, #ifndef DISABLE_TEST_64 - { "Heimdal", 7, 9223372036854775807LL, 0 }, + { rk_UNCONST("Heimdal"), 7, 9223372036854775807LL, 0 }, #endif - { "heimdal", 8, 2147483647, 1 }, + { rk_UNCONST("heimdal"), 8, 2147483647, 1 }, }; int i, ret; int ntests = sizeof(tests) / sizeof(*tests); for (i = 0; i < ntests; ++i) { + char *name; tests[i].val = &values[i]; - if (asprintf (&tests[i].name, "TESTDefault %d", i) < 0) + if (asprintf(&name, "TESTDefault %d", i) < 0) errx(1, "malloc"); - if (tests[i].name == NULL) + if (name == NULL) errx(1, "malloc"); + tests[i].name = name; } ret = generic_test (tests, ntests, sizeof(TESTDefault), @@ -2200,7 +2214,7 @@ test_default(void) cmp_default, (generic_copy)copy_TESTDefault); for (i = 0; i < ntests; ++i) - free(tests[i].name); + free(rk_UNCONST(tests[i].name)); return ret; } diff --git a/lib/asn1/check-template.c b/lib/asn1/check-template.c index ef5bd6990..f96d9b4f4 100644 --- a/lib/asn1/check-template.c +++ b/lib/asn1/check-template.c @@ -62,7 +62,7 @@ my_free_vers(my_vers *v) } static int -cmp_dummy (void *a, void *b) +cmp_dummy(const void *a, const void *b) { return 0; } @@ -169,8 +169,8 @@ test_seqofseq2(void) TESTSeqOfSeq2 c0, c1, c2; struct TESTSeqOfSeq2_val i[2]; - i[0].string = "ett"; - i[1].string = "tvaa"; + i[0].string = rk_UNCONST("ett"); + i[1].string = rk_UNCONST("tvaa"); c0.len = 0; c0.val = NULL; @@ -213,8 +213,8 @@ test_seqof2(void) TESTSeqOf2 c0, c1, c2; heim_general_string i[2]; - i[0] = "foo"; - i[1] = "bar"; + i[0] = rk_UNCONST("foo"); + i[1] = rk_UNCONST("bar"); c0.strings.val = NULL; c0.strings.len = 0; @@ -261,8 +261,8 @@ test_seqof3(void) struct TESTSeqOf3_strings s1, s2, s3; heim_general_string i[2]; - i[0] = "foo"; - i[1] = "bar"; + i[0] = rk_UNCONST("foo"); + i[1] = rk_UNCONST("bar"); c0.strings = NULL; tests[0].val = &c0; @@ -370,33 +370,33 @@ test_seqof4(void) c[2].b3 = NULL; tests[2].val = &c[2]; - b1val[3].s1.data = ""; + b1val[3].s1.data = rk_UNCONST(""); b1val[3].s1.length = 0; b1val[3].u1 = 1LL; - b1val[3].s2.data = "\x01\x02"; + b1val[3].s2.data = rk_UNCONST("\x01\x02"); b1val[3].s2.length = 2; b1val[3].u2 = (TESTuint64)-1LL; - b2val[3].s1.data = ""; + b2val[3].s1.data = rk_UNCONST(""); b2val[3].s1.length = 0; b2val[3].u1 = 1LL; - b2val[3].s2.data = "\x01\x02"; + b2val[3].s2.data = rk_UNCONST("\x01\x02"); b2val[3].s2.length = 2; b2val[3].u2 = (TESTuint64)-1LL; - b2val[3].s3.data = "\x00\x01\x02\x03"; + b2val[3].s3.data = rk_UNCONST("\x00\x01\x02\x03"); b2val[3].s3.length = 4; b2val[3].u3 = 1ULL<<63; - b3val[3].s1.data = ""; + b3val[3].s1.data = rk_UNCONST(""); b3val[3].s1.length = 0; b3val[3].u1 = 1LL; - b3val[3].s2.data = "\x01\x02"; + b3val[3].s2.data = rk_UNCONST("\x01\x02"); b3val[3].s2.length = 2; b3val[3].u2 = (TESTuint64)-1LL; - b3val[3].s3.data = "\x00\x01\x02\x03"; + b3val[3].s3.data = rk_UNCONST("\x00\x01\x02\x03"); b3val[3].s3.length = 4; b3val[3].u3 = 1ULL<<63; - b3val[3].s4.data = "\x00"; + b3val[3].s4.data = rk_UNCONST("\x00"); b3val[3].s4.length = 1; b3val[3].u4 = 1LL<<32; @@ -422,10 +422,10 @@ test_seqof4(void) } static int -cmp_test_seqof5 (void *a, void *b) +cmp_test_seqof5(const void *a, const void *b) { - TESTSeqOf5 *aval = a; - TESTSeqOf5 *bval = b; + const TESTSeqOf5 *aval = a; + const TESTSeqOf5 *bval = b; IF_OPT_COMPARE(aval, bval, outer) { COMPARE_INTEGER(&aval->outer->inner, &bval->outer->inner, u0); diff --git a/lib/gssapi/test_names.c b/lib/gssapi/test_names.c index 933635e78..71b3a7ca8 100644 --- a/lib/gssapi/test_names.c +++ b/lib/gssapi/test_names.c @@ -102,7 +102,7 @@ gss_err(int exitval, #define MAKE_URN(tail) \ { sizeof(GSS_KRB5_NAME_ATTRIBUTE_BASE_URN tail) - 1, \ - GSS_KRB5_NAME_ATTRIBUTE_BASE_URN tail } + rk_UNCONST(GSS_KRB5_NAME_ATTRIBUTE_BASE_URN tail) } /* * Test RFC6680 name attributes for Kerberos. @@ -161,7 +161,7 @@ check_name_attrs(void) /* Test the attributes we expect it to have */ v.length = sizeof("TEST.H5L.SE") - 1; - v.value = "TEST.H5L.SE"; + v.value = rk_UNCONST("TEST.H5L.SE"); assert_attr(n, GSS_KRB5_NAME_ATTRIBUTE_BASE_URN "realm", GSS_S_COMPLETE, &v, "TEST.H5L.SE", 0, 1, 0); @@ -172,7 +172,7 @@ check_name_attrs(void) GSS_S_COMPLETE, &v, "1", 0, 1, 0); v.length = sizeof("someuser") - 1; - v.value = "someuser"; + v.value = rk_UNCONST("someuser"); assert_attr(n, GSS_KRB5_NAME_ATTRIBUTE_BASE_URN "name-ncomp#0", GSS_S_COMPLETE, &v, "someuser", 0, 1, 0); @@ -216,7 +216,7 @@ check_name_attrs(void) make_composite_name(&p, &n); v.length = sizeof("TEST.H5L.SE") - 1; - v.value = "TEST.H5L.SE"; + v.value = rk_UNCONST("TEST.H5L.SE"); assert_attr(n, GSS_KRB5_NAME_ATTRIBUTE_BASE_URN "realm", GSS_S_COMPLETE, &v, "TEST.H5L.SE", 1, 1, 0); @@ -227,7 +227,7 @@ check_name_attrs(void) GSS_S_COMPLETE, &v, "1", 1, 1, 0); v.length = sizeof("someuser") - 1; - v.value = "someuser"; + v.value = rk_UNCONST("someuser"); assert_attr(n, GSS_KRB5_NAME_ATTRIBUTE_BASE_URN "name-ncomp#0", GSS_S_COMPLETE, &v, "someuser", 1, 1, 0); @@ -240,7 +240,7 @@ check_name_attrs(void) make_composite_name(&p, &n); v.length = sizeof("FOO.TEST.H5L.SE") - 1; - v.value = "FOO.TEST.H5L.SE"; + v.value = rk_UNCONST("FOO.TEST.H5L.SE"); assert_attr(n, GSS_KRB5_NAME_ATTRIBUTE_BASE_URN "peer-realm", GSS_S_COMPLETE, &v, "FOO.TEST.H5L.SE", 1, 1, 0); attr_set.count = 4; @@ -280,7 +280,7 @@ check_name_attrs(void) assert_attr(n, GSS_KRB5_NAME_ATTRIBUTE_BASE_URN "ticket-authz-data", GSS_S_COMPLETE, &v, NULL, 0, 1, 0); - free(v.value); + free(v.value); /* XXX !!! ??? */ attr_set.count = 7; assert_attr_set(n, &attr_set); diff --git a/lib/hx509/cert.c b/lib/hx509/cert.c index 58b3b14c3..df857bc23 100644 --- a/lib/hx509/cert.c +++ b/lib/hx509/cert.c @@ -303,7 +303,7 @@ init_openssl_hx509_with_propq(hx509_context context, /* Try to publish */ ossl->next = first; - if ((old = heim_base_cas_pointer((void *)&cached_ossl_hx509, + if ((old = heim_base_cas_pointer((void * _Atomic *)&cached_ossl_hx509, first, ossl)) == first) { /* * Published! Take one more ref for the reference from the global diff --git a/lib/hx509/hxtool.c b/lib/hx509/hxtool.c index 8c09f8c1c..42826fe11 100644 --- a/lib/hx509/hxtool.c +++ b/lib/hx509/hxtool.c @@ -3443,7 +3443,7 @@ jwt_verify(struct jwt_verify_options *opt, int argc, char **argv) ret = hx509_jwt_verify(context, token, - (const char **)pem_keys, + (const char * const *)pem_keys, num_keys, opt->audience_string, 0, /* use current time */ diff --git a/lib/hx509/jose.c b/lib/hx509/jose.c index 3e70412a1..c0f022071 100644 --- a/lib/hx509/jose.c +++ b/lib/hx509/jose.c @@ -309,7 +309,7 @@ verify_signature(hx509_jws_alg alg, EVP_PKEY *pkey, if (use_sig == NULL) goto out; } else { - use_sig = (unsigned char *)sig; + use_sig = (unsigned char *)rk_UNCONST(sig); use_sig_len = sig_len; } @@ -498,7 +498,7 @@ key_matches_alg(EVP_PKEY *pkey, hx509_jws_alg alg) HX509_LIB_FUNCTION int HX509_LIB_CALL hx509_jws_verify(hx509_context context, const char *token, - const char **pem_keys, + const char * const *pem_keys, size_t num_keys, void **payload_out, size_t *payload_len_out) @@ -1035,7 +1035,7 @@ out: HX509_LIB_FUNCTION int HX509_LIB_CALL hx509_jwt_verify(hx509_context context, const char *token, - const char **pem_keys, + const char * const *pem_keys, size_t num_keys, const char *required_aud, time_t time_now, diff --git a/lib/hx509/test_expr.c b/lib/hx509/test_expr.c index 8c2c0a555..a0021ba9f 100644 --- a/lib/hx509/test_expr.c +++ b/lib/hx509/test_expr.c @@ -4,7 +4,7 @@ struct foo { int val; - char *str; + const char *str; } foo[] = { { 0, "FALSE" }, { 1, "TRUE" }, diff --git a/lib/hx509/test_soft_pkcs11.c b/lib/hx509/test_soft_pkcs11.c index cdffcf803..2f3da175b 100644 --- a/lib/hx509/test_soft_pkcs11.c +++ b/lib/hx509/test_soft_pkcs11.c @@ -40,14 +40,14 @@ static CK_FUNCTION_LIST_PTR func; static CK_RV find_object(CK_SESSION_HANDLE session, - char *id, + const char *id, CK_OBJECT_CLASS key_class, CK_OBJECT_HANDLE_PTR object) { CK_ULONG object_count; CK_RV ret; CK_ATTRIBUTE search_data[] = { - {CKA_ID, id, 0 }, + {CKA_ID, rk_UNCONST(id), 0 }, {CKA_CLASS, &key_class, sizeof(key_class)} }; CK_ULONG num_search_data = sizeof(search_data)/sizeof(search_data[0]); @@ -73,7 +73,7 @@ find_object(CK_SESSION_HANDLE session, return CKR_OK; } -static char *sighash = "hej"; +static const char *sighash = "hej"; static char signature[1024]; @@ -130,7 +130,7 @@ main(int argc, char **argv) if (token_info.flags & CKF_LOGIN_REQUIRED) { ret = (*func->C_Login)(session, CKU_USER, - (unsigned char*)"foobar", 6); + (unsigned char *)rk_UNCONST("foobar"), 6); if (ret != CKR_OK) errx(1, "C_Login failed: %d", (int)ret); } @@ -161,7 +161,8 @@ main(int argc, char **argv) return 1; ck_sigsize = sizeof(signature); - ret = (*func->C_Sign)(session, (CK_BYTE *)sighash, strlen(sighash), + ret = (*func->C_Sign)(session, + (CK_BYTE *)rk_UNCONST(sighash), strlen(sighash), (CK_BYTE *)signature, &ck_sigsize); if (ret != CKR_OK) { printf("C_Sign failed with: %d\n", (int)ret); @@ -173,7 +174,7 @@ main(int argc, char **argv) return 1; ret = (*func->C_Verify)(session, (CK_BYTE *)signature, ck_sigsize, - (CK_BYTE *)sighash, strlen(sighash)); + (CK_BYTE *)rk_UNCONST(sighash), strlen(sighash)); if (ret != CKR_OK) { printf("message: %d\n", (int)ret); return 1; diff --git a/lib/krb5/aes-test.c b/lib/krb5/aes-test.c index b3f3df2dc..1ed0ce590 100644 --- a/lib/krb5/aes-test.c +++ b/lib/krb5/aes-test.c @@ -47,15 +47,15 @@ hex_dump_data(const void *data, size_t length) free(p); } -struct { - char *password; - char *salt; +const struct { + const char *password; + const char *salt; int saltlen; int iterations; krb5_enctype enctype; size_t keylen; - char *pbkdf2; - char *key; + const char *pbkdf2; + const char *key; } keys[] = { { "password", @@ -223,11 +223,11 @@ string_to_key_test(krb5_context context) for (i = 0; i < sizeof(keys)/sizeof(keys[0]); i++) { - password.data = keys[i].password; + password.data = rk_UNCONST(keys[i].password); password.length = strlen(password.data); salt.salttype = KRB5_PW_SALT; - salt.saltvalue.data = keys[i].salt; + salt.saltvalue.data = rk_UNCONST(keys[i].salt); if (keys[i].saltlen == -1) salt.saltvalue.length = strlen(salt.saltvalue.data); else @@ -590,17 +590,17 @@ krb_enc_mit(krb5_context context, return 0; } -struct { +const struct { krb5_enctype enctype; unsigned usage; size_t keylen; - void *key; + const void *key; size_t elen; - void* edata; + const void *edata; size_t plen; - void *pdata; + const void *pdata; size_t clen; /* checksum length */ - void *cdata; /* checksum data */ + const void *cdata; /* checksum data */ } krbencs[] = { { ETYPE_AES256_CTS_HMAC_SHA1_96, @@ -753,7 +753,7 @@ krb_enc_test(krb5_context context) kb.keytype = krbencs[i].enctype; kb.keyvalue.length = krbencs[i].keylen; - kb.keyvalue.data = krbencs[i].key; + kb.keyvalue.data = rk_UNCONST(krbencs[i].key); ret = krb5_crypto_init(context, &kb, krbencs[i].enctype, &crypto); if (ret) @@ -761,9 +761,9 @@ krb_enc_test(krb5_context context) ret, i); cipher.length = krbencs[i].elen; - cipher.data = krbencs[i].edata; + cipher.data = rk_UNCONST(krbencs[i].edata); plain.length = krbencs[i].plen; - plain.data = krbencs[i].pdata; + plain.data = rk_UNCONST(krbencs[i].pdata); ret = krb_enc(context, crypto, krbencs[i].usage, &cipher, &plain); @@ -791,7 +791,7 @@ krb_enc_test(krb5_context context) krb5_data checksum; checksum.length = krbencs[i].clen; - checksum.data = krbencs[i].cdata; + checksum.data = rk_UNCONST(krbencs[i].cdata); ret = krb_checksum_iov(context, crypto, krbencs[i].usage, &plain, &checksum); @@ -837,12 +837,12 @@ iov_test(krb5_context context, krb5_enctype enctype) if (ret) krb5_err(context, 1, ret, "krb5_crypto_length"); - signonly.data = "This should be signed"; + signonly.data = rk_UNCONST("This should be signed"); signonly.length = strlen(signonly.data); - in.data = "inputdata"; + in.data = rk_UNCONST("inputdata"); in.length = strlen(in.data); - in2.data = "INPUTDATA"; + in2.data = rk_UNCONST("INPUTDATA"); in2.length = strlen(in2.data); diff --git a/lib/krb5/context.c b/lib/krb5/context.c index cce88bd57..800258613 100644 --- a/lib/krb5/context.c +++ b/lib/krb5/context.c @@ -288,7 +288,7 @@ init_openssl_with_propq(krb5_context context, krb5_context_ossl old = first; /* Try to publish */ - if ((old = heim_base_cas_pointer((void *)&cached_ossl, + if ((old = heim_base_cas_pointer((void * _Atomic *)&cached_ossl, first, ossl)) == first) { /* * Published! Take one more ref for the reference from the global diff --git a/lib/krb5/crypto-evp.c b/lib/krb5/crypto-evp.c index 2d2da950a..eefb9d64d 100644 --- a/lib/krb5/crypto-evp.c +++ b/lib/krb5/crypto-evp.c @@ -152,7 +152,7 @@ _krb5_evp_hmac_iov(krb5_context context, const char *mdname = EVP_MD_get0_name(md); // can't be NULL can it krb5_data current = {0, NULL}; OSSL_PARAM params[] = { - OSSL_PARAM_construct_utf8_string(OSSL_MAC_PARAM_DIGEST, (char *)mdname, 0), + OSSL_PARAM_construct_utf8_string(OSSL_MAC_PARAM_DIGEST, rk_UNCONST(mdname), 0), OSSL_PARAM_END }; size_t outlen = 0; diff --git a/lib/krb5/crypto.c b/lib/krb5/crypto.c index 0e7c0f6dc..875f0aa9c 100644 --- a/lib/krb5/crypto.c +++ b/lib/krb5/crypto.c @@ -342,7 +342,7 @@ _krb5_hmac_start_ossl(krb5_context context, { const char *mdname = EVP_MD_get0_name(md); // can't be NULL can it OSSL_PARAM params[] = { - OSSL_PARAM_construct_utf8_string(OSSL_MAC_PARAM_DIGEST, (char *)mdname, 0), + OSSL_PARAM_construct_utf8_string(OSSL_MAC_PARAM_DIGEST, rk_UNCONST(mdname), 0), OSSL_PARAM_END }; EVP_MAC *mac; diff --git a/lib/krb5/fcache.c b/lib/krb5/fcache.c index c7a2c0382..00a72e776 100644 --- a/lib/krb5/fcache.c +++ b/lib/krb5/fcache.c @@ -1305,7 +1305,6 @@ is_default_collection(krb5_context context, const char *name, const char * const *def_locs, int *res) { krb5_error_code ret; - const char *def_loc[2] = { KRB5_DEFAULT_CCNAME_FILE, NULL }; const char *const def_loc[2] = { KRB5_DEFAULT_CCNAME_FILE, NULL }; const char *sep; size_t namelen; diff --git a/lib/krb5/kx509.c b/lib/krb5/kx509.c index e927e3bc0..607b22814 100644 --- a/lib/krb5/kx509.c +++ b/lib/krb5/kx509.c @@ -777,7 +777,7 @@ mk_kx509_req(krb5_context context, const char *mdname = EVP_MD_get0_name(md); const char *hostname; OSSL_PARAM params[] = { - OSSL_PARAM_construct_utf8_string(OSSL_MAC_PARAM_DIGEST, (char *)mdname, 0), + OSSL_PARAM_construct_utf8_string(OSSL_MAC_PARAM_DIGEST, rk_UNCONST(mdname), 0), OSSL_PARAM_END }; char *start_realm = NULL; @@ -1002,7 +1002,7 @@ rd_kx509_resp(krb5_context context, const EVP_MD *md = EVP_sha1(); const char *mdname = EVP_MD_get0_name(md); OSSL_PARAM params[] = { - OSSL_PARAM_construct_utf8_string(OSSL_MAC_PARAM_DIGEST, (char *)mdname, 0), + OSSL_PARAM_construct_utf8_string(OSSL_MAC_PARAM_DIGEST, rk_UNCONST(mdname), 0), OSSL_PARAM_END }; size_t hdr_len = sizeof(version_2_0); diff --git a/lib/krb5/parse-name-test.c b/lib/krb5/parse-name-test.c index bb2fc024e..934e1a2a1 100644 --- a/lib/krb5/parse-name-test.c +++ b/lib/krb5/parse-name-test.c @@ -38,9 +38,9 @@ enum { MAX_COMPONENTS = 3 }; static struct testcase { const char *input_string; const char *output_string; - krb5_realm realm; + krb5_const_realm realm; unsigned ncomponents; - char *comp_val[MAX_COMPONENTS]; + const char *comp_val[MAX_COMPONENTS]; int realmp; } tests[] = { {"", "@", "", 1, {""}, FALSE}, diff --git a/lib/krb5/pkinit-ec.c b/lib/krb5/pkinit-ec.c index c3bf6ba31..e0243c3be 100644 --- a/lib/krb5/pkinit-ec.c +++ b/lib/krb5/pkinit-ec.c @@ -193,7 +193,7 @@ _krb5_pkinit_make_ecdh_key(krb5_context context, OSSL_PARAM p[] = { OSSL_PARAM_construct_utf8_string(OSSL_PKEY_PARAM_GROUP_NAME, - (char *)curve, 0), + rk_UNCONST(curve), 0), OSSL_PARAM_END }; diff --git a/lib/krb5/pkinit.c b/lib/krb5/pkinit.c index 84ef47ef4..7bbb54590 100644 --- a/lib/krb5/pkinit.c +++ b/lib/krb5/pkinit.c @@ -207,7 +207,7 @@ pkinit_make_dh_key(krb5_context context, EVP_PKEY *params = NULL; OSSL_PARAM p[] = { OSSL_PARAM_construct_utf8_string(OSSL_PKEY_PARAM_GROUP_NAME, - (char *)group, 0), + rk_UNCONST(group), 0), OSSL_PARAM_END }; diff --git a/lib/krb5/sp800-108-kdf.c b/lib/krb5/sp800-108-kdf.c index f9aff4490..c3343e4af 100755 --- a/lib/krb5/sp800-108-kdf.c +++ b/lib/krb5/sp800-108-kdf.c @@ -60,7 +60,7 @@ _krb5_SP800_108_HMAC_KDF(krb5_context context, EVP_MAC_CTX *ctx = NULL; const char *mdname = EVP_MD_get0_name(md); OSSL_PARAM params[] = { - OSSL_PARAM_construct_utf8_string(OSSL_MAC_PARAM_DIGEST, (char *)mdname, 0), + OSSL_PARAM_construct_utf8_string(OSSL_MAC_PARAM_DIGEST, rk_UNCONST(mdname), 0), OSSL_PARAM_END }; unsigned char *p = kdf_K0->data; diff --git a/lib/krb5/store-test.c b/lib/krb5/store-test.c index 3d0f9e0b4..6c18e312c 100644 --- a/lib/krb5/store-test.c +++ b/lib/krb5/store-test.c @@ -33,7 +33,7 @@ #include "krb5_locl.h" static void -print_data(unsigned char *data, size_t len) +print_data(const unsigned char *data, size_t len) { int i; for(i = 0; i < len; i++) { @@ -45,7 +45,7 @@ print_data(unsigned char *data, size_t len) } static int -compare(const char *name, krb5_storage *sp, void *expected, size_t len) +compare(const char *name, krb5_storage *sp, const void *expected, size_t len) { int ret = 0; krb5_data data; @@ -94,7 +94,7 @@ main(int argc, char **argv) krb5_store_int32(sp, 0x01020304); { int test = 1; - void *data; + const void *data; if(*(char*)&test) data = "\x4\x3\x2\x1"; else diff --git a/lib/krb5/test_canon.c b/lib/krb5/test_canon.c index 8389c02c6..73e1f1541 100755 --- a/lib/krb5/test_canon.c +++ b/lib/krb5/test_canon.c @@ -58,7 +58,7 @@ main(int argc, char **argv) char *hostname = NULL; char *unparsed = NULL; char *unparsed_canon = NULL; - char *during; + const char *during; char *cmp_to = NULL;; int do_kt = 0; int do_get_creds = 0; diff --git a/lib/krb5/test_cc.c b/lib/krb5/test_cc.c index 0ca582eaa..25843d335 100644 --- a/lib/krb5/test_cc.c +++ b/lib/krb5/test_cc.c @@ -415,10 +415,10 @@ test_mcc_default(void) } } -struct { - char *str; +const struct { + const char *str; int fail; - char *res; + const char *res; } cc_names[] = { { "foo", 0, "foo" }, { "foo%}", 0, "foo%}" }, diff --git a/lib/krb5/test_config.c b/lib/krb5/test_config.c index a2816332d..2924a85bc 100644 --- a/lib/krb5/test_config.c +++ b/lib/krb5/test_config.c @@ -35,7 +35,8 @@ #include static int -check_config_file(krb5_context context, char *filelist, char **res, int def) +check_config_file(krb5_context context, const char *filelist, + const char *const *res, int def) { krb5_error_code ret; char **pp; @@ -83,13 +84,13 @@ check_config_file(krb5_context context, char *filelist, char **res, int def) return 0; } -char *list0[] = { "/tmp/foo", NULL }; -char *list1[] = { "/tmp/foo", "/tmp/foo/bar", NULL }; -char *list2[] = { "", NULL }; +const char *const list0[] = { "/tmp/foo", NULL }; +const char *const list1[] = { "/tmp/foo", "/tmp/foo/bar", NULL }; +const char *const list2[] = { "", NULL }; struct { - char *fl; - char **res; + const char *fl; + const char *const *res; } test[] = { { "/tmp/foo", NULL }, { "/tmp/foo" PATH_SEP "/tmp/foo/bar", NULL }, @@ -119,47 +120,47 @@ check_config_files(void) krb5_free_context(context); } -const char *config_string_result0[] = { +const char *const config_string_result0[] = { "A", "B", "C", "D", NULL }; -const char *config_string_result1[] = { +const char *const config_string_result1[] = { "A", "B", "C D", NULL }; -const char *config_string_result2[] = { +const char *const config_string_result2[] = { "A", "B", "", NULL }; -const char *config_string_result3[] = { +const char *const config_string_result3[] = { "A B;C: D", NULL }; -const char *config_string_result4[] = { +const char *const config_string_result4[] = { "\"\"", "", "\"\"", NULL }; -const char *config_string_result5[] = { +const char *const config_string_result5[] = { "A\"BQd", NULL }; -const char *config_string_result6[] = { +const char *const config_string_result6[] = { "efgh\"", "ABC", NULL }; -const char *config_string_result7[] = { +const char *const config_string_result7[] = { "SnapeKills\\", "Dumbledore", NULL }; -const char *config_string_result8[] = { +const char *const config_string_result8[] = { "\"TownOf Sandwich: Massachusetts\"Oldest", "Town", "In", "Cape Cod", NULL }; -const char *config_string_result9[] = { +const char *const config_string_result9[] = { "\"Begins and\"ends", "In", "One", "String", NULL }; -const char *config_string_result10[] = { +const char *const config_string_result10[] = { "Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:", "1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.", "2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.", @@ -171,7 +172,7 @@ const char *config_string_result10[] = { const struct { const char * name; - const char ** expected; + const char *const * expected; } config_strings_tests[] = { { "foo", config_string_result0 }, { "bar", config_string_result1 }, @@ -204,8 +205,8 @@ check_escaped_strings(void) for (i=0; i < sizeof(config_strings_tests)/sizeof(config_strings_tests[0]); i++) { char **ps; - const char **s; - const char **e; + const char *const *s; + const char *const *e; ps = krb5_config_get_strings(context, c, "escapes", config_strings_tests[i].name, NULL); @@ -214,7 +215,8 @@ check_escaped_strings(void) e = config_strings_tests[i].expected; - for (s = (const char **)ps; *s && *e; s++, e++) { + /* XXX strict aliasing violation */ + for (s = (const char *const *)ps; *s && *e; s++, e++) { if (strcmp(*s, *e)) errx(1, "Unexpected configuration string at value [%s].\n" diff --git a/lib/krb5/test_fx.c b/lib/krb5/test_fx.c index fb55e0de4..2fbf75cca 100644 --- a/lib/krb5/test_fx.c +++ b/lib/krb5/test_fx.c @@ -34,15 +34,15 @@ #include #include -struct { - char *p1; - char *pepper1; +const struct { + const char *p1; + const char *pepper1; krb5_enctype e1; - char *p2; - char *pepper2; + const char *p2; + const char *pepper2; krb5_enctype e2; krb5_enctype e3; - char *key; + const char *key; size_t len; } cf2[] = { { @@ -127,10 +127,10 @@ test_cf2(krb5_context context) krb5_err(context, 1, ret, "krb5_allow_weak_crypto"); for (i = 0; i < sizeof(cf2)/sizeof(cf2[0]); i++) { - pw.data = cf2[i].p1; + pw.data = rk_UNCONST(cf2[i].p1); pw.length = strlen(cf2[i].p1); salt.salttype = (krb5_salttype)KRB5_PADATA_PW_SALT; - salt.saltvalue.data = cf2[i].p1; + salt.saltvalue.data = rk_UNCONST(cf2[i].p1); salt.saltvalue.length = strlen(cf2[i].p1); ret = krb5_string_to_key_data_salt(context, @@ -145,9 +145,9 @@ test_cf2(krb5_context context) if (ret) krb5_err(context, 1, ret, "krb5_crypto_init"); - pw.data = cf2[i].p2; + pw.data = rk_UNCONST(cf2[i].p2); pw.length = strlen(cf2[i].p2); - salt.saltvalue.data = cf2[i].p2; + salt.saltvalue.data = rk_UNCONST(cf2[i].p2); salt.saltvalue.length = strlen(cf2[i].p2); ret = krb5_string_to_key_data_salt(context, @@ -163,10 +163,10 @@ test_cf2(krb5_context context) krb5_err(context, 1, ret, "krb5_crypto_init"); - p1.data = cf2[i].pepper1; + p1.data = rk_UNCONST(cf2[i].pepper1); p1.length = strlen(cf2[i].pepper1); - p2.data = cf2[i].pepper2; + p2.data = rk_UNCONST(cf2[i].pepper2); p2.length = strlen(cf2[i].pepper2); ret = krb5_crypto_fx_cf2(context, c1, c2, &p1, &p2, cf2[i].e3, &k3); diff --git a/lib/krb5/test_pac.c b/lib/krb5/test_pac.c index 70da1cb62..251d098fd 100644 --- a/lib/krb5/test_pac.c +++ b/lib/krb5/test_pac.c @@ -84,12 +84,14 @@ static int type_1_length = 472; static const krb5_keyblock kdc_keyblock = { ETYPE_ARCFOUR_HMAC_MD5, - { 16, "\xB2\x86\x75\x71\x48\xAF\x7F\xD2\x52\xC5\x36\x03\xA1\x50\xB7\xE7" } + { 16, rk_UNCONST( + "\xB2\x86\x75\x71\x48\xAF\x7F\xD2\x52\xC5\x36\x03\xA1\x50\xB7\xE7") } }; static const krb5_keyblock member_keyblock = { ETYPE_ARCFOUR_HMAC_MD5, - { 16, "\xD2\x17\xFA\xEA\xE5\xE6\xB5\xF9\x5C\xCC\x94\x07\x7A\xB8\xA5\xFC" } + { 16, rk_UNCONST( + "\xD2\x17\xFA\xEA\xE5\xE6\xB5\xF9\x5C\xCC\x94\x07\x7A\xB8\xA5\xFC") } }; static time_t authtime = 1120440609; @@ -150,7 +152,7 @@ static const unsigned char saved_pac2[] = static const krb5_keyblock member_keyblock2 = { ETYPE_DES_CBC_MD5, - { 8, "\x9e\x37\x83\x25\x4a\x7f\xf2\xf8" } + { 8, rk_UNCONST("\x9e\x37\x83\x25\x4a\x7f\xf2\xf8") } }; static time_t authtime2 = 1225304188; @@ -161,29 +163,34 @@ static const char *user2 = "openmsp"; static const krb5_keyblock rwdc_tgt_key = { ENCTYPE_AES256_CTS_HMAC_SHA1_96, - { 32, "\x27\x86\x34\x1d\xd3\x15\x06\x0d\x6f\xd6\x40\xfa\x03\xb1\x95\x32" - "\x91\x22\xe8\x6b\x0f\x47\xe0\xb5\xfe\xda\xef\x54\x98\xdc\x07\x5a" } + { 32, rk_UNCONST( + "\x27\x86\x34\x1d\xd3\x15\x06\x0d\x6f\xd6\x40\xfa\x03\xb1\x95\x32" + "\x91\x22\xe8\x6b\x0f\x47\xe0\xb5\xfe\xda\xef\x54\x98\xdc\x07\x5a") } }; static const krb5_keyblock rwdc_tgt_pac_key = { ENCTYPE_ARCFOUR_HMAC, - { 16, "\xb9\xf0\x39\x8d\xe9\x60\xb8\x40\x8c\x54\x0b\x61\xf9\xd2\xf1\x16" } + { 16, rk_UNCONST( + "\xb9\xf0\x39\x8d\xe9\x60\xb8\x40\x8c\x54\x0b\x61\xf9\xd2\xf1\x16") } }; static const krb5_keyblock rodc_tgt_key = { ENCTYPE_AES256_CTS_HMAC_SHA1_96, - { 32, "\x0c\x7e\x63\x47\xc8\x70\x7f\x58\x7c\x91\x59\xba\xc9\xbf\x50\xb4" - "\xe2\xd6\x49\xb6\x85\xd3\xd9\xf3\x80\xba\xe9\x02\x46\x51\xab\x23" } + { 32, rk_UNCONST( + "\x0c\x7e\x63\x47\xc8\x70\x7f\x58\x7c\x91\x59\xba\xc9\xbf\x50\xb4" + "\xe2\xd6\x49\xb6\x85\xd3\xd9\xf3\x80\xba\xe9\x02\x46\x51\xab\x23") } }; static const krb5_keyblock rodc_tgt_pac_key = { ENCTYPE_ARCFOUR_HMAC, - { 16, "\x80\x5d\x66\xb9\x5f\x66\xd6\x80\xc3\x5a\x07\x41\xe8\x97\xcc\x66" } + { 16, rk_UNCONST( + "\x80\x5d\x66\xb9\x5f\x66\xd6\x80\xc3\x5a\x07\x41\xe8\x97\xcc\x66") } }; static const krb5_keyblock server_key = { ENCTYPE_ARCFOUR_HMAC, - { 16, "\xed\x23\x11\x20\x7a\x21\x44\x20\xbf\xc0\x8d\x36\xf7\xf6\xb2\x3e" } + { 16, rk_UNCONST( + "\xed\x23\x11\x20\x7a\x21\x44\x20\xbf\xc0\x8d\x36\xf7\xf6\xb2\x3e") } }; @@ -1142,7 +1149,7 @@ main(int argc, char **argv) krb5_err(context, 1, ret, "krb5_pac_init"); { - const krb5_data cdata = { 2, "\x00\x01" } ; + const krb5_data cdata = { 2, rk_UNCONST("\x00\x01") }; ret = krb5_pac_add_buffer(context, pac, 1, &cdata); if (ret) @@ -1158,7 +1165,7 @@ main(int argc, char **argv) } { - const krb5_data cdata = { 2, "\x02\x00" } ; + const krb5_data cdata = { 2, rk_UNCONST("\x02\x00") } ; ret = krb5_pac_add_buffer(context, pac, 2, &cdata); if (ret) diff --git a/lib/krb5/test_pkinit_dh2key.c b/lib/krb5/test_pkinit_dh2key.c index e18fd174a..ee77653b2 100644 --- a/lib/krb5/test_pkinit_dh2key.c +++ b/lib/krb5/test_pkinit_dh2key.c @@ -63,10 +63,9 @@ test_dh2key(int i, } -struct { +const struct { krb5_enctype type; - krb5_data X; - krb5_data key; + struct { size_t length; const void *data; } X, key; } tests[] = { /* 0 */ { @@ -206,8 +205,9 @@ main(int argc, char **argv) errx (1, "krb5_init_context failed: %d", ret); for (i = 0; i < sizeof(tests)/sizeof(tests[0]); i++) { - test_dh2key(i, context, &tests[i].X, NULL, NULL, - tests[i].type, &tests[i].key); + krb5_data X = { tests[i].X.length, rk_UNCONST(tests[i].X.data) }; + krb5_data key = { tests[i].key.length, rk_UNCONST(tests[i].key.data) }; + test_dh2key(i, context, &X, NULL, NULL, tests[i].type, &key); } krb5_free_context(context); diff --git a/lib/krb5/test_pknistkdf.c b/lib/krb5/test_pknistkdf.c index 52bc03171..ae070c585 100644 --- a/lib/krb5/test_pknistkdf.c +++ b/lib/krb5/test_pknistkdf.c @@ -40,14 +40,11 @@ static int verbose_flag = 0; struct testcase { const heim_oid *oid; - krb5_data Z; + struct { size_t length; const void *data; } Z; const char *client; const char *server; krb5_enctype enctype; - krb5_data as_req; - krb5_data pk_as_rep; - - krb5_data key; + struct { size_t length; const void *data; } as_req, pk_as_rep, key; } tests[] = { /* 0 */ { @@ -283,8 +280,8 @@ test_dh2key(krb5_context context, int i, struct testcase *c) server, c->enctype, NULL, NULL, /* We lack test vectors for RFC 4556 */ - &c->as_req, - &c->pk_as_rep, + (krb5_data *)&c->as_req, + (krb5_data *)&c->pk_as_rep, &key, NULL); krb5_free_principal(context, client); krb5_free_principal(context, server); diff --git a/lib/roken/base32-test.c b/lib/roken/base32-test.c index e30c193c4..ea212e020 100644 --- a/lib/roken/base32-test.c +++ b/lib/roken/base32-test.c @@ -43,7 +43,7 @@ main(int argc, char **argv) int numtest = 1; struct test { int preserve_order; - void *data; + const void *data; size_t len; const char *result; } *t, tests[] = { diff --git a/lib/roken/base64-test.c b/lib/roken/base64-test.c index 8fb3f5280..c3771b9f6 100644 --- a/lib/roken/base64-test.c +++ b/lib/roken/base64-test.c @@ -42,7 +42,7 @@ main(int argc, char **argv) int numerr = 0; int numtest = 1; struct test { - void *data; + const void *data; size_t len; const char *result; } *t, tests[] = { diff --git a/lib/roken/hex-test.c b/lib/roken/hex-test.c index 01f21c821..1cfabd4a6 100644 --- a/lib/roken/hex-test.c +++ b/lib/roken/hex-test.c @@ -42,7 +42,7 @@ main(int argc, char **argv) int numerr = 0; int numtest = 1; struct test { - void *data; + const void *data; ssize_t len; const char *result; } *t, tests[] = { diff --git a/lib/roken/parse_time-test.c b/lib/roken/parse_time-test.c index 95b45135f..c84c55f01 100644 --- a/lib/roken/parse_time-test.c +++ b/lib/roken/parse_time-test.c @@ -40,8 +40,8 @@ static struct testcase { size_t size; - int val; - char *str; + int val; + const char *str; } tests[] = { { 8, 1, "1 second" }, { 17, 61, "1 minute 1 second" }, diff --git a/lib/roken/test-mem.c b/lib/roken/test-mem.c index 5ae10172a..e4f004538 100644 --- a/lib/roken/test-mem.c +++ b/lib/roken/test-mem.c @@ -95,7 +95,7 @@ segv_handler(int sig) ROKEN_LIB_FUNCTION void * ROKEN_LIB_CALL rk_test_mem_alloc(enum rk_test_mem_type type, const char *name, - void *buf, size_t size) + const void *buf, size_t size) { #ifndef HAVE_MMAP unsigned char *p; diff --git a/lib/roken/test-mem.h b/lib/roken/test-mem.h index 4d900b4a6..30ad1271d 100644 --- a/lib/roken/test-mem.h +++ b/lib/roken/test-mem.h @@ -34,6 +34,7 @@ enum rk_test_mem_type { RK_TM_OVERRUN, RK_TM_UNDERRUN }; ROKEN_LIB_FUNCTION void * ROKEN_LIB_CALL - rk_test_mem_alloc(enum rk_test_mem_type, const char *, void *, size_t); + rk_test_mem_alloc(enum rk_test_mem_type, const char *, const void *, + size_t); ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL rk_test_mem_free(const char *); diff --git a/lib/roken/test-readenv.c b/lib/roken/test-readenv.c index 24a666184..57b07aaac 100644 --- a/lib/roken/test-readenv.c +++ b/lib/roken/test-readenv.c @@ -36,13 +36,13 @@ #include "roken.h" #include "test-mem.h" -char *s1 = "VAR1=VAL1#comment\n\ +const char *s1 = "VAR1=VAL1#comment\n\ VAR2=VAL2 VAL2 #comment\n\ #this another comment\n\ \n\ VAR3=FOO"; -char *s2 = "VAR1=ENV2\n\ +const char *s2 = "VAR1=ENV2\n\ "; static void