[asterisk-commits] kharwell: branch 13 r431698 - /branches/13/res/res_pjsip/pjsip_configuration.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Wed Feb 11 12:02:11 CST 2015


Author: kharwell
Date: Wed Feb 11 12:02:08 2015
New Revision: 431698

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=431698
Log:
res_pjsip: dtls_handler causes Asterisk to crash

There have been a couple of times where a crash occurred in the dtls_handler
section of the code for res_pjsip. Unfortunately, in working this issue the
problem was unable to be reproduced. After looking at the backtraces and
through the code the current best guess as to why this happened might be due
to a reentrance problem and the strtok function. So, the current fix is to
convert the strtok function into the reentrant version of the function,
strtok_r.

ASTERISK-24741 #close
Reported by: Zane Conkle
Review: https://reviewboard.asterisk.org/r/4409/

Modified:
    branches/13/res/res_pjsip/pjsip_configuration.c

Modified: branches/13/res/res_pjsip/pjsip_configuration.c
URL: http://svnview.digium.com/svn/asterisk/branches/13/res/res_pjsip/pjsip_configuration.c?view=diff&rev=431698&r1=431697&r2=431698
==============================================================================
--- branches/13/res/res_pjsip/pjsip_configuration.c (original)
+++ branches/13/res/res_pjsip/pjsip_configuration.c Wed Feb 11 12:02:08 2015
@@ -646,15 +646,15 @@
 {
 	struct ast_sip_endpoint *endpoint = obj;
 	char *name = ast_strdupa(var->name);
-	char *front, *buf = name;
+	char *front, *back, *buf = name;
 
 	/* strip out underscores in the name */
-	front = strtok(buf, "_");
+	front = strtok_r(buf, "_", &back);
 	while (front) {
 		int size = strlen(front);
 		ast_copy_string(buf, front, size + 1);
 		buf += size;
-		front = strtok(NULL, "_");
+		front = strtok_r(NULL, "_", &back);
 	}
 
 	return ast_rtp_dtls_cfg_parse(&endpoint->media.rtp.dtls_cfg, name, var->value);




More information about the asterisk-commits mailing list