2008-04-17 Dan Williams <dcbw@redhat.com>

* libnm-util/nm-setting-pppoe.c
		- (verify): require a PPP setting too

	* src/ppp-manager/nm-ppp-manager.c
		- (nm_ppp_manager_start): fail if no PPP setting is present instead of
			segfaulting



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3574 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
This commit is contained in:
Dan Williams 2008-04-17 23:21:27 +00:00
parent 208864fcf5
commit d37629c6ca
3 changed files with 26 additions and 1 deletions

View file

@ -1,3 +1,12 @@
2008-04-17 Dan Williams <dcbw@redhat.com>
* libnm-util/nm-setting-pppoe.c
- (verify): require a PPP setting too
* src/ppp-manager/nm-ppp-manager.c
- (nm_ppp_manager_start): fail if no PPP setting is present instead of
segfaulting
2008-04-17 Dan Williams <dcbw@redhat.com>
* src/nm-device.c

View file

@ -2,6 +2,7 @@
#include <string.h>
#include "nm-setting-pppoe.h"
#include "nm-setting-ppp.h"
G_DEFINE_TYPE (NMSettingPPPOE, nm_setting_pppoe, NM_TYPE_SETTING)
@ -20,6 +21,15 @@ nm_setting_pppoe_new (void)
return (NMSetting *) g_object_new (NM_TYPE_SETTING_PPPOE, NULL);
}
static gint
find_setting_by_name (gconstpointer a, gconstpointer b)
{
NMSetting *setting = NM_SETTING (a);
const char *str = (const char *) b;
return strcmp (nm_setting_get_name (setting), str);
}
static gboolean
verify (NMSetting *setting, GSList *all_settings)
{
@ -35,6 +45,11 @@ verify (NMSetting *setting, GSList *all_settings)
return FALSE;
}
if (!g_slist_find_custom (all_settings, NM_SETTING_PPP_SETTING_NAME, find_setting_by_name)) {
g_warning ("Invalid or missing PPP setting");
return FALSE;
}
return TRUE;
}

View file

@ -634,8 +634,9 @@ nm_ppp_manager_start (NMPPPManager *manager,
connection = nm_act_request_get_connection (req);
ppp_setting = NM_SETTING_PPP (nm_connection_get_setting (connection, NM_TYPE_SETTING_PPP));
g_return_val_if_fail (ppp_setting != NULL, FALSE);
pppoe_setting = (NMSettingPPPOE *) nm_connection_get_setting (connection, NM_TYPE_SETTING_PPPOE);
if (pppoe_setting)
pppoe_fill_defaults (ppp_setting);