summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2015-02-07 17:07:26 +0100
committerThomas Haller <thaller@redhat.com>2015-02-09 11:51:06 +0100
commita9bfe9f4bb42682713eedbc2ffb4950e4bd275fe (patch)
treecb1c7d20823b8804756f7556261bd99787fac4a6
parent53796f0beb19cd6308724861f48276179147920a (diff)
downloadNetworkManager-a9bfe9f4bb42682713eedbc2ffb4950e4bd275fe.tar.gz
ifcfg-rh: fix memleak in write_ip4_aliases() and assert against overflow
-rw-r--r--src/settings/plugins/ifcfg-rh/writer.c9
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