asterisk/asterisk.git
22 months agoMerge "pjsip: Add patch to allow all transports to be destroyed."
Jenkins2 [Tue, 14 Nov 2017 15:06:33 +0000 (09:06 -0600)]
Merge "pjsip: Add patch to allow all transports to be destroyed."

23 months agoMerge "core: Use ast_alertpipe for Asterisk signal monitoring thread."
Joshua Colp [Tue, 14 Nov 2017 13:32:24 +0000 (07:32 -0600)]
Merge "core: Use ast_alertpipe for Asterisk signal monitoring thread."

23 months agoMerge "core: Add cache_media_frames debugging option."
Jenkins2 [Tue, 14 Nov 2017 12:56:54 +0000 (06:56 -0600)]
Merge "core: Add cache_media_frames debugging option."

23 months agoMerge "alertpipe: Correct documented return of ast_alertpipe_write."
Joshua Colp [Tue, 14 Nov 2017 11:46:58 +0000 (05:46 -0600)]
Merge "alertpipe: Correct documented return of ast_alertpipe_write."

23 months agoalertpipe: Correct documented return of ast_alertpipe_write.
Corey Farrell [Mon, 13 Nov 2017 23:47:46 +0000 (18:47 -0500)]
alertpipe: Correct documented return of ast_alertpipe_write.

Change-Id: I4ea49c441890a81384144479dc93ab5a3989486d

23 months agoMerge "vectors: Add new macro and a string vector definition."
Jenkins2 [Mon, 13 Nov 2017 23:26:22 +0000 (17:26 -0600)]
Merge "vectors: Add new macro and a string vector definition."

23 months agoMerge "menuselect: Delete and ignore aclocal.m4."
Joshua Colp [Mon, 13 Nov 2017 23:01:35 +0000 (17:01 -0600)]
Merge "menuselect: Delete and ignore aclocal.m4."

23 months agocore: Use ast_alertpipe for Asterisk signal monitoring thread.
Corey Farrell [Fri, 10 Nov 2017 01:47:27 +0000 (20:47 -0500)]
core: Use ast_alertpipe for Asterisk signal monitoring thread.

Reduce the signal monitoring thread file descriptor use from two to one
on systems that support eventfd.

Change-Id: Id4041a237d481ff699639e153ea6982fee14a462

23 months agocore: Fix configuration of remote console socket path.
Corey Farrell [Mon, 13 Nov 2017 22:20:27 +0000 (17:20 -0500)]
core: Fix configuration of remote console socket path.

The remote console socket path is the combination of asterisk.conf
settings astrundir from [directories] and astctl from [files].
Unconditionally combine the two strings after processing all values
to ensure we end up with the correct socket path.

ASTERISK-27415

Change-Id: Ib1e2805d55d6b0955c6430a1a2a93acbf9b091e8

23 months agobundled_pjproject: sip_parser: Fix return code in pjsip_find_msg
George Joseph [Fri, 10 Nov 2017 16:37:16 +0000 (09:37 -0700)]
bundled_pjproject: sip_parser:  Fix return code in pjsip_find_msg

The default return code for pjsip_find_msg was PJ_SUCCESS so if
a Content-Length header wasn't found at all, pjsip_find_msg was
returning PJ_SUCCESS instead of PJSIP_EMISSINGHDR.

Also added the volatile keyword to a few variables that are used
both inside and outside the PJ_TRY/PJ_CATCH block.

Partial fix for ASTERISK_27408

Change-Id: If82ba9de921e3d57df9c68cf96ee45ccc1491f7a

23 months agobundled_pjproject: Update to 2.7.1
Ben Ford [Mon, 13 Nov 2017 20:35:14 +0000 (14:35 -0600)]
bundled_pjproject: Update to 2.7.1

Update from 2.7 to 2.7.1 for bundled pjproject. Changed version
and removed patch files included in the update.

Change-Id: I55cea8e734b318c2df9daf86aa0802c559ec8357

23 months agosorcery: Add ast_sorcery_retrieve_by_prefix()
Sean Bright [Thu, 9 Nov 2017 14:21:38 +0000 (09:21 -0500)]
sorcery: Add ast_sorcery_retrieve_by_prefix()

Some consumers of the sorcery API use ast_sorcery_retrieve_by_regex
only so that they can anchor the potential match as a prefix and not
because they truly need regular expressions.

Rather than using regular expressions for simple prefix lookups, add
a new operation - ast_sorcery_retrieve_by_prefix - that does them.

Change-Id: I56f4e20ba1154bd52281f995c27a429a854f6a79

23 months agoCLI: Create ast_cli_completion_vector.
Corey Farrell [Tue, 7 Nov 2017 23:07:35 +0000 (18:07 -0500)]
CLI: Create ast_cli_completion_vector.

