mirror of
https://github.com/NLnetLabs/unbound.git
synced 2026-01-18 04:32:54 -05:00
Fixup assertion failure for certain malformed packets.
git-svn-id: file:///svn/unbound/trunk@1407 be551aaa-1e26-0410-a405-d3ace91eadb9
This commit is contained in:
parent
33ae9fd843
commit
ca89f7290c
5 changed files with 13 additions and 4 deletions
|
|
@ -759,6 +759,7 @@ worker_handle_request(struct comm_point* c, void* arg, int error,
|
|||
/* see if query is in the cache */
|
||||
if(!query_info_parse(&qinfo, c->buffer)) {
|
||||
verbose(VERB_ALGO, "worker parse request: formerror.");
|
||||
ldns_buffer_rewind(c->buffer);
|
||||
LDNS_QR_SET(ldns_buffer_begin(c->buffer));
|
||||
LDNS_RCODE_SET(ldns_buffer_begin(c->buffer),
|
||||
LDNS_RCODE_FORMERR);
|
||||
|
|
@ -779,6 +780,7 @@ worker_handle_request(struct comm_point* c, void* arg, int error,
|
|||
}
|
||||
if((ret=parse_edns_from_pkt(c->buffer, &edns)) != 0) {
|
||||
verbose(VERB_ALGO, "worker parse edns: formerror.");
|
||||
ldns_buffer_rewind(c->buffer);
|
||||
LDNS_QR_SET(ldns_buffer_begin(c->buffer));
|
||||
LDNS_RCODE_SET(ldns_buffer_begin(c->buffer), ret);
|
||||
server_stats_insrcode(&worker->stats, c->buffer);
|
||||
|
|
|
|||
|
|
@ -1,3 +1,7 @@
|
|||
6 January 2009: Wouter
|
||||
- fixup packet-of-death when compiled with --enable-debug.
|
||||
A malformed packet could cause an internal assertion failure.
|
||||
|
||||
5 January 2009: Wouter
|
||||
- fixup getaddrinfo failure handling for remote control port.
|
||||
- added L.ROOT-SERVERS.NET. AAAA 2001:500:3::42 to builtin root hints.
|
||||
|
|
|
|||
|
|
@ -2,9 +2,9 @@
|
|||
|
||||
NEED_SPLINT='00-lint.tpkg'
|
||||
NEED_DOXYGEN='01-doc.tpkg'
|
||||
NEED_LDNS_TESTNS='fwd_no_edns.tpkg fwd_tcp_tc.tpkg fwd_tcp.tpkg fwd_three_service.tpkg fwd_three.tpkg fwd_ttlexpire.tpkg fwd_udp.tpkg fwd_tcp_tc6.tpkg fwd_compress_c00c.tpkg fwd_ancil.tpkg stat_timer.tpkg 05-asynclook.tpkg stream_tcp.tpkg speed_cache.tpkg fwd_oneport.tpkg fwd_udptmout.tpkg fwd_waitudp.tpkg tcp_sigpipe.tpkg hostsfileosx.tpkg local_nodefault.tpkg'
|
||||
NEED_XXD='fwd_compress_c00c.tpkg'
|
||||
NEED_NC='fwd_compress_c00c.tpkg'
|
||||
NEED_LDNS_TESTNS='fwd_no_edns.tpkg fwd_tcp_tc.tpkg fwd_tcp.tpkg fwd_three_service.tpkg fwd_three.tpkg fwd_ttlexpire.tpkg fwd_udp.tpkg fwd_tcp_tc6.tpkg fwd_compress_c00c.tpkg fwd_ancil.tpkg stat_timer.tpkg 05-asynclook.tpkg stream_tcp.tpkg speed_cache.tpkg fwd_oneport.tpkg fwd_udptmout.tpkg fwd_waitudp.tpkg tcp_sigpipe.tpkg hostsfileosx.tpkg local_nodefault.tpkg fwd_zero.tpkg'
|
||||
NEED_XXD='fwd_compress_c00c.tpkg fwd_zero.tpkg'
|
||||
NEED_NC='fwd_compress_c00c.tpkg fwd_zero.tpkg'
|
||||
NEED_CURL='06-ianaports.tpkg'
|
||||
NEED_WHOAMI='07-confroot.tpkg'
|
||||
NEED_IPV6='fwd_ancil.tpkg fwd_tcp_tc6.tpkg'
|
||||
|
|
|
|||
BIN
testdata/fwd_zero.tpkg
vendored
Normal file
BIN
testdata/fwd_zero.tpkg
vendored
Normal file
Binary file not shown.
|
|
@ -234,7 +234,10 @@ comm_point_send_udp_msg(struct comm_point *c, ldns_buffer* packet,
|
|||
{
|
||||
ssize_t sent;
|
||||
log_assert(c->fd != -1);
|
||||
log_assert(ldns_buffer_remaining(packet) > 0);
|
||||
#ifdef UNBOUND_DEBUG
|
||||
if(ldns_buffer_remaining(packet) == 0)
|
||||
log_err("internal error: send empty UDP packet");
|
||||
#endif
|
||||
log_assert(addr && addrlen > 0);
|
||||
sent = sendto(c->fd, ldns_buffer_begin(packet),
|
||||
ldns_buffer_remaining(packet), 0,
|
||||
|
|
|
|||
Loading…
Reference in a new issue