You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ac...@apache.org on 2015/03/05 23:00:00 UTC

svn commit: r1664495 - in /qpid/dispatch/trunk/src: log.c router_agent.c router_node.c

Author: aconway
Date: Thu Mar  5 21:59:59 2015
New Revision: 1664495

URL: http://svn.apache.org/r1664495
Log:
NO-JIRA: Fix bugs shown up by coverity scan

Scan: https://scan.coverity.com/projects/3952?tab=overview

log.c
11366 Resource leak
11378 Copy into fixed size buffer

server.c
11351 Logically dead code

router_agent.c
11379 Copy into fixed size buffer

router_node.c
11380 Copy into fixed size buffer

Modified:
    qpid/dispatch/trunk/src/log.c
    qpid/dispatch/trunk/src/router_agent.c
    qpid/dispatch/trunk/src/router_node.c

Modified: qpid/dispatch/trunk/src/log.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/log.c?rev=1664495&r1=1664494&r2=1664495&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/log.c (original)
+++ qpid/dispatch/trunk/src/log.c Thu Mar  5 21:59:59 2015
@@ -359,11 +359,14 @@ void qd_log_initialize(void)
     DEQ_INIT(entries);
     DEQ_INIT(source_list);
     DEQ_INIT(sink_list);
-    strcpy((char*)level_names, levels[NONE].name);
-    for (level_index_t i = NONE+1; i < N_LEVELS; ++i) {
-        strcat((char*)level_names, ", ");
-        strcat((char*)level_names, levels[i].name);
-    }
+
+    // Set up level_names for use in error messages.
+    ZERO((char*)level_names);
+    char *begin = (char*)level_names, *end = (char*)level_names+sizeof(level_names);
+    aprintf(&begin, end, "%s", levels[NONE].name);
+    for (level_index_t i = NONE + 1; i < N_LEVELS; ++i)
+        aprintf(&begin, end, ", %s", levels[i].name);
+
     log_lock = sys_mutex();
     log_source_lock = sys_mutex();
 
@@ -390,11 +393,10 @@ qd_error_t qd_log_entity(qd_entity_t *en
     qd_error_clear();
     char* module = qd_entity_get_string(entity, "module"); QD_ERROR_RET();
     sys_mutex_lock(log_source_lock);
-    qd_log_source_t *src = qd_log_source_lh(module);
-    assert(src);
-    qd_log_source_t copy = *src;
-    sys_mutex_unlock(log_source_lock);
+    qd_log_source_t *src = qd_log_source_lh(module); /* The original log source */
     free(module);
+    qd_log_source_t copy = *src; /* A copy to modify outside the lock. */
+    sys_mutex_unlock(log_source_lock);
 
     if (qd_entity_has(entity, "enable")) {
         char *enable = qd_entity_get_string(entity, "enable");

Modified: qpid/dispatch/trunk/src/router_agent.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/router_agent.c?rev=1664495&r1=1664494&r2=1664495&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/router_agent.c (original)
+++ qpid/dispatch/trunk/src/router_agent.c Thu Mar  5 21:59:59 2015
@@ -109,12 +109,9 @@ void qd_router_build_node_list(qd_dispat
     sys_mutex_lock(router->lock);
     qd_router_node_t *rnode = DEQ_HEAD(router->routers);
     while (rnode) {
-        strcpy(temp, "amqp:/_topo/");
-        strcat(temp, router->router_area);
-        strcat(temp, "/");
         const unsigned char* addr = qd_hash_key_by_handle(rnode->owning_addr->hash_handle);
-        strcat(temp, &((char*) addr)[1]);
-        strcat(temp, "/$management");
+        snprintf(temp, sizeof(temp), "amqp:/_topo/%s/%s/$management",
+                router->router_area, &((char*) addr)[1]);
         qd_compose_insert_string(field, temp);
         rnode = DEQ_NEXT(rnode);
     }

Modified: qpid/dispatch/trunk/src/router_node.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/router_node.c?rev=1664495&r1=1664494&r2=1664495&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/router_node.c (original)
+++ qpid/dispatch/trunk/src/router_node.c Thu Mar  5 21:59:59 2015
@@ -2007,8 +2007,7 @@ qd_address_t *qd_router_register_address
     qd_address_t        *addr = 0;
     qd_field_iterator_t *iter = 0;
 
-    strcpy(addr_string, global ? "M0" : "L");
-    strcat(addr_string, address);
+    snprintf(addr_string, sizeof(addr_string), "%s%s", global ? "M0" : "L", address);
     iter = qd_field_iterator_string(addr_string, ITER_VIEW_NO_HOST);
 
     sys_mutex_lock(router->lock);



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org