Files
erofs-freebsd-out-tree/tests/pre15/gates/P15-052-input.json
T
2026-08-18 09:20:44 +02:00

204 lines
7.4 KiB
JSON

{
"schema": 1,
"gate": "G06",
"candidate": "P15-052",
"required_base": "ca7bb4fe6b33e4a1bdf423801134b0ed6bda86dd",
"title": "exact on-disk and ABI errno taxonomy",
"source_sha256": {
"repo-pre-15/src/data.c": "cb22072bd4c092aa6a5376add8c8d9d6f94297f6292900ecc2eef9b01c69e92a",
"repo-pre-15/src/erofs_fs.h": "0a49ac30ecbcea020c3909beb972ac4287ca704ebc49a9dccfcd6827884589e1",
"repo-pre-15/src/inode.c": "ba6f77ddffa35cc1dd69ebb933fb16f8fa654f94552fd1d3f0255eb790673e6c",
"repo-pre-15/src/internal.h": "c08ce3dbcafca5c341193c1670516e9bd5815c5f14ce2d637dbf6cfe5a74e972",
"repo-pre-15/src/super.c": "8bb36e9aba15eab2ed10ebec65dccb52dc9ddb485a1a39df37f86f97502c674f",
"repo-pre-15/src/xattr.c": "3498af0b547331b9a22babe96ea718ca2ba56ee669001bfdc2dbaab0a9dc42a9",
"src-linux/data.c": "8625cdc01e5405f856178ae8fd559696ae85f607f19caf229b867a3b7479318a",
"src-linux/internal.h": "4aa671896ff7c0ad32a9108c818ef62d16841c116706fdad391c40a530c81405",
"src-linux/super.c": "8bda458cca758d8aa9c5a5b05361b2131b896f73fd194f6ad9a8e011e3481bf9",
"src-linux/xattr.c": "c8394e5f6301225cbe7587f223485a368348eac7596c1ab0bbf965c99655ed4a"
},
"function_errno_counts": {
"repo-pre-15/src/data.c:erofs_map_blocks_chunk": {
"EOVERFLOW": 6
},
"repo-pre-15/src/xattr.c:erofs_xattr_backing_size": {
"EOVERFLOW": 1
},
"repo-pre-15/src/xattr.c:erofs_xattr_read_backing": {
"EOVERFLOW": 1
},
"repo-pre-15/src/xattr.c:erofs_xattr_read_metadata": {
"EOVERFLOW": 2
},
"repo-pre-15/src/xattr.c:erofs_xattr_shared_entry_offset": {
"EOVERFLOW": 2
}
},
"targets": [
{
"id": "data.chunk.inode_plus_isize",
"path": "repo-pre-15/src/data.c",
"function": "erofs_map_blocks_chunk",
"field": "inode_off",
"needle": "vi->inode_off > UINT64_MAX - vi->inode_isize",
"prototype_mutation": "inode_off=UINT64_MAX-31"
},
{
"id": "data.chunk.isize_plus_xattr",
"path": "repo-pre-15/src/data.c",
"function": "erofs_map_blocks_chunk",
"field": "xattr_isize",
"needle": "vi->inode_off + vi->inode_isize > UINT64_MAX - vi->xattr_isize",
"prototype_mutation": "xattr_isize=128 with inode_off near UINT64_MAX"
},
{
"id": "data.chunk.align",
"path": "repo-pre-15/src/data.c",
"function": "erofs_map_blocks_chunk",
"field": "inode_off",
"needle": "idx_base > UINT64_MAX - (entry_size - 1)",
"prototype_mutation": "inode_off=UINT64_MAX-3"
},
{
"id": "data.chunk.index_multiply",
"path": "repo-pre-15/src/data.c",
"function": "erofs_map_blocks_chunk",
"field": "chunk_idx",
"needle": "chunk_idx > (UINT64_MAX - idx_base) / entry_size",
"prototype_mutation": "chunk_idx=(UINT64_MAX-4096)/8+1"
},
{
"id": "data.chunk.image_size_shift",
"path": "repo-pre-15/src/data.c",
"function": "erofs_map_blocks_chunk",
"field": "blocks",
"needle": "sbi->blocks > (UINT64_MAX >> sbi->blkszbits)",
"prototype_mutation": "blocks=(UINT64_MAX>>12)+1"
},
{
"id": "data.chunk.physical_shift",
"path": "repo-pre-15/src/data.c",
"function": "erofs_map_blocks_chunk",
"field": "blkaddr",
"needle": "blkaddr > (UINT64_MAX >> sbi->blkszbits)",
"prototype_mutation": "blkaddr=(UINT64_MAX>>12)+1"
},
{
"id": "data.chunk.physical_plus_offset",
"path": "repo-pre-15/src/data.c",
"function": "erofs_map_blocks_chunk",
"field": "chunk_off",
"needle": "chunk_off > UINT64_MAX - map->m_pa",
"prototype_mutation": "chunk_off=4096 with blkaddr=UINT64_MAX>>12"
},
{
"id": "xattr.backing_size.shift",
"path": "repo-pre-15/src/xattr.c",
"function": "erofs_xattr_backing_size",
"field": "blocks",
"needle": "sbi->blocks > (UINT64_MAX >> sbi->blkszbits)",
"prototype_mutation": "blocks=(UINT64_MAX>>12)+1"
},
{
"id": "xattr.metadata.align",
"path": "repo-pre-15/src/xattr.c",
"function": "erofs_xattr_read_metadata",
"field": "offp",
"needle": "*offp > UINT64_MAX - (sizeof(struct erofs_xattr_entry) - 1)",
"prototype_mutation": "offp=UINT64_MAX-2"
},
{
"id": "xattr.metadata.header_add",
"path": "repo-pre-15/src/xattr.c",
"function": "erofs_xattr_read_metadata",
"field": "aligned_off",
"needle": "off > UINT64_MAX - sizeof(raw_len)",
"prototype_mutation": "aligned_off=UINT64_MAX-1"
},
{
"id": "xattr.shared.base_shift",
"path": "repo-pre-15/src/xattr.c",
"function": "erofs_xattr_shared_entry_offset",
"field": "xattr_blkaddr",
"needle": "sbi->xattr_blkaddr > (UINT64_MAX >> sbi->blkszbits)",
"prototype_mutation": "xattr_blkaddr=(UINT64_MAX>>12)+1"
},
{
"id": "xattr.shared.base_plus_relative",
"path": "repo-pre-15/src/xattr.c",
"function": "erofs_xattr_shared_entry_offset",
"field": "shared_id",
"needle": "relative > UINT64_MAX - base",
"prototype_mutation": "shared_id=1024 with base near UINT64_MAX"
}
],
"preservation_controls": [
{
"id": "abi.off_gt_int64",
"freebsd": "+EOVERFLOW",
"linux": "-EOVERFLOW semantic",
"result": "blocked first by backing-size range for every mounted primary provider"
},
{
"id": "corruption.range_past_eof",
"freebsd": "+EINTEGRITY",
"linux": "-EFSCORRUPTED semantic",
"result": "preserve"
},
{
"id": "eof.zero_length",
"freebsd": "0",
"linux": "0",
"result": "preserve"
},
{
"id": "io.provider_error",
"freebsd": "+EIO",
"linux": "negative PTR_ERR",
"result": "preserve exact provider error"
},
{
"id": "io.provider_short_media",
"freebsd": "+ENXIO",
"linux": "negative provider error",
"result": "preserve exact media-size error"
},
{
"id": "short_read.logical_backing",
"freebsd": "+EINTEGRITY before I/O",
"linux": "-EFSCORRUPTED semantic",
"result": "preserve"
},
{
"id": "unsupported.exact_xattr_header",
"freebsd": "+EOPNOTSUPP",
"linux": "-EOPNOTSUPP",
"result": "preserve"
},
{
"id": "allocation.xattr_prefixes",
"freebsd": "+ENOMEM",
"linux": "-ENOMEM",
"result": "out of B20 scope"
}
],
"prototype_identity": {
"path": "/work/pre15-gate-prep-20260814T125129Z/G06",
"errno_model.py": "dca427acf5c919f78d46ab8dbb198778fbe2af0869043d93b4eddf9f03814a4e",
"corpus/errno-vectors.json": "dde22db91f7fa2613631b4acb75a5d60e255a1c1564be6800db377922a6a7d4e",
"input.json": "0835defd288cb6a73337c116c4148daee94b78c435732032b5de40d1b1559715",
"oracle.md": "62e6703e8051b832108b4ea39ece232f06aea5dcfb221d7e8c17faf7ae527208",
"replay-base.sh": "2162fb645693ce740563a2406ea28ab86dc116a33163e026fc4d491c2df3e8a5"
},
"decision": {
"go": "every target is independently reachable from one validated on-disk field mutation, reaches its named source branch, and has one unique source class",
"stop": "any target is unreachable after current decode/mount bounds, any prototype mutation injects a local rather than an on-disk input, or any source class is ambiguous",
"atomicity": "P15-052 has no partial source implementation"
},
"timeouts": {
"host_seconds": 240,
"qemu_seconds": 1200
},
"qemu_required_after_host_stop": false,
"full_feature_suite_required": false
}