Commits
Peter Wu committed b6831996881
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.