| Line | Source | Count |
| 1 | | - |
| 2 | | - |
| 3 | | - |
| 4 | | - |
| 5 | typedef struct { | - |
| 6 | unsigned char *pbData; | - |
| 7 | int cbData; | - |
| 8 | } MYBLOB; | - |
| 9 | | - |
| 10 | | - |
| 11 | | - |
| 12 | | - |
| 13 | static int | - |
| 14 | SetBlobCmp(const void *elem1, const void *elem2) | - |
| 15 | { | - |
| 16 | const MYBLOB *b1 = (const MYBLOB *)elem1; | - |
| 17 | const MYBLOB *b2 = (const MYBLOB *)elem2; | - |
| 18 | int r; | - |
| 19 | | - |
| 20 | r = memcmp(b1->pbData, b2->pbData, | - |
| 21 | b1->cbData < b2->cbData ? b1->cbData : b2->cbData); | - |
| 22 | if (r != 0| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 23 | return never executed: return r; r;never executed: return r; | 0 |
| 24 | return never executed: return b1->cbData - b2->cbData; b1->cbData - b2->cbData;never executed: return b1->cbData - b2->cbData; | 0 |
| 25 | } | - |
| 26 | | - |
| 27 | | - |
| 28 | int | - |
| 29 | i2d_ASN1_SET(struct stack_st_OPENSSL_BLOCK *a, unsigned char **pp, i2d_of_void *i2d, | - |
| 30 | int ex_tag, int ex_class, int is_set) | - |
| 31 | { | - |
| 32 | int ret = 0, r; | - |
| 33 | int i; | - |
| 34 | unsigned char *p; | - |
| 35 | unsigned char *pStart, *pTempMem; | - |
| 36 | MYBLOB *rgSetBlob; | - |
| 37 | int totSize; | - |
| 38 | | - |
| 39 | if (a == | TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 40 | ((void *)0)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 41 | ) | - |
| 42 | return never executed: return 0; 0;never executed: return 0; | 0 |
| 43 | for (i = sk_num(((_STACK*) (1 ? a : (struct stack_st_OPENSSL_BLOCK*)0))) - 1; i >= 0| TRUE | never evaluated | | FALSE | never evaluated |
; i--) | 0 |
| 44 | ret += i2d(((OPENSSL_BLOCK)sk_value(((_STACK*) (1 ? a : (struct stack_st_OPENSSL_BLOCK*)0)), i)), never executed: ret += i2d(((OPENSSL_BLOCK)sk_value(((_STACK*) (1 ? a : (struct stack_st_OPENSSL_BLOCK*)0)), i)), ((void *)0) ); | 0 |
| 45 | ((void *)0) never executed: ret += i2d(((OPENSSL_BLOCK)sk_value(((_STACK*) (1 ? a : (struct stack_st_OPENSSL_BLOCK*)0)), i)), ((void *)0) ); | 0 |
| 46 | ); never executed: ret += i2d(((OPENSSL_BLOCK)sk_value(((_STACK*) (1 ? a : (struct stack_st_OPENSSL_BLOCK*)0)), i)), ((void *)0) ); | 0 |
| 47 | r = ASN1_object_size(1, ret, ex_tag); | - |
| 48 | if (pp == | TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 49 | ((void *)0)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 50 | ) | - |
| 51 | return never executed: return r; r;never executed: return r; | 0 |
| 52 | | - |
| 53 | p = *pp; | - |
| 54 | ASN1_put_object(&p, 1, ret, ex_tag, ex_class); | - |
| 55 | | - |
| 56 | | - |
| 57 | | - |
| 58 | | - |
| 59 | | - |
| 60 | if (!is_set| TRUE | never evaluated | | FALSE | never evaluated |
|| (| TRUE | never evaluated | | FALSE | never evaluated |
sk_num(((_STACK*) (1 ? a : (struct stack_st_OPENSSL_BLOCK*)0))) < 2)| TRUE | never evaluated | | FALSE | never evaluated |
) { | 0 |
| 61 | for (i = 0; i < sk_num(((_STACK*) (1 ? a : (struct stack_st_OPENSSL_BLOCK*)0)))| TRUE | never evaluated | | FALSE | never evaluated |
; i++) | 0 |
| 62 | i2d(((OPENSSL_BLOCK)sk_value(((_STACK*) (1 ? a : (struct stack_st_OPENSSL_BLOCK*)0)), i)), &p); never executed: i2d(((OPENSSL_BLOCK)sk_value(((_STACK*) (1 ? a : (struct stack_st_OPENSSL_BLOCK*)0)), i)), &p); | 0 |
| 63 | | - |
| 64 | *pp = p; | - |
| 65 | return never executed: return r; r;never executed: return r; | 0 |
| 66 | } | - |
| 67 | | - |
| 68 | pStart = p; | - |
| 69 | | - |
| 70 | rgSetBlob = reallocarray( | - |
| 71 | ((void *)0) | - |
| 72 | , sk_num(((_STACK*) (1 ? a : (struct stack_st_OPENSSL_BLOCK*)0))), sizeof(MYBLOB)); | - |
| 73 | if (rgSetBlob == | TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 74 | ((void *)0)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 75 | ) { | - |
| 76 | ERR_put_error(13,(0xfff),((1|64)),__FILE__,128); | - |
| 77 | return never executed: return 0; 0;never executed: return 0; | 0 |
| 78 | } | - |
| 79 | | - |
| 80 | for (i = 0; i < sk_num(((_STACK*) (1 ? a : (struct stack_st_OPENSSL_BLOCK*)0)))| TRUE | never evaluated | | FALSE | never evaluated |
; i++) { | 0 |
| 81 | rgSetBlob[i].pbData = p; | - |
| 82 | i2d(((OPENSSL_BLOCK)sk_value(((_STACK*) (1 ? a : (struct stack_st_OPENSSL_BLOCK*)0)), i)), &p); | - |
| 83 | | - |
| 84 | rgSetBlob[i].cbData = p - rgSetBlob[i].pbData; | - |
| 85 | } never executed: end of block | 0 |
| 86 | *pp = p; | - |
| 87 | totSize = p - pStart; | - |
| 88 | | - |
| 89 | | - |
| 90 | | - |
| 91 | | - |
| 92 | | - |
| 93 | | - |
| 94 | qsort(rgSetBlob, sk_num(((_STACK*) (1 ? a : (struct stack_st_OPENSSL_BLOCK*)0))), sizeof(MYBLOB), SetBlobCmp); | - |
| 95 | if ((| TRUE | never evaluated | | FALSE | never evaluated |
pTempMem = malloc(totSize)) == | TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 96 | ((void *)0)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 97 | ) { | - |
| 98 | free(rgSetBlob); | - |
| 99 | ERR_put_error(13,(0xfff),((1|64)),__FILE__,149); | - |
| 100 | return never executed: return 0; 0;never executed: return 0; | 0 |
| 101 | } | - |
| 102 | | - |
| 103 | | - |
| 104 | p = pTempMem; | - |
| 105 | for (i = 0; i < sk_num(((_STACK*) (1 ? a : (struct stack_st_OPENSSL_BLOCK*)0)))| TRUE | never evaluated | | FALSE | never evaluated |
; ++i) { | 0 |
| 106 | memcpy(p, rgSetBlob[i].pbData, rgSetBlob[i].cbData); | - |
| 107 | p += rgSetBlob[i].cbData; | - |
| 108 | } never executed: end of block | 0 |
| 109 | | - |
| 110 | | - |
| 111 | memcpy(pStart, pTempMem, totSize); | - |
| 112 | free(pTempMem); | - |
| 113 | free(rgSetBlob); | - |
| 114 | | - |
| 115 | return never executed: return r; r;never executed: return r; | 0 |
| 116 | } | - |
| 117 | | - |
| 118 | struct stack_st_OPENSSL_BLOCK * | - |
| 119 | d2i_ASN1_SET(struct stack_st_OPENSSL_BLOCK **a, const unsigned char **pp, long length, | - |
| 120 | d2i_of_void *d2i, void (*free_func)(OPENSSL_BLOCK), int ex_tag, | - |
| 121 | int ex_class) | - |
| 122 | { | - |
| 123 | ASN1_const_CTX c; | - |
| 124 | struct stack_st_OPENSSL_BLOCK *ret = | - |
| 125 | ((void *)0) | - |
| 126 | ; | - |
| 127 | | - |
| 128 | if (a == | TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 129 | ((void *)0)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 130 | || (*| TRUE | never evaluated | | FALSE | never evaluated |
a) == | TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 131 | ((void *)0)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 132 | ) { | - |
| 133 | if ((| TRUE | never evaluated | | FALSE | never evaluated |
ret = ((struct stack_st_OPENSSL_BLOCK *)sk_new_null())) == | TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 134 | ((void *)0)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 135 | ) { | - |
| 136 | ERR_put_error(13,(0xfff),((1|64)),__FILE__,178); | - |
| 137 | goto never executed: goto err; err;never executed: goto err; | 0 |
| 138 | } | - |
| 139 | } never executed: end of block else | 0 |
| 140 | ret = *a; never executed: ret = *a; | 0 |
| 141 | | - |
| 142 | c.p = *pp; | - |
| 143 | c.max = (| TRUE | never evaluated | | FALSE | never evaluated |
length == 0)| TRUE | never evaluated | | FALSE | never evaluated |
? 0 : (c.p + length); | 0 |
| 144 | | - |
| 145 | c.inf = ASN1_get_object(&c.p, &c.slen, &c.tag, &c.xclass, c.max - c.p); | - |
| 146 | if (c.inf & 0x80| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 147 | goto never executed: goto err; err;never executed: goto err; | 0 |
| 148 | if (ex_class != c.xclass| TRUE | never evaluated | | FALSE | never evaluated |
) { | 0 |
| 149 | ERR_put_error(13,(0xfff),(101),__FILE__,191); | - |
| 150 | goto never executed: goto err; err;never executed: goto err; | 0 |
| 151 | } | - |
| 152 | if (ex_tag != c.tag| TRUE | never evaluated | | FALSE | never evaluated |
) { | 0 |
| 153 | ERR_put_error(13,(0xfff),(104),__FILE__,195); | - |
| 154 | goto never executed: goto err; err;never executed: goto err; | 0 |
| 155 | } | - |
| 156 | if (c.slen + c.p > c.max| TRUE | never evaluated | | FALSE | never evaluated |
) { | 0 |
| 157 | ERR_put_error(13,(0xfff),(136),__FILE__,199); | - |
| 158 | goto never executed: goto err; err;never executed: goto err; | 0 |
| 159 | } | - |
| 160 | | - |
| 161 | | - |
| 162 | if (c.inf == (0x20 + 1)| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 163 | c.slen = length + *pp - c.p; never executed: c.slen = length + *pp - c.p; | 0 |
| 164 | c.max = c.p + c.slen; | - |
| 165 | | - |
| 166 | while (c.p < c.max| TRUE | never evaluated | | FALSE | never evaluated |
) { | 0 |
| 167 | char *s; | - |
| 168 | | - |
| 169 | if ((((| TRUE | never evaluated | | FALSE | never evaluated |
c.inf&1) == 0)| TRUE | never evaluated | | FALSE | never evaluated |
?(c.slen <= 0): (c.eos=ASN1_const_check_infinite_end(&c.p,c.slen)))| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 170 | break; never executed: break; | 0 |
| 171 | if ((| TRUE | never evaluated | | FALSE | never evaluated |
s = d2i(| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 172 | ((void *)0)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 173 | , &c.p, c.slen)) == | TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 174 | ((void *)0)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 175 | ) { | - |
| 176 | ERR_put_error(13,(0xfff),(113),__FILE__,214); | - |
| 177 | asn1_add_error(*pp, (int)(c.p - *pp)); | - |
| 178 | goto never executed: goto err; err;never executed: goto err; | 0 |
| 179 | } | - |
| 180 | if (!sk_push(((_STACK*) (1 ? ret : (struct stack_st_OPENSSL_BLOCK*)0)), ((void*) (1 ? s : (void*)0)))| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 181 | goto never executed: goto err; err;never executed: goto err; | 0 |
| 182 | } never executed: end of block | 0 |
| 183 | if (a != | TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 184 | ((void *)0)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 185 | ) | - |
| 186 | * never executed: *a = ret; a = ret;never executed: *a = ret; | 0 |
| 187 | *pp = c.p; | - |
| 188 | return never executed: return ret; ret;never executed: return ret; | 0 |
| 189 | | - |
| 190 | err: | - |
| 191 | if (a == | TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 192 | ((void *)0)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 193 | || *| TRUE | never evaluated | | FALSE | never evaluated |
a != ret| TRUE | never evaluated | | FALSE | never evaluated |
) { | 0 |
| 194 | if (free_func != | TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 195 | ((void *)0)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 196 | ) | - |
| 197 | sk_pop_free(((_STACK*) (1 ? ret : (struct stack_st_OPENSSL_BLOCK*)0)), ((void (*)(void *)) ((1 ? free_func : (void (*)(OPENSSL_BLOCK))0)))); never executed: sk_pop_free(((_STACK*) (1 ? ret : (struct stack_st_OPENSSL_BLOCK*)0)), ((void (*)(void *)) ((1 ? free_func : (void (*)(OPENSSL_BLOCK))0)))); | 0 |
| 198 | else | - |
| 199 | sk_free(((_STACK*) (1 ? ret : (struct stack_st_OPENSSL_BLOCK*)0))); never executed: sk_free(((_STACK*) (1 ? ret : (struct stack_st_OPENSSL_BLOCK*)0))); | 0 |
| 200 | } | - |
| 201 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
| 202 | ((void *)0) never executed: return ((void *)0) ; | 0 |
| 203 | ; never executed: return ((void *)0) ; | 0 |
| 204 | } | - |
| | |