[Asterisk-code-review] app voicemail: Fix json blob errors (asterisk[13])

George Joseph asteriskteam at digium.com
Mon Mar 19 09:02:52 CDT 2018


George Joseph has submitted this change and it was merged. ( https://gerrit.asterisk.org/8546 )

Change subject: app_voicemail:  Fix json blob errors
......................................................................

app_voicemail:  Fix json blob errors

When app_voicemail calls ast_test_suite_notify with the results of
a user keypress, it formats the keypress as '%c'.  If the user hung up
or some other error occurrs, the result of the keypress is a non
printable character.  This ultimately causes json_vpack_ex to think
it's being passed a non utf-8 string and return an error.

* Keypress results passed to ast_test_suite_notify are now checked with
  isprint() and a '?' is substituted if the check fails.

Change-Id: I78ee188916bbac840f3d03f40201b692347ea865
---
M apps/app_voicemail.c
1 file changed, 24 insertions(+), 12 deletions(-)

Approvals:
  Richard Mudgett: Looks good to me, but someone else must approve
  Joshua Colp: Looks good to me, approved
  George Joseph: Approved for Submit



diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c
index 95d0e8d..234d8ad 100644
--- a/apps/app_voicemail.c
+++ b/apps/app_voicemail.c
@@ -7837,7 +7837,8 @@
 		ast_test_suite_event_notify("USERPRESS", "Message: User pressed %c\r\nDTMF: %c", '#', '#');
 		return '#';
 	}
-	ast_test_suite_event_notify("USERPRESS", "Message: User pressed %c\r\nDTMF: %c", res, res);
+	ast_test_suite_event_notify("USERPRESS", "Message: User pressed %c\r\nDTMF: %c",
+		isprint(res) ? res : '?', isprint(res) ? res : '?');
 	return res;
 }
 
@@ -8000,7 +8001,8 @@
 			if (retries > 3) {
 				cmd = '*'; /* Let's cancel this beast */
 			}
-			ast_test_suite_event_notify("USERPRESS", "Message: User pressed %c\r\nDTMF: %c", cmd, cmd);
+			ast_test_suite_event_notify("USERPRESS", "Message: User pressed %c\r\nDTMF: %c",
+				isprint(cmd) ? cmd : '?', isprint(cmd) ? cmd : '?');
 		}
 	}
 
@@ -8228,7 +8230,8 @@
 						cmd = 't';
 						done = 1;
 					}
-					ast_test_suite_event_notify("USERPRESS", "Message: User pressed %c\r\nDTMF: %c", cmd, cmd);
+					ast_test_suite_event_notify("USERPRESS", "Message: User pressed %c\r\nDTMF: %c",
+						isprint(cmd) ? cmd : '?', isprint(cmd) ? cmd : '?');
 				}
 			}
 			if (cmd < 0 || cmd == 't')
@@ -8885,7 +8888,8 @@
 			ast_log(AST_LOG_WARNING, "Playback of message %s failed\n", vms->fn);
 			res = 0;
 		}
-		ast_test_suite_event_notify("USERPRESS", "Message: User pressed %c\r\nDTMF: %c", res, res);
+		ast_test_suite_event_notify("USERPRESS", "Message: User pressed %c\r\nDTMF: %c",
+			isprint(res) ? res : '?', isprint(res) ? res : '?');
 	}
 	DISPOSE(vms->curdir, vms->curmsg);
 	return res;
@@ -10669,7 +10673,8 @@
 			if (retries > 3) {
 				cmd = 't';
 			}
-			ast_test_suite_event_notify("USERPRESS", "Message: User pressed %c\r\nDTMF: %c", cmd, cmd);
+			ast_test_suite_event_notify("USERPRESS", "Message: User pressed %c\r\nDTMF: %c",
+				isprint(cmd) ? cmd : '?', isprint(cmd) ? cmd : '?');
 		}
 	}
 	if (cmd == 't')
@@ -10749,7 +10754,8 @@
 				if (retries > 3) {
 					cmd = 't';
 				}
-				ast_test_suite_event_notify("USERPRESS", "Message: User pressed %c\r\nDTMF: %c", cmd, cmd);
+				ast_test_suite_event_notify("USERPRESS", "Message: User pressed %c\r\nDTMF: %c",
+					isprint(cmd) ? cmd : '?', isprint(cmd) ? cmd : '?');
 			}
 		}
 		DISPOSE(prefile, -1);
