--- a/libpurple/protocols/msn/servconn.c Wed Nov 12 19:15:24 2014 -0500 +++ b/libpurple/protocols/msn/servconn.c Thu Nov 13 00:56:55 2014 -0500 @@ -389,7 +389,7 @@ if (ret < 0 && errno == EAGAIN) ret = 0; - if (ret >= 0 && ret < len) { + if (ret >= 0 && (size_t)ret < len) { if (servconn->tx_handler == 0) servconn->tx_handler = purple_input_add( servconn->fd, PURPLE_INPUT_WRITE, @@ -462,7 +462,8 @@ if (servconn->payload_len) { - if (servconn->payload_len > servconn->rx_len) + if (servconn->rx_len < 0 + || servconn->payload_len > (gsize)servconn->rx_len) /* The payload is still not complete. */ break;