diff options
| author | JF Bastien <jfb@google.com> | 2015-02-22 19:32:03 +0000 |
|---|---|---|
| committer | JF Bastien <jfb@google.com> | 2015-02-22 19:32:03 +0000 |
| commit | 30bf96bfe7963f0a45207bb73adc15d92187e0e6 (patch) | |
| tree | 86405e0198340fbdb6d9a6f82ecc7063d92d2f6e /llvm/test | |
| parent | 4b1482e75c1787e509aac986e2c8f2355e98fb74 (diff) | |
| download | bcm5719-llvm-30bf96bfe7963f0a45207bb73adc15d92187e0e6.tar.gz bcm5719-llvm-30bf96bfe7963f0a45207bb73adc15d92187e0e6.zip | |
Use common parse routine to read alignment values from bitcode
While fuzzing LLVM bitcode files, I discovered that (1) the bitcode reader doesn't check that alignments are no larger than 2**29; (2) downstream code doesn't check the range; and (3) for values out of range, corresponding large memory requests (based on alignment size) will fail. This code fixes the bitcode reader to check for valid alignments, fixing this problem.
This CL fixes alignment value on global variables, functions, and instructions: alloca, load, load atomic, store, store atomic.
Patch by Karl Schimpf (kschimpf@google.com).
llvm-svn: 230180
Diffstat (limited to 'llvm/test')
| -rw-r--r-- | llvm/test/Bitcode/Inputs/invalid-align.bc | bin | 0 -> 428 bytes | |||
| -rw-r--r-- | llvm/test/Bitcode/invalid.test | 3 |
2 files changed, 3 insertions, 0 deletions
diff --git a/llvm/test/Bitcode/Inputs/invalid-align.bc b/llvm/test/Bitcode/Inputs/invalid-align.bc Binary files differnew file mode 100644 index 00000000000..e84fa6cdda5 --- /dev/null +++ b/llvm/test/Bitcode/Inputs/invalid-align.bc diff --git a/llvm/test/Bitcode/invalid.test b/llvm/test/Bitcode/invalid.test index 84bc9278d91..fb818884eed 100644 --- a/llvm/test/Bitcode/invalid.test +++ b/llvm/test/Bitcode/invalid.test @@ -10,6 +10,8 @@ RUN: not llvm-dis -disable-output %p/Inputs/invalid-type-table-forward-ref.bc 2> RUN: FileCheck --check-prefix=BAD-TYPE-TABLE-FORWARD-REF %s RUN: not llvm-dis -disable-output %p/Inputs/invalid-bitwidth.bc 2>&1 | \ RUN: FileCheck --check-prefix=BAD-BITWIDTH %s +RUN: not llvm-dis -disable-output %p/Inputs/invalid-align.bc 2>&1 | \ +RUN: FileCheck --check-prefix=BAD-ALIGN %s INVALID-ENCODING: Invalid encoding BAD-ABBREV: Abbreviation starts with an Array or a Blob @@ -17,6 +19,7 @@ UNEXPECTED-EOF: Unexpected end of file BAD-ABBREV-NUMBER: Invalid abbrev number BAD-TYPE-TABLE-FORWARD-REF: Invalid TYPE table: Only named structs can be forward referenced BAD-BITWIDTH: Bitwidth for integer type out of range +BAD-ALIGN: Invalid alignment value RUN: not llvm-dis -disable-output %p/Inputs/invalid-extractval-array-idx.bc 2>&1 | \ RUN: FileCheck --check-prefix=EXTRACT-ARRAY %s |

