aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTambet Ingo <tambet@gmail.com>2008-09-01 16:01:55 +0300
committerTambet Ingo <tambet@gmail.com>2008-09-01 16:01:55 +0300
commitc56d5a257b35a8f1072a250df68437cf4ec50bf9 (patch)
tree2eae0b9b0df7d3d52a766b3d6e3cdd722dba6fb5
parent1bb60347b503e1aaf043548b853f19156a31b5e4 (diff)
Handle reading failure replies correctly everywhere.
-rw-r--r--plugins/mm-modem-huawei.c2
-rw-r--r--src/mm-generic-gsm.c10
2 files changed, 8 insertions, 4 deletions
diff --git a/plugins/mm-modem-huawei.c b/plugins/mm-modem-huawei.c
index 79eb689b..bbcb308c 100644
--- a/plugins/mm-modem-huawei.c
+++ b/plugins/mm-modem-huawei.c
@@ -162,7 +162,7 @@ enable (MMModem *modem,
static gboolean
parse_syscfg (const char *reply, int *mode_a, int *mode_b, guint32 *band, int *unknown1, int *unknown2)
{
- if (strncmp (reply, "^SYSCFG:", 8))
+ if (reply == NULL || strncmp (reply, "^SYSCFG:", 8))
return FALSE;
if (sscanf (reply + 8, "%d,%d,%x,%d,%d", mode_a, mode_b, band, unknown1, unknown2))
diff --git a/src/mm-generic-gsm.c b/src/mm-generic-gsm.c
index 8a32c9e9..f7b7a178 100644
--- a/src/mm-generic-gsm.c
+++ b/src/mm-generic-gsm.c
@@ -194,7 +194,11 @@ get_string_done (MMSerial *serial, const char *reply, gpointer user_data)
{
MMCallbackInfo *info = (MMCallbackInfo *) user_data;
- mm_callback_info_set_result (info, g_strdup (reply), g_free);
+ if (reply)
+ mm_callback_info_set_result (info, g_strdup (reply), g_free);
+ else
+ info->error = g_error_new (MM_MODEM_ERROR, MM_MODEM_ERROR_GENERAL, "%s", "Reading information failed.");
+
mm_callback_info_schedule (info);
}
@@ -809,7 +813,7 @@ scan_done (MMSerial *serial, const char *reply, gpointer user_data)
results = g_ptr_array_new ();
- if (!strncmp (reply, "+COPS: ", 7)) {
+ if (reply && !strncmp (reply, "+COPS: ", 7)) {
/* Got valid reply */
GRegex *r;
GMatchInfo *match_info;
@@ -927,7 +931,7 @@ get_signal_quality_done (MMSerial *serial, const char *reply, gpointer user_data
MMCallbackInfo *info = (MMCallbackInfo *) user_data;
guint32 result = 0;
- if (!strncmp (reply, "+CSQ: ", 6)) {
+ if (reply && !strncmp (reply, "+CSQ: ", 6)) {
/* Got valid reply */
int quality;
int ber;