[asterisk-commits] tilghman: branch 1.4 r50151 - in /branches/1.4:
	./ apps/app_voicemail.c
    asterisk-commits at lists.digium.com 
    asterisk-commits at lists.digium.com
       
    Tue Jan  9 06:40:46 MST 2007
    
    
  
Author: tilghman
Date: Tue Jan  9 07:40:45 2007
New Revision: 50151
URL: http://svn.digium.com/view/asterisk?view=rev&rev=50151
Log:
Merged revisions 50150 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/branches/1.2
........
r50150 | tilghman | 2007-01-09 07:30:04 -0600 (Tue, 09 Jan 2007) | 4 lines
The advent of realtime has enabled people to use commas in the fullname field.
This could cause an issue with sending voicemails, when the field is unquoted.
(Issue 8595)
........
Modified:
    branches/1.4/   (props changed)
    branches/1.4/apps/app_voicemail.c
Propchange: branches/1.4/
------------------------------------------------------------------------------
Binary property 'branch-1.2-merged' - no diff available.
Modified: branches/1.4/apps/app_voicemail.c
URL: http://svn.digium.com/view/asterisk/branches/1.4/apps/app_voicemail.c?view=diff&rev=50151&r1=50150&r2=50151
==============================================================================
--- branches/1.4/apps/app_voicemail.c (original)
+++ branches/1.4/apps/app_voicemail.c Tue Jan  9 07:40:45 2007
@@ -1818,6 +1818,22 @@
 	pbx_builtin_setvar_helper(ast, "VM_CATEGORY", category ? ast_strdupa(category) : "no category");
 }
 
+static char *quote(const char *from, char *to, size_t len)
+{
+	char *ptr = to;
+	*ptr++ = '"';
+	for (; ptr < to + len - 1; from++) {
+		if (*from == '"')
+			*ptr++ = '\\';
+		else if (*from == '\0')
+			break;
+		*ptr++ = *from;
+	}
+	if (ptr < to + len - 1)
+		*ptr++ = '"';
+	*ptr = '\0';
+	return to;
+}
 /*
  * fill in *tm for current time according to the proper timezone, if any.
  * Return tm so it can be used as a function argument.
@@ -1866,6 +1882,8 @@
 	char dur[256];
 	char tmpcmd[256];
 	struct tm tm;
+	char *passdata2;
+	size_t len_passdata;
 
 	gethostname(host, sizeof(host) - 1);
 	if (strchr(srcemail, '@'))
@@ -1889,7 +1907,9 @@
 				memset(passdata, 0, vmlen);
 				prep_email_sub_vars(ast, vmu, msgnum + 1, context, mailbox, cidnum, cidname, dur, date, passdata, vmlen, category);
 				pbx_substitute_variables_helper(ast, fromstring, passdata, vmlen);
-				fprintf(p, "From: %s <%s>\r\n", passdata, who);
+				len_passdata = strlen(passdata) * 2 + 1;
+				passdata2 = alloca(len_passdata);
+				fprintf(p, "From: %s <%s>\r\n", quote(passdata, passdata2, len_passdata), who);
 			} else
 				ast_log(LOG_WARNING, "Cannot allocate workspace for variable substitution\n");
 			ast_channel_free(ast);
@@ -1897,7 +1917,9 @@
 			ast_log(LOG_WARNING, "Cannot allocate the channel for variables substitution\n");
 	} else
 		fprintf(p, "From: Asterisk PBX <%s>\r\n", who);
-	fprintf(p, "To: %s <%s>\r\n", vmu->fullname, vmu->email);
+	len_passdata = strlen(vmu->fullname) * 2 + 1;
+	passdata2 = alloca(len_passdata);
+	fprintf(p, "To: %s <%s>\r\n", quote(vmu->fullname, passdata2, len_passdata), vmu->email);
 	if (emailsubject) {
 		struct ast_channel *ast;
 		if ((ast = ast_channel_alloc(0, AST_STATE_DOWN, 0, 0, 0))) {
    
    
More information about the asterisk-commits
mailing list