From f95beb40add9725ee2f870000bbc8e36b1704cef Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sun, 22 Dec 2019 09:56:15 -0700 Subject: [PATCH] cs: check for too-large `file-position` argument --- racket/src/io/port/file-position.rkt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/racket/src/io/port/file-position.rkt b/racket/src/io/port/file-position.rkt index 280c65b19f..cbf7505484 100644 --- a/racket/src/io/port/file-position.rkt +++ b/racket/src/io/port/file-position.rkt @@ -30,6 +30,11 @@ (lambda (p) (or (exact-nonnegative-integer? p) (eof-object? p))) #:contract "(or/c exact-nonnegative-integer? eof-object?)" pos) + (when (and (number? p) (pos . >= . (expt 2 63))) + (raise-arguments-error who + "new position is too large" + "port" p + "position" pos)) (let ([cp (cond [(input-port? p) (->core-input-port p)] [else (->core-output-port p)])])