summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2012-11-09 08:59:36 +0100
committerKarolin Seeger <kseeger@samba.org>2012-12-14 10:01:39 +0100
commit0a99e5d09a38e51607248290e9d9cb7f5c1b5808 (patch)
tree39e1592430745a5f4e1eec6f3c507740a92d5b5f
parent4fabb76106fc5224d48d380c9b1a6cb399dc3621 (diff)
downloadsamba-0a99e5d09a38e51607248290e9d9cb7f5c1b5808.tar.gz
source3/libaddns: don't depend on the order in resp->answers[]
Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Andrew Bartlett <abartlet@samba.org> (cherry picked from commit eecc1d294256210ee8c2f6ab79d21b835258a6d4) The last 2 patches address bug #9402 - lib/addns doesn't work samba4 with a bind9 server. (cherry picked from commit cf4773f929b2ac01bfe22e8113ccd3843c92bf56)
-rw-r--r--source3/libaddns/dnsgss.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/source3/libaddns/dnsgss.c b/source3/libaddns/dnsgss.c
index fe7c6ca536e..a8b2ea18bcb 100644
--- a/source3/libaddns/dnsgss.c
+++ b/source3/libaddns/dnsgss.c
@@ -164,6 +164,8 @@ static DNS_ERROR dns_negotiate_gss_ctx_int( TALLOC_CTX *mem_ctx,
struct dns_request *resp;
struct dns_buffer *buf;
struct dns_tkey_record *tkey;
+ struct dns_rrec *tkey_answer = NULL;
+ uint16_t i;
err = dns_receive(mem_ctx, conn, &buf);
if (!ERR_DNS_IS_OK(err)) goto error;
@@ -174,9 +176,16 @@ static DNS_ERROR dns_negotiate_gss_ctx_int( TALLOC_CTX *mem_ctx,
/*
* TODO: Compare id and keyname
*/
-
- if ((resp->num_answers == 0) ||
- (resp->answers[0]->type != QTYPE_TKEY)) {
+
+ for (i=0; i < resp->num_answers; i++) {
+ if (resp->answers[i]->type != QTYPE_TKEY) {
+ continue;
+ }
+
+ tkey_answer = resp->answers[i];
+ }
+
+ if (tkey_answer == NULL) {
err = ERROR_DNS_INVALID_MESSAGE;
goto error;
}