commit ebd48f28bc88c5912f2ed6e889bf5bc5d2829b82
parent 5432d0eadf88294c7b8ef3fff665c82cbc47fe3d
Author: Tomas Hlavaty <tom@logand.com>
Date:   Mon, 29 Dec 2014 12:34:30 +0100
stricter ip address parsing
Diffstat:
2 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/dns.lisp b/dns.lisp
@@ -413,13 +413,13 @@
      ,(rw.socket:make-ipv4-address "208.67.220.220") ;; resolver2.opendns.com
      ,(rw.socket:make-ipv4-address "208.67.222.220")
      ,(rw.socket:make-ipv4-address "208.67.220.222")
-     ,(rw.socket:make-ipv4-address "2620:0:ccc::2")  ;;;;;
-     ,(rw.socket:make-ipv4-address "2620:0:ccd::2")) ;;;;;
+     ,(rw.socket:make-ipv6-address "2620:0:ccc::2")
+     ,(rw.socket:make-ipv6-address "2620:0:ccd::2"))
     (:google
      ,(rw.socket:make-ipv4-address "8.8.8.8")
      ,(rw.socket:make-ipv4-address "8.8.4.4")
-     ,(rw.socket:make-ipv4-address "2001:4860:4860::8888") ;;;;
-     ,(rw.socket:make-ipv4-address "2001:4860:4860::8844"))
+     ,(rw.socket:make-ipv6-address "2001:4860:4860::8888")
+     ,(rw.socket:make-ipv6-address "2001:4860:4860::8844"))
     (:comodo
      ,(rw.socket:make-ipv4-address "8.26.56.26")
      ,(rw.socket:make-ipv4-address "8.20.247.20"))
diff --git a/socket.lisp b/socket.lisp
@@ -79,7 +79,9 @@
          (t a))))))
 
 (defun parse-ipv4-address (x)
-  (next-ipv4-address (rw:peek-reader (rw:reader x))))
+  (let ((r (rw:peek-reader (rw:reader x))))
+    (prog1 (next-ipv4-address r)
+      (assert (not (rw:peek r))))))
 
 ;;(parse-ipv4-address "172.31.53.254")
 ;;(parse-ipv4-address "172.2045438")
@@ -94,6 +96,8 @@
 ;;(parse-ipv4-address "3221226219")
 ;;(parse-ipv4-address "030000001353")
 ;;(parse-ipv4-address "127.1")
+;;(parse-ipv4-address "127.0.1")
+;;(parse-ipv4-address "127.0.0.1")
 
 (defun ipv4-integer-to-dotted (x)
   (format nil "~d.~d.~d.~d"
@@ -170,7 +174,9 @@
                (logior x (chain hn)))))))))))
 
 (defun parse-ipv6-address (x)
-  (next-ipv6-address (rw:peek-reader (rw:reader x))))
+  (let ((r (rw:peek-reader (rw:reader x))))
+    (prog1 (next-ipv6-address r)
+      (assert (not (rw:peek r))))))
 
 ;;(parse-ipv6-address "::")
 ;;(parse-ipv6-address "::1")