pjsua: parse error --id on ARM ?

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

 



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
>



[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