[Bf-blender-cvs] [f4d5a69cf85] blender-v2.93-release: Fix crash running constraint, modifier, fx from missing NULL check

Campbell Barton noreply at git.blender.org
Fri Apr 30 12:49:02 CEST 2021


Commit: f4d5a69cf8512aafcc697d1b09f65489015b6af4
Author: Campbell Barton
Date:   Fri Apr 30 20:44:43 2021 +1000
Branches: blender-v2.93-release
https://developer.blender.org/rBf4d5a69cf8512aafcc697d1b09f65489015b6af4

Fix crash running constraint, modifier, fx from missing NULL check

None of these generic poll functions had NULL pointer checks,
since all operators that use these functions expect a valid constraint,
modifier .. etc. Add the NULL check to the poll function.

Ref D11126

Reviewed By: mont29, Severin

===================================================================

M	source/blender/editors/object/object_constraint.c
M	source/blender/editors/object/object_gpencil_modifier.c
M	source/blender/editors/object/object_modifier.c
M	source/blender/editors/object/object_shader_fx.c

===================================================================

diff --git a/source/blender/editors/object/object_constraint.c b/source/blender/editors/object/object_constraint.c
index 244124a6e0a..8ed1b862521 100644
--- a/source/blender/editors/object/object_constraint.c
+++ b/source/blender/editors/object/object_constraint.c
@@ -706,6 +706,11 @@ static bool edit_constraint_poll_generic(bContext *C,
     return false;
   }
 
+  if (!con) {
+    CTX_wm_operator_poll_msg_set(C, "Context missing active constraint");
+    return false;
+  }
+
   if (!is_liboverride_allowed && BKE_constraint_is_nonlocal_in_liboverride(ob, con)) {
     CTX_wm_operator_poll_msg_set(
         C, "Cannot edit constraints coming from linked data in a library override");
diff --git a/source/blender/editors/object/object_gpencil_modifier.c b/source/blender/editors/object/object_gpencil_modifier.c
index 3995728c428..6d1c4481883 100644
--- a/source/blender/editors/object/object_gpencil_modifier.c
+++ b/source/blender/editors/object/object_gpencil_modifier.c
@@ -443,6 +443,10 @@ static bool gpencil_edit_modifier_poll_generic(bContext *C,
     return false;
   }
 
+  if (!mod) {
+    return false;
+  }
+
   if (!is_liboverride_allowed && BKE_gpencil_modifier_is_nonlocal_in_liboverride(ob, mod)) {
     CTX_wm_operator_poll_msg_set(
         C, "Cannot edit modifiers coming from linked data in a library override");
diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c
index 49c07b28f07..02b0d71c90e 100644
--- a/source/blender/editors/object/object_modifier.c
+++ b/source/blender/editors/object/object_modifier.c
@@ -1051,6 +1051,10 @@ bool edit_modifier_poll_generic(bContext *C,
     return false;
   }
 
+  if (!mod) {
+    return false;
+  }
+
   if (!is_liboverride_allowed && BKE_modifier_is_nonlocal_in_liboverride(ob, mod)) {
     CTX_wm_operator_poll_msg_set(
         C, "Cannot edit modifiers coming from linked data in a library override");
diff --git a/source/blender/editors/object/object_shader_fx.c b/source/blender/editors/object/object_shader_fx.c
index 585a1e22a84..7634c14ee0f 100644
--- a/source/blender/editors/object/object_shader_fx.c
+++ b/source/blender/editors/object/object_shader_fx.c
@@ -368,8 +368,12 @@ static bool edit_shaderfx_poll_generic(bContext *C, StructRNA *rna_type, int obt
     return false;
   }
 
+  if (!fx) {
+    return false;
+  }
+
   if (ID_IS_OVERRIDE_LIBRARY(ob)) {
-    if ((fx == NULL) || (fx->flag & eShaderFxFlag_OverrideLibrary_Local) == 0) {
+    if ((fx->flag & eShaderFxFlag_OverrideLibrary_Local) == 0) {
       CTX_wm_operator_poll_msg_set(C, "Cannot edit shaderfxs coming from library override");
       return false;
     }



More information about the Bf-blender-cvs mailing list