svn version of branch 1.x broken (fix included)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Toni,

Thanks for the report, just in time before our 1.16 release. We just
fixed this in #1635 (https://trac.pjsip.org/repos/ticket/1635).

Best regards,
Ming

On Thu, Mar 7, 2013 at 3:27 PM, Toni Rutar Lokar <buldozer at aufbix.org> wrote:
>  Hi all,
>
>
>  Some of the later changes must have broken the 1.x branch, as it'll crash
> on making a call
>
> --- pjsua_media.h ---
>
> pj_status_t pjsua_media_channel_update(pjsua_call_id call_id,
>                                        const pjmedia_sdp_session *local_sdp,
>                                        const pjmedia_sdp_session
> *remote_sdp)
> {
>     unsigned i;
>     int prev_media_st;
>     pjsua_call *call = &pjsua_var.calls[call_id];
>     pjmedia_session_info sess_info;
>     pjmedia_stream_info *si = NULL;
>     pj_status_t status;
>     pj_bool_t media_changed = PJ_FALSE;
>     int audio_idx;
>
>     if (!pjsua_var.med_endpt) {
>         /* We're being shutdown */
>         return PJ_EBUSY;
>     }
>
>     /* Create media session info based on SDP parameters. */
>     status = pjmedia_session_info_from_sdp( call->inv->pool_prov,
>                                             pjsua_var.med_endpt,
>                                             PJMEDIA_MAX_SDP_MEDIA,
> &sess_info,
>                                             local_sdp, remote_sdp);
>     if (status != PJ_SUCCESS)
>         return status;
>
>         /* Override ptime, if this option is specified. */
>         if (pjsua_var.media_cfg.ptime != 0) {
>                 si->param->setting.frm_per_pkt = (pj_uint8_t)
>                         (pjsua_var.media_cfg.ptime /
> si->param->info.frm_ptime);
>                 if (si->param->setting.frm_per_pkt == 0)
>                         si->param->setting.frm_per_pkt = 1;
>         }
>
>         /* Disable VAD, if this option is specified. */
>         if (pjsua_var.media_cfg.no_vad) {
>                 si->param->setting.vad = 0;
>         }
>
>
> -----
>
>  As you can see, 'si' is initialized with NULL, and then the fields of the
> structure are modified, which, of course, rises the exception.
>
>  For now I fixed it by moving the code which modifies the 'si' structure
> after the
>
>     /* Find which session is audio */
>     PJ_ASSERT_RETURN(call->audio_idx != -1, PJ_EBUG);
>     PJ_ASSERT_RETURN(call->audio_idx < (int)sess_info.stream_cnt, PJ_EBUG);
>     si = &sess_info.stream_info[call->audio_idx];
>
>
>  ... which is actually where 'si' is properly initialized.
>
>
>  Greets
>
>
> ----------------------------------------------------------------
> This message was sent using IMP, the Internet Messaging Program.
>
>
> _______________________________________________
> Visit our blog: http://blog.pjsip.org
>
> pjsip mailing list
> pjsip at lists.pjsip.org
> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org



[Index of Archives]     [Asterisk Users]     [Asterisk App Development]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [Linux API]
  Powered by Linux