rpms/cups/F-9 cups-str2892.patch,NONE,1.1

Tim Waugh (twaugh) fedora-extras-commits at redhat.com
Sun Aug 3 13:50:22 UTC 2008


Author: twaugh

Update of /cvs/pkgs/rpms/cups/F-9
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv32481

Added Files:
	cups-str2892.patch 
Log Message:
* Sun Aug  3 2008 Tim Waugh <twaugh at redhat.com> 1:1.3.8-1
- 1.3.8.
- Applied patch to fix STR #2892 (bug #453610).
- Removed autoconf requirement by applying autoconf-generated changes
  to patches that caused them.  Affected patches: cups-lspp.
- CVE-2008-1373 patch is no longer needed (applied upstream).
- Mark HTML files and templates config(noreplace) for site-local
  modifications (bug #441719).
- The cups-devel package requires zlib-devel (bug #455192).


cups-str2892.patch:

--- NEW FILE cups-str2892.patch ---
diff -up cups-1.3.7/scheduler/client.c.str2892 cups-1.3.7/scheduler/client.c
--- cups-1.3.7/scheduler/client.c.str2892	2008-02-12 00:20:32.000000000 +0000
+++ cups-1.3.7/scheduler/client.c	2008-08-01 22:18:22.000000000 +0100
@@ -28,6 +28,7 @@
  *   cupsdUpdateCGI()        - Read status messages from CGI scripts and programs.
  *   cupsdWriteClient()      - Write data to a client as needed.
  *   check_if_modified()     - Decode an "If-Modified-Since" line.
+ *   data_ready()            - Check whether data is available from a client.
  *   encrypt_client()        - Enable encryption for the client...
  *   get_cdsa_certificate()  - Convert a keychain name into the CFArrayRef
  *			       required by SSLSetCertificate.
@@ -83,6 +84,7 @@ extern const char *cssmErrorString(int e
 
 static int		check_if_modified(cupsd_client_t *con,
 			                  struct stat *filestats);
+static int		data_ready(cupsd_client_t *con);
 #ifdef HAVE_SSL
 static int		encrypt_client(cupsd_client_t *con);
 #endif /* HAVE_SSL */
@@ -986,8 +988,7 @@ cupsdReadClient(cupsd_client_t *con)	/* 
 	*/
 
         while ((status = httpUpdate(HTTP(con))) == HTTP_CONTINUE)
-	  if (con->http.used == 0 ||
-	      !memchr(con->http.buffer, '\n', con->http.used))
+	  if (!data_ready(con))
 	    break;
 
 	if (status != HTTP_OK && status != HTTP_CONTINUE)
@@ -1884,7 +1885,7 @@ cupsdReadClient(cupsd_client_t *con)	/* 
 	    }
 	  }
         }
-	while (con->http.state == HTTP_PUT_RECV && con->http.used > 0);
+	while (con->http.state == HTTP_PUT_RECV && data_ready(con));
 
         if (con->http.state == HTTP_WAITING)
 	{
@@ -2059,7 +2060,7 @@ cupsdReadClient(cupsd_client_t *con)	/* 
 	    }
 	  }
         }
-	while (con->http.state == HTTP_POST_RECV && con->http.used > 0);
+	while (con->http.state == HTTP_POST_RECV && data_ready(con));
 
 	if (con->http.state == HTTP_POST_SEND)
 	{
@@ -2909,6 +2910,38 @@ check_if_modified(
 }
 
 
+/*
+ * 'data_ready()' - Check whether data is available from a client.
+ */
+
+static int				/* O - 1 if data is ready, 0 otherwise */
+data_ready(cupsd_client_t *con)		/* I - Client */
+{
+  if (con->http.used > 0)
+    return (1);
+#ifdef HAVE_SSL
+  else if (con->http.tls)
+  {
+#  ifdef HAVE_LIBSSL
+    if (SSL_pending((SSL *)(con->http.tls)))
+      return (1);
+#  elif defined(HAVE_GNUTLS)
+    if (gnutls_record_check_pending(((http_tls_t *)(con->http.tls))->session))
+      return (1);
+#  elif defined(HAVE_CDSASSL)
+    size_t bytes;			/* Bytes that are available */
+
+    if (!SSLGetBufferedReadSize(((http_tls_t *)(con->http.tls))->session,
+                                &bytes) && bytes > 0)
+      return (1);
+#  endif /* HAVE_LIBSSL */
+  }
+#endif /* HAVE_SSL */
+
+  return (0);
+}
+
+
 #ifdef HAVE_SSL
 /*
  * 'encrypt_client()' - Enable encryption for the client...




More information about the fedora-extras-commits mailing list