From 756ad19f0468cfa404532eca9b4ec61b72f87715 Mon Sep 17 00:00:00 2001 From: Tim Duesterhus Date: Fri, 3 Apr 2026 23:28:57 +0200 Subject: [PATCH] CLEANUP: log: Return `size_t` from `sess_build_logline_orig()` `sess_build_logline_orig()` takes a `size_t maxsize` as input and accordingly should also return `size_t` instead of `int` as the resulting length. In practice most of the callers already stored the result in a `size_t` anyways. The few places that used an `int` were adjusted. This Coccinelle patch was used to check for completeness: @@ type T != size_t; T var; @@ ( * var = build_logline(...) | * var = build_logline_orig(...) | * var = sess_build_logline(...) | * var = sess_build_logline_orig(...) ) Reviewed-by: Volker Dusch --- include/haproxy/log.h | 8 ++++---- src/http_ana.c | 6 +++--- src/log.c | 16 +++++++++------- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/include/haproxy/log.h b/include/haproxy/log.h index 8a3651802..a635f8b07 100644 --- a/include/haproxy/log.h +++ b/include/haproxy/log.h @@ -97,11 +97,11 @@ static inline struct log_orig log_orig(enum log_orig_id id, uint16_t flags) } /* build a log line for the session and an optional stream */ -int sess_build_logline_orig(struct session *sess, struct stream *s, char *dst, size_t maxsize, +size_t sess_build_logline_orig(struct session *sess, struct stream *s, char *dst, size_t maxsize, struct lf_expr *lf_expr, struct log_orig orig); /* wrapper for sess_build_logline_orig(), uses LOG_ORIG_UNSPEC log origin */ -static inline int sess_build_logline(struct session *sess, struct stream *s, char *dst, size_t maxsize, +static inline size_t sess_build_logline(struct session *sess, struct stream *s, char *dst, size_t maxsize, struct lf_expr *lf_expr) { return sess_build_logline_orig(sess, s, dst, maxsize, lf_expr, @@ -199,7 +199,7 @@ char * get_format_pid_sep2(int format, size_t *len); /* * Builds a log line for the stream (must be valid). */ -static inline int build_logline_orig(struct stream *s, char *dst, size_t maxsize, +static inline size_t build_logline_orig(struct stream *s, char *dst, size_t maxsize, struct lf_expr *lf_expr, struct log_orig orig) { return sess_build_logline_orig(strm_sess(s), s, dst, maxsize, lf_expr, orig); @@ -208,7 +208,7 @@ static inline int build_logline_orig(struct stream *s, char *dst, size_t maxsize /* * Wrapper for build_logline_orig, uses LOG_ORIG_UNSPEC log origin */ -static inline int build_logline(struct stream *s, char *dst, size_t maxsize, struct lf_expr *lf_expr) +static inline size_t build_logline(struct stream *s, char *dst, size_t maxsize, struct lf_expr *lf_expr) { return build_logline_orig(s, dst, maxsize, lf_expr, log_orig(LOG_ORIG_UNSPEC, LOG_ORIG_FL_NONE)); diff --git a/src/http_ana.c b/src/http_ana.c index ee33d5c08..e3964eb76 100644 --- a/src/http_ana.c +++ b/src/http_ana.c @@ -2524,9 +2524,9 @@ int http_apply_redirect_rule(struct redirect_rule *rule, struct stream *s, struc } else { /* add location with executing log format */ - int len = build_logline(s, chunk->area + chunk->data, - chunk->size - chunk->data, - &rule->rdr_fmt); + size_t len = build_logline(s, chunk->area + chunk->data, + chunk->size - chunk->data, + &rule->rdr_fmt); if (!len && rule->flags & REDIRECT_FLAG_IGNORE_EMPTY) { ret = 2; goto out; diff --git a/src/log.c b/src/log.c index f56a3fd44..671eaee01 100644 --- a/src/log.c +++ b/src/log.c @@ -3885,7 +3885,7 @@ int lf_expr_dup(const struct lf_expr *orig, struct lf_expr *dest) * is not zero. It requires a valid session and optionally a stream. If the * stream is NULL, default values will be assumed for the stream part. */ -int sess_build_logline_orig(struct session *sess, struct stream *s, +size_t sess_build_logline_orig(struct session *sess, struct stream *s, char *dst, size_t maxsize, struct lf_expr *lf_expr, struct log_orig log_orig) { @@ -5229,8 +5229,8 @@ static void do_log_ctx(struct process_send_log_ctx *ctx) struct stream *s = ctx->stream; struct session *sess = ctx->sess; struct log_orig origin = ctx->origin; - int size; - int sd_size = 0; + size_t size; + size_t sd_size = 0; int level = -1; if (LIST_ISEMPTY(&sess->fe->loggers)) @@ -5291,8 +5291,9 @@ void strm_log(struct stream *s, struct log_orig origin) { struct process_send_log_ctx ctx; struct session *sess = s->sess; - int size, err, level; - int sd_size = 0; + int err, level; + size_t size; + size_t sd_size = 0; /* if we don't want to log normal traffic, return now */ err = (s->flags & SF_REDISP) || @@ -5353,8 +5354,9 @@ void strm_log(struct stream *s, struct log_orig origin) void _sess_log(struct session *sess, int embryonic) { struct process_send_log_ctx ctx; - int size, level; - int sd_size = 0; + int level; + size_t size; + size_t sd_size = 0; struct log_orig orig; if (!sess)