diff options
author | Robert Phillips <robertphillips@google.com> | 2018-01-24 14:46:38 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-01-24 21:54:30 +0000 |
commit | a83d0132baa681339e7e7f018dbdcc4051caae3d (patch) | |
tree | e9be321a81d04cc28a5c388a6f8a8f76ee5a1224 /src/core/SkMatrixImageFilter.cpp | |
parent | 548d387ab935349edd03149502fff8ebe467b5b0 (diff) |
Misc guarding of enums in ImageFilter CreateProcs
Change-Id: I51886aaf2a4670f46ca489b2369dc00e60403c75
Reviewed-on: https://skia-review.googlesource.com/99328
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'src/core/SkMatrixImageFilter.cpp')
-rw-r--r-- | src/core/SkMatrixImageFilter.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/core/SkMatrixImageFilter.cpp b/src/core/SkMatrixImageFilter.cpp index 3531d183cc..1a5ca7ccf9 100644 --- a/src/core/SkMatrixImageFilter.cpp +++ b/src/core/SkMatrixImageFilter.cpp @@ -11,6 +11,7 @@ #include "SkColorSpaceXformer.h" #include "SkImageFilterPriv.h" #include "SkReadBuffer.h" +#include "SkSafeRange.h" #include "SkSpecialImage.h" #include "SkSpecialSurface.h" #include "SkWriteBuffer.h" @@ -33,10 +34,19 @@ sk_sp<SkImageFilter> SkMatrixImageFilter::Make(const SkMatrix& transform, } sk_sp<SkFlattenable> SkMatrixImageFilter::CreateProc(SkReadBuffer& buffer) { + SkSafeRange safe; + SK_IMAGEFILTER_UNFLATTEN_COMMON(common, 1); SkMatrix matrix; buffer.readMatrix(&matrix); - SkFilterQuality quality = static_cast<SkFilterQuality>(buffer.readInt()); + + SkFilterQuality quality = safe.checkLE<SkFilterQuality>(buffer.readInt(), + kLast_SkFilterQuality); + + if (!buffer.validate(safe)) { + return nullptr; + } + return Make(matrix, quality, common.getInput(0)); } |