You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by tr...@apache.org on 2017/03/22 16:20:12 UTC

qpid-dispatch git commit: DISPATCH-730 - Fixed several Coverity-flagged bugs.

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 <tr...@redhat.com>
Authored: Wed Mar 22 11:44:48 2017 -0400
Committer: Ted Ross <tr...@redhat.com>
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: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org