diff options
author | Thierry Boureille <thierry.boureille@gmail.com> | 2011-12-19 03:44:48 +0100 |
---|---|---|
committer | Daniel Wagner <daniel.wagner@bmw-carit.de> | 2012-01-05 10:14:41 +0100 |
commit | 3f3a5b5d99080f32112c8bcec32ad4f8421d6459 (patch) | |
tree | 95d8012e1810983c15622366d475ea3ea72c28c7 /gweb | |
parent | a1115c6d64c31c6293c4243f9bfbf97b7c35a88a (diff) | |
download | connman-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.c | 9 |
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) { |