The driver read the first 512 bytes of a configuration block into a fixed buffer and parsed those. The block's length is the device's own choice (wTotalLength, a u16), so anything larger was silently cut: interfaces past the cut did not exist as far as the host was concerned, while the SET_CONFIGURATION that follows still configured the device for all of them. A headset is 500-900 bytes, a UVC webcam 1-3 KB, a multifunction printer 600+. Now allocated at the declared length, so the ceiling is the field's u16 — the specification's number rather than one of ours. A block shorter than its own 9-byte header is refused rather than trusted. The bring-up line reports the declared length and the bytes actually read, so a truncation can never again be invisible, and usb-large-descriptor asserts they match with a backreference. That case has an honest limit, recorded in its comment: QEMU cannot produce a block over 512 bytes. The boot keyboard, mouse and stick are 34-44, and the largest device available is usb-audio in multi-channel mode at 211 — which is exactly why the suite never caught this, and why it cannot now reproduce the original trigger. What it does catch is the class: any clamp below the attached device's block fails it, verified by pinning the buffer to 128 and watching "config block 211 bytes, read 128" turn the case red. Suite 115 -> 116.
284 lines
12 KiB
Plaintext
284 lines
12 KiB
Plaintext
# Bounds that predate the rule (docs/os-development/bounds.md).
|
|
#
|
|
# Generated from the tree as it stood when the check landed, so the gate could start
|
|
# without a 278-site sweep in front of it. Every line is a compile-time ceiling that
|
|
# has not yet said what it counts, who decides its size, what it protects, what
|
|
# happens when it is reached, or how anyone finds out.
|
|
#
|
|
# **This list may only shrink.** Declaring a bound means deleting its line; the check
|
|
# fails if a listed bound is now declared, and fails if a listed bound has vanished.
|
|
# Nothing may be added to it — a new ceiling declares itself or does not land.
|
|
#
|
|
# docs/fixed-bounds-audit.md is the analysis of how they got here.
|
|
boot/efi.zig:buffer
|
|
boot/efi.zig:info_buffer
|
|
boot/efi.zig:maximum_bundled
|
|
boot/efi.zig:maximum_tree_depth
|
|
library/device/acpi/aml/interpreter.zig:argbuf
|
|
library/device/acpi/aml/interpreter.zig:args
|
|
library/device/acpi/aml/interpreter.zig:locals
|
|
library/device/acpi/aml/interpreter.zig:maximum_segments
|
|
library/device/acpi/aml/interpreter.zig:notify_queue
|
|
library/device/acpi/aml/namespace.zig:segment
|
|
library/device/acpi/aml/parser.zig:maximum_segments
|
|
library/device/driver/driver.zig:lookup_attempts
|
|
library/device/model/device-abi.zig:hid
|
|
library/device/model/device-abi.zig:maximum_device_resources
|
|
library/device/pci/pci.zig:bar_virtual
|
|
library/device/pci/pci.zig:bars
|
|
library/device/registry/device-registry.zig:cols
|
|
library/device/registry/device-registry.zig:rules
|
|
library/device/registry/device-registry.zig:rules
|
|
library/device/registry/device-registry.zig:rules
|
|
library/device/registry/device-registry.zig:rules
|
|
library/device/registry/device-registry.zig:rules
|
|
library/kernel/channel.zig:bind_attempts
|
|
library/kernel/channel.zig:name_maximum
|
|
library/kernel/channel.zig:path_maximum
|
|
library/kernel/file-system.zig:name_buffer
|
|
library/kernel/file-system.zig:out
|
|
library/kernel/logging.zig:buffer
|
|
library/kernel/process.zig:blob
|
|
library/kernel/process.zig:receive
|
|
library/kernel/process.zig:table
|
|
library/kernel/service.zig:subscriber_capacity
|
|
library/kernel/start.zig:buffer
|
|
library/kernel/thread.zig:readers
|
|
library/kernel/thread.zig:writers
|
|
library/protocol/device-manager/device-manager-protocol.zig:hid
|
|
library/protocol/display/display-protocol.zig:max_modes
|
|
library/protocol/envelope/envelope.zig:packet_maximum
|
|
library/protocol/envelope/envelope.zig:post_maximum
|
|
library/protocol/power/power-protocol.zig:hid
|
|
library/protocol/scanout/scanout-protocol.zig:max_modes
|
|
library/protocol/usb-transfer/usb-transfer-protocol.zig:max_report_data
|
|
library/protocol/usb-transfer/usb-transfer-protocol.zig:max_reported_endpoints
|
|
library/protocol/usb-transfer/usb-transfer-protocol.zig:setup
|
|
system/abi.zig:errno_maximum
|
|
system/abi.zig:klog_maximum_message
|
|
system/abi.zig:maximum_process_name
|
|
system/boot-handoff.zig:kernel_segments
|
|
system/drivers/pci-bus/pci-bus.zig:line
|
|
system/drivers/pci-bus/pci-bus.zig:sub_buffer
|
|
system/drivers/ps2-bus/mouse-packet.zig:bytes
|
|
system/drivers/ps2-bus/scancode.zig:pressed
|
|
system/drivers/ps2-bus/scancode.zig:set2_base
|
|
system/drivers/ps2-bus/scancode.zig:set2_extended
|
|
system/drivers/usb-hid/hid-report.zig:keys
|
|
system/drivers/usb-hid/keyboard.zig:receive
|
|
system/drivers/usb-hid/mouse.zig:receive
|
|
system/drivers/usb-storage/bulk-only-transport.zig:cdb
|
|
system/drivers/usb-storage/scsi.zig:op_read_capacity_10
|
|
system/drivers/usb-storage/usb-storage.zig:capacity_bytes
|
|
system/drivers/usb-xhci-bus/usb-xhci-bus.zig:hid_buffer
|
|
system/drivers/usb-xhci-bus/usb-xhci-bus.zig:maker_buffer
|
|
system/drivers/usb-xhci-bus/usb-xhci-bus.zig:maker_buffer
|
|
system/drivers/usb-xhci-bus/usb-xhci-bus.zig:prev_connected
|
|
system/drivers/usb-xhci-bus/usb-xhci-bus.zig:product_buffer
|
|
system/drivers/usb-xhci-bus/usb-xhci-bus.zig:product_buffer
|
|
system/drivers/usb-xhci-bus/usb-xhci-library.zig:buffer
|
|
system/drivers/usb-xhci-bus/usb-xhci-library.zig:bytes
|
|
system/drivers/usb-xhci-bus/usb-xhci-library.zig:data
|
|
system/drivers/usb-xhci-bus/usb-xhci-library.zig:descriptor
|
|
system/drivers/usb-xhci-bus/usb-xhci-library.zig:head
|
|
system/drivers/usb-xhci-bus/usb-xhci-library.zig:header
|
|
system/drivers/usb-xhci-bus/usb-xhci-library.zig:max_endpoints_per_interface
|
|
system/drivers/usb-xhci-bus/usb-xhci-library.zig:max_interfaces
|
|
system/drivers/usb-xhci-bus/usb-xhci-library.zig:max_subscriptions
|
|
system/drivers/usb-xhci-bus/usb-xhci-library.zig:port_changes
|
|
system/drivers/usb-xhci-bus/usb-xhci-library.zig:raw
|
|
system/drivers/usb-xhci-bus/usb-xhci-library.zig:report_queue_capacity
|
|
system/drivers/usb-xhci-bus/usb-xhci-library.zig:request_set_hub_depth
|
|
system/drivers/virtio-gpu/virtio-gpu-protocol.zig:edid
|
|
system/drivers/virtio-gpu/virtio-gpu-protocol.zig:max_scanouts
|
|
system/drivers/virtio-gpu/virtio-gpu.zig:descriptors
|
|
system/drivers/virtio-gpu/virtio-gpu.zig:max_height
|
|
system/drivers/virtio-gpu/virtio-gpu.zig:max_width
|
|
system/initial-ramdisk.zig:buffer
|
|
system/initial-ramdisk.zig:buffer
|
|
system/initial-ramdisk.zig:maximum_name
|
|
system/kernel/acpi.zig:APIC
|
|
system/kernel/acpi.zig:BERT
|
|
system/kernel/acpi.zig:CPEP
|
|
system/kernel/acpi.zig:DMAR
|
|
system/kernel/acpi.zig:DSDT
|
|
system/kernel/acpi.zig:ECDT
|
|
system/kernel/acpi.zig:EINJ
|
|
system/kernel/acpi.zig:ERST
|
|
system/kernel/acpi.zig:FACP
|
|
system/kernel/acpi.zig:FACS
|
|
system/kernel/acpi.zig:HEST
|
|
system/kernel/acpi.zig:HPET
|
|
system/kernel/acpi.zig:IVRS
|
|
system/kernel/acpi.zig:MCFG
|
|
system/kernel/acpi.zig:MPST
|
|
system/kernel/acpi.zig:MSCT
|
|
system/kernel/acpi.zig:PMTT
|
|
system/kernel/acpi.zig:PSDT
|
|
system/kernel/acpi.zig:RASF
|
|
system/kernel/acpi.zig:RSDT
|
|
system/kernel/acpi.zig:SBST
|
|
system/kernel/acpi.zig:SLIT
|
|
system/kernel/acpi.zig:SPCR
|
|
system/kernel/acpi.zig:SRAT
|
|
system/kernel/acpi.zig:SSDT
|
|
system/kernel/acpi.zig:XSDT
|
|
system/kernel/acpi.zig:aml_block_len
|
|
system/kernel/acpi.zig:aml_block_physical
|
|
system/kernel/acpi.zig:holes
|
|
system/kernel/acpi.zig:maximum_rmrr
|
|
system/kernel/acpi.zig:nb
|
|
system/kernel/acpi.zig:nb
|
|
system/kernel/acpi.zig:nb
|
|
system/kernel/acpi.zig:oem_id
|
|
system/kernel/acpi.zig:oem_id
|
|
system/kernel/acpi.zig:oem_id
|
|
system/kernel/acpi.zig:oem_table_id
|
|
system/kernel/acpi.zig:overrides
|
|
system/kernel/acpi.zig:rmrr_limit_offset
|
|
system/kernel/acpi.zig:signature
|
|
system/kernel/acpi.zig:signature
|
|
system/kernel/acpi.zig:signature
|
|
system/kernel/architecture/x86_64/cpu.zig:irq_vector_count
|
|
system/kernel/architecture/x86_64/idt.zig:gate_count
|
|
system/kernel/architecture/x86_64/ioapic.zig:overrides
|
|
system/kernel/architecture/x86_64/iommu-amd.zig:buffer
|
|
system/kernel/architecture/x86_64/iommu-amd.zig:buffer
|
|
system/kernel/architecture/x86_64/iommu-intel.zig:buffer
|
|
system/kernel/architecture/x86_64/iommu-intel.zig:buffer
|
|
system/kernel/architecture/x86_64/iommu-intel.zig:context_table
|
|
system/kernel/device-model.zig:buffer
|
|
system/kernel/device-model.zig:cbuf
|
|
system/kernel/device-model.zig:hid_buffer
|
|
system/kernel/device-model.zig:maximum_resources
|
|
system/kernel/device-model.zig:name_buffer
|
|
system/kernel/device-model.zig:rbuf
|
|
system/kernel/heap.zig:heap_maximum
|
|
system/kernel/ipc-synchronous.zig:MESSAGE_MAXIMUM
|
|
system/kernel/ipc-synchronous.zig:POST_MAXIMUM
|
|
system/kernel/ipc-synchronous.zig:notify_buffer
|
|
system/kernel/ipc-synchronous.zig:post_capacity
|
|
system/kernel/irq.zig:maximum_gsi
|
|
system/kernel/irq.zig:msi_bound
|
|
system/kernel/irq.zig:msi_owner
|
|
system/kernel/irq.zig:vector_gsi
|
|
system/kernel/kernel.zig:buffer
|
|
system/kernel/kernel.zig:buffer
|
|
system/kernel/kernel.zig:buffer
|
|
system/kernel/kernel.zig:isos
|
|
system/kernel/kernel.zig:maximum_wake_attempts
|
|
system/kernel/log-ring.zig:message
|
|
system/kernel/log-ring.zig:out
|
|
system/kernel/log.zig:buffer
|
|
system/kernel/log.zig:maximum_sinks
|
|
system/kernel/log.zig:message
|
|
system/kernel/log.zig:ring_capacity
|
|
system/kernel/process.zig:chunk
|
|
system/kernel/process.zig:chunk
|
|
system/kernel/process.zig:chunk
|
|
system/kernel/process.zig:chunk
|
|
system/kernel/process.zig:exit_record_capacity
|
|
system/kernel/process.zig:exit_subscriber_capacity
|
|
system/kernel/process.zig:maximum_argument_bytes
|
|
system/kernel/process.zig:maximum_arguments
|
|
system/kernel/process.zig:maximum_dma_regions
|
|
system/kernel/process.zig:maximum_mmap_pages
|
|
system/kernel/process.zig:maximum_mount_prefix
|
|
system/kernel/process.zig:maximum_mount_rewrite
|
|
system/kernel/process.zig:maximum_pages
|
|
system/kernel/process.zig:maximum_resolve_path
|
|
system/kernel/process.zig:maximum_segments
|
|
system/kernel/process.zig:maximum_shared_memory_pages
|
|
system/kernel/process.zig:name_buffer
|
|
system/kernel/process.zig:timer_capacity
|
|
system/kernel/process.zig:word_bytes
|
|
system/kernel/process.zig:write_buffer
|
|
system/kernel/scheduler.zig:ipc_maximum_handles
|
|
system/kernel/scheduler.zig:maximum_space_mappings
|
|
system/kernel/vfs.zig:maximum_directories
|
|
system/kernel/vfs.zig:maximum_mounts
|
|
system/kernel/vfs.zig:maximum_prefix
|
|
system/kernel/vfs.zig:maximum_rewrite
|
|
system/services/acpi/acpi.zig:blocks
|
|
system/services/acpi/acpi.zig:buffer
|
|
system/services/acpi/acpi.zig:hid
|
|
system/services/acpi/acpi.zig:mmio_scratch
|
|
system/services/acpi/acpi.zig:name
|
|
system/services/acpi/acpi.zig:registered
|
|
system/services/device-manager/device-manager.zig:arguments
|
|
system/services/device-manager/device-manager.zig:id_text
|
|
system/services/device-manager/device-manager.zig:maximum_children
|
|
system/services/device-manager/device-manager.zig:maximum_drivers
|
|
system/services/device-manager/device-manager.zig:name_buffer
|
|
system/services/device-manager/device-manager.zig:registry_rules
|
|
system/services/device-manager/device-manager.zig:registry_source
|
|
system/services/display/backend.zig:device_table
|
|
system/services/display/backend.zig:line
|
|
system/services/display/compositor.zig:capacity
|
|
system/services/display/compositor.zig:maximum_columns
|
|
system/services/display/compositor.zig:maximum_rects
|
|
system/services/display/compositor.zig:maximum_rows
|
|
system/services/display/display.zig:line
|
|
system/services/display/display.zig:line
|
|
system/services/display/display.zig:line
|
|
system/services/display/display.zig:list
|
|
system/services/display/display.zig:maximum_layers
|
|
system/services/display/display.zig:mode_list
|
|
system/services/fat/engine.zig:buf
|
|
system/services/fat/engine.zig:buf
|
|
system/services/fat/engine.zig:buf
|
|
system/services/fat/engine.zig:buffer
|
|
system/services/fat/engine.zig:cached_back
|
|
system/services/fat/engine.zig:chunk
|
|
system/services/fat/engine.zig:chunk
|
|
system/services/fat/engine.zig:chunk
|
|
system/services/fat/engine.zig:device_back
|
|
system/services/fat/engine.zig:display
|
|
system/services/fat/engine.zig:long_name
|
|
system/services/fat/engine.zig:long_name
|
|
system/services/fat/engine.zig:long_name
|
|
system/services/fat/engine.zig:max_transfer_sectors
|
|
system/services/fat/engine.zig:pair
|
|
system/services/fat/engine.zig:pair
|
|
system/services/fat/engine.zig:payload
|
|
system/services/fat/engine.zig:payload
|
|
system/services/fat/engine.zig:payload
|
|
system/services/fat/engine.zig:readback
|
|
system/services/fat/engine.zig:run
|
|
system/services/fat/engine.zig:run
|
|
system/services/fat/engine.zig:short
|
|
system/services/fat/engine.zig:short
|
|
system/services/fat/engine.zig:short
|
|
system/services/fat/engine.zig:stem
|
|
system/services/fat/engine.zig:tail_buffer
|
|
system/services/fat/engine.zig:units
|
|
system/services/fat/engine.zig:value
|
|
system/services/fat/engine.zig:value
|
|
system/services/fat/engine.zig:window
|
|
system/services/fat/on-disk.zig:filesystem_type
|
|
system/services/fat/on-disk.zig:filesystem_type
|
|
system/services/fat/on-disk.zig:jump
|
|
system/services/fat/on-disk.zig:name
|
|
system/services/fat/on-disk.zig:name1
|
|
system/services/fat/on-disk.zig:name2
|
|
system/services/fat/on-disk.zig:name3
|
|
system/services/fat/on-disk.zig:oem_name
|
|
system/services/fat/on-disk.zig:volume_label
|
|
system/services/fat/on-disk.zig:volume_label
|
|
system/services/init/init.zig:binary
|
|
system/services/init/init.zig:init_csv
|
|
system/services/init/init.zig:max_service_args
|
|
system/services/init/init.zig:max_services
|
|
system/services/init/init.zig:maximum_bindings
|
|
system/services/init/init.zig:maximum_grants
|
|
system/services/init/init.zig:maximum_name
|
|
system/services/init/init.zig:maximum_restarts
|
|
system/services/init/init.zig:process_table
|
|
system/services/init/init.zig:protocol_csv
|
|
system/services/logger/logger.zig:chunk
|
|
system/services/logger/logger.zig:gap_line
|
|
system/services/logger/logger.zig:line
|
|
system/services/logger/logger.zig:line
|
|
system/services/logger/logger.zig:maximum_files
|
|
system/services/logger/logger.zig:stamp
|