[packages/cups] - rel 2; fix http auth for browsers like google chrome

arekm arekm at pld-linux.org
Wed Jun 6 18:59:03 CEST 2018


commit 9f9bc2e945ba6f20a57dc2fd7dbd8020603ff5dd
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date:   Wed Jun 6 18:58:55 2018 +0200

    - rel 2; fix http auth for browsers like google chrome

 cups-bug-5289.patch | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 cups.spec           |  4 +++-
 2 files changed, 57 insertions(+), 1 deletion(-)
---
diff --git a/cups.spec b/cups.spec
index eaa45a3..11bf7b4 100644
--- a/cups.spec
+++ b/cups.spec
@@ -13,7 +13,7 @@ Summary(pl.UTF-8):	Ogólny system druku dla Uniksa
 Summary(pt_BR.UTF-8):	Sistema Unix de Impressão
 Name:		cups
 Version:	2.2.7
-Release:	1
+Release:	2
 Epoch:		1
 License:	LGPL v2 (libraries), GPL v2 (the rest)
 Group:		Applications/Printing
@@ -61,6 +61,7 @@ Patch114:	cups-freebind.patch
 Patch115:	cups-ipp-multifile.patch
 Patch116:	cups-web-devices-timeout.patch
 Patch117:	cups-lspp.patch
+Patch118:	cups-bug-5289.patch
 URL:		http://www.cups.org/
 BuildRequires:	acl-devel
 %{?with_lspp:BuildRequires:	audit-libs-devel}
@@ -294,6 +295,7 @@ Wsparcie dla LPD w serwerze wydruków CUPS.
 %patch115 -p1
 %patch116 -p1
 %patch117 -p1
+%patch118 -p1
 
 %build
 %{__aclocal} -I config-scripts
diff --git a/cups-bug-5289.patch b/cups-bug-5289.patch
new file mode 100644
index 0000000..8324229
--- /dev/null
+++ b/cups-bug-5289.patch
@@ -0,0 +1,54 @@
+From bb10adda6f2f41448d809c3fe86175b5b69cba7b Mon Sep 17 00:00:00 2001
+From: Michael R Sweet <michael.r.sweet at gmail.com>
+Date: Mon, 16 Apr 2018 19:19:13 -0400
+Subject: [PATCH] Try again to mirror fix (Issue #5289)
+
+---
+ scheduler/client.c | 14 +++++++++++++-
+ scheduler/client.h |  1 +
+ 2 files changed, 14 insertions(+), 1 deletion(-)
+
+diff --git a/scheduler/client.c b/scheduler/client.c
+index f68924aa1..1c4760bfd 100644
+--- a/scheduler/client.c
++++ b/scheduler/client.c
+@@ -818,6 +818,18 @@ cupsdReadClient(cupsd_client_t *con)	/* I - Client to read from */
+ 
+   if (status == HTTP_STATUS_OK)
+   {
++   /*
++    * Record whether the client is a web browser.  "Mozilla" was the original
++    * and it seems that every web browser in existence now uses that as the
++    * prefix with additional information identifying *which* browser.
++    *
++    * Chrome (at least) has problems with multiple WWW-Authenticate values in
++    * a single header, so we only report Basic or Negotiate to web browsers and
++    * leave the multiple choices to the native CUPS client...
++    */
++
++    con->is_browser = !strncmp(httpGetField(con->http, HTTP_FIELD_USER_AGENT), "Mozilla/", 8);
++
+     if (httpGetField(con->http, HTTP_FIELD_ACCEPT_LANGUAGE)[0])
+     {
+      /*
+@@ -2361,7 +2373,7 @@ cupsdSendHeader(
+       strlcpy(auth_str, "Negotiate", sizeof(auth_str));
+     }
+ 
+-    if (con->best && auth_type != CUPSD_AUTH_NEGOTIATE &&
++    if (con->best && auth_type != CUPSD_AUTH_NEGOTIATE && !con->is_browser &&
+         !_cups_strcasecmp(httpGetHostname(con->http, NULL, 0), "localhost"))
+     {
+      /*
+diff --git a/scheduler/client.h b/scheduler/client.h
+index 7705f2c59..beddab0cc 100644
+--- a/scheduler/client.h
++++ b/scheduler/client.h
+@@ -30,6 +30,7 @@ struct cupsd_client_s
+   struct timeval	start;		/* Request start time */
+   http_state_t		operation;	/* Request operation */
+   off_t			bytes;		/* Bytes transferred for this request */
++  int			is_browser;	/* Is the client a web browser? */
+   int			type;		/* AuthType for username */
+   char			username[HTTP_MAX_VALUE],
+ 					/* Username from Authorization: line */
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/cups.git/commitdiff/9f9bc2e945ba6f20a57dc2fd7dbd8020603ff5dd



More information about the pld-cvs-commit mailing list