Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ocamlopt.opt fails with Index out of bounds error when compiling empty external value #7170

Closed
vicuna opened this issue Mar 9, 2016 · 1 comment
Assignees
Labels
Milestone

Comments

@vicuna
Copy link

vicuna commented Mar 9, 2016

Original bug ID: 7170
Reporter: @kayceesrk
Assigned to: @alainfrisch
Status: closed (set by @xavierleroy on 2017-09-24T15:32:03Z)
Resolution: fixed
Priority: normal
Severity: major
Version: 4.02.3
Target version: 4.03.0+dev / +beta1
Fixed in version: 4.03.0+dev / +beta1
Category: ~DO NOT USE (was: OCaml general)
Tags: afl
Monitored by: @gasche @hcarty

Bug description

Compiling the program

external foo : 'a = ""

crashes ocamlopt.opt with Fatal error: exception Invalid_argument("index out of bounds"). The bug was found by fuzzing afl-instrumented ocamlopt.opt.

Steps to reproduce

$ cat test.ml
external foo : 'a = ""
$ ocamlopt.opt test.ml
Fatal error: exception Invalid_argument("index out of bounds")
$ OCAMLRUNPARAM="b" ocamlopt.opt test.ml
Fatal error: exception Invalid_argument("index out of bounds")
Called from file "arg.ml", line 214, characters 2-73

@vicuna
Copy link
Author

vicuna commented Mar 14, 2016

Comment author: @alainfrisch

I cannot reproduce the error with 4.03; I now get:

Error: External identifiers must be functions

This was apparently fixed by 77bc51f (" Avoid an index-out-of-bound fatal error when the primitive name is empty").

@vicuna vicuna closed this as completed Sep 24, 2017
@vicuna vicuna added this to the 4.03.0 milestone Mar 14, 2019
@vicuna vicuna added the bug label Mar 20, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants