diff options
Diffstat (limited to 'source/a/cups/cups.fix_broken_locking.diff')
-rw-r--r-- | source/a/cups/cups.fix_broken_locking.diff | 256 |
1 files changed, 0 insertions, 256 deletions
diff --git a/source/a/cups/cups.fix_broken_locking.diff b/source/a/cups/cups.fix_broken_locking.diff deleted file mode 100644 index 44f97533..00000000 --- a/source/a/cups/cups.fix_broken_locking.diff +++ /dev/null @@ -1,256 +0,0 @@ -Submitted By: DJ Lucas <robert AT linuxfromscratch DOT org> -Date: 2010-09-13 -Initial Package Version: 1.4.4 -Upstream Status: Unknown -Origin: https://bugzilla.redhat.com/show_bug.cgi?id=553834 -Description: Bug fix for invalid locking with GCrypt. - -diff -Naurp cups-1.4.4-orig/cups/http.c cups-1.4.4/cups/http.c ---- cups-1.4.4-orig/cups/http.c 2010-06-16 00:27:41.000000000 -0500 -+++ cups-1.4.4/cups/http.c 2010-09-13 01:27:03.000000000 -0500 -@@ -83,12 +83,10 @@ - * http_debug_hex() - Do a hex dump of a buffer. - * http_field() - Return the field index for a field name. - * http_read_ssl() - Read from a SSL/TLS connection. -- * http_locking_cb() - Lock/unlock a thread's mutex. - * http_send() - Send a request with all fields and the trailing - * blank line. - * http_setup_ssl() - Set up SSL/TLS support on a connection. - * http_shutdown_ssl() - Shut down SSL/TLS on a connection. -- * http_threadid_cb() - Return the current thread ID. - * http_upgrade() - Force upgrade to TLS encryption. - * http_write() - Write a buffer to a HTTP connection. - * http_write_chunk() - Write a chunked buffer. -@@ -146,19 +144,6 @@ static int http_setup_ssl(http_t *http) - static void http_shutdown_ssl(http_t *http); - static int http_upgrade(http_t *http); - static int http_write_ssl(http_t *http, const char *buf, int len); -- --# ifdef HAVE_GNUTLS --# ifdef HAVE_PTHREAD_H --GCRY_THREAD_OPTION_PTHREAD_IMPL; --# endif /* HAVE_PTHREAD_H */ -- --# elif defined(HAVE_LIBSSL) && defined(HAVE_PTHREAD_H) --static pthread_mutex_t *http_locks; /* OpenSSL lock mutexes */ -- --static void http_locking_cb(int mode, int type, const char *file, -- int line); --static unsigned long http_threadid_cb(void); --# endif /* HAVE_GNUTLS */ - #endif /* HAVE_SSL */ - - -@@ -1188,22 +1173,21 @@ httpHead(http_t *http, /* I - Conne - void - httpInitialize(void) - { -- static int initialized = 0; /* Have we been called before? */ --#ifdef WIN32 -- WSADATA winsockdata; /* WinSock data */ --#endif /* WIN32 */ - #ifdef HAVE_LIBSSL -- int i; /* Looping var */ -- unsigned char data[1024]; /* Seed data */ -+# ifndef WIN32 -+ struct timeval curtime; /* Current time in microseconds */ -+# endif /* !WIN32 */ -+ int i; /* Looping var */ -+ unsigned char data[1024]; /* Seed data */ - #endif /* HAVE_LIBSSL */ - -- -- if (initialized) -- return; -- - #ifdef WIN32 -- WSAStartup(MAKEWORD(2,2), &winsockdata); -+ WSADATA winsockdata; /* WinSock data */ -+ - -+ static int initialized = 0; /* Has WinSock been initialized? */ -+ if (!initialized) -+ WSAStartup(MAKEWORD(1,1), &winsockdata); - #elif !defined(SO_NOSIGPIPE) - /* - * Ignore SIGPIPE signals... -@@ -1226,21 +1210,15 @@ httpInitialize(void) - #endif /* WIN32 */ - - #ifdef HAVE_GNUTLS -- /* -- * Make sure we handle threading properly... -- */ -- --# ifdef HAVE_PTHREAD_H -- gcry_control(GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread); --# endif /* HAVE_PTHREAD_H */ - - /* - * Initialize GNU TLS... - */ - - gnutls_global_init(); -+#endif /* HAVE_GNUTLS */ - --#elif defined(HAVE_LIBSSL) -+#ifdef HAVE_LIBSSL - /* - * Initialize OpenSSL... - */ -@@ -1249,33 +1227,21 @@ httpInitialize(void) - SSL_library_init(); - - /* -- * Set the threading callbacks... -- */ -- --# ifdef HAVE_PTHREAD_H -- http_locks = calloc(CRYPTO_num_locks(), sizeof(pthread_mutex_t)); -- -- for (i = 0; i < CRYPTO_num_locks(); i ++) -- pthread_mutex_init(http_locks + i, NULL); -- -- CRYPTO_set_id_callback(http_threadid_cb); -- CRYPTO_set_locking_callback(http_locking_cb); --# endif /* HAVE_PTHREAD_H */ -- -- /* - * Using the current time is a dubious random seed, but on some systems - * it is the best we can do (on others, this seed isn't even used...) - */ - -- CUPS_SRAND(time(NULL)); -+# ifdef WIN32 -+# else -+ gettimeofday(&curtime, NULL); -+ srand(curtime.tv_sec + curtime.tv_usec); -+# endif /* WIN32 */ - - for (i = 0; i < sizeof(data); i ++) -- data[i] = CUPS_RAND(); -+ data[i] = rand(); - - RAND_seed(data, sizeof(data)); --#endif /* HAVE_GNUTLS */ -- -- initialized = 1; -+#endif /* HAVE_LIBSSL */ - } - - -@@ -2834,25 +2800,6 @@ http_read_ssl(http_t *http, /* I - Conn - #endif /* HAVE_SSL */ - - --#if defined(HAVE_LIBSSL) && defined(HAVE_PTHREAD_H) --/* -- * 'http_locking_cb()' - Lock/unlock a thread's mutex. -- */ -- --static void --http_locking_cb(int mode, /* I - Lock mode */ -- int type, /* I - Lock type */ -- const char *file, /* I - Source file */ -- int line) /* I - Line number */ --{ -- if (mode & CRYPTO_LOCK) -- pthread_mutex_lock(http_locks + type); -- else -- pthread_mutex_unlock(http_locks + type); --} --#endif /* HAVE_LIBSSL && HAVE_PTHREAD_H */ -- -- - /* - * 'http_send()' - Send a request with all fields and the trailing blank line. - */ -@@ -3224,19 +3171,6 @@ http_shutdown_ssl(http_t *http) /* I - - #endif /* HAVE_SSL */ - - --#if defined(HAVE_LIBSSL) && defined(HAVE_PTHREAD_H) --/* -- * 'http_threadid_cb()' - Return the current thread ID. -- */ -- --static unsigned long /* O - Thread ID */ --http_threadid_cb(void) --{ -- return ((unsigned long)pthread_self()); --} --#endif /* HAVE_LIBSSL && HAVE_PTHREAD_H */ -- -- - #ifdef HAVE_SSL - /* - * 'http_upgrade()' - Force upgrade to TLS encryption. -diff -Naurp cups-1.4.4-orig/cups/http-private.h cups-1.4.4/cups/http-private.h ---- cups-1.4.4-orig/cups/http-private.h 2010-04-11 23:03:53.000000000 -0500 -+++ cups-1.4.4/cups/http-private.h 2010-09-13 01:27:24.000000000 -0500 -@@ -98,7 +98,6 @@ extern BIO_METHOD *_httpBIOMethods(void) - * The GNU TLS library is more of a "bare metal" SSL/TLS library... - */ - # include <gnutls/gnutls.h> --# include <gcrypt.h> - - typedef struct - { -diff -Naurp cups-1.4.4-orig/scheduler/main.c cups-1.4.4/scheduler/main.c ---- cups-1.4.4-orig/scheduler/main.c 2010-04-23 13:56:34.000000000 -0500 -+++ cups-1.4.4/scheduler/main.c 2010-09-13 01:27:36.000000000 -0500 -@@ -549,8 +549,6 @@ main(int argc, /* I - Number of comm - * Startup the server... - */ - -- httpInitialize(); -- - cupsdStartServer(); - - /* -diff -Naurp cups-1.4.4-orig/scheduler/server.c cups-1.4.4/scheduler/server.c ---- cups-1.4.4-orig/scheduler/server.c 2010-04-11 23:03:53.000000000 -0500 -+++ cups-1.4.4/scheduler/server.c 2010-09-13 01:27:49.000000000 -0500 -@@ -44,6 +44,42 @@ static int started = 0; - void - cupsdStartServer(void) - { -+#ifdef HAVE_LIBSSL -+ int i; /* Looping var */ -+ struct timeval curtime; /* Current time in microseconds */ -+ unsigned char data[1024]; /* Seed data */ -+#endif /* HAVE_LIBSSL */ -+ -+ -+#ifdef HAVE_LIBSSL -+ /* -+ * Initialize the encryption libraries... -+ */ -+ -+ SSL_library_init(); -+ SSL_load_error_strings(); -+ -+ /* -+ * Using the current time is a dubious random seed, but on some systems -+ * it is the best we can do (on others, this seed isn't even used...) -+ */ -+ -+ gettimeofday(&curtime, NULL); -+ srand(curtime.tv_sec + curtime.tv_usec); -+ -+ for (i = 0; i < sizeof(data); i ++) -+ data[i] = rand(); /* Yes, this is a poor source of random data... */ -+ -+ RAND_seed(&data, sizeof(data)); -+#elif defined(HAVE_GNUTLS) -+ /* -+ * Initialize the encryption libraries... -+ */ -+ -+ gnutls_global_init(); -+#endif /* HAVE_LIBSSL */ -+ -+ - /* - * Create the default security profile... - */ |