---
 src/handlers.c |   27 +++++++++++++++++++++++----
 1 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/src/handlers.c b/src/handlers.c
index 0377937..9100e1b 100644
--- a/src/handlers.c
+++ b/src/handlers.c
@@ -834,8 +834,10 @@ static int gg_session_handle_recv_msg(struct gg_session 
*sess, uint32_t type, co
        e->event.msg.seq = gg_fix32(r->seq);
 
        e->event.msg.message = (unsigned char*) gg_encoding_convert(payload, 
GG_ENCODING_CP1250, sess->encoding, length, -1);
-       if (e->event.msg.message == NULL)
+       if (e->event.msg.message == NULL) {
+               gg_debug_session(sess, GG_DEBUG_MISC, "// 
gg_session_handle_recv_msg() out of memory\n");
                goto fail;
+       }
 
        gg_session_send_msg_ack(sess, gg_fix32(r->seq));
        return 0;
@@ -923,6 +925,11 @@ static int gg_session_handle_recv_msg_80(struct gg_session 
*sess, uint32_t type,
 
        if (sess->encoding == GG_ENCODING_CP1250) {
                e->event.msg.message = (unsigned char*) strdup(packet + 
offset_plain);
+
+               if (e->event.msg.message == NULL) {
+                       gg_debug_session(sess, GG_DEBUG_MISC, "// 
gg_session_handle_recv_msg_80() out of memory\n");
+                       goto fail;
+               }
        } else {
                if (offset_plain > sizeof(struct gg_recv_msg80)) {
                        int len;
@@ -930,18 +937,30 @@ static int gg_session_handle_recv_msg_80(struct 
gg_session *sess, uint32_t type,
                        len = gg_message_html_to_text(NULL, packet + 
sizeof(struct gg_recv_msg80));
                        e->event.msg.message = malloc(len + 1);
 
-                       if (e->event.msg.message == NULL)
+                       if (e->event.msg.message == NULL) {
+                               gg_debug_session(sess, GG_DEBUG_MISC, "// 
gg_session_handle_recv_msg_80() out of memory\n");
                                goto fail;
+                       }
 
                        gg_message_html_to_text((char*) e->event.msg.message, 
packet + sizeof(struct gg_recv_msg80));
                } else {
                        e->event.msg.message = (unsigned char*) 
gg_encoding_convert(packet + offset_plain, GG_ENCODING_CP1250, sess->encoding, 
-1, -1);
+
+                       if (e->event.msg.message == NULL) {
+                               gg_debug_session(sess, GG_DEBUG_MISC, "// 
gg_session_handle_recv_msg_80() out of memory\n");
+                               goto fail;
+                       }
                }
        }
 
-       if (offset_plain > sizeof(struct gg_recv_msg80))
+       if (offset_plain > sizeof(struct gg_recv_msg80)) {
                e->event.msg.xhtml_message = gg_encoding_convert(packet + 
sizeof(struct gg_recv_msg80), GG_ENCODING_UTF8, sess->encoding, -1, -1);
-       else
+
+               if (e->event.msg.xhtml_message == NULL) {
+                       gg_debug_session(sess, GG_DEBUG_MISC, "// 
gg_session_handle_recv_msg_80() out of memory\n");
+                       goto fail;
+               }
+       } else
                e->event.msg.xhtml_message = NULL;
 
        gg_session_send_msg_ack(sess, gg_fix32(r->seq));
-- 
1.7.6.1

_______________________________________________
libgadu-devel mailing list
libgadu-devel@lists.ziew.org
http://lists.ziew.org/mailman/listinfo/libgadu-devel

Reply via email to