mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-16 09:14:18 +00:00
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.
This commit is contained in:
parent
067a42f8dd
commit
cf0a76a438
1 changed files with 15 additions and 11 deletions
|
|
@ -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))
|
||||
|
|
|
|||
Loading…
Reference in a new issue