| Line | Source | Count | 
|---|
| 1 |  | - | 
| 2 |  | - | 
| 3 |  | - | 
| 4 |  | - | 
| 5 |  | - | 
| 6 |  | - | 
| 7 |  | - | 
| 8 |  | - | 
| 9 |  | - | 
| 10 |  | - | 
| 11 |  | - | 
| 12 | struct macalg { | - | 
| 13 | char *name; | - | 
| 14 | int type; | - | 
| 15 | int alg; | - | 
| 16 | int truncatebits; | - | 
| 17 | int key_len; | - | 
| 18 | int len; | - | 
| 19 | int etm; | - | 
| 20 | }; | - | 
| 21 |  | - | 
| 22 | static const struct macalg macs[] = { | - | 
| 23 |  | - | 
| 24 | { "hmac-sha1", 1, 1, 0, 0, 0, 0 }, | - | 
| 25 | { "hmac-sha1-96", 1, 1, 96, 0, 0, 0 }, | - | 
| 26 |  | - | 
| 27 | { "hmac-sha2-256", 1, 2, 0, 0, 0, 0 }, | - | 
| 28 | { "hmac-sha2-512", 1, 4, 0, 0, 0, 0 }, | - | 
| 29 |  | - | 
| 30 | { "hmac-md5", 1, 0, 0, 0, 0, 0 }, | - | 
| 31 | { "hmac-md5-96", 1, 0, 96, 0, 0, 0 }, | - | 
| 32 | { "umac-64@openssh.com", 2, 0, 0, 128, 64, 0 }, | - | 
| 33 | { "umac-128@openssh.com", 3, 0, 0, 128, 128, 0 }, | - | 
| 34 |  | - | 
| 35 |  | - | 
| 36 | { "hmac-sha1-etm@openssh.com", 1, 1, 0, 0, 0, 1 }, | - | 
| 37 | { "hmac-sha1-96-etm@openssh.com", 1, 1, 96, 0, 0, 1 }, | - | 
| 38 |  | - | 
| 39 | { "hmac-sha2-256-etm@openssh.com", 1, 2, 0, 0, 0, 1 }, | - | 
| 40 | { "hmac-sha2-512-etm@openssh.com", 1, 4, 0, 0, 0, 1 }, | - | 
| 41 |  | - | 
| 42 | { "hmac-md5-etm@openssh.com", 1, 0, 0, 0, 0, 1 }, | - | 
| 43 | { "hmac-md5-96-etm@openssh.com", 1, 0, 96, 0, 0, 1 }, | - | 
| 44 | { "umac-64-etm@openssh.com", 2, 0, 0, 128, 64, 1 }, | - | 
| 45 | { "umac-128-etm@openssh.com", 3, 0, 0, 128, 128, 1 }, | - | 
| 46 |  | - | 
| 47 | { | - | 
| 48 | ((void *)0) | - | 
| 49 | , 0, 0, 0, 0, 0, 0 } | - | 
| 50 | }; | - | 
| 51 |  | - | 
| 52 |  | - | 
| 53 | char * | - | 
| 54 | mac_alg_list(char sep) | - | 
| 55 | { | - | 
| 56 | char *ret = | - | 
| 57 | ((void *)0) | - | 
| 58 | , *tmp; | - | 
| 59 | size_t nlen, rlen = 0; | - | 
| 60 | const struct macalg *m; | - | 
| 61 |  | - | 
| 62 | for (m = macs; m->name != | TRUE | evaluated 32 times by 1 test |  | FALSE | evaluated 2 times by 1 test | 
 | 2-32 | 
| 63 | ((void *)0) | TRUE | evaluated 32 times by 1 test |  | FALSE | evaluated 2 times by 1 test | 
 | 2-32 | 
| 64 | ; m++) { | - | 
| 65 | if (ret != | TRUE | evaluated 30 times by 1 test |  | FALSE | evaluated 2 times by 1 test | 
 | 2-30 | 
| 66 | ((void *)0) | TRUE | evaluated 30 times by 1 test |  | FALSE | evaluated 2 times by 1 test | 
 | 2-30 | 
| 67 | ) | - | 
| 68 | ret[rlen++] = sep; executed 30 times by 1 test:  ret[rlen++] = sep; | 30 | 
| 69 | nlen = strlen(m->name); | - | 
| 70 | if (( tmp = realloc(ret, rlen + nlen + 2)) ==| TRUE | never evaluated |  | FALSE | evaluated 32 times by 1 test | 
| TRUE | never evaluated |  | FALSE | evaluated 32 times by 1 test | 
 | 0-32 | 
| 71 | ((void *)0) | TRUE | never evaluated |  | FALSE | evaluated 32 times by 1 test | 
 | 0-32 | 
| 72 | ) { | - | 
| 73 | free(ret); | - | 
| 74 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | 
| 75 | ((void *)0) never executed: return ((void *)0) ; | 0 | 
| 76 | ; never executed: return ((void *)0) ; | 0 | 
| 77 | } | - | 
| 78 | ret = tmp; | - | 
| 79 | memcpy(ret + rlen, m->name, nlen + 1); | - | 
| 80 | rlen += nlen; | - | 
| 81 | } executed 32 times by 1 test:  end of block | 32 | 
| 82 | return executed 2 times by 1 testret;:  return ret; executed 2 times by 1 test:  return ret; | 2 | 
| 83 | } | - | 
| 84 |  | - | 
| 85 | static int | - | 
| 86 | mac_setup_by_alg(struct sshmac *mac, const struct macalg *macalg) | - | 
| 87 | { | - | 
| 88 | mac->type = macalg->type; | - | 
| 89 | if (mac->type == 1 ) {| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 90 | if (( mac->hmac_ctx = ssh_hmac_start(macalg->alg)) ==| TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 91 | ((void *)0) | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 92 | ) | - | 
| 93 | return never executed: -2;return -2; never executed: return -2; | 0 | 
| 94 | mac->key_len = mac->mac_len = ssh_hmac_bytes(macalg->alg); | - | 
| 95 | } never executed: else {end of block | 0 | 
| 96 | mac->mac_len = macalg->len / 8; | - | 
| 97 | mac->key_len = macalg->key_len / 8; | - | 
| 98 | mac->umac_ctx = | - | 
| 99 | ((void *)0) | - | 
| 100 | ; | - | 
| 101 | } never executed: end of block | 0 | 
| 102 | if (macalg->truncatebits != 0 )| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 103 | mac->mac_len = macalg->truncatebits / 8; never executed: mac->mac_len = macalg->truncatebits / 8; | 0 | 
| 104 | mac->etm = macalg->etm; | - | 
| 105 | return never executed: 0;return 0; never executed: return 0; | 0 | 
| 106 | } | - | 
| 107 |  | - | 
| 108 | int | - | 
| 109 | mac_setup(struct sshmac *mac, char *name) | - | 
| 110 | { | - | 
| 111 | const struct macalg *m; | - | 
| 112 |  | - | 
| 113 | for (m = macs; m->name != | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 114 | ((void *)0) | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 115 | ; m++) { | - | 
| 116 | if ( | - | 
| 117 | __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 118 | name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 119 | ) && __builtin_constant_p ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 120 | m->name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 121 | ) && (__s1_len = __builtin_strlen ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 122 | name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 123 | ), __s2_len = __builtin_strlen ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 124 | m->name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 125 | ), (!((size_t)(const void *)(( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 126 | name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 127 | ) + 1) - (size_t)(const void *)( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 128 | name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 129 | ) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 130 | m->name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 131 | ) + 1) - (size_t)(const void *)( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 132 | m->name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 133 | ) == 1) || __s2_len >= 4)) ? __builtin_strcmp ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 134 | name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 135 | , | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 136 | m->name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 137 | ) : (__builtin_constant_p ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 138 | name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 139 | ) && ((size_t)(const void *)(( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 140 | name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 141 | ) + 1) - (size_t)(const void *)( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 142 | name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 143 | ) == 1) && (__s1_len = __builtin_strlen ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 144 | name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 145 | ), __s1_len < 4) ? (__builtin_constant_p ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 146 | m->name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 147 | ) && ((size_t)(const void *)(( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 148 | m->name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 149 | ) + 1) - (size_t)(const void *)( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 150 | m->name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 151 | ) == 1) ? __builtin_strcmp ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 152 | name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 153 | , | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 154 | m->name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 155 | ) : (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 156 | m->name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 157 | ); int __result = (((const unsigned char *) (const char *) ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 158 | name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 159 | ))[0] - __s2[0]); if (__s1_len > 0 && __result == 0| TRUE | never evaluated |  | FALSE | never evaluated | 
) { __result = (((const unsigned char *) (const char *) (| TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 160 | name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 161 | ))[1] - __s2[1]); if (__s1_len > 1 && __result == 0| TRUE | never evaluated |  | FALSE | never evaluated | 
) { __result = (((const unsigned char *) (const char *) (| TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 162 | name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 163 | ))[2] - __s2[2]); if (__s1_len > 2 && __result == 0| TRUE | never evaluated |  | FALSE | never evaluated | 
) __result = (((const unsigned char *) (const char *) (| TRUE | never evaluated |  | FALSE | never evaluated | 
never executed: __result = (((const unsigned char *) (const char *) ( name ))[3] - __s2[3]); | 0 | 
| 164 | name | TRUE | never evaluated |  | FALSE | never evaluated | 
never executed: __result = (((const unsigned char *) (const char *) ( name ))[3] - __s2[3]); | 0 | 
| 165 | ))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 166 | m->name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 167 | ) && ((size_t)(const void *)(( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 168 | m->name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 169 | ) + 1) - (size_t)(const void *)( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 170 | m->name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 171 | ) == 1) && (__s2_len = __builtin_strlen ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 172 | m->name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 173 | ), __s2_len < 4) ? (__builtin_constant_p ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 174 | name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 175 | ) && ((size_t)(const void *)(( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 176 | name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 177 | ) + 1) - (size_t)(const void *)( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 178 | name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 179 | ) == 1) ? __builtin_strcmp ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 180 | name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 181 | , | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 182 | m->name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 183 | ) : -(__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 184 | name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 185 | ); int __result = (((const unsigned char *) (const char *) ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 186 | m->name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 187 | ))[0] - __s2[0]); if (__s2_len > 0 && __result == 0| TRUE | never evaluated |  | FALSE | never evaluated | 
) { __result = (((const unsigned char *) (const char *) (| TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 188 | m->name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 189 | ))[1] - __s2[1]); if (__s2_len > 1 && __result == 0| TRUE | never evaluated |  | FALSE | never evaluated | 
) { __result = (((const unsigned char *) (const char *) (| TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 190 | m->name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 191 | ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0| TRUE | never evaluated |  | FALSE | never evaluated | 
) __result = (((const unsigned char *) (const char *) (| TRUE | never evaluated |  | FALSE | never evaluated | 
never executed: __result = (((const unsigned char *) (const char *) ( m->name ))[3] - __s2[3]); | 0 | 
| 192 | m->name | TRUE | never evaluated |  | FALSE | never evaluated | 
never executed: __result = (((const unsigned char *) (const char *) ( m->name ))[3] - __s2[3]); | 0 | 
| 193 | ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 194 | name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 195 | , | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 196 | m->name | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 197 | )))); }) | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 198 | != 0 )| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 199 | continue; never executed: continue; | 0 | 
| 200 | if (mac != | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 201 | ((void *)0) | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 202 | ) | - | 
| 203 | return never executed: mac_setup_by_alg(mac, m);return mac_setup_by_alg(mac, m); never executed: return mac_setup_by_alg(mac, m); | 0 | 
| 204 | return never executed: 0;return 0; never executed: return 0; | 0 | 
| 205 | } | - | 
| 206 | return never executed: -10;return -10; never executed: return -10; | 0 | 
| 207 | } | - | 
| 208 |  | - | 
| 209 | int | - | 
| 210 | mac_init(struct sshmac *mac) | - | 
| 211 | { | - | 
| 212 | if (mac->key == | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 213 | ((void *)0) | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 214 | ) | - | 
| 215 | return never executed: -10;return -10; never executed: return -10; | 0 | 
| 216 | switch (mac->type) { | - | 
| 217 | case never executed: 1:case 1: never executed: case 1: | 0 | 
| 218 | if (mac->hmac_ctx == | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 219 | ((void *)0) | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 220 | || | - | 
| 221 | ssh_hmac_init(mac->hmac_ctx, mac->key, mac->key_len) < 0 )| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 222 | return never executed: -10;return -10; never executed: return -10; | 0 | 
| 223 | return never executed: 0;return 0; never executed: return 0; | 0 | 
| 224 | case never executed: 2:case 2: never executed: case 2: | 0 | 
| 225 | if (( mac->umac_ctx = umac_new(mac->key)) ==| TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 226 | ((void *)0) | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 227 | ) | - | 
| 228 | return never executed: -2;return -2; never executed: return -2; | 0 | 
| 229 | return never executed: 0;return 0; never executed: return 0; | 0 | 
| 230 | case never executed: 3:case 3: never executed: case 3: | 0 | 
| 231 | if (( mac->umac_ctx = umac128_new(mac->key)) ==| TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 232 | ((void *)0) | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 233 | ) | - | 
| 234 | return never executed: -2;return -2; never executed: return -2; | 0 | 
| 235 | return never executed: 0;return 0; never executed: return 0; | 0 | 
| 236 | default never executed: :default: never executed: default: | 0 | 
| 237 | return never executed: -10;return -10; never executed: return -10; | 0 | 
| 238 | } | - | 
| 239 | } | - | 
| 240 |  | - | 
| 241 | int | - | 
| 242 | mac_compute(struct sshmac *mac, u_int32_t seqno, | - | 
| 243 | const u_char *data, int datalen, | - | 
| 244 | u_char *digest, size_t dlen) | - | 
| 245 | { | - | 
| 246 | static union { | - | 
| 247 | u_char m[64]; | - | 
| 248 | u_int64_t for_align; | - | 
| 249 | } u; | - | 
| 250 | u_char b[4]; | - | 
| 251 | u_char nonce[8]; | - | 
| 252 |  | - | 
| 253 | if (mac->mac_len > sizeof(u) )| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 254 | return never executed: -1;return -1; never executed: return -1; | 0 | 
| 255 |  | - | 
| 256 | switch (mac->type) { | - | 
| 257 | case never executed: 1:case 1: never executed: case 1: | 0 | 
| 258 | put_u32(b, seqno); | - | 
| 259 |  | - | 
| 260 | if (ssh_hmac_init(mac->hmac_ctx, | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 261 | ((void *)0) | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 262 | , 0) < 0 ||| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 263 | ssh_hmac_update(mac->hmac_ctx, b, sizeof(b)) < 0 ||| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 264 | ssh_hmac_update(mac->hmac_ctx, data, datalen) < 0 ||| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 265 | ssh_hmac_final(mac->hmac_ctx, u.m, sizeof(u.m)) < 0 )| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 266 | return never executed: -22;return -22; never executed: return -22; | 0 | 
| 267 | break; never executed: break; | 0 | 
| 268 | case never executed: 2:case 2: never executed: case 2: | 0 | 
| 269 | do { const u_int64_t __v = (seqno); ((u_char *)(nonce))[0] = (__v >> 56) & 0xff; ((u_char *)(nonce))[1] = (__v >> 48) & 0xff; ((u_char *)(nonce))[2] = (__v >> 40) & 0xff; ((u_char *)(nonce))[3] = (__v >> 32) & 0xff; ((u_char *)(nonce))[4] = (__v >> 24) & 0xff; ((u_char *)(nonce))[5] = (__v >> 16) & 0xff; ((u_char *)(nonce))[6] = (__v >> 8) & 0xff; ((u_char *)(nonce))[7] = __v & 0xff; } while (0); | - | 
| 270 | umac_update(mac->umac_ctx, data, datalen); | - | 
| 271 | umac_final(mac->umac_ctx, u.m, nonce); | - | 
| 272 | break; never executed: break; | 0 | 
| 273 | case never executed: 3:case 3: never executed: case 3: | 0 | 
| 274 | put_u64(nonce, seqno); | - | 
| 275 | umac128_update(mac->umac_ctx, data, datalen); | - | 
| 276 | umac128_final(mac->umac_ctx, u.m, nonce); | - | 
| 277 | break; never executed: break; | 0 | 
| 278 | default never executed: :default: never executed: default: | 0 | 
| 279 | return never executed: -10;return -10; never executed: return -10; | 0 | 
| 280 | } | - | 
| 281 | if (digest != | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 282 | ((void *)0) | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 283 | ) { | - | 
| 284 | if (dlen > mac->mac_len )| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 285 | dlen = mac->mac_len; never executed: dlen = mac->mac_len; | 0 | 
| 286 | memcpy(digest, u.m, dlen); | - | 
| 287 | } never executed: end of block | 0 | 
| 288 | return never executed: 0;return 0; never executed: return 0; | 0 | 
| 289 | } | - | 
| 290 |  | - | 
| 291 | int | - | 
| 292 | mac_check(struct sshmac *mac, u_int32_t seqno, | - | 
| 293 | const u_char *data, size_t dlen, | - | 
| 294 | const u_char *theirmac, size_t mlen) | - | 
| 295 | { | - | 
| 296 | u_char ourmac[64]; | - | 
| 297 | int r; | - | 
| 298 |  | - | 
| 299 | if (mac->mac_len > mlen )| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 300 | return never executed: -10;return -10; never executed: return -10; | 0 | 
| 301 | if (( r = mac_compute(mac, seqno, data, dlen,| TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 302 | ourmac, sizeof(ourmac))) != 0 )| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 303 | return never executed: r;return r; never executed: return r; | 0 | 
| 304 | if (timingsafe_bcmp(ourmac, theirmac, mac->mac_len) != 0 )| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 305 | return never executed: -30;return -30; never executed: return -30; | 0 | 
| 306 | return never executed: 0;return 0; never executed: return 0; | 0 | 
| 307 | } | - | 
| 308 |  | - | 
| 309 | void | - | 
| 310 | mac_clear(struct sshmac *mac) | - | 
| 311 | { | - | 
| 312 | if (mac->type == 2 ) {| TRUE | never evaluated |  | FALSE | evaluated 704 times by 1 test | 
 | 0-704 | 
| 313 | if (mac->umac_ctx != | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 314 | ((void *)0) | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 315 | ) | - | 
| 316 | umac_delete(mac->umac_ctx); never executed: umac_delete(mac->umac_ctx); | 0 | 
| 317 | } never executed: else if (mac->type == 3end of block ) {| TRUE | never evaluated |  | FALSE | evaluated 704 times by 1 test | 
 | 0-704 | 
| 318 | if (mac->umac_ctx != | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 319 | ((void *)0) | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 320 | ) | - | 
| 321 | umac128_delete(mac->umac_ctx); never executed: umac128_delete(mac->umac_ctx); | 0 | 
| 322 | } never executed: else if (mac->hmac_ctx !=end of block | TRUE | never evaluated |  | FALSE | evaluated 704 times by 1 test | 
 | 0-704 | 
| 323 | ((void *)0) | TRUE | never evaluated |  | FALSE | evaluated 704 times by 1 test | 
 | 0-704 | 
| 324 | ) | - | 
| 325 | ssh_hmac_free(mac->hmac_ctx); never executed: ssh_hmac_free(mac->hmac_ctx); | 0 | 
| 326 | mac->hmac_ctx = | - | 
| 327 | ((void *)0) | - | 
| 328 | ; | - | 
| 329 | mac->umac_ctx = | - | 
| 330 | ((void *)0) | - | 
| 331 | ; | - | 
| 332 | } executed 704 times by 1 test:  end of block | 704 | 
| 333 |  | - | 
| 334 |  | - | 
| 335 |  | - | 
| 336 | int | - | 
| 337 | mac_valid(const char *names) | - | 
| 338 | { | - | 
| 339 | char *maclist, *cp, *p; | - | 
| 340 |  | - | 
| 341 | if (names == | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 342 | ((void *)0) | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 343 | || | - | 
| 344 | __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 345 | names | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 346 | ) && __builtin_constant_p ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 347 | "" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 348 | ) && (__s1_len = __builtin_strlen ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 349 | names | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 350 | ), __s2_len = __builtin_strlen ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 351 | "" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 352 | ), (!((size_t)(const void *)(( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 353 | names | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 354 | ) + 1) - (size_t)(const void *)( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 355 | names | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 356 | ) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 357 | "" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 358 | ) + 1) - (size_t)(const void *)( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 359 | "" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 360 | ) == 1) || __s2_len >= 4)) ? __builtin_strcmp ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 361 | names | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 362 | , | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 363 | "" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 364 | ) : (__builtin_constant_p ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 365 | names | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 366 | ) && ((size_t)(const void *)(( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 367 | names | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 368 | ) + 1) - (size_t)(const void *)( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 369 | names | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 370 | ) == 1) && (__s1_len = __builtin_strlen ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 371 | names | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 372 | ), __s1_len < 4) ? (__builtin_constant_p ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 373 | "" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 374 | ) && ((size_t)(const void *)(( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 375 | "" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 376 | ) + 1) - (size_t)(const void *)( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 377 | "" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 378 | ) == 1) ? __builtin_strcmp ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 379 | names | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 380 | , | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 381 | "" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 382 | ) : (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 383 | "" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 384 | ); int __result = (((const unsigned char *) (const char *) ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 385 | names | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 386 | ))[0] - __s2[0]); if (__s1_len > 0 && __result == 0| TRUE | never evaluated |  | FALSE | never evaluated | 
) { __result = (((const unsigned char *) (const char *) (| TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 387 | names | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 388 | ))[1] - __s2[1]); if (__s1_len > 1 && __result == 0| TRUE | never evaluated |  | FALSE | never evaluated | 
) { __result = (((const unsigned char *) (const char *) (| TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 389 | names | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 390 | ))[2] - __s2[2]); if (__s1_len > 2 && __result == 0| TRUE | never evaluated |  | FALSE | never evaluated | 
) __result = (((const unsigned char *) (const char *) (| TRUE | never evaluated |  | FALSE | never evaluated | 
never executed: __result = (((const unsigned char *) (const char *) ( names ))[3] - __s2[3]); | 0 | 
| 391 | names | TRUE | never evaluated |  | FALSE | never evaluated | 
never executed: __result = (((const unsigned char *) (const char *) ( names ))[3] - __s2[3]); | 0 | 
| 392 | ))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 393 | "" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 394 | ) && ((size_t)(const void *)(( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 395 | "" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 396 | ) + 1) - (size_t)(const void *)( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 397 | "" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 398 | ) == 1) && (__s2_len = __builtin_strlen ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 399 | "" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 400 | ), __s2_len < 4) ? (__builtin_constant_p ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 401 | names | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 402 | ) && ((size_t)(const void *)(( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 403 | names | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 404 | ) + 1) - (size_t)(const void *)( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 405 | names | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 406 | ) == 1) ? __builtin_strcmp ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 407 | names | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 408 | , | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 409 | "" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 410 | ) : -(__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 411 | names | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 412 | ); int __result = (((const unsigned char *) (const char *) ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 413 | "" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 414 | ))[0] - __s2[0]); if (__s2_len > 0 && __result == 0| TRUE | never evaluated |  | FALSE | never evaluated | 
) { __result = (((const unsigned char *) (const char *) (| TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 415 | "" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 416 | ))[1] - __s2[1]); if (__s2_len > 1 && __result == 0| TRUE | never evaluated |  | FALSE | never evaluated | 
) { __result = (((const unsigned char *) (const char *) (| TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 417 | "" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 418 | ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0| TRUE | never evaluated |  | FALSE | never evaluated | 
) __result = (((const unsigned char *) (const char *) (| TRUE | never evaluated |  | FALSE | never evaluated | 
never executed: __result = (((const unsigned char *) (const char *) ( "" ))[3] - __s2[3]); | 0 | 
| 419 | "" | TRUE | never evaluated |  | FALSE | never evaluated | 
never executed: __result = (((const unsigned char *) (const char *) ( "" ))[3] - __s2[3]); | 0 | 
| 420 | ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 421 | names | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 422 | , | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 423 | "" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 424 | )))); }) | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 425 | == 0 )| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 426 | return never executed: 0;return 0; never executed: return 0; | 0 | 
| 427 | if (( maclist = cp =| TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 428 | (__extension__ (__builtin_constant_p ( | TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 429 | names | TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 430 | ) && ((| TRUE | never evaluated |  | FALSE | never evaluated | 
size_t)(const void *)((| TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 431 | names | TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 432 | ) + 1) - (size_t)(const void *)( | TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 433 | names | TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 434 | ) == 1) ? (((const| TRUE | never evaluated |  | FALSE | never evaluated | 
char *) (| TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 435 | names | TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 436 | ))[0] == '\0' ? (char *) calloc ((size_t) 1, (size_t) 1) : ({ size_t __len = strlen (| TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 437 | names | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 438 | ) + 1; char *__retval = (char *) malloc (__len); if (__retval != ((void *)0) ) __retval = (char *) memcpy (__retval,| TRUE | never evaluated |  | FALSE | never evaluated | 
never executed: __retval = (char *) memcpy (__retval, names , __len); | 0 | 
| 439 | names | TRUE | never evaluated |  | FALSE | never evaluated | 
never executed: __retval = (char *) memcpy (__retval, names , __len); | 0 | 
| 440 | , __len); __retval; })) : __strdup ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 441 | names | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 442 | ))) | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 443 | ) == | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 444 | ((void *)0) | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 445 | ) | - | 
| 446 | return never executed: 0;return 0; never executed: return 0; | 0 | 
| 447 | for ((p = | - | 
| 448 | __extension__ ({ char __r0, __r1, __r2; (__builtin_constant_p ( | - | 
| 449 | "," | - | 
| 450 | ) && ((size_t)(const void *)(( | - | 
| 451 | "," | - | 
| 452 | ) + 1) - (size_t)(const void *)( | - | 
| 453 | "," | - | 
| 454 | ) == 1) && (__r0 = ((const char *) ( | - | 
| 455 | "," | - | 
| 456 | ))[0], ((const char *) ( | - | 
| 457 | "," | - | 
| 458 | ))[0] != '\0') ? ((__r1 = ((const char *) ( | - | 
| 459 | "," | - | 
| 460 | ))[1], ((const char *) ( | - | 
| 461 | "," | - | 
| 462 | ))[1] == '\0') ? __strsep_1c ( | - | 
| 463 | &cp | - | 
| 464 | , __r0) : ((__r2 = ((const char *) ( | - | 
| 465 | "," | - | 
| 466 | ))[2], __r2 == '\0') ? __strsep_2c ( | - | 
| 467 | &cp | - | 
| 468 | , __r0, __r1) : (((const char *) ( | - | 
| 469 | "," | - | 
| 470 | ))[3] == '\0' ? __strsep_3c ( | - | 
| 471 | &cp | - | 
| 472 | , __r0, __r1, __r2) : __strsep_g ( | - | 
| 473 | &cp | - | 
| 474 | , | - | 
| 475 | "," | - | 
| 476 | )))) : __strsep_g ( | - | 
| 477 | &cp | - | 
| 478 | , | - | 
| 479 | "," | - | 
| 480 | )); }) | - | 
| 481 | ); p && *| TRUE | never evaluated |  | FALSE | never evaluated | 
p != '\0'| TRUE | never evaluated |  | FALSE | never evaluated | 
;| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 482 | (p = | - | 
| 483 | __extension__ ({ char __r0, __r1, __r2; (__builtin_constant_p ( | - | 
| 484 | "," | - | 
| 485 | ) && ((size_t)(const void *)(( | - | 
| 486 | "," | - | 
| 487 | ) + 1) - (size_t)(const void *)( | - | 
| 488 | "," | - | 
| 489 | ) == 1) && (__r0 = ((const char *) ( | - | 
| 490 | "," | - | 
| 491 | ))[0], ((const char *) ( | - | 
| 492 | "," | - | 
| 493 | ))[0] != '\0') ? ((__r1 = ((const char *) ( | - | 
| 494 | "," | - | 
| 495 | ))[1], ((const char *) ( | - | 
| 496 | "," | - | 
| 497 | ))[1] == '\0') ? __strsep_1c ( | - | 
| 498 | &cp | - | 
| 499 | , __r0) : ((__r2 = ((const char *) ( | - | 
| 500 | "," | - | 
| 501 | ))[2], __r2 == '\0') ? __strsep_2c ( | - | 
| 502 | &cp | - | 
| 503 | , __r0, __r1) : (((const char *) ( | - | 
| 504 | "," | - | 
| 505 | ))[3] == '\0' ? __strsep_3c ( | - | 
| 506 | &cp | - | 
| 507 | , __r0, __r1, __r2) : __strsep_g ( | - | 
| 508 | &cp | - | 
| 509 | , | - | 
| 510 | "," | - | 
| 511 | )))) : __strsep_g ( | - | 
| 512 | &cp | - | 
| 513 | , | - | 
| 514 | "," | - | 
| 515 | )); }) | - | 
| 516 | )) { | - | 
| 517 | if (mac_setup( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 518 | ((void *)0) | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 519 | , p) < 0 ) {| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 520 | free(maclist); | - | 
| 521 | return never executed: 0;return 0; never executed: return 0; | 0 | 
| 522 | } | - | 
| 523 | } never executed: end of block | 0 | 
| 524 | free(maclist); | - | 
| 525 | return never executed: 1;return 1; never executed: return 1; | 0 | 
| 526 | } | - | 
|  |  |  |