7ffa40cedb
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>
28 lines
599 B
C++
28 lines
599 B
C++
/*
|
|
* Copyright 2016 Google Inc.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*/
|
|
|
|
#include "Fuzz.h"
|
|
#include "FuzzCommon.h"
|
|
#include "SkPath.h"
|
|
#include "SkPathOps.h"
|
|
|
|
const int kLastOp = SkPathOp::kReverseDifference_SkPathOp;
|
|
|
|
DEF_FUZZ(Pathop, fuzz) {
|
|
SkOpBuilder builder;
|
|
|
|
uint8_t stragglerOp;
|
|
fuzz->next(&stragglerOp);
|
|
SkPath path;
|
|
|
|
FuzzEvilPath(fuzz, &path, SkPath::Verb::kDone_Verb);
|
|
builder.add(path, static_cast<SkPathOp>(stragglerOp % (kLastOp + 1)));
|
|
|
|
SkPath result;
|
|
builder.resolve(&result);
|
|
}
|