@@ -11571,7 +11577,8 @@
 	} else {
 		cmd = vm_intro(chan, vmu, &vms);
 	}
-	ast_test_suite_event_notify("USERPRESS", "Message: User pressed %c\r\nDTMF: %c", cmd, cmd);
+	ast_test_suite_event_notify("USERPRESS", "Message: User pressed %c\r\nDTMF: %c",
+		isprint(cmd) ? cmd : '?', isprint(cmd) ? cmd : '?');
 
 	vms.repeats = 0;
 	vms.starting = 1;
@@ -11591,7 +11598,8 @@
 				adsi_folders(chan, 0, "Change to folder...");
 
 			cmd = get_folder2(chan, "vm-changeto", 0);
-			ast_test_suite_event_notify("USERPRESS", "Message: User pressed %c\r\nDTMF: %c", cmd, cmd);
+			ast_test_suite_event_notify("USERPRESS", "Message: User pressed %c\r\nDTMF: %c",
+				isprint(cmd) ? cmd : '?', isprint(cmd) ? cmd : '?');
 			if (cmd == '#') {
 				cmd = 0;
 			} else if (cmd > 0) {
@@ -11723,7 +11731,8 @@
 					if (vms.repeats > 3) {
 						cmd = 't';
 					}
-					ast_test_suite_event_notify("USERPRESS", "Message: User pressed %c\r\nDTMF: %c", cmd, cmd);
+					ast_test_suite_event_notify("USERPRESS", "Message: User pressed %c\r\nDTMF: %c",
+						isprint(cmd) ? cmd : '?', isprint(cmd) ? cmd : '?');
 				}
 			}
 			if (cmd == 't') {
@@ -11901,7 +11910,8 @@
 			if (useadsi)
 				adsi_folders(chan, 1, "Save to folder...");
 			cmd = get_folder2(chan, "vm-savefolder", 1);
-			ast_test_suite_event_notify("USERPRESS", "Message: User pressed %c\r\nDTMF: %c", cmd, cmd);
+			ast_test_suite_event_notify("USERPRESS", "Message: User pressed %c\r\nDTMF: %c",
+				isprint(cmd) ? cmd : '?', isprint(cmd) ? cmd : '?');
 			box = 0;	/* Shut up compiler */
 			if (cmd == '#') {
 				cmd = 0;
@@ -15132,7 +15142,8 @@
 				else
 					cmd = 't';
 			}
-			ast_test_suite_event_notify("USERPRESS", "Message: User pressed %c\r\nDTMF: %c", cmd, cmd);
+			ast_test_suite_event_notify("USERPRESS", "Message: User pressed %c\r\nDTMF: %c",
+				isprint(cmd) ? cmd : '?', isprint(cmd) ? cmd : '?');
 		}
 		if (retries >= 3) {
 			return 0;
@@ -15297,7 +15308,8 @@
 						res = 't';
 					}
 				}
-				ast_test_suite_event_notify("USERPRESS", "Message: User pressed %c\r\nDTMF: %c", res, res);
+				ast_test_suite_event_notify("USERPRESS", "Message: User pressed %c\r\nDTMF: %c",
+					isprint(res) ? res : '?', isprint(res) ? res : '?');
 				break;
 
 			}

-- 
To view, visit https://gerrit.asterisk.org/8546
To unsubscribe, visit https://gerrit.asterisk.org/settings

Gerrit-Project: asterisk
Gerrit-Branch: 13
Gerrit-MessageType: merged
Gerrit-Change-Id: I78ee188916bbac840f3d03f40201b692347ea865
Gerrit-Change-Number: 8546
Gerrit-PatchSet: 1
Gerrit-Owner: George Joseph <gjoseph at digium.com>
Gerrit-Reviewer: George Joseph <gjoseph at digium.com>
Gerrit-Reviewer: Jenkins2
Gerrit-Reviewer: Joshua Colp <jcolp at digium.com>
Gerrit-Reviewer: Richard Mudgett <rmudgett at digium.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20180319/a58b6870/attachment-0001.html>


More information about the asterisk-code-review mailing list