Commit Graph

23 Commits

Author SHA1 Message Date
Kevin Lubick
ec1c620316 Avoid system fonts when fuzzing
This should make reproducing certain fuzzes easier between oss-fuzz
and a typical dev's desktop.

This was the most straight-forward way I could think of to
accomplish this.  An ideal solution would "compile" a set of
fonts that was not the test set and embed it, but I lack the
domain knowledge to craft such a set.

If this method works ok, we can explore making the font set
more robust and varied.

Bug: 818769
Change-Id: I03eb2bc316caf7aec3ffa88e59ff29d76c8557ec
Reviewed-on: https://skia-review.googlesource.com/c/177800
Commit-Queue: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
2018-12-14 17:11:56 +00:00
Kevin Lubick
0f3d2a6010 Add new Codec fuzzers to FuzzMain
Already in oss-fuzz:
https://github.com/google/oss-fuzz/pull/1882

This tweaks some names and return types to be more
consistent.

Bug: skia:
Change-Id: Id7e2e00bd4e7c7758d616d102195c0291bc37d9f
Reviewed-on: https://skia-review.googlesource.com/c/163124
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
2018-10-17 18:44:07 +00:00
Leon Scroggins III
0b8fcbcfa3 Add fuzzers for SkAndroidCodec & incrementalDecode
Fuzz SkAndroidCodec to help to catch errors in both incrementalDecode
and scanlineDecode. Try a variety of sample sizes, but cap it at 64.
Though sometimes larger sample sizes are used, the lower ones tend to
more common. Also draw the resulting bitmap to verify that we
initialized all pixels.

Independently test incrementalDecode to ensure that it initializes
rowsDecoded.

Change-Id: I20d8a408cd280262fdc62f902a6f04f0f57f5ad2
Reviewed-on: https://skia-review.googlesource.com/c/162025
Commit-Queue: Kevin Lubick <kjlubick@google.com>
Auto-Submit: Leon Scroggins <scroggo@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
2018-10-17 12:08:18 +00:00
Kevin Lubick
de2dc8dc77 Add oss-fuzz entrypoint for Polyutils fuzz
Bug: skia:
Change-Id: Iee7fe4344e65290ae25e4cd51f338d9ce56def55
Reviewed-on: https://skia-review.googlesource.com/c/161421
Reviewed-by: Kevin Lubick <kjlubick@google.com>
2018-10-11 13:40:09 +00:00
Mike Klein
7ffa40cedb FuzzPath -> FuzzNicePath
This CL renames FuzzPath() to FuzzNicePath() to remind us that it's
meant to create paths that a user could reasonably want to create
in good faith, to pass to Skia via its API, etc.

Then, add fuzz_nice_rect(), and have FuzzNicePath() use that to create
its rectangles and use FuzzNiceMatrix() to create its matrices, just
like we already use FuzzNiceRRect() to create rounded rectangles and
FuzzNicePath() itself to create sub-paths.

Using fuzz_nice_rect() should be the fix for the attached bug.
Using FuzzNiceMatrix() is by analogy, more preemptive.

While we're at it, rename BuildPath to FuzzEvilPath, so the contrast
with FuzzNicePath is more clear.

Update the assertions that we create a valid path in FuzzNicePath()
to tell us where things went wrong if they do.

Bug: oss-fuzz:10667, skia:8384
Change-Id: I6d802182a62815cd969c65cf0479609f64b1da55
Reviewed-on: https://skia-review.googlesource.com/156840
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
2018-09-25 17:04:00 +00:00
Kevin Lubick
549ed8874e Add FuzzPathop to oss-fuzz
With the fixes in https://skia-review.googlesource.com/c/skia/+/150465
this should allow us to fuzz Pathop on oss-fuzz.

Bug: skia:
Change-Id: Id5df511f850f23b5aad0bcb39664d18f639ddb69
Reviewed-on: https://skia-review.googlesource.com/150560
Auto-Submit: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Cary Clark <caryclark@google.com>
Commit-Queue: Cary Clark <caryclark@google.com>
2018-08-30 16:47:13 +00:00
Cary Clark
6943689ab4 clean up includes
Prepare SkRegion.h, SkShader.h, SkStream.h for documentation.
Name params, add trailing commas to enum member list,
move or remove some public SkRegion.h stuff.

SkRegion gets a minor overhaul to move some pieces
to private: or SkRegionPriv. The intent is to preserve the
current code so that the fixes for documentation do not impact
performance or code size.

R=djsollen@google.com,reed@google.com

Docs-Preview: https://skia.org/?cl=141284
Bug: skia:6818
Change-Id: I0d82794081b8739a9e8af0d1cd4a0e5d32d04f04
Reviewed-on: https://skia-review.googlesource.com/141284
Commit-Queue: Cary Clark <caryclark@skia.org>
Reviewed-by: Mike Reed <reed@google.com>
2018-08-06 14:49:46 +00:00
Cary Clark
53c8769002 remove unused untested parts of text blob
SkTextBlob has a number of untested entry points
to serialize and deserialize. Privitize ones only used
by Skia, and remove ones suspected to be unused
and untested.

R=fmalita@chromium.org
TBR=reed@google.com,bsalomon@google.com

Bug: skia:6818
Change-Id: I6a9982a26a883982af3592f3302029a1bcdf5aa3
Reviewed-on: https://skia-review.googlesource.com/141820
Reviewed-by: Florin Malita <fmalita@chromium.org>
Reviewed-by: Cary Clark <caryclark@skia.org>
Commit-Queue: Cary Clark <caryclark@skia.org>
2018-07-17 17:01:20 +00:00
Florin Malita
80452bee11 Fold SkJSON into Skia/utils
It's a tiny, core-ish component -- might as well treat as such to
simplify dependencies.

