Description

When registering a soft client running on my Android phone (Grandstream Wave), Kamailio crashes every time when the client registers. When setting the debug level below 3 Kamailio does not crash. I have only found the problem with this SIP client. Others are working fine.

Troubleshooting

Reproduction

Set debug level greather than 2 and register the Grandstream Wave soft client from an Android phone. Kamailio then crashes.

Log Messages

just before crashing I get the following message:
0(7819) ERROR: [core/udp_server.c:484]: udp_rcv_loop(): print buffer building failed (10/16/4)

Possible Solutions

The problem seems to come from non-printable characters sent by the SIP client causing Kamailio to crash.

Changing line 482 in udp_server.c from
l = snprintf(printbuf+j, 6, " %02X ", buf[i]);
to
l = snprintf(printbuf+j, 6, " %02X ", (unsigned char)buf[i]);

fixes the problem.

The compiler treats buf[i] as a signed integer and prepends 'FFFFFF' to the string making it longer than 6 characters. Casting buf[i] as an unsigned char prevents Kamailio from crashing.

Additional Information

version: kamailio 5.1.0 (x86_64/linux)
flags: STATS: Off, USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM, SHM_MMAP, PKG_MALLOC, Q_MALLOC, F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST, HAVE_RESOLV_RES
ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144, MAX_LISTEN 16, MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB
poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.
id: unknown
compiled with gcc 5.3.1

Ubuntu 16.04 (Xenial)


You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.