This is a rewrite of ast_cli_completion_matches using a vector to build
the list.  The original function calls the vector version, NULL
terminates the vector and extracts the elements array.

One change in behavior the results are now sorted and deduplicated. This
will solve bugs where some duplicate checking was done before the list
was sorted.

Change-Id: Iede20c5b4d965fa5ec71fda136ce9425eeb69519

23 months agovectors: Add new macro and a string vector definition.
Corey Farrell [Tue, 7 Nov 2017 20:00:33 +0000 (15:00 -0500)]
vectors: Add new macro and a string vector definition.

* AST_VECTOR_STEAL_ELEMENTS - steal the array of elements for use
  with non-vector code.
* struct ast_vector_string - a vector of 'char *'.

Change-Id: I104d1b204be03fccf67e02a195596adcb5ab1e42

23 months agoMerge "Build System: Disable parallel make in the root Makefile."
Joshua Colp [Mon, 13 Nov 2017 13:47:38 +0000 (07:47 -0600)]
Merge "Build System: Disable parallel make in the root Makefile."

23 months agoMerge "res_pjsip_pubsub: Ensure remote URI contains URI only."
Jenkins2 [Mon, 13 Nov 2017 13:11:57 +0000 (07:11 -0600)]
Merge "res_pjsip_pubsub: Ensure remote URI contains URI only."

23 months agocore: Add cache_media_frames debugging option.
Richard Mudgett [Sat, 11 Nov 2017 19:01:47 +0000 (13:01 -0600)]
core: Add cache_media_frames debugging option.

The media frame cache gets in the way of finding use after free errors of
media frames.  Tools like valgrind and MALLOC_DEBUG don't know when a
frame is released because it gets put into the cache instead of being
freed.

* Added the "cache_media_frames" option to asterisk.conf.  Disabling the
option helps track down media frame mismanagement when using valgrind or
MALLOC_DEBUG.  The cache gets in the way of determining if the frame is
used after free and who freed it.  NOTE: This option has no effect when
Asterisk is compiled with the LOW_MEMORY compile time option enabled
because the cache code does not exist.

To disable the media frame cache simply disable the cache_media_frames
option in asterisk.conf and restart Asterisk.

Sample asterisk.conf setting:
[options]
cache_media_frames=no

ASTERISK-27413

Change-Id: I0ab2ce0f4547cccf2eb214901835c2d951b78c00

23 months agoframe.c: Make ast_frame_free()/ast_frfree() NULL tolerant
Richard Mudgett [Sat, 11 Nov 2017 15:42:01 +0000 (09:42 -0600)]
frame.c: Make ast_frame_free()/ast_frfree() NULL tolerant

Change-Id: Ic49d821ef88ada38a31bdd835b9531443c55d793

23 months agomenuselect: Delete and ignore aclocal.m4.
Corey Farrell [Sat, 11 Nov 2017 04:04:53 +0000 (23:04 -0500)]
menuselect: Delete and ignore aclocal.m4.

This file is temporary output from the bootstrap.sh command, it does not
need to be committed.

Change-Id: Ie0fd113aff6eac44924c0bd0c900833c6c86a6d9

23 months agoBuild: Make function constructor/destructor attributes mandatory.
Corey Farrell [Tue, 31 Oct 2017 03:09:17 +0000 (23:09 -0400)]
Build: Make function constructor/destructor attributes mandatory.

This change causes the configure script to fail if the C compiler does
not support both function attributes constructor and destructor.  These
were already required as modules cannot function without these attributes
and Asterisk requires modules.

This also has AST_GCC_ATTRIBUTE set a variable
ax_cv_have_func_attribute_$1.  This is the same variable name used by
autoconf-archive's AX_GCC_FUNC_ATTRIBUTE, used for the same purpose.

Change-Id: Id68e8a1447f2a6d707c54b56350e7bfdb33fb663

23 months agoMerge "core: Remove disabled code."
Joshua Colp [Fri, 10 Nov 2017 14:00:32 +0000 (08:00 -0600)]
Merge "core: Remove disabled code."

23 months agoMerge "chan_pjsip.c: Fix uninitialized cause value on failure."
Joshua Colp [Fri, 10 Nov 2017 14:00:12 +0000 (08:00 -0600)]
Merge "chan_pjsip.c: Fix uninitialized cause value on failure."

23 months agopjsip: Add patch to allow all transports to be destroyed.
Joshua Colp [Fri, 10 Nov 2017 13:06:38 +0000 (13:06 +0000)]
pjsip: Add patch to allow all transports to be destroyed.

If a transport is created with the same transport type, source
IP address, and source port as one that already exists the old
transport is moved into a linked list called "tp_list".

If this old transport is later shutdown it will not be destroyed
as the process checks whether the transport is valid or not. This
check does not look at the "tp_list" when making the determination
causing the transport to not be destroyed.

