Index: channels/chan_sip.c =================================================================== --- channels/chan_sip.c (revision 144759) +++ channels/chan_sip.c (working copy) @@ -189,6 +189,8 @@ #define XMIT_ERROR -2 +#define SIP_RESERVED ";/?:@&=+$,# " + /* #define VOCAL_DATA_HACK */ #define DEFAULT_DEFAULT_EXPIRY 120 @@ -6113,6 +6115,18 @@ if (authuser) *authuser++ = '\0'; } + if (strsep(&username, SIP_RESERVED)) { + ast_log(LOG_WARNING, "Reserved character '%c' used in username portion of register line. We will not send REGISTER for this user\n", *username); + return -1; + } + if (!ast_strlen_zero(secret) && strsep(&secret, SIP_RESERVED)) { + ast_log(LOG_WARNING, "Reserved character '%c' used in secret portion of register line. We will not send REGISTER for this user\n", *secret); + return -1; + } + if (!ast_strlen_zero(authuser) && strsep(&authuser, SIP_RESERVED)) { + ast_log(LOG_WARNING, "Reserved character '%c' used in authuser portion of register line. We will not send REGISTER for this user\n", *authuser); + return -1; + } /* split host[:port][/contact] */ callback = strchr(hostname, '/'); if (callback)