[Bf-blender-cvs] [86d172d] blender-v2.75-release: Fix T45204: String Splitting Function Bug: Using OpenEXR function even if compiled without OpenEXR.
Bastien Montagne
noreply at git.blender.org
Mon Jun 29 16:18:23 CEST 2015
Commit: 86d172d846a9fe6a333641911066d4b2e0dd46da
Author: Bastien Montagne
Date: Fri Jun 26 19:41:51 2015 +0200
Branches: blender-v2.75-release
https://developer.blender.org/rB86d172d846a9fe6a333641911066d4b2e0dd46da
Fix T45204: String Splitting Function Bug: Using OpenEXR function even if compiled without OpenEXR.
Seriously!!!
Also, fix a potential buffer overrun here.
This should be backported to final release.
===================================================================
M source/blender/render/intern/source/render_result.c
===================================================================
diff --git a/source/blender/render/intern/source/render_result.c b/source/blender/render/intern/source/render_result.c
index 2144813..6b6341e 100644
--- a/source/blender/render/intern/source/render_result.c
+++ b/source/blender/render/intern/source/render_result.c
@@ -459,9 +459,10 @@ static int passtype_from_name(const char *str)
static void set_pass_name(char *passname, int passtype, int channel, const char *view)
{
- const char *end;
- const char *token;
- int len;
+ const char delims[] = {'.', '\0'};
+ char *sep;
+ char *token;
+ size_t len;
const char *passtype_name = name_from_passtype(passtype, channel);
@@ -470,13 +471,14 @@ static void set_pass_name(char *passname, int passtype, int channel, const char
return;
}
- end = passtype_name + strlen(passtype_name);
- len = IMB_exr_split_token(passtype_name, end, &token);
+ len = BLI_str_rpartition(passtype_name, delims, &sep, &token);
- if (len == strlen(passtype_name))
- sprintf(passname, "%s.%s", passtype_name, view);
- else
- sprintf(passname, "%.*s%s.%s", (int)(end-passtype_name) - len, passtype_name, view, token);
+ if (sep) {
+ BLI_snprintf(passname, EXR_PASS_MAXNAME, "%.*s.%s.%s", (int)len, passtype_name, view, token);
+ }
+ else {
+ BLI_snprintf(passname, EXR_PASS_MAXNAME, "%s.%s", passtype_name, view);
+ }
}
/********************************** New **************************************/
More information about the Bf-blender-cvs
mailing list