{"id":"CVE-2026-54610","state":"PUBLISHED","title":"LibreDWG: const-input mutation and crash in bit_TV_to_utf8 error handling","description":"LibreDWG is a free C library to read and write DWG files. Prior to 0.14, `bit_TV_to_utf8()` in `src/bits.c` can write to the caller-provided `src` buffer despite accepting const input. On an `iconv()` error other than `E2BIG`, the function frees its output buffer and passes the original input alias to `bit_u_expand()`, which expands or shrinks Unicode and multibyte escape sequences in place. If the input is a string literal, read-only mapping, or other immutable buffer, the write can cause a segmentation fault and denial of service; mutable caller-owned input can be unexpectedly modified before being returned. This affects applications that expose the conversion API to untrusted input under those conditions. Direct file-triggered exploitability through normal DWG decode/export paths remains unconfirmed because many TV strings are heap allocated by bit_read_TV(). This issue is fixed in version 0.14.","publishedAt":"2026-10-30T20:39:19.805Z","updatedAt":"2026-10-30T20:39:19.805Z","severity":{"score":3.3,"label":"Low","version":"3.1","vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:L","source":"GitHub_M"},"assigner":"GitHub_M","products":["LibreDWG libredwg"],"affected":[{"vendor":"LibreDWG","product":"libredwg","versions":[{"version":"< 0.14","status":"affected"}]}],"references":["https://github.com/LibreDWG/libredwg/security/advisories/GHSA-5p98-8245-6hxq","https://github.com/LibreDWG/libredwg/commit/08c034a224a4e9512b1cd62e74b5cf081a4cfa89","https://github.com/LibreDWG/libredwg/releases/tag/0.14","https://github.com/user-attachments/files/28631091/libredwg-bit-tv-to-utf8-submission.tar.gz"],"weaknesses":["CWE-471","CWE-703"],"ingestedAt":"2026-10-30T20:46:06.109Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/54xxx/CVE-2026-54610.json","commit":"e21b88f72014e03094650bf3be8b2642faf68731","baselineCommit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-54610","state":"PUBLISHED","datePublished":"2026-10-30T20:39:19.805Z","dateUpdated":"2026-10-30T20:39:19.805Z","assignerShortName":"GitHub_M","assignerOrgId":"a0819718-46f1-4df5-94e2-005712e83aaa","dateReserved":"2026-06-15T19:45:23.540Z"},"containers":{"cna":{"title":"LibreDWG: const-input mutation and crash in bit_TV_to_utf8 error handling","descriptions":[{"lang":"en","value":"LibreDWG is a free C library to read and write DWG files. Prior to 0.14, `bit_TV_to_utf8()` in `src/bits.c` can write to the caller-provided `src` buffer despite accepting const input. On an `iconv()` error other than `E2BIG`, the function frees its output buffer and passes the original input alias to `bit_u_expand()`, which expands or shrinks Unicode and multibyte escape sequences in place. If the input is a string literal, read-only mapping, or other immutable buffer, the write can cause a segmentation fault and denial of service; mutable caller-owned input can be unexpectedly modified before being returned. This affects applications that expose the conversion API to untrusted input under those conditions. Direct file-triggered exploitability through normal DWG decode/export paths remains unconfirmed because many TV strings are heap allocated by bit_read_TV(). This issue is fixed in version 0.14."}],"affected":[{"vendor":"LibreDWG","product":"libredwg","versions":[{"version":"< 0.14","status":"affected"}]}],"references":[{"url":"https://github.com/LibreDWG/libredwg/security/advisories/GHSA-5p98-8245-6hxq","name":"https://github.com/LibreDWG/libredwg/security/advisories/GHSA-5p98-8245-6hxq","tags":["x_refsource_CONFIRM"]},{"url":"https://github.com/LibreDWG/libredwg/commit/08c034a224a4e9512b1cd62e74b5cf081a4cfa89","name":"https://github.com/LibreDWG/libredwg/commit/08c034a224a4e9512b1cd62e74b5cf081a4cfa89","tags":["x_refsource_MISC"]},{"url":"https://github.com/LibreDWG/libredwg/releases/tag/0.14","name":"https://github.com/LibreDWG/libredwg/releases/tag/0.14","tags":["x_refsource_MISC"]},{"url":"https://github.com/user-attachments/files/28631091/libredwg-bit-tv-to-utf8-submission.tar.gz","name":"https://github.com/user-attachments/files/28631091/libredwg-bit-tv-to-utf8-submission.tar.gz","tags":["x_refsource_MISC"]}],"metrics":[{"cvssV3_1":{"attackComplexity":"LOW","attackVector":"LOCAL","availabilityImpact":"LOW","baseScore":3.3,"baseSeverity":"LOW","confidentialityImpact":"NONE","integrityImpact":"NONE","privilegesRequired":"NONE","scope":"UNCHANGED","userInteraction":"REQUIRED","vectorString":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:L","version":"3.1"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-471","lang":"en","description":"CWE-471: Modification of Assumed-Immutable Data (MAID)","type":"CWE"}]},{"descriptions":[{"cweId":"CWE-703","lang":"en","description":"CWE-703: Improper Check or Handling of Exceptional Conditions","type":"CWE"}]}],"providerMetadata":{"shortName":"GitHub_M","orgId":"a0819718-46f1-4df5-94e2-005712e83aaa","dateUpdated":"2026-10-30T20:39:19.805Z"},"source":{"advisory":"GHSA-5p98-8245-6hxq","discovery":"UNKNOWN"}}}}}