diff options
author | Jeremy Harris <jgh146exb@wizmail.org> | 2023-08-07 15:51:38 +0100 |
---|---|---|
committer | Jeremy Harris <jgh146exb@wizmail.org> | 2023-08-07 17:00:35 +0100 |
commit | 8dcd332fbfd7ecefe548be074637fccae8cf23f0 (patch) | |
tree | ef46a5e51a0c76c763d6542599a6aab5fb230ba6 | |
parent | 6707bfa9fb78858de938a1abca2846c820c5ded7 (diff) |
Logging: convert an internal element from static to allocated buffer
-rw-r--r-- | src/src/host.c | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/src/src/host.c b/src/src/host.c index 9c66e9aac..e274673a0 100644 --- a/src/src/host.c +++ b/src/src/host.c @@ -600,35 +600,36 @@ return depends on whether sender_fullhost and sender_ident are set or not: ident set, no host => U=ident ident set, host set => H=sender_fullhost U=ident -Use taint-unchecked routines on the assumption we'll never expand the results. - Arguments: useflag TRUE if first item to be flagged (H= or U=); if there are two items, the second is always flagged -Returns: pointer to a string in big_buffer +Returns: pointer to an allocated string */ uschar * host_and_ident(BOOL useflag) { +gstring * g = NULL; + if (!sender_fullhost) - string_format_nt(big_buffer, big_buffer_size, "%s%s", useflag ? "U=" : "", - sender_ident ? sender_ident : US"unknown"); + { + if (useflag) + g = string_catn(g, US"U=", 2); + g = string_cat(g, sender_ident ? sender_ident : US"unknown"); + } else { - uschar * flag = useflag ? US"H=" : US""; - uschar * iface = US""; + if (useflag) + g = string_catn(g, US"H=", 2); + g = string_cat(g, sender_fullhost); if (LOGGING(incoming_interface) && interface_address) - iface = string_sprintf(" I=[%s]:%d", interface_address, interface_port); + g = string_fmt_append(g, " I=[%s]:%d", interface_address, interface_port); if (sender_ident) - string_format_nt(big_buffer, big_buffer_size, "%s%s%s U=%s", - flag, sender_fullhost, iface, sender_ident); - else - string_format_nt(big_buffer, big_buffer_size, "%s%s%s", - flag, sender_fullhost, iface); + g = string_fmt_append(g, " U=%s", sender_ident); } -return big_buffer; +gstring_release_unused(g); +return string_from_gstring(g); } #endif /* STAND_ALONE */ |