Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/blender/blenkernel/BKE_screen.h2
-rw-r--r--source/blender/makesrna/intern/rna_ID.c9
-rw-r--r--source/blender/makesrna/intern/rna_render.c7
-rw-r--r--source/blender/makesrna/intern/rna_ui.c17
-rw-r--r--source/blender/render/extern/include/RE_pipeline.h4
5 files changed, 34 insertions, 5 deletions
diff --git a/source/blender/blenkernel/BKE_screen.h b/source/blender/blenkernel/BKE_screen.h
index bf01ef0ec60..c9d1caa1cfe 100644
--- a/source/blender/blenkernel/BKE_screen.h
+++ b/source/blender/blenkernel/BKE_screen.h
@@ -55,7 +55,7 @@ struct uiMenuItem;
ED_spacetypes_init() in editors/area/spacetypes.c */
/* an editor in Blender is a combined ScrArea + SpaceType + SpaceData */
-#define BKE_ST_MAXNAME 32
+#define BKE_ST_MAXNAME 64
typedef struct SpaceType {
struct SpaceType *next, *prev;
diff --git a/source/blender/makesrna/intern/rna_ID.c b/source/blender/makesrna/intern/rna_ID.c
index 2aeb600bc42..a250f0a49b4 100644
--- a/source/blender/makesrna/intern/rna_ID.c
+++ b/source/blender/makesrna/intern/rna_ID.c
@@ -205,6 +205,15 @@ StructRNA *rna_IDPropertyGroup_register(const bContext *C, ReportList *reports,
if(validate(&dummyptr, data, NULL) != 0)
return NULL;
+ /* note: it looks like there is no length limit on the srna id since its
+ * just a char pointer, but take care here, also be careful that python
+ * owns the string pointer which it could potentually free while blender
+ * is running. */
+ if(strlen(identifier) >= sizeof(((IDProperty *)NULL)->name)) {
+ BKE_reportf(reports, RPT_ERROR, "registering id property class: '%s' is too long, maximum length is %d.", identifier, sizeof(((IDProperty *)NULL)->name));
+ return NULL;
+ }
+
return RNA_def_struct(&BLENDER_RNA, identifier, "IDPropertyGroup"); // XXX
}
diff --git a/source/blender/makesrna/intern/rna_render.c b/source/blender/makesrna/intern/rna_render.c
index 5a80db74c38..8212423acd5 100644
--- a/source/blender/makesrna/intern/rna_render.c
+++ b/source/blender/makesrna/intern/rna_render.c
@@ -125,7 +125,12 @@ static StructRNA *rna_RenderEngine_register(const bContext *C, ReportList *repor
/* validate the python class */
if(validate(&dummyptr, data, have_function) != 0)
return NULL;
-
+
+ if(strlen(identifier) >= sizeof(dummyet.idname)) {
+ BKE_reportf(reports, RPT_ERROR, "registering render engine class: '%s' is too long, maximum length is %d.", identifier, sizeof(dummyet.idname));
+ return NULL;
+ }
+
/* check if we have registered this engine type before, and remove it */
for(et=R_engines.first; et; et=et->next) {
if(strcmp(et->idname, dummyet.idname) == 0) {
diff --git a/source/blender/makesrna/intern/rna_ui.c b/source/blender/makesrna/intern/rna_ui.c
index d33e96df2e6..cbd524680c1 100644
--- a/source/blender/makesrna/intern/rna_ui.c
+++ b/source/blender/makesrna/intern/rna_ui.c
@@ -163,6 +163,11 @@ static StructRNA *rna_Panel_register(const bContext *C, ReportList *reports, voi
/* validate the python class */
if(validate(&dummyptr, data, have_function) != 0)
return NULL;
+
+ if(strlen(identifier) >= sizeof(dummypt.idname)) {
+ BKE_reportf(reports, RPT_ERROR, "registering panel class: '%s' is too long, maximum length is %d.", identifier, sizeof(dummypt.idname));
+ return NULL;
+ }
if(!(art=region_type_find(reports, dummypt.space_type, dummypt.region_type)))
return NULL;
@@ -260,7 +265,12 @@ static StructRNA *rna_Header_register(const bContext *C, ReportList *reports, vo
/* validate the python class */
if(validate(&dummyhtr, data, have_function) != 0)
return NULL;
-
+
+ if(strlen(identifier) >= sizeof(dummyht.idname)) {
+ BKE_reportf(reports, RPT_ERROR, "registering header class: '%s' is too long, maximum length is %d.", identifier, sizeof(dummyht.idname));
+ return NULL;
+ }
+
if(!(art=region_type_find(reports, dummyht.space_type, RGN_TYPE_HEADER)))
return NULL;
@@ -373,6 +383,11 @@ static StructRNA *rna_Menu_register(const bContext *C, ReportList *reports, void
/* validate the python class */
if(validate(&dummymtr, data, have_function) != 0)
return NULL;
+
+ if(strlen(identifier) >= sizeof(dummymt.idname)) {
+ BKE_reportf(reports, RPT_ERROR, "registering menu class: '%s' is too long, maximum length is %d.", identifier, sizeof(dummymt.idname));
+ return NULL;
+ }
/* check if we have registered this menu type before, and remove it */
mt= WM_menutype_find(dummymt.idname, TRUE);
diff --git a/source/blender/render/extern/include/RE_pipeline.h b/source/blender/render/extern/include/RE_pipeline.h
index 56a81ac6b43..477a4baead9 100644
--- a/source/blender/render/extern/include/RE_pipeline.h
+++ b/source/blender/render/extern/include/RE_pipeline.h
@@ -253,8 +253,8 @@ typedef struct RenderEngineType {
struct RenderEngineType *next, *prev;
/* type info */
- char idname[32];
- char name[32];
+ char idname[64]; // best keep the same size as BKE_ST_MAXNAME
+ char name[64];
int flag;
void (*render)(struct RenderEngine *engine, struct Scene *scene);