Commit Graph

22 Commits

Author SHA1 Message Date
Alexei Podtelezhnikov
ca472220a4 Typos. 2017-01-17 23:45:08 -05:00
Werner Lemberg
563ae78022 Update copyright year. 2017-01-04 20:16:34 +01:00
Werner Lemberg
8fb9d22a6b [ftfuzzer] Replace `rand' with an xorshift algorithm.
* src/tools/ftfuzzer/ftfuzzer.cc: Don't include `stdlib.h'.
(Random): Implement and use a 32bit `xorshift' algorithm.
2016-12-30 19:51:37 +01:00
Werner Lemberg
6b21d1281e [ftfuzzer] Restrict number of tested bitmap strikes.
Malformed fonts often have large values for the number of bitmap
strikes, and FreeType doesn't check the validity of all bitmap
strikes in advance.

Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=353

* src/tools/ftfuzzer/ftfuzzer.cc: Include `stdlib.h' for `rand'.
(Random): Small class to provide n randomly selected numbers
(without repitition) out of the value set [0,N].
(LLVMFuzzerTestOneInput): Use it to test only up to 10 bitmap
strikes.
2016-12-30 10:00:54 +01:00
Werner Lemberg
ada8297175 [ftfuzzer] Always use Adobe CFF engine.
* src/tools/ftfuzzer/ftfuzzer.cc (FT_Global::FT_Global): Implement
it.
2016-12-22 08:25:42 +01:00
Werner Lemberg
71b617d8b7 [ftfuzzer] Speed up.
* src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Don't
check for embedded bitmaps if we have a non-default instance.
2016-09-29 19:53:39 +02:00
Werner Lemberg
d11e8b6e6d * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Fix typo. 2016-09-25 15:32:04 +02:00
Werner Lemberg
deb261556a [ftfuzzer] Minor improvements.
* src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Ignore
invalid strikes.
Use better values for call to `FT_Set_Char_Size'.
2016-09-09 22:13:33 +02:00
Werner Lemberg
ee6b4115d2 [ftfuzzer] Improve coverage of rasterfuzzer.
* src/tools/ftfuzzer/rasterfuzzer.cc (LLVMFuzzerTestOneInput): Use
input data for `tags' array also.
Trim input data to get more positive hits.
2016-03-12 23:48:13 +01:00
Werner Lemberg
a8b956227b [ftfuzzer] Add unit for testing smooth and black rasterizers.
* src/tools/ftfuzzer/rasterfuzzer.cc: New file.
2016-03-01 09:37:12 +01:00
Werner Lemberg
015c6e08a1 Fix clang warnings.
* src/autofit/aflatin.c (af_latin_hints_compute_segments): Use
FT_UShort for `min_flags' and `max_flags'.
Initialize `prev_*' variables.

* src/cff/cffobjs.c (cff_face_init) [FT_DEBUG_LEVEL_TRACE]: Fix
types of local variables.

* src/smooth/ftgrays.c (gray_dump_cells) [FT_DEBUG_LEVEL_TRACE]:
Update `printf' format string.

* src/tools/ftfuzzer/ftfuzzer.cc (setIntermediateAxis): Add cast.
(LLVMFuzzerTestOneInput): Fix loop type.
2016-03-01 06:45:52 +01:00
Werner Lemberg
9cc2d46785 Minor. 2016-02-05 11:52:50 +01:00
Werner Lemberg
9adeab6452 Update copyright year. 2016-01-13 11:54:10 +01:00
Werner Lemberg
7363414b9d [ftfuzzer] Add copyright notices; do some formatting. 2015-11-07 06:32:46 +01:00
Werner Lemberg
6bda921da0 [ftfuzzer] Update README file. 2015-11-02 06:53:48 +01:00
Werner Lemberg
bcf618b256 [ftfuzzer] Add support for multiple files (patch #8779).
Currently, libFuzzer only supports mutation of a single file.  We
circumvent this problem by using an uncompressed tar archive as
multiple-file input for the fuzzer.

This patch enables tests of `FT_Attach_Stream' and AFM/PFM parsing;
a constructed tarball should contain a font file as the first
element, and files to be attached as further elements.

* src/tools/ftfuzzer/ftfuzzer.cc: Include libarchive headers.
(archive_read_entry_data, parse_data): New functions.
(LLVMFuzzerTestOneInput): Updated.

* src/tools/ftfuzzer/ftmutator.cc: New file, providing a custom
mutator for libFuzzer that can mutate tarballs in a sensible way.
2015-11-02 06:50:49 +01:00
Werner Lemberg
3066f5f53d Revert erroneously applied commits. 2015-10-21 14:05:41 +02:00
Werner Lemberg
e6593389cf [sfnt] Avoid unnecessarily large allocation for WOFFs (#46257).
* src/sfnt/sfobjs.c (woff_open_font): Use WOFF's `totalSfntSize'
only after thorough checks.
Add tracing messages.
2015-10-21 08:04:29 +02:00
Kostya Serebryany
266976b163 add src/tools/ftfuzzer/README 2015-10-15 22:15:53 -07:00
Werner Lemberg
8b76eaf092 * src/tools/ftfuzzer/ftfuzzer.cc: Handle fixed sizes (#46211). 2015-10-15 18:28:43 +02:00
Werner Lemberg
bdb56bba86 [ftfuzzer] Handle TTCs and MM/GX variations.
This patch also contains various other improvements.

* src/tools/ftfuzzer/ftfuzzer.cc: Add preprocessor guard to reject
pre-C++11 compilers.
(FT_Global): New class.  Use it to provide a global constructor and
destructor for the `FT_Library' object.
(setIntermediateAxis): New function to select an (arbitrary)
instance.
(LLVMFuzzerTestOneInput): Loop over all faces and named instances.
Also call `FT_Set_Char_Size'.
2015-10-13 11:51:13 +02:00
Kostya Serebryany
dde84f2539 [ftfuzzer] Add support for LLVM's LibFuzzer.
* src/tools/ftfuzzer/ftfuzzer.cc, src/tools/runinput.cc: New files.
2015-10-07 22:18:22 +02:00