aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Timber <mieabby@gmail.com>2020-09-17 19:00:28 +0930
committerDavid Timber <mieabby@gmail.com>2020-09-17 19:00:28 +0930
commite6953dcb47193746a4f4d9fff0193723fadbb3e6 (patch)
treeb6fe802c3faf48ec7e294fa61207b4e9126fc3c1
parentb54ace5cd8a873be804529f7b8221ee62600d17d (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.c19
-rw-r--r--src/imap.c10
-rw-r--r--src/imap.h5
-rw-r--r--src/iset.h2
-rw-r--r--src/llist.c4
-rw-r--r--src/llist.h7
-rw-r--r--src/proone-mkdvault.c2
-rw-r--r--src/proone-recon.c8
-rw-r--r--src/proone-resolv.c4
-rw-r--r--src/recon.c6
-rw-r--r--src/resolv.c22
-rw-r--r--src/strmap.c9
-rw-r--r--src/strmap.h5
13 files changed, 59 insertions, 44 deletions
diff --git a/src/htbt.c b/src/htbt.c
index 1835464..c24d07d 100644
--- a/src/htbt.c
+++ b/src/htbt.c
@@ -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;
}
diff --git a/src/imap.c b/src/imap.c
index 88e24e9..b6d2110 100644
--- a/src/imap.c
+++ b/src/imap.c
@@ -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);
}
diff --git a/src/imap.h b/src/imap.h
index d7eb788..53f5b95 100644
--- a/src/imap.h
+++ b/src/imap.h
@@ -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);
diff --git a/src/iset.h b/src/iset.h
index b23ee23..acc8f14 100644
--- a/src/iset.h
+++ b/src/iset.h
@@ -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,