From 33110acba83860b3c5def9ea303f96e507c59382 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Sun, 28 Sep 2008 03:17:09 +0000 Subject: [PATCH] 2008-09-27 Dan Williams * libnm-util/nm-setting-gsm.c - (verify): verify GSM network ID git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4118 4912f4e0-d625-0410-9fb7-b9a5a253dbdc --- ChangeLog | 5 +++++ libnm-util/nm-setting-gsm.c | 27 ++++++++++++++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index ec67637a5a..e0557e1e1e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-09-27 Dan Williams + + * libnm-util/nm-setting-gsm.c + - (verify): verify GSM network ID + 2008-09-25 Dan Williams * libnm-util/nm-setting-gsm.c diff --git a/libnm-util/nm-setting-gsm.c b/libnm-util/nm-setting-gsm.c index 68c836b206..bec4f408d2 100644 --- a/libnm-util/nm-setting-gsm.c +++ b/libnm-util/nm-setting-gsm.c @@ -24,6 +24,7 @@ */ #include +#include #include "nm-setting-gsm.h" #include "nm-setting-serial.h" #include "nm-utils.h" @@ -149,6 +150,30 @@ verify (NMSetting *setting, GSList *all_settings, GError **error) return FALSE; } + if (self->network_id) { + guint32 nid_len = strlen (self->network_id); + guint32 i; + + /* Accept both 5 and 6 digit MCC/MNC codes */ + if ((nid_len < 5) || (nid_len > 6)) { + g_set_error (error, + NM_SETTING_GSM_ERROR, + NM_SETTING_GSM_ERROR_INVALID_PROPERTY, + NM_SETTING_GSM_NETWORK_ID); + return FALSE; + } + + for (i = 0; i < nid_len; i++) { + if (!isdigit (self->network_id[i])) { + g_set_error (error, + NM_SETTING_GSM_ERROR, + NM_SETTING_GSM_ERROR_INVALID_PROPERTY, + NM_SETTING_GSM_NETWORK_ID); + return FALSE; + } + } + } + return TRUE; } @@ -328,7 +353,7 @@ nm_setting_gsm_class_init (NMSettingGsmClass *setting_class) (object_class, PROP_NETWORK_ID, g_param_spec_string (NM_SETTING_GSM_NETWORK_ID, "Network ID", - "Network ID", + "Network ID (GSM LAI format)", NULL, G_PARAM_READWRITE | NM_SETTING_PARAM_SERIALIZE));