[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [29426] trunk/blender/source/blender: bugfix [#22486] add_actuator crashes when name is bigger than 32 chars
Campbell Barton
ideasman42 at gmail.com
Sat Jun 12 17:49:02 CEST 2010
Revision: 29426
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29426
Author: campbellbarton
Date: 2010-06-12 17:49:01 +0200 (Sat, 12 Jun 2010)
Log Message:
-----------
bugfix [#22486] add_actuator crashes when name is bigger than 32 chars
have pyrna raise an error on strings that are too long.
Modified Paths:
--------------
trunk/blender/source/blender/makesrna/intern/rna_access.c
trunk/blender/source/blender/python/intern/bpy_rna.c
Modified: trunk/blender/source/blender/makesrna/intern/rna_access.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_access.c 2010-06-12 15:05:19 UTC (rev 29425)
+++ trunk/blender/source/blender/makesrna/intern/rna_access.c 2010-06-12 15:49:01 UTC (rev 29426)
@@ -960,7 +960,8 @@
}
}
-/* this is the max length including \0 terminator */
+/* this is the max length including \0 terminator.
+ * -1 used when their is no maximum */
int RNA_property_string_maxlength(PropertyRNA *prop)
{
StringPropertyRNA *sprop= (StringPropertyRNA*)rna_ensure_property(prop);
Modified: trunk/blender/source/blender/python/intern/bpy_rna.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_rna.c 2010-06-12 15:05:19 UTC (rev 29425)
+++ trunk/blender/source/blender/python/intern/bpy_rna.c 2010-06-12 15:49:01 UTC (rev 29426)
@@ -924,12 +924,18 @@
}
case PROP_STRING:
{
- char *param = _PyUnicode_AsString(value);
-
+ Py_ssize_t param_len;
+ int param_maxlen= RNA_property_string_maxlength(prop) - 1;
+ char *param = _PyUnicode_AsStringAndSize(value, ¶m_len);
+
if (param==NULL) {
PyErr_Format(PyExc_TypeError, "%.200s %.200s.%.200s expected a string type", error_prefix, RNA_struct_identifier(ptr->type), RNA_property_identifier(prop));
return -1;
- } else {
+ } else if (param_maxlen != -1 && param_len > param_maxlen) { /* -1 because it includes the \0 */
+ PyErr_Format(PyExc_TypeError, "%.200s %.200s.%.200s string is length %d, expected maximum of %d", error_prefix, RNA_struct_identifier(ptr->type), RNA_property_identifier(prop), (int)param_len, param_maxlen);
+ return -1;
+ }
+ else {
if(data) *((char**)data)= param;
else RNA_property_string_set(ptr, prop, param);
}
More information about the Bf-blender-cvs
mailing list