aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkMatrixImageFilter.cpp
diff options
context:
space:
mode:
authorGravatar Robert Phillips <robertphillips@google.com>2018-01-24 14:46:38 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-01-24 21:54:30 +0000
commita83d0132baa681339e7e7f018dbdcc4051caae3d (patch)
treee9be321a81d04cc28a5c388a6f8a8f76ee5a1224 /src/core/SkMatrixImageFilter.cpp
parent548d387ab935349edd03149502fff8ebe467b5b0 (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.cpp12
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));
}