diff options
Diffstat (limited to 'pkg/nsd/patch/0003-Avoid-pointer-arithmetic-on-void.patch')
| -rw-r--r-- | pkg/nsd/patch/0003-Avoid-pointer-arithmetic-on-void.patch | 180 |
1 files changed, 0 insertions, 180 deletions
diff --git a/pkg/nsd/patch/0003-Avoid-pointer-arithmetic-on-void.patch b/pkg/nsd/patch/0003-Avoid-pointer-arithmetic-on-void.patch deleted file mode 100644 index 976684fe..00000000 --- a/pkg/nsd/patch/0003-Avoid-pointer-arithmetic-on-void.patch +++ /dev/null @@ -1,180 +0,0 @@ -From ecde6ced1a7d7649510c5428646e2a96477f6c6f Mon Sep 17 00:00:00 2001 -From: Michael Forney <mforney@mforney.org> -Date: Sun, 16 Jun 2019 23:17:47 -0700 -Subject: [PATCH] Avoid pointer arithmetic on `void *` -Upstream: https://github.com/NLnetLabs/nsd/pull/60 - -The pointer operand to the binary `+` operator must be to a complete -object type. ---- - dbaccess.c | 8 ++++---- - difffile.c | 4 ++-- - region-allocator.c | 4 ++-- - udb.c | 12 ++++++------ - udb.h | 4 ++-- - xfrd.c | 2 +- - 6 files changed, 17 insertions(+), 17 deletions(-) - -diff --git a/dbaccess.c b/dbaccess.c -index da0762e9..87f75f9c 100644 ---- a/dbaccess.c -+++ b/dbaccess.c -@@ -210,19 +210,19 @@ static void read_zone_recurse(udb_base* udb, namedb_type* db, - /* pre-order process of node->elem, for radix tree this is - * also in-order processing (identical to order tree_next()) */ - read_node_elem(udb, db, dname_region, zone, (struct domain_d*) -- (udb->base + node->elem.data)); -+ ((char*)udb->base + node->elem.data)); - } - if(node->lookup.data) { - uint16_t i; - struct udb_radarray_d* a = (struct udb_radarray_d*) -- (udb->base + node->lookup.data); -+ ((char*)udb->base + node->lookup.data); - /* we do not care for what the exact radix key is, we want - * to add all of them and the read routine does not need - * the radix-key, it has it stored */ - for(i=0; i<a->len; i++) { - if(a->array[i].node.data) { - read_zone_recurse(udb, db, dname_region, zone, -- (struct udb_radnode_d*)(udb->base + -+ (struct udb_radnode_d*)((char*)udb->base + - a->array[i].node.data)); - } - } -@@ -240,7 +240,7 @@ read_zone_data(udb_base* udb, namedb_type* db, region_type* dname_region, - if(RADTREE(&dtree)->root.data) - read_zone_recurse(udb, db, dname_region, zone, - (struct udb_radnode_d*) -- (udb->base + RADTREE(&dtree)->root.data)); -+ ((char*)udb->base + RADTREE(&dtree)->root.data)); - udb_ptr_unlink(&dtree, udb); - } - -diff --git a/difffile.c b/difffile.c -index b3aee0b4..82056ada 100644 ---- a/difffile.c -+++ b/difffile.c -@@ -1631,7 +1631,7 @@ void* task_new_stat_info(udb_base* udb, udb_ptr* last, struct nsdst* stat, - p = TASKLIST(&e)->zname; - memcpy(p, stat, sizeof(*stat)); - udb_ptr_unlink(&e, udb); -- return p + sizeof(*stat); -+ return (char*)p + sizeof(*stat); - } - #endif /* BIND8_STATS */ - -@@ -1653,7 +1653,7 @@ task_new_add_zone(udb_base* udb, udb_ptr* last, const char* zone, - TASKLIST(&e)->yesno = zonestatid; - p = TASKLIST(&e)->zname; - memcpy(p, zone, zlen+1); -- memmove(p+zlen+1, pattern, plen+1); -+ memmove((char*)p+zlen+1, pattern, plen+1); - udb_ptr_unlink(&e, udb); - } - -diff --git a/region-allocator.c b/region-allocator.c -index 638c861b..f53841ad 100644 ---- a/region-allocator.c -+++ b/region-allocator.c -@@ -272,7 +272,7 @@ region_alloc(region_type *region, size_t size) - region->total_allocated += size; - ++region->large_objects; - -- return result + sizeof(struct large_elem); -+ return (char *)result + sizeof(struct large_elem); - } - - if (region->recycle_bin && region->recycle_bin[aligned_size]) { -@@ -469,7 +469,7 @@ region_recycle(region_type *region, void *block, size_t size) - region->total_allocated -= size; - --region->large_objects; - -- l = (struct large_elem*)(block-sizeof(struct large_elem)); -+ l = (struct large_elem*)((char*)block-sizeof(struct large_elem)); - if(l->prev) - l->prev->next = l->next; - else region->large_list = l->next; -diff --git a/udb.c b/udb.c -index 1b41ab91..b02a482b 100644 ---- a/udb.c -+++ b/udb.c -@@ -192,13 +192,13 @@ udb_base_create_fd(const char* fname, int fd, udb_walk_relptr_func walkfunc, - } - - /* init completion */ -- udb->glob_data = (udb_glob_d*)(udb->base+sizeof(uint64_t)); -+ udb->glob_data = (udb_glob_d*)((char*)udb->base+sizeof(uint64_t)); - r = 0; - /* cannot be dirty because that is goto fail above */ - if(udb->glob_data->dirty_alloc != udb_dirty_clean) - r = 1; - udb->alloc = udb_alloc_create(udb, (udb_alloc_d*)( -- (void*)udb->glob_data+sizeof(*udb->glob_data))); -+ (char*)udb->glob_data+sizeof(*udb->glob_data))); - if(!udb->alloc) { - log_msg(LOG_ERR, "out of memory"); - udb_base_free(udb); -@@ -555,10 +555,10 @@ udb_base_remap(udb_base* udb, udb_alloc* alloc, uint64_t nsize) - /* fix up realpointers in udb and alloc */ - /* but mremap may have been nice and not move the base */ - udb->base = nb; -- udb->glob_data = (udb_glob_d*)(nb+sizeof(uint64_t)); -+ udb->glob_data = (udb_glob_d*)((char*)nb+sizeof(uint64_t)); - /* use passed alloc pointer because the udb->alloc may not - * be initialized yet */ -- alloc->disk = (udb_alloc_d*)((void*)udb->glob_data -+ alloc->disk = (udb_alloc_d*)((char*)udb->glob_data - +sizeof(*udb->glob_data)); - } - udb->base_size = nsize; -@@ -798,7 +798,7 @@ regen_ptrlist(void* base, udb_base* udb, udb_alloc* alloc, - if(exp == UDB_EXP_XL) { - assert(at != rb_old); /* should have been freed */ - regen_its_ptrs(base, udb, atp, -- ((void*)atp)+sizeof(udb_xl_chunk_d), -+ ((char*)atp)+sizeof(udb_xl_chunk_d), - sz-sizeof(udb_xl_chunk_d) - sizeof(uint64_t)*2, - rb_old, rb_new); - at += sz; -@@ -807,7 +807,7 @@ regen_ptrlist(void* base, udb_base* udb, udb_alloc* alloc, - } else { /* data chunk */ - assert(at != rb_old); /* should have been freed */ - regen_its_ptrs(base, udb, atp, -- ((void*)atp)+sizeof(udb_chunk_d), -+ ((char*)atp)+sizeof(udb_chunk_d), - sz-sizeof(udb_chunk_d)-1, rb_old, rb_new); - at += sz; - } -diff --git a/udb.h b/udb.h -index 8d7ee137..3ee98648 100644 ---- a/udb.h -+++ b/udb.h -@@ -52,9 +52,9 @@ typedef struct udb_alloc udb_alloc; - typedef uint64_t udb_void; - - /** convert relptr to usable pointer */ --#define UDB_REL(base, relptr) ((base) + (relptr)) -+#define UDB_REL(base, relptr) ((void*)((char*)(base) + (relptr))) - /** from system pointer to relative pointer */ --#define UDB_SYSTOREL(base, ptr) ((udb_void)((void*)(ptr) - (base))) -+#define UDB_SYSTOREL(base, ptr) ((udb_void)((char*)(ptr) - (char*)(base))) - - /** MAX 2**x exponent of alloced chunks, for 1Mbytes. The smallest - * chunk is 16bytes (8preamble+8data), so 0-3 is unused. */ -diff --git a/xfrd.c b/xfrd.c -index bd07d797..82551907 100644 ---- a/xfrd.c -+++ b/xfrd.c -@@ -2466,7 +2466,7 @@ static void - xfrd_process_stat_info_task(xfrd_state_type* xfrd, struct task_list_d* task) - { - size_t i; -- stc_type* p = (void*)task->zname + sizeof(struct nsdst); -+ stc_type* p = (void*)((char*)task->zname + sizeof(struct nsdst)); - stats_add(&xfrd->nsd->st, (struct nsdst*)task->zname); - for(i=0; i<xfrd->nsd->child_count; i++) { - xfrd->nsd->children[i].query_count += *p++; --- -2.24.0 - |
