Commit: 5d31252c762b35a5af3d668f45dccf5bb397627e
Author: Campbell Barton
Date:   Wed Apr 6 11:42:45 2022 +1000
Branches: master
https://developer.blender.org/rB5d31252c762b35a5af3d668f45dccf5bb397627e

Fix accessing an empty context succeeding when it shouldn't

Internally an empty string is used to access context member `__dir__`,
which caused `getattr(context, "")` to succeed returning None.

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

M       source/blender/python/intern/bpy_rna.c

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

diff --git a/source/blender/python/intern/bpy_rna.c 
b/source/blender/python/intern/bpy_rna.c
index bb212bfcccc..a28137c3bed 100644
--- a/source/blender/python/intern/bpy_rna.c
+++ b/source/blender/python/intern/bpy_rna.c
@@ -4210,7 +4210,17 @@ static PyObject *pyrna_struct_getattro(BPy_StructRNA 
*self, PyObject *pyname)
       ListBase newlb;
       short newtype;
 
-      const eContextResult done = CTX_data_get(C, name, &newptr, &newlb, 
&newtype);
+      /* An empty string is used to implement #CTX_data_dir_get,
+       * without this check `getattr(context, "")` succeeds. */
+      eContextResult done;
+      if (name[0]) {
+        done = CTX_data_get(C, name, &newptr, &newlb, &newtype);
+      }
+      else {
+        /* Fall through to built-in `getattr`. */
+        done = CTX_RESULT_MEMBER_NOT_FOUND;
+        BLI_listbase_clear(&newlb);
+      }
 
       if (done == CTX_RESULT_OK) {
         switch (newtype) {

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to