This change updates the logic to query not just the main storage
method for transports but also the "tp_list".

Upstream issue https://trac.pjsip.org/repos/ticket/2061

ASTERISK-27411

Change-Id: Ic5c2bb60226df0ef1c8851359ed8d4cd64469429

23 months agocore: Remove disabled code.
Corey Farrell [Fri, 10 Nov 2017 02:34:32 +0000 (21:34 -0500)]
core: Remove disabled code.

handle_quit has been disabled since 2003, remove it.

Change-Id: Idc3aaa6c81676160547078f9b71e8aa43de2db18

23 months agoMerge "stasis_bridges.c: Fix off-nominal json memory leaks."
Joshua Colp [Fri, 10 Nov 2017 00:05:09 +0000 (18:05 -0600)]
Merge "stasis_bridges.c: Fix off-nominal json memory leaks."

23 months agoBuild System: Disable parallel make in the root Makefile.
Corey Farrell [Thu, 9 Nov 2017 19:24:46 +0000 (14:24 -0500)]
Build System: Disable parallel make in the root Makefile.

This ensures that the root Makefile runs only a single target at a time.
SUBMAKE will still honor requested parallelism, so 'make -j8' will build
one directory at a time but allow 8 jobs at once when building a sub
directory.

This will fix some display glitches related to rebuild of XML
documentation.  It will also prevent some edge case errors where
bundled pjproject needs to be rebuild before other parts of Asterisk.

Change-Id: I4f2ec6fbbec1ada0ccb1109a28ea303524239b1e

23 months agoMerge "res_pjsip_registrar.c: Fix AOR and pjproject group deadlock."
Kevin Harwell [Thu, 9 Nov 2017 17:48:34 +0000 (11:48 -0600)]
Merge "res_pjsip_registrar.c: Fix AOR and pjproject group deadlock."

23 months agochan_pjsip.c: Fix uninitialized cause value on failure.
Richard Mudgett [Thu, 30 Mar 2017 01:46:56 +0000 (20:46 -0500)]
chan_pjsip.c: Fix uninitialized cause value on failure.

Change-Id: I3f9dd3c31bd582e54a30381500077de2319d8cc3

23 months agoMerge "res_pjsip_pubsub: Fix multiple leaks on failure to append vectors."
Joshua Colp [Thu, 9 Nov 2017 09:44:56 +0000 (03:44 -0600)]
Merge "res_pjsip_pubsub: Fix multiple leaks on failure to append vectors."

23 months agoMerge "res_pjsip_history: Fix multiple leaks on vector append failure."
Joshua Colp [Thu, 9 Nov 2017 09:44:37 +0000 (03:44 -0600)]
Merge "res_pjsip_history: Fix multiple leaks on vector append failure."

23 months agoMerge "res_pjsip_session: Fix multiple leaks."
Joshua Colp [Thu, 9 Nov 2017 09:43:58 +0000 (03:43 -0600)]
Merge "res_pjsip_session: Fix multiple leaks."

23 months agoMerge "main/sdp_state: Check for errors from ast_stream_topology_set_stream."
Joshua Colp [Thu, 9 Nov 2017 09:43:35 +0000 (03:43 -0600)]
Merge "main/sdp_state: Check for errors from ast_stream_topology_set_stream."

23 months agoMerge "bridge_softmix: Note why ast_stream_topology_set_stream cannot fail."
Joshua Colp [Thu, 9 Nov 2017 09:42:51 +0000 (03:42 -0600)]
Merge "bridge_softmix: Note why ast_stream_topology_set_stream cannot fail."

23 months agoMerge "res_pjsip_session: Check for errors from ast_stream_topology_set_stream."
Joshua Colp [Thu, 9 Nov 2017 09:42:34 +0000 (03:42 -0600)]
Merge "res_pjsip_session: Check for errors from ast_stream_topology_set_stream."

23 months agoMerge "res_pjsip_t38: Better error checking for t38_create_media_state."
Joshua Colp [Wed, 8 Nov 2017 19:11:27 +0000 (13:11 -0600)]
Merge "res_pjsip_t38: Better error checking for t38_create_media_state."

23 months agoDEBUG_FD_LEAKS: Add missing FD creators.
Corey Farrell [Wed, 8 Nov 2017 07:40:22 +0000 (02:40 -0500)]
DEBUG_FD_LEAKS: Add missing FD creators.

This adds FD tracking for the following functions:
* eventfd
* timerfd_create
* socketpair
* accept

ASTERISK-27404

Change-Id: Id6848fe904ade2d34eb39d2a20bd6b223e1111fc

23 months agobridge_softmix: Note why ast_stream_topology_set_stream cannot fail.
Corey Farrell [Tue, 7 Nov 2017 17:49:35 +0000 (12:49 -0500)]
bridge_softmix: Note why ast_stream_topology_set_stream cannot fail.

