Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo

Close

incoming file transfer as first message crash

Developers
2011-06-28
2013-03-28
  • Jochen De Smet
    Jochen De Smet
    2011-06-28

    What happened before:  finch user and miranda user connected to server; finch user initiated file transfer to miranda,  Miranda crashed because of a bug on my side.  Nothing weird yet.

    But then I restarted the miranda clients; the finch client never lost connection.   Initiated another file transfer from finch -> miranda.  The incoming file transfer request is the first direct message from the finch user coming in. This means that when the below code in process_incoming_message runs:

        } else if (g_str_has_prefix(contenttype, "text/x-msmsgsinvite")) {
            const gchar *callid = sipmsg_find_header(msg, "Call-ID");
            struct sip_session *session = sipe_session_find_chat_or_im(sipe_private,
                                           callid,
                                           from);
            struct sip_dialog *dialog = sipe_dialog_find(session, from);
            GSList *body = sipe_ft_parse_msg_body(msg->body);
            found = sipe_process_incoming_x_msmsgsinvite(sipe_private, dialog, body);
            sipe_utils_nameval_free(body);
            if (found) {
                sip_transport_response(sipe_private, msg, 200, "OK", NULL);
            }
    

    sipe_session_find_chat_or_im comes back with NULL, which a bit down the call changes causes a segfault when sipe_ft_incoming_transfer tries to access dialog->with to pass to sipe_ft_incoming_transfer.

    Is this a situation that should be handled, or am I missing something on my side ?

     
  • Jakub Adam
    Jakub Adam
    2011-06-29

    Hi Jochen,

    this was reproducible bug in SIPE, please retry with latest git snapshot.

    Thanks for reporting.