| Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/asn1/a_d2i_fp.c |
| Switch to Source code | Preprocessed file |
| Line | Source | Count | ||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | - | |||||||||||||||||||||||||||||||
| 2 | - | |||||||||||||||||||||||||||||||
| 3 | static int asn1_d2i_read_bio(BIO *in, BUF_MEM **pb); | - | ||||||||||||||||||||||||||||||
| 4 | - | |||||||||||||||||||||||||||||||
| 5 | - | |||||||||||||||||||||||||||||||
| 6 | - | |||||||||||||||||||||||||||||||
| 7 | void * | - | ||||||||||||||||||||||||||||||
| 8 | ASN1_d2i_fp(void *(*xnew)(void), d2i_of_void *d2i, FILE *in, void **x) | - | ||||||||||||||||||||||||||||||
| 9 | { | - | ||||||||||||||||||||||||||||||
| 10 | BIO *b; | - | ||||||||||||||||||||||||||||||
| 11 | void *ret; | - | ||||||||||||||||||||||||||||||
| 12 | - | |||||||||||||||||||||||||||||||
| 13 | if ((
| 0 | ||||||||||||||||||||||||||||||
| 14 | ((void *)0)
| 0 | ||||||||||||||||||||||||||||||
| 15 | ) { | - | ||||||||||||||||||||||||||||||
| 16 | ERR_put_error(13,(0xfff),(7),__FILE__,77); | - | ||||||||||||||||||||||||||||||
| 17 | return never executed: (return ( ((void *)0) );never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||||||||
| 18 | ((void *)0) never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||||||||
| 19 | ); never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||||||||
| 20 | } | - | ||||||||||||||||||||||||||||||
| 21 | BIO_ctrl(b,106,0x00,(char *)in); | - | ||||||||||||||||||||||||||||||
| 22 | ret = ASN1_d2i_bio(xnew, d2i, b, x); | - | ||||||||||||||||||||||||||||||
| 23 | BIO_free(b); | - | ||||||||||||||||||||||||||||||
| 24 | return never executed: (ret);return (ret);never executed: return (ret); | 0 | ||||||||||||||||||||||||||||||
| 25 | } | - | ||||||||||||||||||||||||||||||
| 26 | - | |||||||||||||||||||||||||||||||
| 27 | void * | - | ||||||||||||||||||||||||||||||
| 28 | ASN1_d2i_bio(void *(*xnew)(void), d2i_of_void *d2i, BIO *in, void **x) | - | ||||||||||||||||||||||||||||||
| 29 | { | - | ||||||||||||||||||||||||||||||
| 30 | BUF_MEM *b = | - | ||||||||||||||||||||||||||||||
| 31 | ((void *)0) | - | ||||||||||||||||||||||||||||||
| 32 | ; | - | ||||||||||||||||||||||||||||||
| 33 | const unsigned char *p; | - | ||||||||||||||||||||||||||||||
| 34 | void *ret = | - | ||||||||||||||||||||||||||||||
| 35 | ((void *)0) | - | ||||||||||||||||||||||||||||||
| 36 | ; | - | ||||||||||||||||||||||||||||||
| 37 | int len; | - | ||||||||||||||||||||||||||||||
| 38 | - | |||||||||||||||||||||||||||||||
| 39 | len = asn1_d2i_read_bio(in, &b); | - | ||||||||||||||||||||||||||||||
| 40 | if (len < 0
| 0 | ||||||||||||||||||||||||||||||
| 41 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
| 42 | - | |||||||||||||||||||||||||||||||
| 43 | p = (unsigned char *)b->data; | - | ||||||||||||||||||||||||||||||
| 44 | ret = d2i(x, &p, len); | - | ||||||||||||||||||||||||||||||
| 45 | - | |||||||||||||||||||||||||||||||
| 46 | err: code before this statement never executed: err: | 0 | ||||||||||||||||||||||||||||||
| 47 | if (b !=
| 0 | ||||||||||||||||||||||||||||||
| 48 | ((void *)0)
| 0 | ||||||||||||||||||||||||||||||
| 49 | ) | - | ||||||||||||||||||||||||||||||
| 50 | BUF_MEM_free(b); never executed: BUF_MEM_free(b); | 0 | ||||||||||||||||||||||||||||||
| 51 | return never executed: (ret);return (ret);never executed: return (ret); | 0 | ||||||||||||||||||||||||||||||
| 52 | } | - | ||||||||||||||||||||||||||||||
| 53 | - | |||||||||||||||||||||||||||||||
| 54 | - | |||||||||||||||||||||||||||||||
| 55 | - | |||||||||||||||||||||||||||||||
| 56 | void * | - | ||||||||||||||||||||||||||||||
| 57 | ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *x) | - | ||||||||||||||||||||||||||||||
| 58 | { | - | ||||||||||||||||||||||||||||||
| 59 | BUF_MEM *b = | - | ||||||||||||||||||||||||||||||
| 60 | ((void *)0) | - | ||||||||||||||||||||||||||||||
| 61 | ; | - | ||||||||||||||||||||||||||||||
| 62 | const unsigned char *p; | - | ||||||||||||||||||||||||||||||
| 63 | void *ret = | - | ||||||||||||||||||||||||||||||
| 64 | ((void *)0) | - | ||||||||||||||||||||||||||||||
| 65 | ; | - | ||||||||||||||||||||||||||||||
| 66 | int len; | - | ||||||||||||||||||||||||||||||
| 67 | - | |||||||||||||||||||||||||||||||
| 68 | len = asn1_d2i_read_bio(in, &b); | - | ||||||||||||||||||||||||||||||
| 69 | if (len < 0
| 0 | ||||||||||||||||||||||||||||||
| 70 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
| 71 | - | |||||||||||||||||||||||||||||||
| 72 | p = (const unsigned char *)b->data; | - | ||||||||||||||||||||||||||||||
| 73 | ret = ASN1_item_d2i(x, &p, len, it); | - | ||||||||||||||||||||||||||||||
| 74 | - | |||||||||||||||||||||||||||||||
| 75 | err: code before this statement never executed: err: | 0 | ||||||||||||||||||||||||||||||
| 76 | if (b !=
| 0 | ||||||||||||||||||||||||||||||
| 77 | ((void *)0)
| 0 | ||||||||||||||||||||||||||||||
| 78 | ) | - | ||||||||||||||||||||||||||||||
| 79 | BUF_MEM_free(b); never executed: BUF_MEM_free(b); | 0 | ||||||||||||||||||||||||||||||
| 80 | return never executed: (ret);return (ret);never executed: return (ret); | 0 | ||||||||||||||||||||||||||||||
| 81 | } | - | ||||||||||||||||||||||||||||||
| 82 | - | |||||||||||||||||||||||||||||||
| 83 | void * | - | ||||||||||||||||||||||||||||||
| 84 | ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x) | - | ||||||||||||||||||||||||||||||
| 85 | { | - | ||||||||||||||||||||||||||||||
| 86 | BIO *b; | - | ||||||||||||||||||||||||||||||
| 87 | char *ret; | - | ||||||||||||||||||||||||||||||
| 88 | - | |||||||||||||||||||||||||||||||
| 89 | if ((
| 0 | ||||||||||||||||||||||||||||||
| 90 | ((void *)0)
| 0 | ||||||||||||||||||||||||||||||
| 91 | ) { | - | ||||||||||||||||||||||||||||||
| 92 | ERR_put_error(13,(0xfff),(7),__FILE__,137); | - | ||||||||||||||||||||||||||||||
| 93 | return never executed: (return ( ((void *)0) );never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||||||||
| 94 | ((void *)0) never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||||||||
| 95 | ); never executed: return ( ((void *)0) ); | 0 | ||||||||||||||||||||||||||||||
| 96 | } | - | ||||||||||||||||||||||||||||||
| 97 | BIO_ctrl(b,106,0x00,(char *)in); | - | ||||||||||||||||||||||||||||||
| 98 | ret = ASN1_item_d2i_bio(it, b, x); | - | ||||||||||||||||||||||||||||||
| 99 | BIO_free(b); | - | ||||||||||||||||||||||||||||||
| 100 | return never executed: (ret);return (ret);never executed: return (ret); | 0 | ||||||||||||||||||||||||||||||
| 101 | } | - | ||||||||||||||||||||||||||||||
| 102 | - | |||||||||||||||||||||||||||||||
| 103 | - | |||||||||||||||||||||||||||||||
| 104 | - | |||||||||||||||||||||||||||||||
| 105 | static int | - | ||||||||||||||||||||||||||||||
| 106 | asn1_d2i_read_bio(BIO *in, BUF_MEM **pb) | - | ||||||||||||||||||||||||||||||
| 107 | { | - | ||||||||||||||||||||||||||||||
| 108 | BUF_MEM *b; | - | ||||||||||||||||||||||||||||||
| 109 | unsigned char *p; | - | ||||||||||||||||||||||||||||||
| 110 | int i; | - | ||||||||||||||||||||||||||||||
| 111 | ASN1_const_CTX c; | - | ||||||||||||||||||||||||||||||
| 112 | size_t want = 8; | - | ||||||||||||||||||||||||||||||
| 113 | int eos = 0; | - | ||||||||||||||||||||||||||||||
| 114 | size_t off = 0; | - | ||||||||||||||||||||||||||||||
| 115 | size_t len = 0; | - | ||||||||||||||||||||||||||||||
| 116 | - | |||||||||||||||||||||||||||||||
| 117 | b = BUF_MEM_new(); | - | ||||||||||||||||||||||||||||||
| 118 | if (b ==
| 0 | ||||||||||||||||||||||||||||||
| 119 | ((void *)0)
| 0 | ||||||||||||||||||||||||||||||
| 120 | ) { | - | ||||||||||||||||||||||||||||||
| 121 | ERR_put_error(13,(0xfff),((1|64)),__FILE__,162); | - | ||||||||||||||||||||||||||||||
| 122 | return never executed: -1;return -1;never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
| 123 | } | - | ||||||||||||||||||||||||||||||
| 124 | - | |||||||||||||||||||||||||||||||
| 125 | ERR_clear_error(); | - | ||||||||||||||||||||||||||||||
| 126 | for (;;) { | - | ||||||||||||||||||||||||||||||
| 127 | if (want >= (len - off)
| 0 | ||||||||||||||||||||||||||||||
| 128 | want -= (len - off); | - | ||||||||||||||||||||||||||||||
| 129 | - | |||||||||||||||||||||||||||||||
| 130 | if (len + want < len
| 0 | ||||||||||||||||||||||||||||||
| 131 | !BUF_MEM_grow_clean(b, len + want)
| 0 | ||||||||||||||||||||||||||||||
| 132 | ERR_put_error(13,(0xfff),((1|64)),__FILE__,173); | - | ||||||||||||||||||||||||||||||
| 133 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
| 134 | } | - | ||||||||||||||||||||||||||||||
| 135 | i = BIO_read(in, &(b->data[len]), want); | - | ||||||||||||||||||||||||||||||
| 136 | if ((
| 0 | ||||||||||||||||||||||||||||||
| 137 | ERR_put_error(13,(0xfff),(142),__FILE__,178); | - | ||||||||||||||||||||||||||||||
| 138 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
| 139 | } | - | ||||||||||||||||||||||||||||||
| 140 | if (i > 0
| 0 | ||||||||||||||||||||||||||||||
| 141 | if (len + i < len
| 0 | ||||||||||||||||||||||||||||||
| 142 | ERR_put_error(13,(0xfff),(155),__FILE__,183); | - | ||||||||||||||||||||||||||||||
| 143 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
| 144 | } | - | ||||||||||||||||||||||||||||||
| 145 | len += i; | - | ||||||||||||||||||||||||||||||
| 146 | } never executed: end of block | 0 | ||||||||||||||||||||||||||||||
| 147 | } never executed: end of block | 0 | ||||||||||||||||||||||||||||||
| 148 | - | |||||||||||||||||||||||||||||||
| 149 | - | |||||||||||||||||||||||||||||||
| 150 | p = (unsigned char *) & (b->data[off]); | - | ||||||||||||||||||||||||||||||
| 151 | c.p = p; | - | ||||||||||||||||||||||||||||||
| 152 | c.inf = ASN1_get_object(&(c.p), &(c.slen), &(c.tag), | - | ||||||||||||||||||||||||||||||
| 153 | &(c.xclass), len - off); | - | ||||||||||||||||||||||||||||||
| 154 | if (c.inf & 0x80
| 0 | ||||||||||||||||||||||||||||||
| 155 | unsigned long e; | - | ||||||||||||||||||||||||||||||
| 156 | - | |||||||||||||||||||||||||||||||
| 157 | e = (int)((ERR_peek_error())&0xfffL); | - | ||||||||||||||||||||||||||||||
| 158 | if (e != 155
| 0 | ||||||||||||||||||||||||||||||
| 159 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
| 160 | else | - | ||||||||||||||||||||||||||||||
| 161 | ERR_clear_error(); never executed: ERR_clear_error(); | 0 | ||||||||||||||||||||||||||||||
| 162 | } | - | ||||||||||||||||||||||||||||||
| 163 | i = c.p - p; | - | ||||||||||||||||||||||||||||||
| 164 | off += i; | - | ||||||||||||||||||||||||||||||
| 165 | - | |||||||||||||||||||||||||||||||
| 166 | if (c.inf & 1
| 0 | ||||||||||||||||||||||||||||||
| 167 | - | |||||||||||||||||||||||||||||||
| 168 | eos++; | - | ||||||||||||||||||||||||||||||
| 169 | if (eos < 0
| 0 | ||||||||||||||||||||||||||||||
| 170 | ERR_put_error(13,(0xfff),(123),__FILE__,211); | - | ||||||||||||||||||||||||||||||
| 171 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
| 172 | } | - | ||||||||||||||||||||||||||||||
| 173 | want = 8; | - | ||||||||||||||||||||||||||||||
| 174 | } never executed: else if (eosend of block
| 0 | ||||||||||||||||||||||||||||||
| 175 | - | |||||||||||||||||||||||||||||||
| 176 | eos--; | - | ||||||||||||||||||||||||||||||
| 177 | if (eos <= 0
| 0 | ||||||||||||||||||||||||||||||
| 178 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
| 179 | else | - | ||||||||||||||||||||||||||||||
| 180 | want = 8; never executed: want = 8; | 0 | ||||||||||||||||||||||||||||||
| 181 | } else { | - | ||||||||||||||||||||||||||||||
| 182 | - | |||||||||||||||||||||||||||||||
| 183 | want = c.slen; | - | ||||||||||||||||||||||||||||||
| 184 | if (want > (len - off)
| 0 | ||||||||||||||||||||||||||||||
| 185 | size_t chunk_max = (16 * 1024); | - | ||||||||||||||||||||||||||||||
| 186 | - | |||||||||||||||||||||||||||||||
| 187 | want -= (len - off); | - | ||||||||||||||||||||||||||||||
| 188 | if (want > 0x7fffffff
| 0 | ||||||||||||||||||||||||||||||
| 189 | len+want < len
| 0 | ||||||||||||||||||||||||||||||
| 190 | ERR_put_error(13,(0xfff),(155),__FILE__,231); | - | ||||||||||||||||||||||||||||||
| 191 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
| 192 | } | - | ||||||||||||||||||||||||||||||
| 193 | while (want > 0
| 0 | ||||||||||||||||||||||||||||||
| 194 | - | |||||||||||||||||||||||||||||||
| 195 | - | |||||||||||||||||||||||||||||||
| 196 | - | |||||||||||||||||||||||||||||||
| 197 | - | |||||||||||||||||||||||||||||||
| 198 | - | |||||||||||||||||||||||||||||||
| 199 | - | |||||||||||||||||||||||||||||||
| 200 | size_t chunk = want > chunk_max
| 0 | ||||||||||||||||||||||||||||||
| 201 | - | |||||||||||||||||||||||||||||||
| 202 | if (!BUF_MEM_grow_clean(b, len + chunk)
| 0 | ||||||||||||||||||||||||||||||
| 203 | ERR_put_error(13,(0xfff),((1|64)),__FILE__,244); | - | ||||||||||||||||||||||||||||||
| 204 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
| 205 | } | - | ||||||||||||||||||||||||||||||
| 206 | want -= chunk; | - | ||||||||||||||||||||||||||||||
| 207 | while (chunk > 0
| 0 | ||||||||||||||||||||||||||||||
| 208 | i = BIO_read(in, &(b->data[len]), chunk); | - | ||||||||||||||||||||||||||||||
| 209 | if (i <= 0
| 0 | ||||||||||||||||||||||||||||||
| 210 | ERR_put_error(13,(0xfff),(142),__FILE__,251); | - | ||||||||||||||||||||||||||||||
| 211 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
| 212 | } | - | ||||||||||||||||||||||||||||||
| 213 | - | |||||||||||||||||||||||||||||||
| 214 | - | |||||||||||||||||||||||||||||||
| 215 | - | |||||||||||||||||||||||||||||||
| 216 | - | |||||||||||||||||||||||||||||||
| 217 | len += i; | - | ||||||||||||||||||||||||||||||
| 218 | chunk -= i; | - | ||||||||||||||||||||||||||||||
| 219 | } never executed: end of block | 0 | ||||||||||||||||||||||||||||||
| 220 | if (chunk_max < 0x7fffffff/2
| 0 | ||||||||||||||||||||||||||||||
| 221 | chunk_max *= 2; never executed: chunk_max *= 2; | 0 | ||||||||||||||||||||||||||||||
| 222 | } never executed: end of block | 0 | ||||||||||||||||||||||||||||||
| 223 | } never executed: end of block | 0 | ||||||||||||||||||||||||||||||
| 224 | if (off + c.slen < off
| 0 | ||||||||||||||||||||||||||||||
| 225 | ERR_put_error(13,(0xfff),(155),__FILE__,266); | - | ||||||||||||||||||||||||||||||
| 226 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
| 227 | } | - | ||||||||||||||||||||||||||||||
| 228 | off += c.slen; | - | ||||||||||||||||||||||||||||||
| 229 | if (eos <= 0
| 0 | ||||||||||||||||||||||||||||||
| 230 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
| 231 | } else | - | ||||||||||||||||||||||||||||||
| 232 | want = 8; never executed: want = 8; | 0 | ||||||||||||||||||||||||||||||
| 233 | } | - | ||||||||||||||||||||||||||||||
| 234 | } | - | ||||||||||||||||||||||||||||||
| 235 | - | |||||||||||||||||||||||||||||||
| 236 | if (off > 0x7fffffff
| 0 | ||||||||||||||||||||||||||||||
| 237 | ERR_put_error(13,(0xfff),(155),__FILE__,278); | - | ||||||||||||||||||||||||||||||
| 238 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||||||||||||||
| 239 | } | - | ||||||||||||||||||||||||||||||
| 240 | - | |||||||||||||||||||||||||||||||
| 241 | *pb = b; | - | ||||||||||||||||||||||||||||||
| 242 | return never executed: off;return off;never executed: return off; | 0 | ||||||||||||||||||||||||||||||
| 243 | - | |||||||||||||||||||||||||||||||
| 244 | err: | - | ||||||||||||||||||||||||||||||
| 245 | if (b !=
| 0 | ||||||||||||||||||||||||||||||
| 246 | ((void *)0)
| 0 | ||||||||||||||||||||||||||||||
| 247 | ) | - | ||||||||||||||||||||||||||||||
| 248 | BUF_MEM_free(b); never executed: BUF_MEM_free(b); | 0 | ||||||||||||||||||||||||||||||
| 249 | return never executed: -1;return -1;never executed: return -1; | 0 | ||||||||||||||||||||||||||||||
| 250 | } | - | ||||||||||||||||||||||||||||||
| Switch to Source code | Preprocessed file |