diff options
author | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2010-06-18 02:48:27 +0000 |
---|---|---|
committer | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2010-06-18 02:48:27 +0000 |
commit | 63f047eb5c4a21d42c14325ffde815338f40488e (patch) | |
tree | 7015e66e230d5ace2bf5bd5efa0c47c9ff9a55a2 | |
parent | 12e6c3c5a0f3d2cac44569fd19a7b0c467cb7ef9 (diff) |
fixes crash on cancel.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@2581 ee746299-78ed-0310-b773-934348b2243d
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | libsylph/pop.c | 4 | ||||
-rw-r--r-- | libsylph/session.c | 5 |
3 files changed, 15 insertions, 0 deletions
@@ -1,3 +1,9 @@ +2010-06-18 + + * libsylph/pop.c + libsylph/session.c: protect against session->sock == NULL + (fixes crash on cancel). + 2010-06-17 * libsylph/prefs_common.h diff --git a/libsylph/pop.c b/libsylph/pop.c index aab918ee..4be646ba 100644 --- a/libsylph/pop.c +++ b/libsylph/pop.c @@ -890,6 +890,10 @@ static gint pop3_session_recv_data_as_file_finished(Session *session, FILE *fp, if (pop3_retr_recv(pop3_session, fp, len) < 0) return -1; + /* disconnected? */ + if (!session->sock) + return -1; + if (pop3_session->msg[pop3_session->cur_msg].recv_time == RECV_TIME_DELETE || (pop3_session->ac_prefs->rmmail && diff --git a/libsylph/session.c b/libsylph/session.c index 7bb29347..0b561eda 100644 --- a/libsylph/session.c +++ b/libsylph/session.c @@ -419,6 +419,7 @@ gint session_send_msg(Session *session, SessionMsgType type, const gchar *msg) { gboolean ret; + g_return_val_if_fail(session->sock != NULL, -1); g_return_val_if_fail(session->write_buf == NULL, -1); g_return_val_if_fail(msg != NULL, -1); g_return_val_if_fail(msg[0] != '\0', -1); @@ -441,6 +442,7 @@ gint session_send_msg(Session *session, SessionMsgType type, const gchar *msg) gint session_recv_msg(Session *session) { + g_return_val_if_fail(session->sock != NULL, -1); g_return_val_if_fail(session->read_msg_buf->len == 0, -1); session->state = SESSION_RECV; @@ -479,6 +481,7 @@ gint session_send_data(Session *session, FILE *data_fp, guint size) { gboolean ret; + g_return_val_if_fail(session->sock != NULL, -1); g_return_val_if_fail(session->write_data_fp == NULL, -1); g_return_val_if_fail(data_fp != NULL, -1); g_return_val_if_fail(size != 0, -1); @@ -514,6 +517,7 @@ gint session_send_data(Session *session, FILE *data_fp, guint size) gint session_recv_data(Session *session, guint size, const gchar *terminator) { + g_return_val_if_fail(session->sock != NULL, -1); g_return_val_if_fail(session->read_data_buf->len == 0, -1); session->state = SESSION_RECV; @@ -555,6 +559,7 @@ static gboolean session_recv_data_idle_cb(gpointer data) gint session_recv_data_as_file(Session *session, guint size, const gchar *terminator) { + g_return_val_if_fail(session->sock != NULL, -1); g_return_val_if_fail(session->read_data_pos == 0, -1); g_return_val_if_fail(session->read_data_fp == NULL, -1); |