This appeared in my audit of ast_stream_topology_set_stream callers
not checking for errors but in this situation the call cannot fail.
Add comment so this can be ignored in the future.

Change-Id: I91d25704859efbe50b8b82cfe1cd3c40ba177c9f

23 months agoMerge "AST-2017-009: pjproject: Add validation of numeric header values"
George Joseph [Wed, 8 Nov 2017 15:52:47 +0000 (09:52 -0600)]
Merge "AST-2017-009: pjproject: Add validation of numeric header values"

23 months agoMerge "AST-2017-011 - res_pjsip_session: session leak when a call is rejected"
George Joseph [Wed, 8 Nov 2017 15:45:24 +0000 (09:45 -0600)]
Merge "AST-2017-011 - res_pjsip_session: session leak when a call is rejected"

23 months agoMerge "AST-2017-010: Fix cdr_object_update_party_b_userfield_cb() buf overrun"
George Joseph [Wed, 8 Nov 2017 14:25:54 +0000 (08:25 -0600)]
Merge "AST-2017-010: Fix cdr_object_update_party_b_userfield_cb() buf overrun"

23 months agoMerge "res_pjproject.c: Fix ast_strdup() alloc failure."
Joshua Colp [Wed, 8 Nov 2017 13:38:45 +0000 (07:38 -0600)]
Merge "res_pjproject.c: Fix ast_strdup() alloc failure."

23 months agoAST-2017-011 - res_pjsip_session: session leak when a call is rejected
Kevin Harwell [Thu, 19 Oct 2017 18:35:16 +0000 (13:35 -0500)]
AST-2017-011 - res_pjsip_session: session leak when a call is rejected

A previous commit made it so when an invite session transitioned into a
disconnected state destruction of the Asterisk pjsip session object was
postponed until either a transport error occurred or the event timer
expired. However, if a call was rejected (for instance a 488) before the
session was fully established the event timer may not have been initiated,
or it was canceled without triggering either of the session finalizing states
mentioned above.

Really the only time destruction of the session should be delayed is when a
BYE is being transacted. This is because it's possible in some cases for the
session to be disconnected, but the BYE is still transacting.

This patch makes it so the session object always gets released (no more
memory leak) when the pjsip session is in a disconnected state. Except when
the method is a BYE. Then it waits until a transport error occurs or an event
timeout.

ASTERISK-27345 #close

Reported by: Corey Farrell

Change-Id: I1e724737b758c20ac76d19d3611e3d2876ae10ed

23 months agoAST-2017-010: Fix cdr_object_update_party_b_userfield_cb() buf overrun
Richard Mudgett [Tue, 3 Oct 2017 21:19:52 +0000 (16:19 -0500)]
AST-2017-010: Fix cdr_object_update_party_b_userfield_cb() buf overrun

cdr_object_update_party_b_userfield_cb() could overrun the fixed buffer if
the supplied string is too long.  The long string could be supplied by
external means using the CDR(userfield) function.

This may seem reminiscent to AST-2017-001 (ASTERISK_26897) and it is.  The
earlier patch fixed the buffer overrun for Party A's userfield while this
patch fixes the same thing for Party B's userfield.

ASTERISK-27337

Change-Id: I0fa767f65ecec7e676ca465306ff9e0edbf3b652

23 months agoAST-2017-009: pjproject: Add validation of numeric header values
George Joseph [Thu, 19 Oct 2017 18:53:32 +0000 (12:53 -0600)]
AST-2017-009: pjproject: Add validation of numeric header values

Parsing the numeric header fields like cseq, ttl, port, etc. all
had the potential to overflow, either causing unintended values to
be captured or, if the values were subsequently converted back to
strings, a buffer overrun.  To address this, new "strto" functions
have been created that do range checking and those functions are
used wherever possible in the parser.

 * Created pjlib/include/limits.h and pjlib/include/compat/limits.h
   to either include the system limits.h or define common numeric
   limits if there is no system limits.h.

 * Created strto*_validate functions in sip_parser that take bounds
   and on failure call the on_str_parse_error function which prints
   an error message and calls PJ_THROW.

 * Updated sip_parser to validate the numeric fields.

 * Fixed an issue in sip_transport that prevented error messages
   from being properly displayed.

 * Added "volatile" to some variables referenced in PJ_CATCH blocks
   as the optimizer was sometimes optimizing them away.

 * Fixed length calculation in sip_transaction/create_tsx_key_2543
   to account for signed ints being 11 characters, not 9.

ASTERISK-27319
Reported by: Youngsung Kim at LINE Corporation

Change-Id: I48de2e4ccf196990906304e8d7061f4ffdd772ff

