[pjsip] Bug in pjmedia_rtp_decode_rtp (rtp.c)?

Benny Prijono bennylp at teluu.com
Thu Aug 20 09:07:26 EDT 2009


On Thu, Aug 20, 2009 at 1:16 PM, Thomas Falk<thfalk at gmail.com> wrote:
> Hello,
>
> I have send this some time ago, but got no answer and nothing happend.
>

It happened sometimes (more often lately). :)

I just fixed this in http://trac.pjsip.org/repos/ticket/952

Thanks!
 Benny


> I'm using an extended header in the rtp transfer of audio data. As I
> have found, the code in
> the function pjmedia_rtp_decode_rtp (in pjmedia/src/pjmedia/rtp.c)
> calculates the size of the extended header in the wrong way.
>
> The following code calculates the offset of the payload after the
> extended header:
>
> Line 169:
>   /* Adjust offset if RTP extension is used. */
>   if ((*hdr)->x) {
>       pjmedia_rtp_ext_hdr *ext = (pjmedia_rtp_ext_hdr*)
>                                   (((pj_uint8_t*)pkt) + offset);
>       offset += (pj_ntohs(ext->length) * sizeof(pj_uint32_t));
>   }
>
> According to RFC 3550 the length of the extended header may be 0, even
> if there is an extended header. In this case the exented header
> consist of the extension header (32 bit) only.
>
> In the above code ext->length is this length of the extended header.
> If there is an extended header the offset must be calculated to at
> least 1.
>
> Here is the patch I'm using with pjmedia-1.3, the same applies to v1.4:
>
> Index: ../third_party/pjproject-1.3/pjmedia/src/pjmedia/rtp.c
> ===================================================================
> --- ../third_party/pjproject-1.3/pjmedia/src/pjmedia/rtp.c      (revision 4031)
> +++ ../third_party/pjproject-1.3/pjmedia/src/pjmedia/rtp.c      (working copy)
> @@ -170,7 +170,7 @@
>     if ((*hdr)->x) {
>        pjmedia_rtp_ext_hdr *ext = (pjmedia_rtp_ext_hdr*)
>                                    (((pj_uint8_t*)pkt) + offset);
> -       offset += (pj_ntohs(ext->length) * sizeof(pj_uint32_t));
> +       offset += ((pj_ntohs(ext->length)+1) * sizeof(pj_uint32_t));
>     }
>
> Best regards,
>
> Thomas Falk
>
> _______________________________________________
> 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
>




More information about the pjsip mailing list