| Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/x509v3/pcy_cache.c |
| Switch to Source code | Preprocessed file |
| Line | Source | Count | ||||||
|---|---|---|---|---|---|---|---|---|
| 1 | - | |||||||
| 2 | - | |||||||
| 3 | static int policy_data_cmp(const X509_POLICY_DATA * const *a, | - | ||||||
| 4 | const X509_POLICY_DATA * const *b); | - | ||||||
| 5 | static int policy_cache_set_int(long *out, ASN1_INTEGER *value); | - | ||||||
| 6 | - | |||||||
| 7 | - | |||||||
| 8 | - | |||||||
| 9 | - | |||||||
| 10 | - | |||||||
| 11 | static int | - | ||||||
| 12 | policy_cache_create(X509 *x, CERTIFICATEPOLICIES *policies, int crit) | - | ||||||
| 13 | { | - | ||||||
| 14 | int i; | - | ||||||
| 15 | int ret = 0; | - | ||||||
| 16 | X509_POLICY_CACHE *cache = x->policy_cache; | - | ||||||
| 17 | X509_POLICY_DATA *data = | - | ||||||
| 18 | ((void *)0) | - | ||||||
| 19 | ; | - | ||||||
| 20 | POLICYINFO *policy; | - | ||||||
| 21 | - | |||||||
| 22 | if (sk_num(((_STACK*) (1 ? (policies) : (struct stack_st_POLICYINFO*)0))) == 0
| 0 | ||||||
| 23 | goto never executed: bad_policy;goto bad_policy;never executed: goto bad_policy; | 0 | ||||||
| 24 | cache->data = ((struct stack_st_X509_POLICY_DATA *)sk_new(((int (*)(const void *, const void *)) ((1 ? (policy_data_cmp) : (int (*)(const X509_POLICY_DATA * const *, const X509_POLICY_DATA * const *))0))))); | - | ||||||
| 25 | if (!cache->data
| 0 | ||||||
| 26 | goto never executed: bad_policy;goto bad_policy;never executed: goto bad_policy; | 0 | ||||||
| 27 | for (i = 0; i < sk_num(((_STACK*) (1 ? (policies) : (struct stack_st_POLICYINFO*)0)))
| 0 | ||||||
| 28 | policy = ((POLICYINFO *)sk_value(((_STACK*) (1 ? (policies) : (struct stack_st_POLICYINFO*)0)), (i))); | - | ||||||
| 29 | data = policy_data_new(policy, | - | ||||||
| 30 | ((void *)0) | - | ||||||
| 31 | , crit); | - | ||||||
| 32 | if (!data
| 0 | ||||||
| 33 | goto never executed: bad_policy;goto bad_policy;never executed: goto bad_policy; | 0 | ||||||
| 34 | - | |||||||
| 35 | - | |||||||
| 36 | - | |||||||
| 37 | if (OBJ_obj2nid(data->valid_policy) == 746
| 0 | ||||||
| 38 | if (cache->anyPolicy
| 0 | ||||||
| 39 | ret = -1; | - | ||||||
| 40 | goto never executed: bad_policy;goto bad_policy;never executed: goto bad_policy; | 0 | ||||||
| 41 | } | - | ||||||
| 42 | cache->anyPolicy = data; | - | ||||||
| 43 | } never executed: else if (sk_find(((_STACK*) (1 ? (cache->data) : (struct stack_st_X509_POLICY_DATA*)0)), ((void*) (1 ? (data) : (X509_POLICY_DATA*)0))) != -1end of block
| 0 | ||||||
| 44 | ret = -1; | - | ||||||
| 45 | goto never executed: bad_policy;goto bad_policy;never executed: goto bad_policy; | 0 | ||||||
| 46 | } else if (!sk_push(((_STACK*) (1 ? (cache->data) : (struct stack_st_X509_POLICY_DATA*)0)), ((void*) (1 ? (data) : (X509_POLICY_DATA*)0)))
| 0 | ||||||
| 47 | goto never executed: bad_policy;goto bad_policy;never executed: goto bad_policy; | 0 | ||||||
| 48 | data = | - | ||||||
| 49 | ((void *)0) | - | ||||||
| 50 | ; | - | ||||||
| 51 | } never executed: end of block | 0 | ||||||
| 52 | ret = 1; | - | ||||||
| 53 | - | |||||||
| 54 | bad_policy: code before this statement never executed: bad_policy: | 0 | ||||||
| 55 | if (ret == -1
| 0 | ||||||
| 56 | x->ex_flags |= 0x0800; never executed: x->ex_flags |= 0x0800; | 0 | ||||||
| 57 | if (data
| 0 | ||||||
| 58 | policy_data_free(data); never executed: policy_data_free(data); | 0 | ||||||
| 59 | sk_pop_free(((_STACK*) (1 ? (policies) : (struct stack_st_POLICYINFO*)0)), ((void (*)(void *)) ((1 ? (POLICYINFO_free) : (void (*)(POLICYINFO *))0)))); | - | ||||||
| 60 | if (ret <= 0
| 0 | ||||||
| 61 | sk_pop_free(((_STACK*) (1 ? (cache->data) : (struct stack_st_X509_POLICY_DATA*)0)), ((void (*)(void *)) ((1 ? (policy_data_free) : (void (*)(X509_POLICY_DATA *))0)))); | - | ||||||
| 62 | cache->data = | - | ||||||
| 63 | ((void *)0) | - | ||||||
| 64 | ; | - | ||||||
| 65 | } never executed: end of block | 0 | ||||||
| 66 | return never executed: ret;return ret;never executed: return ret; | 0 | ||||||
| 67 | } | - | ||||||
| 68 | - | |||||||
| 69 | static int | - | ||||||
| 70 | policy_cache_new(X509 *x) | - | ||||||
| 71 | { | - | ||||||
| 72 | X509_POLICY_CACHE *cache; | - | ||||||
| 73 | ASN1_INTEGER *ext_any = | - | ||||||
| 74 | ((void *)0) | - | ||||||
| 75 | ; | - | ||||||
| 76 | POLICY_CONSTRAINTS *ext_pcons = | - | ||||||
| 77 | ((void *)0) | - | ||||||
| 78 | ; | - | ||||||
| 79 | CERTIFICATEPOLICIES *ext_cpols = | - | ||||||
| 80 | ((void *)0) | - | ||||||
| 81 | ; | - | ||||||
| 82 | POLICY_MAPPINGS *ext_pmaps = | - | ||||||
| 83 | ((void *)0) | - | ||||||
| 84 | ; | - | ||||||
| 85 | int i; | - | ||||||
| 86 | - | |||||||
| 87 | cache = malloc(sizeof(X509_POLICY_CACHE)); | - | ||||||
| 88 | if (!cache
| 0 | ||||||
| 89 | return never executed: 0;return 0;never executed: return 0; | 0 | ||||||
| 90 | cache->anyPolicy = | - | ||||||
| 91 | ((void *)0) | - | ||||||
| 92 | ; | - | ||||||
| 93 | cache->data = | - | ||||||
| 94 | ((void *)0) | - | ||||||
| 95 | ; | - | ||||||
| 96 | cache->any_skip = -1; | - | ||||||
| 97 | cache->explicit_skip = -1; | - | ||||||
| 98 | cache->map_skip = -1; | - | ||||||
| 99 | - | |||||||
| 100 | x->policy_cache = cache; | - | ||||||
| 101 | - | |||||||
| 102 | - | |||||||
| 103 | - | |||||||
| 104 | - | |||||||
| 105 | ext_pcons = X509_get_ext_d2i(x, 401, &i, | - | ||||||
| 106 | ((void *)0) | - | ||||||
| 107 | ); | - | ||||||
| 108 | - | |||||||
| 109 | if (!ext_pcons
| 0 | ||||||
| 110 | if (i != -1
| 0 | ||||||
| 111 | goto never executed: bad_cache;goto bad_cache;never executed: goto bad_cache; | 0 | ||||||
| 112 | } never executed: else {end of block | 0 | ||||||
| 113 | if (!ext_pcons->requireExplicitPolicy
| 0 | ||||||
| 114 | !ext_pcons->inhibitPolicyMapping
| 0 | ||||||
| 115 | goto never executed: bad_cache;goto bad_cache;never executed: goto bad_cache; | 0 | ||||||
| 116 | if (!policy_cache_set_int(&cache->explicit_skip,
| 0 | ||||||
| 117 | ext_pcons->requireExplicitPolicy)
| 0 | ||||||
| 118 | goto never executed: bad_cache;goto bad_cache;never executed: goto bad_cache; | 0 | ||||||
| 119 | if (!policy_cache_set_int(&cache->map_skip,
| 0 | ||||||
| 120 | ext_pcons->inhibitPolicyMapping)
| 0 | ||||||
| 121 | goto never executed: bad_cache;goto bad_cache;never executed: goto bad_cache; | 0 | ||||||
| 122 | } never executed: end of block | 0 | ||||||
| 123 | - | |||||||
| 124 | - | |||||||
| 125 | - | |||||||
| 126 | ext_cpols = X509_get_ext_d2i(x, 89, &i, | - | ||||||
| 127 | ((void *)0) | - | ||||||
| 128 | ); | - | ||||||
| 129 | - | |||||||
| 130 | - | |||||||
| 131 | - | |||||||
| 132 | - | |||||||
| 133 | if (!ext_cpols
| 0 | ||||||
| 134 | - | |||||||
| 135 | if (i != -1
| 0 | ||||||
| 136 | goto never executed: bad_cache;goto bad_cache;never executed: goto bad_cache; | 0 | ||||||
| 137 | return never executed: 1;return 1;never executed: return 1; | 0 | ||||||
| 138 | } | - | ||||||
| 139 | - | |||||||
| 140 | i = policy_cache_create(x, ext_cpols, i); | - | ||||||
| 141 | - | |||||||
| 142 | - | |||||||
| 143 | - | |||||||
| 144 | if (i <= 0
| 0 | ||||||
| 145 | return never executed: i;return i;never executed: return i; | 0 | ||||||
| 146 | - | |||||||
| 147 | ext_pmaps = X509_get_ext_d2i(x, 747, &i, | - | ||||||
| 148 | ((void *)0) | - | ||||||
| 149 | ); | - | ||||||
| 150 | - | |||||||
| 151 | if (!ext_pmaps
| 0 | ||||||
| 152 | - | |||||||
| 153 | if (i != -1
| 0 | ||||||
| 154 | goto never executed: bad_cache;goto bad_cache;never executed: goto bad_cache; | 0 | ||||||
| 155 | } never executed: else {end of block | 0 | ||||||
| 156 | i = policy_cache_set_mapping(x, ext_pmaps); | - | ||||||
| 157 | if (i <= 0
| 0 | ||||||
| 158 | goto never executed: bad_cache;goto bad_cache;never executed: goto bad_cache; | 0 | ||||||
| 159 | } never executed: end of block | 0 | ||||||
| 160 | - | |||||||
| 161 | ext_any = X509_get_ext_d2i(x, 748, &i, | - | ||||||
| 162 | ((void *)0) | - | ||||||
| 163 | ); | - | ||||||
| 164 | - | |||||||
| 165 | if (!ext_any
| 0 | ||||||
| 166 | if (i != -1
| 0 | ||||||
| 167 | goto never executed: bad_cache;goto bad_cache;never executed: goto bad_cache; | 0 | ||||||
| 168 | } never executed: else if (!policy_cache_set_int(&cache->any_skip, ext_any)end of block
| 0 | ||||||
| 169 | goto never executed: bad_cache;goto bad_cache;never executed: goto bad_cache; | 0 | ||||||
| 170 | - | |||||||
| 171 | if (0) { | - | ||||||
| 172 | bad_cache: | - | ||||||
| 173 | x->ex_flags |= 0x0800; | - | ||||||
| 174 | } never executed: end of block | 0 | ||||||
| 175 | - | |||||||
| 176 | if (ext_pcons
| 0 | ||||||
| 177 | POLICY_CONSTRAINTS_free(ext_pcons); never executed: POLICY_CONSTRAINTS_free(ext_pcons); | 0 | ||||||
| 178 | - | |||||||
| 179 | if (ext_any
| 0 | ||||||
| 180 | ASN1_INTEGER_free(ext_any); never executed: ASN1_INTEGER_free(ext_any); | 0 | ||||||
| 181 | - | |||||||
| 182 | return never executed: 1;return 1;never executed: return 1; | 0 | ||||||
| 183 | } | - | ||||||
| 184 | - | |||||||
| 185 | void | - | ||||||
| 186 | policy_cache_free(X509_POLICY_CACHE *cache) | - | ||||||
| 187 | { | - | ||||||
| 188 | if (!cache
| 0-244 | ||||||
| 189 | return; executed 244 times by 7 tests: return;Executed by:
| 244 | ||||||
| 190 | if (cache->anyPolicy
| 0 | ||||||
| 191 | policy_data_free(cache->anyPolicy); never executed: policy_data_free(cache->anyPolicy); | 0 | ||||||
| 192 | if (cache->data
| 0 | ||||||
| 193 | sk_pop_free(((_STACK*) (1 ? (cache->data) : (struct stack_st_X509_POLICY_DATA*)0)), ((void (*)(void *)) ((1 ? (policy_data_free) : (void (*)(X509_POLICY_DATA *))0)))); never executed: sk_pop_free(((_STACK*) (1 ? (cache->data) : (struct stack_st_X509_POLICY_DATA*)0)), ((void (*)(void *)) ((1 ? (policy_data_free) : (void (*)(X509_POLICY_DATA *))0)))); | 0 | ||||||
| 194 | free(cache); | - | ||||||
| 195 | } never executed: end of block | 0 | ||||||
| 196 | - | |||||||
| 197 | const X509_POLICY_CACHE * | - | ||||||
| 198 | policy_cache_set(X509 *x) | - | ||||||
| 199 | { | - | ||||||
| 200 | if (x->policy_cache ==
| 0 | ||||||
| 201 | ((void *)0)
| 0 | ||||||
| 202 | ) { | - | ||||||
| 203 | CRYPTO_lock(1|8,3,__FILE__,234); | - | ||||||
| 204 | policy_cache_new(x); | - | ||||||
| 205 | CRYPTO_lock(2|8,3,__FILE__,236); | - | ||||||
| 206 | } never executed: end of block | 0 | ||||||
| 207 | - | |||||||
| 208 | return never executed: x->policy_cache;return x->policy_cache;never executed: return x->policy_cache; | 0 | ||||||
| 209 | } | - | ||||||
| 210 | - | |||||||
| 211 | X509_POLICY_DATA * | - | ||||||
| 212 | policy_cache_find_data(const X509_POLICY_CACHE *cache, const ASN1_OBJECT *id) | - | ||||||
| 213 | { | - | ||||||
| 214 | int idx; | - | ||||||
| 215 | X509_POLICY_DATA tmp; | - | ||||||
| 216 | - | |||||||
| 217 | tmp.valid_policy = (ASN1_OBJECT *)id; | - | ||||||
| 218 | idx = sk_find(((_STACK*) (1 ? (cache->data) : (struct stack_st_X509_POLICY_DATA*)0)), ((void*) (1 ? (&tmp) : (X509_POLICY_DATA*)0))); | - | ||||||
| 219 | if (idx == -1
| 0 | ||||||
| 220 | return never executed: return ((void *)0) ;never executed: return ((void *)0) ; | 0 | ||||||
| 221 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||
| 222 | ; never executed: return ((void *)0) ; | 0 | ||||||
| 223 | return never executed: ((X509_POLICY_DATA *)sk_value(((_STACK*) (1 ? (cache->data) : (struct stack_st_X509_POLICY_DATA*)0)), (idx)));return ((X509_POLICY_DATA *)sk_value(((_STACK*) (1 ? (cache->data) : (struct stack_st_X509_POLICY_DATA*)0)), (idx)));never executed: return ((X509_POLICY_DATA *)sk_value(((_STACK*) (1 ? (cache->data) : (struct stack_st_X509_POLICY_DATA*)0)), (idx))); | 0 | ||||||
| 224 | } | - | ||||||
| 225 | - | |||||||
| 226 | static int | - | ||||||
| 227 | policy_data_cmp(const X509_POLICY_DATA * const *a, | - | ||||||
| 228 | const X509_POLICY_DATA * const *b) | - | ||||||
| 229 | { | - | ||||||
| 230 | return never executed: OBJ_cmp((*a)->valid_policy, (*b)->valid_policy);return OBJ_cmp((*a)->valid_policy, (*b)->valid_policy);never executed: return OBJ_cmp((*a)->valid_policy, (*b)->valid_policy); | 0 | ||||||
| 231 | } | - | ||||||
| 232 | - | |||||||
| 233 | static int | - | ||||||
| 234 | policy_cache_set_int(long *out, ASN1_INTEGER *value) | - | ||||||
| 235 | { | - | ||||||
| 236 | if (value ==
| 0 | ||||||
| 237 | ((void *)0)
| 0 | ||||||
| 238 | ) | - | ||||||
| 239 | return never executed: 1;return 1;never executed: return 1; | 0 | ||||||
| 240 | if (value->type == (2 | 0x100)
| 0 | ||||||
| 241 | return never executed: 0;return 0;never executed: return 0; | 0 | ||||||
| 242 | *out = ASN1_INTEGER_get(value); | - | ||||||
| 243 | return never executed: 1;return 1;never executed: return 1; | 0 | ||||||
| 244 | } | - | ||||||
| Switch to Source code | Preprocessed file |