diff options
| author | djm <> | 2009-01-05 21:36:39 +0000 |
|---|---|---|
| committer | djm <> | 2009-01-05 21:36:39 +0000 |
| commit | 3be551b5922b665fd4e18cd65b857b9f92a0b6c8 (patch) | |
| tree | e0d2d687fbd4e4e9eb6bc4b178ea069817f0aba4 /src/lib/libcrypto/x509v3 | |
| parent | 822633f8798a6b4646a8b092e7c67f511cdbdba2 (diff) | |
| download | openbsd-3be551b5922b665fd4e18cd65b857b9f92a0b6c8.tar.gz openbsd-3be551b5922b665fd4e18cd65b857b9f92a0b6c8.tar.bz2 openbsd-3be551b5922b665fd4e18cd65b857b9f92a0b6c8.zip | |
update to openssl-0.9.8i; tested by several, especially krw@
Diffstat (limited to 'src/lib/libcrypto/x509v3')
| -rw-r--r-- | src/lib/libcrypto/x509v3/pcy_data.c | 8 | ||||
| -rw-r--r-- | src/lib/libcrypto/x509v3/pcy_tree.c | 18 | ||||
| -rw-r--r-- | src/lib/libcrypto/x509v3/v3_addr.c | 12 | ||||
| -rw-r--r-- | src/lib/libcrypto/x509v3/v3_asid.c | 2 | ||||
| -rw-r--r-- | src/lib/libcrypto/x509v3/v3_purp.c | 6 | ||||
| -rw-r--r-- | src/lib/libcrypto/x509v3/x509v3.h | 4 |
6 files changed, 32 insertions, 18 deletions
diff --git a/src/lib/libcrypto/x509v3/pcy_data.c b/src/lib/libcrypto/x509v3/pcy_data.c index 614d2b4935..4711b1ee92 100644 --- a/src/lib/libcrypto/x509v3/pcy_data.c +++ b/src/lib/libcrypto/x509v3/pcy_data.c | |||
| @@ -87,6 +87,12 @@ X509_POLICY_DATA *policy_data_new(POLICYINFO *policy, ASN1_OBJECT *id, int crit) | |||
| 87 | X509_POLICY_DATA *ret; | 87 | X509_POLICY_DATA *ret; |
| 88 | if (!policy && !id) | 88 | if (!policy && !id) |
| 89 | return NULL; | 89 | return NULL; |
| 90 | if (id) | ||
| 91 | { | ||
| 92 | id = OBJ_dup(id); | ||
| 93 | if (!id) | ||
| 94 | return NULL; | ||
| 95 | } | ||
| 90 | ret = OPENSSL_malloc(sizeof(X509_POLICY_DATA)); | 96 | ret = OPENSSL_malloc(sizeof(X509_POLICY_DATA)); |
| 91 | if (!ret) | 97 | if (!ret) |
| 92 | return NULL; | 98 | return NULL; |
| @@ -94,6 +100,8 @@ X509_POLICY_DATA *policy_data_new(POLICYINFO *policy, ASN1_OBJECT *id, int crit) | |||
| 94 | if (!ret->expected_policy_set) | 100 | if (!ret->expected_policy_set) |
| 95 | { | 101 | { |
| 96 | OPENSSL_free(ret); | 102 | OPENSSL_free(ret); |
| 103 | if (id) | ||
| 104 | ASN1_OBJECT_free(id); | ||
| 97 | return NULL; | 105 | return NULL; |
| 98 | } | 106 | } |
| 99 | 107 | ||
diff --git a/src/lib/libcrypto/x509v3/pcy_tree.c b/src/lib/libcrypto/x509v3/pcy_tree.c index 4fda1d419a..b1ce77b9af 100644 --- a/src/lib/libcrypto/x509v3/pcy_tree.c +++ b/src/lib/libcrypto/x509v3/pcy_tree.c | |||
| @@ -130,9 +130,9 @@ static int tree_init(X509_POLICY_TREE **ptree, STACK_OF(X509) *certs, | |||
| 130 | ret = 2; | 130 | ret = 2; |
| 131 | if (explicit_policy > 0) | 131 | if (explicit_policy > 0) |
| 132 | { | 132 | { |
| 133 | explicit_policy--; | 133 | if (!(x->ex_flags & EXFLAG_SI)) |
| 134 | if (!(x->ex_flags & EXFLAG_SS) | 134 | explicit_policy--; |
| 135 | && (cache->explicit_skip != -1) | 135 | if ((cache->explicit_skip != -1) |
| 136 | && (cache->explicit_skip < explicit_policy)) | 136 | && (cache->explicit_skip < explicit_policy)) |
| 137 | explicit_policy = cache->explicit_skip; | 137 | explicit_policy = cache->explicit_skip; |
| 138 | } | 138 | } |
| @@ -197,13 +197,14 @@ static int tree_init(X509_POLICY_TREE **ptree, STACK_OF(X509) *certs, | |||
| 197 | /* Any matching allowed if certificate is self | 197 | /* Any matching allowed if certificate is self |
| 198 | * issued and not the last in the chain. | 198 | * issued and not the last in the chain. |
| 199 | */ | 199 | */ |
| 200 | if (!(x->ex_flags & EXFLAG_SS) || (i == 0)) | 200 | if (!(x->ex_flags & EXFLAG_SI) || (i == 0)) |
| 201 | level->flags |= X509_V_FLAG_INHIBIT_ANY; | 201 | level->flags |= X509_V_FLAG_INHIBIT_ANY; |
| 202 | } | 202 | } |
| 203 | else | 203 | else |
| 204 | { | 204 | { |
| 205 | any_skip--; | 205 | if (!(x->ex_flags & EXFLAG_SI)) |
| 206 | if ((cache->any_skip > 0) | 206 | any_skip--; |
| 207 | if ((cache->any_skip >= 0) | ||
| 207 | && (cache->any_skip < any_skip)) | 208 | && (cache->any_skip < any_skip)) |
| 208 | any_skip = cache->any_skip; | 209 | any_skip = cache->any_skip; |
| 209 | } | 210 | } |
| @@ -213,7 +214,7 @@ static int tree_init(X509_POLICY_TREE **ptree, STACK_OF(X509) *certs, | |||
| 213 | else | 214 | else |
| 214 | { | 215 | { |
| 215 | map_skip--; | 216 | map_skip--; |
| 216 | if ((cache->map_skip > 0) | 217 | if ((cache->map_skip >= 0) |
| 217 | && (cache->map_skip < map_skip)) | 218 | && (cache->map_skip < map_skip)) |
| 218 | map_skip = cache->map_skip; | 219 | map_skip = cache->map_skip; |
| 219 | } | 220 | } |
| @@ -310,7 +311,8 @@ static int tree_link_any(X509_POLICY_LEVEL *curr, | |||
| 310 | 311 | ||
| 311 | if (data == NULL) | 312 | if (data == NULL) |
| 312 | return 0; | 313 | return 0; |
| 313 | data->qualifier_set = curr->anyPolicy->data->qualifier_set; | 314 | /* Curr may not have anyPolicy */ |
| 315 | data->qualifier_set = cache->anyPolicy->qualifier_set; | ||
| 314 | data->flags |= POLICY_DATA_FLAG_SHARED_QUALIFIERS; | 316 | data->flags |= POLICY_DATA_FLAG_SHARED_QUALIFIERS; |
| 315 | if (!level_add_node(curr, data, node, tree)) | 317 | if (!level_add_node(curr, data, node, tree)) |
| 316 | { | 318 | { |
diff --git a/src/lib/libcrypto/x509v3/v3_addr.c b/src/lib/libcrypto/x509v3/v3_addr.c index ed9847b307..c6730ab3fd 100644 --- a/src/lib/libcrypto/x509v3/v3_addr.c +++ b/src/lib/libcrypto/x509v3/v3_addr.c | |||
| @@ -594,10 +594,10 @@ static IPAddressOrRanges *make_prefix_or_range(IPAddrBlocks *addr, | |||
| 594 | return NULL; | 594 | return NULL; |
| 595 | switch (afi) { | 595 | switch (afi) { |
| 596 | case IANA_AFI_IPV4: | 596 | case IANA_AFI_IPV4: |
| 597 | sk_IPAddressOrRange_set_cmp_func(aors, v4IPAddressOrRange_cmp); | 597 | (void)sk_IPAddressOrRange_set_cmp_func(aors, v4IPAddressOrRange_cmp); |
| 598 | break; | 598 | break; |
| 599 | case IANA_AFI_IPV6: | 599 | case IANA_AFI_IPV6: |
| 600 | sk_IPAddressOrRange_set_cmp_func(aors, v6IPAddressOrRange_cmp); | 600 | (void)sk_IPAddressOrRange_set_cmp_func(aors, v6IPAddressOrRange_cmp); |
| 601 | break; | 601 | break; |
| 602 | } | 602 | } |
| 603 | f->ipAddressChoice->type = IPAddressChoice_addressesOrRanges; | 603 | f->ipAddressChoice->type = IPAddressChoice_addressesOrRanges; |
| @@ -854,7 +854,7 @@ static int IPAddressOrRanges_canonize(IPAddressOrRanges *aors, | |||
| 854 | if (!make_addressRange(&merged, a_min, b_max, length)) | 854 | if (!make_addressRange(&merged, a_min, b_max, length)) |
| 855 | return 0; | 855 | return 0; |
| 856 | sk_IPAddressOrRange_set(aors, i, merged); | 856 | sk_IPAddressOrRange_set(aors, i, merged); |
| 857 | sk_IPAddressOrRange_delete(aors, i + 1); | 857 | (void)sk_IPAddressOrRange_delete(aors, i + 1); |
| 858 | IPAddressOrRange_free(a); | 858 | IPAddressOrRange_free(a); |
| 859 | IPAddressOrRange_free(b); | 859 | IPAddressOrRange_free(b); |
| 860 | --i; | 860 | --i; |
| @@ -1122,7 +1122,7 @@ int v3_addr_subset(IPAddrBlocks *a, IPAddrBlocks *b) | |||
| 1122 | return 1; | 1122 | return 1; |
| 1123 | if (b == NULL || v3_addr_inherits(a) || v3_addr_inherits(b)) | 1123 | if (b == NULL || v3_addr_inherits(a) || v3_addr_inherits(b)) |
| 1124 | return 0; | 1124 | return 0; |
| 1125 | sk_IPAddressFamily_set_cmp_func(b, IPAddressFamily_cmp); | 1125 | (void)sk_IPAddressFamily_set_cmp_func(b, IPAddressFamily_cmp); |
| 1126 | for (i = 0; i < sk_IPAddressFamily_num(a); i++) { | 1126 | for (i = 0; i < sk_IPAddressFamily_num(a); i++) { |
| 1127 | IPAddressFamily *fa = sk_IPAddressFamily_value(a, i); | 1127 | IPAddressFamily *fa = sk_IPAddressFamily_value(a, i); |
| 1128 | int j = sk_IPAddressFamily_find(b, fa); | 1128 | int j = sk_IPAddressFamily_find(b, fa); |
| @@ -1183,7 +1183,7 @@ static int v3_addr_validate_path_internal(X509_STORE_CTX *ctx, | |||
| 1183 | } | 1183 | } |
| 1184 | if (!v3_addr_is_canonical(ext)) | 1184 | if (!v3_addr_is_canonical(ext)) |
| 1185 | validation_err(X509_V_ERR_INVALID_EXTENSION); | 1185 | validation_err(X509_V_ERR_INVALID_EXTENSION); |
| 1186 | sk_IPAddressFamily_set_cmp_func(ext, IPAddressFamily_cmp); | 1186 | (void)sk_IPAddressFamily_set_cmp_func(ext, IPAddressFamily_cmp); |
| 1187 | if ((child = sk_IPAddressFamily_dup(ext)) == NULL) { | 1187 | if ((child = sk_IPAddressFamily_dup(ext)) == NULL) { |
| 1188 | X509V3err(X509V3_F_V3_ADDR_VALIDATE_PATH_INTERNAL, ERR_R_MALLOC_FAILURE); | 1188 | X509V3err(X509V3_F_V3_ADDR_VALIDATE_PATH_INTERNAL, ERR_R_MALLOC_FAILURE); |
| 1189 | ret = 0; | 1189 | ret = 0; |
| @@ -1209,7 +1209,7 @@ static int v3_addr_validate_path_internal(X509_STORE_CTX *ctx, | |||
| 1209 | } | 1209 | } |
| 1210 | continue; | 1210 | continue; |
| 1211 | } | 1211 | } |
| 1212 | sk_IPAddressFamily_set_cmp_func(x->rfc3779_addr, IPAddressFamily_cmp); | 1212 | (void)sk_IPAddressFamily_set_cmp_func(x->rfc3779_addr, IPAddressFamily_cmp); |
| 1213 | for (j = 0; j < sk_IPAddressFamily_num(child); j++) { | 1213 | for (j = 0; j < sk_IPAddressFamily_num(child); j++) { |
| 1214 | IPAddressFamily *fc = sk_IPAddressFamily_value(child, j); | 1214 | IPAddressFamily *fc = sk_IPAddressFamily_value(child, j); |
| 1215 | int k = sk_IPAddressFamily_find(x->rfc3779_addr, fc); | 1215 | int k = sk_IPAddressFamily_find(x->rfc3779_addr, fc); |
diff --git a/src/lib/libcrypto/x509v3/v3_asid.c b/src/lib/libcrypto/x509v3/v3_asid.c index 271930f967..abd497ed1f 100644 --- a/src/lib/libcrypto/x509v3/v3_asid.c +++ b/src/lib/libcrypto/x509v3/v3_asid.c | |||
| @@ -466,7 +466,7 @@ static int ASIdentifierChoice_canonize(ASIdentifierChoice *choice) | |||
| 466 | break; | 466 | break; |
| 467 | } | 467 | } |
| 468 | ASIdOrRange_free(b); | 468 | ASIdOrRange_free(b); |
| 469 | sk_ASIdOrRange_delete(choice->u.asIdsOrRanges, i + 1); | 469 | (void)sk_ASIdOrRange_delete(choice->u.asIdsOrRanges, i + 1); |
| 470 | i--; | 470 | i--; |
| 471 | continue; | 471 | continue; |
| 472 | } | 472 | } |
diff --git a/src/lib/libcrypto/x509v3/v3_purp.c b/src/lib/libcrypto/x509v3/v3_purp.c index b2f5cdfa05..c54e7887c7 100644 --- a/src/lib/libcrypto/x509v3/v3_purp.c +++ b/src/lib/libcrypto/x509v3/v3_purp.c | |||
| @@ -291,7 +291,9 @@ int X509_supported_extension(X509_EXTENSION *ex) | |||
| 291 | NID_sbgp_ipAddrBlock, /* 290 */ | 291 | NID_sbgp_ipAddrBlock, /* 290 */ |
| 292 | NID_sbgp_autonomousSysNum, /* 291 */ | 292 | NID_sbgp_autonomousSysNum, /* 291 */ |
| 293 | #endif | 293 | #endif |
| 294 | NID_proxyCertInfo /* 661 */ | 294 | NID_policy_constraints, /* 401 */ |
| 295 | NID_proxyCertInfo, /* 661 */ | ||
| 296 | NID_inhibit_any_policy /* 748 */ | ||
| 295 | }; | 297 | }; |
| 296 | 298 | ||
| 297 | int ex_nid; | 299 | int ex_nid; |
| @@ -325,7 +327,7 @@ static void x509v3_cache_extensions(X509 *x) | |||
| 325 | #endif | 327 | #endif |
| 326 | /* Does subject name match issuer ? */ | 328 | /* Does subject name match issuer ? */ |
| 327 | if(!X509_NAME_cmp(X509_get_subject_name(x), X509_get_issuer_name(x))) | 329 | if(!X509_NAME_cmp(X509_get_subject_name(x), X509_get_issuer_name(x))) |
| 328 | x->ex_flags |= EXFLAG_SS; | 330 | x->ex_flags |= EXFLAG_SI; |
| 329 | /* V1 should mean no extensions ... */ | 331 | /* V1 should mean no extensions ... */ |
| 330 | if(!X509_get_version(x)) x->ex_flags |= EXFLAG_V1; | 332 | if(!X509_get_version(x)) x->ex_flags |= EXFLAG_V1; |
| 331 | /* Handle basic constraints */ | 333 | /* Handle basic constraints */ |
diff --git a/src/lib/libcrypto/x509v3/x509v3.h b/src/lib/libcrypto/x509v3/x509v3.h index db2b0482c1..5ba59f71c9 100644 --- a/src/lib/libcrypto/x509v3/x509v3.h +++ b/src/lib/libcrypto/x509v3/x509v3.h | |||
| @@ -363,6 +363,8 @@ DECLARE_ASN1_FUNCTIONS(PROXY_CERT_INFO_EXTENSION) | |||
| 363 | #define EXFLAG_NSCERT 0x8 | 363 | #define EXFLAG_NSCERT 0x8 |
| 364 | 364 | ||
| 365 | #define EXFLAG_CA 0x10 | 365 | #define EXFLAG_CA 0x10 |
| 366 | /* Really self issued not necessarily self signed */ | ||
| 367 | #define EXFLAG_SI 0x20 | ||
| 366 | #define EXFLAG_SS 0x20 | 368 | #define EXFLAG_SS 0x20 |
| 367 | #define EXFLAG_V1 0x40 | 369 | #define EXFLAG_V1 0x40 |
| 368 | #define EXFLAG_INVALID 0x80 | 370 | #define EXFLAG_INVALID 0x80 |
| @@ -370,7 +372,7 @@ DECLARE_ASN1_FUNCTIONS(PROXY_CERT_INFO_EXTENSION) | |||
| 370 | #define EXFLAG_CRITICAL 0x200 | 372 | #define EXFLAG_CRITICAL 0x200 |
| 371 | #define EXFLAG_PROXY 0x400 | 373 | #define EXFLAG_PROXY 0x400 |
| 372 | 374 | ||
| 373 | #define EXFLAG_INVALID_POLICY 0x400 | 375 | #define EXFLAG_INVALID_POLICY 0x800 |
| 374 | 376 | ||
| 375 | #define KU_DIGITAL_SIGNATURE 0x0080 | 377 | #define KU_DIGITAL_SIGNATURE 0x0080 |
| 376 | #define KU_NON_REPUDIATION 0x0040 | 378 | #define KU_NON_REPUDIATION 0x0040 |
