Welcome! Log In Create A New Profile

Advanced

[nginx] Resolver: fixed response processing.

Ruslan Ermilov
December 13, 2013 01:30PM
details: http://hg.nginx.org/nginx/rev/aebdca7e8f8f
branches:
changeset: 5470:aebdca7e8f8f
user: Ruslan Ermilov <ru@nginx.com>
date: Fri Dec 06 14:30:27 2013 +0400
description:
Resolver: fixed response processing.

Stricten response header checks: ensure that reserved bits are zeroes,
and that the opcode is "standard query".

Fixed the "zero-length domain name in DNS response" condition.

diffstat:

src/core/ngx_resolver.c | 11 +++++------
1 files changed, 5 insertions(+), 6 deletions(-)

diffs (46 lines):

diff -r b2fc466a11a7 -r aebdca7e8f8f src/core/ngx_resolver.c
--- a/src/core/ngx_resolver.c Fri Dec 06 14:30:27 2013 +0400
+++ b/src/core/ngx_resolver.c Fri Dec 06 14:30:27 2013 +0400
@@ -1022,7 +1022,6 @@ static void
ngx_resolver_process_response(ngx_resolver_t *r, u_char *buf, size_t n)
{
char *err;
- size_t len;
ngx_uint_t i, times, ident, qident, flags, code, nqs, nan,
qtype, qclass;
ngx_queue_t *q;
@@ -1047,13 +1046,14 @@ ngx_resolver_process_response(ngx_resolv
(response->nns_hi << 8) + response->nns_lo,
(response->nar_hi << 8) + response->nar_lo);

- if (!(flags & 0x8000)) {
+ /* response to a standard query */
+ if ((flags & 0xf870) != 0x8000) {
ngx_log_error(r->log_level, r->log, 0,
"invalid DNS response %ui fl:%04Xui", ident, flags);
return;
}

- code = flags & 0x7f;
+ code = flags & 0xf;

if (code == NGX_RESOLVE_FORMERR) {

@@ -1094,15 +1094,14 @@ ngx_resolver_process_response(ngx_resolv
goto found;
}

- len = buf[i];
- i += 1 + len;
+ i += 1 + buf[i];
}

goto short_response;

found:

- if (i++ == 0) {
+ if (i++ == sizeof(ngx_resolver_hdr_t)) {
err = "zero-length domain name in DNS response";
goto done;
}

_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[nginx] Resolver: fixed response processing.

Ruslan Ermilov 697 December 13, 2013 01:30PM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 150
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready