Index: third_party/lcms2-2.6/0006-memory-leak-Type_NamedColor_Read.patch |
diff --git a/third_party/lcms2-2.6/0006-memory-leak-Type_NamedColor_Read.patch b/third_party/lcms2-2.6/0006-memory-leak-Type_NamedColor_Read.patch |
new file mode 100644 |
index 0000000000000000000000000000000000000000..5d25d5a737ca1d2962c65a18dce6be7fe300ac89 |
--- /dev/null |
+++ b/third_party/lcms2-2.6/0006-memory-leak-Type_NamedColor_Read.patch |
@@ -0,0 +1,22 @@ |
+diff --git a/third_party/lcms2-2.6/src/cmstypes.c b/third_party/lcms2-2.6/src/cmstypes.c |
+index feba387..4d24fc2 100644 |
+--- a/third_party/lcms2-2.6/src/cmstypes.c |
++++ b/third_party/lcms2-2.6/src/cmstypes.c |
+@@ -3102,7 +3102,7 @@ void *Type_NamedColor_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* i |
+ |
+ if (nDeviceCoords > cmsMAXCHANNELS) { |
+ cmsSignalError(self->ContextID, cmsERROR_RANGE, "Too many device coordinates '%d'", nDeviceCoords); |
+- return 0; |
++ goto Error; |
+ } |
+ for (i=0; i < count; i++) { |
+ |
+@@ -3111,7 +3111,7 @@ void *Type_NamedColor_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* i |
+ char Root[33]; |
+ |
+ memset(Colorant, 0, sizeof(Colorant)); |
+- if (io -> Read(io, Root, 32, 1) != 1) return NULL; |
++ if (io -> Read(io, Root, 32, 1) != 1) goto Error; |
+ Root[32] = 0; |
+ if (!_cmsReadUInt16Array(io, 3, PCS)) goto Error; |
+ if (!_cmsReadUInt16Array(io, nDeviceCoords, Colorant)) goto Error; |