Stack-buffer overflow in pjsip_multipart_parse and pj_scan_get_quotes

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

 



Dear all —

Please find attached two sample programs that parse a SIP message using pjsip_parse_msg. Both programs cause a stack-buffer overflow.

# Version

trunk

# How to reproduce pjsip_multipart_parse overflow:

$ clang -o out multipart-parse-overflow.c pjsip/lib/libpjsip-x86_64-unknown-linux-gnu.a pjlib-util/lib/libpjlib-util-x86_64-unknown-linux-gnu.a pjlib/lib/libpj-x86_64-unknown-linux-gnu.a -Ipjlib/include/ -Ipjlib-util/include/ -Ipjsip/include -lpthread -lm -luuid

$ valgrind ./out

The resulting valgrind output is attached.

# How to reproduce pj_scan_get_quotes overflow:

$ clang -o out pj-scan-get-quotes-overflow.c pjsip/lib/libpjsip-x86_64-unknown-linux-gnu.a pjlib-util/lib/libpjlib-util-x86_64-unknown-linux-gnu.a pjlib/lib/libpj-x86_64-unknown-linux-gnu.a -Ipjlib/include/ -Ipjlib-util/include/ -Ipjsip/include -lpthread -lm -luuid

$ valgrind ./out

The resulting valgrind output is attached.

The issues have been found with afl-fuzz in ASAN mode.

Cheers

    -Stephan Zeisberg

==32732== Memcheck, a memory error detector
==32732== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==32732== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info
==32732== Command: ./out
==32732== 
17:02:09.308         os_core_unix.c !pjlib 2.7-svn for POSIX initialized
17:02:09.347         sip_endpoint.c  Creating endpoint instance...
17:02:09.394                  pjlib  select() I/O Queue created (0x59a6dd0)
17:02:09.396         sip_endpoint.c  Module "mod-msg-print" registered
17:02:09.400        sip_transport.c  Transport manager created.
==32732== Conditional jump or move depends on uninitialised value(s)
==32732==    at 0x419029: pj_scan_get_quotes (in /tmp/out)
==32732==    by 0x418F93: pj_scan_get_quote (in /tmp/out)
==32732==    by 0x405E16: int_parse_name_addr (in /tmp/out)
==32732==    by 0x403CB6: int_parse_uri_or_name_addr (in /tmp/out)
==32732==    by 0x405CF0: parse_hdr_fromto (in /tmp/out)
==32732==    by 0x405911: parse_hdr_to (in /tmp/out)
==32732==    by 0x403604: int_parse_msg (in /tmp/out)
==32732==    by 0x4032F3: pjsip_parse_msg (in /tmp/out)
==32732==    by 0x40259E: main (in /tmp/out)
==32732== 
==32732== Conditional jump or move depends on uninitialised value(s)
==32732==    at 0x41906D: pj_scan_get_quotes (in /tmp/out)
==32732==    by 0x418F93: pj_scan_get_quote (in /tmp/out)
==32732==    by 0x405E16: int_parse_name_addr (in /tmp/out)
==32732==    by 0x403CB6: int_parse_uri_or_name_addr (in /tmp/out)
==32732==    by 0x405CF0: parse_hdr_fromto (in /tmp/out)
==32732==    by 0x405911: parse_hdr_to (in /tmp/out)
==32732==    by 0x403604: int_parse_msg (in /tmp/out)
==32732==    by 0x4032F3: pjsip_parse_msg (in /tmp/out)
==32732==    by 0x40259E: main (in /tmp/out)
==32732== 
==32732== 
==32732== HEAP SUMMARY:
==32732==     in use at exit: 77,920 bytes in 12 blocks
==32732==   total heap usage: 21 allocs, 9 frees, 85,204 bytes allocated
==32732== 
==32732== LEAK SUMMARY:
==32732==    definitely lost: 0 bytes in 0 blocks
==32732==    indirectly lost: 0 bytes in 0 blocks
==32732==      possibly lost: 0 bytes in 0 blocks
==32732==    still reachable: 77,920 bytes in 12 blocks
==32732==         suppressed: 0 bytes in 0 blocks
==32732== Rerun with --leak-check=full to see details of leaked memory
==32732== 
==32732== For counts of detected and suppressed errors, rerun with: -v
==32732== Use --track-origins=yes to see where uninitialised values come from
==32732== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
==32532== Memcheck, a memory error detector
==32532== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==32532== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info
==32532== Command: ./out
==32532== 
==32532== Conditional jump or move depends on uninitialised value(s)
==32532==    at 0x40DA05: pjsip_multipart_parse (in /tmp/out)
==32532==    by 0x403873: int_parse_msg (in /tmp/out)
==32532==    by 0x4032F3: pjsip_parse_msg (in /tmp/out)
==32532==    by 0x40259E: main (in /tmp/out)
==32532== 
==32532== Use of uninitialised value of size 8
==32532==    at 0x40DA6E: pjsip_multipart_parse (in /tmp/out)
==32532==    by 0x403873: int_parse_msg (in /tmp/out)
==32532==    by 0x4032F3: pjsip_parse_msg (in /tmp/out)
==32532==    by 0x40259E: main (in /tmp/out)
==32532== 
==32532== Conditional jump or move depends on uninitialised value(s)
==32532==    at 0x40DA71: pjsip_multipart_parse (in /tmp/out)
==32532==    by 0x403873: int_parse_msg (in /tmp/out)
==32532==    by 0x4032F3: pjsip_parse_msg (in /tmp/out)
==32532==    by 0x40259E: main (in /tmp/out)
==32532== 
==32532== 
==32532== HEAP SUMMARY:
==32532==     in use at exit: 80,320 bytes in 15 blocks
==32532==   total heap usage: 24 allocs, 9 frees, 90,676 bytes allocated
==32532== 
==32532== LEAK SUMMARY:
==32532==    definitely lost: 0 bytes in 0 blocks
==32532==    indirectly lost: 0 bytes in 0 blocks
==32532==      possibly lost: 0 bytes in 0 blocks
==32532==    still reachable: 80,320 bytes in 15 blocks
==32532==         suppressed: 0 bytes in 0 blocks
==32532== Rerun with --leak-check=full to see details of leaked memory
==32532== 
==32532== For counts of detected and suppressed errors, rerun with: -v
==32532== Use --track-origins=yes to see where uninitialised values come from
==32532== ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
#include <stdio.h>
#include <stdint.h>
#include <unistd.h>
#include <pjlib.h>
#include <pjlib-util.h>
#include <pjsip.h>

