]> git.ipfire.org Git - thirdparty/asterisk.git/commit
AMI: Escape string values. 02/602/1
authorKevin Harwell <kharwell@digium.com>
Mon, 8 Jun 2015 14:43:53 +0000 (09:43 -0500)
committerKevin Harwell <kharwell@digium.com>
Mon, 8 Jun 2015 14:43:53 +0000 (09:43 -0500)
commit2bf6fd263a71ff63a91c68f68406b6515dc3f447
treea10d55a5b2a322716a4a314ec6c8812b95661f8e
parent5f954e1e0001d2e571d89bf8396fedd91d5293a8
AMI: Escape string values.

So this issue is a bit complicated. Since it is possible to pass values to AMI
that contain a '\r\n' (or other similar sequences) these values need to be
escaped. One way to solve this is to escape the values and then pass the escaped
values to the AMI variable parameter string building function. However, this
puts the onus on the pre-build function to escape all string values. This
potentially requires a fair amount of changes along with a lot of string
allocations/freeing for all values.

Surely there is a way to push this complexity down a level into the string
building function itself? This of course is possible, but ends up requiring a
way to distinguish between strings that need to be escaped and those that don't.
The best way to handle this is by introducing a new format specifier in the
format string. For instance a %s (no escape) and %S (escape). However, that is
a bit weird and unexpected.

So faced with those possibilities this patch implements a limited version of the
first option. Instead of attempting to escape all string values this patch only
escapes those values that make sense. This approach limits the number of changes
and doesn't suffer from the odd format specifier problem.

ASTERISK-24934 #close
Reported by: warren smith

Change-Id: Ib55a5b84fe0481b0f2caaaab68c566f392c0aac0
include/asterisk/strings.h
main/manager_channels.c
main/presencestate.c
main/stasis_channels.c
main/utils.c
tests/test_strings.c