summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2015-07-03 16:13:35 +0200
committerThomas Haller <thaller@redhat.com>2015-07-12 13:56:52 +0200
commitd74a3b1194ecd64e290586b3ce61bdf1110bce26 (patch)
tree92f67ebeaead88bfb9afd95f892407fbf9023ff4
parentaefea43380025135ac007637a3f27d8d1c2b59f1 (diff)
downloadNetworkManager-d74a3b1194ecd64e290586b3ce61bdf1110bce26.tar.gz
platform: don't allocate string for flags in nm_platform_ip6_address_to_string()
-rw-r--r--src/platform/nm-platform.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/platform/nm-platform.c b/src/platform/nm-platform.c
index b534b273d2..cfeb5319c7 100644
--- a/src/platform/nm-platform.c
+++ b/src/platform/nm-platform.c
@@ -2553,12 +2553,12 @@ nm_platform_addr_flags2str (int flags, char *buf, size_t size)
const char *
nm_platform_ip6_address_to_string (const NMPlatformIP6Address *address)
{
+#define S_FLAGS_PREFIX " flags "
char s_flags[256];
char s_address[INET6_ADDRSTRLEN];
char s_peer[INET6_ADDRSTRLEN];
char str_lft[30], str_pref[30], str_time[50];
char str_dev[TO_STRING_DEV_BUF_SIZE];
- char *str_flags;
char *str_peer = NULL;
const char *str_lft_p, *str_pref_p, *str_time_p;
gint32 now = nm_utils_get_monotonic_timestamp_s ();
@@ -2574,9 +2574,11 @@ nm_platform_ip6_address_to_string (const NMPlatformIP6Address *address)
_to_string_dev (NULL, address->ifindex, str_dev, sizeof (str_dev));
- nm_platform_addr_flags2str (address->flags, s_flags, sizeof (s_flags));
-
- str_flags = s_flags[0] ? g_strconcat (" flags ", s_flags, NULL) : NULL;
+ nm_platform_addr_flags2str (address->flags, &s_flags[STRLEN (S_FLAGS_PREFIX)], sizeof (s_flags) - STRLEN (S_FLAGS_PREFIX));
+ if (s_flags[STRLEN (S_FLAGS_PREFIX)] == '\0')
+ s_flags[0] = '\0';
+ else
+ memcpy (s_flags, S_FLAGS_PREFIX, STRLEN (S_FLAGS_PREFIX));
str_lft_p = _lifetime_to_string (address->timestamp,
address->lifetime ? address->lifetime : NM_PLATFORM_LIFETIME_PERMANENT,
@@ -2592,9 +2594,8 @@ nm_platform_ip6_address_to_string (const NMPlatformIP6Address *address)
s_address, address->plen, str_lft_p, str_pref_p, str_time_p,
str_peer ? str_peer : "",
str_dev,
- str_flags ? str_flags : "",
+ s_flags,
source_to_string (address->source));
- g_free (str_flags);
g_free (str_peer);
return _nm_platform_to_string_buffer;
}