Commit d81951c
committed
AVX2: Avoid overread in polyz_unpack_17_avx2/polyz_unpack_19_avx2
polyz_unpack_17_avx2/polyz_unpack_197_avx2 unpacks polynnomials with
coefficients packed into 18/20 bits each.
To do so, it currently loads 32 bytes into a 256-bit register and discards
the last 14/12-bytes. This is problematic in the last iteration as this
overreads the buffer presenting a potential safety problem.
This is a violoation of the API contract which only requires 18*32/20*32-bytes.
Hence, this commit eliminates the overread by adding a special handling for
the last iteration.
In practice this problem is not flagged as the z component in the signature
is followed by the hint compoenent, and, hence, this never overreads the
actual signature buffer.
It did, however, show up in the unit tests that are being implemented in
#777.
Signed-off-by: Matthias J. Kannwischer <matthias@kannwischer.eu>1 parent 70513eb commit d81951c
File tree
4 files changed
+44
-4
lines changed- dev/x86_64/src
- mldsa/src/native/x86_64/src
4 files changed
+44
-4
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
39 | 39 | | |
40 | 40 | | |
41 | 41 | | |
42 | | - | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
43 | 53 | | |
44 | 54 | | |
45 | 55 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
43 | | - | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
44 | 54 | | |
45 | 55 | | |
46 | 56 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
39 | 39 | | |
40 | 40 | | |
41 | 41 | | |
42 | | - | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
43 | 53 | | |
44 | 54 | | |
45 | 55 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
43 | | - | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
44 | 54 | | |
45 | 55 | | |
46 | 56 | | |
| |||
0 commit comments