23 months agoMerge "stream: Return error from ast_stream_topology_set_stream."
Jenkins2 [Wed, 8 Nov 2017 12:06:51 +0000 (06:06 -0600)]
Merge "stream: Return error from ast_stream_topology_set_stream."

23 months agoMerge "res_stasis: Fix multiple leaks."
Joshua Colp [Wed, 8 Nov 2017 10:58:12 +0000 (04:58 -0600)]
Merge "res_stasis: Fix multiple leaks."

23 months agores_pjsip_pubsub: Fix multiple leaks on failure to append vectors.
Corey Farrell [Mon, 6 Nov 2017 23:58:40 +0000 (18:58 -0500)]
res_pjsip_pubsub: Fix multiple leaks on failure to append vectors.

Change-Id: I68ece0073ea79667ca41eb10405f516f1d30d482

23 months agores_pjsip_history: Fix multiple leaks on vector append failure.
Corey Farrell [Tue, 7 Nov 2017 00:12:13 +0000 (19:12 -0500)]
res_pjsip_history: Fix multiple leaks on vector append failure.

Change-Id: I41e8d5183ace284095cc721f3b1fb32ade3f940f

23 months agores_pjsip_session: Fix multiple leaks.
Corey Farrell [Tue, 7 Nov 2017 00:01:38 +0000 (19:01 -0500)]
res_pjsip_session: Fix multiple leaks.

* Pre-initialize cloned media state vectors to final size to ensure
  vector errors cannot happen later in the clone initialization.
* Release session_media on vector replace failure in
  ast_sip_session_media_state_add.
* Release clone and media_state in ast_sip_session_refresh if we fail to
  append to the stream topology, return an error.

Change-Id: Ib5ffc9b198683fa7e9bf166d74d30c1334c23acb

23 months agoMerge "res_pjsip_outbound_registration: Fix leak on vector add failure."
Jenkins2 [Wed, 8 Nov 2017 02:39:31 +0000 (20:39 -0600)]
Merge "res_pjsip_outbound_registration: Fix leak on vector add failure."

23 months agoMerge "res_pjsip_exten_state: Check for vector append failure."
Jenkins2 [Wed, 8 Nov 2017 02:06:26 +0000 (20:06 -0600)]
Merge "res_pjsip_exten_state: Check for vector append failure."

23 months agoMerge "res_pjsip_config_wizard: Fix leaks and add check for malloc failure."
Jenkins2 [Wed, 8 Nov 2017 01:41:46 +0000 (19:41 -0600)]
Merge "res_pjsip_config_wizard: Fix leaks and add check for malloc failure."

23 months agoMerge "res_stasis_playback: Check for failure to append vector."
Jenkins2 [Wed, 8 Nov 2017 01:02:20 +0000 (19:02 -0600)]
Merge "res_stasis_playback: Check for failure to append vector."

23 months agoMerge "res_pjsip: Fix leak on error in ast_sip_auth_vector_init."
Jenkins2 [Wed, 8 Nov 2017 00:14:28 +0000 (18:14 -0600)]
Merge "res_pjsip: Fix leak on error in ast_sip_auth_vector_init."

23 months agoMerge "test_sorcery_memory_cache_thrash: Handle error from vector append."
Jenkins2 [Tue, 7 Nov 2017 23:32:48 +0000 (17:32 -0600)]
Merge "test_sorcery_memory_cache_thrash: Handle error from vector append."

23 months agoMerge "stasis: Release object if vector append fails."
Jenkins2 [Tue, 7 Nov 2017 22:40:49 +0000 (16:40 -0600)]
Merge "stasis: Release object if vector append fails."

23 months agoMerge "res_ari_events: Fix use after free / double-free of JSON message."
Jenkins2 [Tue, 7 Nov 2017 22:10:11 +0000 (16:10 -0600)]
Merge "res_ari_events: Fix use after free / double-free of JSON message."

23 months agoMerge "PBX: Handle errors from AST_VECTOR_APPEND."
Jenkins2 [Tue, 7 Nov 2017 21:27:26 +0000 (15:27 -0600)]
Merge "PBX: Handle errors from AST_VECTOR_APPEND."

23 months agoMerge "Messaging: Report error on failure to register tech or handler."
Jenkins2 [Tue, 7 Nov 2017 20:58:05 +0000 (14:58 -0600)]
Merge "Messaging: Report error on failure to register tech or handler."

23 months agoMerge "format_cap: Fix leak on AST_VECTOR_APPEND error."
Jenkins2 [Tue, 7 Nov 2017 20:20:02 +0000 (14:20 -0600)]
Merge "format_cap: Fix leak on AST_VECTOR_APPEND error."

23 months agoMerge "CLI: Remove unused internal command."
Jenkins2 [Tue, 7 Nov 2017 19:02:30 +0000 (13:02 -0600)]
Merge "CLI: Remove unused internal command."

