diff --git a/src/core/SkColorFilter.cpp b/src/core/SkColorFilter.cpp
index 27d8bee..edd5869 100644
--- a/src/core/SkColorFilter.cpp
+++ b/src/core/SkColorFilter.cpp
@@ -484,17 +484,24 @@
     buffer.readString(&sksl);
     sk_sp<SkData> inputs = buffer.readByteArrayAsData();
 
-    std::vector<sk_sp<SkColorFilter>> children;
-    children.resize(buffer.read32());
-    for (size_t i = 0; i < children.size(); ++i) {
-        children[i] = buffer.readColorFilter();
-    }
-
     auto effect = std::get<0>(SkRuntimeEffect::Make(std::move(sksl)));
     if (!effect) {
+        buffer.validate(false);
         return nullptr;
     }
 
+    size_t childCount = buffer.read32();
+    if (childCount != effect->children().count()) {
+        buffer.validate(false);
+        return nullptr;
+    }
+
+    std::vector<sk_sp<SkColorFilter>> children;
+    children.resize(childCount);
+    for (size_t i = 0; i < children.size(); ++i) {
+        children[i] = buffer.readColorFilter();
+    }
+
     return effect->makeColorFilter(std::move(inputs), children.data(), children.size());
 }
 
diff --git a/src/shaders/SkRTShader.cpp b/src/shaders/SkRTShader.cpp
index f1a32ed..3e961e0 100644
--- a/src/shaders/SkRTShader.cpp
+++ b/src/shaders/SkRTShader.cpp
@@ -110,17 +110,24 @@
         localMPtr = &localM;
     }
 
-    std::vector<sk_sp<SkShader>> children;
-    children.resize(buffer.read32());
-    for (size_t i = 0; i < children.size(); ++i) {
-        children[i] = buffer.readShader();
-    }
-
     auto effect = std::get<0>(SkRuntimeEffect::Make(std::move(sksl)));
     if (!effect) {
+        buffer.validate(false);
         return nullptr;
     }
 
+    size_t childCount = buffer.read32();
+    if (childCount != effect->children().count()) {
+        buffer.validate(false);
+        return nullptr;
+    }
+
+    std::vector<sk_sp<SkShader>> children;
+    children.resize(childCount);
+    for (size_t i = 0; i < children.size(); ++i) {
+        children[i] = buffer.readShader();
+    }
+
     return effect->makeShader(std::move(inputs), children.data(), children.size(), localMPtr,
                               isOpaque);
 }