pj_caching_pool caching_pool;
pjsip_endpoint *endpt;

int main(void) {
  pj_pool_t *pool;
  pj_size_t msg_size;
  pj_status_t rc;
  pjsip_parser_err_report err_list;

  rc = pj_init();
  pj_list_init(&err_list);

  pj_caching_pool_init( &caching_pool, &pj_pool_factory_default_policy,
			  (2*1024*1024) );

  rc = pjsip_endpt_create(&caching_pool.factory, "endpt", &endpt);

  if (rc != PJ_SUCCESS) {
	   pj_caching_pool_destroy(&caching_pool);
	   return rc;
  }

	pool = pjsip_endpt_create_pool(endpt, NULL, 800, 800);

  char packet [] ="\x52\x45\x47\x49\x53\x54\x45\x52\x20\x73\x69\x70\x3A\x31\x39\x32"
    "\x32\x20\x53\x49\x50\x2F\x32\x2E\x30\x0D\x0A\x56\x69\x61\x3A\x20"
    "\x53\x49\x50\x2F\x32\x2E\x30\x2F\x55\x44\x50\x20\x31\x39\x32\x2E"
    "\x31\x36\x38\x2E\x31\x30\x2E\x34\x31\x3A\x31\x33\x34\x33\x34\x3B"
    "\x62\x72\x61\x6E\x63\x68\x3D\x7A\x2D\x2D\x2D\x64\x38\x37\x35\x34"
    "\x7A\x2D\x3B\x72\x70\x6F\x72\x74\x0D\x0A\x4D\x61\x78\x2D\x46\x6F"
    "\x72\x77\x61\x72\x64\x73\x3A\x20\x37\x30\x0D\x0A\x45\x78\x70\x69"
    "\x72\x65\x73\x3A\x20\x33\x36\x30\x30\x0D\x0A\x41\x63\x63\x65\x70"
    "\x74\x3A\x20\x74\x65\x78\x74\x2F\x68\x74\x6D\x6C\x2C\x20\x61\x70"
    "\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x78\x68\x74\x6D\x6C\x2B"
    "\x78\x6D\x6C\x2C\x20\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E"
    "\x2F\x78\x6D\x6C\x3B\x71\x3D\x30\x2E\x39\x2C\x20\x2A\x2F\x2A\x3B"
    "\x71\x3D\x30\x2E\x38\x0D\x0A\x4D\x69\x6E\x2D\x45\x78\x70\x69\x72"
    "\x65\x73\x3A\x20\x36\x30\x0D\x0A\x43\x6F\x6E\x74\x65\x6E\x74\x2D"
    "\x4C\x65\x6E\x67\x74\x68\x3A\x20\x36\x38\x31\x33\x37\x0D\x0A\x43"
    "\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65\x3A\x20\x6D\x75\x6C"
    "\x74\x69\x70\x61\x72\x74\x2F\x66\x6F\x72\x6D\x2D\x64\x61\x74\x61"
    "\x3B\x20\x54\x6F\x75\x6E\x64\x61\x72\x79\x3D\x2D\x2D\x2D\x2D\x2D"
    "\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D"
    "\x2D\x2D\x2D\x2D\x2D\x2D\x39\x37\x34\x37\x36\x37\x32\x39\x39\x38"
    "\x35\x32\x34\x39\x38\x39\x32\x39\x35\x33\x31\x36\x31\x30\x35\x37"
    "\x35\x0D\x0A\x0D\x0A\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D"
    "\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74"
    "\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74\x74";

  pjsip_parse_msg(pool, packet, sizeof(packet), &err_list);

  return 0;
}
#include <stdio.h>
#include <stdint.h>
#include <unistd.h>
#include <pjlib.h>
#include <pjlib-util.h>
#include <pjsip.h>

