Do the same as the oprint plugin: let inet_ntop() write to a temporary buffer, and then write that buffer content and the trailing comma to the actual output buffer in one go. Fixes: f04bf6794d11 ("gprint, oprint: use inet_ntop to format ip addresses") Signed-off-by: Corubba Smith <corubba@xxxxxx> --- output/ulogd_output_GPRINT.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/output/ulogd_output_GPRINT.c b/output/ulogd_output_GPRINT.c index 37829fa..20dd308 100644 --- a/output/ulogd_output_GPRINT.c +++ b/output/ulogd_output_GPRINT.c @@ -155,6 +155,7 @@ static int gprint_interp(struct ulogd_pluginstance *upi) size += ret; break; case ULOGD_RET_IPADDR: { + char addrbuf[INET6_ADDRSTRLEN + 1] = ""; struct in6_addr ipv6addr; struct in_addr ipv4addr; int family; @@ -176,10 +177,12 @@ static int gprint_interp(struct ulogd_pluginstance *upi) addr = &ipv4addr; family = AF_INET; } - if (!inet_ntop(family, addr, buf + size, rem)) + if (!inet_ntop(family, addr, addrbuf, sizeof(addrbuf))) break; - ret = strlen(buf + size); + ret = snprintf(buf+size, rem, "%s,", addrbuf); + if (ret < 0) + break; rem -= ret; size += ret; break; -- 2.48.1