From cdc993b19e0c405e99ff8852aa32601ec22d1157 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Sun, 21 Jan 2024 08:21:35 +0100 Subject: [PATCH] BUILD: stick-table: fix build error on 32-bit platforms Commit 9b2717e7b ("MINOR: stktable: use {show,set,clear} table with ptr") stores a pointer in a long long (64bit), which fails the cas to void* on 32-bit platforms: src/stick_table.c: In function 'table_process_entry_per_ptr': src/stick_table.c:5136:37: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast] 5136 | ts = stktable_lookup_ptr(t, (void *)ptr); On all our supported platforms, longs and pointers are of the same size, so let's just turn this to a ulong instead. --- src/stick_table.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/stick_table.c b/src/stick_table.c index 26c0db21a0..130b62da8d 100644 --- a/src/stick_table.c +++ b/src/stick_table.c @@ -5121,7 +5121,7 @@ static int table_process_entry_per_ptr(struct appctx *appctx, char **args) { struct show_table_ctx *ctx = appctx->svcctx; struct stktable *t = ctx->target; - long long int ptr; + ulong ptr; char *error; struct stksess *ts; @@ -5129,7 +5129,7 @@ static int table_process_entry_per_ptr(struct appctx *appctx, char **args) return cli_err(appctx, "Pointer expected (0xffff notation)\n"); /* Convert argument to integer value */ - ptr = strtoll(args[4], &error, 16); + ptr = strtoul(args[4], &error, 16); if (*error != '\0') return cli_err(appctx, "Malformed ptr.\n"); -- 2.47.3