summary refs log tree commit diff
path: root/callouts
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2015-05-05 17:48:57 +0200
committerMichael Biebl <biebl@debian.org>2015-05-05 17:48:57 +0200
commitf408e27bccfacf347605a8d98649975a68f38a17 (patch)
tree654fd6695c31511baf919b1c0870d119a352ed75 /callouts
parent2c032d8f1c6292c1338a615e6ec40252889ba85c (diff)
Imported Upstream version 1.0.2 upstream/1.0.2
Diffstat (limited to 'callouts')
-rw-r--r--callouts/Makefile.in30
-rw-r--r--callouts/nm-dispatcher-api.h1
-rw-r--r--callouts/nm-dispatcher-utils.c6
-rw-r--r--callouts/tests/Makefile.am9
-rw-r--r--callouts/tests/Makefile.in42
-rw-r--r--callouts/tests/dispatcher-down (renamed from callouts/tests/dispatcher-old-down)1
-rw-r--r--callouts/tests/dispatcher-up (renamed from callouts/tests/dispatcher-old-up)1
-rw-r--r--callouts/tests/dispatcher-vpn-down (renamed from callouts/tests/dispatcher-old-vpn-down)1
-rw-r--r--callouts/tests/dispatcher-vpn-up (renamed from callouts/tests/dispatcher-old-vpn-up)1
-rw-r--r--callouts/tests/test-dispatcher-envp.c65
10 files changed, 112 insertions, 45 deletions
diff --git a/callouts/Makefile.in b/callouts/Makefile.in
index 83151fcc..7e5c1f87 100644
--- a/callouts/Makefile.in
+++ b/callouts/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -17,7 +17,17 @@
 
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -83,8 +93,6 @@ host_triplet = @host@
 libexec_PROGRAMS = nm-dispatcher$(EXEEXT) \
 	nm-avahi-autoipd.action$(EXEEXT)
 subdir = callouts
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/build-aux/depcomp
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_lib_readline.m4 \
 	$(top_srcdir)/m4/compiler_warnings.m4 \
@@ -101,6 +109,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_lib_readline.m4 \
 	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -245,6 +254,8 @@ am__define_uniq_tagged_files = \
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/build-aux/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -296,7 +307,6 @@ CXXCPP = @CXXCPP@
 CXXDEPMODE = @CXXDEPMODE@
 CXXFLAGS = @CXXFLAGS@
 CYGPATH_W = @CYGPATH_W@
-DATADIRNAME = @DATADIRNAME@
 DBUS_CFLAGS = @DBUS_CFLAGS@
 DBUS_GLIB_100_CFLAGS = @DBUS_GLIB_100_CFLAGS@
 DBUS_GLIB_100_LIBS = @DBUS_GLIB_100_LIBS@
@@ -331,6 +341,7 @@ GNUTLS_CFLAGS = @GNUTLS_CFLAGS@
 GNUTLS_LIBS = @GNUTLS_LIBS@
 GREP = @GREP@
 GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@
 GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
@@ -632,7 +643,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu callouts/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu callouts/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -742,14 +752,14 @@ distclean-compile:
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -1133,6 +1143,8 @@ uninstall-am: uninstall-dbusactivationDATA uninstall-dbusserviceDATA \
 	uninstall-dbusactivationDATA uninstall-dbusserviceDATA \
 	uninstall-libexecPROGRAMS uninstall-udevrulesDATA
 
+.PRECIOUS: Makefile
+
 
 nmdbus-dispatcher.h: nm-dispatcher.xml
 	$(AM_V_GEN) gdbus-codegen \
diff --git a/callouts/nm-dispatcher-api.h b/callouts/nm-dispatcher-api.h
index df1bced4..9b2c3b32 100644
--- a/callouts/nm-dispatcher-api.h
+++ b/callouts/nm-dispatcher-api.h
@@ -31,6 +31,7 @@
 #define NM_DISPATCHER_DBUS_PATH      "/org/freedesktop/nm_dispatcher"
 
 #define NMD_CONNECTION_PROPS_PATH         "path"
