summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2023-09-19 14:36:16 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2023-09-19 17:26:27 +0200
commit96ee78ec4a0707114d2f8ef7590d08cfd25080ea (patch)
tree710b3b3056d8127ebd788f78fca4a2d26df7a5d4
parent7b491e0c068c9881accfb571db3fb8f2f5799ca2 (diff)
libnftables: drop gmp_init() and mp_set_memory_functions()
Setting global handles for libgmp via mp_set_memory_functions() is very ugly. When we don't use mini-gmp, then potentially there are other users of the library in the same process, and every process fighting about the allocation functions is not gonna work. It also means, we must not reset the allocation functions after somebody already allocated GMP data with them. Which we cannot ensure, as we don't know what other parts of the process are doing. It's also unnecessary. The default allocation functions for gmp and mini-gmp already abort the process on allocation failure ([1], [2]), just like our xmalloc(). Just don't do this. [1] https://gmplib.org/repo/gmp/file/8225bdfc499f/memory.c#l37 [2] https://git.netfilter.org/nftables/tree/src/mini-gmp.c?id=6d19a902c1d77cb51b940b1ce65f31b1cad38b74#n286 Signed-off-by: Thomas Haller <thaller@redhat.com> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
-rw-r--r--include/nftables.h1
-rw-r--r--src/gmputil.c10
-rw-r--r--src/libnftables.c1
3 files changed, 0 insertions, 12 deletions
diff --git a/include/nftables.h b/include/nftables.h
index b9b2b01c..4b7c3359 100644
--- a/include/nftables.h
+++ b/include/nftables.h
@@ -224,7 +224,6 @@ struct input_descriptor {
void ct_label_table_init(struct nft_ctx *ctx);
void mark_table_init(struct nft_ctx *ctx);
-void gmp_init(void);
void realm_table_rt_init(struct nft_ctx *ctx);
void devgroup_table_init(struct nft_ctx *ctx);
void xt_init(void);
diff --git a/src/gmputil.c b/src/gmputil.c
index 7f65630d..bf472c65 100644
--- a/src/gmputil.c
+++ b/src/gmputil.c
@@ -197,13 +197,3 @@ int mpz_vfprintf(FILE *fp, const char *f, va_list args)
return n;
}
#endif
-
-static void *gmp_xrealloc(void *ptr, size_t old_size, size_t new_size)
-{
- return xrealloc(ptr, new_size);
-}
-
-void gmp_init(void)
-{
- mp_set_memory_functions(xmalloc, gmp_xrealloc, NULL);
-}
diff --git a/src/libnftables.c b/src/libnftables.c
index 7d36577d..cedd710b 100644
--- a/src/libnftables.c
+++ b/src/libnftables.c
@@ -196,7 +196,6 @@ struct nft_ctx *nft_ctx_new(uint32_t flags)
if (!init_once) {
init_once = true;
- gmp_init();
#ifdef HAVE_LIBXTABLES
xt_init();
#endif