From 71b676590c47abcfcfc546565b5da2312931c880 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Tue, 18 Nov 2014 09:43:01 -0500 Subject: [PATCH] dhcp: fix systemd-dhcp's writing of routes in lease file inet_ntoa() uses a static buffer, so you can't call it twice in the same fprintf() call. https://bugs.freedesktop.org/show_bug.cgi?id=86438 --- .../src/libsystemd-network/network-internal.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/dhcp-manager/systemd-dhcp/src/libsystemd-network/network-internal.c b/src/dhcp-manager/systemd-dhcp/src/libsystemd-network/network-internal.c index 41a380eb5..b9334bd65 100644 --- a/src/dhcp-manager/systemd-dhcp/src/libsystemd-network/network-internal.c +++ b/src/dhcp-manager/systemd-dhcp/src/libsystemd-network/network-internal.c @@ -404,10 +404,12 @@ void serialize_dhcp_routes(FILE *f, const char *key, struct sd_dhcp_route *route fprintf(f, "%s=", key); - for (i = 0; i < size; i++) - fprintf(f, "%s/%" PRIu8 ",%s%s", inet_ntoa(routes[i].dst_addr), - routes[i].dst_prefixlen, inet_ntoa(routes[i].gw_addr), + for (i = 0; i < size; i++) { + fprintf(f, "%s/%" PRIu8, inet_ntoa(routes[i].dst_addr), + routes[i].dst_prefixlen); + fprintf(f, ",%s%s", inet_ntoa(routes[i].gw_addr), (i < (size - 1)) ? " ": ""); + } fputs("\n", f); }