Peter Wu b683199688 switch_xml_set_attr: fix inconsistent state on error paths
Partially rewrite switch_xml_set_attr to fix memory leaks, uninitialized
argument values and use-after free warnings from Clang static analyzer.

Fixes these problems:

 - Add some comments and a new variable such that the code can more
   easily be audited / understood.
 - Always clear SWITCH_XML_DUP flag even if an error occurred to prevent
   free()'ing static strings on future invocations.
 - Keep the attribute list in a consistent state even if one of the
   memory allocation fails.
 - Keep allocation metadata in a consistent state when shrinking of the
   attribute lists fails. Previously the metadata was not updated,
   resulting in a wrong mapping from attributes to allocation flags.
 - Fix memory leaks when allocations fail.

Previous behavior: invalid memory accesses are possible after a memory
allocation failure, previous attributes may be lost.
New behavior: attributes list is always valid, a new attribute is either
set (or not), attributes can always be removed.
2015-11-08 18:30:44 +01:00
2014-03-24 12:39:59 +00:00
2015-10-29 14:35:11 -05:00
2015-09-14 13:30:08 -05:00
2015-05-28 12:47:19 -05:00
2015-10-09 11:10:32 -07:00
2010-04-01 21:00:45 -04:00
2014-12-26 17:22:20 +00:00
2014-08-01 14:47:38 -05:00
2013-09-16 22:59:26 +05:00
2013-09-16 22:59:26 +05:00
2013-04-04 20:52:47 -05:00
2015-10-09 11:10:32 -07:00
2013-12-23 22:43:06 +05:00
Description
FreeSWITCH is a Software Defined Telecom Stack enabling the digital transformation from proprietary telecom switches to a versatile software implementation that runs on any commodity hardware. From a Raspberry PI to a multi-core server, FreeSWITCH can unl
Multiple Licenses 196 MiB
Languages
C 65.2%
C++ 20.8%
JavaScript 4.8%
Assembly 2%
Makefile 1%
Other 5.4%