Index: src/effects/SkLightingImageFilter.cpp |
diff --git a/src/effects/SkLightingImageFilter.cpp b/src/effects/SkLightingImageFilter.cpp |
index 999b8f8bfa2863e54e71adfc628fc475f2e71eb5..54e920cdc496a13714adb717cf17c3f5d05f1b56 100644 |
--- a/src/effects/SkLightingImageFilter.cpp |
+++ b/src/effects/SkLightingImageFilter.cpp |
@@ -249,6 +249,9 @@ SkPoint3 readPoint3(SkFlattenableReadBuffer& buffer) { |
point.fX = buffer.readScalar(); |
point.fY = buffer.readScalar(); |
point.fZ = buffer.readScalar(); |
+ buffer.validateData(SkScalarIsFinite(point.fX) && |
+ SkScalarIsFinite(point.fY) && |
+ SkScalarIsFinite(point.fZ)); |
return point; |
}; |
@@ -741,6 +744,10 @@ protected: |
fCosInnerConeAngle = buffer.readScalar(); |
fConeScale = buffer.readScalar(); |
fS = readPoint3(buffer); |
+ buffer.validateData(SkScalarIsFinite(fSpecularExponent) && |
+ SkScalarIsFinite(fCosOuterConeAngle) && |
+ SkScalarIsFinite(fCosInnerConeAngle) && |
+ SkScalarIsFinite(fConeScale)); |
} |
SkSpotLight(const SkPoint3& location, const SkPoint3& target, SkScalar specularExponent, SkScalar cosOuterConeAngle, SkScalar cosInnerConeAngle, SkScalar coneScale, const SkPoint3& s, const SkPoint3& color) |
: INHERITED(color), |
@@ -862,6 +869,7 @@ SkLightingImageFilter::SkLightingImageFilter(SkFlattenableReadBuffer& buffer) |
{ |
fLight = buffer.readFlattenableT<SkLight>(); |
fSurfaceScale = buffer.readScalar(); |
+ buffer.validateData(SkScalarIsFinite(fSurfaceScale)); |
} |
void SkLightingImageFilter::flatten(SkFlattenableWriteBuffer& buffer) const { |
@@ -882,6 +890,7 @@ SkDiffuseLightingImageFilter::SkDiffuseLightingImageFilter(SkFlattenableReadBuff |
: INHERITED(buffer) |
{ |
fKD = buffer.readScalar(); |
+ buffer.validateData(SkScalarIsFinite(fKD)); |
} |
void SkDiffuseLightingImageFilter::flatten(SkFlattenableWriteBuffer& buffer) const { |
@@ -959,6 +968,8 @@ SkSpecularLightingImageFilter::SkSpecularLightingImageFilter(SkFlattenableReadBu |
{ |
fKS = buffer.readScalar(); |
fShininess = buffer.readScalar(); |
+ buffer.validateData(SkScalarIsFinite(fKS) && |
+ SkScalarIsFinite(fShininess)); |
} |
void SkSpecularLightingImageFilter::flatten(SkFlattenableWriteBuffer& buffer) const { |