Tesseract is an open source OCR engine. In version 5.5.3 and earlier, RecodedCharID::DeSerialize in src/ccutil/unicharcompress.h validates length_ but accepts negative code_ values from a crafted .traineddata recoder component. UnicharCompress::ComputeCodeRange in src/ccutil/unicharcompress.cpp can consequently produce code_range_ equal to zero, after which SetupDecoder indexes is_valid_start_ with the negative code on a size-zero vector. The resulting out-of-bounds bit write uses a large wrapped index and reliably causes a wild-address crash or allocation failure on the default LSTM engine. No fixed release is available as of this review.
{
"cna_assigner": "GitHub_M",
"cwe_ids": [
"CWE-787"
],
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/88xxx/CVE-2026-88050.json"
}{
"extracted_events": [
{
"introduced": "0"
},
{
"last_affected": "5.5.3"
}
],
"source": [
"AFFECTED_FIELD",
"REFERENCES"
]
}
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-88050.json"
[
{
"deprecated": false,
"digest": {
"function_hash": "141059818555476385088328405399862787593",
"length": 1172
},
"id": "CVE-2026-88050-56ce16c5",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/tesseract-ocr/tesseract/commit/c94a5532ee04db5a4919542832fd94caee5ea58f",
"target": {
"file": "src/ccutil/unicharcompress.cpp",
"function": "UnicharCompress::SetupDecoder"
}
},
{
"deprecated": false,
"digest": {
"line_hashes": [
"248805385380565189110177747411574908780",
"243046462348774369418965631591022038900",
"36352490843146293462467693878771511752",
"164242138590748854114543628482670533561",
"96016631169104618356959413908526019495",
"338586230479379164611941968873970013355",
"202832577893542751687299447072074256661",
"229777085745316698020738919479055185982"
],
"threshold": 0.9
},
"id": "CVE-2026-88050-71182428",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://github.com/tesseract-ocr/tesseract/commit/c94a5532ee04db5a4919542832fd94caee5ea58f",
"target": {
"file": "src/ccutil/unicharcompress.h"
}
},
{
"deprecated": false,
"digest": {
"function_hash": "52481406087320304322866655116758362816",
"length": 75
},
"id": "CVE-2026-88050-9f6c5f90",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/tesseract-ocr/tesseract/commit/c94a5532ee04db5a4919542832fd94caee5ea58f",
"target": {
"file": "src/ccutil/unicharcompress.h",
"function": "IsValidFirstCode"
}
},
{
"deprecated": false,
"digest": {
"line_hashes": [
"178414830336735698182791180242946074628",
"31909309558510960130747030381669504813",
"263603276381846693614120394602431371163",
"281673487490120007289578136931437184039"
],
"threshold": 0.9
},
"id": "CVE-2026-88050-bda6022e",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://github.com/tesseract-ocr/tesseract/commit/c94a5532ee04db5a4919542832fd94caee5ea58f",
"target": {
"file": "src/ccutil/unicharcompress.cpp"
}
}
]
"2026-09-12T08:07:30Z"