From e34dbdc4f40b035c7bc2ed842252f3b4e446ce0e Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 22 Mar 2019 07:34:36 -0600 Subject: [PATCH] defend against bad hash type in bytecode The change to make `#hash()`, etc., unique made it easy for the fuzz tester to crash the bytecode reader. --- racket/src/racket/src/read.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/racket/src/racket/src/read.c b/racket/src/racket/src/read.c index da7666550e..5fef8f697b 100644 --- a/racket/src/racket/src/read.c +++ b/racket/src/racket/src/read.c @@ -2738,10 +2738,12 @@ static Scheme_Object *read_compact(CPort *port, int use_stack) Scheme_Object *k; kind = read_compact_number(port); + if ((kind < 0) || (kind > 2)) + scheme_ill_formed_code(port); len = read_compact_number(port); ht = scheme_make_hash_tree(kind); - while (len--) { + while (len--) { k = read_compact(port, 0); v = read_compact(port, 0); ht = scheme_hash_tree_set(ht, k, v);