Line | Source | Count |
1 | | - |
2 | | - |
3 | | - |
4 | | - |
5 | | - |
6 | struct revoked_serial { | - |
7 | u_int64_t lo, hi; | - |
8 | struct { struct revoked_serial *rbe_left; struct revoked_serial *rbe_right; struct revoked_serial *rbe_parent; int rbe_color; } tree_entry; | - |
9 | }; | - |
10 | static int serial_cmp(struct revoked_serial *a, struct revoked_serial *b); | - |
11 | struct revoked_serial_tree { struct revoked_serial *rbh_root; }; | - |
12 | __attribute__((__unused__)) static void revoked_serial_tree_RB_INSERT_COLOR(struct revoked_serial_tree *head, struct revoked_serial *elm) { struct revoked_serial *parent, *gparent, *tmp; while ((TRUE | never evaluated | FALSE | never evaluated |
parent = (elm)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_color == 1TRUE | never evaluated | FALSE | never evaluated |
) { gparent = (parent)->tree_entry.rbe_parent; if (parent == (gparent)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) { tmp = (gparent)->tree_entry.rbe_right; if (tmpTRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_color == 1TRUE | never evaluated | FALSE | never evaluated |
) { (tmp)->tree_entry.rbe_color = 0; do { (parent)->tree_entry.rbe_color = 0; (gparent)->tree_entry.rbe_color = 1; } while (0); elm = gparent; continue;never executed: continue; } if ((TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_right == elmTRUE | never evaluated | FALSE | never evaluated |
) { do { (tmp) = (parent)->tree_entry.rbe_right; if (((TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_right = (tmp)->tree_entry.rbe_left)TRUE | never evaluated | FALSE | never evaluated |
) { ((tmp)->tree_entry.rbe_left)->tree_entry.rbe_parent = (parent); }never executed: end of block do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent = (parent)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
parent) == ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); else ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); } else (never executed: (head)->rbh_root = (tmp); head)->rbh_root = (tmp);never executed: (head)->rbh_root = (tmp); (tmp)->tree_entry.rbe_left = (parent); (parent)->tree_entry.rbe_parent = (tmp); do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) do {}never executed: end of block while (0); } while (0); tmp = parent; parent = elm; elm = tmp; }never executed: end of block do { (parent)->tree_entry.rbe_color = 0; (gparent)->tree_entry.rbe_color = 1; } while (0); do { (tmp) = (gparent)->tree_entry.rbe_left; if (((TRUE | never evaluated | FALSE | never evaluated |
gparent)->tree_entry.rbe_left = (tmp)->tree_entry.rbe_right)TRUE | never evaluated | FALSE | never evaluated |
) { ((tmp)->tree_entry.rbe_right)->tree_entry.rbe_parent = (gparent); }never executed: end of block do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent = (gparent)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
gparent) == ((gparent)->tree_entry.rbe_parent)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((gparent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); gparent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp);never executed: ((gparent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); else ((never executed: ((gparent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); gparent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp);never executed: ((gparent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); } else (never executed: (head)->rbh_root = (tmp); head)->rbh_root = (tmp);never executed: (head)->rbh_root = (tmp); (tmp)->tree_entry.rbe_right = (gparent); (gparent)->tree_entry.rbe_parent = (tmp); do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) do {}never executed: end of block while (0); } while (0); }never executed: end of block else { tmp = (gparent)->tree_entry.rbe_left; if (tmpTRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_color == 1TRUE | never evaluated | FALSE | never evaluated |
) { (tmp)->tree_entry.rbe_color = 0; do { (parent)->tree_entry.rbe_color = 0; (gparent)->tree_entry.rbe_color = 1; } while (0); elm = gparent; continue;never executed: continue; } if ((TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_left == elmTRUE | never evaluated | FALSE | never evaluated |
) { do { (tmp) = (parent)->tree_entry.rbe_left; if (((TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_left = (tmp)->tree_entry.rbe_right)TRUE | never evaluated | FALSE | never evaluated |
) { ((tmp)->tree_entry.rbe_right)->tree_entry.rbe_parent = (parent); }never executed: end of block do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent = (parent)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
parent) == ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); else ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); } else (never executed: (head)->rbh_root = (tmp); head)->rbh_root = (tmp);never executed: (head)->rbh_root = (tmp); (tmp)->tree_entry.rbe_right = (parent); (parent)->tree_entry.rbe_parent = (tmp); do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) do {}never executed: end of block while (0); } while (0); tmp = parent; parent = elm; elm = tmp; }never executed: end of block do { (parent)->tree_entry.rbe_color = 0; (gparent)->tree_entry.rbe_color = 1; } while (0); do { (tmp) = (gparent)->tree_entry.rbe_right; if (((TRUE | never evaluated | FALSE | never evaluated |
gparent)->tree_entry.rbe_right = (tmp)->tree_entry.rbe_left)TRUE | never evaluated | FALSE | never evaluated |
) { ((tmp)->tree_entry.rbe_left)->tree_entry.rbe_parent = (gparent); }never executed: end of block do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent = (gparent)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
gparent) == ((gparent)->tree_entry.rbe_parent)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((gparent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); gparent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp);never executed: ((gparent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); else ((never executed: ((gparent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); gparent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp);never executed: ((gparent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); } else (never executed: (head)->rbh_root = (tmp); head)->rbh_root = (tmp);never executed: (head)->rbh_root = (tmp); (tmp)->tree_entry.rbe_left = (gparent); (gparent)->tree_entry.rbe_parent = (tmp); do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) do {}never executed: end of block while (0); } while (0); }never executed: end of block } (head->rbh_root)->tree_entry.rbe_color = 0; }never executed: end of block __attribute__((__unused__)) static void revoked_serial_tree_RB_REMOVE_COLOR(struct revoked_serial_tree *head, struct revoked_serial *parent, struct revoked_serial *elm) { struct revoked_serial *tmp; while ((elm == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
13 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
14 | || (TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_color == 0TRUE | never evaluated | FALSE | never evaluated |
) && elm != (head)->rbh_rootTRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_left == elmTRUE | never evaluated | FALSE | never evaluated |
) { tmp = (parent)->tree_entry.rbe_right; if ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_color == 1TRUE | never evaluated | FALSE | never evaluated |
) { do { (tmp)->tree_entry.rbe_color = 0; (parent)->tree_entry.rbe_color = 1; } while (0); do { (tmp) = (parent)->tree_entry.rbe_right; if (((TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_right = (tmp)->tree_entry.rbe_left)TRUE | never evaluated | FALSE | never evaluated |
) { ((tmp)->tree_entry.rbe_left)->tree_entry.rbe_parent = (parent); }never executed: end of block do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent = (parent)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
parent) == ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); else ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); } else (never executed: (head)->rbh_root = (tmp); head)->rbh_root = (tmp);never executed: (head)->rbh_root = (tmp); (tmp)->tree_entry.rbe_left = (parent); (parent)->tree_entry.rbe_parent = (tmp); do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) do {}never executed: end of block while (0); } while (0); tmp = (parent)->tree_entry.rbe_right; }never executed: end of block if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_left == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
15 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
16 | || ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_left)->tree_entry.rbe_color == 0TRUE | never evaluated | FALSE | never evaluated |
) && ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_right == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
17 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
18 | || ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_right)->tree_entry.rbe_color == 0TRUE | never evaluated | FALSE | never evaluated |
)) { (tmp)->tree_entry.rbe_color = 1; elm = parent; parent = (elm)->tree_entry.rbe_parent; }never executed: end of block else { if ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_right == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
19 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
20 | || ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_right)->tree_entry.rbe_color == 0TRUE | never evaluated | FALSE | never evaluated |
) { struct revoked_serial *oleft; if ((TRUE | never evaluated | FALSE | never evaluated |
oleft = (tmp)->tree_entry.rbe_left)TRUE | never evaluated | FALSE | never evaluated |
) (never executed: (oleft)->tree_entry.rbe_color = 0; oleft)->tree_entry.rbe_color = 0;never executed: (oleft)->tree_entry.rbe_color = 0; (tmp)->tree_entry.rbe_color = 1; do { (oleft) = (tmp)->tree_entry.rbe_left; if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_left = (oleft)->tree_entry.rbe_right)TRUE | never evaluated | FALSE | never evaluated |
) { ((oleft)->tree_entry.rbe_right)->tree_entry.rbe_parent = (tmp); }never executed: end of block do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
oleft)->tree_entry.rbe_parent = (tmp)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
tmp) == ((tmp)->tree_entry.rbe_parent)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((tmp)->tree_entry.rbe_parent)->tree_entry.rbe_left = (oleft); tmp)->tree_entry.rbe_parent)->tree_entry.rbe_left = (oleft);never executed: ((tmp)->tree_entry.rbe_parent)->tree_entry.rbe_left = (oleft); else ((never executed: ((tmp)->tree_entry.rbe_parent)->tree_entry.rbe_right = (oleft); tmp)->tree_entry.rbe_parent)->tree_entry.rbe_right = (oleft);never executed: ((tmp)->tree_entry.rbe_parent)->tree_entry.rbe_right = (oleft); } else (never executed: (head)->rbh_root = (oleft); head)->rbh_root = (oleft);never executed: (head)->rbh_root = (oleft); (oleft)->tree_entry.rbe_right = (tmp); (tmp)->tree_entry.rbe_parent = (oleft); do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
oleft)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) do {}never executed: end of block while (0); } while (0); tmp = (parent)->tree_entry.rbe_right; }never executed: end of block (tmp)->tree_entry.rbe_color = (parent)->tree_entry.rbe_color; (parent)->tree_entry.rbe_color = 0; if ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_rightTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((tmp)->tree_entry.rbe_right)->tree_entry.rbe_color = 0; tmp)->tree_entry.rbe_right)->tree_entry.rbe_color = 0;never executed: ((tmp)->tree_entry.rbe_right)->tree_entry.rbe_color = 0; do { (tmp) = (parent)->tree_entry.rbe_right; if (((TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_right = (tmp)->tree_entry.rbe_left)TRUE | never evaluated | FALSE | never evaluated |
) { ((tmp)->tree_entry.rbe_left)->tree_entry.rbe_parent = (parent); }never executed: end of block do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent = (parent)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
parent) == ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); else ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); } else (never executed: (head)->rbh_root = (tmp); head)->rbh_root = (tmp);never executed: (head)->rbh_root = (tmp); (tmp)->tree_entry.rbe_left = (parent); (parent)->tree_entry.rbe_parent = (tmp); do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) do {}never executed: end of block while (0); } while (0); elm = (head)->rbh_root; break;never executed: break; } } else { tmp = (parent)->tree_entry.rbe_left; if ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_color == 1TRUE | never evaluated | FALSE | never evaluated |
) { do { (tmp)->tree_entry.rbe_color = 0; (parent)->tree_entry.rbe_color = 1; } while (0); do { (tmp) = (parent)->tree_entry.rbe_left; if (((TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_left = (tmp)->tree_entry.rbe_right)TRUE | never evaluated | FALSE | never evaluated |
) { ((tmp)->tree_entry.rbe_right)->tree_entry.rbe_parent = (parent); }never executed: end of block do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent = (parent)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
parent) == ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); else ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); } else (never executed: (head)->rbh_root = (tmp); head)->rbh_root = (tmp);never executed: (head)->rbh_root = (tmp); (tmp)->tree_entry.rbe_right = (parent); (parent)->tree_entry.rbe_parent = (tmp); do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) do {}never executed: end of block while (0); } while (0); tmp = (parent)->tree_entry.rbe_left; }never executed: end of block if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_left == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
21 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
22 | || ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_left)->tree_entry.rbe_color == 0TRUE | never evaluated | FALSE | never evaluated |
) && ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_right == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
23 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
24 | || ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_right)->tree_entry.rbe_color == 0TRUE | never evaluated | FALSE | never evaluated |
)) { (tmp)->tree_entry.rbe_color = 1; elm = parent; parent = (elm)->tree_entry.rbe_parent; }never executed: end of block else { if ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_left == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
25 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
26 | || ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_left)->tree_entry.rbe_color == 0TRUE | never evaluated | FALSE | never evaluated |
) { struct revoked_serial *oright; if ((TRUE | never evaluated | FALSE | never evaluated |
oright = (tmp)->tree_entry.rbe_right)TRUE | never evaluated | FALSE | never evaluated |
) (never executed: (oright)->tree_entry.rbe_color = 0; oright)->tree_entry.rbe_color = 0;never executed: (oright)->tree_entry.rbe_color = 0; (tmp)->tree_entry.rbe_color = 1; do { (oright) = (tmp)->tree_entry.rbe_right; if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_right = (oright)->tree_entry.rbe_left)TRUE | never evaluated | FALSE | never evaluated |
) { ((oright)->tree_entry.rbe_left)->tree_entry.rbe_parent = (tmp); }never executed: end of block do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
oright)->tree_entry.rbe_parent = (tmp)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
tmp) == ((tmp)->tree_entry.rbe_parent)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((tmp)->tree_entry.rbe_parent)->tree_entry.rbe_left = (oright); tmp)->tree_entry.rbe_parent)->tree_entry.rbe_left = (oright);never executed: ((tmp)->tree_entry.rbe_parent)->tree_entry.rbe_left = (oright); else ((never executed: ((tmp)->tree_entry.rbe_parent)->tree_entry.rbe_right = (oright); tmp)->tree_entry.rbe_parent)->tree_entry.rbe_right = (oright);never executed: ((tmp)->tree_entry.rbe_parent)->tree_entry.rbe_right = (oright); } else (never executed: (head)->rbh_root = (oright); head)->rbh_root = (oright);never executed: (head)->rbh_root = (oright); (oright)->tree_entry.rbe_left = (tmp); (tmp)->tree_entry.rbe_parent = (oright); do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
oright)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) do {}never executed: end of block while (0); } while (0); tmp = (parent)->tree_entry.rbe_left; }never executed: end of block (tmp)->tree_entry.rbe_color = (parent)->tree_entry.rbe_color; (parent)->tree_entry.rbe_color = 0; if ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((tmp)->tree_entry.rbe_left)->tree_entry.rbe_color = 0; tmp)->tree_entry.rbe_left)->tree_entry.rbe_color = 0;never executed: ((tmp)->tree_entry.rbe_left)->tree_entry.rbe_color = 0; do { (tmp) = (parent)->tree_entry.rbe_left; if (((TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_left = (tmp)->tree_entry.rbe_right)TRUE | never evaluated | FALSE | never evaluated |
) { ((tmp)->tree_entry.rbe_right)->tree_entry.rbe_parent = (parent); }never executed: end of block do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent = (parent)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
parent) == ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); else ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); } else (never executed: (head)->rbh_root = (tmp); head)->rbh_root = (tmp);never executed: (head)->rbh_root = (tmp); (tmp)->tree_entry.rbe_right = (parent); (parent)->tree_entry.rbe_parent = (tmp); do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) do {}never executed: end of block while (0); } while (0); elm = (head)->rbh_root; break;never executed: break; } } } if (elmTRUE | never evaluated | FALSE | never evaluated |
) (never executed: (elm)->tree_entry.rbe_color = 0; elm)->tree_entry.rbe_color = 0;never executed: (elm)->tree_entry.rbe_color = 0; }never executed: end of block __attribute__((__unused__)) static struct revoked_serial * revoked_serial_tree_RB_REMOVE(struct revoked_serial_tree *head, struct revoked_serial *elm) { struct revoked_serial *child, *parent, *old = elm; int color; if ((TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_left == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
27 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
28 | ) child = (elm)->tree_entry.rbe_right; never executed: child = (elm)->tree_entry.rbe_right; else if ((TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_right == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
29 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
30 | ) child = (elm)->tree_entry.rbe_left; never executed: child = (elm)->tree_entry.rbe_left; else { struct revoked_serial *left; elm = (elm)->tree_entry.rbe_right; while ((TRUE | never evaluated | FALSE | never evaluated |
left = (elm)->tree_entry.rbe_left)TRUE | never evaluated | FALSE | never evaluated |
) elm = left;never executed: elm = left; child = (elm)->tree_entry.rbe_right; parent = (elm)->tree_entry.rbe_parent; color = (elm)->tree_entry.rbe_color; if (childTRUE | never evaluated | FALSE | never evaluated |
) (never executed: (child)->tree_entry.rbe_parent = parent; child)->tree_entry.rbe_parent = parent;never executed: (child)->tree_entry.rbe_parent = parent; if (parentTRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_left == elmTRUE | never evaluated | FALSE | never evaluated |
) (never executed: (parent)->tree_entry.rbe_left = child; parent)->tree_entry.rbe_left = child;never executed: (parent)->tree_entry.rbe_left = child; else (never executed: (parent)->tree_entry.rbe_right = child; parent)->tree_entry.rbe_right = child;never executed: (parent)->tree_entry.rbe_right = child; do {} while (0); }never executed: end of block else (never executed: (head)->rbh_root = child; head)->rbh_root = child;never executed: (head)->rbh_root = child; if ((TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_parent == oldTRUE | never evaluated | FALSE | never evaluated |
) parent = elm;never executed: parent = elm; (elm)->tree_entry = (old)->tree_entry; if ((TRUE | never evaluated | FALSE | never evaluated |
old)->tree_entry.rbe_parentTRUE | never evaluated | FALSE | never evaluated |
) { if (((TRUE | never evaluated | FALSE | never evaluated |
old)->tree_entry.rbe_parent)->tree_entry.rbe_left == oldTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((old)->tree_entry.rbe_parent)->tree_entry.rbe_left = elm; old)->tree_entry.rbe_parent)->tree_entry.rbe_left = elm;never executed: ((old)->tree_entry.rbe_parent)->tree_entry.rbe_left = elm; else ((never executed: ((old)->tree_entry.rbe_parent)->tree_entry.rbe_right = elm; old)->tree_entry.rbe_parent)->tree_entry.rbe_right = elm;never executed: ((old)->tree_entry.rbe_parent)->tree_entry.rbe_right = elm; do {} while (0); }never executed: end of block else (never executed: (head)->rbh_root = elm; head)->rbh_root = elm;never executed: (head)->rbh_root = elm; ((old)->tree_entry.rbe_left)->tree_entry.rbe_parent = elm; if ((TRUE | never evaluated | FALSE | never evaluated |
old)->tree_entry.rbe_rightTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((old)->tree_entry.rbe_right)->tree_entry.rbe_parent = elm; old)->tree_entry.rbe_right)->tree_entry.rbe_parent = elm;never executed: ((old)->tree_entry.rbe_right)->tree_entry.rbe_parent = elm; if (parentTRUE | never evaluated | FALSE | never evaluated |
) { left = parent; do { do {} while (0); }never executed: end of block while ((TRUE | never evaluated | FALSE | never evaluated |
left = (left)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
); }never executed: end of block gotonever executed: goto color; color;never executed: goto color; } parent = (elm)->tree_entry.rbe_parent; color = (elm)->tree_entry.rbe_color; if (childTRUE | never evaluated | FALSE | never evaluated |
) (never executed: (child)->tree_entry.rbe_parent = parent; child)->tree_entry.rbe_parent = parent;never executed: (child)->tree_entry.rbe_parent = parent; if (parentTRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_left == elmTRUE | never evaluated | FALSE | never evaluated |
) (never executed: (parent)->tree_entry.rbe_left = child; parent)->tree_entry.rbe_left = child;never executed: (parent)->tree_entry.rbe_left = child; else (never executed: (parent)->tree_entry.rbe_right = child; parent)->tree_entry.rbe_right = child;never executed: (parent)->tree_entry.rbe_right = child; do {} while (0); }never executed: end of block else (never executed: (head)->rbh_root = child; head)->rbh_root = child;never executed: (head)->rbh_root = child; color:code before this statement never executed: color: if (color == 0TRUE | never evaluated | FALSE | never evaluated |
) revoked_serial_tree_RB_REMOVE_COLOR(head, parent, child);never executed: revoked_serial_tree_RB_REMOVE_COLOR(head, parent, child); returnnever executed: return (old); (old);never executed: return (old); } __attribute__((__unused__)) static struct revoked_serial * revoked_serial_tree_RB_INSERT(struct revoked_serial_tree *head, struct revoked_serial *elm) { struct revoked_serial *tmp; struct revoked_serial *parent = | 0 |
31 | ((void *)0) | - |
32 | ; int comp = 0; tmp = (head)->rbh_root; while (tmpTRUE | never evaluated | FALSE | never evaluated |
) { parent = tmp; comp = (serial_cmp)(elm, parent); if (comp < 0TRUE | never evaluated | FALSE | never evaluated |
) tmp = (tmp)->tree_entry.rbe_left;never executed: tmp = (tmp)->tree_entry.rbe_left; else if (comp > 0TRUE | never evaluated | FALSE | never evaluated |
) tmp = (tmp)->tree_entry.rbe_right;never executed: tmp = (tmp)->tree_entry.rbe_right; else returnnever executed: return (tmp); (tmp);never executed: return (tmp); } do { (elm)->tree_entry.rbe_parent = parent; (elm)->tree_entry.rbe_left = (elm)->tree_entry.rbe_right = | 0 |
33 | ((void *)0) | - |
34 | ; (elm)->tree_entry.rbe_color = 1; } while (0); if (parent != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
35 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
36 | ) { if (comp < 0TRUE | never evaluated | FALSE | never evaluated |
) (never executed: (parent)->tree_entry.rbe_left = elm; parent)->tree_entry.rbe_left = elm;never executed: (parent)->tree_entry.rbe_left = elm; else (never executed: (parent)->tree_entry.rbe_right = elm; parent)->tree_entry.rbe_right = elm;never executed: (parent)->tree_entry.rbe_right = elm; do {} while (0); }never executed: end of block else (never executed: (head)->rbh_root = elm; head)->rbh_root = elm;never executed: (head)->rbh_root = elm; revoked_serial_tree_RB_INSERT_COLOR(head, elm); returnnever executed: return ( ((void *)0) ); (never executed: return ( ((void *)0) ); | 0 |
37 | (( never executed: return ( ((void *)0) ); never executed: return ( ((void *)0) ); void *)0)never executed: return ( ((void *)0) ); | 0 |
38 | ) never executed: return ( ((void *)0) ); never executed: return ( ((void *)0) ); ;never executed: return ( ((void *)0) ); } __attribute__((__unused__)) static struct revoked_serial * revoked_serial_tree_RB_FIND(struct revoked_serial_tree *head, struct revoked_serial *elm) { struct revoked_serial *tmp = (head)->rbh_root; int comp; while (tmpTRUE | never evaluated | FALSE | never evaluated |
) { comp = serial_cmp(elm, tmp); if (comp < 0TRUE | never evaluated | FALSE | never evaluated |
) tmp = (tmp)->tree_entry.rbe_left;never executed: tmp = (tmp)->tree_entry.rbe_left; else if (comp > 0TRUE | never evaluated | FALSE | never evaluated |
) tmp = (tmp)->tree_entry.rbe_right;never executed: tmp = (tmp)->tree_entry.rbe_right; else returnnever executed: return (tmp); (tmp);never executed: return (tmp); } returnnever executed: return ( ((void *)0) ); (never executed: return ( ((void *)0) ); | 0 |
39 | (( never executed: return ( ((void *)0) ); never executed: return ( ((void *)0) ); void *)0)never executed: return ( ((void *)0) ); | 0 |
40 | ) never executed: return ( ((void *)0) ); never executed: return ( ((void *)0) ); ;never executed: return ( ((void *)0) ); } __attribute__((__unused__)) static struct revoked_serial * revoked_serial_tree_RB_NFIND(struct revoked_serial_tree *head, struct revoked_serial *elm) { struct revoked_serial *tmp = (head)->rbh_root; struct revoked_serial *res = | 0 |
41 | ((void *)0) | - |
42 | ; int comp; while (tmpTRUE | never evaluated | FALSE | never evaluated |
) { comp = serial_cmp(elm, tmp); if (comp < 0TRUE | never evaluated | FALSE | never evaluated |
) { res = tmp; tmp = (tmp)->tree_entry.rbe_left; }never executed: end of block else if (comp > 0TRUE | never evaluated | FALSE | never evaluated |
) tmp = (tmp)->tree_entry.rbe_right;never executed: tmp = (tmp)->tree_entry.rbe_right; else returnnever executed: return (tmp); (tmp);never executed: return (tmp); } returnnever executed: return (res); (res);never executed: return (res); } __attribute__((__unused__)) static struct revoked_serial * revoked_serial_tree_RB_NEXT(struct revoked_serial *elm) { if ((TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_rightTRUE | never evaluated | FALSE | never evaluated |
) { elm = (elm)->tree_entry.rbe_right; while ((TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) elm = (elm)->tree_entry.rbe_left;never executed: elm = (elm)->tree_entry.rbe_left; }never executed: end of block else { if ((TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_parentTRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
elm == ((elm)->tree_entry.rbe_parent)->tree_entry.rbe_left)TRUE | never evaluated | FALSE | never evaluated |
) elm = (elm)->tree_entry.rbe_parent;never executed: elm = (elm)->tree_entry.rbe_parent; else { while ((TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_parentTRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
elm == ((elm)->tree_entry.rbe_parent)->tree_entry.rbe_right)TRUE | never evaluated | FALSE | never evaluated |
) elm = (elm)->tree_entry.rbe_parent;never executed: elm = (elm)->tree_entry.rbe_parent; elm = (elm)->tree_entry.rbe_parent; }never executed: end of block } returnnever executed: return (elm); (elm);never executed: return (elm); } __attribute__((__unused__)) static struct revoked_serial * revoked_serial_tree_RB_PREV(struct revoked_serial *elm) { if ((TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) { elm = (elm)->tree_entry.rbe_left; while ((TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_rightTRUE | never evaluated | FALSE | never evaluated |
) elm = (elm)->tree_entry.rbe_right;never executed: elm = (elm)->tree_entry.rbe_right; }never executed: end of block else { if ((TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_parentTRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
elm == ((elm)->tree_entry.rbe_parent)->tree_entry.rbe_right)TRUE | never evaluated | FALSE | never evaluated |
) elm = (elm)->tree_entry.rbe_parent;never executed: elm = (elm)->tree_entry.rbe_parent; else { while ((TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_parentTRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
elm == ((elm)->tree_entry.rbe_parent)->tree_entry.rbe_left)TRUE | never evaluated | FALSE | never evaluated |
) elm = (elm)->tree_entry.rbe_parent;never executed: elm = (elm)->tree_entry.rbe_parent; elm = (elm)->tree_entry.rbe_parent; }never executed: end of block } returnnever executed: return (elm); (elm);never executed: return (elm); } __attribute__((__unused__)) static struct revoked_serial * revoked_serial_tree_RB_MINMAX(struct revoked_serial_tree *head, int val) { struct revoked_serial *tmp = (head)->rbh_root; struct revoked_serial *parent = | 0 |
43 | ((void *)0) | - |
44 | ; while (tmpTRUE | never evaluated | FALSE | never evaluated |
) { parent = tmp; if (val < 0TRUE | never evaluated | FALSE | never evaluated |
) tmp = (tmp)->tree_entry.rbe_left;never executed: tmp = (tmp)->tree_entry.rbe_left; else tmp = (tmp)->tree_entry.rbe_right;never executed: tmp = (tmp)->tree_entry.rbe_right; } returnnever executed: return (parent); (parent);never executed: return (parent); }; | 0 |
45 | | - |
46 | | - |
47 | struct revoked_key_id { | - |
48 | char *key_id; | - |
49 | struct { struct revoked_key_id *rbe_left; struct revoked_key_id *rbe_right; struct revoked_key_id *rbe_parent; int rbe_color; } tree_entry; | - |
50 | }; | - |
51 | static int key_id_cmp(struct revoked_key_id *a, struct revoked_key_id *b); | - |
52 | struct revoked_key_id_tree { struct revoked_key_id *rbh_root; }; | - |
53 | __attribute__((__unused__)) static void revoked_key_id_tree_RB_INSERT_COLOR(struct revoked_key_id_tree *head, struct revoked_key_id *elm) { struct revoked_key_id *parent, *gparent, *tmp; while ((TRUE | never evaluated | FALSE | never evaluated |
parent = (elm)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_color == 1TRUE | never evaluated | FALSE | never evaluated |
) { gparent = (parent)->tree_entry.rbe_parent; if (parent == (gparent)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) { tmp = (gparent)->tree_entry.rbe_right; if (tmpTRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_color == 1TRUE | never evaluated | FALSE | never evaluated |
) { (tmp)->tree_entry.rbe_color = 0; do { (parent)->tree_entry.rbe_color = 0; (gparent)->tree_entry.rbe_color = 1; } while (0); elm = gparent; continue;never executed: continue; } if ((TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_right == elmTRUE | never evaluated | FALSE | never evaluated |
) { do { (tmp) = (parent)->tree_entry.rbe_right; if (((TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_right = (tmp)->tree_entry.rbe_left)TRUE | never evaluated | FALSE | never evaluated |
) { ((tmp)->tree_entry.rbe_left)->tree_entry.rbe_parent = (parent); }never executed: end of block do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent = (parent)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
parent) == ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); else ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); } else (never executed: (head)->rbh_root = (tmp); head)->rbh_root = (tmp);never executed: (head)->rbh_root = (tmp); (tmp)->tree_entry.rbe_left = (parent); (parent)->tree_entry.rbe_parent = (tmp); do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) do {}never executed: end of block while (0); } while (0); tmp = parent; parent = elm; elm = tmp; }never executed: end of block do { (parent)->tree_entry.rbe_color = 0; (gparent)->tree_entry.rbe_color = 1; } while (0); do { (tmp) = (gparent)->tree_entry.rbe_left; if (((TRUE | never evaluated | FALSE | never evaluated |
gparent)->tree_entry.rbe_left = (tmp)->tree_entry.rbe_right)TRUE | never evaluated | FALSE | never evaluated |
) { ((tmp)->tree_entry.rbe_right)->tree_entry.rbe_parent = (gparent); }never executed: end of block do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent = (gparent)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
gparent) == ((gparent)->tree_entry.rbe_parent)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((gparent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); gparent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp);never executed: ((gparent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); else ((never executed: ((gparent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); gparent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp);never executed: ((gparent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); } else (never executed: (head)->rbh_root = (tmp); head)->rbh_root = (tmp);never executed: (head)->rbh_root = (tmp); (tmp)->tree_entry.rbe_right = (gparent); (gparent)->tree_entry.rbe_parent = (tmp); do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) do {}never executed: end of block while (0); } while (0); }never executed: end of block else { tmp = (gparent)->tree_entry.rbe_left; if (tmpTRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_color == 1TRUE | never evaluated | FALSE | never evaluated |
) { (tmp)->tree_entry.rbe_color = 0; do { (parent)->tree_entry.rbe_color = 0; (gparent)->tree_entry.rbe_color = 1; } while (0); elm = gparent; continue;never executed: continue; } if ((TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_left == elmTRUE | never evaluated | FALSE | never evaluated |
) { do { (tmp) = (parent)->tree_entry.rbe_left; if (((TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_left = (tmp)->tree_entry.rbe_right)TRUE | never evaluated | FALSE | never evaluated |
) { ((tmp)->tree_entry.rbe_right)->tree_entry.rbe_parent = (parent); }never executed: end of block do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent = (parent)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
parent) == ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); else ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); } else (never executed: (head)->rbh_root = (tmp); head)->rbh_root = (tmp);never executed: (head)->rbh_root = (tmp); (tmp)->tree_entry.rbe_right = (parent); (parent)->tree_entry.rbe_parent = (tmp); do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) do {}never executed: end of block while (0); } while (0); tmp = parent; parent = elm; elm = tmp; }never executed: end of block do { (parent)->tree_entry.rbe_color = 0; (gparent)->tree_entry.rbe_color = 1; } while (0); do { (tmp) = (gparent)->tree_entry.rbe_right; if (((TRUE | never evaluated | FALSE | never evaluated |
gparent)->tree_entry.rbe_right = (tmp)->tree_entry.rbe_left)TRUE | never evaluated | FALSE | never evaluated |
) { ((tmp)->tree_entry.rbe_left)->tree_entry.rbe_parent = (gparent); }never executed: end of block do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent = (gparent)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
gparent) == ((gparent)->tree_entry.rbe_parent)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((gparent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); gparent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp);never executed: ((gparent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); else ((never executed: ((gparent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); gparent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp);never executed: ((gparent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); } else (never executed: (head)->rbh_root = (tmp); head)->rbh_root = (tmp);never executed: (head)->rbh_root = (tmp); (tmp)->tree_entry.rbe_left = (gparent); (gparent)->tree_entry.rbe_parent = (tmp); do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) do {}never executed: end of block while (0); } while (0); }never executed: end of block } (head->rbh_root)->tree_entry.rbe_color = 0; }never executed: end of block __attribute__((__unused__)) static void revoked_key_id_tree_RB_REMOVE_COLOR(struct revoked_key_id_tree *head, struct revoked_key_id *parent, struct revoked_key_id *elm) { struct revoked_key_id *tmp; while ((elm == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
54 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
55 | || (TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_color == 0TRUE | never evaluated | FALSE | never evaluated |
) && elm != (head)->rbh_rootTRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_left == elmTRUE | never evaluated | FALSE | never evaluated |
) { tmp = (parent)->tree_entry.rbe_right; if ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_color == 1TRUE | never evaluated | FALSE | never evaluated |
) { do { (tmp)->tree_entry.rbe_color = 0; (parent)->tree_entry.rbe_color = 1; } while (0); do { (tmp) = (parent)->tree_entry.rbe_right; if (((TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_right = (tmp)->tree_entry.rbe_left)TRUE | never evaluated | FALSE | never evaluated |
) { ((tmp)->tree_entry.rbe_left)->tree_entry.rbe_parent = (parent); }never executed: end of block do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent = (parent)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
parent) == ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); else ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); } else (never executed: (head)->rbh_root = (tmp); head)->rbh_root = (tmp);never executed: (head)->rbh_root = (tmp); (tmp)->tree_entry.rbe_left = (parent); (parent)->tree_entry.rbe_parent = (tmp); do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) do {}never executed: end of block while (0); } while (0); tmp = (parent)->tree_entry.rbe_right; }never executed: end of block if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_left == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
56 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
57 | || ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_left)->tree_entry.rbe_color == 0TRUE | never evaluated | FALSE | never evaluated |
) && ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_right == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
58 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
59 | || ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_right)->tree_entry.rbe_color == 0TRUE | never evaluated | FALSE | never evaluated |
)) { (tmp)->tree_entry.rbe_color = 1; elm = parent; parent = (elm)->tree_entry.rbe_parent; }never executed: end of block else { if ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_right == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
60 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
61 | || ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_right)->tree_entry.rbe_color == 0TRUE | never evaluated | FALSE | never evaluated |
) { struct revoked_key_id *oleft; if ((TRUE | never evaluated | FALSE | never evaluated |
oleft = (tmp)->tree_entry.rbe_left)TRUE | never evaluated | FALSE | never evaluated |
) (never executed: (oleft)->tree_entry.rbe_color = 0; oleft)->tree_entry.rbe_color = 0;never executed: (oleft)->tree_entry.rbe_color = 0; (tmp)->tree_entry.rbe_color = 1; do { (oleft) = (tmp)->tree_entry.rbe_left; if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_left = (oleft)->tree_entry.rbe_right)TRUE | never evaluated | FALSE | never evaluated |
) { ((oleft)->tree_entry.rbe_right)->tree_entry.rbe_parent = (tmp); }never executed: end of block do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
oleft)->tree_entry.rbe_parent = (tmp)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
tmp) == ((tmp)->tree_entry.rbe_parent)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((tmp)->tree_entry.rbe_parent)->tree_entry.rbe_left = (oleft); tmp)->tree_entry.rbe_parent)->tree_entry.rbe_left = (oleft);never executed: ((tmp)->tree_entry.rbe_parent)->tree_entry.rbe_left = (oleft); else ((never executed: ((tmp)->tree_entry.rbe_parent)->tree_entry.rbe_right = (oleft); tmp)->tree_entry.rbe_parent)->tree_entry.rbe_right = (oleft);never executed: ((tmp)->tree_entry.rbe_parent)->tree_entry.rbe_right = (oleft); } else (never executed: (head)->rbh_root = (oleft); head)->rbh_root = (oleft);never executed: (head)->rbh_root = (oleft); (oleft)->tree_entry.rbe_right = (tmp); (tmp)->tree_entry.rbe_parent = (oleft); do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
oleft)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) do {}never executed: end of block while (0); } while (0); tmp = (parent)->tree_entry.rbe_right; }never executed: end of block (tmp)->tree_entry.rbe_color = (parent)->tree_entry.rbe_color; (parent)->tree_entry.rbe_color = 0; if ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_rightTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((tmp)->tree_entry.rbe_right)->tree_entry.rbe_color = 0; tmp)->tree_entry.rbe_right)->tree_entry.rbe_color = 0;never executed: ((tmp)->tree_entry.rbe_right)->tree_entry.rbe_color = 0; do { (tmp) = (parent)->tree_entry.rbe_right; if (((TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_right = (tmp)->tree_entry.rbe_left)TRUE | never evaluated | FALSE | never evaluated |
) { ((tmp)->tree_entry.rbe_left)->tree_entry.rbe_parent = (parent); }never executed: end of block do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent = (parent)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
parent) == ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); else ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); } else (never executed: (head)->rbh_root = (tmp); head)->rbh_root = (tmp);never executed: (head)->rbh_root = (tmp); (tmp)->tree_entry.rbe_left = (parent); (parent)->tree_entry.rbe_parent = (tmp); do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) do {}never executed: end of block while (0); } while (0); elm = (head)->rbh_root; break;never executed: break; } } else { tmp = (parent)->tree_entry.rbe_left; if ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_color == 1TRUE | never evaluated | FALSE | never evaluated |
) { do { (tmp)->tree_entry.rbe_color = 0; (parent)->tree_entry.rbe_color = 1; } while (0); do { (tmp) = (parent)->tree_entry.rbe_left; if (((TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_left = (tmp)->tree_entry.rbe_right)TRUE | never evaluated | FALSE | never evaluated |
) { ((tmp)->tree_entry.rbe_right)->tree_entry.rbe_parent = (parent); }never executed: end of block do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent = (parent)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
parent) == ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); else ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); } else (never executed: (head)->rbh_root = (tmp); head)->rbh_root = (tmp);never executed: (head)->rbh_root = (tmp); (tmp)->tree_entry.rbe_right = (parent); (parent)->tree_entry.rbe_parent = (tmp); do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) do {}never executed: end of block while (0); } while (0); tmp = (parent)->tree_entry.rbe_left; }never executed: end of block if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_left == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
62 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
63 | || ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_left)->tree_entry.rbe_color == 0TRUE | never evaluated | FALSE | never evaluated |
) && ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_right == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
64 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
65 | || ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_right)->tree_entry.rbe_color == 0TRUE | never evaluated | FALSE | never evaluated |
)) { (tmp)->tree_entry.rbe_color = 1; elm = parent; parent = (elm)->tree_entry.rbe_parent; }never executed: end of block else { if ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_left == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
66 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
67 | || ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_left)->tree_entry.rbe_color == 0TRUE | never evaluated | FALSE | never evaluated |
) { struct revoked_key_id *oright; if ((TRUE | never evaluated | FALSE | never evaluated |
oright = (tmp)->tree_entry.rbe_right)TRUE | never evaluated | FALSE | never evaluated |
) (never executed: (oright)->tree_entry.rbe_color = 0; oright)->tree_entry.rbe_color = 0;never executed: (oright)->tree_entry.rbe_color = 0; (tmp)->tree_entry.rbe_color = 1; do { (oright) = (tmp)->tree_entry.rbe_right; if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_right = (oright)->tree_entry.rbe_left)TRUE | never evaluated | FALSE | never evaluated |
) { ((oright)->tree_entry.rbe_left)->tree_entry.rbe_parent = (tmp); }never executed: end of block do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
oright)->tree_entry.rbe_parent = (tmp)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
tmp) == ((tmp)->tree_entry.rbe_parent)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((tmp)->tree_entry.rbe_parent)->tree_entry.rbe_left = (oright); tmp)->tree_entry.rbe_parent)->tree_entry.rbe_left = (oright);never executed: ((tmp)->tree_entry.rbe_parent)->tree_entry.rbe_left = (oright); else ((never executed: ((tmp)->tree_entry.rbe_parent)->tree_entry.rbe_right = (oright); tmp)->tree_entry.rbe_parent)->tree_entry.rbe_right = (oright);never executed: ((tmp)->tree_entry.rbe_parent)->tree_entry.rbe_right = (oright); } else (never executed: (head)->rbh_root = (oright); head)->rbh_root = (oright);never executed: (head)->rbh_root = (oright); (oright)->tree_entry.rbe_left = (tmp); (tmp)->tree_entry.rbe_parent = (oright); do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
oright)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) do {}never executed: end of block while (0); } while (0); tmp = (parent)->tree_entry.rbe_left; }never executed: end of block (tmp)->tree_entry.rbe_color = (parent)->tree_entry.rbe_color; (parent)->tree_entry.rbe_color = 0; if ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((tmp)->tree_entry.rbe_left)->tree_entry.rbe_color = 0; tmp)->tree_entry.rbe_left)->tree_entry.rbe_color = 0;never executed: ((tmp)->tree_entry.rbe_left)->tree_entry.rbe_color = 0; do { (tmp) = (parent)->tree_entry.rbe_left; if (((TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_left = (tmp)->tree_entry.rbe_right)TRUE | never evaluated | FALSE | never evaluated |
) { ((tmp)->tree_entry.rbe_right)->tree_entry.rbe_parent = (parent); }never executed: end of block do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent = (parent)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
parent) == ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); else ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); } else (never executed: (head)->rbh_root = (tmp); head)->rbh_root = (tmp);never executed: (head)->rbh_root = (tmp); (tmp)->tree_entry.rbe_right = (parent); (parent)->tree_entry.rbe_parent = (tmp); do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) do {}never executed: end of block while (0); } while (0); elm = (head)->rbh_root; break;never executed: break; } } } if (elmTRUE | never evaluated | FALSE | never evaluated |
) (never executed: (elm)->tree_entry.rbe_color = 0; elm)->tree_entry.rbe_color = 0;never executed: (elm)->tree_entry.rbe_color = 0; }never executed: end of block __attribute__((__unused__)) static struct revoked_key_id * revoked_key_id_tree_RB_REMOVE(struct revoked_key_id_tree *head, struct revoked_key_id *elm) { struct revoked_key_id *child, *parent, *old = elm; int color; if ((TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_left == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
68 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
69 | ) child = (elm)->tree_entry.rbe_right; never executed: child = (elm)->tree_entry.rbe_right; else if ((TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_right == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
70 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
71 | ) child = (elm)->tree_entry.rbe_left; never executed: child = (elm)->tree_entry.rbe_left; else { struct revoked_key_id *left; elm = (elm)->tree_entry.rbe_right; while ((TRUE | never evaluated | FALSE | never evaluated |
left = (elm)->tree_entry.rbe_left)TRUE | never evaluated | FALSE | never evaluated |
) elm = left;never executed: elm = left; child = (elm)->tree_entry.rbe_right; parent = (elm)->tree_entry.rbe_parent; color = (elm)->tree_entry.rbe_color; if (childTRUE | never evaluated | FALSE | never evaluated |
) (never executed: (child)->tree_entry.rbe_parent = parent; child)->tree_entry.rbe_parent = parent;never executed: (child)->tree_entry.rbe_parent = parent; if (parentTRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_left == elmTRUE | never evaluated | FALSE | never evaluated |
) (never executed: (parent)->tree_entry.rbe_left = child; parent)->tree_entry.rbe_left = child;never executed: (parent)->tree_entry.rbe_left = child; else (never executed: (parent)->tree_entry.rbe_right = child; parent)->tree_entry.rbe_right = child;never executed: (parent)->tree_entry.rbe_right = child; do {} while (0); }never executed: end of block else (never executed: (head)->rbh_root = child; head)->rbh_root = child;never executed: (head)->rbh_root = child; if ((TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_parent == oldTRUE | never evaluated | FALSE | never evaluated |
) parent = elm;never executed: parent = elm; (elm)->tree_entry = (old)->tree_entry; if ((TRUE | never evaluated | FALSE | never evaluated |
old)->tree_entry.rbe_parentTRUE | never evaluated | FALSE | never evaluated |
) { if (((TRUE | never evaluated | FALSE | never evaluated |
old)->tree_entry.rbe_parent)->tree_entry.rbe_left == oldTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((old)->tree_entry.rbe_parent)->tree_entry.rbe_left = elm; old)->tree_entry.rbe_parent)->tree_entry.rbe_left = elm;never executed: ((old)->tree_entry.rbe_parent)->tree_entry.rbe_left = elm; else ((never executed: ((old)->tree_entry.rbe_parent)->tree_entry.rbe_right = elm; old)->tree_entry.rbe_parent)->tree_entry.rbe_right = elm;never executed: ((old)->tree_entry.rbe_parent)->tree_entry.rbe_right = elm; do {} while (0); }never executed: end of block else (never executed: (head)->rbh_root = elm; head)->rbh_root = elm;never executed: (head)->rbh_root = elm; ((old)->tree_entry.rbe_left)->tree_entry.rbe_parent = elm; if ((TRUE | never evaluated | FALSE | never evaluated |
old)->tree_entry.rbe_rightTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((old)->tree_entry.rbe_right)->tree_entry.rbe_parent = elm; old)->tree_entry.rbe_right)->tree_entry.rbe_parent = elm;never executed: ((old)->tree_entry.rbe_right)->tree_entry.rbe_parent = elm; if (parentTRUE | never evaluated | FALSE | never evaluated |
) { left = parent; do { do {} while (0); }never executed: end of block while ((TRUE | never evaluated | FALSE | never evaluated |
left = (left)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
); }never executed: end of block gotonever executed: goto color; color;never executed: goto color; } parent = (elm)->tree_entry.rbe_parent; color = (elm)->tree_entry.rbe_color; if (childTRUE | never evaluated | FALSE | never evaluated |
) (never executed: (child)->tree_entry.rbe_parent = parent; child)->tree_entry.rbe_parent = parent;never executed: (child)->tree_entry.rbe_parent = parent; if (parentTRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_left == elmTRUE | never evaluated | FALSE | never evaluated |
) (never executed: (parent)->tree_entry.rbe_left = child; parent)->tree_entry.rbe_left = child;never executed: (parent)->tree_entry.rbe_left = child; else (never executed: (parent)->tree_entry.rbe_right = child; parent)->tree_entry.rbe_right = child;never executed: (parent)->tree_entry.rbe_right = child; do {} while (0); }never executed: end of block else (never executed: (head)->rbh_root = child; head)->rbh_root = child;never executed: (head)->rbh_root = child; color:code before this statement never executed: color: if (color == 0TRUE | never evaluated | FALSE | never evaluated |
) revoked_key_id_tree_RB_REMOVE_COLOR(head, parent, child);never executed: revoked_key_id_tree_RB_REMOVE_COLOR(head, parent, child); returnnever executed: return (old); (old);never executed: return (old); } __attribute__((__unused__)) static struct revoked_key_id * revoked_key_id_tree_RB_INSERT(struct revoked_key_id_tree *head, struct revoked_key_id *elm) { struct revoked_key_id *tmp; struct revoked_key_id *parent = | 0 |
72 | ((void *)0) | - |
73 | ; int comp = 0; tmp = (head)->rbh_root; while (tmpTRUE | never evaluated | FALSE | never evaluated |
) { parent = tmp; comp = (key_id_cmp)(elm, parent); if (comp < 0TRUE | never evaluated | FALSE | never evaluated |
) tmp = (tmp)->tree_entry.rbe_left;never executed: tmp = (tmp)->tree_entry.rbe_left; else if (comp > 0TRUE | never evaluated | FALSE | never evaluated |
) tmp = (tmp)->tree_entry.rbe_right;never executed: tmp = (tmp)->tree_entry.rbe_right; else returnnever executed: return (tmp); (tmp);never executed: return (tmp); } do { (elm)->tree_entry.rbe_parent = parent; (elm)->tree_entry.rbe_left = (elm)->tree_entry.rbe_right = | 0 |
74 | ((void *)0) | - |
75 | ; (elm)->tree_entry.rbe_color = 1; } while (0); if (parent != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
76 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
77 | ) { if (comp < 0TRUE | never evaluated | FALSE | never evaluated |
) (never executed: (parent)->tree_entry.rbe_left = elm; parent)->tree_entry.rbe_left = elm;never executed: (parent)->tree_entry.rbe_left = elm; else (never executed: (parent)->tree_entry.rbe_right = elm; parent)->tree_entry.rbe_right = elm;never executed: (parent)->tree_entry.rbe_right = elm; do {} while (0); }never executed: end of block else (never executed: (head)->rbh_root = elm; head)->rbh_root = elm;never executed: (head)->rbh_root = elm; revoked_key_id_tree_RB_INSERT_COLOR(head, elm); returnnever executed: return ( ((void *)0) ); (never executed: return ( ((void *)0) ); | 0 |
78 | (( never executed: return ( ((void *)0) ); never executed: return ( ((void *)0) ); void *)0)never executed: return ( ((void *)0) ); | 0 |
79 | ) never executed: return ( ((void *)0) ); never executed: return ( ((void *)0) ); ;never executed: return ( ((void *)0) ); } __attribute__((__unused__)) static struct revoked_key_id * revoked_key_id_tree_RB_FIND(struct revoked_key_id_tree *head, struct revoked_key_id *elm) { struct revoked_key_id *tmp = (head)->rbh_root; int comp; while (tmpTRUE | never evaluated | FALSE | never evaluated |
) { comp = key_id_cmp(elm, tmp); if (comp < 0TRUE | never evaluated | FALSE | never evaluated |
) tmp = (tmp)->tree_entry.rbe_left;never executed: tmp = (tmp)->tree_entry.rbe_left; else if (comp > 0TRUE | never evaluated | FALSE | never evaluated |
) tmp = (tmp)->tree_entry.rbe_right;never executed: tmp = (tmp)->tree_entry.rbe_right; else returnnever executed: return (tmp); (tmp);never executed: return (tmp); } returnnever executed: return ( ((void *)0) ); (never executed: return ( ((void *)0) ); | 0 |
80 | (( never executed: return ( ((void *)0) ); never executed: return ( ((void *)0) ); void *)0)never executed: return ( ((void *)0) ); | 0 |
81 | ) never executed: return ( ((void *)0) ); never executed: return ( ((void *)0) ); ;never executed: return ( ((void *)0) ); } __attribute__((__unused__)) static struct revoked_key_id * revoked_key_id_tree_RB_NFIND(struct revoked_key_id_tree *head, struct revoked_key_id *elm) { struct revoked_key_id *tmp = (head)->rbh_root; struct revoked_key_id *res = | 0 |
82 | ((void *)0) | - |
83 | ; int comp; while (tmpTRUE | never evaluated | FALSE | never evaluated |
) { comp = key_id_cmp(elm, tmp); if (comp < 0TRUE | never evaluated | FALSE | never evaluated |
) { res = tmp; tmp = (tmp)->tree_entry.rbe_left; }never executed: end of block else if (comp > 0TRUE | never evaluated | FALSE | never evaluated |
) tmp = (tmp)->tree_entry.rbe_right;never executed: tmp = (tmp)->tree_entry.rbe_right; else returnnever executed: return (tmp); (tmp);never executed: return (tmp); } returnnever executed: return (res); (res);never executed: return (res); } __attribute__((__unused__)) static struct revoked_key_id * revoked_key_id_tree_RB_NEXT(struct revoked_key_id *elm) { if ((TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_rightTRUE | never evaluated | FALSE | never evaluated |
) { elm = (elm)->tree_entry.rbe_right; while ((TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) elm = (elm)->tree_entry.rbe_left;never executed: elm = (elm)->tree_entry.rbe_left; }never executed: end of block else { if ((TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_parentTRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
elm == ((elm)->tree_entry.rbe_parent)->tree_entry.rbe_left)TRUE | never evaluated | FALSE | never evaluated |
) elm = (elm)->tree_entry.rbe_parent;never executed: elm = (elm)->tree_entry.rbe_parent; else { while ((TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_parentTRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
elm == ((elm)->tree_entry.rbe_parent)->tree_entry.rbe_right)TRUE | never evaluated | FALSE | never evaluated |
) elm = (elm)->tree_entry.rbe_parent;never executed: elm = (elm)->tree_entry.rbe_parent; elm = (elm)->tree_entry.rbe_parent; }never executed: end of block } returnnever executed: return (elm); (elm);never executed: return (elm); } __attribute__((__unused__)) static struct revoked_key_id * revoked_key_id_tree_RB_PREV(struct revoked_key_id *elm) { if ((TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) { elm = (elm)->tree_entry.rbe_left; while ((TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_rightTRUE | never evaluated | FALSE | never evaluated |
) elm = (elm)->tree_entry.rbe_right;never executed: elm = (elm)->tree_entry.rbe_right; }never executed: end of block else { if ((TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_parentTRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
elm == ((elm)->tree_entry.rbe_parent)->tree_entry.rbe_right)TRUE | never evaluated | FALSE | never evaluated |
) elm = (elm)->tree_entry.rbe_parent;never executed: elm = (elm)->tree_entry.rbe_parent; else { while ((TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_parentTRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
elm == ((elm)->tree_entry.rbe_parent)->tree_entry.rbe_left)TRUE | never evaluated | FALSE | never evaluated |
) elm = (elm)->tree_entry.rbe_parent;never executed: elm = (elm)->tree_entry.rbe_parent; elm = (elm)->tree_entry.rbe_parent; }never executed: end of block } returnnever executed: return (elm); (elm);never executed: return (elm); } __attribute__((__unused__)) static struct revoked_key_id * revoked_key_id_tree_RB_MINMAX(struct revoked_key_id_tree *head, int val) { struct revoked_key_id *tmp = (head)->rbh_root; struct revoked_key_id *parent = | 0 |
84 | ((void *)0) | - |
85 | ; while (tmpTRUE | never evaluated | FALSE | never evaluated |
) { parent = tmp; if (val < 0TRUE | never evaluated | FALSE | never evaluated |
) tmp = (tmp)->tree_entry.rbe_left;never executed: tmp = (tmp)->tree_entry.rbe_left; else tmp = (tmp)->tree_entry.rbe_right;never executed: tmp = (tmp)->tree_entry.rbe_right; } returnnever executed: return (parent); (parent);never executed: return (parent); }; | 0 |
86 | | - |
87 | | - |
88 | struct revoked_blob { | - |
89 | u_char *blob; | - |
90 | size_t len; | - |
91 | struct { struct revoked_blob *rbe_left; struct revoked_blob *rbe_right; struct revoked_blob *rbe_parent; int rbe_color; } tree_entry; | - |
92 | }; | - |
93 | static int blob_cmp(struct revoked_blob *a, struct revoked_blob *b); | - |
94 | struct revoked_blob_tree { struct revoked_blob *rbh_root; }; | - |
95 | __attribute__((__unused__)) static void revoked_blob_tree_RB_INSERT_COLOR(struct revoked_blob_tree *head, struct revoked_blob *elm) { struct revoked_blob *parent, *gparent, *tmp; while ((TRUE | never evaluated | FALSE | never evaluated |
parent = (elm)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_color == 1TRUE | never evaluated | FALSE | never evaluated |
) { gparent = (parent)->tree_entry.rbe_parent; if (parent == (gparent)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) { tmp = (gparent)->tree_entry.rbe_right; if (tmpTRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_color == 1TRUE | never evaluated | FALSE | never evaluated |
) { (tmp)->tree_entry.rbe_color = 0; do { (parent)->tree_entry.rbe_color = 0; (gparent)->tree_entry.rbe_color = 1; } while (0); elm = gparent; continue;never executed: continue; } if ((TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_right == elmTRUE | never evaluated | FALSE | never evaluated |
) { do { (tmp) = (parent)->tree_entry.rbe_right; if (((TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_right = (tmp)->tree_entry.rbe_left)TRUE | never evaluated | FALSE | never evaluated |
) { ((tmp)->tree_entry.rbe_left)->tree_entry.rbe_parent = (parent); }never executed: end of block do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent = (parent)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
parent) == ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); else ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); } else (never executed: (head)->rbh_root = (tmp); head)->rbh_root = (tmp);never executed: (head)->rbh_root = (tmp); (tmp)->tree_entry.rbe_left = (parent); (parent)->tree_entry.rbe_parent = (tmp); do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) do {}never executed: end of block while (0); } while (0); tmp = parent; parent = elm; elm = tmp; }never executed: end of block do { (parent)->tree_entry.rbe_color = 0; (gparent)->tree_entry.rbe_color = 1; } while (0); do { (tmp) = (gparent)->tree_entry.rbe_left; if (((TRUE | never evaluated | FALSE | never evaluated |
gparent)->tree_entry.rbe_left = (tmp)->tree_entry.rbe_right)TRUE | never evaluated | FALSE | never evaluated |
) { ((tmp)->tree_entry.rbe_right)->tree_entry.rbe_parent = (gparent); }never executed: end of block do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent = (gparent)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
gparent) == ((gparent)->tree_entry.rbe_parent)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((gparent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); gparent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp);never executed: ((gparent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); else ((never executed: ((gparent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); gparent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp);never executed: ((gparent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); } else (never executed: (head)->rbh_root = (tmp); head)->rbh_root = (tmp);never executed: (head)->rbh_root = (tmp); (tmp)->tree_entry.rbe_right = (gparent); (gparent)->tree_entry.rbe_parent = (tmp); do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) do {}never executed: end of block while (0); } while (0); }never executed: end of block else { tmp = (gparent)->tree_entry.rbe_left; if (tmpTRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_color == 1TRUE | never evaluated | FALSE | never evaluated |
) { (tmp)->tree_entry.rbe_color = 0; do { (parent)->tree_entry.rbe_color = 0; (gparent)->tree_entry.rbe_color = 1; } while (0); elm = gparent; continue;never executed: continue; } if ((TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_left == elmTRUE | never evaluated | FALSE | never evaluated |
) { do { (tmp) = (parent)->tree_entry.rbe_left; if (((TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_left = (tmp)->tree_entry.rbe_right)TRUE | never evaluated | FALSE | never evaluated |
) { ((tmp)->tree_entry.rbe_right)->tree_entry.rbe_parent = (parent); }never executed: end of block do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent = (parent)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
parent) == ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); else ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); } else (never executed: (head)->rbh_root = (tmp); head)->rbh_root = (tmp);never executed: (head)->rbh_root = (tmp); (tmp)->tree_entry.rbe_right = (parent); (parent)->tree_entry.rbe_parent = (tmp); do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) do {}never executed: end of block while (0); } while (0); tmp = parent; parent = elm; elm = tmp; }never executed: end of block do { (parent)->tree_entry.rbe_color = 0; (gparent)->tree_entry.rbe_color = 1; } while (0); do { (tmp) = (gparent)->tree_entry.rbe_right; if (((TRUE | never evaluated | FALSE | never evaluated |
gparent)->tree_entry.rbe_right = (tmp)->tree_entry.rbe_left)TRUE | never evaluated | FALSE | never evaluated |
) { ((tmp)->tree_entry.rbe_left)->tree_entry.rbe_parent = (gparent); }never executed: end of block do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent = (gparent)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
gparent) == ((gparent)->tree_entry.rbe_parent)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((gparent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); gparent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp);never executed: ((gparent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); else ((never executed: ((gparent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); gparent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp);never executed: ((gparent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); } else (never executed: (head)->rbh_root = (tmp); head)->rbh_root = (tmp);never executed: (head)->rbh_root = (tmp); (tmp)->tree_entry.rbe_left = (gparent); (gparent)->tree_entry.rbe_parent = (tmp); do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) do {}never executed: end of block while (0); } while (0); }never executed: end of block } (head->rbh_root)->tree_entry.rbe_color = 0; }never executed: end of block __attribute__((__unused__)) static void revoked_blob_tree_RB_REMOVE_COLOR(struct revoked_blob_tree *head, struct revoked_blob *parent, struct revoked_blob *elm) { struct revoked_blob *tmp; while ((elm == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
96 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
97 | || (TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_color == 0TRUE | never evaluated | FALSE | never evaluated |
) && elm != (head)->rbh_rootTRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_left == elmTRUE | never evaluated | FALSE | never evaluated |
) { tmp = (parent)->tree_entry.rbe_right; if ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_color == 1TRUE | never evaluated | FALSE | never evaluated |
) { do { (tmp)->tree_entry.rbe_color = 0; (parent)->tree_entry.rbe_color = 1; } while (0); do { (tmp) = (parent)->tree_entry.rbe_right; if (((TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_right = (tmp)->tree_entry.rbe_left)TRUE | never evaluated | FALSE | never evaluated |
) { ((tmp)->tree_entry.rbe_left)->tree_entry.rbe_parent = (parent); }never executed: end of block do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent = (parent)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
parent) == ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); else ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); } else (never executed: (head)->rbh_root = (tmp); head)->rbh_root = (tmp);never executed: (head)->rbh_root = (tmp); (tmp)->tree_entry.rbe_left = (parent); (parent)->tree_entry.rbe_parent = (tmp); do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) do {}never executed: end of block while (0); } while (0); tmp = (parent)->tree_entry.rbe_right; }never executed: end of block if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_left == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
98 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
99 | || ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_left)->tree_entry.rbe_color == 0TRUE | never evaluated | FALSE | never evaluated |
) && ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_right == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
100 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
101 | || ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_right)->tree_entry.rbe_color == 0TRUE | never evaluated | FALSE | never evaluated |
)) { (tmp)->tree_entry.rbe_color = 1; elm = parent; parent = (elm)->tree_entry.rbe_parent; }never executed: end of block else { if ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_right == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
102 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
103 | || ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_right)->tree_entry.rbe_color == 0TRUE | never evaluated | FALSE | never evaluated |
) { struct revoked_blob *oleft; if ((TRUE | never evaluated | FALSE | never evaluated |
oleft = (tmp)->tree_entry.rbe_left)TRUE | never evaluated | FALSE | never evaluated |
) (never executed: (oleft)->tree_entry.rbe_color = 0; oleft)->tree_entry.rbe_color = 0;never executed: (oleft)->tree_entry.rbe_color = 0; (tmp)->tree_entry.rbe_color = 1; do { (oleft) = (tmp)->tree_entry.rbe_left; if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_left = (oleft)->tree_entry.rbe_right)TRUE | never evaluated | FALSE | never evaluated |
) { ((oleft)->tree_entry.rbe_right)->tree_entry.rbe_parent = (tmp); }never executed: end of block do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
oleft)->tree_entry.rbe_parent = (tmp)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
tmp) == ((tmp)->tree_entry.rbe_parent)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((tmp)->tree_entry.rbe_parent)->tree_entry.rbe_left = (oleft); tmp)->tree_entry.rbe_parent)->tree_entry.rbe_left = (oleft);never executed: ((tmp)->tree_entry.rbe_parent)->tree_entry.rbe_left = (oleft); else ((never executed: ((tmp)->tree_entry.rbe_parent)->tree_entry.rbe_right = (oleft); tmp)->tree_entry.rbe_parent)->tree_entry.rbe_right = (oleft);never executed: ((tmp)->tree_entry.rbe_parent)->tree_entry.rbe_right = (oleft); } else (never executed: (head)->rbh_root = (oleft); head)->rbh_root = (oleft);never executed: (head)->rbh_root = (oleft); (oleft)->tree_entry.rbe_right = (tmp); (tmp)->tree_entry.rbe_parent = (oleft); do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
oleft)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) do {}never executed: end of block while (0); } while (0); tmp = (parent)->tree_entry.rbe_right; }never executed: end of block (tmp)->tree_entry.rbe_color = (parent)->tree_entry.rbe_color; (parent)->tree_entry.rbe_color = 0; if ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_rightTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((tmp)->tree_entry.rbe_right)->tree_entry.rbe_color = 0; tmp)->tree_entry.rbe_right)->tree_entry.rbe_color = 0;never executed: ((tmp)->tree_entry.rbe_right)->tree_entry.rbe_color = 0; do { (tmp) = (parent)->tree_entry.rbe_right; if (((TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_right = (tmp)->tree_entry.rbe_left)TRUE | never evaluated | FALSE | never evaluated |
) { ((tmp)->tree_entry.rbe_left)->tree_entry.rbe_parent = (parent); }never executed: end of block do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent = (parent)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
parent) == ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); else ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); } else (never executed: (head)->rbh_root = (tmp); head)->rbh_root = (tmp);never executed: (head)->rbh_root = (tmp); (tmp)->tree_entry.rbe_left = (parent); (parent)->tree_entry.rbe_parent = (tmp); do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) do {}never executed: end of block while (0); } while (0); elm = (head)->rbh_root; break;never executed: break; } } else { tmp = (parent)->tree_entry.rbe_left; if ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_color == 1TRUE | never evaluated | FALSE | never evaluated |
) { do { (tmp)->tree_entry.rbe_color = 0; (parent)->tree_entry.rbe_color = 1; } while (0); do { (tmp) = (parent)->tree_entry.rbe_left; if (((TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_left = (tmp)->tree_entry.rbe_right)TRUE | never evaluated | FALSE | never evaluated |
) { ((tmp)->tree_entry.rbe_right)->tree_entry.rbe_parent = (parent); }never executed: end of block do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent = (parent)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
parent) == ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); else ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); } else (never executed: (head)->rbh_root = (tmp); head)->rbh_root = (tmp);never executed: (head)->rbh_root = (tmp); (tmp)->tree_entry.rbe_right = (parent); (parent)->tree_entry.rbe_parent = (tmp); do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) do {}never executed: end of block while (0); } while (0); tmp = (parent)->tree_entry.rbe_left; }never executed: end of block if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_left == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
104 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
105 | || ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_left)->tree_entry.rbe_color == 0TRUE | never evaluated | FALSE | never evaluated |
) && ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_right == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
106 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
107 | || ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_right)->tree_entry.rbe_color == 0TRUE | never evaluated | FALSE | never evaluated |
)) { (tmp)->tree_entry.rbe_color = 1; elm = parent; parent = (elm)->tree_entry.rbe_parent; }never executed: end of block else { if ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_left == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
108 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
109 | || ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_left)->tree_entry.rbe_color == 0TRUE | never evaluated | FALSE | never evaluated |
) { struct revoked_blob *oright; if ((TRUE | never evaluated | FALSE | never evaluated |
oright = (tmp)->tree_entry.rbe_right)TRUE | never evaluated | FALSE | never evaluated |
) (never executed: (oright)->tree_entry.rbe_color = 0; oright)->tree_entry.rbe_color = 0;never executed: (oright)->tree_entry.rbe_color = 0; (tmp)->tree_entry.rbe_color = 1; do { (oright) = (tmp)->tree_entry.rbe_right; if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_right = (oright)->tree_entry.rbe_left)TRUE | never evaluated | FALSE | never evaluated |
) { ((oright)->tree_entry.rbe_left)->tree_entry.rbe_parent = (tmp); }never executed: end of block do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
oright)->tree_entry.rbe_parent = (tmp)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
tmp) == ((tmp)->tree_entry.rbe_parent)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((tmp)->tree_entry.rbe_parent)->tree_entry.rbe_left = (oright); tmp)->tree_entry.rbe_parent)->tree_entry.rbe_left = (oright);never executed: ((tmp)->tree_entry.rbe_parent)->tree_entry.rbe_left = (oright); else ((never executed: ((tmp)->tree_entry.rbe_parent)->tree_entry.rbe_right = (oright); tmp)->tree_entry.rbe_parent)->tree_entry.rbe_right = (oright);never executed: ((tmp)->tree_entry.rbe_parent)->tree_entry.rbe_right = (oright); } else (never executed: (head)->rbh_root = (oright); head)->rbh_root = (oright);never executed: (head)->rbh_root = (oright); (oright)->tree_entry.rbe_left = (tmp); (tmp)->tree_entry.rbe_parent = (oright); do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
oright)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) do {}never executed: end of block while (0); } while (0); tmp = (parent)->tree_entry.rbe_left; }never executed: end of block (tmp)->tree_entry.rbe_color = (parent)->tree_entry.rbe_color; (parent)->tree_entry.rbe_color = 0; if ((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((tmp)->tree_entry.rbe_left)->tree_entry.rbe_color = 0; tmp)->tree_entry.rbe_left)->tree_entry.rbe_color = 0;never executed: ((tmp)->tree_entry.rbe_left)->tree_entry.rbe_color = 0; do { (tmp) = (parent)->tree_entry.rbe_left; if (((TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_left = (tmp)->tree_entry.rbe_right)TRUE | never evaluated | FALSE | never evaluated |
) { ((tmp)->tree_entry.rbe_right)->tree_entry.rbe_parent = (parent); }never executed: end of block do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent = (parent)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
parent) == ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_left = (tmp); else ((never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp);never executed: ((parent)->tree_entry.rbe_parent)->tree_entry.rbe_right = (tmp); } else (never executed: (head)->rbh_root = (tmp); head)->rbh_root = (tmp);never executed: (head)->rbh_root = (tmp); (tmp)->tree_entry.rbe_right = (parent); (parent)->tree_entry.rbe_parent = (tmp); do {} while (0); if (((TRUE | never evaluated | FALSE | never evaluated |
tmp)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
) do {}never executed: end of block while (0); } while (0); elm = (head)->rbh_root; break;never executed: break; } } } if (elmTRUE | never evaluated | FALSE | never evaluated |
) (never executed: (elm)->tree_entry.rbe_color = 0; elm)->tree_entry.rbe_color = 0;never executed: (elm)->tree_entry.rbe_color = 0; }never executed: end of block __attribute__((__unused__)) static struct revoked_blob * revoked_blob_tree_RB_REMOVE(struct revoked_blob_tree *head, struct revoked_blob *elm) { struct revoked_blob *child, *parent, *old = elm; int color; if ((TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_left == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
110 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
111 | ) child = (elm)->tree_entry.rbe_right; never executed: child = (elm)->tree_entry.rbe_right; else if ((TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_right == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
112 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
113 | ) child = (elm)->tree_entry.rbe_left; never executed: child = (elm)->tree_entry.rbe_left; else { struct revoked_blob *left; elm = (elm)->tree_entry.rbe_right; while ((TRUE | never evaluated | FALSE | never evaluated |
left = (elm)->tree_entry.rbe_left)TRUE | never evaluated | FALSE | never evaluated |
) elm = left;never executed: elm = left; child = (elm)->tree_entry.rbe_right; parent = (elm)->tree_entry.rbe_parent; color = (elm)->tree_entry.rbe_color; if (childTRUE | never evaluated | FALSE | never evaluated |
) (never executed: (child)->tree_entry.rbe_parent = parent; child)->tree_entry.rbe_parent = parent;never executed: (child)->tree_entry.rbe_parent = parent; if (parentTRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_left == elmTRUE | never evaluated | FALSE | never evaluated |
) (never executed: (parent)->tree_entry.rbe_left = child; parent)->tree_entry.rbe_left = child;never executed: (parent)->tree_entry.rbe_left = child; else (never executed: (parent)->tree_entry.rbe_right = child; parent)->tree_entry.rbe_right = child;never executed: (parent)->tree_entry.rbe_right = child; do {} while (0); }never executed: end of block else (never executed: (head)->rbh_root = child; head)->rbh_root = child;never executed: (head)->rbh_root = child; if ((TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_parent == oldTRUE | never evaluated | FALSE | never evaluated |
) parent = elm;never executed: parent = elm; (elm)->tree_entry = (old)->tree_entry; if ((TRUE | never evaluated | FALSE | never evaluated |
old)->tree_entry.rbe_parentTRUE | never evaluated | FALSE | never evaluated |
) { if (((TRUE | never evaluated | FALSE | never evaluated |
old)->tree_entry.rbe_parent)->tree_entry.rbe_left == oldTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((old)->tree_entry.rbe_parent)->tree_entry.rbe_left = elm; old)->tree_entry.rbe_parent)->tree_entry.rbe_left = elm;never executed: ((old)->tree_entry.rbe_parent)->tree_entry.rbe_left = elm; else ((never executed: ((old)->tree_entry.rbe_parent)->tree_entry.rbe_right = elm; old)->tree_entry.rbe_parent)->tree_entry.rbe_right = elm;never executed: ((old)->tree_entry.rbe_parent)->tree_entry.rbe_right = elm; do {} while (0); }never executed: end of block else (never executed: (head)->rbh_root = elm; head)->rbh_root = elm;never executed: (head)->rbh_root = elm; ((old)->tree_entry.rbe_left)->tree_entry.rbe_parent = elm; if ((TRUE | never evaluated | FALSE | never evaluated |
old)->tree_entry.rbe_rightTRUE | never evaluated | FALSE | never evaluated |
) ((never executed: ((old)->tree_entry.rbe_right)->tree_entry.rbe_parent = elm; old)->tree_entry.rbe_right)->tree_entry.rbe_parent = elm;never executed: ((old)->tree_entry.rbe_right)->tree_entry.rbe_parent = elm; if (parentTRUE | never evaluated | FALSE | never evaluated |
) { left = parent; do { do {} while (0); }never executed: end of block while ((TRUE | never evaluated | FALSE | never evaluated |
left = (left)->tree_entry.rbe_parent)TRUE | never evaluated | FALSE | never evaluated |
); }never executed: end of block gotonever executed: goto color; color;never executed: goto color; } parent = (elm)->tree_entry.rbe_parent; color = (elm)->tree_entry.rbe_color; if (childTRUE | never evaluated | FALSE | never evaluated |
) (never executed: (child)->tree_entry.rbe_parent = parent; child)->tree_entry.rbe_parent = parent;never executed: (child)->tree_entry.rbe_parent = parent; if (parentTRUE | never evaluated | FALSE | never evaluated |
) { if ((TRUE | never evaluated | FALSE | never evaluated |
parent)->tree_entry.rbe_left == elmTRUE | never evaluated | FALSE | never evaluated |
) (never executed: (parent)->tree_entry.rbe_left = child; parent)->tree_entry.rbe_left = child;never executed: (parent)->tree_entry.rbe_left = child; else (never executed: (parent)->tree_entry.rbe_right = child; parent)->tree_entry.rbe_right = child;never executed: (parent)->tree_entry.rbe_right = child; do {} while (0); }never executed: end of block else (never executed: (head)->rbh_root = child; head)->rbh_root = child;never executed: (head)->rbh_root = child; color:code before this statement never executed: color: if (color == 0TRUE | never evaluated | FALSE | never evaluated |
) revoked_blob_tree_RB_REMOVE_COLOR(head, parent, child);never executed: revoked_blob_tree_RB_REMOVE_COLOR(head, parent, child); returnnever executed: return (old); (old);never executed: return (old); } __attribute__((__unused__)) static struct revoked_blob * revoked_blob_tree_RB_INSERT(struct revoked_blob_tree *head, struct revoked_blob *elm) { struct revoked_blob *tmp; struct revoked_blob *parent = | 0 |
114 | ((void *)0) | - |
115 | ; int comp = 0; tmp = (head)->rbh_root; while (tmpTRUE | never evaluated | FALSE | never evaluated |
) { parent = tmp; comp = (blob_cmp)(elm, parent); if (comp < 0TRUE | never evaluated | FALSE | never evaluated |
) tmp = (tmp)->tree_entry.rbe_left;never executed: tmp = (tmp)->tree_entry.rbe_left; else if (comp > 0TRUE | never evaluated | FALSE | never evaluated |
) tmp = (tmp)->tree_entry.rbe_right;never executed: tmp = (tmp)->tree_entry.rbe_right; else returnnever executed: return (tmp); (tmp);never executed: return (tmp); } do { (elm)->tree_entry.rbe_parent = parent; (elm)->tree_entry.rbe_left = (elm)->tree_entry.rbe_right = | 0 |
116 | ((void *)0) | - |
117 | ; (elm)->tree_entry.rbe_color = 1; } while (0); if (parent != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
118 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
119 | ) { if (comp < 0TRUE | never evaluated | FALSE | never evaluated |
) (never executed: (parent)->tree_entry.rbe_left = elm; parent)->tree_entry.rbe_left = elm;never executed: (parent)->tree_entry.rbe_left = elm; else (never executed: (parent)->tree_entry.rbe_right = elm; parent)->tree_entry.rbe_right = elm;never executed: (parent)->tree_entry.rbe_right = elm; do {} while (0); }never executed: end of block else (never executed: (head)->rbh_root = elm; head)->rbh_root = elm;never executed: (head)->rbh_root = elm; revoked_blob_tree_RB_INSERT_COLOR(head, elm); returnnever executed: return ( ((void *)0) ); (never executed: return ( ((void *)0) ); | 0 |
120 | (( never executed: return ( ((void *)0) ); never executed: return ( ((void *)0) ); void *)0)never executed: return ( ((void *)0) ); | 0 |
121 | ) never executed: return ( ((void *)0) ); never executed: return ( ((void *)0) ); ;never executed: return ( ((void *)0) ); } __attribute__((__unused__)) static struct revoked_blob * revoked_blob_tree_RB_FIND(struct revoked_blob_tree *head, struct revoked_blob *elm) { struct revoked_blob *tmp = (head)->rbh_root; int comp; while (tmpTRUE | never evaluated | FALSE | never evaluated |
) { comp = blob_cmp(elm, tmp); if (comp < 0TRUE | never evaluated | FALSE | never evaluated |
) tmp = (tmp)->tree_entry.rbe_left;never executed: tmp = (tmp)->tree_entry.rbe_left; else if (comp > 0TRUE | never evaluated | FALSE | never evaluated |
) tmp = (tmp)->tree_entry.rbe_right;never executed: tmp = (tmp)->tree_entry.rbe_right; else returnnever executed: return (tmp); (tmp);never executed: return (tmp); } returnnever executed: return ( ((void *)0) ); (never executed: return ( ((void *)0) ); | 0 |
122 | (( never executed: return ( ((void *)0) ); never executed: return ( ((void *)0) ); void *)0)never executed: return ( ((void *)0) ); | 0 |
123 | ) never executed: return ( ((void *)0) ); never executed: return ( ((void *)0) ); ;never executed: return ( ((void *)0) ); } __attribute__((__unused__)) static struct revoked_blob * revoked_blob_tree_RB_NFIND(struct revoked_blob_tree *head, struct revoked_blob *elm) { struct revoked_blob *tmp = (head)->rbh_root; struct revoked_blob *res = | 0 |
124 | ((void *)0) | - |
125 | ; int comp; while (tmpTRUE | never evaluated | FALSE | never evaluated |
) { comp = blob_cmp(elm, tmp); if (comp < 0TRUE | never evaluated | FALSE | never evaluated |
) { res = tmp; tmp = (tmp)->tree_entry.rbe_left; }never executed: end of block else if (comp > 0TRUE | never evaluated | FALSE | never evaluated |
) tmp = (tmp)->tree_entry.rbe_right;never executed: tmp = (tmp)->tree_entry.rbe_right; else returnnever executed: return (tmp); (tmp);never executed: return (tmp); } returnnever executed: return (res); (res);never executed: return (res); } __attribute__((__unused__)) static struct revoked_blob * revoked_blob_tree_RB_NEXT(struct revoked_blob *elm) { if ((TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_rightTRUE | never evaluated | FALSE | never evaluated |
) { elm = (elm)->tree_entry.rbe_right; while ((TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) elm = (elm)->tree_entry.rbe_left;never executed: elm = (elm)->tree_entry.rbe_left; }never executed: end of block else { if ((TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_parentTRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
elm == ((elm)->tree_entry.rbe_parent)->tree_entry.rbe_left)TRUE | never evaluated | FALSE | never evaluated |
) elm = (elm)->tree_entry.rbe_parent;never executed: elm = (elm)->tree_entry.rbe_parent; else { while ((TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_parentTRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
elm == ((elm)->tree_entry.rbe_parent)->tree_entry.rbe_right)TRUE | never evaluated | FALSE | never evaluated |
) elm = (elm)->tree_entry.rbe_parent;never executed: elm = (elm)->tree_entry.rbe_parent; elm = (elm)->tree_entry.rbe_parent; }never executed: end of block } returnnever executed: return (elm); (elm);never executed: return (elm); } __attribute__((__unused__)) static struct revoked_blob * revoked_blob_tree_RB_PREV(struct revoked_blob *elm) { if ((TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_leftTRUE | never evaluated | FALSE | never evaluated |
) { elm = (elm)->tree_entry.rbe_left; while ((TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_rightTRUE | never evaluated | FALSE | never evaluated |
) elm = (elm)->tree_entry.rbe_right;never executed: elm = (elm)->tree_entry.rbe_right; }never executed: end of block else { if ((TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_parentTRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
elm == ((elm)->tree_entry.rbe_parent)->tree_entry.rbe_right)TRUE | never evaluated | FALSE | never evaluated |
) elm = (elm)->tree_entry.rbe_parent;never executed: elm = (elm)->tree_entry.rbe_parent; else { while ((TRUE | never evaluated | FALSE | never evaluated |
elm)->tree_entry.rbe_parentTRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
elm == ((elm)->tree_entry.rbe_parent)->tree_entry.rbe_left)TRUE | never evaluated | FALSE | never evaluated |
) elm = (elm)->tree_entry.rbe_parent;never executed: elm = (elm)->tree_entry.rbe_parent; elm = (elm)->tree_entry.rbe_parent; }never executed: end of block } returnnever executed: return (elm); (elm);never executed: return (elm); } __attribute__((__unused__)) static struct revoked_blob * revoked_blob_tree_RB_MINMAX(struct revoked_blob_tree *head, int val) { struct revoked_blob *tmp = (head)->rbh_root; struct revoked_blob *parent = | 0 |
126 | ((void *)0) | - |
127 | ; while (tmpTRUE | never evaluated | FALSE | never evaluated |
) { parent = tmp; if (val < 0TRUE | never evaluated | FALSE | never evaluated |
) tmp = (tmp)->tree_entry.rbe_left;never executed: tmp = (tmp)->tree_entry.rbe_left; else tmp = (tmp)->tree_entry.rbe_right;never executed: tmp = (tmp)->tree_entry.rbe_right; } returnnever executed: return (parent); (parent);never executed: return (parent); }; | 0 |
128 | | - |
129 | | - |
130 | struct revoked_certs { | - |
131 | struct sshkey *ca_key; | - |
132 | struct revoked_serial_tree revoked_serials; | - |
133 | struct revoked_key_id_tree revoked_key_ids; | - |
134 | struct { struct revoked_certs *tqe_next; struct revoked_certs **tqe_prev; } entry; | - |
135 | }; | - |
136 | struct revoked_certs_list { struct revoked_certs *tqh_first; struct revoked_certs **tqh_last; }; | - |
137 | | - |
138 | struct ssh_krl { | - |
139 | u_int64_t krl_version; | - |
140 | u_int64_t generated_date; | - |
141 | u_int64_t flags; | - |
142 | char *comment; | - |
143 | struct revoked_blob_tree revoked_keys; | - |
144 | struct revoked_blob_tree revoked_sha1s; | - |
145 | struct revoked_blob_tree revoked_sha256s; | - |
146 | struct revoked_certs_list revoked_certs; | - |
147 | }; | - |
148 | | - |
149 | | - |
150 | static int | - |
151 | serial_cmp(struct revoked_serial *a, struct revoked_serial *b) | - |
152 | { | - |
153 | if (a->hi >= b->loTRUE | never evaluated | FALSE | never evaluated |
&& a->lo <= b->hiTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
154 | return never executed: return 0; 0;never executed: return 0; | 0 |
155 | return never executed: return a->lo < b->lo ? -1 : 1; a->lo < b->loTRUE | never evaluated | FALSE | never evaluated |
? -1 : 1;never executed: return a->lo < b->lo ? -1 : 1; | 0 |
156 | } | - |
157 | | - |
158 | static int | - |
159 | key_id_cmp(struct revoked_key_id *a, struct revoked_key_id *b) | - |
160 | { | - |
161 | return never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
162 | __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
163 | a->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
164 | ) && __builtin_constant_p ( never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
165 | b->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
166 | ) && (__s1_len = __builtin_strlen ( never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
167 | a->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
168 | ), __s2_len = __builtin_strlen ( never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
169 | b->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
170 | ), (!((size_t)(const void *)(( never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
171 | a->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
172 | ) + 1) - (size_t)(const void *)( never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
173 | a->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
174 | ) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(( never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
175 | b->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
176 | ) + 1) - (size_t)(const void *)( never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
177 | b->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
178 | ) == 1) || __s2_len >= 4)) ? __builtin_strcmp ( never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
179 | a->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
180 | , never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
181 | b->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
182 | ) : (__builtin_constant_p ( never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
183 | a->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
184 | ) && ((size_t)(const void *)(( never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
185 | a->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
186 | ) + 1) - (size_t)(const void *)( never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
187 | a->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
188 | ) == 1) && (__s1_len = __builtin_strlen ( never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
189 | a->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
190 | ), __s1_len < 4) ? (__builtin_constant_p ( never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
191 | b->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
192 | ) && ((size_t)(const void *)(( never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
193 | b->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
194 | ) + 1) - (size_t)(const void *)( never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
195 | b->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
196 | ) == 1) ? __builtin_strcmp ( never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
197 | a->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
198 | , never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
199 | b->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
200 | ) : (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) ( never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
201 | b->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
202 | ); int __result = (((const unsigned char *) (const char *) ( never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
203 | a->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
204 | ))[0] - __s2[0]); if (__s1_len > 0TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
205 | a->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
206 | ))[1] - __s2[1]); if (__s1_len > 1TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
207 | a->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
208 | ))[2] - __s2[2]); if (__s1_len > 2TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) __result = (((const unsigned char *) (const char *) (never executed: __result = (((const unsigned char *) (const char *) ( a->key_id ))[3] - __s2[3]); never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
209 | a->key_id never executed: __result = (((const unsigned char *) (const char *) ( a->key_id ))[3] - __s2[3]); never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
210 | ))[3] - __s2[3]); never executed: __result = (((const unsigned char *) (const char *) ( a->key_id ))[3] - __s2[3]); }never executed: end of block }never executed: end of block __result; }))) : (__builtin_constant_p (never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
211 | b->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
212 | ) && ((size_t)(const void *)(( never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
213 | b->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
214 | ) + 1) - (size_t)(const void *)( never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
215 | b->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
216 | ) == 1) && (__s2_len = __builtin_strlen ( never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
217 | b->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
218 | ), __s2_len < 4) ? (__builtin_constant_p ( never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
219 | a->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
220 | ) && ((size_t)(const void *)(( never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
221 | a->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
222 | ) + 1) - (size_t)(const void *)( never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
223 | a->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
224 | ) == 1) ? __builtin_strcmp ( never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
225 | a->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
226 | , never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
227 | b->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
228 | ) : -(__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) ( never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
229 | a->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
230 | ); int __result = (((const unsigned char *) (const char *) ( never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
231 | b->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
232 | ))[0] - __s2[0]); if (__s2_len > 0TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
233 | b->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
234 | ))[1] - __s2[1]); if (__s2_len > 1TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
235 | b->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
236 | ))[2] - __s2[2]); if (__s2_len > 2TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) __result = (((const unsigned char *) (const char *) (never executed: __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
237 | b->key_id never executed: __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
238 | ))[3] - __s2[3]); never executed: __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); }never executed: end of block }never executed: end of block __result; }))) : __builtin_strcmp (never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
239 | a->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
240 | , never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
241 | b->key_id never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
242 | )))); }) never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
243 | ; never executed: return __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( a->key_id ) && __builtin_constant_p ( b->key_id ) && (__s1_len = __builtin_strlen ( a->key_id ), __s2_len = __builtin_strlen ( b->key_id ), (!((size_t)(const void *)(( a->key_id ) ...nst unsigned char *) (const char *) ( b->key_id ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ( b->key_id ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( a->key_id , b->key_id )))); }) ; | 0 |
244 | } | - |
245 | | - |
246 | static int | - |
247 | blob_cmp(struct revoked_blob *a, struct revoked_blob *b) | - |
248 | { | - |
249 | int r; | - |
250 | | - |
251 | if (a->len != b->lenTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
252 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = memcmp(a->blob, b->blob, (((a->len) < (b->len)) ? (a->len) : (b->len)))) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
253 | return never executed: return r; r;never executed: return r; | 0 |
254 | return never executed: return a->len > b->len ? 1 : -1; a->len > b->lenTRUE | never evaluated | FALSE | never evaluated |
? 1 : -1;never executed: return a->len > b->len ? 1 : -1; | 0 |
255 | } else | - |
256 | return never executed: return memcmp(a->blob, b->blob, a->len); memcmp(a->blob, b->blob, a->len);never executed: return memcmp(a->blob, b->blob, a->len); | 0 |
257 | } | - |
258 | | - |
259 | struct ssh_krl * | - |
260 | ssh_krl_init(void) | - |
261 | { | - |
262 | struct ssh_krl *krl; | - |
263 | | - |
264 | if ((TRUE | never evaluated | FALSE | never evaluated |
krl = calloc(1, sizeof(*krl))) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
265 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
266 | ) | - |
267 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
268 | ((void *)0) never executed: return ((void *)0) ; | 0 |
269 | ; never executed: return ((void *)0) ; | 0 |
270 | do { (&krl->revoked_keys)->rbh_root = | - |
271 | ((void *)0) | - |
272 | ; } while (0); | - |
273 | do { (&krl->revoked_sha1s)->rbh_root = | - |
274 | ((void *)0) | - |
275 | ; } while (0); | - |
276 | do { (&krl->revoked_sha256s)->rbh_root = | - |
277 | ((void *)0) | - |
278 | ; } while (0); | - |
279 | do { (&krl->revoked_certs)->tqh_first = | - |
280 | ((void *)0) | - |
281 | ; (&krl->revoked_certs)->tqh_last = &(&krl->revoked_certs)->tqh_first; } while (0); | - |
282 | return never executed: return krl; krl;never executed: return krl; | 0 |
283 | } | - |
284 | | - |
285 | static void | - |
286 | revoked_certs_free(struct revoked_certs *rc) | - |
287 | { | - |
288 | struct revoked_serial *rs, *trs; | - |
289 | struct revoked_key_id *rki, *trki; | - |
290 | | - |
291 | for ((rs) = revoked_serial_tree_RB_MINMAX(&rc->revoked_serials, -1); ((TRUE | never evaluated | FALSE | never evaluated |
rs) != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
292 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
293 | )TRUE | never evaluated | FALSE | never evaluated |
&& ((trs) = revoked_serial_tree_RB_NEXT(rs), 1); (rs) = (trs)) { | 0 |
294 | revoked_serial_tree_RB_REMOVE(&rc->revoked_serials, rs); | - |
295 | free(rs); | - |
296 | } never executed: end of block | 0 |
297 | for ((rki) = revoked_key_id_tree_RB_MINMAX(&rc->revoked_key_ids, -1); ((TRUE | never evaluated | FALSE | never evaluated |
rki) != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
298 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
299 | )TRUE | never evaluated | FALSE | never evaluated |
&& ((trki) = revoked_key_id_tree_RB_NEXT(rki), 1); (rki) = (trki)) { | 0 |
300 | revoked_key_id_tree_RB_REMOVE(&rc->revoked_key_ids, rki); | - |
301 | free(rki->key_id); | - |
302 | free(rki); | - |
303 | } never executed: end of block | 0 |
304 | sshkey_free(rc->ca_key); | - |
305 | } never executed: end of block | 0 |
306 | | - |
307 | void | - |
308 | ssh_krl_free(struct ssh_krl *krl) | - |
309 | { | - |
310 | struct revoked_blob *rb, *trb; | - |
311 | struct revoked_certs *rc, *trc; | - |
312 | | - |
313 | if (krl == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
314 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
315 | ) | - |
316 | return; never executed: return; | 0 |
317 | | - |
318 | free(krl->comment); | - |
319 | for ((rb) = revoked_blob_tree_RB_MINMAX(&krl->revoked_keys, -1); ((TRUE | never evaluated | FALSE | never evaluated |
rb) != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
320 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
321 | )TRUE | never evaluated | FALSE | never evaluated |
&& ((trb) = revoked_blob_tree_RB_NEXT(rb), 1); (rb) = (trb)) { | 0 |
322 | revoked_blob_tree_RB_REMOVE(&krl->revoked_keys, rb); | - |
323 | free(rb->blob); | - |
324 | free(rb); | - |
325 | } never executed: end of block | 0 |
326 | for ((rb) = revoked_blob_tree_RB_MINMAX(&krl->revoked_sha1s, -1); ((TRUE | never evaluated | FALSE | never evaluated |
rb) != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
327 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
328 | )TRUE | never evaluated | FALSE | never evaluated |
&& ((trb) = revoked_blob_tree_RB_NEXT(rb), 1); (rb) = (trb)) { | 0 |
329 | revoked_blob_tree_RB_REMOVE(&krl->revoked_sha1s, rb); | - |
330 | free(rb->blob); | - |
331 | free(rb); | - |
332 | } never executed: end of block | 0 |
333 | for ((rb) = revoked_blob_tree_RB_MINMAX(&krl->revoked_sha256s, -1); ((TRUE | never evaluated | FALSE | never evaluated |
rb) != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
334 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
335 | )TRUE | never evaluated | FALSE | never evaluated |
&& ((trb) = revoked_blob_tree_RB_NEXT(rb), 1); (rb) = (trb)) { | 0 |
336 | revoked_blob_tree_RB_REMOVE(&krl->revoked_sha256s, rb); | - |
337 | free(rb->blob); | - |
338 | free(rb); | - |
339 | } never executed: end of block | 0 |
340 | for ((rc) = ((&krl->revoked_certs)->tqh_first); (TRUE | never evaluated | FALSE | never evaluated |
rc) != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
341 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
342 | && ((trc) = ((rc)->entry.tqe_next), 1); (rc) = (trc)) { | - |
343 | do { if (((TRUE | never evaluated | FALSE | never evaluated |
rc)->entry.tqe_next) != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
344 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
345 | ) ( never executed: (rc)->entry.tqe_next->entry.tqe_prev = (rc)->entry.tqe_prev; rc)->entry.tqe_next->entry.tqe_prev = (rc)->entry.tqe_prev;never executed: (rc)->entry.tqe_next->entry.tqe_prev = (rc)->entry.tqe_prev; else (never executed: (&krl->revoked_certs)->tqh_last = (rc)->entry.tqe_prev; &krl->revoked_certs)->tqh_last = (rc)->entry.tqe_prev;never executed: (&krl->revoked_certs)->tqh_last = (rc)->entry.tqe_prev; *(rc)->entry.tqe_prev = (rc)->entry.tqe_next; ; ; } while (0); | 0 |
346 | revoked_certs_free(rc); | - |
347 | } never executed: end of block | 0 |
348 | } never executed: end of block | 0 |
349 | | - |
350 | void | - |
351 | ssh_krl_set_version(struct ssh_krl *krl, u_int64_t version) | - |
352 | { | - |
353 | krl->krl_version = version; | - |
354 | } never executed: end of block | 0 |
355 | | - |
356 | int | - |
357 | ssh_krl_set_comment(struct ssh_krl *krl, const char *comment) | - |
358 | { | - |
359 | free(krl->comment); | - |
360 | if ((TRUE | never evaluated | FALSE | never evaluated |
krl->comment = TRUE | never evaluated | FALSE | never evaluated |
| 0 |
361 | (__extension__ (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
362 | commentTRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
363 | )TRUE | never evaluated | FALSE | never evaluated |
&& ((TRUE | never evaluated | FALSE | never evaluated |
size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
364 | commentTRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
365 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
366 | commentTRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
367 | ) == 1)TRUE | never evaluated | FALSE | never evaluated |
? (((constTRUE | never evaluated | FALSE | never evaluated |
char *) (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
368 | commentTRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
369 | ))[0] == '\0'TRUE | never evaluated | FALSE | never evaluated |
? (char *) calloc ((size_t) 1, (size_t) 1) : ({ size_t __len = strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
370 | commentTRUE | never evaluated | FALSE | never evaluated |
| 0 |
371 | ) + 1; char *__retval = (char *) malloc (__len); if (__retval != ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
) __retval = (char *) memcpy (__retval, never executed: __retval = (char *) memcpy (__retval, comment , __len); | 0 |
372 | commentTRUE | never evaluated | FALSE | never evaluated |
never executed: __retval = (char *) memcpy (__retval, comment , __len); | 0 |
373 | , __len); __retval; })) : __strdup (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
374 | commentTRUE | never evaluated | FALSE | never evaluated |
| 0 |
375 | )))TRUE | never evaluated | FALSE | never evaluated |
| 0 |
376 | ) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
377 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
378 | ) | - |
379 | return never executed: return -2; -2;never executed: return -2; | 0 |
380 | return never executed: return 0; 0;never executed: return 0; | 0 |
381 | } | - |
382 | | - |
383 | | - |
384 | | - |
385 | | - |
386 | | - |
387 | static int | - |
388 | revoked_certs_for_ca_key(struct ssh_krl *krl, const struct sshkey *ca_key, | - |
389 | struct revoked_certs **rcp, int allow_create) | - |
390 | { | - |
391 | struct revoked_certs *rc; | - |
392 | int r; | - |
393 | | - |
394 | *rcp = | - |
395 | ((void *)0) | - |
396 | ; | - |
397 | for((rc) = ((&krl->revoked_certs)->tqh_first); (TRUE | never evaluated | FALSE | never evaluated |
rc) != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
398 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
399 | ; (rc) = ((rc)->entry.tqe_next)) { | - |
400 | if ((ca_key == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
401 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
402 | && rc->ca_key == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
403 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
404 | ) || | - |
405 | sshkey_equal(rc->ca_key, ca_key)TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
406 | *rcp = rc; | - |
407 | return never executed: return 0; 0;never executed: return 0; | 0 |
408 | } | - |
409 | } never executed: end of block | 0 |
410 | if (!allow_createTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
411 | return never executed: return 0; 0;never executed: return 0; | 0 |
412 | | - |
413 | if ((TRUE | never evaluated | FALSE | never evaluated |
rc = calloc(1, sizeof(*rc))) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
414 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
415 | ) | - |
416 | return never executed: return -2; -2;never executed: return -2; | 0 |
417 | if (ca_key == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
418 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
419 | ) | - |
420 | rc->ca_key = never executed: rc->ca_key = ((void *)0) ; | 0 |
421 | ((void *)0) never executed: rc->ca_key = ((void *)0) ; | 0 |
422 | ; never executed: rc->ca_key = ((void *)0) ; | 0 |
423 | else if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshkey_from_private(ca_key, &rc->ca_key)) != 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
424 | free(rc); | - |
425 | return never executed: return r; r;never executed: return r; | 0 |
426 | } | - |
427 | do { (&rc->revoked_serials)->rbh_root = | - |
428 | ((void *)0) | - |
429 | ; } while (0); | - |
430 | do { (&rc->revoked_key_ids)->rbh_root = | - |
431 | ((void *)0) | - |
432 | ; } while (0); | - |
433 | do { (rc)->entry.tqe_next = | - |
434 | ((void *)0) | - |
435 | ; (rc)->entry.tqe_prev = (&krl->revoked_certs)->tqh_last; *(&krl->revoked_certs)->tqh_last = (rc); (&krl->revoked_certs)->tqh_last = &(rc)->entry.tqe_next; } while (0); | - |
436 | | - |
437 | ; | - |
438 | *rcp = rc; | - |
439 | return never executed: return 0; 0;never executed: return 0; | 0 |
440 | } | - |
441 | | - |
442 | static int | - |
443 | insert_serial_range(struct revoked_serial_tree *rt, u_int64_t lo, u_int64_t hi) | - |
444 | { | - |
445 | struct revoked_serial rs, *ers, *crs, *irs; | - |
446 | | - |
447 | ; | - |
448 | memset(&rs, 0, sizeof(rs)); | - |
449 | rs.lo = lo; | - |
450 | rs.hi = hi; | - |
451 | ers = revoked_serial_tree_RB_NFIND(rt, &rs); | - |
452 | if (ers == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
453 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
454 | || serial_cmp(ers, &rs) != 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
455 | | - |
456 | if ((TRUE | never evaluated | FALSE | never evaluated |
irs = malloc(sizeof(rs))) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
457 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
458 | ) | - |
459 | return never executed: return -2; -2;never executed: return -2; | 0 |
460 | memcpy(irs, &rs, sizeof(*irs)); | - |
461 | ers = revoked_serial_tree_RB_INSERT(rt, irs); | - |
462 | if (ers != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
463 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
464 | ) { | - |
465 | ; | - |
466 | | - |
467 | free(irs); | - |
468 | return never executed: return -1; -1;never executed: return -1; | 0 |
469 | } | - |
470 | ers = irs; | - |
471 | } never executed: end of block else { | 0 |
472 | | - |
473 | ; | - |
474 | | - |
475 | | - |
476 | | - |
477 | | - |
478 | if (ers->lo > loTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
479 | ers->lo = lo; never executed: ers->lo = lo; | 0 |
480 | if (ers->hi < hiTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
481 | ers->hi = hi; never executed: ers->hi = hi; | 0 |
482 | } never executed: end of block | 0 |
483 | | - |
484 | | - |
485 | | - |
486 | | - |
487 | | - |
488 | | - |
489 | | - |
490 | while ((TRUE | never evaluated | FALSE | never evaluated |
crs = revoked_serial_tree_RB_PREV(ers)) != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
491 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
492 | ) { | - |
493 | ; | - |
494 | if (ers->lo != 0TRUE | never evaluated | FALSE | never evaluated |
&& crs->hi < ers->lo - 1TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
495 | break; never executed: break; | 0 |
496 | | - |
497 | if (crs->lo < ers->loTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
498 | ers->lo = crs->lo; | - |
499 | | - |
500 | ; | - |
501 | } never executed: end of block | 0 |
502 | revoked_serial_tree_RB_REMOVE(rt, crs); | - |
503 | free(crs); | - |
504 | } never executed: end of block | 0 |
505 | | - |
506 | while ((TRUE | never evaluated | FALSE | never evaluated |
crs = revoked_serial_tree_RB_NEXT(ers)) != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
507 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
508 | ) { | - |
509 | ; | - |
510 | if (ers->hi != (u_int64_t)-1TRUE | never evaluated | FALSE | never evaluated |
&& crs->lo > ers->hi + 1TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
511 | break; never executed: break; | 0 |
512 | | - |
513 | if (crs->hi > ers->hiTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
514 | ers->hi = crs->hi; | - |
515 | | - |
516 | ; | - |
517 | } never executed: end of block | 0 |
518 | revoked_serial_tree_RB_REMOVE(rt, crs); | - |
519 | free(crs); | - |
520 | } never executed: end of block | 0 |
521 | ; | - |
522 | return never executed: return 0; 0;never executed: return 0; | 0 |
523 | } | - |
524 | | - |
525 | int | - |
526 | ssh_krl_revoke_cert_by_serial(struct ssh_krl *krl, const struct sshkey *ca_key, | - |
527 | u_int64_t serial) | - |
528 | { | - |
529 | return never executed: return ssh_krl_revoke_cert_by_serial_range(krl, ca_key, serial, serial); ssh_krl_revoke_cert_by_serial_range(krl, ca_key, serial, serial);never executed: return ssh_krl_revoke_cert_by_serial_range(krl, ca_key, serial, serial); | 0 |
530 | } | - |
531 | | - |
532 | int | - |
533 | ssh_krl_revoke_cert_by_serial_range(struct ssh_krl *krl, | - |
534 | const struct sshkey *ca_key, u_int64_t lo, u_int64_t hi) | - |
535 | { | - |
536 | struct revoked_certs *rc; | - |
537 | int r; | - |
538 | | - |
539 | if (lo > hiTRUE | never evaluated | FALSE | never evaluated |
|| lo == 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
540 | return never executed: return -10; -10;never executed: return -10; | 0 |
541 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = revoked_certs_for_ca_key(krl, ca_key, &rc, 1)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
542 | return never executed: return r; r;never executed: return r; | 0 |
543 | return never executed: return insert_serial_range(&rc->revoked_serials, lo, hi); insert_serial_range(&rc->revoked_serials, lo, hi);never executed: return insert_serial_range(&rc->revoked_serials, lo, hi); | 0 |
544 | } | - |
545 | | - |
546 | int | - |
547 | ssh_krl_revoke_cert_by_key_id(struct ssh_krl *krl, const struct sshkey *ca_key, | - |
548 | const char *key_id) | - |
549 | { | - |
550 | struct revoked_key_id *rki, *erki; | - |
551 | struct revoked_certs *rc; | - |
552 | int r; | - |
553 | | - |
554 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = revoked_certs_for_ca_key(krl, ca_key, &rc, 1)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
555 | return never executed: return r; r;never executed: return r; | 0 |
556 | | - |
557 | ; | - |
558 | if ((TRUE | never evaluated | FALSE | never evaluated |
rki = calloc(1, sizeof(*rki))) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
559 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
560 | || | - |
561 | (TRUE | never evaluated | FALSE | never evaluated |
rki->key_id = TRUE | never evaluated | FALSE | never evaluated |
| 0 |
562 | (__extension__ (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
563 | key_idTRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
564 | )TRUE | never evaluated | FALSE | never evaluated |
&& ((TRUE | never evaluated | FALSE | never evaluated |
size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
565 | key_idTRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
566 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
567 | key_idTRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
568 | ) == 1)TRUE | never evaluated | FALSE | never evaluated |
? (((const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
569 | key_idTRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
570 | ))[0] == '\0' ? (char *) calloc ((size_t) 1, (size_t) 1) : ({ size_t __len = strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
571 | key_idTRUE | never evaluated | FALSE | never evaluated |
| 0 |
572 | ) + 1; char *__retval = (char *) malloc (__len); if (__retval != ((void *)0)) __retval = (char *) memcpy (__retval, never executed: __retval = (char *) memcpy (__retval, key_id , __len); | 0 |
573 | key_idTRUE | never evaluated | FALSE | never evaluated |
never executed: __retval = (char *) memcpy (__retval, key_id , __len); | 0 |
574 | , __len); __retval; })) : __strdup (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
575 | key_idTRUE | never evaluated | FALSE | never evaluated |
| 0 |
576 | )))TRUE | never evaluated | FALSE | never evaluated |
| 0 |
577 | ) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
578 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
579 | ) { | - |
580 | free(rki); | - |
581 | return never executed: return -2; -2;never executed: return -2; | 0 |
582 | } | - |
583 | erki = revoked_key_id_tree_RB_INSERT(&rc->revoked_key_ids, rki); | - |
584 | if (erki != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
585 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
586 | ) { | - |
587 | free(rki->key_id); | - |
588 | free(rki); | - |
589 | } never executed: end of block | 0 |
590 | return never executed: return 0; 0;never executed: return 0; | 0 |
591 | } | - |
592 | | - |
593 | | - |
594 | static int | - |
595 | plain_key_blob(const struct sshkey *key, u_char **blob, size_t *blen) | - |
596 | { | - |
597 | struct sshkey *kcopy; | - |
598 | int r; | - |
599 | | - |
600 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshkey_from_private(key, &kcopy)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
601 | return never executed: return r; r;never executed: return r; | 0 |
602 | if (sshkey_is_cert(kcopy)TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
603 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshkey_drop_cert(kcopy)) != 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
604 | sshkey_free(kcopy); | - |
605 | return never executed: return r; r;never executed: return r; | 0 |
606 | } | - |
607 | } never executed: end of block | 0 |
608 | r = sshkey_to_blob(kcopy, blob, blen); | - |
609 | sshkey_free(kcopy); | - |
610 | return never executed: return r; r;never executed: return r; | 0 |
611 | } | - |
612 | | - |
613 | | - |
614 | static int | - |
615 | revoke_blob(struct revoked_blob_tree *rbt, u_char *blob, size_t len) | - |
616 | { | - |
617 | struct revoked_blob *rb, *erb; | - |
618 | | - |
619 | if ((TRUE | never evaluated | FALSE | never evaluated |
rb = calloc(1, sizeof(*rb))) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
620 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
621 | ) | - |
622 | return never executed: return -2; -2;never executed: return -2; | 0 |
623 | rb->blob = blob; | - |
624 | rb->len = len; | - |
625 | erb = revoked_blob_tree_RB_INSERT(rbt, rb); | - |
626 | if (erb != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
627 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
628 | ) { | - |
629 | free(rb->blob); | - |
630 | free(rb); | - |
631 | } never executed: end of block | 0 |
632 | return never executed: return 0; 0;never executed: return 0; | 0 |
633 | } | - |
634 | | - |
635 | int | - |
636 | ssh_krl_revoke_key_explicit(struct ssh_krl *krl, const struct sshkey *key) | - |
637 | { | - |
638 | u_char *blob; | - |
639 | size_t len; | - |
640 | int r; | - |
641 | | - |
642 | debug3("%s: revoke type %s", __func__, sshkey_type(key)); | - |
643 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = plain_key_blob(key, &blob, &len)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
644 | return never executed: return r; r;never executed: return r; | 0 |
645 | return never executed: return revoke_blob(&krl->revoked_keys, blob, len); revoke_blob(&krl->revoked_keys, blob, len);never executed: return revoke_blob(&krl->revoked_keys, blob, len); | 0 |
646 | } | - |
647 | | - |
648 | static int | - |
649 | revoke_by_hash(struct revoked_blob_tree *target, const u_char *p, size_t len) | - |
650 | { | - |
651 | u_char *blob; | - |
652 | int r; | - |
653 | | - |
654 | | - |
655 | if ((TRUE | never evaluated | FALSE | never evaluated |
blob = malloc(len)) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
656 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
657 | ) | - |
658 | return never executed: return -24; -24;never executed: return -24; | 0 |
659 | memcpy(blob, p, len); | - |
660 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = revoke_blob(target, blob, len)) != 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
661 | free(blob); | - |
662 | return never executed: return r; r;never executed: return r; | 0 |
663 | } | - |
664 | return never executed: return 0; 0;never executed: return 0; | 0 |
665 | } | - |
666 | | - |
667 | int | - |
668 | ssh_krl_revoke_key_sha1(struct ssh_krl *krl, const u_char *p, size_t len) | - |
669 | { | - |
670 | debug3("%s: revoke by sha1", __func__); | - |
671 | if (len != 20TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
672 | return never executed: return -4; -4;never executed: return -4; | 0 |
673 | return never executed: return revoke_by_hash(&krl->revoked_sha1s, p, len); revoke_by_hash(&krl->revoked_sha1s, p, len);never executed: return revoke_by_hash(&krl->revoked_sha1s, p, len); | 0 |
674 | } | - |
675 | | - |
676 | int | - |
677 | ssh_krl_revoke_key_sha256(struct ssh_krl *krl, const u_char *p, size_t len) | - |
678 | { | - |
679 | debug3("%s: revoke by sha256", __func__); | - |
680 | if (len != 32TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
681 | return never executed: return -4; -4;never executed: return -4; | 0 |
682 | return never executed: return revoke_by_hash(&krl->revoked_sha256s, p, len); revoke_by_hash(&krl->revoked_sha256s, p, len);never executed: return revoke_by_hash(&krl->revoked_sha256s, p, len); | 0 |
683 | } | - |
684 | | - |
685 | int | - |
686 | ssh_krl_revoke_key(struct ssh_krl *krl, const struct sshkey *key) | - |
687 | { | - |
688 | | - |
689 | if (!sshkey_is_cert(key)TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
690 | return never executed: return ssh_krl_revoke_key_explicit(krl, key); ssh_krl_revoke_key_explicit(krl, key);never executed: return ssh_krl_revoke_key_explicit(krl, key); | 0 |
691 | | - |
692 | if (key->cert->serial == 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
693 | return never executed: return ssh_krl_revoke_cert_by_key_id(krl, key->cert->signature_key, key->cert->key_id); ssh_krl_revoke_cert_by_key_id(krl,never executed: return ssh_krl_revoke_cert_by_key_id(krl, key->cert->signature_key, key->cert->key_id); | 0 |
694 | key->cert->signature_key, never executed: return ssh_krl_revoke_cert_by_key_id(krl, key->cert->signature_key, key->cert->key_id); | 0 |
695 | key->cert->key_id); never executed: return ssh_krl_revoke_cert_by_key_id(krl, key->cert->signature_key, key->cert->key_id); | 0 |
696 | } else { | - |
697 | return never executed: return ssh_krl_revoke_cert_by_serial(krl, key->cert->signature_key, key->cert->serial); ssh_krl_revoke_cert_by_serial(krl,never executed: return ssh_krl_revoke_cert_by_serial(krl, key->cert->signature_key, key->cert->serial); | 0 |
698 | key->cert->signature_key, never executed: return ssh_krl_revoke_cert_by_serial(krl, key->cert->signature_key, key->cert->serial); | 0 |
699 | key->cert->serial); never executed: return ssh_krl_revoke_cert_by_serial(krl, key->cert->signature_key, key->cert->serial); | 0 |
700 | } | - |
701 | } | - |
702 | static int | - |
703 | choose_next_state(int current_state, u_int64_t contig, int final, | - |
704 | u_int64_t last_gap, u_int64_t next_gap, int *force_new_section) | - |
705 | { | - |
706 | int new_state; | - |
707 | u_int64_t cost, cost_list, cost_range, cost_bitmap, cost_bitmap_restart; | - |
708 | | - |
709 | | - |
710 | | - |
711 | | - |
712 | | - |
713 | contig = (((TRUE | never evaluated | FALSE | never evaluated |
contig) < (1ULL<<31))TRUE | never evaluated | FALSE | never evaluated |
? (contig) : (1ULL<<31)); | 0 |
714 | last_gap = (((TRUE | never evaluated | FALSE | never evaluated |
last_gap) < (1ULL<<31))TRUE | never evaluated | FALSE | never evaluated |
? (last_gap) : (1ULL<<31)); | 0 |
715 | next_gap = (((TRUE | never evaluated | FALSE | never evaluated |
next_gap) < (1ULL<<31))TRUE | never evaluated | FALSE | never evaluated |
? (next_gap) : (1ULL<<31)); | 0 |
716 | | - |
717 | | - |
718 | | - |
719 | | - |
720 | | - |
721 | | - |
722 | cost_list = cost_bitmap = cost_bitmap_restart = 0; | - |
723 | cost_range = 8; | - |
724 | switch (current_state) { | - |
725 | case never executed: case 0x20: 0x20:never executed: case 0x20: | 0 |
726 | cost_bitmap_restart = cost_bitmap = 8 + 64; | - |
727 | break; never executed: break; | 0 |
728 | case never executed: case 0x22: 0x22:never executed: case 0x22: | 0 |
729 | cost_list = 8; | - |
730 | cost_bitmap_restart = 8 + 64; | - |
731 | break; never executed: break; | 0 |
732 | case never executed: case 0x21: 0x21:never executed: case 0x21: | 0 |
733 | case never executed: case 0: 0:never executed: case 0: | 0 |
734 | cost_bitmap_restart = cost_bitmap = 8 + 64; | - |
735 | cost_list = 8; | - |
736 | } never executed: end of block | 0 |
737 | | - |
738 | | - |
739 | cost_list += 64 * contig + (finalTRUE | never evaluated | FALSE | never evaluated |
? 0 : 8+64); | 0 |
740 | cost_range += (2 * 64) + (finalTRUE | never evaluated | FALSE | never evaluated |
? 0 : 8+64); | 0 |
741 | cost_bitmap += last_gap + contig + (finalTRUE | never evaluated | FALSE | never evaluated |
? 0 : (((TRUE | never evaluated | FALSE | never evaluated |
next_gap) < (8+64))TRUE | never evaluated | FALSE | never evaluated |
? (next_gap) : (8+64))); | 0 |
742 | cost_bitmap_restart += contig + (finalTRUE | never evaluated | FALSE | never evaluated |
? 0 : (((TRUE | never evaluated | FALSE | never evaluated |
next_gap) < (8+64))TRUE | never evaluated | FALSE | never evaluated |
? (next_gap) : (8+64))); | 0 |
743 | | - |
744 | | - |
745 | cost_list = (cost_list + 7) / 8; | - |
746 | cost_bitmap = (cost_bitmap + 7) / 8; | - |
747 | cost_bitmap_restart = (cost_bitmap_restart + 7) / 8; | - |
748 | cost_range = (cost_range + 7) / 8; | - |
749 | | - |
750 | | - |
751 | *force_new_section = 0; | - |
752 | new_state = 0x22; | - |
753 | cost = cost_bitmap; | - |
754 | if (cost_range < costTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
755 | new_state = 0x21; | - |
756 | cost = cost_range; | - |
757 | } never executed: end of block | 0 |
758 | if (cost_list < costTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
759 | new_state = 0x20; | - |
760 | cost = cost_list; | - |
761 | } never executed: end of block | 0 |
762 | if (cost_bitmap_restart < costTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
763 | new_state = 0x22; | - |
764 | *force_new_section = 1; | - |
765 | cost = cost_bitmap_restart; | - |
766 | } never executed: end of block | 0 |
767 | | - |
768 | | - |
769 | | - |
770 | | - |
771 | | - |
772 | | - |
773 | | - |
774 | ; | - |
775 | return never executed: return new_state; new_state;never executed: return new_state; | 0 |
776 | } | - |
777 | | - |
778 | static int | - |
779 | put_bitmap(struct sshbuf *buf, struct bitmap *bitmap) | - |
780 | { | - |
781 | size_t len; | - |
782 | u_char *blob; | - |
783 | int r; | - |
784 | | - |
785 | len = bitmap_nbytes(bitmap); | - |
786 | if ((TRUE | never evaluated | FALSE | never evaluated |
blob = malloc(len)) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
787 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
788 | ) | - |
789 | return never executed: return -2; -2;never executed: return -2; | 0 |
790 | if (bitmap_to_string(bitmap, blob, len) != 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
791 | free(blob); | - |
792 | return never executed: return -1; -1;never executed: return -1; | 0 |
793 | } | - |
794 | r = sshbuf_put_bignum2_bytes(buf, blob, len); | - |
795 | free(blob); | - |
796 | return never executed: return r; r;never executed: return r; | 0 |
797 | } | - |
798 | | - |
799 | | - |
800 | static int | - |
801 | revoked_certs_generate(struct revoked_certs *rc, struct sshbuf *buf) | - |
802 | { | - |
803 | int final, force_new_sect, r = -1; | - |
804 | u_int64_t i, contig, gap, last = 0, bitmap_start = 0; | - |
805 | struct revoked_serial *rs, *nrs; | - |
806 | struct revoked_key_id *rki; | - |
807 | int next_state, state = 0; | - |
808 | struct sshbuf *sect; | - |
809 | struct bitmap *bitmap = | - |
810 | ((void *)0) | - |
811 | ; | - |
812 | | - |
813 | if ((TRUE | never evaluated | FALSE | never evaluated |
sect = sshbuf_new()) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
814 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
815 | ) | - |
816 | return never executed: return -2; -2;never executed: return -2; | 0 |
817 | | - |
818 | | - |
819 | if (rc->ca_key == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
820 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
821 | ) { | - |
822 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_put_string(buf, TRUE | never evaluated | FALSE | never evaluated |
| 0 |
823 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
824 | , 0)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
825 | goto never executed: goto out; out;never executed: goto out; | 0 |
826 | } never executed: end of block else { | 0 |
827 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshkey_puts(rc->ca_key, buf)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
828 | goto never executed: goto out; out;never executed: goto out; | 0 |
829 | } never executed: end of block | 0 |
830 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_put_string(buf, TRUE | never evaluated | FALSE | never evaluated |
| 0 |
831 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
832 | , 0)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
833 | goto never executed: goto out; out;never executed: goto out; | 0 |
834 | | - |
835 | | - |
836 | for (rs = revoked_serial_tree_RB_MINMAX(&rc->revoked_serials, -1); | - |
837 | rs != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
838 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
839 | ; | - |
840 | rs = revoked_serial_tree_RB_NEXT(rs)) { | - |
841 | | - |
842 | | - |
843 | ; | - |
844 | | - |
845 | | - |
846 | nrs = revoked_serial_tree_RB_NEXT(rs); | - |
847 | final = nrs == | - |
848 | ((void *)0) | - |
849 | ; | - |
850 | gap = nrs == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
851 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
852 | ? 0 : nrs->lo - rs->hi; | - |
853 | contig = 1 + (rs->hi - rs->lo); | - |
854 | | - |
855 | | - |
856 | next_state = choose_next_state(state, contig, final, | - |
857 | state == 0 ? 0 : rs->lo - last, gap, &force_new_sect); | - |
858 | | - |
859 | | - |
860 | | - |
861 | | - |
862 | | - |
863 | if (state != 0TRUE | never evaluated | FALSE | never evaluated |
&& (force_new_sectTRUE | never evaluated | FALSE | never evaluated |
|| next_state != stateTRUE | never evaluated | FALSE | never evaluated |
|| | 0 |
864 | state == 0x21TRUE | never evaluated | FALSE | never evaluated |
)) { | 0 |
865 | ; | - |
866 | switch (state) { | - |
867 | case never executed: case 0x20: 0x20:never executed: case 0x20: | 0 |
868 | case never executed: case 0x21: 0x21:never executed: case 0x21: | 0 |
869 | break; never executed: break; | 0 |
870 | case never executed: case 0x22: 0x22:never executed: case 0x22: | 0 |
871 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = put_bitmap(sect, bitmap)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
872 | goto never executed: goto out; out;never executed: goto out; | 0 |
873 | bitmap_free(bitmap); | - |
874 | bitmap = | - |
875 | ((void *)0) | - |
876 | ; | - |
877 | break; never executed: break; | 0 |
878 | } | - |
879 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_put_u8(buf, state)) != 0TRUE | never evaluated | FALSE | never evaluated |
|| | 0 |
880 | (TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_put_stringb(buf, sect)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
881 | goto never executed: goto out; out;never executed: goto out; | 0 |
882 | sshbuf_reset(sect); | - |
883 | } never executed: end of block | 0 |
884 | | - |
885 | | - |
886 | if (next_state != stateTRUE | never evaluated | FALSE | never evaluated |
|| force_new_sectTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
887 | | - |
888 | ; | - |
889 | state = next_state; | - |
890 | sshbuf_reset(sect); | - |
891 | switch (state) { | - |
892 | case never executed: case 0x20: 0x20:never executed: case 0x20: | 0 |
893 | case never executed: case 0x21: 0x21:never executed: case 0x21: | 0 |
894 | break; never executed: break; | 0 |
895 | case never executed: case 0x22: 0x22:never executed: case 0x22: | 0 |
896 | if ((TRUE | never evaluated | FALSE | never evaluated |
bitmap = bitmap_new()) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
897 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
898 | ) { | - |
899 | r = -2; | - |
900 | goto never executed: goto out; out;never executed: goto out; | 0 |
901 | } | - |
902 | bitmap_start = rs->lo; | - |
903 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_put_u64(sect,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
904 | bitmap_start)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
905 | goto never executed: goto out; out;never executed: goto out; | 0 |
906 | break; never executed: break; | 0 |
907 | } | - |
908 | } never executed: end of block | 0 |
909 | | - |
910 | | - |
911 | switch (state) { | - |
912 | case never executed: case 0x20: 0x20:never executed: case 0x20: | 0 |
913 | for (i = 0; i < contigTRUE | never evaluated | FALSE | never evaluated |
; i++) { | 0 |
914 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_put_u64(sect, rs->lo + i)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
915 | goto never executed: goto out; out;never executed: goto out; | 0 |
916 | } never executed: end of block | 0 |
917 | break; never executed: break; | 0 |
918 | case never executed: case 0x21: 0x21:never executed: case 0x21: | 0 |
919 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_put_u64(sect, rs->lo)) != 0TRUE | never evaluated | FALSE | never evaluated |
|| | 0 |
920 | (TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_put_u64(sect, rs->hi)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
921 | goto never executed: goto out; out;never executed: goto out; | 0 |
922 | break; never executed: break; | 0 |
923 | case never executed: case 0x22: 0x22:never executed: case 0x22: | 0 |
924 | if (rs->lo - bitmap_start > 0x7fffffffTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
925 | error("%s: insane bitmap gap", __func__); | - |
926 | goto never executed: goto out; out;never executed: goto out; | 0 |
927 | } | - |
928 | for (i = 0; i < contigTRUE | never evaluated | FALSE | never evaluated |
; i++) { | 0 |
929 | if (bitmap_set_bit(bitmap,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
930 | rs->lo + i - bitmap_start) != 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
931 | r = -2; | - |
932 | goto never executed: goto out; out;never executed: goto out; | 0 |
933 | } | - |
934 | } never executed: end of block | 0 |
935 | break; never executed: break; | 0 |
936 | } | - |
937 | last = rs->hi; | - |
938 | } never executed: end of block | 0 |
939 | | - |
940 | if (state != 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
941 | | - |
942 | ; | - |
943 | switch (state) { | - |
944 | case never executed: case 0x20: 0x20:never executed: case 0x20: | 0 |
945 | case never executed: case 0x21: 0x21:never executed: case 0x21: | 0 |
946 | break; never executed: break; | 0 |
947 | case never executed: case 0x22: 0x22:never executed: case 0x22: | 0 |
948 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = put_bitmap(sect, bitmap)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
949 | goto never executed: goto out; out;never executed: goto out; | 0 |
950 | bitmap_free(bitmap); | - |
951 | bitmap = | - |
952 | ((void *)0) | - |
953 | ; | - |
954 | break; never executed: break; | 0 |
955 | } | - |
956 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_put_u8(buf, state)) != 0TRUE | never evaluated | FALSE | never evaluated |
|| | 0 |
957 | (TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_put_stringb(buf, sect)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
958 | goto never executed: goto out; out;never executed: goto out; | 0 |
959 | } never executed: end of block | 0 |
960 | ; | - |
961 | | - |
962 | | - |
963 | sshbuf_reset(sect); | - |
964 | for ((rki) = revoked_key_id_tree_RB_MINMAX(&rc->revoked_key_ids, -1); (TRUE | never evaluated | FALSE | never evaluated |
rki) != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
965 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
966 | ; (rki) = revoked_key_id_tree_RB_NEXT(rki)) { | - |
967 | ; | - |
968 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_put_cstring(sect, rki->key_id)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
969 | goto never executed: goto out; out;never executed: goto out; | 0 |
970 | } never executed: end of block | 0 |
971 | if (sshbuf_len(sect) != 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
972 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_put_u8(buf, 0x23)) != 0TRUE | never evaluated | FALSE | never evaluated |
|| | 0 |
973 | (TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_put_stringb(buf, sect)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
974 | goto never executed: goto out; out;never executed: goto out; | 0 |
975 | } never executed: end of block | 0 |
976 | r = 0; | - |
977 | out: code before this statement never executed: out: | 0 |
978 | bitmap_free(bitmap); | - |
979 | sshbuf_free(sect); | - |
980 | return never executed: return r; r;never executed: return r; | 0 |
981 | } | - |
982 | | - |
983 | int | - |
984 | ssh_krl_to_blob(struct ssh_krl *krl, struct sshbuf *buf, | - |
985 | const struct sshkey **sign_keys, u_int nsign_keys) | - |
986 | { | - |
987 | int r = -1; | - |
988 | struct revoked_certs *rc; | - |
989 | struct revoked_blob *rb; | - |
990 | struct sshbuf *sect; | - |
991 | u_char *sblob = | - |
992 | ((void *)0) | - |
993 | ; | - |
994 | size_t slen, i; | - |
995 | | - |
996 | if (krl->generated_date == 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
997 | krl->generated_date = time( never executed: krl->generated_date = time( ((void *)0) ); | 0 |
998 | ((void *)0) never executed: krl->generated_date = time( ((void *)0) ); | 0 |
999 | ); never executed: krl->generated_date = time( ((void *)0) ); | 0 |
1000 | | - |
1001 | if ((TRUE | never evaluated | FALSE | never evaluated |
sect = sshbuf_new()) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1002 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1003 | ) | - |
1004 | return never executed: return -2; -2;never executed: return -2; | 0 |
1005 | | - |
1006 | | - |
1007 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_put(buf, "SSHKRL\n\0", sizeof("SSHKRL\n\0") - 1)) != 0TRUE | never evaluated | FALSE | never evaluated |
|| | 0 |
1008 | (TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_put_u32(buf, 1)) != 0TRUE | never evaluated | FALSE | never evaluated |
|| | 0 |
1009 | (TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_put_u64(buf, krl->krl_version)) != 0TRUE | never evaluated | FALSE | never evaluated |
|| | 0 |
1010 | (TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_put_u64(buf, krl->generated_date)) != 0TRUE | never evaluated | FALSE | never evaluated |
|| | 0 |
1011 | (TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_put_u64(buf, krl->flags)) != 0TRUE | never evaluated | FALSE | never evaluated |
|| | 0 |
1012 | (TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_put_string(buf, TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1013 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1014 | , 0)) != 0TRUE | never evaluated | FALSE | never evaluated |
|| | 0 |
1015 | (TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_put_cstring(buf, krl->comment)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1016 | goto never executed: goto out; out;never executed: goto out; | 0 |
1017 | | - |
1018 | | - |
1019 | for((rc) = ((&krl->revoked_certs)->tqh_first); (TRUE | never evaluated | FALSE | never evaluated |
rc) != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1020 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1021 | ; (rc) = ((rc)->entry.tqe_next)) { | - |
1022 | sshbuf_reset(sect); | - |
1023 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = revoked_certs_generate(rc, sect)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1024 | goto never executed: goto out; out;never executed: goto out; | 0 |
1025 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_put_u8(buf, 1)) != 0TRUE | never evaluated | FALSE | never evaluated |
|| | 0 |
1026 | (TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_put_stringb(buf, sect)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1027 | goto never executed: goto out; out;never executed: goto out; | 0 |
1028 | } never executed: end of block | 0 |
1029 | | - |
1030 | | - |
1031 | sshbuf_reset(sect); | - |
1032 | for ((rb) = revoked_blob_tree_RB_MINMAX(&krl->revoked_keys, -1); (TRUE | never evaluated | FALSE | never evaluated |
rb) != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1033 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1034 | ; (rb) = revoked_blob_tree_RB_NEXT(rb)) { | - |
1035 | ; | - |
1036 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_put_string(sect, rb->blob, rb->len)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1037 | goto never executed: goto out; out;never executed: goto out; | 0 |
1038 | } never executed: end of block | 0 |
1039 | if (sshbuf_len(sect) != 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1040 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_put_u8(buf, 2)) != 0TRUE | never evaluated | FALSE | never evaluated |
|| | 0 |
1041 | (TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_put_stringb(buf, sect)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1042 | goto never executed: goto out; out;never executed: goto out; | 0 |
1043 | } never executed: end of block | 0 |
1044 | sshbuf_reset(sect); | - |
1045 | for ((rb) = revoked_blob_tree_RB_MINMAX(&krl->revoked_sha1s, -1); (TRUE | never evaluated | FALSE | never evaluated |
rb) != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1046 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1047 | ; (rb) = revoked_blob_tree_RB_NEXT(rb)) { | - |
1048 | ; | - |
1049 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_put_string(sect, rb->blob, rb->len)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1050 | goto never executed: goto out; out;never executed: goto out; | 0 |
1051 | } never executed: end of block | 0 |
1052 | if (sshbuf_len(sect) != 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1053 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_put_u8(buf,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1054 | 3)) != 0TRUE | never evaluated | FALSE | never evaluated |
|| | 0 |
1055 | (TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_put_stringb(buf, sect)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1056 | goto never executed: goto out; out;never executed: goto out; | 0 |
1057 | } never executed: end of block | 0 |
1058 | sshbuf_reset(sect); | - |
1059 | for ((rb) = revoked_blob_tree_RB_MINMAX(&krl->revoked_sha256s, -1); (TRUE | never evaluated | FALSE | never evaluated |
rb) != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1060 | ((TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1061 | ; (rb) = revoked_blob_tree_RB_NEXT(rb)) { | - |
1062 | ; | - |
1063 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_put_string(sect, rb->blob, rb->len)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1064 | goto never executed: goto out; out;never executed: goto out; | 0 |
1065 | } never executed: end of block | 0 |
1066 | if (sshbuf_len(sect) != 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1067 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_put_u8(buf,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1068 | 5)) != 0TRUE | never evaluated | FALSE | never evaluated |
|| | 0 |
1069 | (TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_put_stringb(buf, sect)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1070 | goto never executed: goto out; out;never executed: goto out; | 0 |
1071 | } never executed: end of block | 0 |
1072 | | - |
1073 | for (i = 0; i < nsign_keysTRUE | never evaluated | FALSE | never evaluated |
; i++) { | 0 |
1074 | | - |
1075 | ; | - |
1076 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_put_u8(buf, 4)) != 0TRUE | never evaluated | FALSE | never evaluated |
|| | 0 |
1077 | (TRUE | never evaluated | FALSE | never evaluated |
r = sshkey_puts(sign_keys[i], buf)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1078 | goto never executed: goto out; out;never executed: goto out; | 0 |
1079 | | - |
1080 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshkey_sign(sign_keys[i], &sblob, &slen,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1081 | sshbuf_ptr(buf), sshbuf_len(buf), TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1082 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1083 | , 0)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1084 | goto never executed: goto out; out;never executed: goto out; | 0 |
1085 | ; | - |
1086 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_put_string(buf, sblob, slen)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1087 | goto never executed: goto out; out;never executed: goto out; | 0 |
1088 | } never executed: end of block | 0 |
1089 | | - |
1090 | r = 0; | - |
1091 | out: code before this statement never executed: out: | 0 |
1092 | free(sblob); | - |
1093 | sshbuf_free(sect); | - |
1094 | return never executed: return r; r;never executed: return r; | 0 |
1095 | } | - |
1096 | | - |
1097 | static void | - |
1098 | format_timestamp(u_int64_t timestamp, char *ts, size_t nts) | - |
1099 | { | - |
1100 | time_t t; | - |
1101 | struct tm *tm; | - |
1102 | | - |
1103 | t = timestamp; | - |
1104 | tm = localtime(&t); | - |
1105 | if (tm == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1106 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1107 | ) | - |
1108 | strlcpy(ts, "<INVALID>", nts); never executed: strlcpy(ts, "<INVALID>", nts); | 0 |
1109 | else { | - |
1110 | *ts = '\0'; | - |
1111 | strftime(ts, nts, "%Y%m%dT%H%M%S", tm); | - |
1112 | } never executed: end of block | 0 |
1113 | } | - |
1114 | | - |
1115 | static int | - |
1116 | parse_revoked_certs(struct sshbuf *buf, struct ssh_krl *krl) | - |
1117 | { | - |
1118 | int r = -1; | - |
1119 | u_char type; | - |
1120 | const u_char *blob; | - |
1121 | size_t blen, nbits; | - |
1122 | struct sshbuf *subsect = | - |
1123 | ((void *)0) | - |
1124 | ; | - |
1125 | u_int64_t serial, serial_lo, serial_hi; | - |
1126 | struct bitmap *bitmap = | - |
1127 | ((void *)0) | - |
1128 | ; | - |
1129 | char *key_id = | - |
1130 | ((void *)0) | - |
1131 | ; | - |
1132 | struct sshkey *ca_key = | - |
1133 | ((void *)0) | - |
1134 | ; | - |
1135 | | - |
1136 | if ((TRUE | never evaluated | FALSE | never evaluated |
subsect = sshbuf_new()) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1137 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1138 | ) | - |
1139 | return never executed: return -2; -2;never executed: return -2; | 0 |
1140 | | - |
1141 | | - |
1142 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_get_string_direct(buf, &blob, &blen)) != 0TRUE | never evaluated | FALSE | never evaluated |
|| | 0 |
1143 | (TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_get_string_direct(buf, TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1144 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1145 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1146 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1147 | )) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1148 | goto never executed: goto out; out;never executed: goto out; | 0 |
1149 | if (blen != 0TRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
r = sshkey_from_blob(blob, blen, &ca_key)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1150 | goto never executed: goto out; out;never executed: goto out; | 0 |
1151 | | - |
1152 | while (sshbuf_len(buf) > 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1153 | sshbuf_free(subsect); | - |
1154 | subsect = | - |
1155 | ((void *)0) | - |
1156 | ; | - |
1157 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_get_u8(buf, &type)) != 0TRUE | never evaluated | FALSE | never evaluated |
|| | 0 |
1158 | (TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_froms(buf, &subsect)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1159 | goto never executed: goto out; out;never executed: goto out; | 0 |
1160 | ; | - |
1161 | | - |
1162 | | - |
1163 | switch (type) { | - |
1164 | case never executed: case 0x20: 0x20:never executed: case 0x20: | 0 |
1165 | while (sshbuf_len(subsect) > 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1166 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_get_u64(subsect, &serial)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1167 | goto never executed: goto out; out;never executed: goto out; | 0 |
1168 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = ssh_krl_revoke_cert_by_serial(krl,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1169 | ca_key, serial)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1170 | goto never executed: goto out; out;never executed: goto out; | 0 |
1171 | } never executed: end of block | 0 |
1172 | break; never executed: break; | 0 |
1173 | case never executed: case 0x21: 0x21:never executed: case 0x21: | 0 |
1174 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_get_u64(subsect, &serial_lo)) != 0TRUE | never evaluated | FALSE | never evaluated |
|| | 0 |
1175 | (TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_get_u64(subsect, &serial_hi)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1176 | goto never executed: goto out; out;never executed: goto out; | 0 |
1177 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = ssh_krl_revoke_cert_by_serial_range(krl,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1178 | ca_key, serial_lo, serial_hi)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1179 | goto never executed: goto out; out;never executed: goto out; | 0 |
1180 | break; never executed: break; | 0 |
1181 | case never executed: case 0x22: 0x22:never executed: case 0x22: | 0 |
1182 | if ((TRUE | never evaluated | FALSE | never evaluated |
bitmap = bitmap_new()) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1183 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1184 | ) { | - |
1185 | r = -2; | - |
1186 | goto never executed: goto out; out;never executed: goto out; | 0 |
1187 | } | - |
1188 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_get_u64(subsect, &serial_lo)) != 0TRUE | never evaluated | FALSE | never evaluated |
|| | 0 |
1189 | (TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_get_bignum2_bytes_direct(subsect,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1190 | &blob, &blen)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1191 | goto never executed: goto out; out;never executed: goto out; | 0 |
1192 | if (bitmap_from_string(bitmap, blob, blen) != 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1193 | r = -4; | - |
1194 | goto never executed: goto out; out;never executed: goto out; | 0 |
1195 | } | - |
1196 | nbits = bitmap_nbits(bitmap); | - |
1197 | for (serial = 0; serial < (u_int64_t)nbitsTRUE | never evaluated | FALSE | never evaluated |
; serial++) { | 0 |
1198 | if (serial > 0TRUE | never evaluated | FALSE | never evaluated |
&& serial_lo + serial == 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1199 | error("%s: bitmap wraps u64", __func__); | - |
1200 | r = -4; | - |
1201 | goto never executed: goto out; out;never executed: goto out; | 0 |
1202 | } | - |
1203 | if (!bitmap_test_bit(bitmap, serial)TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1204 | continue; never executed: continue; | 0 |
1205 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = ssh_krl_revoke_cert_by_serial(krl,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1206 | ca_key, serial_lo + serial)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1207 | goto never executed: goto out; out;never executed: goto out; | 0 |
1208 | } never executed: end of block | 0 |
1209 | bitmap_free(bitmap); | - |
1210 | bitmap = | - |
1211 | ((void *)0) | - |
1212 | ; | - |
1213 | break; never executed: break; | 0 |
1214 | case never executed: case 0x23: 0x23:never executed: case 0x23: | 0 |
1215 | while (sshbuf_len(subsect) > 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1216 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_get_cstring(subsect,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1217 | &key_id, TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1218 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1219 | )) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1220 | goto never executed: goto out; out;never executed: goto out; | 0 |
1221 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = ssh_krl_revoke_cert_by_key_id(krl,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1222 | ca_key, key_id)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1223 | goto never executed: goto out; out;never executed: goto out; | 0 |
1224 | free(key_id); | - |
1225 | key_id = | - |
1226 | ((void *)0) | - |
1227 | ; | - |
1228 | } never executed: end of block | 0 |
1229 | break; never executed: break; | 0 |
1230 | default never executed: default: :never executed: default: | 0 |
1231 | error("Unsupported KRL certificate section %u", type); | - |
1232 | r = -4; | - |
1233 | goto never executed: goto out; out;never executed: goto out; | 0 |
1234 | } | - |
1235 | if (sshbuf_len(subsect) > 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1236 | error("KRL certificate section contains unparsed data"); | - |
1237 | r = -4; | - |
1238 | goto never executed: goto out; out;never executed: goto out; | 0 |
1239 | } | - |
1240 | } never executed: end of block | 0 |
1241 | | - |
1242 | r = 0; | - |
1243 | out: code before this statement never executed: out: | 0 |
1244 | if (bitmap != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1245 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1246 | ) | - |
1247 | bitmap_free(bitmap); never executed: bitmap_free(bitmap); | 0 |
1248 | free(key_id); | - |
1249 | sshkey_free(ca_key); | - |
1250 | sshbuf_free(subsect); | - |
1251 | return never executed: return r; r;never executed: return r; | 0 |
1252 | } | - |
1253 | | - |
1254 | static int | - |
1255 | blob_section(struct sshbuf *sect, struct revoked_blob_tree *target_tree, | - |
1256 | size_t expected_len) | - |
1257 | { | - |
1258 | u_char *rdata = | - |
1259 | ((void *)0) | - |
1260 | ; | - |
1261 | size_t rlen = 0; | - |
1262 | int r; | - |
1263 | | - |
1264 | while (sshbuf_len(sect) > 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1265 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_get_string(sect, &rdata, &rlen)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1266 | return never executed: return r; r;never executed: return r; | 0 |
1267 | if (expected_len != 0TRUE | never evaluated | FALSE | never evaluated |
&& rlen != expected_lenTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1268 | error("%s: bad length", __func__); | - |
1269 | free(rdata); | - |
1270 | return never executed: return -4; -4;never executed: return -4; | 0 |
1271 | } | - |
1272 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = revoke_blob(target_tree, rdata, rlen)) != 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1273 | free(rdata); | - |
1274 | return never executed: return r; r;never executed: return r; | 0 |
1275 | } | - |
1276 | } never executed: end of block | 0 |
1277 | return never executed: return 0; 0;never executed: return 0; | 0 |
1278 | } | - |
1279 | | - |
1280 | | - |
1281 | int | - |
1282 | ssh_krl_from_blob(struct sshbuf *buf, struct ssh_krl **krlp, | - |
1283 | const struct sshkey **sign_ca_keys, size_t nsign_ca_keys) | - |
1284 | { | - |
1285 | struct sshbuf *copy = | - |
1286 | ((void *)0) | - |
1287 | , *sect = | - |
1288 | ((void *)0) | - |
1289 | ; | - |
1290 | struct ssh_krl *krl = | - |
1291 | ((void *)0) | - |
1292 | ; | - |
1293 | char timestamp[64]; | - |
1294 | int r = -1, sig_seen; | - |
1295 | struct sshkey *key = | - |
1296 | ((void *)0) | - |
1297 | , **ca_used = | - |
1298 | ((void *)0) | - |
1299 | , **tmp_ca_used; | - |
1300 | u_char type; | - |
1301 | const u_char *blob; | - |
1302 | size_t i, j, sig_off, sects_off, blen, nca_used; | - |
1303 | u_int format_version; | - |
1304 | | - |
1305 | nca_used = 0; | - |
1306 | *krlp = | - |
1307 | ((void *)0) | - |
1308 | ; | - |
1309 | if (sshbuf_len(buf) < sizeof("SSHKRL\n\0") - 1TRUE | never evaluated | FALSE | never evaluated |
|| | 0 |
1310 | memcmp(sshbuf_ptr(buf), "SSHKRL\n\0", sizeof("SSHKRL\n\0") - 1) != 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1311 | debug3("%s: not a KRL", __func__); | - |
1312 | return never executed: return -50; -50;never executed: return -50; | 0 |
1313 | } | - |
1314 | | - |
1315 | | - |
1316 | if ((TRUE | never evaluated | FALSE | never evaluated |
copy = sshbuf_fromb(buf)) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1317 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1318 | ) { | - |
1319 | r = -2; | - |
1320 | goto never executed: goto out; out;never executed: goto out; | 0 |
1321 | } | - |
1322 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_consume(copy, sizeof("SSHKRL\n\0") - 1)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1323 | goto never executed: goto out; out;never executed: goto out; | 0 |
1324 | | - |
1325 | if ((TRUE | never evaluated | FALSE | never evaluated |
krl = ssh_krl_init()) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1326 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1327 | ) { | - |
1328 | error("%s: alloc failed", __func__); | - |
1329 | goto never executed: goto out; out;never executed: goto out; | 0 |
1330 | } | - |
1331 | | - |
1332 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_get_u32(copy, &format_version)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1333 | goto never executed: goto out; out;never executed: goto out; | 0 |
1334 | if (format_version != 1TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1335 | r = -4; | - |
1336 | goto never executed: goto out; out;never executed: goto out; | 0 |
1337 | } | - |
1338 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_get_u64(copy, &krl->krl_version)) != 0TRUE | never evaluated | FALSE | never evaluated |
|| | 0 |
1339 | (TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_get_u64(copy, &krl->generated_date)) != 0TRUE | never evaluated | FALSE | never evaluated |
|| | 0 |
1340 | (TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_get_u64(copy, &krl->flags)) != 0TRUE | never evaluated | FALSE | never evaluated |
|| | 0 |
1341 | (TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_get_string_direct(copy, TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1342 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1343 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1344 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1345 | )) != 0TRUE | never evaluated | FALSE | never evaluated |
|| | 0 |
1346 | (TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_get_cstring(copy, &krl->comment, TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1347 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1348 | )) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1349 | goto never executed: goto out; out;never executed: goto out; | 0 |
1350 | | - |
1351 | format_timestamp(krl->generated_date, timestamp, sizeof(timestamp)); | - |
1352 | debug("KRL version %llu generated at %s%s%s", | - |
1353 | (long long unsigned)krl->krl_version, timestamp, | - |
1354 | *krl->comment ? ": " : "", krl->comment); | - |
1355 | | - |
1356 | | - |
1357 | | - |
1358 | | - |
1359 | | - |
1360 | sig_seen = 0; | - |
1361 | if (sshbuf_len(buf) < sshbuf_len(copy)TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1362 | | - |
1363 | r = -1; | - |
1364 | goto never executed: goto out; out;never executed: goto out; | 0 |
1365 | } | - |
1366 | sects_off = sshbuf_len(buf) - sshbuf_len(copy); | - |
1367 | while (sshbuf_len(copy) > 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1368 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_get_u8(copy, &type)) != 0TRUE | never evaluated | FALSE | never evaluated |
|| | 0 |
1369 | (TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_get_string_direct(copy, &blob, &blen)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1370 | goto never executed: goto out; out;never executed: goto out; | 0 |
1371 | ; | - |
1372 | if (type != 4TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1373 | if (sig_seenTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1374 | error("KRL contains non-signature section " | - |
1375 | "after signature"); | - |
1376 | r = -4; | - |
1377 | goto never executed: goto out; out;never executed: goto out; | 0 |
1378 | } | - |
1379 | | - |
1380 | continue; never executed: continue; | 0 |
1381 | } | - |
1382 | sig_seen = 1; | - |
1383 | | - |
1384 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshkey_from_blob(blob, blen, &key)) != 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1385 | r = -4; | - |
1386 | goto never executed: goto out; out;never executed: goto out; | 0 |
1387 | } | - |
1388 | if (sshbuf_len(buf) < sshbuf_len(copy)TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1389 | | - |
1390 | r = -1; | - |
1391 | goto never executed: goto out; out;never executed: goto out; | 0 |
1392 | } | - |
1393 | sig_off = sshbuf_len(buf) - sshbuf_len(copy); | - |
1394 | | - |
1395 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_get_string_direct(copy, &blob, &blen)) != 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1396 | r = -4; | - |
1397 | goto never executed: goto out; out;never executed: goto out; | 0 |
1398 | } | - |
1399 | | - |
1400 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshkey_verify(key, blob, blen,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1401 | sshbuf_ptr(buf), sig_off, TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1402 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1403 | , 0)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1404 | goto never executed: goto out; out;never executed: goto out; | 0 |
1405 | | - |
1406 | for (i = 0; i < nca_usedTRUE | never evaluated | FALSE | never evaluated |
; i++) { | 0 |
1407 | if (sshkey_equal(ca_used[i], key)TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1408 | error("KRL signed more than once with " | - |
1409 | "the same key"); | - |
1410 | r = -4; | - |
1411 | goto never executed: goto out; out;never executed: goto out; | 0 |
1412 | } | - |
1413 | } never executed: end of block | 0 |
1414 | | - |
1415 | tmp_ca_used = recallocarray(ca_used, nca_used, nca_used + 1, | - |
1416 | sizeof(*ca_used)); | - |
1417 | if (tmp_ca_used == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1418 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1419 | ) { | - |
1420 | r = -2; | - |
1421 | goto never executed: goto out; out;never executed: goto out; | 0 |
1422 | } | - |
1423 | ca_used = tmp_ca_used; | - |
1424 | ca_used[nca_used++] = key; | - |
1425 | key = | - |
1426 | ((void *)0) | - |
1427 | ; | - |
1428 | } never executed: end of block | 0 |
1429 | | - |
1430 | if (sshbuf_len(copy) != 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1431 | | - |
1432 | r = -1; | - |
1433 | goto never executed: goto out; out;never executed: goto out; | 0 |
1434 | } | - |
1435 | | - |
1436 | | - |
1437 | | - |
1438 | | - |
1439 | | - |
1440 | sshbuf_free(copy); | - |
1441 | if ((TRUE | never evaluated | FALSE | never evaluated |
copy = sshbuf_fromb(buf)) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1442 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1443 | ) { | - |
1444 | r = -2; | - |
1445 | goto never executed: goto out; out;never executed: goto out; | 0 |
1446 | } | - |
1447 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_consume(copy, sects_off)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1448 | goto never executed: goto out; out;never executed: goto out; | 0 |
1449 | while (sshbuf_len(copy) > 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1450 | sshbuf_free(sect); | - |
1451 | sect = | - |
1452 | ((void *)0) | - |
1453 | ; | - |
1454 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_get_u8(copy, &type)) != 0TRUE | never evaluated | FALSE | never evaluated |
|| | 0 |
1455 | (TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_froms(copy, §)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1456 | goto never executed: goto out; out;never executed: goto out; | 0 |
1457 | ; | - |
1458 | | - |
1459 | switch (type) { | - |
1460 | case never executed: case 1: 1:never executed: case 1: | 0 |
1461 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = parse_revoked_certs(sect, krl)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1462 | goto never executed: goto out; out;never executed: goto out; | 0 |
1463 | break; never executed: break; | 0 |
1464 | case never executed: case 2: 2:never executed: case 2: | 0 |
1465 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = blob_section(sect,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1466 | &krl->revoked_keys, 0)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1467 | goto never executed: goto out; out;never executed: goto out; | 0 |
1468 | break; never executed: break; | 0 |
1469 | case never executed: case 3: 3:never executed: case 3: | 0 |
1470 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = blob_section(sect,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1471 | &krl->revoked_sha1s, 20)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1472 | goto never executed: goto out; out;never executed: goto out; | 0 |
1473 | break; never executed: break; | 0 |
1474 | case never executed: case 5: 5:never executed: case 5: | 0 |
1475 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = blob_section(sect,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1476 | &krl->revoked_sha256s, 32)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1477 | goto never executed: goto out; out;never executed: goto out; | 0 |
1478 | break; never executed: break; | 0 |
1479 | case never executed: case 4: 4:never executed: case 4: | 0 |
1480 | | - |
1481 | sshbuf_free(sect); | - |
1482 | sect = | - |
1483 | ((void *)0) | - |
1484 | ; | - |
1485 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshbuf_get_string_direct(copy, TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1486 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1487 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1488 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1489 | )) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1490 | goto never executed: goto out; out;never executed: goto out; | 0 |
1491 | break; never executed: break; | 0 |
1492 | default never executed: default: :never executed: default: | 0 |
1493 | error("Unsupported KRL section %u", type); | - |
1494 | r = -4; | - |
1495 | goto never executed: goto out; out;never executed: goto out; | 0 |
1496 | } | - |
1497 | if (sect != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1498 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1499 | && sshbuf_len(sect) > 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1500 | error("KRL section contains unparsed data"); | - |
1501 | r = -4; | - |
1502 | goto never executed: goto out; out;never executed: goto out; | 0 |
1503 | } | - |
1504 | } never executed: end of block | 0 |
1505 | | - |
1506 | | - |
1507 | sig_seen = 0; | - |
1508 | for (i = 0; i < nca_usedTRUE | never evaluated | FALSE | never evaluated |
; i++) { | 0 |
1509 | if (ssh_krl_check_key(krl, ca_used[i]) == 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1510 | sig_seen = 1; never executed: sig_seen = 1; | 0 |
1511 | else { | - |
1512 | sshkey_free(ca_used[i]); | - |
1513 | ca_used[i] = | - |
1514 | ((void *)0) | - |
1515 | ; | - |
1516 | } never executed: end of block | 0 |
1517 | } | - |
1518 | if (nca_usedTRUE | never evaluated | FALSE | never evaluated |
&& !sig_seenTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1519 | error("All keys used to sign KRL were revoked"); | - |
1520 | r = -51; | - |
1521 | goto never executed: goto out; out;never executed: goto out; | 0 |
1522 | } | - |
1523 | | - |
1524 | | - |
1525 | if (sig_seenTRUE | never evaluated | FALSE | never evaluated |
&& nsign_ca_keys != 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1526 | sig_seen = 0; | - |
1527 | for (i = 0; !sig_seenTRUE | never evaluated | FALSE | never evaluated |
&& i < nsign_ca_keysTRUE | never evaluated | FALSE | never evaluated |
; i++) { | 0 |
1528 | for (j = 0; j < nca_usedTRUE | never evaluated | FALSE | never evaluated |
; j++) { | 0 |
1529 | if (ca_used[j] == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1530 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1531 | ) | - |
1532 | continue; never executed: continue; | 0 |
1533 | if (sshkey_equal(ca_used[j], sign_ca_keys[i])TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1534 | sig_seen = 1; | - |
1535 | break; never executed: break; | 0 |
1536 | } | - |
1537 | } never executed: end of block | 0 |
1538 | } never executed: end of block | 0 |
1539 | if (!sig_seenTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1540 | r = -21; | - |
1541 | error("KRL not signed with any trusted key"); | - |
1542 | goto never executed: goto out; out;never executed: goto out; | 0 |
1543 | } | - |
1544 | } never executed: end of block | 0 |
1545 | | - |
1546 | *krlp = krl; | - |
1547 | r = 0; | - |
1548 | out: code before this statement never executed: out: | 0 |
1549 | if (r != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1550 | ssh_krl_free(krl); never executed: ssh_krl_free(krl); | 0 |
1551 | for (i = 0; i < nca_usedTRUE | never evaluated | FALSE | never evaluated |
; i++) | 0 |
1552 | sshkey_free(ca_used[i]); never executed: sshkey_free(ca_used[i]); | 0 |
1553 | free(ca_used); | - |
1554 | sshkey_free(key); | - |
1555 | sshbuf_free(copy); | - |
1556 | sshbuf_free(sect); | - |
1557 | return never executed: return r; r;never executed: return r; | 0 |
1558 | } | - |
1559 | | - |
1560 | | - |
1561 | static int | - |
1562 | is_cert_revoked(const struct sshkey *key, struct revoked_certs *rc) | - |
1563 | { | - |
1564 | struct revoked_serial rs, *ers; | - |
1565 | struct revoked_key_id rki, *erki; | - |
1566 | | - |
1567 | | - |
1568 | memset(&rki, 0, sizeof(rki)); | - |
1569 | rki.key_id = key->cert->key_id; | - |
1570 | erki = revoked_key_id_tree_RB_FIND(&rc->revoked_key_ids, &rki); | - |
1571 | if (erki != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1572 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1573 | ) { | - |
1574 | ; | - |
1575 | return never executed: return -51; -51;never executed: return -51; | 0 |
1576 | } | - |
1577 | | - |
1578 | | - |
1579 | | - |
1580 | | - |
1581 | | - |
1582 | if (key->cert->serial == 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1583 | return never executed: return 0; 0;never executed: return 0; | 0 |
1584 | | - |
1585 | memset(&rs, 0, sizeof(rs)); | - |
1586 | rs.lo = rs.hi = key->cert->serial; | - |
1587 | ers = revoked_serial_tree_RB_FIND(&rc->revoked_serials, &rs); | - |
1588 | if (ers != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1589 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1590 | ) { | - |
1591 | | - |
1592 | ; | - |
1593 | return never executed: return -51; -51;never executed: return -51; | 0 |
1594 | } | - |
1595 | return never executed: return 0; 0;never executed: return 0; | 0 |
1596 | } | - |
1597 | | - |
1598 | | - |
1599 | static int | - |
1600 | is_key_revoked(struct ssh_krl *krl, const struct sshkey *key) | - |
1601 | { | - |
1602 | struct revoked_blob rb, *erb; | - |
1603 | struct revoked_certs *rc; | - |
1604 | int r; | - |
1605 | | - |
1606 | | - |
1607 | memset(&rb, 0, sizeof(rb)); | - |
1608 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshkey_fingerprint_raw(key, 1,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1609 | &rb.blob, &rb.len)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1610 | return never executed: return r; r;never executed: return r; | 0 |
1611 | erb = revoked_blob_tree_RB_FIND(&krl->revoked_sha1s, &rb); | - |
1612 | free(rb.blob); | - |
1613 | if (erb != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1614 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1615 | ) { | - |
1616 | ; | - |
1617 | return never executed: return -51; -51;never executed: return -51; | 0 |
1618 | } | - |
1619 | memset(&rb, 0, sizeof(rb)); | - |
1620 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshkey_fingerprint_raw(key, 2,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1621 | &rb.blob, &rb.len)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1622 | return never executed: return r; r;never executed: return r; | 0 |
1623 | erb = revoked_blob_tree_RB_FIND(&krl->revoked_sha256s, &rb); | - |
1624 | free(rb.blob); | - |
1625 | if (erb != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1626 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1627 | ) { | - |
1628 | ; | - |
1629 | return never executed: return -51; -51;never executed: return -51; | 0 |
1630 | } | - |
1631 | | - |
1632 | | - |
1633 | memset(&rb, 0, sizeof(rb)); | - |
1634 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = plain_key_blob(key, &rb.blob, &rb.len)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1635 | return never executed: return r; r;never executed: return r; | 0 |
1636 | erb = revoked_blob_tree_RB_FIND(&krl->revoked_keys, &rb); | - |
1637 | free(rb.blob); | - |
1638 | if (erb != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1639 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1640 | ) { | - |
1641 | ; | - |
1642 | return never executed: return -51; -51;never executed: return -51; | 0 |
1643 | } | - |
1644 | | - |
1645 | if (!sshkey_is_cert(key)TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1646 | return never executed: return 0; 0;never executed: return 0; | 0 |
1647 | | - |
1648 | | - |
1649 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = revoked_certs_for_ca_key(krl, key->cert->signature_key,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1650 | &rc, 0)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1651 | return never executed: return r; r;never executed: return r; | 0 |
1652 | if (rc != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1653 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1654 | ) { | - |
1655 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = is_cert_revoked(key, rc)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1656 | return never executed: return r; r;never executed: return r; | 0 |
1657 | } never executed: end of block | 0 |
1658 | | - |
1659 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = revoked_certs_for_ca_key(krl, TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1660 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1661 | , &rc, 0)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1662 | return never executed: return r; r;never executed: return r; | 0 |
1663 | if (rc != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1664 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1665 | ) { | - |
1666 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = is_cert_revoked(key, rc)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1667 | return never executed: return r; r;never executed: return r; | 0 |
1668 | } never executed: end of block | 0 |
1669 | | - |
1670 | ; | - |
1671 | return never executed: return 0; 0;never executed: return 0; | 0 |
1672 | } | - |
1673 | | - |
1674 | int | - |
1675 | ssh_krl_check_key(struct ssh_krl *krl, const struct sshkey *key) | - |
1676 | { | - |
1677 | int r; | - |
1678 | | - |
1679 | ; | - |
1680 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = is_key_revoked(krl, key)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1681 | return never executed: return r; r;never executed: return r; | 0 |
1682 | if (sshkey_is_cert(key)TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1683 | debug2("%s: checking CA key", __func__); | - |
1684 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = is_key_revoked(krl, key->cert->signature_key)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1685 | return never executed: return r; r;never executed: return r; | 0 |
1686 | } never executed: end of block | 0 |
1687 | ; | - |
1688 | return never executed: return 0; 0;never executed: return 0; | 0 |
1689 | } | - |
1690 | | - |
1691 | int | - |
1692 | ssh_krl_file_contains_key(const char *path, const struct sshkey *key) | - |
1693 | { | - |
1694 | struct sshbuf *krlbuf = | - |
1695 | ((void *)0) | - |
1696 | ; | - |
1697 | struct ssh_krl *krl = | - |
1698 | ((void *)0) | - |
1699 | ; | - |
1700 | int oerrno = 0, r, fd; | - |
1701 | | - |
1702 | if (path == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1703 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1704 | ) | - |
1705 | return never executed: return 0; 0;never executed: return 0; | 0 |
1706 | | - |
1707 | if ((TRUE | never evaluated | FALSE | never evaluated |
krlbuf = sshbuf_new()) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1708 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1709 | ) | - |
1710 | return never executed: return -2; -2;never executed: return -2; | 0 |
1711 | if ((TRUE | never evaluated | FALSE | never evaluated |
fd = open(path, TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1712 | 00TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1713 | )) == -1TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1714 | r = -24; | - |
1715 | oerrno = | - |
1716 | (*__errno_location ()) | - |
1717 | ; | - |
1718 | goto never executed: goto out; out;never executed: goto out; | 0 |
1719 | } | - |
1720 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = sshkey_load_file(fd, krlbuf)) != 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1721 | oerrno = | - |
1722 | (*__errno_location ()) | - |
1723 | ; | - |
1724 | goto never executed: goto out; out;never executed: goto out; | 0 |
1725 | } | - |
1726 | if ((TRUE | never evaluated | FALSE | never evaluated |
r = ssh_krl_from_blob(krlbuf, &krl, TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1727 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1728 | , 0)) != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1729 | goto never executed: goto out; out;never executed: goto out; | 0 |
1730 | debug2("%s: checking KRL %s", __func__, path); | - |
1731 | r = ssh_krl_check_key(krl, key); | - |
1732 | out: code before this statement never executed: out: | 0 |
1733 | if (fd != -1TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1734 | close(fd); never executed: close(fd); | 0 |
1735 | sshbuf_free(krlbuf); | - |
1736 | ssh_krl_free(krl); | - |
1737 | if (r != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1738 | | - |
1739 | (* never executed: (*__errno_location ()) = oerrno; __errno_location ()) never executed: (*__errno_location ()) = oerrno; | 0 |
1740 | = oerrno; never executed: (*__errno_location ()) = oerrno; | 0 |
1741 | return never executed: return r; r;never executed: return r; | 0 |
1742 | } | - |
| | |