23 months agoMerge "res_pjsip: Avoid crash when contact uri is empty string"
Jenkins2 [Tue, 7 Nov 2017 18:08:44 +0000 (12:08 -0600)]
Merge "res_pjsip:  Avoid crash when contact uri is empty string"

23 months agomain/sdp_state: Check for errors from ast_stream_topology_set_stream.
Corey Farrell [Tue, 7 Nov 2017 18:03:34 +0000 (13:03 -0500)]
main/sdp_state: Check for errors from ast_stream_topology_set_stream.

Change-Id: I84a83ae69daba5d185cc1d939b133a4c23565497

23 months agores_pjsip_registrar.c: Fix AOR and pjproject group deadlock.
Richard Mudgett [Mon, 6 Nov 2017 22:37:49 +0000 (16:37 -0600)]
res_pjsip_registrar.c: Fix AOR and pjproject group deadlock.

One of the patches for ASTERISK_27147 introduced a deadlock regression.
When the connection oriented transport shut down, the code attempted to
remove the associated contact.  However, that same transport had just
requested a registration that we hadn't responded to yet.  Depending
upon timing we could deadlock.

* Made send the REGISTER response after we completed processing the
request contacts and released the AOR lock to avoid the deadlock.

ASTERISK-27391

Change-Id: I89a90f87cb7a02facbafb44c75d8845f93417364

23 months agores_pjsip_session: Check for errors from ast_stream_topology_set_stream.
Corey Farrell [Tue, 7 Nov 2017 17:40:08 +0000 (12:40 -0500)]
res_pjsip_session: Check for errors from ast_stream_topology_set_stream.

Free memory and return error if ast_stream_topology_set_stream fails.

Change-Id: I9f4dbf44bed627243d2f1dd8aea2eab6c38a028d

23 months agores_pjsip_t38: Better error checking for t38_create_media_state.
Corey Farrell [Tue, 7 Nov 2017 17:34:19 +0000 (12:34 -0500)]
res_pjsip_t38: Better error checking for t38_create_media_state.

Change-Id: I81b2587427c6982aa3e2a3f9ad69cce8d316eb10

23 months agoMerge "res_pjsip: Ignore empty TLS configuration"
Jenkins2 [Tue, 7 Nov 2017 17:05:13 +0000 (11:05 -0600)]
Merge "res_pjsip: Ignore empty TLS configuration"

23 months agostream: Return error from ast_stream_topology_set_stream.
Corey Farrell [Mon, 6 Nov 2017 21:38:05 +0000 (16:38 -0500)]
stream: Return error from ast_stream_topology_set_stream.

ast_stream_topology_set_stream had suppressed error codes from
AST_VECTOR_APPEND.  The result of AST_VECTOR_APPEND needs to be returned
to the caller so they can take appropriate action on the stream.

Change-Id: I6c0d12755743eadba1357f6153526cc055592856

23 months agores_stasis: Fix multiple leaks.
Corey Farrell [Mon, 6 Nov 2017 23:21:53 +0000 (18:21 -0500)]
res_stasis: Fix multiple leaks.

* res/stasis/app.c JSON passed to app_send needs to be released.
* res/stasis_message.c: objects leak if vector append fails.

Change-Id: I8dd5385b9f50a5cadf2b1d16efecffd6ddb4db4a

23 months agoMerge "tcptls: Print notice when TLS is enabled but not configured."
Joshua Colp [Tue, 7 Nov 2017 16:12:41 +0000 (10:12 -0600)]
Merge "tcptls: Print notice when TLS is enabled but not configured."

23 months agoMerge "stasis: Remove silly use of RAII_VAR in stasis_forward_all."
Joshua Colp [Tue, 7 Nov 2017 15:32:45 +0000 (09:32 -0600)]
Merge "stasis: Remove silly use of RAII_VAR in stasis_forward_all."

23 months agoMerge "stasis_channels.c: Remove a very silly RAII_VAR()."
Joshua Colp [Tue, 7 Nov 2017 14:44:12 +0000 (08:44 -0600)]
Merge "stasis_channels.c: Remove a very silly RAII_VAR()."

23 months agoMerge "stasis/app.c: Optimize stasis_app_get_debug_by_name()"
Joshua Colp [Tue, 7 Nov 2017 13:57:39 +0000 (07:57 -0600)]
Merge "stasis/app.c: Optimize stasis_app_get_debug_by_name()"

23 months agoMerge "Fix ast_(v)asprintf() malloc failure usage conditions."
Joshua Colp [Tue, 7 Nov 2017 13:18:12 +0000 (07:18 -0600)]
Merge "Fix ast_(v)asprintf() malloc failure usage conditions."

23 months agores_pjproject.c: Fix ast_strdup() alloc failure.
Richard Mudgett [Tue, 7 Nov 2017 12:56:08 +0000 (06:56 -0600)]
res_pjproject.c: Fix ast_strdup() alloc failure.

