[Bf-blender-cvs] [851d753] master: Fix T45204: String Splitting Function Bug: Using OpenEXR function even if compiled without OpenEXR.

Bastien Montagne noreply at git.blender.org
Sat Jun 27 10:26:16 CEST 2015


Commit: 851d7535d9711af8b0d42cb08d7ecdb281d63604
Author: Bastien Montagne
Date:   Fri Jun 26 19:41:51 2015 +0200
Branches: master
https://developer.blender.org/rB851d7535d9711af8b0d42cb08d7ecdb281d63604

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 2af6a38..117d28d 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