From 7b959f7f93f691b98daf574b2e0ed102a7ef31daf5eb2919d299c9f321451fc4 Mon Sep 17 00:00:00 2001 From: Johannes Meixner Date: Thu, 24 Jun 2010 16:51:18 +0000 Subject: [PATCH 1/5] Accepting request 42020 from home:jsmeix:branches:Printing Copy from home:jsmeix:branches:Printing/cups via accept of submit request 42020 revision 2. Request was accepted with message: revert cups/http.c to its state in CUPS 1.4.3 as band-aid workaround to avoid bnc#617026 for now OBS-URL: https://build.opensuse.org/request/show/42020 OBS-URL: https://build.opensuse.org/package/show/Printing/cups?expand=0&rev=202 --- cups.changes | 7 + cups.spec | 6 + revert_http.c_to_1.4.3_state.patch | 281 +++++++++++++++++++++++++++++ 3 files changed, 294 insertions(+) create mode 100644 revert_http.c_to_1.4.3_state.patch diff --git a/cups.changes b/cups.changes index 396903e..0c954d2 100644 --- a/cups.changes +++ b/cups.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Thu Jun 24 18:47:59 CEST 2010 - jsmeix@suse.de + +- revert_http.c_to_1.4.3_state.patch reverts cups/http.c + to its state in CUPS 1.4.3 as band-aid workaround to avoid + Novell/Suse Bugzilla bnc#617026 for now. + ------------------------------------------------------------------- Fri Jun 18 09:11:02 CEST 2010 - jsmeix@suse.de diff --git a/cups.spec b/cups.spec index 9658d6f..443f161 100644 --- a/cups.spec +++ b/cups.spec @@ -92,6 +92,9 @@ Patch103: cups-1.4-do_not_strip_recommended_from_PPDs.patch # Patch104 adds the 'allowallforanybody' policy to cupsd.conf # see https://fate.novell.com/303515 Patch104: cups-1.4-additional_policies.patch +# Patch105 reverts cups/http.c to its state in CUPS 1.4.3 as band-aid workaround +# to avoid https://bugzilla.novell.com/show_bug.cgi?id=617026 for now: +Patch105: revert_http.c_to_1.4.3_state.patch # Install into this non-root directory (required when norootforbuild is used): BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -210,6 +213,9 @@ http://www.cups.org %patch103 # Patch104 adds the 'allowallforanybody' policy to cupsd.conf: %patch104 +# Patch105 reverts cups/http.c to its state in CUPS 1.4.3 as band-aid workaround +# to avoid https://bugzilla.novell.com/show_bug.cgi?id=617026 for now: +%patch105 -p1 %build # Disable SILENT run of make so that make runs verbose as usual: diff --git a/revert_http.c_to_1.4.3_state.patch b/revert_http.c_to_1.4.3_state.patch new file mode 100644 index 0000000..05b2826 --- /dev/null +++ b/revert_http.c_to_1.4.3_state.patch @@ -0,0 +1,281 @@ +--- cups-1.4.4/cups/http.c 2010-06-16 07:27:41.000000000 +0200 ++++ cups-1.4.3/cups/http.c 2009-11-14 01:00:59.000000000 +0100 +@@ -1,9 +1,9 @@ + /* +- * "$Id: http.c 9157 2010-06-16 05:27:41Z mike $" ++ * "$Id: http.c 8863 2009-11-14 00:00:59Z mike $" + * +- * HTTP routines for CUPS. ++ * HTTP routines for the Common UNIX Printing System (CUPS). + * +- * Copyright 2007-2010 by Apple Inc. ++ * Copyright 2007-2009 by Apple Inc. + * Copyright 1997-2007 by Easy Software Products, all rights reserved. + * + * This file contains Kerberos support code, copyright 2006 by +@@ -25,8 +25,7 @@ + * server. + * httpClearCookie() - Clear the cookie value(s). + * httpClearFields() - Clear HTTP request fields. +- * httpClose() - Close an HTTP connection. +- * httpConnect() - Connect to a HTTP server. ++ * httpClose() - Close an HTTP connection... + * httpConnectEncrypt() - Connect to a HTTP server using encryption. + * _httpCreate() - Create an unconnected HTTP connection. + * httpDelete() - Send a DELETE request to the server. +@@ -62,7 +61,7 @@ + * _httpReadGNUTLS() - Read function for the GNU TLS library. + * httpReconnect() - Reconnect to a HTTP server. + * httpSetAuthString() - Set the current authorization string. +- * httpSetCookie() - Set the cookie value(s). ++ * httpSetCookie() - Set the cookie value(s)... + * httpSetExpect() - Set the Expect: header in a request. + * httpSetField() - Set the value of an HTTP header. + * httpSetLength() - Set the content-length and content-encoding. +@@ -83,12 +82,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 +143,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 */ + + +@@ -327,7 +311,7 @@ httpClearFields(http_t *http) /* I - Co + + + /* +- * 'httpClose()' - Close an HTTP connection. ++ * 'httpClose()' - Close an HTTP connection... + */ + + void +@@ -575,9 +559,8 @@ httpError(http_t *http) /* I - Connect + void + httpFlush(http_t *http) /* I - Connection to server */ + { +- char buffer[8192]; /* Junk buffer */ +- int blocking; /* To block or not to block */ +- http_state_t oldstate; /* Old state */ ++ char buffer[8192]; /* Junk buffer */ ++ int blocking; /* To block or not to block */ + + + DEBUG_printf(("httpFlush(http=%p), state=%s", http, +@@ -594,7 +577,6 @@ httpFlush(http_t *http) /* I - Connect + * Read any data we can... + */ + +- oldstate = http->state; + while (httpRead2(http, buffer, sizeof(buffer)) > 0); + + /* +@@ -604,7 +586,7 @@ httpFlush(http_t *http) /* I - Connect + + http->blocking = blocking; + +- if (http->state == oldstate && http->state != HTTP_WAITING && http->fd >= 0) ++ if (http->state != HTTP_WAITING && http->fd >= 0) + { + /* + * Didn't get the data back, so close the current connection. +@@ -1188,22 +1170,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... +@@ -1211,7 +1192,6 @@ httpInitialize(void) + + # ifdef HAVE_SIGSET + sigset(SIGPIPE, SIG_IGN); +- + # elif defined(HAVE_SIGACTION) + struct sigaction action; /* POSIX sigaction data */ + +@@ -1219,63 +1199,35 @@ httpInitialize(void) + memset(&action, 0, sizeof(action)); + action.sa_handler = SIG_IGN; + sigaction(SIGPIPE, &action, NULL); +- + # else + signal(SIGPIPE, SIG_IGN); + # endif /* !SO_NOSIGPIPE */ + #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) +- /* +- * Initialize OpenSSL... +- */ +- ++#ifdef HAVE_LIBSSL + SSL_load_error_strings(); + 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 */ + } + + +@@ -1863,7 +1815,7 @@ httpSetAuthString(http_t *http, /* I + + + /* +- * 'httpSetCookie()' - Set the cookie value(s). ++ * 'httpSetCookie()' - Set the cookie value(s)... + * + * @since CUPS 1.1.19/Mac OS X 10.3@ + */ +@@ -2834,25 +2786,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 +3157,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. +@@ -3511,5 +3431,5 @@ http_write_ssl(http_t *http, /* I - + + + /* +- * End of "$Id: http.c 9157 2010-06-16 05:27:41Z mike $". ++ * End of "$Id: http.c 8863 2009-11-14 00:00:59Z mike $". + */ From 19b466a3f5b8c4e28194dde89f12845dd0611c81baa0cc85bda9c9a522303ae6 Mon Sep 17 00:00:00 2001 From: Johannes Meixner Date: Fri, 25 Jun 2010 10:22:19 +0000 Subject: [PATCH 2/5] Accepting request 42043 from home:jsmeix:branches:Printing Copy from home:jsmeix:branches:Printing/cups via accept of submit request 42043 revision 2. Request was accepted with message: revert changes by CUPS STR #3461 as band-aid workaround for now to avoid critical bnc#617026 (Firefox et alii crash) OBS-URL: https://build.opensuse.org/request/show/42043 OBS-URL: https://build.opensuse.org/package/show/Printing/cups?expand=0&rev=203 --- ...h => cups-1.4.4-str3461-1.4.reverted.patch | 195 ++++++++---------- cups.changes | 9 +- cups.spec | 6 +- 3 files changed, 90 insertions(+), 120 deletions(-) rename revert_http.c_to_1.4.3_state.patch => cups-1.4.4-str3461-1.4.reverted.patch (52%) diff --git a/revert_http.c_to_1.4.3_state.patch b/cups-1.4.4-str3461-1.4.reverted.patch similarity index 52% rename from revert_http.c_to_1.4.3_state.patch rename to cups-1.4.4-str3461-1.4.reverted.patch index 05b2826..b444337 100644 --- a/revert_http.c_to_1.4.3_state.patch +++ b/cups-1.4.4-str3461-1.4.reverted.patch @@ -1,38 +1,7 @@ +diff -rup cups-1.4.4/cups/http.c cups-1.4.4-str3461-1.4.patch.reverted/cups/http.c --- cups-1.4.4/cups/http.c 2010-06-16 07:27:41.000000000 +0200 -+++ cups-1.4.3/cups/http.c 2009-11-14 01:00:59.000000000 +0100 -@@ -1,9 +1,9 @@ - /* -- * "$Id: http.c 9157 2010-06-16 05:27:41Z mike $" -+ * "$Id: http.c 8863 2009-11-14 00:00:59Z mike $" - * -- * HTTP routines for CUPS. -+ * HTTP routines for the Common UNIX Printing System (CUPS). - * -- * Copyright 2007-2010 by Apple Inc. -+ * Copyright 2007-2009 by Apple Inc. - * Copyright 1997-2007 by Easy Software Products, all rights reserved. - * - * This file contains Kerberos support code, copyright 2006 by -@@ -25,8 +25,7 @@ - * server. - * httpClearCookie() - Clear the cookie value(s). - * httpClearFields() - Clear HTTP request fields. -- * httpClose() - Close an HTTP connection. -- * httpConnect() - Connect to a HTTP server. -+ * httpClose() - Close an HTTP connection... - * httpConnectEncrypt() - Connect to a HTTP server using encryption. - * _httpCreate() - Create an unconnected HTTP connection. - * httpDelete() - Send a DELETE request to the server. -@@ -62,7 +61,7 @@ - * _httpReadGNUTLS() - Read function for the GNU TLS library. - * httpReconnect() - Reconnect to a HTTP server. - * httpSetAuthString() - Set the current authorization string. -- * httpSetCookie() - Set the cookie value(s). -+ * httpSetCookie() - Set the cookie value(s)... - * httpSetExpect() - Set the Expect: header in a request. - * httpSetField() - Set the value of an HTTP header. - * httpSetLength() - Set the content-length and content-encoding. -@@ -83,12 +82,10 @@ ++++ cups-1.4.4-str3461-1.4.patch.reverted/cups/http.c 2010-06-25 11:02:31.000000000 +0200 +@@ -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. @@ -45,7 +14,7 @@ * 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 +143,6 @@ static int http_setup_ssl(http_t *http) +@@ -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); @@ -65,45 +34,7 @@ #endif /* HAVE_SSL */ -@@ -327,7 +311,7 @@ httpClearFields(http_t *http) /* I - Co - - - /* -- * 'httpClose()' - Close an HTTP connection. -+ * 'httpClose()' - Close an HTTP connection... - */ - - void -@@ -575,9 +559,8 @@ httpError(http_t *http) /* I - Connect - void - httpFlush(http_t *http) /* I - Connection to server */ - { -- char buffer[8192]; /* Junk buffer */ -- int blocking; /* To block or not to block */ -- http_state_t oldstate; /* Old state */ -+ char buffer[8192]; /* Junk buffer */ -+ int blocking; /* To block or not to block */ - - - DEBUG_printf(("httpFlush(http=%p), state=%s", http, -@@ -594,7 +577,6 @@ httpFlush(http_t *http) /* I - Connect - * Read any data we can... - */ - -- oldstate = http->state; - while (httpRead2(http, buffer, sizeof(buffer)) > 0); - - /* -@@ -604,7 +586,7 @@ httpFlush(http_t *http) /* I - Connect - - http->blocking = blocking; - -- if (http->state == oldstate && http->state != HTTP_WAITING && http->fd >= 0) -+ if (http->state != HTTP_WAITING && http->fd >= 0) - { - /* - * Didn't get the data back, so close the current connection. -@@ -1188,22 +1170,21 @@ httpHead(http_t *http, /* I - Conne +@@ -1188,22 +1173,21 @@ httpHead(http_t *http, /* I - Conne void httpInitialize(void) { @@ -115,10 +46,10 @@ - int i; /* Looping var */ - unsigned char data[1024]; /* Seed data */ +# ifndef WIN32 -+ struct timeval curtime; /* Current time in microseconds */ ++ struct timeval curtime; /* Current time in microseconds */ +# endif /* !WIN32 */ -+ int i; /* Looping var */ -+ unsigned char data[1024]; /* Seed data */ ++ int i; /* Looping var */ ++ unsigned char data[1024]; /* Seed data */ #endif /* HAVE_LIBSSL */ - @@ -127,31 +58,16 @@ - #ifdef WIN32 - WSAStartup(MAKEWORD(2,2), &winsockdata); -+ WSADATA winsockdata; /* WinSock data */ -+ static int initialized = 0; /* Has WinSock been initialized? */ -+ ++ 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... -@@ -1211,7 +1192,6 @@ httpInitialize(void) - - # ifdef HAVE_SIGSET - sigset(SIGPIPE, SIG_IGN); -- - # elif defined(HAVE_SIGACTION) - struct sigaction action; /* POSIX sigaction data */ - -@@ -1219,63 +1199,35 @@ httpInitialize(void) - memset(&action, 0, sizeof(action)); - action.sa_handler = SIG_IGN; - sigaction(SIGPIPE, &action, NULL); -- - # else - signal(SIGPIPE, SIG_IGN); - # endif /* !SO_NOSIGPIPE */ +@@ -1226,56 +1210,29 @@ httpInitialize(void) #endif /* WIN32 */ #ifdef HAVE_GNUTLS @@ -217,16 +133,7 @@ } -@@ -1863,7 +1815,7 @@ httpSetAuthString(http_t *http, /* I - - - /* -- * 'httpSetCookie()' - Set the cookie value(s). -+ * 'httpSetCookie()' - Set the cookie value(s)... - * - * @since CUPS 1.1.19/Mac OS X 10.3@ - */ -@@ -2834,25 +2786,6 @@ http_read_ssl(http_t *http, /* I - Conn +@@ -2834,25 +2791,6 @@ http_read_ssl(http_t *http, /* I - Conn #endif /* HAVE_SSL */ @@ -252,7 +159,7 @@ /* * 'http_send()' - Send a request with all fields and the trailing blank line. */ -@@ -3224,19 +3157,6 @@ http_shutdown_ssl(http_t *http) /* I - +@@ -3224,19 +3162,6 @@ http_shutdown_ssl(http_t *http) /* I - #endif /* HAVE_SSL */ @@ -272,10 +179,72 @@ #ifdef HAVE_SSL /* * 'http_upgrade()' - Force upgrade to TLS encryption. -@@ -3511,5 +3431,5 @@ http_write_ssl(http_t *http, /* I - - - - /* -- * End of "$Id: http.c 9157 2010-06-16 05:27:41Z mike $". -+ * End of "$Id: http.c 8863 2009-11-14 00:00:59Z mike $". +diff -rup cups-1.4.4/cups/http-private.h cups-1.4.4-str3461-1.4.patch.reverted/cups/http-private.h +--- cups-1.4.4/cups/http-private.h 2010-04-12 06:03:53.000000000 +0200 ++++ cups-1.4.4-str3461-1.4.patch.reverted/cups/http-private.h 2010-06-25 11:03:34.000000000 +0200 +@@ -98,7 +98,6 @@ extern BIO_METHOD *_httpBIOMethods(void) + * The GNU TLS library is more of a "bare metal" SSL/TLS library... */ + # include +-# include + + typedef struct + { +diff -rup cups-1.4.4/scheduler/main.c cups-1.4.4-str3461-1.4.patch.reverted/scheduler/main.c +--- cups-1.4.4/scheduler/main.c 2010-04-23 20:56:34.000000000 +0200 ++++ cups-1.4.4-str3461-1.4.patch.reverted/scheduler/main.c 2010-06-25 11:14:07.000000000 +0200 +@@ -549,8 +549,6 @@ main(int argc, /* I - Number of comm + * Startup the server... + */ + +- httpInitialize(); +- + cupsdStartServer(); + + /* +diff -rup cups-1.4.4/scheduler/server.c cups-1.4.4-str3461-1.4.patch.reverted/scheduler/server.c +--- cups-1.4.4/scheduler/server.c 2010-04-12 06:03:53.000000000 +0200 ++++ cups-1.4.4-str3461-1.4.patch.reverted/scheduler/server.c 2010-06-25 11:12:52.000000000 +0200 +@@ -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... + */ diff --git a/cups.changes b/cups.changes index 0c954d2..0c4e9db 100644 --- a/cups.changes +++ b/cups.changes @@ -1,9 +1,10 @@ ------------------------------------------------------------------- -Thu Jun 24 18:47:59 CEST 2010 - jsmeix@suse.de +Fri Jun 25 11:28:41 CEST 2010 - jsmeix@suse.de -- revert_http.c_to_1.4.3_state.patch reverts cups/http.c - to its state in CUPS 1.4.3 as band-aid workaround to avoid - Novell/Suse Bugzilla bnc#617026 for now. +- cups-1.4.4-str3461-1.4.reverted.patch reverts changes + by CUPS STR #3461 as band-aid workaround for now to avoid + that Mozilla.org applications crash when they try to print + (STR #3461, STR #3605, and Novell/Suse Bugzilla bnc#617026). ------------------------------------------------------------------- Fri Jun 18 09:11:02 CEST 2010 - jsmeix@suse.de diff --git a/cups.spec b/cups.spec index 443f161..a550d8d 100644 --- a/cups.spec +++ b/cups.spec @@ -92,9 +92,9 @@ Patch103: cups-1.4-do_not_strip_recommended_from_PPDs.patch # Patch104 adds the 'allowallforanybody' policy to cupsd.conf # see https://fate.novell.com/303515 Patch104: cups-1.4-additional_policies.patch -# Patch105 reverts cups/http.c to its state in CUPS 1.4.3 as band-aid workaround +# Patch105 reverts changes by CUPS STR #3461 as band-aid workaround # to avoid https://bugzilla.novell.com/show_bug.cgi?id=617026 for now: -Patch105: revert_http.c_to_1.4.3_state.patch +Patch105: cups-1.4.4-str3461-1.4.reverted.patch # Install into this non-root directory (required when norootforbuild is used): BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -213,7 +213,7 @@ http://www.cups.org %patch103 # Patch104 adds the 'allowallforanybody' policy to cupsd.conf: %patch104 -# Patch105 reverts cups/http.c to its state in CUPS 1.4.3 as band-aid workaround +# Patch105 reverts changes by CUPS STR #3461 as band-aid workaround # to avoid https://bugzilla.novell.com/show_bug.cgi?id=617026 for now: %patch105 -p1 From 7bb7e7c3ee06af81d38ef0155c8e3dd7c96265ce70ae94e883f85342eb94d2fb Mon Sep 17 00:00:00 2001 From: OBS User autobuild Date: Fri, 25 Jun 2010 18:49:11 +0000 Subject: [PATCH 3/5] Accepting request 42045 from Printing checked in (request 42045) OBS-URL: https://build.opensuse.org/request/show/42045 OBS-URL: https://build.opensuse.org/package/show/Printing/cups?expand=0&rev=204 --- cups-1.4.4-str3461-1.4.reverted.patch | 250 -------------------------- cups.changes | 8 - cups.spec | 6 - 3 files changed, 264 deletions(-) delete mode 100644 cups-1.4.4-str3461-1.4.reverted.patch diff --git a/cups-1.4.4-str3461-1.4.reverted.patch b/cups-1.4.4-str3461-1.4.reverted.patch deleted file mode 100644 index b444337..0000000 --- a/cups-1.4.4-str3461-1.4.reverted.patch +++ /dev/null @@ -1,250 +0,0 @@ -diff -rup cups-1.4.4/cups/http.c cups-1.4.4-str3461-1.4.patch.reverted/cups/http.c ---- cups-1.4.4/cups/http.c 2010-06-16 07:27:41.000000000 +0200 -+++ cups-1.4.4-str3461-1.4.patch.reverted/cups/http.c 2010-06-25 11:02:31.000000000 +0200 -@@ -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,56 +1210,29 @@ 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) -- /* -- * Initialize OpenSSL... -- */ -- -+#ifdef HAVE_LIBSSL - SSL_load_error_strings(); - 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 +2791,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 +3162,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 -rup cups-1.4.4/cups/http-private.h cups-1.4.4-str3461-1.4.patch.reverted/cups/http-private.h ---- cups-1.4.4/cups/http-private.h 2010-04-12 06:03:53.000000000 +0200 -+++ cups-1.4.4-str3461-1.4.patch.reverted/cups/http-private.h 2010-06-25 11:03:34.000000000 +0200 -@@ -98,7 +98,6 @@ extern BIO_METHOD *_httpBIOMethods(void) - * The GNU TLS library is more of a "bare metal" SSL/TLS library... - */ - # include --# include - - typedef struct - { -diff -rup cups-1.4.4/scheduler/main.c cups-1.4.4-str3461-1.4.patch.reverted/scheduler/main.c ---- cups-1.4.4/scheduler/main.c 2010-04-23 20:56:34.000000000 +0200 -+++ cups-1.4.4-str3461-1.4.patch.reverted/scheduler/main.c 2010-06-25 11:14:07.000000000 +0200 -@@ -549,8 +549,6 @@ main(int argc, /* I - Number of comm - * Startup the server... - */ - -- httpInitialize(); -- - cupsdStartServer(); - - /* -diff -rup cups-1.4.4/scheduler/server.c cups-1.4.4-str3461-1.4.patch.reverted/scheduler/server.c ---- cups-1.4.4/scheduler/server.c 2010-04-12 06:03:53.000000000 +0200 -+++ cups-1.4.4-str3461-1.4.patch.reverted/scheduler/server.c 2010-06-25 11:12:52.000000000 +0200 -@@ -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... - */ diff --git a/cups.changes b/cups.changes index 0c4e9db..396903e 100644 --- a/cups.changes +++ b/cups.changes @@ -1,11 +1,3 @@ -------------------------------------------------------------------- -Fri Jun 25 11:28:41 CEST 2010 - jsmeix@suse.de - -- cups-1.4.4-str3461-1.4.reverted.patch reverts changes - by CUPS STR #3461 as band-aid workaround for now to avoid - that Mozilla.org applications crash when they try to print - (STR #3461, STR #3605, and Novell/Suse Bugzilla bnc#617026). - ------------------------------------------------------------------- Fri Jun 18 09:11:02 CEST 2010 - jsmeix@suse.de diff --git a/cups.spec b/cups.spec index a550d8d..9658d6f 100644 --- a/cups.spec +++ b/cups.spec @@ -92,9 +92,6 @@ Patch103: cups-1.4-do_not_strip_recommended_from_PPDs.patch # Patch104 adds the 'allowallforanybody' policy to cupsd.conf # see https://fate.novell.com/303515 Patch104: cups-1.4-additional_policies.patch -# Patch105 reverts changes by CUPS STR #3461 as band-aid workaround -# to avoid https://bugzilla.novell.com/show_bug.cgi?id=617026 for now: -Patch105: cups-1.4.4-str3461-1.4.reverted.patch # Install into this non-root directory (required when norootforbuild is used): BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -213,9 +210,6 @@ http://www.cups.org %patch103 # Patch104 adds the 'allowallforanybody' policy to cupsd.conf: %patch104 -# Patch105 reverts changes by CUPS STR #3461 as band-aid workaround -# to avoid https://bugzilla.novell.com/show_bug.cgi?id=617026 for now: -%patch105 -p1 %build # Disable SILENT run of make so that make runs verbose as usual: From cd75ecc8d55ba9429012cb6edbfd9fcfcae9884286ad5b7e5ee82dbcc4a0a551 Mon Sep 17 00:00:00 2001 From: Johannes Meixner Date: Thu, 15 Jul 2010 13:27:42 +0000 Subject: [PATCH 4/5] Accepting request 42968 from home:jsmeix:branches:Printing Copy from home:jsmeix:branches:Printing/cups via accept of submit request 42968 revision 2. Request was accepted with message: Fixed /etc/init.d/cups so that "rccups restart" works again (bnc#622058 caused by fix for bnc#595796) OBS-URL: https://build.opensuse.org/request/show/42968 OBS-URL: https://build.opensuse.org/package/show/Printing/cups?expand=0&rev=205 --- cups-1.4.4-str3461-1.4.reverted.patch | 250 ++++++++++++++++++++++++++ cups.changes | 17 ++ cups.init | 155 ++++++++-------- cups.spec | 8 +- 4 files changed, 350 insertions(+), 80 deletions(-) create mode 100644 cups-1.4.4-str3461-1.4.reverted.patch diff --git a/cups-1.4.4-str3461-1.4.reverted.patch b/cups-1.4.4-str3461-1.4.reverted.patch new file mode 100644 index 0000000..b444337 --- /dev/null +++ b/cups-1.4.4-str3461-1.4.reverted.patch @@ -0,0 +1,250 @@ +diff -rup cups-1.4.4/cups/http.c cups-1.4.4-str3461-1.4.patch.reverted/cups/http.c +--- cups-1.4.4/cups/http.c 2010-06-16 07:27:41.000000000 +0200 ++++ cups-1.4.4-str3461-1.4.patch.reverted/cups/http.c 2010-06-25 11:02:31.000000000 +0200 +@@ -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,56 +1210,29 @@ 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) +- /* +- * Initialize OpenSSL... +- */ +- ++#ifdef HAVE_LIBSSL + SSL_load_error_strings(); + 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 +2791,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 +3162,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 -rup cups-1.4.4/cups/http-private.h cups-1.4.4-str3461-1.4.patch.reverted/cups/http-private.h +--- cups-1.4.4/cups/http-private.h 2010-04-12 06:03:53.000000000 +0200 ++++ cups-1.4.4-str3461-1.4.patch.reverted/cups/http-private.h 2010-06-25 11:03:34.000000000 +0200 +@@ -98,7 +98,6 @@ extern BIO_METHOD *_httpBIOMethods(void) + * The GNU TLS library is more of a "bare metal" SSL/TLS library... + */ + # include +-# include + + typedef struct + { +diff -rup cups-1.4.4/scheduler/main.c cups-1.4.4-str3461-1.4.patch.reverted/scheduler/main.c +--- cups-1.4.4/scheduler/main.c 2010-04-23 20:56:34.000000000 +0200 ++++ cups-1.4.4-str3461-1.4.patch.reverted/scheduler/main.c 2010-06-25 11:14:07.000000000 +0200 +@@ -549,8 +549,6 @@ main(int argc, /* I - Number of comm + * Startup the server... + */ + +- httpInitialize(); +- + cupsdStartServer(); + + /* +diff -rup cups-1.4.4/scheduler/server.c cups-1.4.4-str3461-1.4.patch.reverted/scheduler/server.c +--- cups-1.4.4/scheduler/server.c 2010-04-12 06:03:53.000000000 +0200 ++++ cups-1.4.4-str3461-1.4.patch.reverted/scheduler/server.c 2010-06-25 11:12:52.000000000 +0200 +@@ -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... + */ diff --git a/cups.changes b/cups.changes index 396903e..f75fcce 100644 --- a/cups.changes +++ b/cups.changes @@ -1,3 +1,20 @@ +------------------------------------------------------------------- +Thu Jul 15 15:03:20 CEST 2010 - jsmeix@suse.de + +- Fixed /etc/init.d/cups (cups.init source file) so that stopping + the cupsd waits up to 10 seconds until the cupsd had actually + finished (if not SIGKILL would be sent to it) to make sure + that "rccups restart" and "rccups stop ; rccups start" work + correctly (see Novell/Suse Bugzilla bnc#622058). + +------------------------------------------------------------------- +Fri Jun 25 11:28:41 CEST 2010 - jsmeix@suse.de + +- cups-1.4.4-str3461-1.4.reverted.patch reverts changes + by CUPS STR #3461 as band-aid workaround for now to avoid + that Mozilla.org applications crash when they try to print + (STR #3461, STR #3605, and Novell/Suse Bugzilla bnc#617026). + ------------------------------------------------------------------- Fri Jun 18 09:11:02 CEST 2010 - jsmeix@suse.de diff --git a/cups.init b/cups.init index 526c348..56b330d 100644 --- a/cups.init +++ b/cups.init @@ -1,17 +1,17 @@ -#! /bin/sh +#! /bin/bash # -# Copyright (c) 1995-2001 SuSE GmbH Nuernberg, Germany. -# Copyright (c) 2002 SuSE Linux AG, Nuernberg, Germany. +# Copyright (C) 1995-2001 SuSE GmbH Nuernberg, Germany. +# Copyright (C) 2002 SuSE Linux AG, Nuernberg, Germany. # Copyright (C) 2002--2008 Klaus Singvogel, SUSE / Novell Inc. +# Copyright (C) 2010 Johannes Meixner, SUSE LINUX Products GmbH # -# Author: Kurt Garloff , 2000 -# Klaus Singvogel , 2002--2008 +# Author: Kurt Garloff, 2000 +# Klaus Singvogel, 2002--2008 +# Johannes Meixner, 2010 # -# /etc/init.d/cupsd -# -# and symbolic its link -# -# /sbin/rccupsd +# /etc/init.d/cups +# and its symbolic link +# /usr/sbin/rccups # # System startup script for the CUPS printer daemon # @@ -25,37 +25,10 @@ # Default-Stop: 0 1 6 # Short-Description: CUPS printer daemon # Description: Start CUPS to provide spooling and printing files -# functionality for local and remote printers. Even required if -# printers are broadcasted ("Browsing") into (sub)nets. +# functionality for local and remote printers. Also required if +# printers are broadcasted ("Browsing") by remote CUPS servers. ### END INIT INFO -# Source SuSE config, only if exists with size greater zero -test -s /etc/rc.config && \ - . /etc/rc.config - -# Shell functions sourced from /etc/rc.status: -# rc_check check and set local and overall rc status -# rc_status check and set local and overall rc status -# rc_status -v ditto but be verbose in local rc status -# rc_status -v -r ditto and clear the local rc status -# rc_failed set local and overall rc status to failed -# rc_failed set local and overall rc status to -# rc_reset clear local rc status (overall remains) -# rc_exit exit appropriate to overall rc status - -CUPSD_BIN=/usr/sbin/cupsd - -test -s /etc/rc.status && \ - . /etc/rc.status - -test -s /etc/sysconfig/cups && \ - . /etc/sysconfig/cups - -test -x $CUPSD_BIN || exit 5 - -# First reset status of this service -rc_reset - # Return values acc. to LSB for all commands but status: # 0 - success # 1 - generic or unspecified error @@ -71,89 +44,113 @@ rc_reset # with force-reload (in case signalling is not supported) are # considered a success. -# change umask to avoid problems in wrong file permission of /etc/printcap -# (SuSE buzilla #16567) +# Source SuSE config, only if exists with size greater zero +test -s /etc/rc.config && . /etc/rc.config + +# Shell functions sourced from /etc/rc.status: +# rc_check check and set local and overall rc status +# rc_status check and set local and overall rc status +# rc_status -v ditto but be verbose in local rc status +# rc_status -v -r ditto and clear the local rc status +# rc_failed set local and overall rc status to failed +# rc_failed set local and overall rc status to +# rc_reset clear local rc status (overall remains) +# rc_exit exit appropriate to overall rc status +if test -s /etc/rc.status +then . /etc/rc.status +else exit 1 +fi +# Reset status of this service: +rc_reset + +CUPSD_BIN=/usr/sbin/cupsd +test -x $CUPSD_BIN || exit 5 +# Get CUPSD_OPTIONS +test -s /etc/sysconfig/cups && . /etc/sysconfig/cups + +# Enforce default umask to avoid problems with wrong file permissions +# for example of /etc/printcap (see Novell/Suse Bugzilla bnc#31567). umask 022 case "$1" in start) echo -n "Starting cupsd" - ## Start daemon with startproc(8). If this fails - ## the echo return value is set appropriate. - + ## Start daemon with startproc(8). + ## If this fails the echo return value is set appropriate. # NOTE: startproc return 0, even if service is # already running to match LSB spec. startproc $CUPSD_BIN $CUPSD_OPTIONS - - # Remember status and be verbose + # Remember status and be verbose: rc_status -v ;; stop) echo -n "Shutting down cupsd" - ## Stop daemon with killproc(8) and if this fails - ## set echo the echo return value. - - killproc -TERM $CUPSD_BIN - - # Remember status and be verbose + ## Stop daemon with killproc(8). + ## If this fails the echo return value is set appropriate. + # NOTE: killproc with explicite signal specified + # like "killproc -TERM" sends only SIGTERM and exits + # to match LSB spec. (see Novell/Suse Bugzilla bnc#595796). + # Without explicite signal the default signal SIGTERM is sent + # and afterwards killproc waits by default only up to 5 seconds + # before killproc sends SIGKILL if cupsd has not yet terminated. + # Wait at most 10 seconds until the cupsd does actually no longer run + # so that the cupsd should have sufficient time for its clean up: + killproc -t 10 $CUPSD_BIN + # Remember status and be verbose: rc_status -v ;; try-restart) ## Stop the service and if this succeeds (i.e. the ## service was running before), start it again. ## Note: try-restart is not (yet) part of LSB (as of 0.7.5) - $0 status >/dev/null && $0 restart - - # Remember status and be quiet + $0 status >/dev/null && $0 restart + # Remember status and be quiet: rc_status ;; restart) ## Stop the service and regardless of whether it was ## running or not, start it again. $0 stop + # The above waits at most 10 seconds until the cupsd does actually no longer run + # otherwise "startproc $CUPSD_BIN" would not start a new cupsd + # (see Novell/Suse Bugzilla bnc#622058). + # Start a new cupsd: $0 start - - # Remember status and be quiet + # Remember status and be quiet: rc_status ;; force-reload) - ## Signal the daemon to reload its config. Most daemons - ## do this on signal 1 (SIGHUP). + ## Signal the daemon to reload its config. + ## Most daemons do this on signal 1 (SIGHUP). ## If it does not support it, restart. - - if ps -C cupsd -o user | grep -q '^root$'; then - echo -n "Reload service cupsd" - killproc -HUP $CUPSD_BIN - rc_status -v - else - $0 restart + if ps -C cupsd -o user | grep -q '^root$' + then echo -n "Reload service cupsd" + killproc -HUP $CUPSD_BIN + rc_status -v + else $0 restart fi ;; reload) ## Like force-reload, but if daemon does not support - ## signalling, do nothing (!) - + ## signalling, do nothing. # If it supports signalling: - if ps -C cupsd -o user | grep -q '^root$'; then - echo -n "Reload service cupsd" - killproc -HUP $CUPSD_BIN - rc_status -v - else - echo -n '"reload" not possible in RunAsUser mode - use "restart" instead' - rc_status -s + if ps -C cupsd -o user | grep -q '^root$' + then echo -n "Reload service cupsd" + killproc -HUP $CUPSD_BIN + rc_status -v + else echo -n '"reload" not possible (cupsd does not run as user root) use "restart" instead' + rc_status -s fi ;; status) echo -n "Checking for cupsd: " ## Check status with checkproc(8), if process is running ## checkproc will return with exit status 0. - # Status has a slightly different for the status command: # 0 - service running - # 1 - service dead, but /var/run/ pid file exists + # 1 - service dead, but /var/run/ pid file exists # 2 - service dead, but /var/lock/ lock file exists # 3 - service not running - # NOTE: checkproc returns LSB compliant status values. checkproc $CUPSD_BIN rc_status -v @@ -161,7 +158,6 @@ case "$1" in probe) ## Optional: Probe for the necessity of a reload, ## give out the argument which is required for a reload. - rc_failed 3 ;; *) @@ -170,3 +166,4 @@ case "$1" in ;; esac rc_exit + diff --git a/cups.spec b/cups.spec index 9658d6f..a5d80e5 100644 --- a/cups.spec +++ b/cups.spec @@ -30,7 +30,7 @@ License: GPLv2+ ; LGPLv2.1+ Group: Hardware/Printing Summary: The Common UNIX Printing System Version: 1.4.4 -Release: 1 +Release: 2 # Require the exact matching version-release of the cups-libs sub-package because # non-matching CUPS libraries may let CUPS software crash (e.g. segfault) # because all CUPS software is built from the one same CUPS source tar ball @@ -92,6 +92,9 @@ Patch103: cups-1.4-do_not_strip_recommended_from_PPDs.patch # Patch104 adds the 'allowallforanybody' policy to cupsd.conf # see https://fate.novell.com/303515 Patch104: cups-1.4-additional_policies.patch +# Patch105 reverts changes by CUPS STR #3461 as band-aid workaround +# to avoid https://bugzilla.novell.com/show_bug.cgi?id=617026 for now: +Patch105: cups-1.4.4-str3461-1.4.reverted.patch # Install into this non-root directory (required when norootforbuild is used): BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -210,6 +213,9 @@ http://www.cups.org %patch103 # Patch104 adds the 'allowallforanybody' policy to cupsd.conf: %patch104 +# Patch105 reverts changes by CUPS STR #3461 as band-aid workaround +# to avoid https://bugzilla.novell.com/show_bug.cgi?id=617026 for now: +%patch105 -p1 %build # Disable SILENT run of make so that make runs verbose as usual: From 2c8b2a4e28316cc5ce9c2259f72ee685e12695da2bd7b1e6880fd61fce1ca5bb Mon Sep 17 00:00:00 2001 From: OBS User buildservice-autocommit Date: Mon, 19 Jul 2010 11:32:56 +0000 Subject: [PATCH 5/5] Updating link to change in openSUSE:Factory/cups revision 81.0 OBS-URL: https://build.opensuse.org/package/show/Printing/cups?expand=0&rev=95d8437912780461cfd66951b039cc3f --- cups.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cups.spec b/cups.spec index a5d80e5..dc5d198 100644 --- a/cups.spec +++ b/cups.spec @@ -30,7 +30,7 @@ License: GPLv2+ ; LGPLv2.1+ Group: Hardware/Printing Summary: The Common UNIX Printing System Version: 1.4.4 -Release: 2 +Release: 3 # Require the exact matching version-release of the cups-libs sub-package because # non-matching CUPS libraries may let CUPS software crash (e.g. segfault) # because all CUPS software is built from the one same CUPS source tar ball