Change-Id: I6f31ce2d151f9a629d88bfc7f15d64891d5150c0
Reviewed-on: https://skia-review.googlesource.com/135780
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
2018-06-19 18:23:30 +00:00
Florin Malita
3d856bdeee [skottie] Relocate to modules/skottie
TBR=
Change-Id: I218d251ca56578a3a7fd4fb86cba9abdc10fb3bd
Reviewed-on: https://skia-review.googlesource.com/130322
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Florin Malita <fmalita@chromium.org>
2018-05-27 02:21:33 +00:00
Kevin Lubick
9eeede2e71 Add Skottie fuzzer (via json input)
Bug: skia:
Change-Id: I97543b73755fca73f2ad014113ae8cd2c9227cf3
Reviewed-on: https://skia-review.googlesource.com/125820
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
2018-05-04 13:05:12 +00:00
Kevin Lubick
27d42198d3 Move oss-fuzz to MockGPUCanvas
Bug: skia:7776
Change-Id: I4f2791375d8be05486d10ce8f7f2e58aa032cfd8
Reviewed-on: https://skia-review.googlesource.com/118166
Commit-Queue: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Jonathan Metzman <metzman@chromium.org>
2018-04-03 17:02:20 +00:00
Kevin Lubick
e4be55dc28 Add Encoder fuzzers
This also includes a helper "fuzzer" for making a corpus.
Point it at an image or folder of images and it will
decode those images and write the SkPixmap's bytes to
disk, such that the fuzzer will be able to read in
those bytes as if it had decoded the image (or gotten
it from another source).

Bug: skia:
Change-Id: Iaf223a39078f2b62908fb47929add5d63f22d973
Reviewed-on: https://skia-review.googlesource.com/117367
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
2018-03-30 19:31:56 +00:00
Jonathan Metzman
8264b310d5 Add libFuzzer style fuzzer for NullGLCanvas for use on OSS-Fuzz.
Bug: 827225
Change-Id: Icb30c0c234326340213af0cc402a4124dd0336b3
Reviewed-on: https://skia-review.googlesource.com/117150
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2018-03-29 19:40:26 +00:00
Kevin Lubick
486ee3d4c6 Port 2 Canvas fuzzers to oss-fuzz
Bug: skia:
Change-Id: I0d34bfff4a53f831986614844bdc955935f28501
Reviewed-on: https://skia-review.googlesource.com/115582
Commit-Queue: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2018-03-21 14:44:28 +00:00
Kevin Lubick
05cb229e58 Add oss-fuzz endpoint for PathMeasure
Bug: skia:
Change-Id: I3e051cefd6861b63bab33a1812674eacf67a35dd
Reviewed-on: https://skia-review.googlesource.com/113748
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
2018-03-12 18:43:38 +00:00
Cary Clark
91390c8ace pathmeasure fuzzer
R=kjlubick@google.com, reed@google.com
Bug: skia:
Change-Id: I16a8b09312e5d1d1783bd6a4b791636ad8f63889
Reviewed-on: https://skia-review.googlesource.com/113165
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Cary Clark <caryclark@skia.org>
2018-03-12 15:29:18 +00:00
Kevin Lubick
db1e5c6474 Port 3 API fuzzers to be oss-fuzz friendly
Also Remove ScaleToSides, which we hadn't been running for a while.

Bug: skia:
Change-Id: I772dad722c34681392d5b635b3de716f3b00d597
Reviewed-on: https://skia-review.googlesource.com/110443
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
2018-02-27 13:47:28 +00:00
Kevin Lubick
37c0f7183e Add guidance for oss-fuzzer for new path version
This only changes it for the oss-fuzz executable
which allows our normal fuzz executable to repro
on older versions, if needed.

This CL also accompanies additions to the corpus
of a bunch of v4 paths.

Bug: skia:

Change-Id: I4a1a3b27f48423f2bddc73e1b8bf63b82dfa59ff
Reviewed-on: https://skia-review.googlesource.com/109560
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
2018-02-23 13:35:37 +00:00
Kevin Lubick
2416f968a6 Add 2 fuzz targets for image decoding (oss-fuzz)
This also adds in a few small guards to prevent libfuzzer from frequently
running out of memory when an image claims to have billions of pixels.

Bug: skia:
Change-Id: I47a9daac832c4d85a42000698482b61721c38880
Reviewed-on: https://skia-review.googlesource.com/106264
Commit-Queue: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
2018-02-12 15:25:59 +00:00
Kevin Lubick
f034d11859 Break some fuzzer targets out so oss-fuzz can use them
FuzzImageFilterDeserialize is already being used in oss-fuzz
but the target lived there and not here.  This moves it here.

Then we can turn on:
 - FuzzPathDeserialize
 - FuzzTextBlobDeserialize


Bug: skia:
Change-Id: I7baee8386fb7aeebc43a68abfff9a670ba16f82c
Reviewed-on: https://skia-review.googlesource.com/105763
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
2018-02-09 14:37:41 +00:00
Kevin Lubick
a71b8d17e8 Check for nullptrs when fuzzing region_deserialize
Bug: oss-fuzz:5629
Change-Id: I1129a6a9a68c69e07ab63e2e2be1c00cf0581962
Reviewed-on: https://skia-review.googlesource.com/102482
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
2018-02-01 15:10:43 +00:00
Kevin Lubick
2541edf0c6 Add in Region SetPath Fuzzer
Also refactor a few things to make it easier to use oss-fuzz.

Bug: skia:
Change-Id: Ie518a6cfc7d57a347b5d09089379f986d33f8b7f
Reviewed-on: https://skia-review.googlesource.com/41740
Commit-Queue: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2018-01-11 19:42:53 +00:00