summaryrefslogtreecommitdiffstats
path: root/drivers/mbmmodem/gprs-context.c
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2009-12-01 20:38:26 -0600
committerDenis Kenzior <denkenz@gmail.com>2009-12-01 20:38:26 -0600
commitfc030de2ecd587c0dc86aaaaa77dc81d12f0fc5d (patch)
tree9108dfcbf79891ab72b7e7605d76208a9df05fb9 /drivers/mbmmodem/gprs-context.c
parent8cd0990c66be67b372fb4a3de67aa94ea2e5214a (diff)
downloadofono-fc030de2ecd587c0dc86aaaaa77dc81d12f0fc5d.tar.bz2
Fix: Make sure to never overflow DNS variable
Diffstat (limited to 'drivers/mbmmodem/gprs-context.c')
-rw-r--r--drivers/mbmmodem/gprs-context.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/mbmmodem/gprs-context.c b/drivers/mbmmodem/gprs-context.c
index 548d3f09..5dae7b53 100644
--- a/drivers/mbmmodem/gprs-context.c
+++ b/drivers/mbmmodem/gprs-context.c
@@ -46,6 +46,8 @@
#define AUTH_BUF_LENGTH OFONO_GPRS_MAX_USERNAME_LENGTH + \
OFONO_GPRS_MAX_PASSWORD_LENGTH + 128
+#define MAX_DNS 5
+
static const char *none_prefix[] = { NULL };
static const char *e2ipcfg_prefix[] = { "*E2IPCFG:", NULL };
static const char *enap_prefix[] = { "*ENAP:", NULL };
@@ -83,7 +85,7 @@ static void mbm_e2ipcfg_cb(gboolean ok, GAtResult *result, gpointer user_data)
const char *str;
const char *ip = NULL;
const char *gateway = NULL;
- const char *dns[5];
+ const char *dns[MAX_DNS + 1];
struct ofono_modem *modem;
const char *interface;
gboolean success = FALSE;
@@ -111,7 +113,8 @@ static void mbm_e2ipcfg_cb(gboolean ok, GAtResult *result, gpointer user_data)
gateway = str;
break;
case 3:
- dns[numdns++] = str;
+ if (numdns < MAX_DNS)
+ dns[numdns++] = str;
break;
default:
break;