Fix ast_(v)asprintf() malloc failure usage conditions.
authorRichard Mudgett <rmudgett@digium.com>
Thu, 2 Nov 2017 23:40:20 +0000 (18:40 -0500)
committerRichard Mudgett <rmudgett@digium.com>
Mon, 6 Nov 2017 17:47:30 +0000 (12:47 -0500)
commitee08f10d060c9b134139a007e4a23e341e4e4e1f
treedae918ca6fbe0945b7d8e6d316bd6028141d2fd7
parent21d408a942c45545363486cb37a01210a6e252b6
Fix ast_(v)asprintf() malloc failure usage conditions.

When (v)asprintf() fails, the state of the allocated buffer is undefined.
The library had better not leave an allocated buffer as a result or no one
will know to free it.  The most likely way it can return failure is for an
allocation failure.  If the printf conversion fails then you actually have
a threading problem which is much worse because another thread modified
the parameter values.

* Made __ast_asprintf()/__ast_vasprintf() set the returned buffer to NULL
on failure.  That is much more useful than either an uninitialized pointer
or a pointer that has already been freed.  Many uses won't have to check
for failure to ensure that the buffer won't be double freed or prevent an
attempt to free an uninitialized pointer.

* stasis.c: Fixed memory leak in multi_object_blob_to_ami() allocated by
ast_asprintf().

* ari/resource_bridges.c:ari_bridges_play_helper(): Remove assignment to
the wrong thing which is now not needed even if assigning to the right
thing.

Change-Id: Ib5252fb8850ecf0f78ed0ee2ca0796bda7e91c23
apps/app_mixmonitor.c
bridges/bridge_softmix.c
include/asterisk/utils.h
main/db.c
main/json.c
main/stasis.c
main/utils.c
res/ari/resource_bridges.c
res/res_xmpp.c