OSEC-2016-01

See a problem?
Import Source
https://github.com/ocaml/security-advisories/blob/generated-osv/2016/OSEC-2016-01.json
JSON Data
https://api.osv.dev/v1/vulns/OSEC-2016-01
Aliases
Published
2016-04-29T00:18:22Z
Modified
2026-11-06T19:14:06Z
Severity
  • 9.1 (Critical) CVSS_V3 - CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H CVSS Calculator
Summary
Buffer overflow and information leak in OCaml < 4.03.0
Details

Bug description

OCaml versions 4.02.3 and earlier have a runtime bug that, on 64-bit platforms, causes sizes arguments to an internal memmove call to be sign-extended from 32 to 64-bits before being passed to the memmove function.

This leads arguments between 2GiB and 4GiB to be interpreted as larger than they are (specifically, a bit below 2^64), causing a buffer overflow.

Arguments between 4GiB and 6GiB are interpreted as 4GiB smaller than they should be, causing a possible information leak.

This commit fixes the bug: https://github.com/ocaml/ocaml/commit/659615c7b100a89eafe6253e7a5b9d84d0e8df74#diff-a97df53e3ebc59bb457191b496c90762 The function caml_bit_string is called indirectly from such functions as String.copy. String.copy for instance is supposed to be a "safe" function for which OCaml's memory safety guarantees apply.

Database specific
{
    "cwe": [
        "CWE-119",
        "CWE-200"
    ],
    "human_link": "https://github.com/ocaml/security-advisories/tree/main/advisories/2016/OSEC-2016-01.md",
    "osv": "https://github.com/ocaml/security-advisories/tree/generated-osv/2016/OSEC-2016-01.json"
}
References
Credits
    • Radek Micek - REPORTER
    • Damien Doligez - REMEDIATION_DEVELOPER

Affected packages

opam / ocaml

Package

Name
ocaml
Purl
pkg:opam/ocaml

Affected ranges

Type
ECOSYSTEM
Events
Introduced
0 Unknown introduced version / All previous versions are affected
Fixed
4.03.0

Affected versions

3.*
3.07
3.07+1
3.07+2
3.08.0
3.08.1
3.08.2
3.08.3
3.08.4
3.09.0
3.09.1
3.09.2
3.09.3
3.10.0
3.10.1
3.10.2
3.11.0
3.11.1
3.11.2
3.12.0
3.12.1
4.*
4.00.0
4.00.1
4.01.0
4.02.0
4.02.1
4.02.2
4.02.3
4.02.4

Ecosystem specific

{
    "opam_constraint": "ocaml {< \"4.03.0\"}"
}

Database specific

source
"https://github.com/ocaml/security-advisories/blob/generated-osv/2016/OSEC-2016-01.json"

Git / github.com/ocaml/ocaml

Affected ranges

Type
GIT
Repo
https://github.com/ocaml/ocaml
Events
Introduced
0 Unknown introduced commit / All previous commits are affected
Fixed

Affected versions

Other
flambda_fork_point

Database specific

source
"https://github.com/ocaml/security-advisories/blob/generated-osv/2016/OSEC-2016-01.json"
vanir_signatures
[
    {
        "deprecated": false,
        "digest": {
            "line_hashes": [
                "297134581783518190232305096955709827343",
                "86702773046983713261411000937503317436",
                "175354524405815385958652428238171284707",
                "225813051060905969896847126940363767535",
                "80947609156901628575749315377655207158",
                "234546213613500856380613242533067117431",
                "319675424272689619655773296571607687751",
                "42618432546425227918416254476888121732"
            ],
            "threshold": 0.9
        },
        "id": "OSEC-2016-01-39872619",
        "signature_type": "Line",
        "signature_version": "v1",
        "source": "https://github.com/ocaml/ocaml/commit/659615c7b100a89eafe6253e7a5b9d84d0e8df74",
        "target": {
            "file": "byterun/alloc.c"
        }
    },
    {
        "deprecated": false,
        "digest": {
            "line_hashes": [
                "10052243845623888550354841528198123243",
                "313133952579991044620704436137614753717",
                "266752456972937092085304220901563235122",
                "159846084899688354175353893237558839589"
            ],
            "threshold": 0.9
        },
        "id": "OSEC-2016-01-7919b3a3",
        "signature_type": "Line",
        "signature_version": "v1",
        "source": "https://github.com/ocaml/ocaml/commit/659615c7b100a89eafe6253e7a5b9d84d0e8df74",
        "target": {
            "file": "byterun/intern.c"
        }
    },
    {
        "deprecated": false,
        "digest": {
            "line_hashes": [
                "85424996336434796955035671983631143266",
                "85551395679935241665303117152812282284",
                "326958492464927746833064612802261356257",
                "207772007117946504258662421451366370432",
                "264253471812095600845252695062925757703",
                "270191134296166034732436902130702877891",
                "189680050811112729297100476753550978281",
                "226231212319695106505871185064014352418"
            ],
            "threshold": 0.9
        },
        "id": "OSEC-2016-01-d7e7e855",
        "signature_type": "Line",
        "signature_version": "v1",
        "source": "https://github.com/ocaml/ocaml/commit/659615c7b100a89eafe6253e7a5b9d84d0e8df74",
        "target": {
            "file": "byterun/str.c"
        }
    }
]
vanir_signatures_modified
"2026-11-06T19:14:06Z"