[ https://issues.apache.org/jira/browse/DISPATCH-1058?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16527868#comment-16527868 ]
ASF subversion and git services commented on DISPATCH-1058: ----------------------------------------------------------- Commit 9a48334eb32c261b527db1920a574dc5998f27b6 in qpid-dispatch's branch refs/heads/master from [~ganeshmurthy] [ https://git-wip-us.apache.org/repos/asf?p=qpid-dispatch.git;h=9a48334 ] DISPATCH-1058 - Memory leak fixes and other fixes found by Coverity > Fix leaks/other code issues found by Coverity > ---------------------------------------------- > > Key: DISPATCH-1058 > URL: https://issues.apache.org/jira/browse/DISPATCH-1058 > Project: Qpid Dispatch > Issue Type: Bug > Components: Container > Affects Versions: 1.1.0 > Reporter: Ganesh Murthy > Assignee: Ganesh Murthy > Priority: Major > Fix For: 1.2.0 > > > {noformat} > ________________________________________________________________________________________________________ > *** CID 294222: Resource leaks (RESOURCE_LEAK) > /home/kgiusti/work/qpid-dispatch/src/policy.c: 293 in qd_policy_parse_tree() > 287 if (!tree) > 288 return NULL; > 289 > 290 // make a writable, disposable copy of the csv string > 291 char * dup = strdup(config_spec); > 292 if (!dup) > >>> CID 294222: Resource leaks (RESOURCE_LEAK) > >>> Variable "tree" going out of scope leaks the storage it points to. > 293 return NULL; > 294 char * dupend = dup + strlen(dup); > 295 > 296 char * pch = dup; > 297 while (pch < dupend) { > 298 // the tuple strings > ** CID 294221: Resource leaks (RESOURCE_LEAK) > /home/kgiusti/work/qpid-dispatch/tests/policy_test.c: 101 in > test_link_name_tree_lookup() > ________________________________________________________________________________________________________ > *** CID 294219: Resource leaks (RESOURCE_LEAK) > /home/kgiusti/work/qpid-dispatch/src/router_core/forwarder.c: 810 in > qdr_forward_link_balanced_CT() > 804 > 805 qdr_connection_enqueue_work_CT(core, conn, work); > 806 > 807 return true; > 808 } > 809 > >>> CID 294219: Resource leaks (RESOURCE_LEAK) > >>> Variable "insert" going out of scope leaks the storage it points to. > 810 return false; > 811 } > 812 > 813 > 814 > //================================================================================== > 815 // In-Thread API Functions > ** CID 294218: (RESOURCE_LEAK) > /home/kgiusti/work/qpid-dispatch/tests/parse_tree_tests.c: 77 in > test_add_and_match_str() > /home/kgiusti/work/qpid-dispatch/tests/parse_tree_tests.c: 80 in > test_add_and_match_str() > /home/kgiusti/work/qpid-dispatch/tests/parse_tree_tests.c: 83 in > test_add_and_match_str() > ________________________________________________________________________________________________________ > *** CID 294217: Null pointer dereferences (REVERSE_INULL) > /home/kgiusti/work/qpid-dispatch/src/router_core/forwarder.c: 199 in > qdr_forward_deliver_CT() > 193 > 194 // > 195 // We are dealing here only with link routed deliveries > 196 // If the out_link has a connected link and if the out_link is an > inter-router link, increment the global deliveries_transit > 197 // If the out_link is a route container link, add to the global > deliveries_egress > 198 // > >>> CID 294217: Null pointer dereferences (REVERSE_INULL) > >>> Null-checking "out_link" suggests that it may be null, but it has > >>>already been dereferenced on all paths leading to the check. > 199 if (out_link && out_link->connected_link) { > 200 if (out_link->conn->role == QDR_ROLE_INTER_ROUTER) { > 201 core->deliveries_transit++; > 202 } > 203 else { > 204 core->deliveries_egress++; > ** CID 294216: (USE_AFTER_FREE) > /home/kgiusti/work/qpid-dispatch/src/router_core/transfer.c: 1028 in > qdr_link_deliver_CT() > ________________________________________________________________________________________________________ > *** CID 294216: (USE_AFTER_FREE) > /home/kgiusti/work/qpid-dispatch/src/router_core/transfer.c: 1028 in > qdr_link_deliver_CT() > 1022 // > 1023 // Deal with any delivery restrictions for this address. > 1024 // > 1025 if (addr && addr->router_control_only && link->link_type != > QD_LINK_CONTROL) { > 1026 qdr_delivery_release_CT(core, dlv); > 1027 qdr_link_issue_credit_CT(core, link, 1, false); > >>> CID 294216: (USE_AFTER_FREE) > >>> Calling "qdr_delivery_decref_CT" dereferences freed pointer "dlv". > 1028 qdr_delivery_decref_CT(core, dlv, "qdr_link_deliver_CT - > removed from action on restricted access"); > 1029 } else { > 1030 // > 1031 // Give the action reference to the qdr_link_forward > function. Don't decref/incref. > 1032 // > 1033 qdr_link_forward_CT(core, link, dlv, addr, more); > /home/kgiusti/work/qpid-dispatch/src/router_core/transfer.c: 1028 in > qdr_link_deliver_CT() > 1022 // > 1023 // Deal with any delivery restrictions for this address. > 1024 // > 1025 if (addr && addr->router_control_only && link->link_type != > QD_LINK_CONTROL) { > 1026 qdr_delivery_release_CT(core, dlv); > 1027 qdr_link_issue_credit_CT(core, link, 1, false); > >>> CID 294216: (USE_AFTER_FREE) > >>> Passing freed pointer "dlv" as an argument to > >>>"qdr_delivery_decref_CT". > 1028 qdr_delivery_decref_CT(core, dlv, "qdr_link_deliver_CT - > removed from action on restricted access"); > 1029 } else { > 1030 // > 1031 // Give the action reference to the qdr_link_forward > function. Don't decref/incref. > 1032 // > 1033 qdr_link_forward_CT(core, link, dlv, addr, more); > ** CID 294215: Null pointer dereferences (REVERSE_INULL) > /home/kgiusti/work/qpid-dispatch/src/server.c: 925 in handle() > ________________________________________________________________________________________________________ > *** CID 294215: Null pointer dereferences (REVERSE_INULL) > /home/kgiusti/work/qpid-dispatch/src/server.c: 925 in handle() > 919 case PN_TRANSPORT_ERROR: > 920 { > 921 qd_increment_conn_index(ctx); > 922 > 923 pn_transport_t *transport = pn_event_transport(e); > 924 pn_condition_t* condition = transport ? > pn_transport_condition(transport) : NULL; > >>> CID 294215: Null pointer dereferences (REVERSE_INULL) > >>> Null-checking "ctx" suggests that it may be null, but it has already > >>>been dereferenced on all paths leading to the check. > 925 if (ctx && ctx->connector) { /* Outgoing connection */ > 926 const qd_server_config_t *config = > &ctx->connector->config; > 927 if (condition && pn_condition_is_set(condition)) { > 928 qd_log(qd_server->log_source, QD_LOG_INFO, > "Connection to %s failed: %s %s", config->host_port, > 929 pn_condition_get_name(condition), > pn_condition_get_description(condition)); > 930 } else { > ** CID 294214: (RESOURCE_LEAK) > /home/kgiusti/work/qpid-dispatch/tests/policy_test.c: 149 in > test_link_name_csv_parser() > /home/kgiusti/work/qpid-dispatch/tests/policy_test.c: 154 in > test_link_name_csv_parser() > /home/kgiusti/work/qpid-dispatch/tests/policy_test.c: 159 in > test_link_name_csv_parser() > /home/kgiusti/work/qpid-dispatch/tests/policy_test.c: 164 in > test_link_name_csv_parser() > /home/kgiusti/work/qpid-dispatch/tests/policy_test.c: 169 in > test_link_name_csv_parser() > /home/kgiusti/work/qpid-dispatch/tests/policy_test.c: 174 in > test_link_name_csv_parser() > ________________________________________________________________________________________________________ > *** CID 294213: Resource leaks (RESOURCE_LEAK) > /home/kgiusti/work/qpid-dispatch/src/router_core/forwarder.c: 810 in > qdr_forward_link_balanced_CT() > 804 > 805 qdr_connection_enqueue_work_CT(core, conn, work); > 806 > 807 return true; > 808 } > 809 > >>> CID 294213: Resource leaks (RESOURCE_LEAK) > >>> Variable "strip" going out of scope leaks the storage it points to. > 810 return false; > 811 } > 812 > 813 > 814 > //================================================================================== > 815 // In-Thread API Functions > ** CID 294212: Resource leaks (RESOURCE_LEAK) > /home/kgiusti/work/qpid-dispatch/tests/policy_test.c: 133 in > test_link_name_tree_lookup() > ________________________________________________________________________________________________________ > *** CID 294211: Null pointer dereferences (FORWARD_NULL) > /home/kgiusti/work/qpid-dispatch/src/policy.c: 389 in > qd_policy_open_lookup_user() > 383 (PyObject > *)policy->py_policy_manager, > 384 username, > hostip, vhost, conn_name, conn_id); > 385 if (result) { > 386 char *res_string = py_obj_2_c_string(result); > 387 const size_t res_len = res_string ? > strlen(res_string) : 0; > 388 if (res_len < name_buf_size) { > >>> CID 294211: Null pointer dereferences (FORWARD_NULL) > >>> Passing null pointer "res_string" to "strcpy", which dereferences it. > 389 strcpy(name_buf, res_string); > 390 } else { > 391 qd_log(policy->log_source, QD_LOG_ERROR, > 392 "Internal: lookup_user: insufficient > buffer for name"); > 393 } > 394 Py_XDECREF(result); > ________________________________________________________________________________________________________ > > {noformat} -- This message was sent by Atlassian JIRA (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org For additional commands, e-mail: dev-h...@qpid.apache.org