aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordvossel <dvossel@f38db490-d61c-443f-a65b-d21fe96a405b>2009-10-09 17:11:33 +0000
committerdvossel <dvossel@f38db490-d61c-443f-a65b-d21fe96a405b>2009-10-09 17:11:33 +0000
commit51f8afb8b4daa5498e68e358fc6a24417e57584b (patch)
treed4cbe5cd9ba36e7ee034f1a13a19742463a7737b
parent08475d82d579b56924e7669ed14e941965bead1a (diff)
Merged revisions 223132 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ........ r223132 | dvossel | 2009-10-09 11:54:02 -0500 (Fri, 09 Oct 2009) | 9 lines 'auth=' did not parse md5 secret correctly (closes issue #15949) Reported by: ebroad Patches: authparsefix.patch uploaded by ebroad (license 878) 15949_trunk.diff uploaded by dvossel (license 671) Tested by: ebroad ........ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.0@223135 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r--channels/chan_sip.c22
1 files changed, 10 insertions, 12 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 740bdd07f..1a2c800c7 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -21004,7 +21004,6 @@ static struct sip_auth *add_realm_authentication(struct sip_auth *authlist, cons
{
char authcopy[256];
char *username=NULL, *realm=NULL, *secret=NULL, *md5secret=NULL;
- char *stringp;
struct sip_auth *a, *b, *auth;
if (ast_strlen_zero(configuration))
@@ -21013,25 +21012,24 @@ static struct sip_auth *add_realm_authentication(struct sip_auth *authlist, cons
ast_debug(1, "Auth config :: %s\n", configuration);
ast_copy_string(authcopy, configuration, sizeof(authcopy));
- stringp = authcopy;
+ username = authcopy;
- username = stringp;
- realm = strrchr(stringp, '@');
+ /* split user[:secret] and relm */
+ realm = strrchr(username, '@');
if (realm)
*realm++ = '\0';
if (ast_strlen_zero(username) || ast_strlen_zero(realm)) {
ast_log(LOG_WARNING, "Format for authentication entry is user[:secret]@realm at line %d\n", lineno);
return authlist;
}
- stringp = username;
- username = strsep(&stringp, ":");
- if (username) {
- secret = strsep(&stringp, ":");
- if (!secret) {
- stringp = username;
- md5secret = strsep(&stringp, "#");
- }
+
+ /* parse username at ':' for secret, or '#" for md5secret */
+ if ((secret = strchr(username, ':'))) {
+ *secret++ = '\0';
+ } else if ((md5secret = strchr(username, '#'))) {
+ *md5secret++ = '\0';
}
+
if (!(auth = ast_calloc(1, sizeof(*auth))))
return authlist;