Change-Id: I74688038e7afe3a279359cce53aadb28ade51ead

23 months agores_pjsip: Avoid crash when contact uri is empty string
Aaron An [Mon, 6 Nov 2017 04:06:15 +0000 (12:06 +0800)]
res_pjsip:  Avoid crash when contact uri is empty string

Asterisk will crash if contact uri is invalid, so contact_apply_handler
should check if the uri is NULL or empty.

ASTERISK-27393 #close
Reported-by: Aaron An
Tested-by: AaronAn

Change-Id: Ia0309bdc6b697c73c9c736e1caec910b77ca69f5

23 months agoMerge "RTP Engine: Deal with errors returned from AST_VECTOR_REPLACE."
Joshua Colp [Tue, 7 Nov 2017 12:36:32 +0000 (06:36 -0600)]
Merge "RTP Engine: Deal with errors returned from AST_VECTOR_REPLACE."

23 months agores_pjsip_outbound_registration: Fix leak on vector add failure.
Corey Farrell [Mon, 6 Nov 2017 23:55:00 +0000 (18:55 -0500)]
res_pjsip_outbound_registration: Fix leak on vector add failure.

Change-Id: I774b88b3c9da41edd4dc8d78f095481f52f2bd46

23 months agores_pjsip_exten_state: Check for vector append failure.
Corey Farrell [Mon, 6 Nov 2017 23:48:06 +0000 (18:48 -0500)]
res_pjsip_exten_state: Check for vector append failure.

Release reference to publisher if we fail to add it to the vector.

Change-Id: I64dff3f481b67b9884f37cadba7a5ccf23d084f3

23 months agores_pjsip_config_wizard: Fix leaks and add check for malloc failure.
Corey Farrell [Mon, 6 Nov 2017 23:44:01 +0000 (18:44 -0500)]
res_pjsip_config_wizard: Fix leaks and add check for malloc failure.

wizard_apply_handler():
- Free host if we fail to add it to the vector.

wizard_mapped_observer():
- Check for otw allocation failure.
- Free otw if we fail to add it to the vector.

Change-Id: Ib5d3bcabbd9c24dd8a3c9cc692a794a5f60243ad

23 months agores_stasis_playback: Check for failure to append vector.
Corey Farrell [Mon, 6 Nov 2017 23:38:35 +0000 (18:38 -0500)]
res_stasis_playback: Check for failure to append vector.

Free resources and return error if we fail to append the vector in
stasis_app_control_play_uri.

Change-Id: I22c4a90dd859b253f2850c6511de48b25609422b

23 months agotest_sorcery_memory_cache_thrash: Handle error from vector append.
Corey Farrell [Mon, 6 Nov 2017 23:33:13 +0000 (18:33 -0500)]
test_sorcery_memory_cache_thrash: Handle error from vector append.

Cleanup resources when we fail to append the vector and report test
failure.

Change-Id: I6eb41586fd11dee8c0dfe35e91cb465a4cab7298

23 months agores_pjsip: Fix leak on error in ast_sip_auth_vector_init.
Corey Farrell [Mon, 6 Nov 2017 23:28:35 +0000 (18:28 -0500)]
res_pjsip: Fix leak on error in ast_sip_auth_vector_init.

Change-Id: Ib0fc7a18f3135ca8990c3984c9e15f6d26e556e8

23 months agores_pjproject: Handle error from adding to the buildopts vector.
Corey Farrell [Mon, 6 Nov 2017 23:17:13 +0000 (18:17 -0500)]
res_pjproject: Handle error from adding to the buildopts vector.

Change-Id: I076c7bd207c7989a23005395ce1735392657be65

23 months agores_ari_events: Fix use after free / double-free of JSON message.
Corey Farrell [Mon, 6 Nov 2017 23:11:08 +0000 (18:11 -0500)]
res_ari_events: Fix use after free / double-free of JSON message.

When stasis_app_message_handler needs to queue a message for a later
connection it needs to bump the message reference so it doesn't get
freed when the caller releases it's reference.

Change-Id: I82696df8fe723b3365c15c3f7089501da8daa892

23 months agostasis: Release object if vector append fails.
Corey Farrell [Mon, 6 Nov 2017 21:33:00 +0000 (16:33 -0500)]
stasis: Release object if vector append fails.

Change-Id: I3e5cc669169aab6175ddfaf7486edeaeb4fdcfb1

23 months agoRTP Engine: Deal with errors returned from AST_VECTOR_REPLACE.
Corey Farrell [Mon, 6 Nov 2017 21:20:06 +0000 (16:20 -0500)]
RTP Engine: Deal with errors returned from AST_VECTOR_REPLACE.

Check for errors from AST_VECTOR_REPLACE and clean memory if needed.

