From a8af38d209ecefcd9ab17670a18f445e95f575e2 Mon Sep 17 00:00:00 2001 From: Denis Kenzior Date: Wed, 14 Oct 2009 16:03:36 -0500 Subject: [PATCH] Fix: Be more paranoid in checking DLC validity --- gatchat/gatmux.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/gatchat/gatmux.c b/gatchat/gatmux.c index 424a5743..0b42ebcf 100644 --- a/gatchat/gatmux.c +++ b/gatchat/gatmux.c @@ -306,13 +306,19 @@ int g_at_mux_raw_write(GAtMux *mux, const void *data, int towrite) void g_at_mux_feed_dlc_data(GAtMux *mux, guint8 dlc, const void *data, int tofeed) { - GAtMuxChannel *channel = mux->dlcs[dlc-1]; + GAtMuxChannel *channel; + int written; int offset; int bit; DBG("deliver_data: dlc: %d, channel: %p", dlc, channel); + if (dlc < 1 || dlc > MAX_CHANNELS) + return; + + channel = mux->dlcs[dlc-1]; + if (channel == NULL) return; @@ -330,11 +336,17 @@ void g_at_mux_feed_dlc_data(GAtMux *mux, guint8 dlc, void g_at_mux_set_dlc_status(GAtMux *mux, guint8 dlc, int status) { + GAtMuxChannel *channel; + DBG("Got status %d, for channel %d", status, channel); if (dlc < 1 || dlc > MAX_CHANNELS) return; + channel = mux->dlcs[dlc-1]; + if (channel == NULL) + return; + if (status & G_AT_MUX_DLC_STATUS_RTR) { GSList *l;