strings.h: Fix issues with escape string functions.
authorRichard Mudgett <rmudgett@digium.com>
Wed, 15 Jul 2015 20:40:32 +0000 (15:40 -0500)
committerRichard Mudgett <rmudgett@digium.com>
Thu, 16 Jul 2015 17:27:01 +0000 (12:27 -0500)
commitb34c4528abfff6759fe184adc6360a0e22705e2c
tree010aa9acce32dc6dd0bdc6a2198f256959fa45fb
parent605c5d23a82fbde2f54aa4c9b62b16ed488abb64
strings.h: Fix issues with escape string functions.

Fixes for issues with the ASTERISK-24934 patch.

* Fixed ast_escape_alloc() and ast_escape_c_alloc() if the s parameter is
an empty string.  If it were an empty string the functions returned NULL
as if there were a memory allocation failure.  This failure caused the AMI
VarSet event to not get posted if the new value was an empty string.

* Fixed dest buffer overwrite potential in ast_escape() and
ast_escape_c().  If the dest buffer size is smaller than the space needed
by the escaped s parameter string then the dest buffer would be written
beyond the end by the nul string terminator.  The num parameter was really
the dest buffer size parameter so I renamed it to size.

* Made nul terminate the dest buffer if the source string parameter s was
an empty string in ast_escape() and ast_escape_c().

* Updated ast_escape() and ast_escape_c() doxygen function description
comments to reflect reality.

* Added some more unit test cases to /main/strings/escape to cover the
empty source string issues.

ASTERISK-25255 #close
Reported by: Richard Mudgett

Change-Id: Id77fc704600ebcce81615c1200296f74de254104
include/asterisk/strings.h
main/utils.c
tests/test_strings.c