Repository: trafficserver Updated Branches: refs/heads/master d08db5d46 -> 0143ca195
TS-3347: fix assertions that have side-effects Coverity CID #1242347 Coverity CID #1242346 Coverity CID #1242344 Coverity CID #1242343 Coverity CID #1242341 Coverity CID #1242342 Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/0143ca19 Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/0143ca19 Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/0143ca19 Branch: refs/heads/master Commit: 0143ca195270fb17f003b05cf457570aa5a807ba Parents: d08db5d Author: James Peach <[email protected]> Authored: Tue Jan 27 10:03:30 2015 -0800 Committer: James Peach <[email protected]> Committed: Mon Feb 23 09:39:17 2015 -0800 ---------------------------------------------------------------------- iocore/cache/Cache.cc | 2 +- iocore/eventsystem/I_Lock.h | 2 +- mgmt/Alarms.cc | 14 +++++--------- mgmt/cluster/ClusterCom.cc | 6 ++---- proxy/PluginVC.cc | 29 ++++++++++++++--------------- proxy/PluginVC.h | 2 +- 6 files changed, 24 insertions(+), 31 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0143ca19/iocore/cache/Cache.cc ---------------------------------------------------------------------- diff --git a/iocore/cache/Cache.cc b/iocore/cache/Cache.cc index 8ac7946..5d429db 100644 --- a/iocore/cache/Cache.cc +++ b/iocore/cache/Cache.cc @@ -2832,7 +2832,7 @@ CacheVC::removeEvent(int /* event ATS_UNUSED */, Event * /* e ATS_UNUSED */) if (!f.remove_aborted_writers) { if (vol->open_write(this, true, 1)) { // writer exists - ink_assert(od = vol->open_read(&key)); + ink_release_assert(od = vol->open_read(&key)); od->dont_update_directory = 1; od = NULL; } else { http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0143ca19/iocore/eventsystem/I_Lock.h ---------------------------------------------------------------------- diff --git a/iocore/eventsystem/I_Lock.h b/iocore/eventsystem/I_Lock.h index bb3d2f3..d733e07 100644 --- a/iocore/eventsystem/I_Lock.h +++ b/iocore/eventsystem/I_Lock.h @@ -305,7 +305,7 @@ Mutex_trylock( #endif //DEBUG return false; } - ink_assert(m->thread_holding = t); + m->thread_holding = t; #ifdef DEBUG m->file = afile; m->line = aline; http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0143ca19/mgmt/Alarms.cc ---------------------------------------------------------------------- diff --git a/mgmt/Alarms.cc b/mgmt/Alarms.cc index aed1537..91f008f 100644 --- a/mgmt/Alarms.cc +++ b/mgmt/Alarms.cc @@ -297,17 +297,13 @@ Alarms::signalAlarm(alarm_t a, const char *desc, const char *ip) p++; if (*p == '\n') *p = '\0'; - char *new_desc; - const size_t new_desc_size = sizeof(char) * (strlen(desc) + strlen(my_ctime_str) + 4); - ink_assert(new_desc = (char *) alloca(new_desc_size)); - snprintf(new_desc, new_desc_size, "[%s] %s", my_ctime_str, desc); - desc = new_desc; + + const size_t sz = sizeof(char) * (strlen(desc) + strlen(my_ctime_str) + 4); ats_free(atmp->description); - const size_t atmp_desc_size = sizeof(char) * (strlen(desc) + 1); - atmp->description = (char *)ats_malloc(atmp_desc_size); - ink_strlcpy(atmp->description, desc, atmp_desc_size); - ink_mutex_release(&mutex); + atmp->description = (char *)ats_malloc(sz); + snprintf(atmp->description, sz, "[%s] %s", my_ctime_str, desc); + ink_mutex_release(&mutex); for (entry = ink_hash_table_iterator_first(cblist, &iterator_state); entry != NULL; entry = ink_hash_table_iterator_next(cblist, &iterator_state)) { http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0143ca19/mgmt/cluster/ClusterCom.cc ---------------------------------------------------------------------- diff --git a/mgmt/cluster/ClusterCom.cc b/mgmt/cluster/ClusterCom.cc index 80e212e..a273a28 100644 --- a/mgmt/cluster/ClusterCom.cc +++ b/mgmt/cluster/ClusterCom.cc @@ -842,7 +842,7 @@ ClusterCom::handleMultiCastMessage(char *message) /* Have we see this guy before? */ ink_mutex_acquire(&(mutex)); /* Grab cluster lock to access hash table */ if (ink_hash_table_lookup(peers, (InkHashTableKey) ip, &hash_value) == 0) { - ink_assert((p = (ClusterPeerInfo *)ats_malloc(sizeof(ClusterPeerInfo)))); + p = (ClusterPeerInfo *)ats_malloc(sizeof(ClusterPeerInfo)); p->inet_address = inet_addr(ip); p->num_virt_addrs = 0; @@ -1000,9 +1000,7 @@ ClusterCom::handleMultiCastStatPacket(char *last, ClusterPeerInfo * peer) rec->data.rec_string = NULL; } else if (!(strcmp(tmp_msg_val, "NULL") == 0)) { ats_free(rec->data.rec_string); - int rec_string_size = strlen(tmp_msg_val) + 1; - ink_assert((rec->data.rec_string = (RecString)ats_malloc(rec_string_size))); - ink_strlcpy(rec->data.rec_string, tmp_msg_val, rec_string_size); + rec->data.rec_string = (RecString)ats_strdup(tmp_msg_val); } break; } http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0143ca19/proxy/PluginVC.cc ---------------------------------------------------------------------- diff --git a/proxy/PluginVC.cc b/proxy/PluginVC.cc index 82f5e8e..2bed3f1 100644 --- a/proxy/PluginVC.cc +++ b/proxy/PluginVC.cc @@ -188,10 +188,10 @@ PluginVC::main_handler(int event, void *data) reentrancy_count++; if (call_event == active_event) { - process_timeout(call_event, VC_EVENT_ACTIVE_TIMEOUT, &active_event); + process_timeout(&active_event, VC_EVENT_ACTIVE_TIMEOUT); } else if (call_event == inactive_event) { if (inactive_timeout_at && inactive_timeout_at < ink_get_hrtime()) { - process_timeout(call_event, VC_EVENT_INACTIVITY_TIMEOUT, &inactive_event); + process_timeout(&inactive_event, VC_EVENT_INACTIVITY_TIMEOUT); call_event->cancel(); } } else { @@ -739,11 +739,11 @@ PluginVC::process_close() core_obj->attempt_delete(); } -// void PluginVC::process_timeout(Event* e, int event_to_send, Event** our_eptr) +// void PluginVC::process_timeout(Event** e, int event_to_send, Event** our_eptr) // // Handles sending timeout event to the VConnection. e is the event we got -// which indicats the timeout. event_to_send is the event to the -// vc user. Our_eptr is a pointer our event either inactive_event, +// which indicates the timeout. event_to_send is the event to the +// vc user. e is a pointer to either inactive_event, // or active_event. If we successfully send the timeout to vc user, // we clear the pointer, otherwise we reschedule it. // @@ -751,29 +751,28 @@ PluginVC::process_close() // touch any state after making the call back // void -PluginVC::process_timeout(Event * e, int event_to_send, Event ** our_eptr) +PluginVC::process_timeout(Event ** e, int event_to_send) { - - ink_assert(e = *our_eptr); + ink_assert(*e == inactive_event || *e == active_event); if (read_state.vio.op == VIO::READ && !read_state.shutdown && read_state.vio.ntodo() > 0) { - MUTEX_TRY_LOCK(lock, read_state.vio.mutex, e->ethread); + MUTEX_TRY_LOCK(lock, read_state.vio.mutex, (*e)->ethread); if (!lock.is_locked()) { - e->schedule_in(PVC_LOCK_RETRY_TIME); + (*e)->schedule_in(PVC_LOCK_RETRY_TIME); return; } - *our_eptr = NULL; + *e = NULL; read_state.vio._cont->handleEvent(event_to_send, &read_state.vio); } else if (write_state.vio.op == VIO::WRITE && !write_state.shutdown && write_state.vio.ntodo() > 0) { - MUTEX_TRY_LOCK(lock, write_state.vio.mutex, e->ethread); + MUTEX_TRY_LOCK(lock, write_state.vio.mutex, (*e)->ethread); if (!lock.is_locked()) { - e->schedule_in(PVC_LOCK_RETRY_TIME); + (*e)->schedule_in(PVC_LOCK_RETRY_TIME); return; } - *our_eptr = NULL; + *e = NULL; write_state.vio._cont->handleEvent(event_to_send, &write_state.vio); } else { - *our_eptr = NULL; + *e = NULL; } } http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0143ca19/proxy/PluginVC.h ---------------------------------------------------------------------- diff --git a/proxy/PluginVC.h b/proxy/PluginVC.h index ecf1da8..90ff7e8 100644 --- a/proxy/PluginVC.h +++ b/proxy/PluginVC.h @@ -135,7 +135,7 @@ private: void process_read_side(bool); void process_write_side(bool); void process_close(); - void process_timeout(Event * e, int event_to_send, Event ** our_eptr); + void process_timeout(Event ** e, int event_to_send); void setup_event_cb(ink_hrtime in, Event ** e_ptr);
