Repository: qpid-dispatch Updated Branches: refs/heads/master adc3ca6a4 -> 0c6359981
DISPATCH-730 - Fixed several Coverity-flagged bugs. Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/0c635998 Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/0c635998 Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/0c635998 Branch: refs/heads/master Commit: 0c6359981b3c642e2d5ed3c4ddc66a9299a54c95 Parents: adc3ca6 Author: Ted Ross <[email protected]> Authored: Wed Mar 22 11:44:48 2017 -0400 Committer: Ted Ross <[email protected]> Committed: Wed Mar 22 11:44:48 2017 -0400 ---------------------------------------------------------------------- src/router_core/agent.c | 4 ++-- src/router_core/connections.c | 9 +++++++-- src/router_core/transfer.c | 6 +++--- 3 files changed, 12 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/0c635998/src/router_core/agent.c ---------------------------------------------------------------------- diff --git a/src/router_core/agent.c b/src/router_core/agent.c index fe1ecca..e53beae 100644 --- a/src/router_core/agent.c +++ b/src/router_core/agent.c @@ -272,8 +272,8 @@ static void qdr_agent_set_columns(qdr_query_t *query, // Either the attribute_names field is absent, it's not a list, or it's an empty list. // In this case, we will include all available attributes. // - if (column_count > QDR_AGENT_MAX_COLUMNS) - column_count = QDR_AGENT_MAX_COLUMNS; + if (column_count >= QDR_AGENT_MAX_COLUMNS) + column_count = QDR_AGENT_MAX_COLUMNS - 1; int i; for (i = 0; i < column_count; i++) query->columns[i] = i; http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/0c635998/src/router_core/connections.c ---------------------------------------------------------------------- diff --git a/src/router_core/connections.c b/src/router_core/connections.c index 5d80bf1..38ec82f 100644 --- a/src/router_core/connections.c +++ b/src/router_core/connections.c @@ -198,6 +198,7 @@ int qdr_connection_process(qdr_connection_t *conn) qdr_link_ref_t *ref; qdr_link_t *link; + bool free_link; int event_count = 0; @@ -229,6 +230,7 @@ int qdr_connection_process(qdr_connection_t *conn) do { qdr_link_work_t *link_work; + free_link = false; sys_mutex_lock(conn->work_lock); ref = DEQ_HEAD(conn->links_with_work); @@ -270,7 +272,7 @@ int qdr_connection_process(qdr_connection_t *conn) case QDR_LINK_WORK_SECOND_DETACH : core->detach_handler(core->user_context, link, link_work->error, false, link_work->close_link); - free_qdr_link_t(link); + free_link = true; break; } @@ -305,8 +307,11 @@ int qdr_connection_process(qdr_connection_t *conn) dref = DEQ_HEAD(updated_deliveries); event_count++; } + + if (free_link) + free_qdr_link_t(link); } - } while (link); + } while (free_link || link); return event_count; } http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/0c635998/src/router_core/transfer.c ---------------------------------------------------------------------- diff --git a/src/router_core/transfer.c b/src/router_core/transfer.c index 66ab3d8..40d4c45 100644 --- a/src/router_core/transfer.c +++ b/src/router_core/transfer.c @@ -708,14 +708,14 @@ static void qdr_update_delivery_CT(qdr_core_t *core, qdr_action_t *action, bool peer->peer = 0; dlv->peer = 0; - qdr_delivery_decref_CT(core, dlv); - qdr_delivery_decref_CT(core, peer); - if (peer->link) { peer_moved = qdr_delivery_settled_CT(core, peer); if (peer_moved) push = true; } + + qdr_delivery_decref_CT(core, dlv); + qdr_delivery_decref_CT(core, peer); } if (dlv->link) --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
