diff options
author | David Timber <mieabby@gmail.com> | 2020-09-17 19:00:28 +0930 |
---|---|---|
committer | David Timber <mieabby@gmail.com> | 2020-09-17 19:00:28 +0930 |
commit | e6953dcb47193746a4f4d9fff0193723fadbb3e6 (patch) | |
tree | b6fe802c3faf48ec7e294fa61207b4e9126fc3c1 | |
parent | b54ace5cd8a873be804529f7b8221ee62600d17d (diff) |
* Change value types of containers to uintptr_t
* htbt: fix leak in `htbt_main_q_hover()`
* proone-recon: fix parse bug
-rw-r--r-- | src/htbt.c | 19 | ||||
-rw-r--r-- | src/imap.c | 10 | ||||
-rw-r--r-- | src/imap.h | 5 | ||||
-rw-r--r-- | src/iset.h | 2 | ||||
-rw-r--r-- | src/llist.c | 4 | ||||
-rw-r--r-- | src/llist.h | 7 | ||||
-rw-r--r-- | src/proone-mkdvault.c | 2 | ||||
-rw-r--r-- | src/proone-recon.c | 8 | ||||
-rw-r--r-- | src/proone-resolv.c | 4 | ||||
-rw-r--r-- | src/recon.c | 6 | ||||
-rw-r--r-- | src/resolv.c | 22 | ||||
-rw-r--r-- | src/strmap.c | 9 | ||||
-rw-r--r-- | src/strmap.h | 5 |
13 files changed, 59 insertions, 44 deletions
@@ -159,7 +159,10 @@ static bool htbt_main_q_req_slip (prne_htbt_t *ctx, htbt_req_slip_t *in) { htbt_init_req_slip(ny_slip); prne_dbgtrap(pth_mutex_acquire(&ctx->main.lock, FALSE, NULL)); - alloc = prne_llist_append(&ctx->main.req_q, ny_slip) != NULL; + alloc = + prne_llist_append( + &ctx->main.req_q, + (prne_llist_element_t)ny_slip) != NULL; if (alloc) { prne_dbgtrap(pth_cond_notify(&ctx->main.cond, FALSE)); } @@ -217,7 +220,7 @@ static bool htbt_main_q_hover ( body->parent = ctx; if (trace == NULL) { prne_dbgtrap(pth_mutex_acquire(&ctx->main.lock, FALSE, NULL)); - ny_trace = prne_llist_append(&ctx->main.hover_req, (void*)1); + ny_trace = prne_llist_append(&ctx->main.hover_req, 1); pth_mutex_release(&ctx->main.lock); if (ny_trace == NULL) { goto END; @@ -240,7 +243,7 @@ static bool htbt_main_q_hover ( END: if (ny_trace != NULL) { prne_dbgtrap(pth_mutex_acquire(&ctx->main.lock, FALSE, NULL)); - prne_llist_append(&ctx->main.hover_req, ny_trace); + prne_llist_erase(&ctx->main.hover_req, ny_trace); pth_mutex_release(&ctx->main.lock); } htbt_free_req_slip(&slip); @@ -1620,15 +1623,13 @@ static void htbt_main_slv_hover_f ( htbt_main_client_t *ctx = (htbt_main_client_t*)ioctx; if (ctx->hv_trace != NULL) { - const uintptr_t cur = (uintptr_t)ctx->hv_trace->element; - - if (cur >= HTBT_HOVER_MAX_REDIR) { + if (ctx->hv_trace->element >= HTBT_HOVER_MAX_REDIR) { *status = PRNE_HTBT_STATUS_LIMIT; *err = 0; return; } else { - ctx->hv_trace->element = (void*)(cur + 1); + ctx->hv_trace->element += 1; ctx->hv_used = true; } } @@ -2375,7 +2376,9 @@ static void htbt_lbd_serve_loop (prne_htbt_t *ctx) { goto CATCH; } - ent = prne_llist_append(&ctx->lbd.conn_list, client); + ent = prne_llist_append( + &ctx->lbd.conn_list, + (prne_llist_element_t)client); if (ent == NULL) { goto CATCH; } @@ -27,10 +27,10 @@ void prne_free_imap (prne_imap_t *im) { void prne_imap_clear (prne_imap_t *im) { prne_free(im->tbl); im->tbl = NULL; - im->size = 0; + im->size = 0; } -const prne_imap_tuple_t *prne_imap_insert (prne_imap_t *im, const prne_imap_key_type_t key, void *val) { +const prne_imap_tuple_t *prne_imap_insert (prne_imap_t *im, const prne_imap_key_type_t key, const prne_imap_val_type_t val) { prne_imap_tuple_t *ret; prne_imap_tuple_t t; @@ -64,7 +64,7 @@ void prne_imap_erase (prne_imap_t *im, const prne_imap_key_type_t key) { prne_imap_tuple_t t; t.key = key; - t.val = NULL; + t.val = 0; ext = bsearch(&t, im->tbl, im->size, sizeof(prne_imap_tuple_t), imap_cmp_func); if (ext != NULL) { @@ -90,7 +90,7 @@ const prne_imap_tuple_t *prne_imap_lookup (prne_imap_t *im, const prne_imap_key_ prne_imap_tuple_t t; t.key = key; - t.val = NULL; - + t.val = 0; + return (const prne_imap_tuple_t*)bsearch(&t, im->tbl, im->size, sizeof(prne_imap_tuple_t), imap_cmp_func); } @@ -7,6 +7,7 @@ struct prne_imap; struct prne_imap_tuple; typedef uintptr_t prne_imap_key_type_t; +typedef uintptr_t prne_imap_val_type_t; typedef struct prne_imap prne_imap_t; typedef struct prne_imap_tuple prne_imap_tuple_t; @@ -17,7 +18,7 @@ struct prne_imap { struct prne_imap_tuple { prne_imap_key_type_t key; - void *val; + prne_imap_val_type_t val; }; @@ -25,6 +26,6 @@ void prne_init_imap (prne_imap_t *im); void prne_free_imap (prne_imap_t *im); void prne_imap_clear (prne_imap_t *im); -const prne_imap_tuple_t *prne_imap_insert (prne_imap_t *im, const prne_imap_key_type_t key, void *val); +const prne_imap_tuple_t *prne_imap_insert (prne_imap_t *im, const prne_imap_key_type_t key, const prne_imap_val_type_t val); void prne_imap_erase (prne_imap_t *im, const prne_imap_key_type_t key); const prne_imap_tuple_t *prne_imap_lookup (prne_imap_t *im, const prne_imap_key_type_t key); @@ -5,7 +5,7 @@ typedef struct prne_iset prne_iset_t; -typedef void* prne_iset_val_t; +typedef uintptr_t prne_iset_val_t; struct prne_iset { prne_iset_val_t *arr; diff --git a/src/llist.c b/src/llist.c index 371ad89..bd82906 100644 --- a/src/llist.c +++ b/src/llist.c @@ -25,7 +25,7 @@ void prne_llist_clear (prne_llist_t *llist) { llist->size = 0; } -prne_llist_entry_t *prne_llist_insert (prne_llist_t *llist, prne_llist_entry_t *entry, void *element) { +prne_llist_entry_t *prne_llist_insert (prne_llist_t *llist, prne_llist_entry_t *entry, const prne_llist_element_t element) { prne_llist_entry_t *ny; if (entry == NULL) { @@ -51,7 +51,7 @@ prne_llist_entry_t *prne_llist_insert (prne_llist_t *llist, prne_llist_entry_t * return ny; } -prne_llist_entry_t *prne_llist_append (prne_llist_t *llist, void *element) { +prne_llist_entry_t *prne_llist_append (prne_llist_t *llist, const prne_llist_element_t element) { prne_llist_entry_t *ny = (prne_llist_entry_t*)prne_malloc(sizeof(prne_llist_entry_t), 1); if (ny == NULL) { diff --git a/src/llist.h b/src/llist.h index 9780ab9..37e289f 100644 --- a/src/llist.h +++ b/src/llist.h @@ -8,6 +8,7 @@ struct prne_llist; struct prne_llist_entry; typedef struct prne_llist prne_llist_t; typedef struct prne_llist_entry prne_llist_entry_t; +typedef uintptr_t prne_llist_element_t; struct prne_llist { prne_llist_entry_t *head, *tail; @@ -16,13 +17,13 @@ struct prne_llist { struct prne_llist_entry { prne_llist_entry_t *prev, *next; - void *element; + prne_llist_element_t element; }; void prne_init_llist (prne_llist_t *llist); void prne_free_llist (prne_llist_t *llist); void prne_llist_clear (prne_llist_t *llist); -prne_llist_entry_t *prne_llist_insert (prne_llist_t *llist, prne_llist_entry_t *entry, void *element); -prne_llist_entry_t *prne_llist_append (prne_llist_t *llist, void *element); +prne_llist_entry_t *prne_llist_insert (prne_llist_t *llist, prne_llist_entry_t *entry, const prne_llist_element_t element); +prne_llist_entry_t *prne_llist_append (prne_llist_t *llist, const prne_llist_element_t element); prne_llist_entry_t *prne_llist_erase (prne_llist_t *llist, prne_llist_entry_t *entry); diff --git a/src/proone-mkdvault.c b/src/proone-mkdvault.c index e08adc8..68c7abe 100644 --- a/src/proone-mkdvault.c +++ b/src/proone-mkdvault.c @@ -90,7 +90,7 @@ static void gen_mask (uint8_t *out) { prne_init_imap(&q); for (prne_imap_key_type_t i = 0; i < 256; i += 1) { - prne_assert(prne_imap_insert(&q, i, NULL) != NULL); + prne_assert(prne_imap_insert(&q, i, 0) != NULL); } for (uintptr_t i = 0; i < 256; i += 1) { diff --git a/src/proone-recon.c b/src/proone-recon.c index 7f996f2..f5a979e 100644 --- a/src/proone-recon.c +++ b/src/proone-recon.c @@ -23,10 +23,10 @@ static regex_t re_entry, re_comment, re_empty; static void print_help (FILE *o, const char *prog) { fprintf( - stderr, + o, "Usage: %s <conf> <port 1> [port 2] ... [port n]\n" "Options:\n" - "\t<conf>: Path to config file. Pass \"-\" to read stdin\n" + "\t<conf>: path to config file. \"-\" to read stdin\n" "Config Format: <ENTRY SPEC> <NET SPEC>\n" "\t<ENTRY SPEC>: \"T\" for target or \"BL\" for blacklist\n" "\t<NET SPEC>: <IPv4 or IPv6 Address>/<CIDR>\n" @@ -167,10 +167,10 @@ int main (const int argc, const char **args) { prne_assert(regcomp( &re_entry, - // ^(\s+)?(T|BL)(\s+)?([0-9a-f:.]+)\/([0-9]{1,3})(\s+)?(#.*)?$ + // ^(\s+)?(T|BL)(\s+)([0-9a-f:.]+)\/([0-9]{1,3})(\s+)?(#.*)?$ // number of captures: 7 // significant groups: 2, 4, 5 - "^(\\s+)?(T|BL)(\\s+)?([0-9a-f:.]+)\\/([0-9]{1,3})(\\s+)?(#.*)?$", + "^(\\s+)?(T|BL)(\\s+)([0-9a-f:.]+)\\/([0-9]{1,3})(\\s+)?(#.*)?$", REG_EXTENDED | REG_ICASE) == 0); prne_assert(regcomp( &re_comment, diff --git a/src/proone-resolv.c b/src/proone-resolv.c index f45cab3..0e23ba0 100644 --- a/src/proone-resolv.c +++ b/src/proone-resolv.c @@ -89,7 +89,9 @@ static void proc_prompt_line (char *line, const size_t line_len) { } if (has_prm) { - prne_assert(prne_llist_append(&prm_list, prm) != NULL); + prne_assert(prne_llist_append( + &prm_list, + (prne_llist_element_t)prm) != NULL); } else { perror("* Queue failed"); diff --git a/src/recon.c b/src/recon.c index de63ace..4de734c 100644 --- a/src/recon.c +++ b/src/recon.c @@ -70,7 +70,7 @@ static void rcn_main_empty_ii_list (prne_recon_t *ctx) { prne_llist_entry_t *ent = ctx->ii_list.head; while (ent != NULL) { - prne_free(ent->element); + prne_free((void*)ent->element); ent = ent->next; } prne_llist_clear(&ctx->ii_list); @@ -133,7 +133,7 @@ static bool rcn_main_do_ifaddrs (prne_recon_t *ctx) { } /* fall-through */ case AF_INET: - ent = prne_llist_append(&ctx->ii_list, NULL); + ent = prne_llist_append(&ctx->ii_list, 0); if (ent == NULL) { goto END; } @@ -141,7 +141,7 @@ static bool rcn_main_do_ifaddrs (prne_recon_t *ctx) { if (info == NULL) { goto END; } - ent->element = info; + ent->element = (prne_llist_element_t)info; break; default: continue; } diff --git a/src/resolv.c b/src/resolv.c index 7935479..3ff3391 100644 --- a/src/resolv.c +++ b/src/resolv.c @@ -245,7 +245,9 @@ static bool resolv_qq (prne_resolv_t *ctx, const char *name, prne_pth_cv_t *cv, } prne_dbgtrap(pth_mutex_acquire(&ctx->lock, FALSE, NULL)); - q_ent->qlist_ent = prne_llist_append(&ctx->qlist, q_ent); + q_ent->qlist_ent = prne_llist_append( + &ctx->qlist, + (prne_llist_element_t)q_ent); if (q_ent->qlist_ent == NULL) { pth_mutex_release(&ctx->lock); goto ERR; @@ -318,7 +320,7 @@ static void resolv_close_sck (prne_resolv_t *ctx, const struct timespec *pause, continue; } - lent = prne_llist_append(&ctx->qlist, qent); + lent = prne_llist_append(&ctx->qlist, (prne_llist_element_t)qent); if (lent == NULL) { qent->fut.qr = PRNE_RESOLV_QR_ERR; qent->fut.err = errno; @@ -555,7 +557,7 @@ static const uint8_t* resolv_index_labels (prne_imap_t *map, const uint8_t *star else { // index the label ptr = (uint16_t)(p - start) | 0xC000; - if (prne_imap_insert(map, ptr, (void*)p) == NULL) { + if (prne_imap_insert(map, ptr, (prne_imap_val_type_t)p) == NULL) { *qr = PRNE_RESOLV_QR_ERR; *err = errno; return NULL; @@ -737,7 +739,7 @@ static bool resolv_proc_dns_msg (prne_resolv_t *ctx, const uint8_t *data, const qr = PRNE_RESOLV_QR_ERR; goto END; } - if (prne_llist_append(&rr_list, tpl) == NULL) { + if (prne_llist_append(&rr_list, (prne_llist_element_t)tpl) == NULL) { prne_free(tpl); err = errno; qr = PRNE_RESOLV_QR_ERR; @@ -844,7 +846,7 @@ QNAME_START: goto END; } if (cmp_ret && ttype == tpl->rtype) { - if (prne_llist_append(&ret_list, tpl) == NULL) { + if (prne_llist_append(&ret_list, (prne_llist_element_t)tpl) == NULL) { qr = PRNE_RESOLV_QR_ERR; err = errno; goto END; @@ -903,7 +905,7 @@ QNAME_START: END: cur = rr_list.head; while (cur != NULL) { - prne_free(cur->element); + prne_free((void*)cur->element); cur = cur->next; } prne_free_llist(&rr_list); @@ -992,7 +994,11 @@ static bool resolv_send_dns_msgs (prne_resolv_t *ctx) { return ret; } - if (prne_imap_insert(&ctx->qid_map, qid, qent) == NULL) { + if (prne_imap_insert( + &ctx->qid_map, + qid, + (prne_imap_val_type_t)qent) == NULL) + { qent->fut.err = errno; qent->fut.qr = PRNE_RESOLV_QR_ERR; prne_llist_erase(&ctx->qlist, cur); @@ -1119,7 +1125,7 @@ LOOP: ctx->iobuf[0].m[pos + 3]); const prne_imap_tuple_t *tpl = prne_imap_lookup(&ctx->qid_map, qid); - if (tpl->val != NULL) { + if (tpl->val != (prne_imap_val_type_t)NULL) { query_entry_t *qent = (query_entry_t*)tpl->val; qent->fut.qr = PRNE_RESOLV_QR_IMPL; resolv_disown_qent(qent); diff --git a/src/strmap.c b/src/strmap.c index 81d19b5..4f20831 100644 --- a/src/strmap.c +++ b/src/strmap.c @@ -1,4 +1,5 @@ #include "strmap.h" +#include "util_ct.h" #include "util_rt.h" #include <string.h> @@ -34,7 +35,7 @@ void prne_strmap_clear (prne_strmap_t *map) { const prne_strmap_tuple_t *prne_strmap_insert ( prne_strmap_t *map, const char* key, - void *val) + const prne_strmap_val_t val) { prne_strmap_tuple_t *ret; prne_strmap_tuple_t t; @@ -70,7 +71,7 @@ const prne_strmap_tuple_t *prne_strmap_insert ( qsort(map->tbl, map->size, sizeof(prne_strmap_tuple_t), strmap_cmp_f); ret = (prne_strmap_tuple_t*)prne_strmap_lookup(map, key); - prne_dbgtrap(ret != NULL); + prne_dbgast(ret != NULL); } else { ret->val = t.val; @@ -83,7 +84,7 @@ void prne_strmap_erase (prne_strmap_t *map, const char* key) { prne_strmap_tuple_t t, *e; t.key = key; - t.val = NULL; + t.val = 0; e = (prne_strmap_tuple_t*)bsearch( &t, map->tbl, @@ -120,7 +121,7 @@ const prne_strmap_tuple_t *prne_strmap_lookup ( prne_strmap_tuple_t t; t.key = key; - t.val = NULL; + t.val = 0; return (const prne_strmap_tuple_t*)bsearch( &t, diff --git a/src/strmap.h b/src/strmap.h index 126ebbc..a8b53ac 100644 --- a/src/strmap.h +++ b/src/strmap.h @@ -6,6 +6,7 @@ typedef struct prne_strmap prne_strmap_t; typedef struct prne_strmap_tuple prne_strmap_tuple_t; +typedef uintptr_t prne_strmap_val_t; struct prne_strmap { prne_strmap_tuple_t *tbl; @@ -14,7 +15,7 @@ struct prne_strmap { struct prne_strmap_tuple { const char *key; - void *val; + prne_strmap_val_t val; }; void prne_init_strmap (prne_strmap_t *map); @@ -24,7 +25,7 @@ void prne_strmap_clear (prne_strmap_t *map); const prne_strmap_tuple_t *prne_strmap_insert ( prne_strmap_t *map, const char* key, - void *val); + const prne_strmap_val_t val); void prne_strmap_erase (prne_strmap_t *map, const char* key); const prne_strmap_tuple_t *prne_strmap_lookup ( prne_strmap_t *map, |