diff options
author | Thomas Haller <thaller@redhat.com> | 2015-02-07 17:07:26 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2015-02-09 11:51:06 +0100 |
commit | a9bfe9f4bb42682713eedbc2ffb4950e4bd275fe (patch) | |
tree | cb1c7d20823b8804756f7556261bd99787fac4a6 | |
parent | 53796f0beb19cd6308724861f48276179147920a (diff) | |
download | NetworkManager-a9bfe9f4bb42682713eedbc2ffb4950e4bd275fe.tar.gz |
ifcfg-rh: fix memleak in write_ip4_aliases() and assert against overflow
-rw-r--r-- | src/settings/plugins/ifcfg-rh/writer.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/settings/plugins/ifcfg-rh/writer.c b/src/settings/plugins/ifcfg-rh/writer.c index 383bee0811..a746b2421c 100644 --- a/src/settings/plugins/ifcfg-rh/writer.c +++ b/src/settings/plugins/ifcfg-rh/writer.c @@ -44,6 +44,7 @@ #include <nm-utils.h> #include "nm-logging.h" +#include "gsystem-local-alloc.h" #include "common.h" #include "shvar.h" #include "reader.h" @@ -2112,13 +2113,16 @@ static void write_ip4_aliases (NMConnection *connection, char *base_ifcfg_path) { NMSettingIPConfig *s_ip4; - char *base_ifcfg_dir, *base_ifcfg_name, *base_name; + gs_free char *base_ifcfg_dir = NULL, *base_ifcfg_name = NULL; + const char*base_name; int i, num, base_ifcfg_name_len, base_name_len; GDir *dir; base_ifcfg_dir = g_path_get_dirname (base_ifcfg_path); base_ifcfg_name = g_path_get_basename (base_ifcfg_path); base_ifcfg_name_len = strlen (base_ifcfg_name); + if (!g_str_has_prefix (base_ifcfg_name, IFCFG_TAG)) + g_return_if_reached (); base_name = base_ifcfg_name + strlen (IFCFG_TAG); base_name_len = strlen (base_name); @@ -2190,9 +2194,6 @@ write_ip4_aliases (NMConnection *connection, char *base_ifcfg_path) svWriteFile (ifcfg, 0644, NULL); svCloseFile (ifcfg); } - - g_free (base_ifcfg_name); - g_free (base_ifcfg_dir); } static gboolean |