[Bf-blender-cvs] [b7a92fa75e5] soc-2018-hair-shader: Protect against OSL alloc's null pointer dereference

L. E. Segovia noreply at git.blender.org
Thu May 31 14:43:03 CEST 2018


Commit: b7a92fa75e56c2b76968e523892bfb7ee9a6f19e
Author: L. E. Segovia
Date:   Thu May 31 12:42:28 2018 +0000
Branches: soc-2018-hair-shader
https://developer.blender.org/rBb7a92fa75e56c2b76968e523892bfb7ee9a6f19e

Protect against OSL alloc's null pointer dereference

(I got this one in MSVC)

Ref T54796

===================================================================

M	intern/cycles/kernel/osl/osl_closures.cpp

===================================================================

diff --git a/intern/cycles/kernel/osl/osl_closures.cpp b/intern/cycles/kernel/osl/osl_closures.cpp
index 5dd1da01c16..b4f0230d425 100644
--- a/intern/cycles/kernel/osl/osl_closures.cpp
+++ b/intern/cycles/kernel/osl/osl_closures.cpp
@@ -212,11 +212,22 @@ public:
 
 	void setup(ShaderData *sd, int path_flag, float3 weight)
 	{
-		if(!skip(sd, path_flag, LABEL_GLOSSY)) {
+		if(!skip(sd, path_flag, LABEL_GLOSSY))
+		{
 			PrincipledHairBSDF *bsdf = (PrincipledHairBSDF*)bsdf_alloc_osl(sd, sizeof(PrincipledHairBSDF), weight, &params);
+			if (!bsdf)
+			{
+				return;
+			}
+
 			PrincipledHairExtra *extra = (PrincipledHairExtra*)closure_alloc_extra(sd, sizeof(PrincipledHairExtra));
+			if (!extra)
+			{
+				return;
+			}
+
 			bsdf->extra = extra;
-			sd->flag |= (bsdf) ? bsdf_principled_hair_setup(sd, bsdf) : 0;
+			sd->flag |= (bsdf && extra) ? bsdf_principled_hair_setup(sd, bsdf) : 0;
 		}
 	}
 };



More information about the Bf-blender-cvs mailing list