pjproject_bundled: Disable PJSIP_UNESCAPE_IN_PLACE
authorGeorge Joseph <gjoseph@digium.com>
Thu, 28 Apr 2016 21:54:07 +0000 (15:54 -0600)
committerGeorge Joseph <gjoseph@digium.com>
Thu, 28 Apr 2016 22:01:32 +0000 (17:01 -0500)
When pjsip_parse_uri is called with PJSIP_UNESCAPE_IN_PLACE enabled,
the input uri string will become corrupted if it contains escape sequences.
It's not possible to automatically strdup or strdupa the input string because
the output uri pj_str_t's will have pointers to chunks of the input string.
Getting around this would require more memory management code and wouldn't
be worth the savings of doing the unescape in place.

ASTERISK-25970 #close
Reported-by: Dmitriy Serov

Change-Id: I28dc0e599b5108f7959b9c46dc8278371b372f88

third-party/pjproject/patches/config_site.h

index 840d8b2..8e854b7 100644 (file)
 #define PJSIP_SAFE_MODULE              0
 #define PJ_HAS_STRICMP_ALNUM           0
 #define PJ_HASH_USE_OWN_TOLOWER                1
-#define PJSIP_UNESCAPE_IN_PLACE                1
+/*
+  It is imperative that PJSIP_UNESCAPE_IN_PLACE remain 0 or undefined.
+  Enabling it will result in SEGFAULTS when URIs containing escape sequences are encountered.
+*/
+#undef PJSIP_UNESCAPE_IN_PLACE
 #define PJSIP_MAX_PKT_LEN                      6000
 
 #undef PJ_TODO