svn commit: samba r5075 - in trunk/source/nmbd: .

jra at samba.org jra at samba.org
Sat Jan 29 02:03:40 GMT 2005


Author: jra
Date: 2005-01-29 02:03:39 +0000 (Sat, 29 Jan 2005)
New Revision: 5075

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=5075

Log:
Ensure that WINS negative name query responses and WACK packets
use the correct RR type of 0xA instead of reflecting back what
the query RR type was (0x20). See rfc1002 sections 4.2.14 and
4.2.16.
Jeremy.

Modified:
   trunk/source/nmbd/nmbd_packets.c


Changeset:
Modified: trunk/source/nmbd/nmbd_packets.c
===================================================================
--- trunk/source/nmbd/nmbd_packets.c	2005-01-29 01:42:09 UTC (rev 5074)
+++ trunk/source/nmbd/nmbd_packets.c	2005-01-29 02:03:39 UTC (rev 5075)
@@ -864,6 +864,7 @@
 	struct res_rec answers;
 	struct nmb_packet *orig_nmb = &orig_packet->packet.nmb;
 	BOOL loopback_this_packet = False;
+	BOOL use_null_rr_type = False;
 	const char *packet_type = "unknown";
   
 	/* Check if we are sending to or from ourselves. */
@@ -906,6 +907,7 @@
 			packet_type = "nmb_wack";
 			nmb->header.nm_flags.recursion_desired = False;
 			nmb->header.nm_flags.recursion_available = False;
+			use_null_rr_type = True;
 			break;
 		case WINS_REG:
 			packet_type = "wins_reg";
@@ -916,6 +918,9 @@
 			packet_type = "wins_query";
 			nmb->header.nm_flags.recursion_desired = True;
 			nmb->header.nm_flags.recursion_available = True;
+			if (rcode) {
+				use_null_rr_type = True;
+			}
 			break;
 		default:
 			DEBUG(0,("reply_netbios_packet: Unknown packet type: %s %s to ip %s\n",
@@ -947,7 +952,11 @@
 	memset((char*)nmb->answers,'\0',sizeof(*nmb->answers));
   
 	nmb->answers->rr_name  = orig_nmb->question.question_name;
-	nmb->answers->rr_type  = orig_nmb->question.question_type;
+	if (use_null_rr_type) {
+		nmb->answers->rr_type  = RR_TYPE_NULL;
+	} else {
+		nmb->answers->rr_type  = orig_nmb->question.question_type;
+	}
 	nmb->answers->rr_class = orig_nmb->question.question_class;
 	nmb->answers->ttl      = ttl;
   



More information about the samba-cvs mailing list