From 3221766820c60057f7cc2e8e0b1c30f9b895c8de Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 26 Apr 2022 13:46:02 +1000 Subject: Fix string escaping in override versioning and modifier renaming --- source/blender/blenloader/intern/versioning_300.c | 6 ++++-- source/blender/makesrna/intern/rna_gpencil_modifier.c | 15 ++++++++++----- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/source/blender/blenloader/intern/versioning_300.c b/source/blender/blenloader/intern/versioning_300.c index f0055fb73ac..baf4c6ef710 100644 --- a/source/blender/blenloader/intern/versioning_300.c +++ b/source/blender/blenloader/intern/versioning_300.c @@ -1295,8 +1295,10 @@ static void version_liboverride_rnacollections_insertion_object(Object *object) if (object->pose != NULL) { LISTBASE_FOREACH (bPoseChannel *, pchan, &object->pose->chanbase) { - char rna_path[FILE_MAXFILE]; - BLI_snprintf(rna_path, sizeof(rna_path), "pose.bones[\"%s\"].constraints", pchan->name); + char rna_path[26 + (sizeof(pchan->name) * 2) + 1]; + char name_esc[sizeof(pchan->name) * 2]; + BLI_str_escape(name_esc, pchan->name, sizeof(name_esc)); + SNPRINTF(rna_path, "pose.bones[\"%s\"].constraints", name_esc); op = BKE_lib_override_library_property_find(liboverride, rna_path); if (op != NULL) { version_liboverride_rnacollections_insertion_object_constraints(&pchan->constraints, op); diff --git a/source/blender/makesrna/intern/rna_gpencil_modifier.c b/source/blender/makesrna/intern/rna_gpencil_modifier.c index 04a9a6b169e..1f9bb972923 100644 --- a/source/blender/makesrna/intern/rna_gpencil_modifier.c +++ b/source/blender/makesrna/intern/rna_gpencil_modifier.c @@ -754,11 +754,13 @@ static char *rna_DashGpencilModifierSegment_path(PointerRNA *ptr) BLI_assert(dmd != NULL); - char name_esc[sizeof(dmd->modifier.name) * 2 + 1]; - + char name_esc[sizeof(dmd->modifier.name) * 2]; BLI_str_escape(name_esc, dmd->modifier.name, sizeof(name_esc)); - return BLI_sprintfN("grease_pencil_modifiers[\"%s\"].segments[\"%s\"]", name_esc, ds->name); + char ds_name_esc[sizeof(ds->name) * 2]; + BLI_str_escape(ds_name_esc, ds->name, sizeof(ds_name_esc)); + + return BLI_sprintfN("grease_pencil_modifiers[\"%s\"].segments[\"%s\"]", name_esc, ds_name_esc); } static bool dash_segment_name_exists_fn(void *arg, const char *name) @@ -785,8 +787,11 @@ static void rna_DashGpencilModifierSegment_name_set(PointerRNA *ptr, const char BLI_uniquename_cb( dash_segment_name_exists_fn, ds->dmd, "Segment", '.', ds->name, sizeof(ds->name)); - char prefix[256]; - sprintf(prefix, "grease_pencil_modifiers[\"%s\"].segments", ds->dmd->modifier.name); + char name_esc[sizeof(ds->dmd->modifier.name) * 2]; + BLI_str_escape(name_esc, ds->dmd->modifier.name, sizeof(name_esc)); + + char prefix[36 + sizeof(name_esc) + 1]; + SNPRINTF(prefix, "grease_pencil_modifiers[\"%s\"].segments", name_esc); /* Fix all the animation data which may link to this. */ BKE_animdata_fix_paths_rename_all(NULL, prefix, oldname, ds->name); -- cgit v1.2.3