+#define NMD_CONNECTION_PROPS_FILENAME     "filename"
 
 #define NMD_DEVICE_PROPS_INTERFACE        "interface"
 #define NMD_DEVICE_PROPS_IP_INTERFACE     "ip-interface"
diff --git a/callouts/nm-dispatcher-utils.c b/callouts/nm-dispatcher-utils.c
index 99616c1a..d8a8e8d8 100644
--- a/callouts/nm-dispatcher-utils.c
+++ b/callouts/nm-dispatcher-utils.c
@@ -210,6 +210,7 @@ construct_device_dhcp4_items (GSList *items, GVariant *dhcp4_config)
 		tmp = g_variant_get_string (val, NULL);
 		items = g_slist_prepend (items, g_strdup_printf ("DHCP4_%s=%s", ucased, tmp));
 		g_free (ucased);
+		g_variant_unref (val);
 	}
 	return items;
 }
@@ -334,6 +335,7 @@ nm_dispatcher_utils_construct_envp (const char *action,
 {
 	const char *iface = NULL, *ip_iface = NULL;
 	const char *uuid = NULL, *id = NULL, *path;
+	const char *filename = NULL;
 	NMDeviceState dev_state = NM_DEVICE_STATE_UNKNOWN;
 	GVariant *value;
 	char **envp = NULL, *path_item;
@@ -349,6 +351,10 @@ nm_dispatcher_utils_construct_envp (const char *action,
 	if (!strcmp (action, "hostname"))
 		goto done;
 
+	/* config filename */
+	if (g_variant_lookup (connection_props, NMD_CONNECTION_PROPS_FILENAME, "&s", &filename))
+		items = g_slist_prepend (items, g_strdup_printf ("CONNECTION_FILENAME=%s", filename));
+
 	/* Canonicalize the VPN interface name; "" is used when passing it through
 	 * D-Bus so make sure that's fixed up here.
 	 */
diff --git a/callouts/tests/Makefile.am b/callouts/tests/Makefile.am
index f8fd82b7..fface33d 100644
--- a/callouts/tests/Makefile.am
+++ b/callouts/tests/Makefile.am
@@ -28,12 +28,13 @@ test_dispatcher_envp_LDADD = \
 
 ###########################################
 
+@VALGRIND_RULES@
 TESTS = test-dispatcher-envp
 
 endif
 
 EXTRA_DIST= \
-	dispatcher-old-down \
-	dispatcher-old-up \
-	dispatcher-old-vpn-down \
-	dispatcher-old-vpn-up
+	dispatcher-down \
+	dispatcher-up \
+	dispatcher-vpn-down \
+	dispatcher-vpn-up
diff --git a/callouts/tests/Makefile.in b/callouts/tests/Makefile.in
index 5372e352..bd3241ce 100644
--- a/callouts/tests/Makefile.in
+++ b/callouts/tests/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,17 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
 am__make_running_with_option = \
   case $${target_option-} in \
       ?) ;; \
@@ -81,8 +91,6 @@ host_triplet = @host@
 @ENABLE_TESTS_TRUE@noinst_PROGRAMS = test-dispatcher-envp$(EXEEXT)
 @ENABLE_TESTS_TRUE@TESTS = test-dispatcher-envp$(EXEEXT)
 subdir = callouts/tests
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/build-aux/depcomp
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_lib_readline.m4 \
 	$(top_srcdir)/m4/compiler_warnings.m4 \
@@ -99,6 +107,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_lib_readline.m4 \
 	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -199,6 +208,8 @@ am__tty_colors = { \
     std=''; \
   fi; \
 }
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(top_srcdir)/build-aux/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ALL_LINGUAS = @ALL_LINGUAS@
@@ -225,7 +236,6 @@ CXXCPP = @CXXCPP@
 CXXDEPMODE = @CXXDEPMODE@
 CXXFLAGS = @CXXFLAGS@
 CYGPATH_W = @CYGPATH_W@
-DATADIRNAME = @DATADIRNAME@
 DBUS_CFLAGS = @DBUS_CFLAGS@
 DBUS_GLIB_100_CFLAGS = @DBUS_GLIB_100_CFLAGS@
 DBUS_GLIB_100_LIBS = @DBUS_GLIB_100_LIBS@
@@ -260,6 +270,7 @@ GNUTLS_CFLAGS = @GNUTLS_CFLAGS@
 GNUTLS_LIBS = @GNUTLS_LIBS@
 GREP = @GREP@
 GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@
 GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
 GTKDOC_MKPDF = @GTKDOC_MKPDF@
@@ -484,10 +495,10 @@ with_valgrind = @with_valgrind@
 @ENABLE_TESTS_TRUE@	$(DBUS_LIBS)
 
 EXTRA_DIST = \
-	dispatcher-old-down \
-	dispatcher-old-up \
-	dispatcher-old-vpn-down \
-	dispatcher-old-vpn-up
+	dispatcher-down \
+	dispatcher-up \
+	dispatcher-vpn-down \
+	dispatcher-vpn-up
 
 all: all-am
 
@@ -505,7 +516,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu callouts/tests/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu callouts/tests/Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -550,14 +560,14 @@ distclean-compile:
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -869,6 +879,12 @@ uninstall-am:
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
 	tags tags-am uninstall uninstall-am
 
+.PRECIOUS: Makefile
+
+
+###########################################
+
+@ENABLE_TESTS_TRUE@@VALGRIND_RULES@
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/callouts/tests/dispatcher-old-down b/callouts/tests/dispatcher-down
index 836f3532..da97d3f6 100644
--- a/callouts/tests/dispatcher-old-down
+++ b/callouts/tests/dispatcher-down
@@ -15,6 +15,7 @@ path=/org/freedesktop/NetworkManager/Devices/0
 PATH=
 CONNECTION_UUID=3fd2a33a-d81b-423f-ae99-e6baba742311
 CONNECTION_ID=Random Connection
+CONNECTION_FILENAME=/callouts/tests/dispatcher-down
 DEVICE_IFACE=wlan0
 DEVICE_IP_IFACE=wlan0
 
diff --git a/callouts/tests/dispatcher-old-up b/callouts/tests/dispatcher-up
index 53f35ace..78cfadad 100644
--- a/callouts/tests/dispatcher-old-up
+++ b/callouts/tests/dispatcher-up
@@ -34,6 +34,7 @@ domains=hsd1.mn.comcast.net.
 PATH=
 CONNECTION_UUID=3fd2a33a-d81b-423f-ae99-e6baba742311
 CONNECTION_ID=Random Connection
+CONNECTION_FILENAME=/callouts/tests/dispatcher-up
 DEVICE_IFACE=wlan0
 DEVICE_IP_IFACE=wlan0
 IP4_ADDRESS_0=192.168.1.119/24 192.168.1.1
diff --git a/callouts/tests/dispatcher-old-vpn-down b/callouts/tests/dispatcher-vpn-down
index 1f1cf2b6..eb4dc2ca 100644
--- a/callouts/tests/dispatcher-old-vpn-down
+++ b/callouts/tests/dispatcher-vpn-down
@@ -34,6 +34,7 @@ domains=hsd1.mn.comcast.net.
 PATH=
 CONNECTION_UUID=355653c0-34d3-4777-ad25-f9a498b7ef8e
 CONNECTION_ID=Random Connection
+CONNECTION_FILENAME=/callouts/tests/dispatcher-vpn-down
 DEVICE_IFACE=wlan0
 DEVICE_IP_IFACE=tun0
 IP4_ADDRESS_0=192.168.1.119/24 192.168.1.1
diff --git a/callouts/tests/dispatcher-old-vpn-up b/callouts/tests/dispatcher-vpn-up
index 7cda8a69..8ae78a31 100644
--- a/callouts/tests/dispatcher-old-vpn-up
+++ b/callouts/tests/dispatcher-vpn-up
@@ -34,6 +34,7 @@ domains=hsd1.mn.comcast.net.
 PATH=
 CONNECTION_UUID=355653c0-34d3-4777-ad25-f9a498b7ef8e
 CONNECTION_ID=Random Connection
+CONNECTION_FILENAME=/callouts/tests/dispatcher-vpn-up
 DEVICE_IFACE=wlan0
 DEVICE_IP_IFACE=tun0
 IP4_ADDRESS_0=192.168.1.119/24 192.168.1.1
diff --git a/callouts/tests/test-dispatcher-envp.c b/callouts/tests/test-dispatcher-envp.c
index 460174b2..6ae3fab0 100644
--- a/callouts/tests/test-dispatcher-envp.c
+++ b/callouts/tests/test-dispatcher-envp.c
@@ -34,6 +34,7 @@
 
 static gboolean
 parse_main (GKeyFile *kf,
+            const char *filename,
             GVariant **out_con_dict,
             GVariant **out_con_props,
             char **out_expected_iface,
@@ -82,6 +83,11 @@ parse_main (GKeyFile *kf,
 	g_variant_builder_add (&props, "{sv}",
 	                       "connection-path",
 	                       g_variant_new_object_path ("/org/freedesktop/NetworkManager/Connections/5"));
+	/* Strip out the non-fixed portion of the filename */
+	filename = strstr (filename, "/callouts");
+	g_variant_builder_add (&props, "{sv}",
+	                       "filename",
+	                       g_variant_new_string (filename));
 	*out_con_props = g_variant_builder_end (&props);
 
 	return TRUE;
@@ -198,12 +204,12 @@ parse_ip4 (GKeyFile *kf, GVariant **out_props, const char *section, GError **err
 	split = g_strsplit_set (tmp, " ", -1);
 	g_free (tmp);
 
-	if (g_strv_length (split) > 0) {
+	if (split && g_strv_length (split) > 0) {
 		for (iter = split; iter && *iter; iter++)
 			g_strstrip (*iter);
 		g_variant_builder_add (&props, "{sv}", "domains", g_variant_new_strv ((gpointer) split, -1));
-		g_strfreev (split);
 	}
+	g_strfreev (split);
 
 	/* nameservers */
 	if (!add_uint_array (kf, &props, "ip4", "nameservers", error))
@@ -219,7 +225,7 @@ parse_ip4 (GKeyFile *kf, GVariant **out_props, const char *section, GError **err
 	split = g_strsplit_set (tmp, ",", -1);
 	g_free (tmp);
 
-	if (g_strv_length (split) > 0) {
+	if (split && g_strv_length (split) > 0) {
 		addresses = g_ptr_array_new_with_free_func ((GDestroyNotify) nm_ip_address_unref);
 		for (iter = split; iter && *iter; iter++) {
 			NMIPAddress *addr;
@@ -261,7 +267,7 @@ parse_ip4 (GKeyFile *kf, GVariant **out_props, const char *section, GError **err
 		split = g_strsplit_set (tmp, ",", -1);
 		g_free (tmp);
 
-		if (g_strv_length (split) > 0) {
+		if (split && g_strv_length (split) > 0) {
 			routes = g_ptr_array_new_with_free_func ((GDestroyNotify) nm_ip_route_unref);
 			for (iter = split; iter && *iter; iter++) {
 				NMIPRoute *route;
@@ -322,11 +328,15 @@ parse_dhcp (GKeyFile *kf,
 	g_variant_builder_init (&props, G_VARIANT_TYPE ("a{sv}"));
 	for (iter = keys; iter && *iter; iter++) {
 		val = g_key_file_get_string (kf, group_name, *iter, error);
-		if (!val)
+		if (!val) {
+			g_strfreev (keys);
+			g_variant_builder_clear (&props);
 			return FALSE;
+		}
 		g_variant_builder_add (&props, "{sv}", *iter, g_variant_new_string (val));
 		g_free (val);
 	}
+	g_strfreev (keys);
 
 	*out_props = g_variant_builder_end (&props);
 	return TRUE;
@@ -353,11 +363,27 @@ get_dispatcher_file (const char *file,
 	gboolean success = FALSE;
 	char **keys, **iter, *val;
 
+	g_assert (!error || !*error);
+	g_assert (out_con_dict && !*out_con_dict);
+	g_assert (out_con_props && !*out_con_props);
+	g_assert (out_device_props && !*out_device_props);
+	g_assert (out_device_ip4_props && !*out_device_ip4_props);
+	g_assert (out_device_ip6_props && !*out_device_ip6_props);
+	g_assert (out_device_dhcp4_props && !*out_device_dhcp4_props);
+	g_assert (out_device_dhcp6_props && !*out_device_dhcp6_props);
+	g_assert (out_vpn_ip_iface && !*out_vpn_ip_iface);
+	g_assert (out_vpn_ip4_props && !*out_vpn_ip4_props);
+	g_assert (out_vpn_ip6_props && !*out_vpn_ip6_props);
+	g_assert (out_expected_iface && !*out_expected_iface);
+	g_assert (out_action && !*out_action);
+	g_assert (out_env && !*out_env);
+
 	kf = g_key_file_new ();
 	if (!g_key_file_load_from_file (kf, file, G_KEY_FILE_NONE, error))
 		return FALSE;
 
 	if (!parse_main (kf,
+	                 file,
 	                 out_con_dict,
 	                 out_con_props,
 	                 out_expected_iface,
@@ -380,7 +406,7 @@ get_dispatcher_file (const char *file,
 	}
 
 	if (g_key_file_has_group (kf, "dhcp6")) {
-		if (!parse_dhcp (kf, "dhcp6", out_device_dhcp4_props, error))
+		if (!parse_dhcp (kf, "dhcp6", out_device_dhcp6_props, error))
 			goto out;
 	}
 
@@ -505,6 +531,7 @@ test_generic (const char *file, const char *override_vpn_ip_iface)
 
 	g_assert_cmpstr (expected_iface, ==, out_iface);
 
+	g_strfreev (denv);
 	g_free (out_iface);
 	g_free (vpn_ip_iface);
 	g_free (expected_iface);
@@ -530,27 +557,27 @@ test_generic (const char *file, const char *override_vpn_ip_iface)
 /*******************************************/
 
 static void
-test_old_up (void)
+test_up (void)
 {
-	test_generic ("dispatcher-old-up", NULL);
+	test_generic ("dispatcher-up", NULL);
 }
 
 static void
-test_old_down (void)
+test_down (void)
 {
-	test_generic ("dispatcher-old-down", NULL);
+	test_generic ("dispatcher-down", NULL);
 }
 
 static void
-test_old_vpn_up (void)
+test_vpn_up (void)
 {
-	test_generic ("dispatcher-old-vpn-up", NULL);
+	test_generic ("dispatcher-vpn-up", NULL);
 }
 
 static void
-test_old_vpn_down (void)
+test_vpn_down (void)
 {
-	test_generic ("dispatcher-old-vpn-down", NULL);
+	test_generic ("dispatcher-vpn-down", NULL);
 }
 
 static void
@@ -559,7 +586,7 @@ test_up_empty_vpn_iface (void)
 	/* Test that an empty VPN iface variable, like is passed through D-Bus
 	 * from NM, is ignored by the dispatcher environment construction code.
 	 */
-	test_generic ("dispatcher-old-up", "");
+	test_generic ("dispatcher-up", "");
 }
 
 /*******************************************/
@@ -573,10 +600,10 @@ main (int argc, char **argv)
 	g_type_init ();
 #endif
 
-	g_test_add_func ("/dispatcher/old_up", test_old_up);
-	g_test_add_func ("/dispatcher/old_down", test_old_down);
-	g_test_add_func ("/dispatcher/old_vpn_up", test_old_vpn_up);
-	g_test_add_func ("/dispatcher/old_vpn_down", test_old_vpn_down);
+	g_test_add_func ("/dispatcher/up", test_up);
+	g_test_add_func ("/dispatcher/down", test_down);
+	g_test_add_func ("/dispatcher/vpn_up", test_vpn_up);
+	g_test_add_func ("/dispatcher/vpn_down", test_vpn_down);
 
 	g_test_add_func ("/dispatcher/up_empty_vpn_iface", test_up_empty_vpn_iface);