File php-5.1.2-CVE-2007-3478.patch of Package php

--- ext/gd/libgd/gdft.c
+++ ext/gd/libgd/gdft.c
@@ -192,6 +192,16 @@
 #include "jisx0208.h"
 #endif
 
+extern int any2eucjp (char *, char *, unsigned int);
+
+/* Persistent font cache until explicitly cleared */
+/* Fonts can be used across multiple images */
+
+/* 2.0.16: thread safety (the font cache is shared) */
+gdMutexDeclare (gdFontCacheMutex);
+static gdCache_head_t *fontCache;
+static FT_Library library;
+
 #define Tcl_UniChar int
 #define TCL_UTF_MAX 3
 static int gdTcl_UtfToUniChar (char *str, Tcl_UniChar * chPtr)
@@ -687,23 +697,15 @@
 	return (!updown) ? (v1 < 0 ? ((v1 - 63) >> 6) : v1 >> 6) : (v1 > 0 ? ((v1 + 63) >> 6) : v1 >> 6);
 }
 
-extern int any2eucjp (char *, char *, unsigned int);
-
-/* Persistent font cache until explicitly cleared */
-/* Fonts can be used across multiple images */
-
-/* 2.0.16: thread safety (the font cache is shared) */
-gdMutexDeclare(gdFontCacheMutex);
-static gdCache_head_t *fontCache = NULL;
-static FT_Library library;
-
 void gdFontCacheShutdown()
 {
 	if (fontCache) {
-		gdMutexShutdown(gdFontCacheMutex);
+		gdMutexLock(gdFontCacheMutex);
 		gdCacheDelete(fontCache);
 		fontCache = NULL;
-		FT_Done_FreeType(library);
+		gdMutexUnlock(gdFontCacheMutex);
+		gdMutexShutdown (gdFontCacheMutex);
+		FT_Done_FreeType (library);
 	}
 }
 
openSUSE Build Service is sponsored by