浏览代码

Fix: invalid dataOffset

Variable shadowing resulting in:
- Over-counted UDP bytes transferred
- DNS parsing failure
Rod Hynes 5 年之前
父节点
当前提交
dafefb8235
共有 1 个文件被更改,包括 3 次插入3 次删除
  1. 3 3
      psiphon/common/tun/tun.go

+ 3 - 3
psiphon/common/tun/tun.go

@@ -2192,7 +2192,7 @@ func processPacket(
 				return false
 				return false
 			}
 			}
 		} else if protocol == internetProtocolUDP {
 		} else if protocol == internetProtocolUDP {
-			dataOffset := 28
+			dataOffset = 28
 			if len(packet) < dataOffset {
 			if len(packet) < dataOffset {
 				metrics.rejectedPacket(direction, packetRejectUDPProtocolLength)
 				metrics.rejectedPacket(direction, packetRejectUDPProtocolLength)
 				return false
 				return false
@@ -2246,7 +2246,7 @@ func processPacket(
 				return false
 				return false
 			}
 			}
 		} else if protocol == internetProtocolUDP {
 		} else if protocol == internetProtocolUDP {
-			dataOffset := 48
+			dataOffset = 48
 			if len(packet) < dataOffset {
 			if len(packet) < dataOffset {
 				metrics.rejectedPacket(direction, packetRejectUDPProtocolLength)
 				metrics.rejectedPacket(direction, packetRejectUDPProtocolLength)
 				return false
 				return false
@@ -2323,7 +2323,7 @@ func processPacket(
 				// Limitation: checkAllowedDomainFunc is applied only to DNS queries in
 				// Limitation: checkAllowedDomainFunc is applied only to DNS queries in
 				// UDP; currently DNS-over-TCP will bypass the domain block list check.
 				// UDP; currently DNS-over-TCP will bypass the domain block list check.
 
 
-				if protocol == internetProtocolUDP {
+				if doTransparentDNS && protocol == internetProtocolUDP {
 
 
 					domain, err := common.ParseDNSQuestion(applicationData)
 					domain, err := common.ParseDNSQuestion(applicationData)
 					if err != nil {
 					if err != nil {