emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master cf0a76a: Don't error when comparing IPv4 and IPv6 addresses


From: Robert Pluim
Subject: master cf0a76a: Don't error when comparing IPv4 and IPv6 addresses
Date: Tue, 19 Nov 2019 07:41:24 -0500 (EST)

branch: master
commit cf0a76a43831105d74b54f0e50f77eb60460fbea
Author: Robert Pluim <address@hidden>
Commit: Robert Pluim <address@hidden>

    Don't error when comparing IPv4 and IPv6 addresses
    
    * lisp/net/nsm.el (nsm-network-same-subnet): Compare lengths of
    local-ip and ip; different lengths can never match.
    (nsm-should-check): Chop port off end of address.
---
 lisp/net/nsm.el | 26 +++++++++++++++-----------
 1 file changed, 15 insertions(+), 11 deletions(-)

diff --git a/lisp/net/nsm.el b/lisp/net/nsm.el
index c47ef55..205b797 100644
--- a/lisp/net/nsm.el
+++ b/lisp/net/nsm.el
@@ -204,17 +204,21 @@ LOCAL-IP, MASK, and IP are specified as vectors of 
integers, and
 are expected to have the same length.  Works for both IPv4 and
 IPv6 addresses."
   (let ((matches t)
-        (length (length local-ip)))
-    (unless (memq length '(4 5 8 9))
+        (ip-length (length ip))
+        (local-length (length local-ip)))
+    (unless (and (memq ip-length '(4 5 8 9))
+                 (memq local-length '(4 5 8 9)))
       (error "Unexpected length of IP address %S" local-ip))
-    (dotimes (i length)
-      (setq matches (and matches
-                         (=
-                          (logand (aref local-ip i)
-                                  (aref mask i))
-                          (logand (aref ip i)
-                                  (aref mask i))))))
-    matches))
+    (if (/= ip-length local-length)
+        nil
+        (dotimes (i local-length)
+          (setq matches (and matches
+                             (=
+                              (logand (aref local-ip i)
+                                      (aref mask i))
+                              (logand (aref ip i)
+                                      (aref mask i))))))
+        matches)))
 
 (defun nsm-should-check (host)
   "Determine whether NSM should check for TLS problems for HOST.
@@ -238,7 +242,7 @@ otherwise."
              (when
                  (nsm-network-same-subnet (substring (car info) 0 -1)
                                           (substring (car (cddr info)) 0 -1)
-                                          address)
+                                          (substring address 0 -1))
                (setq off-net nil))))
          network-interface-list))
       addresses))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]