Change-Id: I124d15cc1d645f85a72a1279f623c1993b304b0b

23 months agoPBX: Handle errors from AST_VECTOR_APPEND.
Corey Farrell [Mon, 6 Nov 2017 21:16:35 +0000 (16:16 -0500)]
PBX: Handle errors from AST_VECTOR_APPEND.

This resolves potentials leaks on AST_VECTOR_APPEND error in:
* ast_context_add_include2
* ast_context_add_switch2
* ast_context_add_ignorepat2

Change-Id: Ib60e95c4f622fa3b832d87227c0523a695d736b6

23 months agoMessaging: Report error on failure to register tech or handler.
Corey Farrell [Mon, 6 Nov 2017 21:10:56 +0000 (16:10 -0500)]
Messaging: Report error on failure to register tech or handler.

Message tech and handler registrations use a vector which could fail to
expand.  If it does log and error and return error.

Change-Id: I593a8de81a07fb0452e9b0efd5d4018b77bca6f4

23 months agoformat_cap: Fix leak on AST_VECTOR_APPEND error.
Corey Farrell [Mon, 6 Nov 2017 21:07:01 +0000 (16:07 -0500)]
format_cap: Fix leak on AST_VECTOR_APPEND error.

format_cap_framed_init can fail on AST_VECTOR_APPEND.  This should
report failure to the caller and clean the newly allocated frame.

Change-Id: Ica0661235bf09497bf23d844ceb01f21b41a55b0

23 months agostasis: Remove silly use of RAII_VAR in stasis_forward_all.
Corey Farrell [Mon, 6 Nov 2017 20:23:46 +0000 (15:23 -0500)]
stasis: Remove silly use of RAII_VAR in stasis_forward_all.

Change-Id: I46de4c968d40144d5b049966304ff66c1469fb65

23 months agoCLI: Remove unused internal command.
Corey Farrell [Mon, 6 Nov 2017 18:51:32 +0000 (13:51 -0500)]
CLI: Remove unused internal command.

The internal CLI command "_command complete" was last used by Asterisk
0.2.0.  Since then we've been using "_command nummatches" and "_command
matchesarray".

Change-Id: I682fe1e21a24a3bb5bd04146e639f1c5866bcfce

23 months agoMerge "dtls: Add support for ephemeral DTLS certificates."
Joshua Colp [Mon, 6 Nov 2017 18:22:38 +0000 (12:22 -0600)]
Merge "dtls: Add support for ephemeral DTLS certificates."

23 months agostasis_bridges.c: Fix off-nominal json memory leaks.
Richard Mudgett [Fri, 3 Nov 2017 23:08:37 +0000 (18:08 -0500)]
stasis_bridges.c: Fix off-nominal json memory leaks.

Change-Id: Ib1181a36b317c86bff1ef2e44a17a0b1c73cfdc8

23 months agostasis_channels.c: Remove a very silly RAII_VAR().
Richard Mudgett [Fri, 3 Nov 2017 22:43:18 +0000 (17:43 -0500)]
stasis_channels.c: Remove a very silly RAII_VAR().

Change-Id: I28b458b3c1a442c4ef0be7b4986a95ea4149e14f

23 months agores_pjsip_pubsub: Ensure remote URI contains URI only.
Joshua Colp [Mon, 6 Nov 2017 16:29:33 +0000 (16:29 +0000)]
res_pjsip_pubsub: Ensure remote URI contains URI only.

This change makes it so that any user of the pubsub
API that requests the remote URI receives only the URI.
Previously the entire string was returned, which could
contain a display name.

ASTERISK-27290

Change-Id: If1d0cd6630f0a264856d31d2a67933109187a017

23 months agoMerge "install_prereq: Checkout of libSRTP 2.x."
Joshua Colp [Mon, 6 Nov 2017 17:57:58 +0000 (11:57 -0600)]
Merge "install_prereq: Checkout of libSRTP 2.x."

23 months agostasis/app.c: Optimize stasis_app_get_debug_by_name()
Richard Mudgett [Fri, 3 Nov 2017 21:14:15 +0000 (16:14 -0500)]
stasis/app.c: Optimize stasis_app_get_debug_by_name()

* Eliminate RAII_VAR()
* Short circuit application name lookup if global debug enabled.

Change-Id: I5f78b7bd6ca7fd2c3b07cbbe036c6a93b4681123

23 months agoFix ast_(v)asprintf() malloc failure usage conditions.
Richard Mudgett [Thu, 2 Nov 2017 23:40:20 +0000 (18:40 -0500)]
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

23 months agoMerge "configure: Add autoconf check for libopusfile."
Joshua Colp [Mon, 6 Nov 2017 16:38:18 +0000 (10:38 -0600)]
Merge "configure: Add autoconf check for libopusfile."