summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2008-10-21 11:07:42 +0000
committerDan Williams <dcbw@redhat.com>2008-10-21 11:07:42 +0000
commit92e5e520190baedee3cc4f9a2d79c96468b9ecf5 (patch)
tree5a780002cb564a98be3c794a6d64be4249a27cfb /src
parent07541a1eb82c66c55590e3a4a38483cd01bb19eb (diff)
downloadNetworkManager-92e5e520190baedee3cc4f9a2d79c96468b9ecf5.tar.gz
2008-10-21 Dan Williams <dcbw@redhat.com>
* src/NetworkManager.c - (main): keep the DHCP manager around since it's a singleton; fixes a use-after-free exposed by r4196 since the DHCP manager singleton variable isn't cleared when the DHCP manager object is finalized git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4199 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
Diffstat (limited to 'src')
-rw-r--r--src/NetworkManager.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/NetworkManager.c b/src/NetworkManager.c
index 948fb664d3..2770fa40c4 100644
--- a/src/NetworkManager.c
+++ b/src/NetworkManager.c
@@ -47,6 +47,7 @@
#include "nm-named-manager.h"
#include "nm-dbus-manager.h"
#include "nm-supplicant-manager.h"
+#include "nm-dhcp-manager.h"
#include "nm-netlink-monitor.h"
#include "nm-vpn-manager.h"
#include "nm-logging.h"
@@ -215,8 +216,9 @@ main (int argc, char *argv[])
NMPolicy *policy = NULL;
NMVPNManager *vpn_manager = NULL;
NMNamedManager *named_mgr = NULL;
- NMDBusManager * dbus_mgr = NULL;
- NMSupplicantManager * sup_mgr = NULL;
+ NMDBusManager *dbus_mgr = NULL;
+ NMSupplicantManager *sup_mgr = NULL;
+ NMDHCPManager *dhcp_mgr = NULL;
GOptionEntry options[] = {
{"no-daemon", 0, 0, G_OPTION_ARG_NONE, &become_daemon, "Don't become a daemon", NULL},
@@ -327,6 +329,12 @@ main (int argc, char *argv[])
goto done;
}
+ dhcp_mgr = nm_dhcp_manager_get ();
+ if (!dhcp_mgr) {
+ nm_warning ("Failed to start the DHCP manager.");
+ goto done;
+ }
+
/* Start our DBus service */
if (!nm_dbus_manager_start_service (dbus_mgr)) {
nm_warning ("Failed to start the dbus manager.");
@@ -355,6 +363,9 @@ done:
if (named_mgr)
g_object_unref (named_mgr);
+ if (dhcp_mgr)
+ g_object_unref (dhcp_mgr);
+
if (sup_mgr)
g_object_unref (sup_mgr);