summaryrefslogtreecommitdiff
path: root/gweb
diff options
context:
space:
mode:
authorThierry Boureille <thierry.boureille@gmail.com>2011-12-19 03:44:48 +0100
committerDaniel Wagner <daniel.wagner@bmw-carit.de>2012-01-05 10:14:41 +0100
commit3f3a5b5d99080f32112c8bcec32ad4f8421d6459 (patch)
tree95d8012e1810983c15622366d475ea3ea72c28c7 /gweb
parenta1115c6d64c31c6293c4243f9bfbf97b7c35a88a (diff)
downloadconnman-3f3a5b5d99080f32112c8bcec32ad4f8421d6459.tar.gz
connman-3f3a5b5d99080f32112c8bcec32ad4f8421d6459.tar.bz2
connman-3f3a5b5d99080f32112c8bcec32ad4f8421d6459.zip
gweb: Add null pointer checks to avoid connman unstability
Fix null pointer derefencing in "free_session" and "process_send_buffer" functions
Diffstat (limited to 'gweb')
-rw-r--r--gweb/gweb.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/gweb/gweb.c b/gweb/gweb.c
index 3379116a..9cf4b02f 100644
--- a/gweb/gweb.c
+++ b/gweb/gweb.c
@@ -144,13 +144,14 @@ static inline void debug(GWeb *web, const char *format, ...)
static void free_session(struct web_session *session)
{
- GWeb *web = session->web;
+ GWeb *web;
if (session == NULL)
return;
g_free(session->request);
+ web = session->web;
if (session->resolv_action > 0)
g_resolv_cancel_lookup(web->resolv, session->resolv_action);
@@ -442,10 +443,14 @@ static inline void call_result_func(struct web_session *session, guint16 status)
static gboolean process_send_buffer(struct web_session *session)
{
- GString *buf = session->send_buffer;
+ GString *buf;
gsize count, bytes_written;
GIOStatus status;
+ if (session == NULL)
+ return FALSE;
+
+ buf = session->send_buffer;
count = buf->len;
if (count == 0) {