summaryrefslogtreecommitdiff
path: root/res
diff options
context:
space:
mode:
authorRichard Mudgett <rmudgett@digium.com>2015-07-14 14:36:42 -0500
committerRichard Mudgett <rmudgett@digium.com>2015-07-16 12:24:51 -0500
commit8b620c555bce19f7f1a4ad154ccfa02072e0392e (patch)
tree0606c428e72678ffdbfa5297fddd5ee47100f8a5 /res
parent605c5d23a82fbde2f54aa4c9b62b16ed488abb64 (diff)
res_parking: Fix crash if ATTENDEDTRANSFER set empty before Park.
setup_park_common_datastore() was assuming that a non-NULL string returned for the ATTENDEDTRANSFER and BLINDTRANSFER channel variables are not empty strings. Things got crashy as a result. * Made setup_park_common_datastore() treat the channel variable values the same whether they are NULL or empty for ATTENDEDTRANSFER and BLINDTRANSFER. ASTERISK-25254 #close Reported by: Richard Mudgett Change-Id: I9a9c174b33f354f35f82cc6b7cea8303adbaf9c2
Diffstat (limited to 'res')
-rw-r--r--res/parking/parking_applications.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/res/parking/parking_applications.c b/res/parking/parking_applications.c
index 507747430..7ce8a3215 100644
--- a/res/parking/parking_applications.c
+++ b/res/parking/parking_applications.c
@@ -349,8 +349,12 @@ static int setup_park_common_datastore(struct ast_channel *parkee, const char *p
attended_transfer = pbx_builtin_getvar_helper(parkee, "ATTENDEDTRANSFER");
blind_transfer = pbx_builtin_getvar_helper(parkee, "BLINDTRANSFER");
- if (attended_transfer || blind_transfer) {
- parker_dial_string = ast_strdupa(S_OR(attended_transfer, blind_transfer));
+ if (!ast_strlen_zero(attended_transfer)) {
+ parker_dial_string = ast_strdupa(attended_transfer);
+ } else if (!ast_strlen_zero(blind_transfer)) {
+ parker_dial_string = ast_strdupa(blind_transfer);
+ /* Ensure that attended_transfer is NULL and not an empty string. */
+ attended_transfer = NULL;
}
ast_channel_unlock(parkee);