| Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/asn1/a_bytes.c |
| Switch to Source code | Preprocessed file |
| Line | Source | Count | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | - | |||||||||||||||||||||||||
| 2 | - | |||||||||||||||||||||||||
| 3 | static int asn1_collate_primitive(ASN1_STRING *a, ASN1_const_CTX *c); | - | ||||||||||||||||||||||||
| 4 | - | |||||||||||||||||||||||||
| 5 | - | |||||||||||||||||||||||||
| 6 | ASN1_STRING * | - | ||||||||||||||||||||||||
| 7 | d2i_ASN1_type_bytes(ASN1_STRING **a, const unsigned char **pp, | - | ||||||||||||||||||||||||
| 8 | long length, int type) | - | ||||||||||||||||||||||||
| 9 | { | - | ||||||||||||||||||||||||
| 10 | ASN1_STRING *ret = | - | ||||||||||||||||||||||||
| 11 | ((void *)0) | - | ||||||||||||||||||||||||
| 12 | ; | - | ||||||||||||||||||||||||
| 13 | const unsigned char *p; | - | ||||||||||||||||||||||||
| 14 | unsigned char *s; | - | ||||||||||||||||||||||||
| 15 | long len; | - | ||||||||||||||||||||||||
| 16 | int inf, tag, xclass; | - | ||||||||||||||||||||||||
| 17 | int i = 0; | - | ||||||||||||||||||||||||
| 18 | - | |||||||||||||||||||||||||
| 19 | p = *pp; | - | ||||||||||||||||||||||||
| 20 | inf = ASN1_get_object(&p, &len, &tag, &xclass, length); | - | ||||||||||||||||||||||||
| 21 | if (inf & 0x80
| 0 | ||||||||||||||||||||||||
| 22 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||||||||
| 23 | - | |||||||||||||||||||||||||
| 24 | if (tag >= 32
| 0 | ||||||||||||||||||||||||
| 25 | i = 153; | - | ||||||||||||||||||||||||
| 26 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||||||||
| 27 | } | - | ||||||||||||||||||||||||
| 28 | if (!(ASN1_tag2bit(tag) & type)
| 0 | ||||||||||||||||||||||||
| 29 | i = 169; | - | ||||||||||||||||||||||||
| 30 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||||||||
| 31 | } | - | ||||||||||||||||||||||||
| 32 | - | |||||||||||||||||||||||||
| 33 | - | |||||||||||||||||||||||||
| 34 | if (tag == 3
| 0 | ||||||||||||||||||||||||
| 35 | return never executed: (d2i_ASN1_BIT_STRING(a, pp, length));return (d2i_ASN1_BIT_STRING(a, pp, length));never executed: return (d2i_ASN1_BIT_STRING(a, pp, length)); | 0 | ||||||||||||||||||||||||
| 36 | - | |||||||||||||||||||||||||
| 37 | if ((
| 0 | ||||||||||||||||||||||||
| 38 | ((void *)0)
| 0 | ||||||||||||||||||||||||
| 39 | )
| 0 | ||||||||||||||||||||||||
| 40 | ((void *)0)
| 0 | ||||||||||||||||||||||||
| 41 | )
| 0 | ||||||||||||||||||||||||
| 42 | if ((
| 0 | ||||||||||||||||||||||||
| 43 | ((void *)0)
| 0 | ||||||||||||||||||||||||
| 44 | ) | - | ||||||||||||||||||||||||
| 45 | return never executed: (return ( ((void *)0) );never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||
| 46 | ((void *)0) never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||
| 47 | ); never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||
| 48 | } never executed: elseend of block | 0 | ||||||||||||||||||||||||
| 49 | ret = (*a); never executed: ret = (*a); | 0 | ||||||||||||||||||||||||
| 50 | - | |||||||||||||||||||||||||
| 51 | if (len != 0
| 0 | ||||||||||||||||||||||||
| 52 | s = malloc(len + 1); | - | ||||||||||||||||||||||||
| 53 | if (s ==
| 0 | ||||||||||||||||||||||||
| 54 | ((void *)0)
| 0 | ||||||||||||||||||||||||
| 55 | ) { | - | ||||||||||||||||||||||||
| 56 | i = (1|64); | - | ||||||||||||||||||||||||
| 57 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||||||||
| 58 | } | - | ||||||||||||||||||||||||
| 59 | memcpy(s, p, len); | - | ||||||||||||||||||||||||
| 60 | s[len]='\0'; | - | ||||||||||||||||||||||||
| 61 | p += len; | - | ||||||||||||||||||||||||
| 62 | } never executed: elseend of block | 0 | ||||||||||||||||||||||||
| 63 | s = never executed: s = ((void *)0) ; | 0 | ||||||||||||||||||||||||
| 64 | ((void *)0) never executed: s = ((void *)0) ; | 0 | ||||||||||||||||||||||||
| 65 | ; never executed: s = ((void *)0) ; | 0 | ||||||||||||||||||||||||
| 66 | - | |||||||||||||||||||||||||
| 67 | free(ret->data); | - | ||||||||||||||||||||||||
| 68 | ret->length = (int)len; | - | ||||||||||||||||||||||||
| 69 | ret->data = s; | - | ||||||||||||||||||||||||
| 70 | ret->type = tag; | - | ||||||||||||||||||||||||
| 71 | if (a !=
| 0 | ||||||||||||||||||||||||
| 72 | ((void *)0)
| 0 | ||||||||||||||||||||||||
| 73 | ) | - | ||||||||||||||||||||||||
| 74 | (* never executed: a) = ret;(*a) = ret;never executed: (*a) = ret; | 0 | ||||||||||||||||||||||||
| 75 | *pp = p; | - | ||||||||||||||||||||||||
| 76 | return never executed: (ret);return (ret);never executed: return (ret); | 0 | ||||||||||||||||||||||||
| 77 | - | |||||||||||||||||||||||||
| 78 | err: | - | ||||||||||||||||||||||||
| 79 | ERR_put_error(13,(0xfff),(i),__FILE__,126); | - | ||||||||||||||||||||||||
| 80 | if (a ==
| 0 | ||||||||||||||||||||||||
| 81 | ((void *)0)
| 0 | ||||||||||||||||||||||||
| 82 | || *
| 0 | ||||||||||||||||||||||||
| 83 | ASN1_STRING_free(ret); never executed: ASN1_STRING_free(ret); | 0 | ||||||||||||||||||||||||
| 84 | return never executed: (return ( ((void *)0) );never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||
| 85 | ((void *)0) never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||
| 86 | ); never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||
| 87 | } | - | ||||||||||||||||||||||||
| 88 | - | |||||||||||||||||||||||||
| 89 | int | - | ||||||||||||||||||||||||
| 90 | i2d_ASN1_bytes(ASN1_STRING *a, unsigned char **pp, int tag, int xclass) | - | ||||||||||||||||||||||||
| 91 | { | - | ||||||||||||||||||||||||
| 92 | int ret, r, constructed; | - | ||||||||||||||||||||||||
| 93 | unsigned char *p; | - | ||||||||||||||||||||||||
| 94 | - | |||||||||||||||||||||||||
| 95 | if (a ==
| 0 | ||||||||||||||||||||||||
| 96 | ((void *)0)
| 0 | ||||||||||||||||||||||||
| 97 | ) | - | ||||||||||||||||||||||||
| 98 | return never executed: (0);return (0);never executed: return (0); | 0 | ||||||||||||||||||||||||
| 99 | - | |||||||||||||||||||||||||
| 100 | if (tag == 3
| 0 | ||||||||||||||||||||||||
| 101 | return never executed: (i2d_ASN1_BIT_STRING(a, pp));return (i2d_ASN1_BIT_STRING(a, pp));never executed: return (i2d_ASN1_BIT_STRING(a, pp)); | 0 | ||||||||||||||||||||||||
| 102 | - | |||||||||||||||||||||||||
| 103 | ret = a->length; | - | ||||||||||||||||||||||||
| 104 | r = ASN1_object_size(0, ret, tag); | - | ||||||||||||||||||||||||
| 105 | if (pp ==
| 0 | ||||||||||||||||||||||||
| 106 | ((void *)0)
| 0 | ||||||||||||||||||||||||
| 107 | ) | - | ||||||||||||||||||||||||
| 108 | return never executed: (r);return (r);never executed: return (r); | 0 | ||||||||||||||||||||||||
| 109 | p = *pp; | - | ||||||||||||||||||||||||
| 110 | - | |||||||||||||||||||||||||
| 111 | if ((
| 0 | ||||||||||||||||||||||||
| 112 | constructed = 1; never executed: constructed = 1; | 0 | ||||||||||||||||||||||||
| 113 | else | - | ||||||||||||||||||||||||
| 114 | constructed = 0; never executed: constructed = 0; | 0 | ||||||||||||||||||||||||
| 115 | ASN1_put_object(&p, constructed, ret, tag, xclass); | - | ||||||||||||||||||||||||
| 116 | memcpy(p, a->data, a->length); | - | ||||||||||||||||||||||||
| 117 | p += a->length; | - | ||||||||||||||||||||||||
| 118 | *pp = p; | - | ||||||||||||||||||||||||
| 119 | return never executed: (r);return (r);never executed: return (r); | 0 | ||||||||||||||||||||||||
| 120 | } | - | ||||||||||||||||||||||||
| 121 | - | |||||||||||||||||||||||||
| 122 | ASN1_STRING * | - | ||||||||||||||||||||||||
| 123 | d2i_ASN1_bytes(ASN1_STRING **a, const unsigned char **pp, | - | ||||||||||||||||||||||||
| 124 | long length, int Ptag, int Pclass) | - | ||||||||||||||||||||||||
| 125 | { | - | ||||||||||||||||||||||||
| 126 | ASN1_STRING *ret = | - | ||||||||||||||||||||||||
| 127 | ((void *)0) | - | ||||||||||||||||||||||||
| 128 | ; | - | ||||||||||||||||||||||||
| 129 | const unsigned char *p; | - | ||||||||||||||||||||||||
| 130 | unsigned char *s; | - | ||||||||||||||||||||||||
| 131 | long len; | - | ||||||||||||||||||||||||
| 132 | int inf, tag, xclass; | - | ||||||||||||||||||||||||
| 133 | int i = 0; | - | ||||||||||||||||||||||||
| 134 | - | |||||||||||||||||||||||||
| 135 | if ((
| 0 | ||||||||||||||||||||||||
| 136 | ((void *)0)
| 0 | ||||||||||||||||||||||||
| 137 | )
| 0 | ||||||||||||||||||||||||
| 138 | ((void *)0)
| 0 | ||||||||||||||||||||||||
| 139 | )
| 0 | ||||||||||||||||||||||||
| 140 | if ((
| 0 | ||||||||||||||||||||||||
| 141 | ((void *)0)
| 0 | ||||||||||||||||||||||||
| 142 | ) | - | ||||||||||||||||||||||||
| 143 | return never executed: (return ( ((void *)0) );never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||
| 144 | ((void *)0) never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||
| 145 | ); never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||
| 146 | } never executed: elseend of block | 0 | ||||||||||||||||||||||||
| 147 | ret = (*a); never executed: ret = (*a); | 0 | ||||||||||||||||||||||||
| 148 | - | |||||||||||||||||||||||||
| 149 | p= *pp; | - | ||||||||||||||||||||||||
| 150 | inf = ASN1_get_object(&p, &len, &tag, &xclass, length); | - | ||||||||||||||||||||||||
| 151 | if (inf & 0x80
| 0 | ||||||||||||||||||||||||
| 152 | i = 102; | - | ||||||||||||||||||||||||
| 153 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||||||||
| 154 | } | - | ||||||||||||||||||||||||
| 155 | - | |||||||||||||||||||||||||
| 156 | if (tag != Ptag
| 0 | ||||||||||||||||||||||||
| 157 | i = 168; | - | ||||||||||||||||||||||||
| 158 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||||||||
| 159 | } | - | ||||||||||||||||||||||||
| 160 | - | |||||||||||||||||||||||||
| 161 | if (inf & 0x20
| 0 | ||||||||||||||||||||||||
| 162 | ASN1_const_CTX c; | - | ||||||||||||||||||||||||
| 163 | - | |||||||||||||||||||||||||
| 164 | c.pp = pp; | - | ||||||||||||||||||||||||
| 165 | c.p = p; | - | ||||||||||||||||||||||||
| 166 | c.inf = inf; | - | ||||||||||||||||||||||||
| 167 | c.slen = len; | - | ||||||||||||||||||||||||
| 168 | c.tag = Ptag; | - | ||||||||||||||||||||||||
| 169 | c.xclass = Pclass; | - | ||||||||||||||||||||||||
| 170 | c.max = (
| 0 | ||||||||||||||||||||||||
| 171 | if (!asn1_collate_primitive(ret, &c)
| 0 | ||||||||||||||||||||||||
| 172 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||||||||
| 173 | else { | - | ||||||||||||||||||||||||
| 174 | p = c.p; | - | ||||||||||||||||||||||||
| 175 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 176 | } else { | - | ||||||||||||||||||||||||
| 177 | if (len != 0
| 0 | ||||||||||||||||||||||||
| 178 | if ((
| 0 | ||||||||||||||||||||||||
| 179 | ((void *)0)
| 0 | ||||||||||||||||||||||||
| 180 | )
| 0 | ||||||||||||||||||||||||
| 181 | free(ret->data); | - | ||||||||||||||||||||||||
| 182 | ret->data = | - | ||||||||||||||||||||||||
| 183 | ((void *)0) | - | ||||||||||||||||||||||||
| 184 | ; | - | ||||||||||||||||||||||||
| 185 | s = malloc(len + 1); | - | ||||||||||||||||||||||||
| 186 | if (s ==
| 0 | ||||||||||||||||||||||||
| 187 | ((void *)0)
| 0 | ||||||||||||||||||||||||
| 188 | ) { | - | ||||||||||||||||||||||||
| 189 | i = (1|64); | - | ||||||||||||||||||||||||
| 190 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||||||||
| 191 | } | - | ||||||||||||||||||||||||
| 192 | } never executed: elseend of block | 0 | ||||||||||||||||||||||||
| 193 | s = ret->data; never executed: s = ret->data; | 0 | ||||||||||||||||||||||||
| 194 | memcpy(s, p, len); | - | ||||||||||||||||||||||||
| 195 | s[len] = '\0'; | - | ||||||||||||||||||||||||
| 196 | p += len; | - | ||||||||||||||||||||||||
| 197 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
| 198 | s = | - | ||||||||||||||||||||||||
| 199 | ((void *)0) | - | ||||||||||||||||||||||||
| 200 | ; | - | ||||||||||||||||||||||||
| 201 | free(ret->data); | - | ||||||||||||||||||||||||
| 202 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 203 | - | |||||||||||||||||||||||||
| 204 | ret->length = (int)len; | - | ||||||||||||||||||||||||
| 205 | ret->data = s; | - | ||||||||||||||||||||||||
| 206 | ret->type = Ptag; | - | ||||||||||||||||||||||||
| 207 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 208 | - | |||||||||||||||||||||||||
| 209 | if (a !=
| 0 | ||||||||||||||||||||||||
| 210 | ((void *)0)
| 0 | ||||||||||||||||||||||||
| 211 | ) | - | ||||||||||||||||||||||||
| 212 | (* never executed: a) = ret;(*a) = ret;never executed: (*a) = ret; | 0 | ||||||||||||||||||||||||
| 213 | *pp = p; | - | ||||||||||||||||||||||||
| 214 | return never executed: (ret);return (ret);never executed: return (ret); | 0 | ||||||||||||||||||||||||
| 215 | - | |||||||||||||||||||||||||
| 216 | err: | - | ||||||||||||||||||||||||
| 217 | if (a ==
| 0 | ||||||||||||||||||||||||
| 218 | ((void *)0)
| 0 | ||||||||||||||||||||||||
| 219 | || *
| 0 | ||||||||||||||||||||||||
| 220 | ASN1_STRING_free(ret); never executed: ASN1_STRING_free(ret); | 0 | ||||||||||||||||||||||||
| 221 | ERR_put_error(13,(0xfff),(i),__FILE__,238); | - | ||||||||||||||||||||||||
| 222 | return never executed: (return ( ((void *)0) );never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||
| 223 | ((void *)0) never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||
| 224 | ); never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||
| 225 | } | - | ||||||||||||||||||||||||
| 226 | - | |||||||||||||||||||||||||
| 227 | - | |||||||||||||||||||||||||
| 228 | - | |||||||||||||||||||||||||
| 229 | - | |||||||||||||||||||||||||
| 230 | - | |||||||||||||||||||||||||
| 231 | - | |||||||||||||||||||||||||
| 232 | static int | - | ||||||||||||||||||||||||
| 233 | asn1_collate_primitive(ASN1_STRING *a, ASN1_const_CTX *c) | - | ||||||||||||||||||||||||
| 234 | { | - | ||||||||||||||||||||||||
| 235 | ASN1_STRING *os = | - | ||||||||||||||||||||||||
| 236 | ((void *)0) | - | ||||||||||||||||||||||||
| 237 | ; | - | ||||||||||||||||||||||||
| 238 | BUF_MEM b; | - | ||||||||||||||||||||||||
| 239 | int num; | - | ||||||||||||||||||||||||
| 240 | - | |||||||||||||||||||||||||
| 241 | b.length = 0; | - | ||||||||||||||||||||||||
| 242 | b.max = 0; | - | ||||||||||||||||||||||||
| 243 | b.data = | - | ||||||||||||||||||||||||
| 244 | ((void *)0) | - | ||||||||||||||||||||||||
| 245 | ; | - | ||||||||||||||||||||||||
| 246 | - | |||||||||||||||||||||||||
| 247 | if (a ==
| 0 | ||||||||||||||||||||||||
| 248 | ((void *)0)
| 0 | ||||||||||||||||||||||||
| 249 | ) { | - | ||||||||||||||||||||||||
| 250 | c->error = (3|64); | - | ||||||||||||||||||||||||
| 251 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||||||||
| 252 | } | - | ||||||||||||||||||||||||
| 253 | - | |||||||||||||||||||||||||
| 254 | num = 0; | - | ||||||||||||||||||||||||
| 255 | for (;;) { | - | ||||||||||||||||||||||||
| 256 | if (c->inf & 1
| 0 | ||||||||||||||||||||||||
| 257 | c->eos = ASN1_const_check_infinite_end(&c->p, | - | ||||||||||||||||||||||||
| 258 | (long)(c->max - c->p)); | - | ||||||||||||||||||||||||
| 259 | if (c->eos
| 0 | ||||||||||||||||||||||||
| 260 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 261 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
| 262 | if (c->slen <= 0
| 0 | ||||||||||||||||||||||||
| 263 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 264 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 265 | - | |||||||||||||||||||||||||
| 266 | c->q = c->p; | - | ||||||||||||||||||||||||
| 267 | if (d2i_ASN1_bytes(&os, &c->p, c->max - c->p, c->tag,
| 0 | ||||||||||||||||||||||||
| 268 | c->xclass) ==
| 0 | ||||||||||||||||||||||||
| 269 | ((void *)0)
| 0 | ||||||||||||||||||||||||
| 270 | ) { | - | ||||||||||||||||||||||||
| 271 | c->error = 13; | - | ||||||||||||||||||||||||
| 272 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||||||||
| 273 | } | - | ||||||||||||||||||||||||
| 274 | - | |||||||||||||||||||||||||
| 275 | if (!BUF_MEM_grow_clean(&b, num + os->length)
| 0 | ||||||||||||||||||||||||
| 276 | c->error = 7; | - | ||||||||||||||||||||||||
| 277 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||||||||
| 278 | } | - | ||||||||||||||||||||||||
| 279 | memcpy(&(b.data[num]), os->data, os->length); | - | ||||||||||||||||||||||||
| 280 | if (!(c->inf & 1)
| 0 | ||||||||||||||||||||||||
| 281 | c->slen -= (c->p - c->q); never executed: c->slen -= (c->p - c->q); | 0 | ||||||||||||||||||||||||
| 282 | num += os->length; | - | ||||||||||||||||||||||||
| 283 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 284 | - | |||||||||||||||||||||||||
| 285 | if (!asn1_const_Finish(c)
| 0 | ||||||||||||||||||||||||
| 286 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||||||||
| 287 | - | |||||||||||||||||||||||||
| 288 | a->length = num; | - | ||||||||||||||||||||||||
| 289 | free(a->data); | - | ||||||||||||||||||||||||
| 290 | a->data = (unsigned char *)b.data; | - | ||||||||||||||||||||||||
| 291 | ASN1_STRING_free(os); | - | ||||||||||||||||||||||||
| 292 | return never executed: (1);return (1);never executed: return (1); | 0 | ||||||||||||||||||||||||
| 293 | - | |||||||||||||||||||||||||
| 294 | err: | - | ||||||||||||||||||||||||
| 295 | ERR_put_error(13,(0xfff),(c->error),__FILE__,302); | - | ||||||||||||||||||||||||
| 296 | ASN1_STRING_free(os); | - | ||||||||||||||||||||||||
| 297 | free(b.data); | - | ||||||||||||||||||||||||
| 298 | return never executed: (0);return (0);never executed: return (0); | 0 | ||||||||||||||||||||||||
| 299 | } | - | ||||||||||||||||||||||||
| Switch to Source code | Preprocessed file |