[pjsip] pjsua: parse error --id on ARM ?

Benny Prijono bennylp at teluu.com
Fri Nov 6 05:30:59 CST 2009


I would agree with Samuel, the problem is with *printf() functions in
newlib/uclibc, and you shoul fix that instead. We use "%.*s" format
pretty much everywhere, there are lots of them throughout the library,
and chances are some of them will give NULL in the pointer argument.
Or worse, an arbitrary value that may crash your little board.

Cheers
 Benny

On Thu, Nov 5, 2009 at 9:42 PM, Peter Lukac <p.lukac at emtest.sk> wrote:
> Hi i solved my problem:
>
> in file
> $PROJECT_DIRECTORY/pjsip/src/pjsua-lib/pjsua_acc.c
>
> and in function:
>
> PJ_DEF(pj_status_t) pjsua_acc_create_uac_contact( pj_pool_t *pool,
>                          pj_str_t *contact,
>                          pjsua_acc_id acc_id,
>                          const pj_str_t *suri)
>
>
> is line :
>
> contact->slen = pj_ansi_snprintf(contact->ptr, PJSIP_MAX_URL_SIZE,
>                     "%.*s%s<%s:%.*s%s%s%.*s%s:%d%s%.*s>%.*s",
>                     (int)acc->display.slen,
>                     acc->display.ptr,
>                     (acc->display.slen?" " : ""),
>                     (secure ? PJSUA_SECURE_SCHEME : "sip"),
>                     (int)acc->user_part.slen,
>                     acc->user_part.ptr,
>                     (acc->user_part.slen?"@":""),
>                     beginquote,
>                     (int)local_addr.slen,
>                     local_addr.ptr,
>                     endquote,
>                     local_port,
>                     transport_param,
>                     (int)acc->cfg.contact_uri_params.slen,
>                     acc->cfg.contact_uri_params.ptr,
>                     (int)acc->cfg.contact_params.slen,
>                     acc->cfg.contact_params.ptr);
>
>
> arguments:
> acc->display.ptr
> acc->cfg.contact_uri_params.ptr
> acc->cfg.contact_params.ptr
>
> are NULL strings. Function pj_ansi_snprintf("%s",null_string) with null_string
> pointer generate "(null)" string...is interesting because on i386 is this
> string too NULL and function do not create "(null)" string :)
>
> So solution is simple, but i don't know whether is sufficient because is lot of
> code where is used pj_ansi_snprintf with potentian null_string arguments.
> Maybe this fix should by in function pj_ansi_snprintf. but for this situation
> it works... :)
>
> Parameters:
>
> acc->display.ptr
> acc->cfg.contact_uri_params.ptr
> acc->cfg.contact_params.ptr
>
> replace with
>
> (acc->display.ptr? acc->display.ptr:"")
> (acc->cfg.contact_uri_params.ptr?acc->cfg.contact_uri_params.ptr:"")
> (acc->cfg.contact_params.ptr?acc->cfg.contact_params.ptr:"")
>
>
> ...have a nice day
>
>
>> Hello,
>>
>> I think your problem comes from ulibc in function vsprintf or sprintf. I
>> had this problem in newlib 2 years ago.
>>
>> This function seems not correctly manages format : %.*s.
>> I think
>>     printf("%.*s\n",len,(char *)NULL); *display*s (null)
>>     snprintf(ptr, 40, "%.*s", len, (char *)NULL) *give* ptr = "(null)".
>>
>>
>> Samuel
>>
>> Antonio Anton a écrit :
>> > Hi,
>> >
>> > I have the same error for MIPS architecture ; I posted exactly same
>> > details of yours few days ago.
>> >
>> > Hope any experienced guru can help us. I have tried to trace back where
>> > the issue may be but I have no knowledge of the internals of PJSIP,
>> > structures, etc.. and I don't know where to start looking for...
>> >
>> > Regards
>> > Antonio
>> >
>> > El mié, 04-11-2009 a las 16:05 +0100, Peter Lukac escribió:
>> >> hello,
>> >> I have little problem :)
>> >>
>> >> I have embeded device on ARM CPU 255 architecture 5TE and i cross
>> >> compile pjsip library as:
>> >>
>> >> export CFLAGS="-pipe -I/usr/toolchain-arm-26/usr/include
>> >> -I/usr/toolchain- arm-26/include --sysroot=/usr/toolchain-arm-26/
>> >> -isysroot /usr/toolchain- arm-26-mtune=xscale -mabi=aapcs-linux
>> >> -msoft-float"
>> >>
>> >> ./configure --prefix=/opt/emtest/arm_install --host=arm-linux
>> >> --disable-oss make dep && make
>> >>
>> >> In my toolchain is used uclibc version 0.9.29 non standart libc.
>> >>
>> >> For my testing purpose i using pjsua test application. but when i
>> >> starting aplication :
>> >>
>> >> ./pjsua --id sip:pc1 at 192.168.32.17 --registrar sip:192.168.32.123
>> >> --realm asterisk --username pc1 --password heslo --app-log-level 6
>> >> --log-level 6
>> >>
>> >> i get error:
>> >>
>> >>  15:41:46.080      sip_reg.c  Invalid Contact:
>> >> "(null)<sip:pc1 at 192.168.32.17:5060(null)>(null)"
>> >>
>> >> here is full output:
>> >>
>> >>  15:41:45.535 os_core_unix.c  pjlib 1.4.5 for POSIX initialized
>> >>  15:41:45.540 sip_endpoint.c  Creating endpoint instance...
>> >>  15:41:45.548          pjlib  select() I/O Queue created (0x21c500)
>> >>  15:41:45.550 sip_endpoint.c  Module "mod-msg-print" registered
>> >>  15:41:45.553 sip_transport.  Transport manager created.
>> >>  15:41:45.557 sip_endpoint.c  Module "mod-pjsua-log" registered
>> >>  15:41:45.560 sip_endpoint.c  Module "mod-tsx-layer" registered
>> >>  15:41:45.563 sip_endpoint.c  Module "mod-stateful-util" registered
>> >>  15:41:45.565 sip_endpoint.c  Module "mod-ua" registered
>> >>  15:41:45.568 sip_endpoint.c  Module "mod-100rel" registered
>> >>  15:41:45.570 sip_endpoint.c  Module "mod-pjsua" registered
>> >>  15:41:45.573 sip_endpoint.c  Module "mod-invite" registered
>> >>  15:41:45.856       pa_dev.c  PortAudio sound library initialized,
>> >> status=0 15:41:45.857       pa_dev.c  PortAudio host api count=1
>> >>  15:41:45.860       pa_dev.c  Sound device count=2
>> >>  15:41:45.868          pjlib  select() I/O Queue created (0x22d654)
>> >>  15:41:45.880   conference.c  Creating conference bridge with 254 ports
>> >>  15:41:46.024 sip_endpoint.c  Module "mod-evsub" registered
>> >>  15:41:46.026 sip_endpoint.c  Module "mod-presence" registered
>> >>  15:41:46.029        evsub.c  Event pkg "presence" registered by
>> >> mod-presence 15:41:46.031 sip_endpoint.c  Module "mod-refer" registered
>> >>  15:41:46.033        evsub.c  Event pkg "refer" registered by mod-refer
>> >>  15:41:46.035 sip_endpoint.c  Module "mod-pjsua-pres" registered
>> >>  15:41:46.038 sip_endpoint.c  Module "mod-pjsua-im" registered
>> >>  15:41:46.041 sip_endpoint.c  Module "mod-pjsua-options" registered
>> >>  15:41:46.044   pjsua_core.c  1 SIP worker threads created
>> >>  15:41:46.046   pjsua_core.c  pjsua version 1.4.5 for
>> >> arm-unknown-linux-gnu initialized
>> >>  15:41:46.049 sip_endpoint.c  Module "mod-default-handler" registered
>> >>  15:41:46.054   pjsua_core.c  SIP UDP socket reachable at
>> >> 192.168.32.17:5060 15:41:46.059    udp0x243d70  SIP UDP transport
>> >> started, published address is 192.168.32.17:5060
>> >>  15:41:46.062    pjsua_acc.c  Account <sip:192.168.32.17:5060> added
>> >> with id 0 15:41:46.068    tcplis:5060  SIP TCP listener ready for
>> >> incoming connections at 192.168.32.17:5060
>> >>  15:41:46.071    pjsua_acc.c  Account
>> >> <sip:192.168.32.17:5060;transport=TCP> added with id 1
>> >>  15:41:46.074    pjsua_acc.c  Account sip:pc1 at 192.168.32.17 added with
>> >> id 2 15:41:46.080      sip_reg.c  Invalid Contact:
>> >> "(null)<sip:pc1 at 192.168.32.17:5060(null)>(null)"
>> >>  15:41:46.083    pjsua_acc.c  Client registration initialization error:
>> >> Invalid URI (PJSIP_EINVALIDURI) [status=171039]
>> >>  15:41:46.085    pjsua_acc.c  Unable to create registration: Invalid URI
>> >> (PJSIP_EINVALIDURI) [status=171039]
>> >>  15:41:46.089  pjsua_media.c  RTP socket reachable at 192.168.32.17:4000
>> >>  15:41:46.091  pjsua_media.c  RTCP socket reachable at
>> >> 192.168.32.17:4001 15:41:46.098  pjsua_media.c  RTP socket reachable at
>> >> 192.168.32.17:4002 15:41:46.100  pjsua_media.c  RTCP socket reachable at
>> >> 192.168.32.17:4003 15:41:46.107  pjsua_media.c  RTP socket reachable at
>> >> 192.168.32.17:4004 15:41:46.109  pjsua_media.c  RTCP socket reachable at
>> >> 192.168.32.17:4005 15:41:46.116  pjsua_media.c  RTP socket reachable at
>> >> 192.168.32.17:4006 15:41:46.118  pjsua_media.c  RTCP socket reachable at
>> >> 192.168.32.17:4007
>> >>
>> >> Account list:
>> >>   [ 0] <sip:192.168.32.17:5060>: does not register
>> >>        Online status: Online
>> >>   [ 1] <sip:192.168.32.17:5060;transport=TCP>: does not register
>> >>        Online status: Online
>> >>  *[ 2] sip:pc1 at 192.168.32.17: 100/In Progress (expires=-1)
>> >>        Online status: Online
>> >> Buddy list:
>> >>  -none-
>> >>
>> >> When i try enter account information from menu i get same result:
>> >>>>> +a
>> >>
>> >> Your SIP URL: (empty to cancel): sip:pc1 at 192.168.32.17
>> >> URL of the registrar: (empty to cancel): sip:192.168.32.123
>> >> Auth Realm: (empty to cancel): asterisk
>> >> Auth Username: (empty to cancel): pc1
>> >> Auth Password: (empty to cancel): heslo
>> >>  15:51:04.794    pjsua_acc.c  Account sip:pc1 at 192.168.32.17 added with
>> >> id 2 15:51:04.798      sip_reg.c  Invalid Contact:
>> >> "(null)<sip:pc1 at 192.168.32.17:5060(null)>(null)"
>> >>  15:51:04.798    pjsua_acc.c  Client registration initialization error:
>> >> Invalid URI (PJSIP_EINVALIDURI) [status=171039]
>> >>  15:51:04.799    pjsua_acc.c  Unable to create registration: Invalid URI
>> >> (PJSIP_EINVALIDURI) [status=171039]
>> >>
>> >> On 386 it works fine. i try last trunk version 2985. and
>> >> pjproject-1.4.5.tar.bz2 from download page too and i get same error.
>> >>
>> >> Can me somebody help?
>> >>
>> >>
>> >> ...thank you
>> >>
>> >>
>> >>
>> >>
>> >>
>> >> _______________________________________________
>> >> 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
>> >
>> > _______________________________________________
>> > 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
>>
>> !DSPAM:153,4af1eea221075315134984!
>
>
> _______________________________________________
> 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