Compare commits
11 Commits
Author | SHA1 | Date |
---|---|---|
Zdenek Dohnal | 302ef5ca7a | |
Zdenek Dohnal | 9fab8ac248 | |
Zdenek Dohnal | dc84c8d46a | |
Zdenek Dohnal | b737bed5ac | |
Zdenek Dohnal | 3e3a1ad4d3 | |
Zdenek Dohnal | 3e80a27b81 | |
Zdenek Dohnal | e88cea2bbe | |
Zdenek Dohnal | 6e358e5eae | |
Zdenek Dohnal | 7f39b72910 | |
Zdenek Dohnal | a8184c9497 | |
Zdenek Dohnal | 7e7fb66ae5 |
|
@ -0,0 +1,10 @@
|
|||
diff --git a/scheduler/org.cups.cupsd.service.in b/scheduler/org.cups.cupsd.service.in
|
||||
index bf308a5..add238b 100644
|
||||
--- a/scheduler/org.cups.cupsd.service.in
|
||||
+++ b/scheduler/org.cups.cupsd.service.in
|
||||
@@ -10,4 +10,4 @@ Restart=on-failure
|
||||
|
||||
[Install]
|
||||
Also=cups.socket cups.path
|
||||
-WantedBy=printer.target
|
||||
+WantedBy=printer.target multi-user.target
|
|
@ -0,0 +1,335 @@
|
|||
diff --git a/cups/cups-private.h b/cups/cups-private.h
|
||||
index 4ec4e68..f436e3e 100644
|
||||
--- a/cups/cups-private.h
|
||||
+++ b/cups/cups-private.h
|
||||
@@ -64,6 +64,7 @@ typedef struct _cups_globals_s /**** CUPS global state data ****/
|
||||
*cups_serverroot,
|
||||
/* CUPS_SERVERROOT environment var */
|
||||
*cups_statedir, /* CUPS_STATEDIR environment var */
|
||||
+ *home, /* HOME environment var */
|
||||
*localedir; /* LOCALDIR environment var */
|
||||
|
||||
/* adminutil.c */
|
||||
diff --git a/cups/dest.c b/cups/dest.c
|
||||
index fd635b1..bc07eb1 100644
|
||||
--- a/cups/dest.c
|
||||
+++ b/cups/dest.c
|
||||
@@ -1752,7 +1752,6 @@ cupsGetNamedDest(http_t *http, /* I - Connection to server or @code CUPS_HTT
|
||||
cups_dest_t *dest; /* Destination */
|
||||
char filename[1024], /* Path to lpoptions */
|
||||
defname[256]; /* Default printer name */
|
||||
- const char *home = getenv("HOME"); /* Home directory */
|
||||
int set_as_default = 0; /* Set returned destination as default */
|
||||
ipp_op_t op = IPP_OP_GET_PRINTER_ATTRIBUTES;
|
||||
/* IPP operation to get server ops */
|
||||
@@ -1784,13 +1783,13 @@ cupsGetNamedDest(http_t *http, /* I - Connection to server or @code CUPS_HTT
|
||||
else
|
||||
instance = NULL;
|
||||
}
|
||||
- else if (home)
|
||||
+ else if (cg->home)
|
||||
{
|
||||
/*
|
||||
* No default in the environment, try the user's lpoptions files...
|
||||
*/
|
||||
|
||||
- snprintf(filename, sizeof(filename), "%s/.cups/lpoptions", home);
|
||||
+ snprintf(filename, sizeof(filename), "%s/.cups/lpoptions", cg->home);
|
||||
|
||||
dest_name = cups_get_default(filename, defname, sizeof(defname), &instance);
|
||||
|
||||
@@ -1896,9 +1895,9 @@ cupsGetNamedDest(http_t *http, /* I - Connection to server or @code CUPS_HTT
|
||||
snprintf(filename, sizeof(filename), "%s/lpoptions", cg->cups_serverroot);
|
||||
cups_get_dests(filename, dest_name, instance, 0, 1, 1, &dest);
|
||||
|
||||
- if (home)
|
||||
+ if (cg->home)
|
||||
{
|
||||
- snprintf(filename, sizeof(filename), "%s/.cups/lpoptions", home);
|
||||
+ snprintf(filename, sizeof(filename), "%s/.cups/lpoptions", cg->home);
|
||||
|
||||
cups_get_dests(filename, dest_name, instance, 0, 1, 1, &dest);
|
||||
}
|
||||
@@ -2036,9 +2035,6 @@ cupsSetDests2(http_t *http, /* I - Connection to server or @code CUPS_HTTP_
|
||||
cups_option_t *option; /* Current option */
|
||||
_ipp_option_t *match; /* Matching attribute for option */
|
||||
FILE *fp; /* File pointer */
|
||||
-#ifndef _WIN32
|
||||
- const char *home; /* HOME environment variable */
|
||||
-#endif /* _WIN32 */
|
||||
char filename[1024]; /* lpoptions file */
|
||||
int num_temps; /* Number of temporary destinations */
|
||||
cups_dest_t *temps = NULL, /* Temporary destinations */
|
||||
@@ -2072,27 +2068,18 @@ cupsSetDests2(http_t *http, /* I - Connection to server or @code CUPS_HTTP_
|
||||
|
||||
snprintf(filename, sizeof(filename), "%s/lpoptions", cg->cups_serverroot);
|
||||
|
||||
-#ifndef _WIN32
|
||||
- if (getuid())
|
||||
+ if (cg->home)
|
||||
{
|
||||
/*
|
||||
- * Point to user defaults...
|
||||
+ * Create ~/.cups subdirectory...
|
||||
*/
|
||||
|
||||
- if ((home = getenv("HOME")) != NULL)
|
||||
- {
|
||||
- /*
|
||||
- * Create ~/.cups subdirectory...
|
||||
- */
|
||||
+ snprintf(filename, sizeof(filename), "%s/.cups", cg->home);
|
||||
+ if (access(filename, 0))
|
||||
+ mkdir(filename, 0700);
|
||||
|
||||
- snprintf(filename, sizeof(filename), "%s/.cups", home);
|
||||
- if (access(filename, 0))
|
||||
- mkdir(filename, 0700);
|
||||
-
|
||||
- snprintf(filename, sizeof(filename), "%s/.cups/lpoptions", home);
|
||||
- }
|
||||
+ snprintf(filename, sizeof(filename), "%s/.cups/lpoptions", cg->home);
|
||||
}
|
||||
-#endif /* !_WIN32 */
|
||||
|
||||
/*
|
||||
* Try to open the file...
|
||||
@@ -2273,7 +2260,7 @@ _cupsUserDefault(char *name, /* I - Name buffer */
|
||||
* system preferences...
|
||||
*/
|
||||
|
||||
- if ((locprinter = _cupsAppleCopyDefaultPrinter()) != NULL)
|
||||
+ if (!getenv("CUPS_NO_APPLE_DEFAULT") && (locprinter = _cupsAppleCopyDefaultPrinter()) != NULL)
|
||||
{
|
||||
CFStringGetCString(locprinter, name, (CFIndex)namesize, kCFStringEncodingUTF8);
|
||||
CFRelease(locprinter);
|
||||
@@ -3396,10 +3383,9 @@ cups_enum_dests(
|
||||
int i, j, /* Looping vars */
|
||||
num_dests; /* Number of destinations */
|
||||
cups_dest_t *dests = NULL, /* Destinations */
|
||||
- *dest, /* Current destination */
|
||||
- *user_dest; /* User destination */
|
||||
+ *dest; /* Current destination */
|
||||
cups_option_t *option; /* Current option */
|
||||
- char *user_default; /* User default printer */
|
||||
+ const char *user_default; /* Default printer from environment */
|
||||
#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
|
||||
int count, /* Number of queries started */
|
||||
completed, /* Number of completed queries */
|
||||
@@ -3430,7 +3416,6 @@ cups_enum_dests(
|
||||
#else
|
||||
_cups_getdata_t data; /* Data for callback */
|
||||
#endif /* HAVE_DNSSD || HAVE_AVAHI */
|
||||
- const char *home; /* HOME environment variable */
|
||||
char filename[1024]; /* Local lpoptions file */
|
||||
_cups_globals_t *cg = _cupsGlobals(); /* Pointer to library globals */
|
||||
|
||||
@@ -3455,13 +3440,35 @@ cups_enum_dests(
|
||||
|
||||
memset(&data, 0, sizeof(data));
|
||||
|
||||
- if ((user_default = _cupsUserDefault(data.def_name, sizeof(data.def_name))) == NULL)
|
||||
+ user_default = _cupsUserDefault(data.def_name, sizeof(data.def_name));
|
||||
+
|
||||
+ snprintf(filename, sizeof(filename), "%s/lpoptions", cg->cups_serverroot);
|
||||
+ data.num_dests = cups_get_dests(filename, NULL, NULL, 1, user_default != NULL, data.num_dests, &data.dests);
|
||||
+
|
||||
+ if (cg->home)
|
||||
{
|
||||
- const char *defprinter = cupsGetDefault2(http);
|
||||
- /* Server default, if any */
|
||||
+ snprintf(filename, sizeof(filename), "%s/.cups/lpoptions", cg->home);
|
||||
|
||||
- if (defprinter)
|
||||
- strlcpy(data.def_name, defprinter, sizeof(data.def_name));
|
||||
+ data.num_dests = cups_get_dests(filename, NULL, NULL, 1, user_default != NULL, data.num_dests, &data.dests);
|
||||
+ }
|
||||
+
|
||||
+ if (!user_default && (dest = cupsGetDest(NULL, NULL, data.num_dests, data.dests)) != NULL)
|
||||
+ {
|
||||
+ /*
|
||||
+ * Use an lpoptions default printer...
|
||||
+ */
|
||||
+
|
||||
+ if (dest->instance)
|
||||
+ snprintf(data.def_name, sizeof(data.def_name), "%s/%s", dest->name, dest->instance);
|
||||
+ else
|
||||
+ strlcpy(data.def_name, dest->name, sizeof(data.def_name));
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ const char *default_printer; /* Server default printer */
|
||||
+
|
||||
+ if ((default_printer = cupsGetDefault2(http)) != NULL)
|
||||
+ strlcpy(data.def_name, default_printer, sizeof(data.def_name));
|
||||
}
|
||||
|
||||
if (data.def_name[0])
|
||||
@@ -3476,16 +3483,6 @@ cups_enum_dests(
|
||||
|
||||
DEBUG_printf(("1cups_enum_dests: def_name=\"%s\", def_instance=\"%s\"", data.def_name, data.def_instance));
|
||||
|
||||
- snprintf(filename, sizeof(filename), "%s/lpoptions", cg->cups_serverroot);
|
||||
- data.num_dests = cups_get_dests(filename, NULL, NULL, 1, user_default != NULL, data.num_dests, &data.dests);
|
||||
-
|
||||
- if ((home = getenv("HOME")) != NULL)
|
||||
- {
|
||||
- snprintf(filename, sizeof(filename), "%s/.cups/lpoptions", home);
|
||||
-
|
||||
- data.num_dests = cups_get_dests(filename, NULL, NULL, 1, user_default != NULL, data.num_dests, &data.dests);
|
||||
- }
|
||||
-
|
||||
/*
|
||||
* Get ready to enumerate...
|
||||
*/
|
||||
@@ -3523,8 +3520,9 @@ cups_enum_dests(
|
||||
i > 0 && (!cancel || !*cancel);
|
||||
i --, dest ++)
|
||||
{
|
||||
+ cups_dest_t *user_dest; /* Destination from lpoptions */
|
||||
#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
|
||||
- const char *device_uri; /* Device URI */
|
||||
+ const char *device_uri; /* Device URI */
|
||||
#endif /* HAVE_DNSSD || HAVE_AVAHI */
|
||||
|
||||
if ((user_dest = cupsGetDest(dest->name, dest->instance, data.num_dests, data.dests)) != NULL)
|
||||
@@ -3793,6 +3791,8 @@ cups_enum_dests(
|
||||
|
||||
if ((device->type & mask) == type)
|
||||
{
|
||||
+ cups_dest_t *user_dest; /* Destination from lpoptions */
|
||||
+
|
||||
dest = &device->dest;
|
||||
|
||||
if ((user_dest = cupsGetDest(dest->name, dest->instance, data.num_dests, data.dests)) != NULL)
|
||||
diff --git a/cups/globals.c b/cups/globals.c
|
||||
index 28c993b..3882b78 100644
|
||||
--- a/cups/globals.c
|
||||
+++ b/cups/globals.c
|
||||
@@ -18,6 +18,9 @@
|
||||
*/
|
||||
|
||||
#include "cups-private.h"
|
||||
+#ifndef _WIN32
|
||||
+# include <pwd.h>
|
||||
+#endif /* !_WIN32 */
|
||||
|
||||
|
||||
/*
|
||||
@@ -276,6 +279,8 @@ cups_globals_alloc(void)
|
||||
if ((cg->localedir = getenv("LOCALEDIR")) == NULL)
|
||||
cg->localedir = localedir;
|
||||
|
||||
+ cg->home = getenv("HOME");
|
||||
+
|
||||
#else
|
||||
# ifdef HAVE_GETEUID
|
||||
if ((geteuid() != getuid() && getuid()) || getegid() != getgid())
|
||||
@@ -314,6 +319,18 @@ cups_globals_alloc(void)
|
||||
|
||||
if ((cg->localedir = getenv("LOCALEDIR")) == NULL)
|
||||
cg->localedir = CUPS_LOCALEDIR;
|
||||
+
|
||||
+# ifndef __APPLE__ /* Sandboxing now exposes the container as the home directory */
|
||||
+ cg->home = getenv("HOME");
|
||||
+#endif /* !__APPLE__ */
|
||||
+ }
|
||||
+
|
||||
+ if (!cg->home)
|
||||
+ {
|
||||
+ struct passwd *pw; /* User info */
|
||||
+
|
||||
+ if ((pw = getpwuid(getuid())) != NULL)
|
||||
+ cg->home = _cupsStrAlloc(pw->pw_dir);
|
||||
}
|
||||
#endif /* _WIN32 */
|
||||
|
||||
diff --git a/cups/tls-darwin.c b/cups/tls-darwin.c
|
||||
index c4f0ccb..f2259fe 100644
|
||||
--- a/cups/tls-darwin.c
|
||||
+++ b/cups/tls-darwin.c
|
||||
@@ -1935,7 +1935,8 @@ static const char * /* O - Keychain path */
|
||||
http_cdsa_default_path(char *buffer, /* I - Path buffer */
|
||||
size_t bufsize) /* I - Size of buffer */
|
||||
{
|
||||
- const char *home = getenv("HOME"); /* HOME environment variable */
|
||||
+ _cups_globals_t *cg = _cupsGlobals();
|
||||
+ /* Pointer to library globals */
|
||||
|
||||
|
||||
/*
|
||||
@@ -1944,8 +1945,8 @@ http_cdsa_default_path(char *buffer, /* I - Path buffer */
|
||||
* 10.11.4 (!), so we need to create our own keychain just for CUPS.
|
||||
*/
|
||||
|
||||
- if (getuid() && home)
|
||||
- snprintf(buffer, bufsize, "%s/.cups/ssl.keychain", home);
|
||||
+ if (cg->home)
|
||||
+ snprintf(buffer, bufsize, "%s/.cups/ssl.keychain", cg->home);
|
||||
else
|
||||
strlcpy(buffer, "/etc/cups/ssl.keychain", bufsize);
|
||||
|
||||
diff --git a/cups/tls-gnutls.c b/cups/tls-gnutls.c
|
||||
index 1dc1b2a..c195c63 100644
|
||||
--- a/cups/tls-gnutls.c
|
||||
+++ b/cups/tls-gnutls.c
|
||||
@@ -931,12 +931,13 @@ static const char * /* O - Path or NULL on error */
|
||||
http_gnutls_default_path(char *buffer,/* I - Path buffer */
|
||||
size_t bufsize)/* I - Size of path buffer */
|
||||
{
|
||||
- const char *home = getenv("HOME"); /* HOME environment variable */
|
||||
+ _cups_globals_t *cg = _cupsGlobals();
|
||||
+ /* Pointer to library globals */
|
||||
|
||||
|
||||
- if (getuid() && home)
|
||||
+ if (cg->home)
|
||||
{
|
||||
- snprintf(buffer, bufsize, "%s/.cups", home);
|
||||
+ snprintf(buffer, bufsize, "%s/.cups", cg->home);
|
||||
if (access(buffer, 0))
|
||||
{
|
||||
DEBUG_printf(("1http_gnutls_default_path: Making directory \"%s\".", buffer));
|
||||
@@ -947,7 +948,7 @@ http_gnutls_default_path(char *buffer,/* I - Path buffer */
|
||||
}
|
||||
}
|
||||
|
||||
- snprintf(buffer, bufsize, "%s/.cups/ssl", home);
|
||||
+ snprintf(buffer, bufsize, "%s/.cups/ssl", cg->home);
|
||||
if (access(buffer, 0))
|
||||
{
|
||||
DEBUG_printf(("1http_gnutls_default_path: Making directory \"%s\".", buffer));
|
||||
diff --git a/cups/usersys.c b/cups/usersys.c
|
||||
index 781f27b..2a57aa9 100644
|
||||
--- a/cups/usersys.c
|
||||
+++ b/cups/usersys.c
|
||||
@@ -877,7 +877,6 @@ void
|
||||
_cupsSetDefaults(void)
|
||||
{
|
||||
cups_file_t *fp; /* File */
|
||||
- const char *home; /* Home directory of user */
|
||||
char filename[1024]; /* Filename */
|
||||
_cups_client_conf_t cc; /* client.conf values */
|
||||
_cups_globals_t *cg = _cupsGlobals(); /* Pointer to library globals */
|
||||
@@ -903,19 +902,13 @@ _cupsSetDefaults(void)
|
||||
cupsFileClose(fp);
|
||||
}
|
||||
|
||||
-# ifdef HAVE_GETEUID
|
||||
- if ((geteuid() == getuid() || !getuid()) && getegid() == getgid() && (home = getenv("HOME")) != NULL)
|
||||
-# elif !defined(_WIN32)
|
||||
- if (getuid() && (home = getenv("HOME")) != NULL)
|
||||
-# else
|
||||
- if ((home = getenv("HOME")) != NULL)
|
||||
-# endif /* HAVE_GETEUID */
|
||||
+ if (cg->home)
|
||||
{
|
||||
/*
|
||||
* Look for ~/.cups/client.conf...
|
||||
*/
|
||||
|
||||
- snprintf(filename, sizeof(filename), "%s/.cups/client.conf", home);
|
||||
+ snprintf(filename, sizeof(filename), "%s/.cups/client.conf", cg->home);
|
||||
if ((fp = cupsFileOpen(filename, "r")) != NULL)
|
||||
{
|
||||
cups_read_client_conf(fp, &cc);
|
|
@ -0,0 +1,25 @@
|
|||
diff --git a/cups/http-addrlist.c b/cups/http-addrlist.c
|
||||
index e4ffc3d..a989055 100644
|
||||
--- a/cups/http-addrlist.c
|
||||
+++ b/cups/http-addrlist.c
|
||||
@@ -240,7 +240,10 @@ httpAddrConnect2(
|
||||
}
|
||||
|
||||
if (!addrlist && nfds == 0)
|
||||
+ {
|
||||
+ errno = EHOSTDOWN;
|
||||
break;
|
||||
+ }
|
||||
|
||||
/*
|
||||
* See if we can connect to any of the addresses so far...
|
||||
@@ -371,6 +374,9 @@ httpAddrConnect2(
|
||||
remaining -= 250;
|
||||
}
|
||||
|
||||
+ if (remaining <= 0)
|
||||
+ errno = ETIMEDOUT;
|
||||
+
|
||||
while (nfds > 0)
|
||||
{
|
||||
nfds --;
|
|
@ -0,0 +1,35 @@
|
|||
diff --git a/test/ipptool.c b/test/ipptool.c
|
||||
index 703e681..bfff1f1 100644
|
||||
--- a/test/ipptool.c
|
||||
+++ b/test/ipptool.c
|
||||
@@ -201,6 +201,7 @@ main(int argc, /* I - Number of command-line args */
|
||||
name[1024], /* Name/value buffer */
|
||||
*value, /* Pointer to value */
|
||||
filename[1024], /* Real filename */
|
||||
+ resolved[1024], /* Resolved mDNS URI */
|
||||
testname[1024], /* Real test filename */
|
||||
uri[1024]; /* Copy of printer URI */
|
||||
const char *ext, /* Extension on filename */
|
||||
@@ -609,6 +610,22 @@ main(int argc, /* I - Number of command-line args */
|
||||
#endif /* HAVE_SSL */
|
||||
|
||||
vars.uri = argv[i];
|
||||
+
|
||||
+ if (strstr(vars.uri, "._tcp"))
|
||||
+ {
|
||||
+ /*
|
||||
+ * Resolve URI...
|
||||
+ */
|
||||
+
|
||||
+ if (!_httpResolveURI(vars.uri, resolved, sizeof(resolved), _HTTP_RESOLVE_DEFAULT, NULL, NULL))
|
||||
+ {
|
||||
+ _cupsLangPrintf(stderr, _("%s: Unable to resolve \"%s\"."), "ipptool", vars.uri);
|
||||
+ return (NULL);
|
||||
+ }
|
||||
+
|
||||
+ vars.uri = resolved;
|
||||
+ }
|
||||
+
|
||||
uri_status = httpSeparateURI(HTTP_URI_CODING_ALL, vars.uri,
|
||||
vars.scheme, sizeof(vars.scheme),
|
||||
vars.userpass, sizeof(vars.userpass),
|
|
@ -0,0 +1,13 @@
|
|||
diff --git a/cups/ppd-cache.c b/cups/ppd-cache.c
|
||||
index b1b53e4..84a1b88 100644
|
||||
--- a/cups/ppd-cache.c
|
||||
+++ b/cups/ppd-cache.c
|
||||
@@ -3179,7 +3179,7 @@ _ppdCreateFromIPP(char *buffer, /* I - Filename buffer */
|
||||
cupsFilePuts(fp, "*cupsFilter2: \"application/vnd.cups-pdf application/pdf 10 -\"\n");
|
||||
}
|
||||
else
|
||||
- cupsFilePuts(fp, "*cupsManualCopies: true\n");
|
||||
+ cupsFilePuts(fp, "*cupsManualCopies: True\n");
|
||||
if (is_apple)
|
||||
cupsFilePuts(fp, "*cupsFilter2: \"image/urf image/urf 100 -\"\n");
|
||||
if (is_pwg)
|
|
@ -0,0 +1,42 @@
|
|||
diff --git a/cups/ppd.c b/cups/ppd.c
|
||||
index ff52df2e..199cf034 100644
|
||||
--- a/cups/ppd.c
|
||||
+++ b/cups/ppd.c
|
||||
@@ -1719,8 +1719,7 @@ _ppdOpen(
|
||||
constraint->choice1, constraint->option2,
|
||||
constraint->choice2))
|
||||
{
|
||||
- case 0 : /* Error */
|
||||
- case 1 : /* Error */
|
||||
+ default : /* Error */
|
||||
pg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
|
||||
goto error;
|
||||
|
||||
diff --git a/ppdc/ppdc-source.cxx b/ppdc/ppdc-source.cxx
|
||||
index c25d4966..236c00db 100644
|
||||
--- a/ppdc/ppdc-source.cxx
|
||||
+++ b/ppdc/ppdc-source.cxx
|
||||
@@ -1743,15 +1743,17 @@ ppdcSource::get_resolution(ppdcFile *fp)// I - File to read
|
||||
|
||||
switch (sscanf(name, "%dx%d", &xdpi, &ydpi))
|
||||
{
|
||||
- case 0 :
|
||||
- _cupsLangPrintf(stderr,
|
||||
- _("ppdc: Bad resolution name \"%s\" on line %d of "
|
||||
- "%s."), name, fp->line, fp->filename);
|
||||
- break;
|
||||
case 1 :
|
||||
ydpi = xdpi;
|
||||
break;
|
||||
- }
|
||||
+ case 2 :
|
||||
+ break;
|
||||
+ default :
|
||||
+ _cupsLangPrintf(stderr,
|
||||
+ _("ppdc: Bad resolution name \"%s\" on line %d of "
|
||||
+ "%s."), name, fp->line, fp->filename);
|
||||
+ break;
|
||||
+}
|
||||
|
||||
// Create the necessary PS commands...
|
||||
snprintf(command, sizeof(command),
|
|
@ -0,0 +1,13 @@
|
|||
diff --git a/cgi-bin/admin.c b/cgi-bin/admin.c
|
||||
index a87e6be..4600d33 100644
|
||||
--- a/cgi-bin/admin.c
|
||||
+++ b/cgi-bin/admin.c
|
||||
@@ -974,6 +974,8 @@ do_am_printer(http_t *http, /* I - HTTP connection */
|
||||
|
||||
cgiSetVariable("TEMPLATE_NAME", template);
|
||||
}
|
||||
+
|
||||
+ cgiSetVariable("DEVICE_URI", var);
|
||||
}
|
||||
}
|
||||
|
74
cups.spec
74
cups.spec
|
@ -15,7 +15,7 @@ Summary: CUPS printing system
|
|||
Name: cups
|
||||
Epoch: 1
|
||||
Version: 2.2.12
|
||||
Release: 3%{?dist}
|
||||
Release: 11%{?dist}
|
||||
License: GPLv2+ and LGPLv2+ with exceptions and AML
|
||||
Url: http://www.cups.org/
|
||||
Source0: https://github.com/apple/cups/releases/download/v%{VERSION}/cups-%{VERSION}-source.tar.gz
|
||||
|
@ -73,7 +73,7 @@ Patch25: cups-systemd-socket.patch
|
|||
Patch30: cups-freebind.patch
|
||||
# add support of multifile
|
||||
Patch35: cups-ipp-multifile.patch
|
||||
# prolongs web ui timeout
|
||||
# prolongs web ui timeout
|
||||
Patch36: cups-web-devices-timeout.patch
|
||||
# needs to be set to Yes to avoid race conditions
|
||||
Patch37: cups-synconclose.patch
|
||||
|
@ -104,6 +104,23 @@ Patch41: 0001-SIGSEGV-in-CUPS-web-ui-when-adding-a-printer.patch
|
|||
# parser ended with error when encountered it. Now the parser adds underscore to incorrect
|
||||
# keyword and continues
|
||||
Patch42: 0001-PPD-files-containing-custom-option-keywords-did-not-.patch
|
||||
# 1808409 - the default printer for the system set with lpoptions is being ignored
|
||||
Patch43: cups-default-lpoptions.patch
|
||||
# 1822154 - cups.service doesn't execute automatically on request
|
||||
# https://github.com/apple/cups/issues/5708
|
||||
Patch44: cups-autostart-when-enabled.patch
|
||||
# 1826330 - CVE-2020-3898 cups: heap based buffer overflow in libcups's ppdFindOption() in ppd-mark.c
|
||||
Patch45: cups-ppdopen-heap-overflow.patch
|
||||
# 1838455 - ipp/socket backends connect to turned off device for eternity (contimeout is not applied)
|
||||
Patch46: cups-etimedout.patch
|
||||
# web ui sets bad uri when creating print queue vie web ui
|
||||
# https://github.com/apple/cups/pull/5792
|
||||
Patch47: cups-webui-uri.patch
|
||||
# ipptool doesn't support mdns uris
|
||||
Patch48: cups-ipptool-mdns-uri.patch
|
||||
# ppd generator creates invalid cupsManualCopies entry, causing
|
||||
# copies being ignored in driverless printing
|
||||
Patch49: cups-manual-copies.patch
|
||||
|
||||
##### Patches removed because IMHO they aren't no longer needed
|
||||
##### but still I'll leave them in git in case their removal
|
||||
|
@ -353,6 +370,17 @@ Sends IPP requests to the specified URI and tests and/or displays the results.
|
|||
%patch41 -p1 -b .webui-sigsegv
|
||||
# 1750904 - cups is unable to add ppd with custom/Custom option
|
||||
%patch42 -p1 -b .ppd-custom-option
|
||||
# 1808409 - the default printer for the system set with lpoptions is being ignored
|
||||
%patch43 -p1 -b .default-lpoptions
|
||||
# 1822154 - cups.service doesn't execute automatically on request
|
||||
%patch44 -p1 -b .autostart-when-enabled
|
||||
# 1826330 - CVE-2020-3898 cups: heap based buffer overflow in libcups's ppdFindOption() in ppd-mark.c
|
||||
%patch45 -p1 -b .ppdopen-heap-overflow
|
||||
# 1838455 - ipp/socket backends connect to turned off device for eternity (contimeout is not applied)
|
||||
%patch46 -p1 -b .etimedout
|
||||
%patch47 -p1 -b .webui-uri
|
||||
%patch48 -p1 -b .ipptool-mdns-uri
|
||||
%patch49 -p1 -b .manual-copies
|
||||
|
||||
# if cupsd is set to log into /var/log/cups, then 'MaxLogSize 0' needs to be
|
||||
# in cupsd.conf to disable cupsd logrotate functionality and use logrotated
|
||||
|
@ -405,6 +433,7 @@ export CFLAGS="$RPM_OPT_FLAGS -fstack-protector-all -DLDAP_DEPRECATED=1"
|
|||
--with-xinetd=no \
|
||||
--with-access-log-level=actions \
|
||||
--enable-page-logging \
|
||||
--with-rundir=%{_rundir}/cups \
|
||||
localedir=%{_datadir}/locale
|
||||
|
||||
# If we got this far, all prerequisite libraries must be here.
|
||||
|
@ -476,8 +505,8 @@ mkdir -p ${RPM_BUILD_ROOT}%{_tmpfilesdir}
|
|||
cat > ${RPM_BUILD_ROOT}%{_tmpfilesdir}/cups.conf <<EOF
|
||||
# See tmpfiles.d(5) for details
|
||||
|
||||
d /run/cups 0755 root lp -
|
||||
d /run/cups/certs 0511 lp sys -
|
||||
d %{_rundir}/cups 0755 root lp -
|
||||
d %{_rundir}/cups/certs 0511 lp sys -
|
||||
|
||||
d /var/spool/cups/tmp - - - 30d
|
||||
EOF
|
||||
|
@ -551,6 +580,12 @@ do
|
|||
done
|
||||
%endif
|
||||
|
||||
# needed for #1822154 for upgrade path, remove in newer releases
|
||||
if [ -e /etc/systemd/system/printer.target.wants/cups.service ]
|
||||
then
|
||||
%{_bindir}/systemctl enable cups.service > /dev/null 2>&1
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
||||
%post client
|
||||
|
@ -613,8 +648,8 @@ rm -f %{cups_serverbin}/backend/smb
|
|||
%files -f %{name}.lang
|
||||
%doc README.md CREDITS.md CHANGES.md
|
||||
%dir %attr(0755,root,lp) %{_sysconfdir}/cups
|
||||
%dir %attr(0755,root,lp) %{_localstatedir}/run/cups
|
||||
%dir %attr(0511,lp,sys) %{_localstatedir}/run/cups/certs
|
||||
%dir %attr(0755,root,lp) %{_rundir}/cups
|
||||
%dir %attr(0511,lp,sys) %{_rundir}/cups/certs
|
||||
%{_tmpfilesdir}/cups.conf
|
||||
%{_tmpfilesdir}/cups-lp.conf
|
||||
%verify(not md5 size mtime) %config(noreplace) %attr(0640,root,lp) %{_sysconfdir}/cups/cupsd.conf
|
||||
|
@ -759,6 +794,31 @@ rm -f %{cups_serverbin}/backend/smb
|
|||
%{_mandir}/man5/ipptoolfile.5.gz
|
||||
|
||||
%changelog
|
||||
* Mon Jul 20 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.2.12-11
|
||||
- 1848575 - [cups, cups-filters] PPD generators creates invalid cupsManualCopies entry
|
||||
|
||||
* Mon Jun 08 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.2.12-10
|
||||
- cgi script sets a bad uri when creating print queue via web ui
|
||||
- ipptool doesn't support mDNS uris
|
||||
|
||||
* Thu May 21 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.2.12-9
|
||||
- 1838455 - ipp/socket backends connect to turned off device for eternity (contimeout is not applied)
|
||||
|
||||
* Tue Apr 21 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.2.12-8
|
||||
- 1826330 - CVE-2020-3898 cups: heap based buffer overflow in libcups's ppdFindOption() in ppd-mark.c
|
||||
|
||||
* Mon Apr 20 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.2.12-7
|
||||
- 1822154 - cups.service doesn't execute automatically on request
|
||||
|
||||
* Wed Mar 04 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.2.12-6
|
||||
- 1808409 - the default printer for the system set with lpoptions is being ignored
|
||||
|
||||
* Thu Jan 02 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.2.12-5
|
||||
- revert previous commit - according CUPS upstream it breaks kerberized printing
|
||||
|
||||
* Tue Dec 17 2019 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.2.12-4
|
||||
- change permissions on ipp backend (needed due cups-filters rebase)
|
||||
|
||||
* Wed Oct 16 2019 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.2.12-3
|
||||
- 1720688 - [abrt] cups: __strlen_avx2(): printers.cgi killed by SIGSEGV
|
||||
- 1750904 - cups is unable to add ppd with custom/Custom option
|
||||
|
@ -3762,5 +3822,5 @@ rm -f %{cups_serverbin}/backend/smb
|
|||
* Mon Jun 26 2000 Tim Powers <timp@redhat.com>
|
||||
- started changelog
|
||||
- fixed init.d script location
|
||||
- changed script in init.d quite a bit and made more like the rest of our
|
||||
- changed script scripi in init.d quite a bit and made more like the rest of our
|
||||
startup scripts
|
||||
|
|
Loading…
Reference in New Issue