| # Copyright 2019 Google LLC | |
| # | |
| # Licensed under the Apache License, Version 2.0 (the "License"); | |
| # you may not use this file except in compliance with the License. | |
| # You may obtain a copy of the License at | |
| # | |
| # https://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, software | |
| # distributed under the License is distributed on an "AS IS" BASIS, | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| # See the License for the specific language governing permissions and | |
| # limitations under the License. | |
| -- Relatively complex structure intended for use in fuzz testing. | |
| -- | |
| -- Note that field names are intentionally very short; this helps American | |
| -- Fuzzy Lop (go/afl) find new code paths more quickly. | |
| [$default byte_order: "LittleEndian"] | |
| [(cpp) namespace: "emboss_test"] | |
| bits RegisterLayout: | |
| 0 [+8] Int x | |
| 0 [+4] UInt l | |
| 4 [+4] UInt h | |
| struct ArrayElement: | |
| 0 [+1] RegisterLayout a | |
| struct Complex: | |
| 0 [+1] UInt s | |
| 1 [+8] UInt u | |
| 1 [+8] Int i | |
| 1 [+8] Bcd b | |
| 1 [+s*4] ArrayElement[4][] a | |
| 1 [+1] bits: | |
| 0 [+8] UInt a0 | |
| 7 [+1] Flag s0 | |
| 0 [+4] Int l0 | |
| 4 [+4] Int h0 | |
| 2 [+1] ArrayElement e1 | |
| if a0 >= 0x80: | |
| 3 [+1] ArrayElement e2 | |
| if a0 < 0x80: | |
| 3 [+1] Bcd b2 | |
| if b2 > 25: | |
| 4 [+1] Int e3 | |
| if s >= 4 && (a0 >= 80 ? e3 >= 0x80 : b2 < 50): | |
| 5 [+1] Int e4 | |
| if s >= 5 && e4 > 0: | |
| 6 [+1] Int e5 | |
| if s < 2 || a0 < 4: | |
| 1 [+1] Int e0 |