diff --git a/elements/etherswitch/etherswitch.cc b/elements/etherswitch/etherswitch.cc index 6f83f4f5ab..4983b405a8 100644 --- a/elements/etherswitch/etherswitch.cc +++ b/elements/etherswitch/etherswitch.cc @@ -62,7 +62,8 @@ EtherSwitch::broadcast(int source, Packet *p) for (int i = 0; i < n && w > 0; i++) { if (pfr.bv[i]) { Packet *pp = (w > 1 ? p->clone() : p); - output(i).push(pp); + if (pp) + output(i).push(pp); w--; } } diff --git a/elements/icmp/icmpsendpings.cc b/elements/icmp/icmpsendpings.cc index 38eb592130..8facdc7ff5 100644 --- a/elements/icmp/icmpsendpings.cc +++ b/elements/icmp/icmpsendpings.cc @@ -154,7 +154,7 @@ ICMPPingSource::make_packet(WritablePacket *q) q->set_ip_header(nip, sizeof(click_ip)); q->timestamp_anno().assign_now(); - if (_receiver) + if (q && _receiver) _receiver->send_timestamp[icp->icmp_sequence] = q->timestamp_anno(); return q; diff --git a/include/click/hashtable.hh b/include/click/hashtable.hh index 05814946c3..9de0cbfd0d 100644 --- a/include/click/hashtable.hh +++ b/include/click/hashtable.hh @@ -951,7 +951,9 @@ template typename HashTable::value_type & HashTable::operator[](key_const_reference key) { - return *find_insert(key); + HashTable_iterator i = find_insert(key); + assert(i.get()); + return *i; } template diff --git a/lib/fromfile.cc b/lib/fromfile.cc index e0bb6dd24d..57217f13ad 100644 --- a/lib/fromfile.cc +++ b/lib/fromfile.cc @@ -157,6 +157,11 @@ FromFile::read_buffer_mmap(ErrorHandler *errh) return error(errh, "mmap: %s", strerror(errno)); _data_packet = Packet::make((unsigned char *)mmap_data, _len, munmap_destructor, 0); + if (!_data_packet) { + munmap_destructor((unsigned char *)mmap_data, _len, NULL); + return error(errh, "Packet::make failed"); + } + _buffer = _data_packet->data(); _file_offset = _mmap_off; _mmap_off += _len;