| 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 == 1| TRUE | never evaluated | | FALSE | never evaluated |
) { gparent = (parent)->tree_entry.rbe_parent; if (parent == (gparent)->tree_entry.rbe_left| TRUE | never evaluated | | FALSE | never evaluated |
) { tmp = (gparent)->tree_entry.rbe_right; if (tmp| TRUE | never evaluated | | FALSE | never evaluated |
&& (| TRUE | never evaluated | | FALSE | never evaluated |
tmp)->tree_entry.rbe_color == 1| TRUE | 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 == elm| TRUE | 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_left| TRUE | 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_left| TRUE | 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 (tmp| TRUE | never evaluated | | FALSE | never evaluated |
&& (| TRUE | never evaluated | | FALSE | never evaluated |
tmp)->tree_entry.rbe_color == 1| TRUE | 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 == elm| TRUE | 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_left| TRUE | 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_left| TRUE | 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 == 0| TRUE | never evaluated | | FALSE | never evaluated |
) && elm != (head)->rbh_root| TRUE | never evaluated | | FALSE | never evaluated |
) { if ((| TRUE | never evaluated | | FALSE | never evaluated |
parent)->tree_entry.rbe_left == elm| TRUE | never evaluated | | FALSE | never evaluated |
) { tmp = (parent)->tree_entry.rbe_right; if ((| TRUE | never evaluated | | FALSE | never evaluated |
tmp)->tree_entry.rbe_color == 1| TRUE | 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_left| TRUE | 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 == 0| TRUE | 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 == 0| TRUE | 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 == 0| TRUE | 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_left| TRUE | 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_right| TRUE | 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_left| TRUE | 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 == 1| TRUE | 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_left| TRUE | 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 == 0| TRUE | 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 == 0| TRUE | 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 == 0| TRUE | 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_left| TRUE | 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_left| TRUE | 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_left| TRUE | 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 (elm| TRUE | 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 (child| TRUE | 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 (parent| TRUE | never evaluated | | FALSE | never evaluated |
) { if ((| TRUE | never evaluated | | FALSE | never evaluated |
parent)->tree_entry.rbe_left == elm| TRUE | 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 == old| TRUE | 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_parent| TRUE | never evaluated | | FALSE | never evaluated |
) { if (((| TRUE | never evaluated | | FALSE | never evaluated |
old)->tree_entry.rbe_parent)->tree_entry.rbe_left == old| TRUE | 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_right| TRUE | 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 (parent| TRUE | 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 (child| TRUE | 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 (parent| TRUE | never evaluated | | FALSE | never evaluated |
) { if ((| TRUE | never evaluated | | FALSE | never evaluated |
parent)->tree_entry.rbe_left == elm| TRUE | 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 == 0| TRUE | 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 (tmp| TRUE | never evaluated | | FALSE | never evaluated |
) { parent = tmp; comp = (serial_cmp)(elm, parent); if (comp < 0| TRUE | never evaluated | | FALSE | never evaluated |
) tmp = (tmp)->tree_entry.rbe_left;never executed: tmp = (tmp)->tree_entry.rbe_left; else if (comp > 0| TRUE | 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 < 0| TRUE | 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 (tmp| TRUE | never evaluated | | FALSE | never evaluated |
) { comp = serial_cmp(elm, tmp); if (comp < 0| TRUE | never evaluated | | FALSE | never evaluated |
) tmp = (tmp)->tree_entry.rbe_left;never executed: tmp = (tmp)->tree_entry.rbe_left; else if (comp > 0| TRUE | 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 (tmp| TRUE | never evaluated | | FALSE | never evaluated |
) { comp = serial_cmp(elm, tmp); if (comp < 0| TRUE | never evaluated | | FALSE | never evaluated |
) { res = tmp; tmp = (tmp)->tree_entry.rbe_left; }never executed: end of block else if (comp > 0| TRUE | 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_right| TRUE | never evaluated | | FALSE | never evaluated |
) { elm = (elm)->tree_entry.rbe_right; while ((| TRUE | never evaluated | | FALSE | never evaluated |
elm)->tree_entry.rbe_left| TRUE | 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_parent| TRUE | 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_parent| TRUE | 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_left| TRUE | never evaluated | | FALSE | never evaluated |
) { elm = (elm)->tree_entry.rbe_left; while ((| TRUE | never evaluated | | FALSE | never evaluated |
elm)->tree_entry.rbe_right| TRUE | 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_parent| TRUE | 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_parent| TRUE | 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 (tmp| TRUE | never evaluated | | FALSE | never evaluated |
) { parent = tmp; if (val < 0| TRUE | 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 == 1| TRUE | never evaluated | | FALSE | never evaluated |
) { gparent = (parent)->tree_entry.rbe_parent; if (parent == (gparent)->tree_entry.rbe_left| TRUE | never evaluated | | FALSE | never evaluated |
) { tmp = (gparent)->tree_entry.rbe_right; if (tmp| TRUE | never evaluated | | FALSE | never evaluated |
&& (| TRUE | never evaluated | | FALSE | never evaluated |
tmp)->tree_entry.rbe_color == 1| TRUE | 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 == elm| TRUE | 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_left| TRUE | 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_left| TRUE | 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 (tmp| TRUE | never evaluated | | FALSE | never evaluated |
&& (| TRUE | never evaluated | | FALSE | never evaluated |
tmp)->tree_entry.rbe_color == 1| TRUE | 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 == elm| TRUE | 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_left| TRUE | 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_left| TRUE | 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 == 0| TRUE | never evaluated | | FALSE | never evaluated |
) && elm != (head)->rbh_root| TRUE | never evaluated | | FALSE | never evaluated |
) { if ((| TRUE | never evaluated | | FALSE | never evaluated |
parent)->tree_entry.rbe_left == elm| TRUE | never evaluated | | FALSE | never evaluated |
) { tmp = (parent)->tree_entry.rbe_right; if ((| TRUE | never evaluated | | FALSE | never evaluated |
tmp)->tree_entry.rbe_color == 1| TRUE | 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_left| TRUE | 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 == 0| TRUE | 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 == 0| TRUE | 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 == 0| TRUE | 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_left| TRUE | 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_right| TRUE | 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_left| TRUE | 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 == 1| TRUE | 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_left| TRUE | 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 == 0| TRUE | 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 == 0| TRUE | 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 == 0| TRUE | 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_left| TRUE | 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_left| TRUE | 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_left| TRUE | 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 (elm| TRUE | 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 (child| TRUE | 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 (parent| TRUE | never evaluated | | FALSE | never evaluated |
) { if ((| TRUE | never evaluated | | FALSE | never evaluated |
parent)->tree_entry.rbe_left == elm| TRUE | 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 == old| TRUE | 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_parent| TRUE | never evaluated | | FALSE | never evaluated |
) { if (((| TRUE | never evaluated | | FALSE | never evaluated |
old)->tree_entry.rbe_parent)->tree_entry.rbe_left == old| TRUE | 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_right| TRUE | 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 (parent| TRUE | 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 (child| TRUE | 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 (parent| TRUE | never evaluated | | FALSE | never evaluated |
) { if ((| TRUE | never evaluated | | FALSE | never evaluated |
parent)->tree_entry.rbe_left == elm| TRUE | 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 == 0| TRUE | 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 (tmp| TRUE | never evaluated | | FALSE | never evaluated |
) { parent = tmp; comp = (key_id_cmp)(elm, parent); if (comp < 0| TRUE | never evaluated | | FALSE | never evaluated |
) tmp = (tmp)->tree_entry.rbe_left;never executed: tmp = (tmp)->tree_entry.rbe_left; else if (comp > 0| TRUE | 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 < 0| TRUE | 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 (tmp| TRUE | never evaluated | | FALSE | never evaluated |
) { comp = key_id_cmp(elm, tmp); if (comp < 0| TRUE | never evaluated | | FALSE | never evaluated |
) tmp = (tmp)->tree_entry.rbe_left;never executed: tmp = (tmp)->tree_entry.rbe_left; else if (comp > 0| TRUE | 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 (tmp| TRUE | never evaluated | | FALSE | never evaluated |
) { comp = key_id_cmp(elm, tmp); if (comp < 0| TRUE | never evaluated | | FALSE | never evaluated |
) { res = tmp; tmp = (tmp)->tree_entry.rbe_left; }never executed: end of block else if (comp > 0| TRUE | 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_right| TRUE | never evaluated | | FALSE | never evaluated |
) { elm = (elm)->tree_entry.rbe_right; while ((| TRUE | never evaluated | | FALSE | never evaluated |
elm)->tree_entry.rbe_left| TRUE | 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_parent| TRUE | 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_parent| TRUE | 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_left| TRUE | never evaluated | | FALSE | never evaluated |
) { elm = (elm)->tree_entry.rbe_left; while ((| TRUE | never evaluated | | FALSE | never evaluated |
elm)->tree_entry.rbe_right| TRUE | 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_parent| TRUE | 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_parent| TRUE | 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 (tmp| TRUE | never evaluated | | FALSE | never evaluated |
) { parent = tmp; if (val < 0| TRUE | 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 == 1| TRUE | never evaluated | | FALSE | never evaluated |
) { gparent = (parent)->tree_entry.rbe_parent; if (parent == (gparent)->tree_entry.rbe_left| TRUE | never evaluated | | FALSE | never evaluated |
) { tmp = (gparent)->tree_entry.rbe_right; if (tmp| TRUE | never evaluated | | FALSE | never evaluated |
&& (| TRUE | never evaluated | | FALSE | never evaluated |
tmp)->tree_entry.rbe_color == 1| TRUE | 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 == elm| TRUE | 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_left| TRUE | 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_left| TRUE | 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 (tmp| TRUE | never evaluated | | FALSE | never evaluated |
&& (| TRUE | never evaluated | | FALSE | never evaluated |
tmp)->tree_entry.rbe_color == 1| TRUE | 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 == elm| TRUE | 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_left| TRUE | 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_left| TRUE | 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 == 0| TRUE | never evaluated | | FALSE | never evaluated |
) && elm != (head)->rbh_root| TRUE | never evaluated | | FALSE | never evaluated |
) { if ((| TRUE | never evaluated | | FALSE | never evaluated |
parent)->tree_entry.rbe_left == elm| TRUE | never evaluated | | FALSE | never evaluated |
) { tmp = (parent)->tree_entry.rbe_right; if ((| TRUE | never evaluated | | FALSE | never evaluated |
tmp)->tree_entry.rbe_color == 1| TRUE | 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_left| TRUE | 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 == 0| TRUE | 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 == 0| TRUE | 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 == 0| TRUE | 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_left| TRUE | 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_right| TRUE | 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_left| TRUE | 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 == 1| TRUE | 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_left| TRUE | 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 == 0| TRUE | 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 == 0| TRUE | 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 == 0| TRUE | 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_left| TRUE | 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_left| TRUE | 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_left| TRUE | 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 (elm| TRUE | 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 (child| TRUE | 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 (parent| TRUE | never evaluated | | FALSE | never evaluated |
) { if ((| TRUE | never evaluated | | FALSE | never evaluated |
parent)->tree_entry.rbe_left == elm| TRUE | 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 == old| TRUE | 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_parent| TRUE | never evaluated | | FALSE | never evaluated |
) { if (((| TRUE | never evaluated | | FALSE | never evaluated |
old)->tree_entry.rbe_parent)->tree_entry.rbe_left == old| TRUE | 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_right| TRUE | 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 (parent| TRUE | 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 (child| TRUE | 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 (parent| TRUE | never evaluated | | FALSE | never evaluated |
) { if ((| TRUE | never evaluated | | FALSE | never evaluated |
parent)->tree_entry.rbe_left == elm| TRUE | 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 == 0| TRUE | 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 (tmp| TRUE | never evaluated | | FALSE | never evaluated |
) { parent = tmp; comp = (blob_cmp)(elm, parent); if (comp < 0| TRUE | never evaluated | | FALSE | never evaluated |
) tmp = (tmp)->tree_entry.rbe_left;never executed: tmp = (tmp)->tree_entry.rbe_left; else if (comp > 0| TRUE | 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 < 0| TRUE | 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 (tmp| TRUE | never evaluated | | FALSE | never evaluated |
) { comp = blob_cmp(elm, tmp); if (comp < 0| TRUE | never evaluated | | FALSE | never evaluated |
) tmp = (tmp)->tree_entry.rbe_left;never executed: tmp = (tmp)->tree_entry.rbe_left; else if (comp > 0| TRUE | 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 (tmp| TRUE | never evaluated | | FALSE | never evaluated |
) { comp = blob_cmp(elm, tmp); if (comp < 0| TRUE | never evaluated | | FALSE | never evaluated |
) { res = tmp; tmp = (tmp)->tree_entry.rbe_left; }never executed: end of block else if (comp > 0| TRUE | 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_right| TRUE | never evaluated | | FALSE | never evaluated |
) { elm = (elm)->tree_entry.rbe_right; while ((| TRUE | never evaluated | | FALSE | never evaluated |
elm)->tree_entry.rbe_left| TRUE | 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_parent| TRUE | 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_parent| TRUE | 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_left| TRUE | never evaluated | | FALSE | never evaluated |
) { elm = (elm)->tree_entry.rbe_left; while ((| TRUE | never evaluated | | FALSE | never evaluated |
elm)->tree_entry.rbe_right| TRUE | 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_parent| TRUE | 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_parent| TRUE | 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 (tmp| TRUE | never evaluated | | FALSE | never evaluated |
) { parent = tmp; if (val < 0| TRUE | 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->lo| TRUE | never evaluated | | FALSE | never evaluated |
&& a->lo <= b->hi| TRUE | 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->lo| TRUE | 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 > 0| TRUE | never evaluated | | FALSE | never evaluated |
&& __result == 0| TRUE | 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 > 1| TRUE | never evaluated | | FALSE | never evaluated |
&& __result == 0| TRUE | 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 > 2| TRUE | never evaluated | | FALSE | never evaluated |
&& __result == 0| TRUE | 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 > 0| TRUE | never evaluated | | FALSE | never evaluated |
&& __result == 0| TRUE | 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 > 1| TRUE | never evaluated | | FALSE | never evaluated |
&& __result == 0| TRUE | 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 > 2| TRUE | never evaluated | | FALSE | never evaluated |
&& __result == 0| TRUE | 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->len| TRUE | 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)))) != 0| TRUE | 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->len| TRUE | 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 | comment| TRUE | 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 | comment| TRUE | 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 | comment| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 367 | ) == 1)| TRUE | never evaluated | | FALSE | never evaluated |
? (((const| TRUE | never evaluated | | FALSE | never evaluated |
char *) (| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 368 | comment| TRUE | 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 | comment| TRUE | 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 | comment| TRUE | 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 | comment| TRUE | 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_create| TRUE | 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)) != 0| TRUE | 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) != 0| TRUE | 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 > lo| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 479 | ers->lo = lo; never executed: ers->lo = lo; | 0 |
| 480 | if (ers->hi < hi| TRUE | 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 != 0| TRUE | never evaluated | | FALSE | never evaluated |
&& crs->hi < ers->lo - 1| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 495 | break; never executed: break; | 0 |
| 496 | | - |
| 497 | if (crs->lo < ers->lo| TRUE | 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)-1| TRUE | never evaluated | | FALSE | never evaluated |
&& crs->lo > ers->hi + 1| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 511 | break; never executed: break; | 0 |
| 512 | | - |
| 513 | if (crs->hi > ers->hi| TRUE | 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 > hi| TRUE | never evaluated | | FALSE | never evaluated |
|| lo == 0| TRUE | 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)) != 0| TRUE | 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)) != 0| TRUE | 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_id| TRUE | 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_id| TRUE | 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_id| TRUE | 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_id| TRUE | 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_id| TRUE | 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_id| TRUE | 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_id| TRUE | 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)) != 0| TRUE | 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)) != 0| TRUE | 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)) != 0| TRUE | 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)) != 0| TRUE | 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 != 20| TRUE | 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 != 32| TRUE | 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 == 0| TRUE | 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 + (final| TRUE | never evaluated | | FALSE | never evaluated |
? 0 : 8+64); | 0 |
| 740 | cost_range += (2 * 64) + (final| TRUE | never evaluated | | FALSE | never evaluated |
? 0 : 8+64); | 0 |
| 741 | cost_bitmap += last_gap + contig + (final| TRUE | 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 + (final| TRUE | 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 < cost| TRUE | 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 < cost| TRUE | 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 < cost| TRUE | 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) != 0| TRUE | 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)) != 0| TRUE | 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)) != 0| TRUE | 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)) != 0| TRUE | 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 != 0| TRUE | never evaluated | | FALSE | never evaluated |
&& (force_new_sect| TRUE | never evaluated | | FALSE | never evaluated |
|| next_state != state| TRUE | never evaluated | | FALSE | never evaluated |
|| | 0 |
| 864 | state == 0x21| TRUE | 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)) != 0| TRUE | 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)) != 0| TRUE | never evaluated | | FALSE | never evaluated |
|| | 0 |
| 880 | (| TRUE | never evaluated | | FALSE | never evaluated |
r = sshbuf_put_stringb(buf, sect)) != 0| TRUE | 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 != state| TRUE | never evaluated | | FALSE | never evaluated |
|| force_new_sect| TRUE | 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)) != 0| TRUE | 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 < contig| TRUE | never evaluated | | FALSE | never evaluated |
; i++) { | 0 |
| 914 | if ((| TRUE | never evaluated | | FALSE | never evaluated |
r = sshbuf_put_u64(sect, rs->lo + i)) != 0| TRUE | 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)) != 0| TRUE | never evaluated | | FALSE | never evaluated |
|| | 0 |
| 920 | (| TRUE | never evaluated | | FALSE | never evaluated |
r = sshbuf_put_u64(sect, rs->hi)) != 0| TRUE | 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 > 0x7fffffff| TRUE | 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 < contig| TRUE | 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) != 0| TRUE | 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 != 0| TRUE | 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)) != 0| TRUE | 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)) != 0| TRUE | never evaluated | | FALSE | never evaluated |
|| | 0 |
| 957 | (| TRUE | never evaluated | | FALSE | never evaluated |
r = sshbuf_put_stringb(buf, sect)) != 0| TRUE | 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)) != 0| TRUE | 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) != 0| TRUE | never evaluated | | FALSE | never evaluated |
) { | 0 |
| 972 | if ((| TRUE | never evaluated | | FALSE | never evaluated |
r = sshbuf_put_u8(buf, 0x23)) != 0| TRUE | never evaluated | | FALSE | never evaluated |
|| | 0 |
| 973 | (| TRUE | never evaluated | | FALSE | never evaluated |
r = sshbuf_put_stringb(buf, sect)) != 0| TRUE | 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 == 0| TRUE | 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)) != 0| TRUE | never evaluated | | FALSE | never evaluated |
|| | 0 |
| 1008 | (| TRUE | never evaluated | | FALSE | never evaluated |
r = sshbuf_put_u32(buf, 1)) != 0| TRUE | never evaluated | | FALSE | never evaluated |
|| | 0 |
| 1009 | (| TRUE | never evaluated | | FALSE | never evaluated |
r = sshbuf_put_u64(buf, krl->krl_version)) != 0| TRUE | never evaluated | | FALSE | never evaluated |
|| | 0 |
| 1010 | (| TRUE | never evaluated | | FALSE | never evaluated |
r = sshbuf_put_u64(buf, krl->generated_date)) != 0| TRUE | never evaluated | | FALSE | never evaluated |
|| | 0 |
| 1011 | (| TRUE | never evaluated | | FALSE | never evaluated |
r = sshbuf_put_u64(buf, krl->flags)) != 0| TRUE | 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)) != 0| TRUE | never evaluated | | FALSE | never evaluated |
|| | 0 |
| 1015 | (| TRUE | never evaluated | | FALSE | never evaluated |
r = sshbuf_put_cstring(buf, krl->comment)) != 0| TRUE | 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)) != 0| TRUE | 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)) != 0| TRUE | never evaluated | | FALSE | never evaluated |
|| | 0 |
| 1026 | (| TRUE | never evaluated | | FALSE | never evaluated |
r = sshbuf_put_stringb(buf, sect)) != 0| TRUE | 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)) != 0| TRUE | 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) != 0| TRUE | never evaluated | | FALSE | never evaluated |
) { | 0 |
| 1040 | if ((| TRUE | never evaluated | | FALSE | never evaluated |
r = sshbuf_put_u8(buf, 2)) != 0| TRUE | never evaluated | | FALSE | never evaluated |
|| | 0 |
| 1041 | (| TRUE | never evaluated | | FALSE | never evaluated |
r = sshbuf_put_stringb(buf, sect)) != 0| TRUE | 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)) != 0| TRUE | 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) != 0| TRUE | 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)) != 0| TRUE | never evaluated | | FALSE | never evaluated |
|| | 0 |
| 1055 | (| TRUE | never evaluated | | FALSE | never evaluated |
r = sshbuf_put_stringb(buf, sect)) != 0| TRUE | 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)) != 0| TRUE | 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) != 0| TRUE | 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)) != 0| TRUE | never evaluated | | FALSE | never evaluated |
|| | 0 |
| 1069 | (| TRUE | never evaluated | | FALSE | never evaluated |
r = sshbuf_put_stringb(buf, sect)) != 0| TRUE | 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_keys| TRUE | never evaluated | | FALSE | never evaluated |
; i++) { | 0 |
| 1074 | | - |
| 1075 | ; | - |
| 1076 | if ((| TRUE | never evaluated | | FALSE | never evaluated |
r = sshbuf_put_u8(buf, 4)) != 0| TRUE | never evaluated | | FALSE | never evaluated |
|| | 0 |
| 1077 | (| TRUE | never evaluated | | FALSE | never evaluated |
r = sshkey_puts(sign_keys[i], buf)) != 0| TRUE | 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)) != 0| TRUE | 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)) != 0| TRUE | 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)) != 0| TRUE | 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 | )) != 0| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 1148 | goto never executed: goto out; out;never executed: goto out; | 0 |
| 1149 | if (blen != 0| TRUE | never evaluated | | FALSE | never evaluated |
&& (| TRUE | never evaluated | | FALSE | never evaluated |
r = sshkey_from_blob(blob, blen, &ca_key)) != 0| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 1150 | goto never executed: goto out; out;never executed: goto out; | 0 |
| 1151 | | - |
| 1152 | while (sshbuf_len(buf) > 0| TRUE | 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)) != 0| TRUE | never evaluated | | FALSE | never evaluated |
|| | 0 |
| 1158 | (| TRUE | never evaluated | | FALSE | never evaluated |
r = sshbuf_froms(buf, &subsect)) != 0| TRUE | 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) > 0| TRUE | never evaluated | | FALSE | never evaluated |
) { | 0 |
| 1166 | if ((| TRUE | never evaluated | | FALSE | never evaluated |
r = sshbuf_get_u64(subsect, &serial)) != 0| TRUE | 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)) != 0| TRUE | 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)) != 0| TRUE | never evaluated | | FALSE | never evaluated |
|| | 0 |
| 1175 | (| TRUE | never evaluated | | FALSE | never evaluated |
r = sshbuf_get_u64(subsect, &serial_hi)) != 0| TRUE | 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)) != 0| TRUE | 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)) != 0| TRUE | 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)) != 0| TRUE | 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) != 0| TRUE | 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)nbits| TRUE | never evaluated | | FALSE | never evaluated |
; serial++) { | 0 |
| 1198 | if (serial > 0| TRUE | never evaluated | | FALSE | never evaluated |
&& serial_lo + serial == 0| TRUE | 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)) != 0| TRUE | 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) > 0| TRUE | 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 | )) != 0| TRUE | 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)) != 0| TRUE | 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) > 0| TRUE | 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) > 0| TRUE | never evaluated | | FALSE | never evaluated |
) { | 0 |
| 1265 | if ((| TRUE | never evaluated | | FALSE | never evaluated |
r = sshbuf_get_string(sect, &rdata, &rlen)) != 0| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 1266 | return never executed: return r; r;never executed: return r; | 0 |
| 1267 | if (expected_len != 0| TRUE | never evaluated | | FALSE | never evaluated |
&& rlen != expected_len| TRUE | 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)) != 0| TRUE | 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") - 1| TRUE | never evaluated | | FALSE | never evaluated |
|| | 0 |
| 1310 | memcmp(sshbuf_ptr(buf), "SSHKRL\n\0", sizeof("SSHKRL\n\0") - 1) != 0| TRUE | 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)) != 0| TRUE | 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)) != 0| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 1333 | goto never executed: goto out; out;never executed: goto out; | 0 |
| 1334 | if (format_version != 1| TRUE | 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)) != 0| TRUE | never evaluated | | FALSE | never evaluated |
|| | 0 |
| 1339 | (| TRUE | never evaluated | | FALSE | never evaluated |
r = sshbuf_get_u64(copy, &krl->generated_date)) != 0| TRUE | never evaluated | | FALSE | never evaluated |
|| | 0 |
| 1340 | (| TRUE | never evaluated | | FALSE | never evaluated |
r = sshbuf_get_u64(copy, &krl->flags)) != 0| TRUE | 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 | )) != 0| TRUE | 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 | )) != 0| TRUE | 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) > 0| TRUE | never evaluated | | FALSE | never evaluated |
) { | 0 |
| 1368 | if ((| TRUE | never evaluated | | FALSE | never evaluated |
r = sshbuf_get_u8(copy, &type)) != 0| TRUE | never evaluated | | FALSE | never evaluated |
|| | 0 |
| 1369 | (| TRUE | never evaluated | | FALSE | never evaluated |
r = sshbuf_get_string_direct(copy, &blob, &blen)) != 0| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 1370 | goto never executed: goto out; out;never executed: goto out; | 0 |
| 1371 | ; | - |
| 1372 | if (type != 4| TRUE | never evaluated | | FALSE | never evaluated |
) { | 0 |
| 1373 | if (sig_seen| TRUE | 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)) != 0| TRUE | 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)) != 0| TRUE | 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)) != 0| TRUE | 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_used| TRUE | 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) != 0| TRUE | 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)) != 0| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 1448 | goto never executed: goto out; out;never executed: goto out; | 0 |
| 1449 | while (sshbuf_len(copy) > 0| TRUE | 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)) != 0| TRUE | never evaluated | | FALSE | never evaluated |
|| | 0 |
| 1455 | (| TRUE | never evaluated | | FALSE | never evaluated |
r = sshbuf_froms(copy, §)) != 0| TRUE | 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)) != 0| TRUE | 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)) != 0| TRUE | 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)) != 0| TRUE | 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)) != 0| TRUE | 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 | )) != 0| TRUE | 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) > 0| TRUE | 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_used| TRUE | never evaluated | | FALSE | never evaluated |
; i++) { | 0 |
| 1509 | if (ssh_krl_check_key(krl, ca_used[i]) == 0| TRUE | 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_used| TRUE | never evaluated | | FALSE | never evaluated |
&& !sig_seen| TRUE | 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_seen| TRUE | never evaluated | | FALSE | never evaluated |
&& nsign_ca_keys != 0| TRUE | never evaluated | | FALSE | never evaluated |
) { | 0 |
| 1526 | sig_seen = 0; | - |
| 1527 | for (i = 0; !sig_seen| TRUE | never evaluated | | FALSE | never evaluated |
&& i < nsign_ca_keys| TRUE | never evaluated | | FALSE | never evaluated |
; i++) { | 0 |
| 1528 | for (j = 0; j < nca_used| TRUE | 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_seen| TRUE | 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 != 0| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 1550 | ssh_krl_free(krl); never executed: ssh_krl_free(krl); | 0 |
| 1551 | for (i = 0; i < nca_used| TRUE | 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 == 0| TRUE | 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)) != 0| TRUE | 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)) != 0| TRUE | 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)) != 0| TRUE | 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)) != 0| TRUE | 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)) != 0| TRUE | 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)) != 0| TRUE | 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)) != 0| TRUE | 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)) != 0| TRUE | 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)) != 0| TRUE | 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 | 00| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 1713 | )) == -1| TRUE | 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)) != 0| TRUE | 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)) != 0| TRUE | 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 != -1| TRUE | 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 != 0| TRUE | 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 | } | - |
| | |