pj_caching_pool caching_pool;
pjsip_endpoint *endpt;

int main(void) {
  pj_pool_t *pool;
  pj_size_t msg_size;
  pj_status_t rc;
  pjsip_parser_err_report err_list;

  rc = pj_init();
  pj_list_init(&err_list);

  pj_caching_pool_init( &caching_pool, &pj_pool_factory_default_policy,
			  (2*1024*1024) );

  rc = pjsip_endpt_create(&caching_pool.factory, "endpt", &endpt);

  if (rc != PJ_SUCCESS) {
	   pj_caching_pool_destroy(&caching_pool);
	   return rc;
  }

	pool = pjsip_endpt_create_pool(endpt, NULL, 800, 800);

  char packet [] ="\x52\x45\x47\x49\x53\x54\x45\x52\x20\x73\x69\x70\x3A\x31\x39\x32"
    "\x32\x20\x53\x49\x50\x2F\x32\x2E\x30\x0D\x0A\x56\x69\x61\x3A\x20"
    "\x53\x49\x50\x2F\x32\x2E\x30\x2F\x55\x44\x50\x20\x31\x3A\x31\x33"
    "\x34\x33\x34\x3B\x62\x72\x61\x6E\x63\x68\x3D\x7A\x7A\x2D\x3B\x72"
    "\x70\x6F\x72\x74\x0D\x0A\x4D\x61\x78\x2D\x46\x6F\x72\x77\x61\x72"
    "\x64\x73\x3A\x20\x37\x30\x0D\x0A\x43\x49\x6E\x74\x61\x63\x74\x3A"
    "\x30\x30\x39\x40\x31\x3A\x31\x33\x38\x64\x35\x66\x36\x39\x3E\x0D"
    "\x0A\x54\x6F\x3A\x20\x22\x50\x68\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x1D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x2D\x2D\x2D\x2D\x3B"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0C\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0C"
    "\xFB\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x11\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\xFA\x0C\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x45\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x03\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\xFF\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x1D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x00\x10\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x20"
    "\x00\x00\x00\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x2D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D"
    "\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D\x0D";

  pjsip_parse_msg(pool, packet, sizeof(packet), &err_list);

  return 0;
}
_______________________________________________
Visit our blog: http://blog.pjsip.org

pjsip mailing list
pjsip@xxxxxxxxxxxxxxx
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