Giovanni Mascellani (@giomasce) commented about libs/vkd3d-shader/dxil.c:
- if (!length)
return 0;
- if (shader_sm6_is_end(parser))
- {
parser->failed = true;
return 0;
- }
- flag = 1 << (length - 1);
- mask = flag - 1;
- do
- {
bits = shader_sm6_read_bits(parser, length);
result |= (uint64_t)(bits & mask) << shift;
We should probably check when `shift` becomes 64 or larger and produce an error if it does. We shouldn't invoke undefined behavior even on invalid input streams.