Ganesh Murthy created DISPATCH-730: -------------------------------------- Summary: Coverity scan reported errors in Qpid Dispatch master Key: DISPATCH-730 URL: https://issues.apache.org/jira/browse/DISPATCH-730 Project: Qpid Dispatch Issue Type: Bug Components: Container Affects Versions: 0.8.0 Reporter: Ganesh Murthy Assignee: Ganesh Murthy Fix For: 0.8.0
5 new defect(s) introduced to Apache Qpid dispatch-router found with Coverity Scan. New defect(s) Reported-by: Coverity Scan Showing 5 of 5 defect(s) ** CID 142339: (USE_AFTER_FREE) /home/gmurthy/opensource/dispatch/src/router_core/connections.c: 284 in qdr_connection_process() /home/gmurthy/opensource/dispatch/src/router_core/connections.c: 284 in qdr_connection_process() ________________________________________________________________________________________________________ *** CID 142339: (USE_AFTER_FREE) /home/gmurthy/opensource/dispatch/src/router_core/connections.c: 284 in qdr_connection_process() 278 if (link_work->work_type == QDR_LINK_WORK_DELIVERY && link_work->value > 0) { 279 DEQ_INSERT_HEAD(link->work_list, link_work); 280 link_work = 0; // Halt work processing 281 } else { 282 qdr_error_free(link_work->error); 283 free_qdr_link_work_t(link_work); >>> CID 142339: (USE_AFTER_FREE) >>> Dereferencing freed pointer "link". 284 link_work = DEQ_HEAD(link->work_list); 285 if (link_work) 286 DEQ_REMOVE_HEAD(link->work_list); 287 } 288 sys_mutex_unlock(conn->work_lock); 289 event_count++; /home/gmurthy/opensource/dispatch/src/router_core/connections.c: 284 in qdr_connection_process() 278 if (link_work->work_type == QDR_LINK_WORK_DELIVERY && link_work->value > 0) { 279 DEQ_INSERT_HEAD(link->work_list, link_work); 280 link_work = 0; // Halt work processing 281 } else { 282 qdr_error_free(link_work->error); 283 free_qdr_link_work_t(link_work); >>> CID 142339: (USE_AFTER_FREE) >>> Dereferencing freed pointer "link". 284 link_work = DEQ_HEAD(link->work_list); 285 if (link_work) 286 DEQ_REMOVE_HEAD(link->work_list); 287 } 288 sys_mutex_unlock(conn->work_lock); 289 event_count++; ** CID 142338: Resource leaks (RESOURCE_LEAK) /home/gmurthy/opensource/dispatch/src/failoverlist.c: 103 in qd_failover_list() ________________________________________________________________________________________________________ *** CID 142338: Resource leaks (RESOURCE_LEAK) /home/gmurthy/opensource/dispatch/src/failoverlist.c: 103 in qd_failover_list() 97 char *cursor = list->text; 98 char *next; 99 do { 100 next = qd_fol_next(cursor, ","); 101 qd_failover_item_t *item = qd_fol_item(cursor, error); 102 if (item == 0) >>> CID 142338: Resource leaks (RESOURCE_LEAK) >>> Variable "list" going out of scope leaks the storage it points to. 103 return 0; 104 DEQ_INSERT_TAIL(list->item_list, item); 105 cursor = next; 106 } while (cursor && *cursor); 107 108 return list; ** CID 142337: Null pointer dereferences (FORWARD_NULL) /home/gmurthy/opensource/dispatch/src/server.c: 564 in decorate_connection() ________________________________________________________________________________________________________ *** CID 142337: Null pointer dereferences (FORWARD_NULL) /home/gmurthy/opensource/dispatch/src/server.c: 564 in decorate_connection() 558 if (config && config->inter_router_cost > 1) { 559 pn_data_put_symbol(pn_connection_properties(conn), 560 pn_bytes(strlen(QD_CONNECTION_PROPERTY_COST_KEY), QD_CONNECTION_PROPERTY_COST_KEY)); 561 pn_data_put_int(pn_connection_properties(conn), config->inter_router_cost); 562 } 563 >>> CID 142337: Null pointer dereferences (FORWARD_NULL) >>> Dereferencing null pointer "config". 564 qd_failover_list_t *fol = config->failover_list; 565 if (fol) { 566 pn_data_put_symbol(pn_connection_properties(conn), 567 pn_bytes(strlen(QD_CONNECTION_PROPERTY_FAILOVER_LIST_KEY), QD_CONNECTION_PROPERTY_FAILOVER_LIST_KEY)); 568 pn_data_put_list(pn_connection_properties(conn)); 569 pn_data_enter(pn_connection_properties(conn)); ** CID 142336: API usage errors (CHAR_IO) /home/gmurthy/opensource/dispatch/src/connection_manager.c: 444 in qd_dispatch_configure_ssl_profile() ________________________________________________________________________________________________________ *** CID 142336: API usage errors (CHAR_IO) /home/gmurthy/opensource/dispatch/src/connection_manager.c: 444 in qd_dispatch_configure_ssl_profile() 438 char buffer[200]; 439 440 char c; 441 int i=0; 442 443 while(true) { >>> CID 142336: API usage errors (CHAR_IO) >>> Assigning the return value of "fgetc" to char "c" truncates its value. 444 c = fgetc(file); 445 if(c == EOF || c == '\n') 446 break; 447 buffer[i++] = c; 448 } 449 ** CID 142335: (ATOMICITY) /home/gmurthy/opensource/dispatch/src/router_core/connections.c: 279 in qdr_connection_process() /home/gmurthy/opensource/dispatch/src/router_core/connections.c: 283 in qdr_connection_process() /home/gmurthy/opensource/dispatch/src/router_core/connections.c: 279 in qdr_connection_process() /home/gmurthy/opensource/dispatch/src/router_core/connections.c: 283 in qdr_connection_process() ________________________________________________________________________________________________________ *** CID 142335: (ATOMICITY) /home/gmurthy/opensource/dispatch/src/router_core/connections.c: 279 in qdr_connection_process() 273 free_qdr_link_t(link); 274 break; 275 } 276 277 sys_mutex_lock(conn->work_lock); 278 if (link_work->work_type == QDR_LINK_WORK_DELIVERY && link_work->value > 0) { >>> CID 142335: (ATOMICITY) >>> Using an unreliable value of "link_work" inside the second locked >>> section. If the data that "link_work" depends on was changed by another >>> thread, this use might be incorrect. 279 DEQ_INSERT_HEAD(link->work_list, link_work); 280 link_work = 0; // Halt work processing 281 } else { 282 qdr_error_free(link_work->error); 283 free_qdr_link_work_t(link_work); 284 link_work = DEQ_HEAD(link->work_list); /home/gmurthy/opensource/dispatch/src/router_core/connections.c: 283 in qdr_connection_process() 277 sys_mutex_lock(conn->work_lock); 278 if (link_work->work_type == QDR_LINK_WORK_DELIVERY && link_work->value > 0) { 279 DEQ_INSERT_HEAD(link->work_list, link_work); 280 link_work = 0; // Halt work processing 281 } else { 282 qdr_error_free(link_work->error); >>> CID 142335: (ATOMICITY) >>> Using an unreliable value of "link_work" inside the second locked >>> section. If the data that "link_work" depends on was changed by another >>> thread, this use might be incorrect. 283 free_qdr_link_work_t(link_work); 284 link_work = DEQ_HEAD(link->work_list); 285 if (link_work) 286 DEQ_REMOVE_HEAD(link->work_list); 287 } 288 sys_mutex_unlock(conn->work_lock); /home/gmurthy/opensource/dispatch/src/router_core/connections.c: 279 in qdr_connection_process() 273 free_qdr_link_t(link); 274 break; 275 } 276 277 sys_mutex_lock(conn->work_lock); 278 if (link_work->work_type == QDR_LINK_WORK_DELIVERY && link_work->value > 0) { >>> CID 142335: (ATOMICITY) >>> Using an unreliable value of "link_work" inside the second locked >>> section. If the data that "link_work" depends on was changed by another >>> thread, this use might be incorrect. 279 DEQ_INSERT_HEAD(link->work_list, link_work); 280 link_work = 0; // Halt work processing 281 } else { 282 qdr_error_free(link_work->error); 283 free_qdr_link_work_t(link_work); 284 link_work = DEQ_HEAD(link->work_list); /home/gmurthy/opensource/dispatch/src/router_core/connections.c: 283 in qdr_connection_process() 277 sys_mutex_lock(conn->work_lock); 278 if (link_work->work_type == QDR_LINK_WORK_DELIVERY && link_work->value > 0) { 279 DEQ_INSERT_HEAD(link->work_list, link_work); 280 link_work = 0; // Halt work processing 281 } else { 282 qdr_error_free(link_work->error); >>> CID 142335: (ATOMICITY) >>> Using an unreliable value of "link_work" inside the second locked >>> section. If the data that "link_work" depends on was changed by another >>> thread, this use might be incorrect. 283 free_qdr_link_work_t(link_work); 284 link_work = DEQ_HEAD(link->work_list); 285 if (link_work) 286 DEQ_REMOVE_HEAD(link->work_list); 287 } 288 sys_mutex_unlock(conn->work_lock); -- This message was sent by Atlassian JIRA (v6.3.15#6346) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org For additional commands, e-mail: dev-h...@qpid.apache.org