From: Naveen Albert Date: Mon, 25 Oct 2021 17:51:50 +0000 (+0000) Subject: app_read: Fix custom terminator functionality regression X-Git-Tag: 19.1.0-rc1~39 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=45c132a37520d0a732ee1c553e814f14654e83de;p=thirdparty%2Fasterisk.git app_read: Fix custom terminator functionality regression Currently, when the t option is specified with no arguments, the # character is still treated as a terminator, even though no character should be treated as a terminator. This is because a previous regression fix was modified to remove the use of NULL as a default altogether. However, NULL and an empty string actually refer to different arrangements and should be treated differently. NULL is the default terminator (#), while an empty string removes the terminator altogether. This is the behavior being used by the rest of the core. Additionally, since S_OR catches empty strings as well as NULL (not intended), this is changed to a ternary operator instead, which fixes the behavior. ASTERISK-29705 #close Change-Id: I9b6b72196dd04f5b1e0ab5aa1b0adf627725e086 --- diff --git a/apps/app_read.c b/apps/app_read.c index 977b20dc29..f4a965c8b4 100644 --- a/apps/app_read.c +++ b/apps/app_read.c @@ -250,7 +250,7 @@ static int read_exec(struct ast_channel *chan, const char *data) break; } tmp[x++] = res; - if (strchr(terminator, tmp[x-1])) { + if (terminator && strchr(terminator, tmp[x-1])) { tmp[x-1] = '\0'; status = "OK"; break; diff --git a/main/app.c b/main/app.c index f5fbffd7f7..411d5077b0 100644 --- a/main/app.c +++ b/main/app.c @@ -249,7 +249,7 @@ enum ast_getdata_result ast_app_getdata_terminator(struct ast_channel *c, const fto = 50; to = ast_channel_pbx(c) ? ast_channel_pbx(c)->dtimeoutms : 2000; } - res = ast_readstring(c, s, maxlen, to, fto, S_OR(terminator, "#")); + res = ast_readstring(c, s, maxlen, to, fto, (terminator ? terminator : "#")); if (res == AST_GETDATA_EMPTY_END_TERMINATED) { return res; }