Fixed MD5 operations, e.g. `md5-string', so that they would accept the
authorArthur A. Gleckler <gnu@speechcode.com>
Fri, 25 Dec 2009 02:22:33 +0000 (18:22 -0800)
committerArthur A. Gleckler <gnu@speechcode.com>
Fri, 25 Dec 2009 02:22:33 +0000 (18:22 -0800)
empty string as input.  Before this fix, they would fail with this
error:

  ;The object 0, passed as the third argument to md5-update, is not in the correct range.

src/runtime/crypto.scm

index 217d113d5f69a767056155ce9e05a397dc23e73e..1de7d7f4212b6662e8190536aa839c95beffdb7c 100644 (file)
@@ -261,7 +261,8 @@ USA.
 
 (define (mhash-substring hash-type string start end)
   (let ((context (mhash-init hash-type)))
-    (mhash-update context string start end)
+    (if (fix:> end start)
+       (mhash-update context string start end))
     (mhash-end context)))
 
 (define (mhash-sum->number sum)
@@ -334,7 +335,8 @@ USA.
 
 (define (%md5-substring string start end)
   (let ((context ((ucode-primitive md5-init 0))))
-    ((ucode-primitive md5-update 4) context string start end)
+    (if (fix:> end start)
+       ((ucode-primitive md5-update 4) context string start end))
     ((ucode-primitive md5-final 1) context)))
 
 (define md5-sum->number mhash-sum->number)