mirror of
https://gitee.com/openharmony/third_party_cups
synced 2024-11-23 01:49:57 +00:00
Package init
This commit is contained in:
commit
bd15159fbe
206
0001-Fix-memory-leaks-found-by-Coverity-Issue-5375.patch
Normal file
206
0001-Fix-memory-leaks-found-by-Coverity-Issue-5375.patch
Normal file
@ -0,0 +1,206 @@
|
||||
diff --git a/backend/ipp.c b/backend/ipp.c
|
||||
index 32eb3aaa4..2a880bd75 100644
|
||||
--- a/backend/ipp.c
|
||||
+++ b/backend/ipp.c
|
||||
@@ -3612,6 +3612,8 @@ update_reasons(ipp_attribute_t *attr, /* I - printer-state-reasons or NULL */
|
||||
}
|
||||
}
|
||||
|
||||
+ cupsArrayDelete(new_reasons);
|
||||
+
|
||||
_cupsMutexUnlock(&report_mutex);
|
||||
|
||||
/*
|
||||
diff --git a/cgi-bin/search.c b/cgi-bin/search.c
|
||||
index 3956afc33..ad1f5ed0e 100644
|
||||
--- a/cgi-bin/search.c
|
||||
+++ b/cgi-bin/search.c
|
||||
@@ -361,4 +362,5 @@ void
|
||||
cgiFreeSearch(void *search) /* I - Search context */
|
||||
{
|
||||
regfree((regex_t *)search);
|
||||
+ free(search);
|
||||
}
|
||||
diff --git a/cups/http-addrlist.c b/cups/http-addrlist.c
|
||||
index 5d510140b..688901a7d 100644
|
||||
--- a/cups/http-addrlist.c
|
||||
+++ b/cups/http-addrlist.c
|
||||
@@ -612,6 +613,7 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p
|
||||
if (!temp)
|
||||
{
|
||||
httpAddrFreeList(first);
|
||||
+ freeaddrinfo(results);
|
||||
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
|
||||
return (NULL);
|
||||
}
|
||||
diff --git a/cups/http.c b/cups/http.c
|
||||
index a9235b087..d9332cc83 100644
|
||||
--- a/cups/http.c
|
||||
+++ b/cups/http.c
|
||||
@@ -3915,7 +3915,7 @@ http_create(
|
||||
if ((http = calloc(sizeof(http_t), 1)) == NULL)
|
||||
{
|
||||
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
|
||||
- httpAddrFreeList(addrlist);
|
||||
+ httpAddrFreeList(myaddrlist);
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
diff --git a/ppdc/ppdc-source.cxx b/ppdc/ppdc-source.cxx
|
||||
index be24cebae..4e8cba7bb 100644
|
||||
--- a/ppdc/ppdc-source.cxx
|
||||
+++ b/ppdc/ppdc-source.cxx
|
||||
@@ -2665,6 +2666,7 @@ ppdcSource::scan_file(ppdcFile *fp, // I - File to read
|
||||
// Add it to the current option...
|
||||
if (!o)
|
||||
{
|
||||
+ c->release();
|
||||
_cupsLangPrintf(stderr,
|
||||
_("ppdc: Choice found on line %d of %s with no "
|
||||
"Option."), fp->line, fp->filename);
|
||||
diff --git a/scheduler/cups-driverd.cxx b/scheduler/cups-driverd.cxx
|
||||
index 657eee0a0..b518a9325 100644
|
||||
--- a/scheduler/cups-driverd.cxx
|
||||
+++ b/scheduler/cups-driverd.cxx
|
||||
@@ -153,7 +153,7 @@ static ppd_info_t *add_ppd(const char *filename, const char *name,
|
||||
size_t size, int model_number, int type,
|
||||
const char *scheme);
|
||||
static int cat_drv(const char *name, int request_id);
|
||||
-static int cat_ppd(const char *name, int request_id);
|
||||
+static void cat_ppd(const char *name, int request_id);
|
||||
static int cat_static(const char *name, int request_id);
|
||||
static int cat_tar(const char *name, int request_id);
|
||||
static int compare_inodes(struct stat *a, struct stat *b);
|
||||
@@ -163,12 +163,12 @@ static int compare_names(const ppd_info_t *p0,
|
||||
const ppd_info_t *p1);
|
||||
static int compare_ppds(const ppd_info_t *p0,
|
||||
const ppd_info_t *p1);
|
||||
-static int dump_ppds_dat(const char *filename);
|
||||
+static void dump_ppds_dat(const char *filename);
|
||||
static void free_array(cups_array_t *a);
|
||||
static cups_file_t *get_file(const char *name, int request_id,
|
||||
const char *subdir, char *buffer,
|
||||
size_t bufsize, char **subfile);
|
||||
-static int list_ppds(int request_id, int limit, const char *opt);
|
||||
+static void list_ppds(int request_id, int limit, const char *opt);
|
||||
static int load_drivers(cups_array_t *include,
|
||||
cups_array_t *exclude);
|
||||
static int load_drv(const char *filename, const char *name,
|
||||
@@ -204,13 +204,13 @@ main(int argc, /* I - Number of command-line args */
|
||||
*/
|
||||
|
||||
if (argc == 3 && !strcmp(argv[1], "cat"))
|
||||
- return (cat_ppd(argv[2], 0));
|
||||
+ cat_ppd(argv[2], 0);
|
||||
else if ((argc == 2 || argc == 3) && !strcmp(argv[1], "dump"))
|
||||
- return (dump_ppds_dat(argv[2]));
|
||||
+ dump_ppds_dat(argv[2]);
|
||||
else if (argc == 4 && !strcmp(argv[1], "get"))
|
||||
- return (cat_ppd(argv[3], atoi(argv[2])));
|
||||
+ cat_ppd(argv[3], atoi(argv[2]));
|
||||
else if (argc == 5 && !strcmp(argv[1], "list"))
|
||||
- return (list_ppds(atoi(argv[2]), atoi(argv[3]), argv[4]));
|
||||
+ list_ppds(atoi(argv[2]), atoi(argv[3]), argv[4]);
|
||||
else
|
||||
{
|
||||
fputs("Usage: cups-driverd cat ppd-name\n", stderr);
|
||||
@@ -428,7 +428,7 @@ cat_drv(const char *name, /* I - PPD name */
|
||||
* 'cat_ppd()' - Copy a PPD file to stdout.
|
||||
*/
|
||||
|
||||
-static int /* O - Exit code */
|
||||
+static void
|
||||
cat_ppd(const char *name, /* I - PPD name */
|
||||
int request_id) /* I - Request ID for response? */
|
||||
{
|
||||
@@ -445,7 +445,7 @@ cat_ppd(const char *name, /* I - PPD name */
|
||||
if (strstr(name, "../"))
|
||||
{
|
||||
fputs("ERROR: Invalid PPD name.\n", stderr);
|
||||
- return (1);
|
||||
+ exit(1);
|
||||
}
|
||||
|
||||
strlcpy(scheme, name, sizeof(scheme));
|
||||
@@ -475,11 +475,11 @@ cat_ppd(const char *name, /* I - PPD name */
|
||||
puts("Content-Type: application/ipp\n");
|
||||
|
||||
if (!scheme[0])
|
||||
- return (cat_static(name, request_id));
|
||||
+ exit(cat_static(name, request_id));
|
||||
else if (!strcmp(scheme, "drv"))
|
||||
- return (cat_drv(name, request_id));
|
||||
+ exit(cat_drv(name, request_id));
|
||||
else if (!strcmp(scheme, "file"))
|
||||
- return (cat_tar(name, request_id));
|
||||
+ exit(cat_tar(name, request_id));
|
||||
else
|
||||
{
|
||||
/*
|
||||
@@ -517,7 +517,7 @@ cat_ppd(const char *name, /* I - PPD name */
|
||||
cupsdSendIPPTrailer();
|
||||
}
|
||||
|
||||
- return (1);
|
||||
+ exit(1);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -547,15 +547,15 @@ cat_ppd(const char *name, /* I - PPD name */
|
||||
|
||||
fprintf(stderr, "ERROR: [cups-driverd] Unable to execute \"%s\" - %s\n",
|
||||
line, strerror(errno));
|
||||
- return (1);
|
||||
+ exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
- * Return with no errors...
|
||||
+ * Exit with no errors...
|
||||
*/
|
||||
|
||||
- return (0);
|
||||
+ exit(0);
|
||||
}
|
||||
|
||||
|
||||
@@ -778,7 +778,7 @@ compare_ppds(const ppd_info_t *p0, /* I - First PPD file */
|
||||
* 'dump_ppds_dat()' - Dump the contents of the ppds.dat file.
|
||||
*/
|
||||
|
||||
-static int /* O - Exit status */
|
||||
+static void
|
||||
dump_ppds_dat(const char *filename) /* I - Filename */
|
||||
{
|
||||
char temp[1024]; /* ppds.dat filename */
|
||||
@@ -810,7 +810,7 @@ dump_ppds_dat(const char *filename) /* I - Filename */
|
||||
ppd->record.make_and_model, ppd->record.device_id,
|
||||
ppd->record.scheme);
|
||||
|
||||
- return (0);
|
||||
+ exit(0);
|
||||
}
|
||||
|
||||
|
||||
@@ -1004,7 +1004,7 @@ get_file(const char *name, /* I - Name */
|
||||
* 'list_ppds()' - List PPD files.
|
||||
*/
|
||||
|
||||
-static int /* O - Exit code */
|
||||
+static void
|
||||
list_ppds(int request_id, /* I - Request ID */
|
||||
int limit, /* I - Limit */
|
||||
const char *opt) /* I - Option argument */
|
||||
@@ -1566,7 +1566,7 @@ list_ppds(int request_id, /* I - Request ID */
|
||||
if (request_id)
|
||||
cupsdSendIPPTrailer();
|
||||
|
||||
- return (0);
|
||||
+ exit(0);
|
||||
}
|
||||
|
||||
|
||||
--
|
||||
2.17.1
|
||||
|
20
CVE-2018-4300.patch
Normal file
20
CVE-2018-4300.patch
Normal file
@ -0,0 +1,20 @@
|
||||
--- a/cgi-bin/var.c 2013-06-07 09:12:52.000000000 +0800
|
||||
+++ b/cgi-bin/var.c 2019-04-20 18:23:17.835000000 +0800
|
||||
@@ -1222,6 +1222,7 @@ cgi_set_sid(void)
|
||||
*server_name, /* SERVER_NAME */
|
||||
*server_port; /* SERVER_PORT */
|
||||
|
||||
+ struct timeval curtime; /* Current time */
|
||||
|
||||
if ((remote_addr = getenv("REMOTE_ADDR")) == NULL)
|
||||
remote_addr = "REMOTE_ADDR";
|
||||
@@ -1230,7 +1231,8 @@ cgi_set_sid(void)
|
||||
if ((server_port = getenv("SERVER_PORT")) == NULL)
|
||||
server_port = "SERVER_PORT";
|
||||
|
||||
- CUPS_SRAND(time(NULL));
|
||||
+ gettimeofday(&curtime, NULL);
|
||||
+ CUPS_SRAND(curtime.tv_sec + curtime.tv_usec);
|
||||
snprintf(buffer, sizeof(buffer), "%s:%s:%s:%02X%02X%02X%02X%02X%02X%02X%02X",
|
||||
remote_addr, server_name, server_port,
|
||||
(unsigned)CUPS_RAND() & 255, (unsigned)CUPS_RAND() & 255,
|
187
CVE-2019-8675-CVE-2019-8696.patch
Normal file
187
CVE-2019-8675-CVE-2019-8696.patch
Normal file
@ -0,0 +1,187 @@
|
||||
From f24e6cf6a39300ad0c3726a41a4aab51ad54c109 Mon Sep 17 00:00:00 2001
|
||||
From: Michael R Sweet <michael.r.sweet@gmail.com>
|
||||
Date: Thu, 15 Aug 2019 14:08:31 -0400
|
||||
Subject: [PATCH] Fix multiple security/disclosure issues:
|
||||
|
||||
- CVE-2019-8696 and CVE-2019-8675: Fixed SNMP buffer overflows (rdar://51685251)
|
||||
- Fixed IPP buffer overflow (rdar://50035411)
|
||||
- Fixed memory disclosure issue in the scheduler (rdar://51373853)
|
||||
- Fixed DoS issues in the scheduler (rdar://51373929)
|
||||
---
|
||||
CHANGES.md | 6 +++++-
|
||||
cups/http.c | 9 +++++++--
|
||||
cups/ipp.c | 9 ++-------
|
||||
cups/snmp.c | 20 +++++++++++++++++++-
|
||||
scheduler/client.c | 23 ++++++++++++-----------
|
||||
5 files changed, 45 insertions(+), 22 deletions(-)
|
||||
|
||||
diff --git a/cups/http.c b/cups/http.c
|
||||
index 5c14ef68e..3fadb5acb 100644
|
||||
--- a/cups/http.c
|
||||
+++ b/cups/http.c
|
||||
@@ -1905,7 +1905,7 @@ httpPrintf(http_t *http, /* I - HTTP connection */
|
||||
...) /* I - Additional args as needed */
|
||||
{
|
||||
ssize_t bytes; /* Number of bytes to write */
|
||||
- char buf[16384]; /* Buffer for formatted string */
|
||||
+ char buf[65536]; /* Buffer for formatted string */
|
||||
va_list ap; /* Variable argument pointer */
|
||||
|
||||
|
||||
@@ -1917,7 +1917,12 @@ httpPrintf(http_t *http, /* I - HTTP connection */
|
||||
|
||||
DEBUG_printf(("3httpPrintf: (" CUPS_LLFMT " bytes) %s", CUPS_LLCAST bytes, buf));
|
||||
|
||||
- if (http->data_encoding == HTTP_ENCODING_FIELDS)
|
||||
+ if (bytes > (ssize_t)(sizeof(buf) - 1))
|
||||
+ {
|
||||
+ http->error = ENOMEM;
|
||||
+ return (-1);
|
||||
+ }
|
||||
+ else if (http->data_encoding == HTTP_ENCODING_FIELDS)
|
||||
return ((int)httpWrite2(http, buf, (size_t)bytes));
|
||||
else
|
||||
{
|
||||
diff --git a/cups/ipp.c b/cups/ipp.c
|
||||
index eaa8c78ca..b0762fdcb 100644
|
||||
--- a/cups/ipp.c
|
||||
+++ b/cups/ipp.c
|
||||
@@ -4553,9 +4553,7 @@ ippSetValueTag(
|
||||
break;
|
||||
|
||||
case IPP_TAG_NAME :
|
||||
- if (temp_tag != IPP_TAG_KEYWORD && temp_tag != IPP_TAG_URI &&
|
||||
- temp_tag != IPP_TAG_URISCHEME && temp_tag != IPP_TAG_LANGUAGE &&
|
||||
- temp_tag != IPP_TAG_MIMETYPE)
|
||||
+ if (temp_tag != IPP_TAG_KEYWORD)
|
||||
return (0);
|
||||
|
||||
(*attr)->value_tag = (ipp_tag_t)(IPP_TAG_NAME | ((*attr)->value_tag & IPP_TAG_CUPS_CONST));
|
||||
@@ -4563,10 +4561,7 @@ ippSetValueTag(
|
||||
|
||||
case IPP_TAG_NAMELANG :
|
||||
case IPP_TAG_TEXTLANG :
|
||||
- if (value_tag == IPP_TAG_NAMELANG &&
|
||||
- (temp_tag != IPP_TAG_NAME && temp_tag != IPP_TAG_KEYWORD &&
|
||||
- temp_tag != IPP_TAG_URI && temp_tag != IPP_TAG_URISCHEME &&
|
||||
- temp_tag != IPP_TAG_LANGUAGE && temp_tag != IPP_TAG_MIMETYPE))
|
||||
+ if (value_tag == IPP_TAG_NAMELANG && (temp_tag != IPP_TAG_NAME && temp_tag != IPP_TAG_KEYWORD))
|
||||
return (0);
|
||||
|
||||
if (value_tag == IPP_TAG_TEXTLANG && temp_tag != IPP_TAG_TEXT)
|
||||
diff --git a/cups/snmp.c b/cups/snmp.c
|
||||
index 8437528dd..fc9396177 100644
|
||||
--- a/cups/snmp.c
|
||||
+++ b/cups/snmp.c
|
||||
@@ -1233,6 +1233,9 @@ asn1_get_integer(
|
||||
int value; /* Integer value */
|
||||
|
||||
|
||||
+ if (*buffer >= bufend)
|
||||
+ return (0);
|
||||
+
|
||||
if (length > sizeof(int))
|
||||
{
|
||||
(*buffer) += length;
|
||||
@@ -1259,6 +1262,9 @@ asn1_get_length(unsigned char **buffer, /* IO - Pointer in buffer */
|
||||
unsigned length; /* Length */
|
||||
|
||||
|
||||
+ if (*buffer >= bufend)
|
||||
+ return (0);
|
||||
+
|
||||
length = **buffer;
|
||||
(*buffer) ++;
|
||||
|
||||
@@ -1301,6 +1307,9 @@ asn1_get_oid(
|
||||
int number; /* OID number */
|
||||
|
||||
|
||||
+ if (*buffer >= bufend)
|
||||
+ return (0);
|
||||
+
|
||||
valend = *buffer + length;
|
||||
oidptr = oid;
|
||||
oidend = oid + oidsize - 1;
|
||||
@@ -1349,9 +1358,12 @@ asn1_get_packed(
|
||||
int value; /* Value */
|
||||
|
||||
|
||||
+ if (*buffer >= bufend)
|
||||
+ return (0);
|
||||
+
|
||||
value = 0;
|
||||
|
||||
- while ((**buffer & 128) && *buffer < bufend)
|
||||
+ while (*buffer < bufend && (**buffer & 128))
|
||||
{
|
||||
value = (value << 7) | (**buffer & 127);
|
||||
(*buffer) ++;
|
||||
@@ -1379,6 +1391,9 @@ asn1_get_string(
|
||||
char *string, /* I - String buffer */
|
||||
size_t strsize) /* I - String buffer size */
|
||||
{
|
||||
+ if (*buffer >= bufend)
|
||||
+ return (NULL);
|
||||
+
|
||||
if (length > (unsigned)(bufend - *buffer))
|
||||
length = (unsigned)(bufend - *buffer);
|
||||
|
||||
@@ -1421,6 +1436,9 @@ asn1_get_type(unsigned char **buffer, /* IO - Pointer in buffer */
|
||||
int type; /* Type */
|
||||
|
||||
|
||||
+ if (*buffer >= bufend)
|
||||
+ return (0);
|
||||
+
|
||||
type = **buffer;
|
||||
(*buffer) ++;
|
||||
|
||||
diff --git a/scheduler/client.c b/scheduler/client.c
|
||||
index a21b909a8..680508047 100644
|
||||
--- a/scheduler/client.c
|
||||
+++ b/scheduler/client.c
|
||||
@@ -568,6 +568,17 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */
|
||||
|
||||
cupsdLogClient(con, CUPSD_LOG_DEBUG2, "cupsdReadClient: error=%d, used=%d, state=%s, data_encoding=HTTP_ENCODING_%s, data_remaining=" CUPS_LLFMT ", request=%p(%s), file=%d", httpError(con->http), (int)httpGetReady(con->http), httpStateString(httpGetState(con->http)), httpIsChunked(con->http) ? "CHUNKED" : "LENGTH", CUPS_LLCAST httpGetRemaining(con->http), con->request, con->request ? ippStateString(ippGetState(con->request)) : "", con->file);
|
||||
|
||||
+ if (httpError(con->http) == EPIPE && !httpGetReady(con->http) && recv(httpGetFd(con->http), buf, 1, MSG_PEEK) < 1)
|
||||
+ {
|
||||
+ /*
|
||||
+ * Connection closed...
|
||||
+ */
|
||||
+
|
||||
+ cupsdLogClient(con, CUPSD_LOG_DEBUG, "Closing on EOF.");
|
||||
+ cupsdCloseClient(con);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
if (httpGetState(con->http) == HTTP_STATE_GET_SEND ||
|
||||
httpGetState(con->http) == HTTP_STATE_POST_SEND ||
|
||||
httpGetState(con->http) == HTTP_STATE_STATUS)
|
||||
@@ -577,17 +588,6 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */
|
||||
* connection and we need to shut it down...
|
||||
*/
|
||||
|
||||
- if (!httpGetReady(con->http) && recv(httpGetFd(con->http), buf, 1, MSG_PEEK) < 1)
|
||||
- {
|
||||
- /*
|
||||
- * Connection closed...
|
||||
- */
|
||||
-
|
||||
- cupsdLogClient(con, CUPSD_LOG_DEBUG, "Closing on EOF.");
|
||||
- cupsdCloseClient(con);
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
cupsdLogClient(con, CUPSD_LOG_DEBUG, "Closing on unexpected HTTP read state %s.", httpStateString(httpGetState(con->http)));
|
||||
cupsdCloseClient(con);
|
||||
return;
|
||||
@@ -2209,6 +2209,7 @@ cupsdSendError(cupsd_client_t *con, /* I - Connection */
|
||||
strlcpy(location, httpGetField(con->http, HTTP_FIELD_LOCATION), sizeof(location));
|
||||
|
||||
httpClearFields(con->http);
|
||||
+ httpClearCookie(con->http);
|
||||
|
||||
httpSetField(con->http, HTTP_FIELD_LOCATION, location);
|
||||
|
BIN
cups-2.2.8-source.tar.gz
Normal file
BIN
cups-2.2.8-source.tar.gz
Normal file
Binary file not shown.
13
cups-accesslog-null.patch
Normal file
13
cups-accesslog-null.patch
Normal file
@ -0,0 +1,13 @@
|
||||
diff --git a/scheduler/log.c b/scheduler/log.c
|
||||
index 74790dc35..b6226201f 100644
|
||||
--- a/scheduler/log.c
|
||||
+++ b/scheduler/log.c
|
||||
@@ -1046,7 +1047,7 @@ cupsdLogRequest(cupsd_client_t *con, /* I - Request to log */
|
||||
* Filter requests as needed...
|
||||
*/
|
||||
|
||||
- if (AccessLogLevel == CUPSD_ACCESSLOG_NONE)
|
||||
+ if (AccessLogLevel == CUPSD_ACCESSLOG_NONE || !AccessLog)
|
||||
return (1);
|
||||
else if (AccessLogLevel < CUPSD_ACCESSLOG_ALL)
|
||||
{
|
12
cups-banners.patch
Normal file
12
cups-banners.patch
Normal file
@ -0,0 +1,12 @@
|
||||
diff -up cups-1.5b1/scheduler/banners.c.banners cups-1.5b1/scheduler/banners.c
|
||||
--- cups-1.5b1/scheduler/banners.c.banners 2011-05-20 05:49:49.000000000 +0200
|
||||
+++ cups-1.5b1/scheduler/banners.c 2011-05-23 17:35:30.000000000 +0200
|
||||
@@ -110,6 +110,8 @@ cupsdLoadBanners(const char *d) /* I -
|
||||
if ((ext = strrchr(dent->filename, '.')) != NULL)
|
||||
if (!strcmp(ext, ".bck") ||
|
||||
!strcmp(ext, ".bak") ||
|
||||
+ !strcmp(ext, ".rpmnew") ||
|
||||
+ !strcmp(ext, ".rpmsave") ||
|
||||
!strcmp(ext, ".sav"))
|
||||
continue;
|
||||
|
27
cups-direct-usb.patch
Normal file
27
cups-direct-usb.patch
Normal file
@ -0,0 +1,27 @@
|
||||
diff -up cups-1.5b1/backend/usb-unix.c.direct-usb cups-1.5b1/backend/usb-unix.c
|
||||
--- cups-1.5b1/backend/usb-unix.c.direct-usb 2011-05-20 05:49:49.000000000 +0200
|
||||
+++ cups-1.5b1/backend/usb-unix.c 2011-05-23 17:52:14.000000000 +0200
|
||||
@@ -102,6 +102,9 @@ print_device(const char *uri, /* I - De
|
||||
_cups_strncasecmp(hostname, "Minolta", 7);
|
||||
#endif /* __FreeBSD__ || __NetBSD__ || __OpenBSD__ || __DragonFly__ */
|
||||
|
||||
+ if (use_bc && !strncmp(uri, "usb:/dev/", 9))
|
||||
+ use_bc = 0;
|
||||
+
|
||||
if ((device_fd = open_device(uri, &use_bc)) == -1)
|
||||
{
|
||||
if (getenv("CLASS") != NULL)
|
||||
@@ -331,12 +334,7 @@ open_device(const char *uri, /* I - Dev
|
||||
if (!strncmp(uri, "usb:/dev/", 9))
|
||||
#ifdef __linux
|
||||
{
|
||||
- /*
|
||||
- * Do not allow direct devices anymore...
|
||||
- */
|
||||
-
|
||||
- errno = ENODEV;
|
||||
- return (-1);
|
||||
+ return (open(uri + 4, O_RDWR | O_EXCL));
|
||||
}
|
||||
else if (!strncmp(uri, "usb://", 6))
|
||||
{
|
21
cups-driverd-timeout.patch
Normal file
21
cups-driverd-timeout.patch
Normal file
@ -0,0 +1,21 @@
|
||||
diff -up cups-1.7b1/scheduler/ipp.c.driverd-timeout cups-1.7b1/scheduler/ipp.c
|
||||
--- cups-1.7b1/scheduler/ipp.c.driverd-timeout 2013-04-19 12:24:43.003841810 +0200
|
||||
+++ cups-1.7b1/scheduler/ipp.c 2013-04-19 12:24:43.204839107 +0200
|
||||
@@ -4556,7 +4556,7 @@ copy_model(cupsd_client_t *con, /* I -
|
||||
close(temppipe[1]);
|
||||
|
||||
/*
|
||||
- * Wait up to 30 seconds for the PPD file to be copied...
|
||||
+ * Wait up to 70 seconds for the PPD file to be copied...
|
||||
*/
|
||||
|
||||
total = 0;
|
||||
@@ -4576,7 +4576,7 @@ copy_model(cupsd_client_t *con, /* I -
|
||||
FD_SET(temppipe[0], &input);
|
||||
FD_SET(CGIPipes[0], &input);
|
||||
|
||||
- timeout.tv_sec = 30;
|
||||
+ timeout.tv_sec = 70;
|
||||
timeout.tv_usec = 0;
|
||||
|
||||
if ((i = select(maxfd, &input, NULL, NULL, &timeout)) < 0)
|
11
cups-dymo-deviceid.patch
Normal file
11
cups-dymo-deviceid.patch
Normal file
@ -0,0 +1,11 @@
|
||||
diff -up cups-1.6.2/ppdc/sample.drv.dymo-deviceid cups-1.6.2/ppdc/sample.drv
|
||||
--- cups-1.6.2/ppdc/sample.drv.dymo-deviceid 2013-06-18 16:57:02.110662953 +0100
|
||||
+++ cups-1.6.2/ppdc/sample.drv 2013-06-18 16:58:56.513989117 +0100
|
||||
@@ -125,6 +125,7 @@ Version "1.5"
|
||||
{
|
||||
Manufacturer "Dymo"
|
||||
ModelName "Label Printer"
|
||||
+ Attribute "1284DeviceID" "" "MFG:DYMO;MDL:LabelWriter 400;"
|
||||
Attribute NickName "" "Dymo Label Printer"
|
||||
PCFileName "dymo.ppd"
|
||||
DriverType label
|
130
cups-eggcups.patch
Normal file
130
cups-eggcups.patch
Normal file
@ -0,0 +1,130 @@
|
||||
diff -up cups-2.2.5/backend/ipp.c.eggcups cups-2.2.5/backend/ipp.c
|
||||
--- cups-2.2.5/backend/ipp.c.eggcups 2017-10-13 20:22:26.000000000 +0200
|
||||
+++ cups-2.2.5/backend/ipp.c 2017-10-17 18:56:42.409024451 +0200
|
||||
@@ -149,6 +149,70 @@ static char tmpfilename[1024] = "";
|
||||
static char mandatory_attrs[1024] = "";
|
||||
/* cupsMandatory value */
|
||||
|
||||
+#if HAVE_DBUS
|
||||
+#include <dbus/dbus.h>
|
||||
+
|
||||
+static DBusConnection *dbus_connection = NULL;
|
||||
+
|
||||
+static int
|
||||
+init_dbus (void)
|
||||
+{
|
||||
+ DBusConnection *connection;
|
||||
+ DBusError error;
|
||||
+
|
||||
+ if (dbus_connection &&
|
||||
+ !dbus_connection_get_is_connected (dbus_connection)) {
|
||||
+ dbus_connection_unref (dbus_connection);
|
||||
+ dbus_connection = NULL;
|
||||
+ }
|
||||
+
|
||||
+ dbus_error_init (&error);
|
||||
+ connection = dbus_bus_get (getuid () ? DBUS_BUS_SESSION : DBUS_BUS_SYSTEM, &error);
|
||||
+ if (connection == NULL) {
|
||||
+ dbus_error_free (&error);
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ dbus_connection = connection;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+dbus_broadcast_queued_remote (const char *printer_uri,
|
||||
+ ipp_status_t status,
|
||||
+ unsigned int local_job_id,
|
||||
+ unsigned int remote_job_id,
|
||||
+ const char *username,
|
||||
+ const char *printer_name)
|
||||
+{
|
||||
+ DBusMessage *message;
|
||||
+ DBusMessageIter iter;
|
||||
+ const char *errstr;
|
||||
+
|
||||
+ if (!dbus_connection || !dbus_connection_get_is_connected (dbus_connection)) {
|
||||
+ if (init_dbus () || !dbus_connection)
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ errstr = ippErrorString (status);
|
||||
+ message = dbus_message_new_signal ("/com/redhat/PrinterSpooler",
|
||||
+ "com.redhat.PrinterSpooler",
|
||||
+ "JobQueuedRemote");
|
||||
+ dbus_message_iter_init_append (message, &iter);
|
||||
+ dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &printer_uri);
|
||||
+ dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &errstr);
|
||||
+ dbus_message_iter_append_basic (&iter, DBUS_TYPE_UINT32, &local_job_id);
|
||||
+ dbus_message_iter_append_basic (&iter, DBUS_TYPE_UINT32, &remote_job_id);
|
||||
+ dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &username);
|
||||
+ dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &printer_name);
|
||||
+
|
||||
+ dbus_connection_send (dbus_connection, message, NULL);
|
||||
+ dbus_connection_flush (dbus_connection);
|
||||
+ dbus_message_unref (message);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+#endif /* HAVE_DBUS */
|
||||
|
||||
/*
|
||||
* Local functions...
|
||||
@@ -1743,6 +1807,15 @@ main(int argc, /* I - Number of comm
|
||||
fprintf(stderr, "DEBUG: Print job accepted - job ID %d.\n", job_id);
|
||||
}
|
||||
|
||||
+#if HAVE_DBUS
|
||||
+ dbus_broadcast_queued_remote (argv[0],
|
||||
+ ipp_status,
|
||||
+ atoi (argv[1]),
|
||||
+ job_id,
|
||||
+ argv[2],
|
||||
+ getenv ("PRINTER"));
|
||||
+#endif /* HAVE_DBUS */
|
||||
+
|
||||
ippDelete(response);
|
||||
|
||||
if (job_canceled)
|
||||
diff -up cups-2.2.5/backend/Makefile.eggcups cups-2.2.5/backend/Makefile
|
||||
--- cups-2.2.5/backend/Makefile.eggcups 2017-10-17 18:56:42.409024451 +0200
|
||||
+++ cups-2.2.5/backend/Makefile 2017-10-17 18:59:11.696781116 +0200
|
||||
@@ -262,7 +262,7 @@ dnssd: dnssd.o ../cups/$(LIBCUPS) libbac
|
||||
|
||||
ipp: ipp.o ../cups/$(LIBCUPS) libbackend.a
|
||||
echo Linking $@...
|
||||
- $(LD_CC) $(LDFLAGS) -o ipp ipp.o libbackend.a $(LIBS)
|
||||
+ $(LD_CC) $(LDFLAGS) -o ipp ipp.o libbackend.a $(LIBS) $(SERVERLIBS)
|
||||
$(RM) http
|
||||
$(LN) ipp http
|
||||
|
||||
diff -up cups-2.2.5/scheduler/subscriptions.c.eggcups cups-2.2.5/scheduler/subscriptions.c
|
||||
--- cups-2.2.5/scheduler/subscriptions.c.eggcups 2017-10-13 20:22:26.000000000 +0200
|
||||
+++ cups-2.2.5/scheduler/subscriptions.c 2017-10-17 18:56:42.409024451 +0200
|
||||
@@ -1291,13 +1291,13 @@ cupsd_send_dbus(cupsd_eventmask_t event,
|
||||
what = "PrinterAdded";
|
||||
else if (event & CUPSD_EVENT_PRINTER_DELETED)
|
||||
what = "PrinterRemoved";
|
||||
- else if (event & CUPSD_EVENT_PRINTER_CHANGED)
|
||||
- what = "QueueChanged";
|
||||
else if (event & CUPSD_EVENT_JOB_CREATED)
|
||||
what = "JobQueuedLocal";
|
||||
else if ((event & CUPSD_EVENT_JOB_STATE) && job &&
|
||||
job->state_value == IPP_JOB_PROCESSING)
|
||||
what = "JobStartedLocal";
|
||||
+ else if (event & (CUPSD_EVENT_PRINTER_CHANGED|CUPSD_EVENT_JOB_STATE_CHANGED|CUPSD_EVENT_PRINTER_STATE_CHANGED))
|
||||
+ what = "QueueChanged";
|
||||
else
|
||||
return;
|
||||
|
||||
@@ -1333,7 +1333,7 @@ cupsd_send_dbus(cupsd_eventmask_t event,
|
||||
dbus_message_append_iter_init(message, &iter);
|
||||
if (dest)
|
||||
dbus_message_iter_append_string(&iter, dest->name);
|
||||
- if (job)
|
||||
+ if (job && strcmp (what, "QueueChanged") != 0)
|
||||
{
|
||||
dbus_message_iter_append_uint32(&iter, job->id);
|
||||
dbus_message_iter_append_string(&iter, job->username);
|
13
cups-epson-A6-crash.patch
Normal file
13
cups-epson-A6-crash.patch
Normal file
@ -0,0 +1,13 @@
|
||||
diff --git a/filter/rastertoepson.c b/filter/rastertoepson.c
|
||||
index 73e8d0600..4522e6b48 100644
|
||||
--- a/filter/rastertoepson.c
|
||||
+++ b/filter/rastertoepson.c
|
||||
@@ -301,7 +302,7 @@ StartPage(
|
||||
|
||||
if (DotBytes)
|
||||
{
|
||||
- if ((LineBuffers[0] = calloc((size_t)DotBytes, header->cupsWidth * (size_t)(Shingling + 1))) == NULL)
|
||||
+ if ((LineBuffers[0] = calloc((size_t)DotBytes, (header->cupsWidth + 7) * (size_t)(Shingling + 1))) == NULL)
|
||||
{
|
||||
fputs("ERROR: Unable to allocate memory\n", stderr);
|
||||
exit(1);
|
32
cups-filter-debug.patch
Normal file
32
cups-filter-debug.patch
Normal file
@ -0,0 +1,32 @@
|
||||
diff -up cups-1.6b1/scheduler/job.c.filter-debug cups-1.6b1/scheduler/job.c
|
||||
--- cups-1.6b1/scheduler/job.c.filter-debug 2012-05-25 16:06:01.000000000 +0200
|
||||
+++ cups-1.6b1/scheduler/job.c 2012-05-25 16:07:46.309259511 +0200
|
||||
@@ -625,10 +625,28 @@ cupsdContinueJob(cupsd_job_t *job) /* I
|
||||
|
||||
if (!filters)
|
||||
{
|
||||
+ mime_filter_t *current;
|
||||
+
|
||||
cupsdLogJob(job, CUPSD_LOG_ERROR,
|
||||
"Unable to convert file %d to printable format.",
|
||||
job->current_file);
|
||||
|
||||
+ cupsdLogJob(job, CUPSD_LOG_ERROR,
|
||||
+ "Required: %s/%s -> %s/%s",
|
||||
+ job->filetypes[job->current_file]->super,
|
||||
+ job->filetypes[job->current_file]->type,
|
||||
+ job->printer->filetype->super,
|
||||
+ job->printer->filetype->type);
|
||||
+
|
||||
+ for (current = (mime_filter_t *)cupsArrayFirst(MimeDatabase->srcs);
|
||||
+ current;
|
||||
+ current = (mime_filter_t *)cupsArrayNext(MimeDatabase->srcs))
|
||||
+ cupsdLogJob(job, CUPSD_LOG_ERROR,
|
||||
+ "Available: %s/%s -> %s/%s (%s)",
|
||||
+ current->src->super, current->src->type,
|
||||
+ current->dst->super, current->dst->type,
|
||||
+ current->filter);
|
||||
+
|
||||
abort_message = "Aborting job because it cannot be printed.";
|
||||
abort_state = IPP_JOB_ABORTED;
|
||||
|
15
cups-freebind.patch
Normal file
15
cups-freebind.patch
Normal file
@ -0,0 +1,15 @@
|
||||
diff -up cups-2.0.2/cups/http-addr.c.freebind cups-2.0.2/cups/http-addr.c
|
||||
--- cups-2.0.2/cups/http-addr.c.freebind 2015-02-10 14:46:33.000000000 +0100
|
||||
+++ cups-2.0.2/cups/http-addr.c 2015-02-10 14:50:35.074759141 +0100
|
||||
@@ -186,6 +186,10 @@ httpAddrListen(http_addr_t *addr, /* I -
|
||||
val = 1;
|
||||
setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, CUPS_SOCAST &val, sizeof(val));
|
||||
|
||||
+#ifdef __linux
|
||||
+ setsockopt(fd, IPPROTO_IP, IP_FREEBIND, CUPS_SOCAST &val, sizeof(val));
|
||||
+#endif /* __linux */
|
||||
+
|
||||
#ifdef IPV6_V6ONLY
|
||||
if (addr->addr.sa_family == AF_INET6)
|
||||
setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, CUPS_SOCAST &val, sizeof(val));
|
||||
diff -up cups-2.0.2/scheduler/listen.c.freebind cups-2.0.2/scheduler/listen.c
|
21
cups-hp-deviceid-oid.patch
Normal file
21
cups-hp-deviceid-oid.patch
Normal file
@ -0,0 +1,21 @@
|
||||
diff -up cups-1.5b1/backend/snmp.c.hp-deviceid-oid cups-1.5b1/backend/snmp.c
|
||||
--- cups-1.5b1/backend/snmp.c.hp-deviceid-oid 2011-05-20 05:49:49.000000000 +0200
|
||||
+++ cups-1.5b1/backend/snmp.c 2011-05-24 17:24:48.000000000 +0200
|
||||
@@ -187,6 +187,7 @@ static const int UriOID[] = { CUPS_OID_p
|
||||
static const int LexmarkProductOID[] = { 1,3,6,1,4,1,641,2,1,2,1,2,1,-1 };
|
||||
static const int LexmarkProductOID2[] = { 1,3,6,1,4,1,674,10898,100,2,1,2,1,2,1,-1 };
|
||||
static const int LexmarkDeviceIdOID[] = { 1,3,6,1,4,1,641,2,1,2,1,3,1,-1 };
|
||||
+static const int HPDeviceIdOID[] = { 1,3,6,1,4,1,11,2,3,9,1,1,7,0,-1 };
|
||||
static const int XeroxProductOID[] = { 1,3,6,1,4,1,128,2,1,3,1,2,0,-1 };
|
||||
static cups_array_t *DeviceURIs = NULL;
|
||||
static int HostNameLookups = 0;
|
||||
@@ -1006,6 +1007,9 @@ read_snmp_response(int fd) /* I - SNMP
|
||||
_cupsSNMPWrite(fd, &(packet.address), CUPS_SNMP_VERSION_1,
|
||||
packet.community, CUPS_ASN1_GET_REQUEST,
|
||||
DEVICE_PRODUCT, XeroxProductOID);
|
||||
+ _cupsSNMPWrite(fd, &(packet.address), CUPS_SNMP_VERSION_1,
|
||||
+ packet.community, CUPS_ASN1_GET_REQUEST,
|
||||
+ DEVICE_ID, HPDeviceIdOID);
|
||||
break;
|
||||
|
||||
case DEVICE_DESCRIPTION :
|
15
cups-ipp-multifile.patch
Normal file
15
cups-ipp-multifile.patch
Normal file
@ -0,0 +1,15 @@
|
||||
diff -up cups-1.7.0/backend/ipp.c.ipp-multifile cups-1.7.0/backend/ipp.c
|
||||
--- cups-1.7.0/backend/ipp.c.ipp-multifile 2013-10-24 15:52:00.745814354 +0100
|
||||
+++ cups-1.7.0/backend/ipp.c 2013-10-24 15:53:46.463266724 +0100
|
||||
@@ -1758,7 +1758,10 @@ main(int argc, /* I - Number of comm
|
||||
ippAddBoolean(request, IPP_TAG_OPERATION, "last-document",
|
||||
(i + 1) >= num_files);
|
||||
|
||||
- if (document_format)
|
||||
+ if (num_files > 1)
|
||||
+ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE,
|
||||
+ "document-format", NULL, "application/octet-stream");
|
||||
+ else if (document_format)
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE,
|
||||
"document-format", NULL, document_format);
|
||||
|
124
cups-ippeve-webui.patch
Normal file
124
cups-ippeve-webui.patch
Normal file
@ -0,0 +1,124 @@
|
||||
diff --git a/backend/dnssd.c b/backend/dnssd.c
|
||||
index 34781d5ce..7074f4294 100644
|
||||
--- a/backend/dnssd.c
|
||||
+++ b/backend/dnssd.c
|
||||
@@ -1252,6 +1252,13 @@ query_callback(
|
||||
strlcat(make_and_model, " ", sizeof(make_and_model));
|
||||
strlcat(make_and_model, model, sizeof(make_and_model));
|
||||
|
||||
+ if (!_cups_strncasecmp(make_and_model, "EPSON EPSON ", 12))
|
||||
+ _cups_strcpy(make_and_model, make_and_model + 6);
|
||||
+ else if (!_cups_strncasecmp(make_and_model, "HP HP ", 6))
|
||||
+ _cups_strcpy(make_and_model, make_and_model + 3);
|
||||
+ else if (!_cups_strncasecmp(make_and_model, "Lexmark International Lexmark ", 30))
|
||||
+ _cups_strcpy(make_and_model, make_and_model + 22);
|
||||
+
|
||||
device->make_and_model = strdup(make_and_model);
|
||||
}
|
||||
else
|
||||
diff --git a/cgi-bin/admin.c b/cgi-bin/admin.c
|
||||
index f788083fb..a3b5057b0 100644
|
||||
--- a/cgi-bin/admin.c
|
||||
+++ b/cgi-bin/admin.c
|
||||
@@ -928,6 +929,8 @@ do_am_printer(http_t *http, /* I - HTTP connection */
|
||||
else if (!file &&
|
||||
(!cgiGetVariable("PPD_NAME") || cgiGetVariable("SELECT_MAKE")))
|
||||
{
|
||||
+ int ipp_everywhere = !strncmp(var, "ipp://", 6) || !strncmp(var, "ipps://", 7) || (!strncmp(var, "dnssd://", 8) && (strstr(var, "_ipp._tcp") || strstr(var, "_ipps._tcp")));
|
||||
+
|
||||
if (modify && !cgiGetVariable("SELECT_MAKE"))
|
||||
{
|
||||
/*
|
||||
@@ -1076,6 +1079,8 @@ do_am_printer(http_t *http, /* I - HTTP connection */
|
||||
if (!modify)
|
||||
cgiSetVariable("CURRENT_MAKE_AND_MODEL",
|
||||
cgiGetArray("PPD_MAKE_AND_MODEL", 0));
|
||||
+ if (ipp_everywhere)
|
||||
+ cgiSetVariable("SHOW_IPP_EVERYWHERE", "1");
|
||||
cgiCopyTemplateLang("choose-model.tmpl");
|
||||
cgiEndHTML();
|
||||
}
|
||||
diff --git a/templates/choose-model.tmpl b/templates/choose-model.tmpl
|
||||
index ee9338cc5..d72534236 100644
|
||||
--- a/templates/choose-model.tmpl
|
||||
+++ b/templates/choose-model.tmpl
|
||||
@@ -39,6 +39,7 @@
|
||||
<TD>
|
||||
<SELECT NAME="PPD_NAME" SIZE="10">
|
||||
{op=add-printer?:<OPTION VALUE="__no_change__" SELECTED>Current Driver - {current_make_and_model}</OPTION>:}
|
||||
+{show_ipp_everywhere?<OPTION VALUE="everywhere" SELECTED>IPP Everywhere ™</OPTION>:}
|
||||
{[ppd_name]<OPTION VALUE="{ppd_name}" {op=modify-printer?:{?current_make_and_model={ppd_make_and_model}?SELECTED:}}>{ppd_make_and_model} ({ppd_natural_language})
|
||||
}</SELECT>
|
||||
</TD>
|
||||
diff --git a/templates/de/choose-model.tmpl b/templates/de/choose-model.tmpl
|
||||
index cb9b6f3bc..a08a8e3e0 100644
|
||||
--- a/templates/de/choose-model.tmpl
|
||||
+++ b/templates/de/choose-model.tmpl
|
||||
@@ -39,6 +39,7 @@ Drucker {?printer_is_shared=?nicht:{?printer_is_shared=0?nicht:}} im Netzwerk fr
|
||||
<TD>
|
||||
<SELECT NAME="PPD_NAME" SIZE="10">
|
||||
{op=add-printer?:<OPTION VALUE="__no_change__" SELECTED>Aktueller Treiber - {current_make_and_model}</OPTION>:}
|
||||
+{show_ipp_everywhere?<OPTION VALUE="everywhere" SELECTED>IPP Everywhere ™</OPTION>:}
|
||||
{[ppd_name]<OPTION VALUE="{ppd_name}" {op=modify-printer?:{?current_make_and_model={ppd_make_and_model}?SELECTED:}}>{ppd_make_and_model} ({ppd_natural_language})
|
||||
}</SELECT>
|
||||
</TD>
|
||||
diff --git a/templates/es/choose-model.tmpl b/templates/es/choose-model.tmpl
|
||||
index 8a5a4ba90..74f0a9bb9 100644
|
||||
--- a/templates/es/choose-model.tmpl
|
||||
+++ b/templates/es/choose-model.tmpl
|
||||
@@ -39,6 +39,7 @@
|
||||
<TD>
|
||||
<SELECT NAME="PPD_NAME" SIZE="10">
|
||||
{op=add-printer?:<OPTION VALUE="__no_change__" SELECTED>Controlador actual - {current_make_and_model}</OPTION>:}
|
||||
+{show_ipp_everywhere?<OPTION VALUE="everywhere" SELECTED>IPP Everywhere ™</OPTION>:}
|
||||
{[ppd_name]<OPTION VALUE="{ppd_name}" {op=modify-printer?:{?current_make_and_model={ppd_make_and_model}?SELECTED:}}>{ppd_make_and_model} ({ppd_natural_language})
|
||||
}</SELECT>
|
||||
</TD>
|
||||
diff --git a/templates/fr/choose-model.tmpl b/templates/fr/choose-model.tmpl
|
||||
index 1e154f18a..3038b3fe3 100644
|
||||
--- a/templates/fr/choose-model.tmpl
|
||||
+++ b/templates/fr/choose-model.tmpl
|
||||
@@ -39,6 +39,7 @@
|
||||
<TD>
|
||||
<SELECT NAME="PPD_NAME" SIZE="10">
|
||||
{op=add-printer?:<OPTION VALUE="__no_change__" SELECTED>Pilote actuel - {current_make_and_model}</OPTION>:}
|
||||
+{show_ipp_everywhere?<OPTION VALUE="everywhere" SELECTED>IPP Everywhere ™</OPTION>:}
|
||||
{[ppd_name]<OPTION VALUE="{ppd_name}" {op=modify-printer?:{?current_make_and_model={ppd_make_and_model}?SELECTED:}}>{ppd_make_and_model} ({ppd_natural_language})
|
||||
}</SELECT>
|
||||
</TD>
|
||||
diff --git a/templates/ja/choose-model.tmpl b/templates/ja/choose-model.tmpl
|
||||
index daf1375fd..b3c286b11 100644
|
||||
--- a/templates/ja/choose-model.tmpl
|
||||
+++ b/templates/ja/choose-model.tmpl
|
||||
@@ -39,6 +39,7 @@
|
||||
<TD>
|
||||
<SELECT NAME="PPD_NAME" SIZE="10">
|
||||
{op=add-printer?:<OPTION VALUE="__no_change__" SELECTED>現在のドライバー - {current_make_and_model}</OPTION>:}
|
||||
+{show_ipp_everywhere?<OPTION VALUE="everywhere" SELECTED>IPP Everywhere ™</OPTION>:}
|
||||
{[ppd_name]<OPTION VALUE="{ppd_name}" {op=modify-printer?:{?current_make_and_model={ppd_make_and_model}?SELECTED:}}>{ppd_make_and_model} ({ppd_natural_language})
|
||||
}</SELECT>
|
||||
</TD>
|
||||
diff --git a/templates/pt_BR/choose-model.tmpl b/templates/pt_BR/choose-model.tmpl
|
||||
index 55d8bd8d5..a5939ee9c 100644
|
||||
--- a/templates/pt_BR/choose-model.tmpl
|
||||
+++ b/templates/pt_BR/choose-model.tmpl
|
||||
@@ -39,6 +39,7 @@
|
||||
<TD>
|
||||
<SELECT NAME="PPD_NAME" SIZE="10">
|
||||
{op=add-printer?:<OPTION VALUE="__no_change__" SELECTED>Driver atual - {current_make_and_model}</OPTION>:}
|
||||
+{show_ipp_everywhere?<OPTION VALUE="everywhere" SELECTED>IPP Everywhere ™</OPTION>:}
|
||||
{[ppd_name]<OPTION VALUE="{ppd_name}" {op=modify-printer?:{?current_make_and_model={ppd_make_and_model}?SELECTED:}}>{ppd_make_and_model} ({ppd_natural_language})
|
||||
}</SELECT>
|
||||
</TD>
|
||||
diff --git a/templates/ru/choose-model.tmpl b/templates/ru/choose-model.tmpl
|
||||
index 2f0d6d9ba..86507814d 100644
|
||||
--- a/templates/ru/choose-model.tmpl
|
||||
+++ b/templates/ru/choose-model.tmpl
|
||||
@@ -39,6 +39,7 @@
|
||||
<TD>
|
||||
<SELECT NAME="PPD_NAME" SIZE="10">
|
||||
{op=add-printer?:<OPTION VALUE="__no_change__" SELECTED>Текущий драйвер - {current_make_and_model}</OPTION>:}
|
||||
+{show_ipp_everywhere?<OPTION VALUE="everywhere" SELECTED>IPP Everywhere ™</OPTION>:}
|
||||
{[ppd_name]<OPTION VALUE="{ppd_name}" {op=modify-printer?:{?current_make_and_model={ppd_make_and_model}?SELECTED:}}>{ppd_make_and_model} ({ppd_natural_language})
|
||||
}</SELECT>
|
||||
</TD>
|
63
cups-ippvalidateattr-regression.patch
Normal file
63
cups-ippvalidateattr-regression.patch
Normal file
@ -0,0 +1,63 @@
|
||||
diff --git a/cups/ipp.c b/cups/ipp.c
|
||||
index 95d53cc44..325de02b9 100644
|
||||
--- a/cups/ipp.c
|
||||
+++ b/cups/ipp.c
|
||||
@@ -5033,16 +5033,19 @@ ippValidateAttribute(
|
||||
break;
|
||||
}
|
||||
|
||||
- if (*ptr < ' ' || *ptr == 0x7f)
|
||||
- {
|
||||
- ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad text value \"%s\" - bad control character (PWG 5100.14 section 8.3)."), attr->name, attr->values[i].string.text);
|
||||
- return (0);
|
||||
- }
|
||||
- else if (*ptr)
|
||||
- {
|
||||
- ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad text value \"%s\" - bad UTF-8 sequence (RFC 8011 section 5.1.2)."), attr->name, attr->values[i].string.text);
|
||||
- return (0);
|
||||
- }
|
||||
+ if (*ptr)
|
||||
+ {
|
||||
+ if (*ptr < ' ' || *ptr == 0x7f)
|
||||
+ {
|
||||
+ ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad text value \"%s\" - bad control character (PWG 5100.14 section 8.3)."), attr->name, attr->values[i].string.text);
|
||||
+ return (0);
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad text value \"%s\" - bad UTF-8 sequence (RFC 8011 section 5.1.2)."), attr->name, attr->values[i].string.text);
|
||||
+ return (0);
|
||||
+ }
|
||||
+ }
|
||||
|
||||
if ((ptr - attr->values[i].string.text) > (IPP_MAX_TEXT - 1))
|
||||
{
|
||||
@@ -5091,16 +5094,19 @@ ippValidateAttribute(
|
||||
break;
|
||||
}
|
||||
|
||||
- if (*ptr < ' ' || *ptr == 0x7f)
|
||||
- {
|
||||
- ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad name value \"%s\" - bad control character (PWG 5100.14 section 8.1)."), attr->name, attr->values[i].string.text);
|
||||
- return (0);
|
||||
- }
|
||||
- else if (*ptr)
|
||||
+ if (*ptr)
|
||||
{
|
||||
- ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad name value \"%s\" - bad UTF-8 sequence (RFC 8011 section 5.1.3)."), attr->name, attr->values[i].string.text);
|
||||
- return (0);
|
||||
- }
|
||||
+ if (*ptr < ' ' || *ptr == 0x7f)
|
||||
+ {
|
||||
+ ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad name value \"%s\" - bad control character (PWG 5100.14 section 8.1)."), attr->name, attr->values[i].string.text);
|
||||
+ return (0);
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad name value \"%s\" - bad UTF-8 sequence (RFC 8011 section 5.1.3)."), attr->name, attr->values[i].string.text);
|
||||
+ return (0);
|
||||
+ }
|
||||
+ }
|
||||
|
||||
if ((ptr - attr->values[i].string.text) > (IPP_MAX_NAME - 1))
|
||||
{
|
109
cups-journal-history.patch
Normal file
109
cups-journal-history.patch
Normal file
@ -0,0 +1,109 @@
|
||||
diff --git a/scheduler/log.c b/scheduler/log.c
|
||||
index b6226201f..cdb5437dc 100644
|
||||
--- a/scheduler/log.c
|
||||
+++ b/scheduler/log.c
|
||||
@@ -565,56 +565,15 @@ cupsdLogJob(cupsd_job_t *job, /* I - Job */
|
||||
if (level > LogLevel && LogDebugHistory <= 0)
|
||||
return (1);
|
||||
|
||||
-#ifdef HAVE_SYSTEMD_SD_JOURNAL_H
|
||||
- if (!strcmp(ErrorLog, "syslog"))
|
||||
- {
|
||||
- cupsd_printer_t *printer = job ? (job->printer ? job->printer : (job->dest ? cupsdFindDest(job->dest) : NULL)) : NULL;
|
||||
- static const char * const job_states[] =
|
||||
- { /* job-state strings */
|
||||
- "Pending",
|
||||
- "PendingHeld",
|
||||
- "Processing",
|
||||
- "ProcessingStopped",
|
||||
- "Canceled",
|
||||
- "Aborted",
|
||||
- "Completed"
|
||||
- };
|
||||
-
|
||||
- va_start(ap, message);
|
||||
-
|
||||
- do
|
||||
- {
|
||||
- va_copy(ap2, ap);
|
||||
- status = format_log_line(message, ap2);
|
||||
- va_end(ap2);
|
||||
- }
|
||||
- while (status == 0);
|
||||
-
|
||||
- va_end(ap);
|
||||
-
|
||||
- if (job)
|
||||
- sd_journal_send("MESSAGE=%s", log_line,
|
||||
- "PRIORITY=%i", log_levels[level],
|
||||
- PWG_Event"=JobStateChanged",
|
||||
- PWG_ServiceURI"=%s", printer ? printer->uri : "",
|
||||
- PWG_JobID"=%d", job->id,
|
||||
- PWG_JobState"=%s", job->state_value < IPP_JSTATE_PENDING ? "" : job_states[job->state_value - IPP_JSTATE_PENDING],
|
||||
- PWG_JobImpressionsCompleted"=%d", ippGetInteger(job->impressions, 0),
|
||||
- NULL);
|
||||
- else
|
||||
- sd_journal_send("MESSAGE=%s", log_line,
|
||||
- "PRIORITY=%i", log_levels[level],
|
||||
- NULL);
|
||||
-
|
||||
- return (1);
|
||||
- }
|
||||
-#endif /* HAVE_SYSTEMD_SD_JOURNAL_H */
|
||||
-
|
||||
/*
|
||||
* Format and write the log message...
|
||||
*/
|
||||
|
||||
+#ifdef HAVE_SYSTEMD_SD_JOURNAL_H
|
||||
+ if (job && strcmp(ErrorLog, "syslog"))
|
||||
+#else
|
||||
if (job)
|
||||
+#endif /* HAVE_SYSTEMD_SD_JOURNAL_H */
|
||||
snprintf(jobmsg, sizeof(jobmsg), "[Job %d] %s", job->id, message);
|
||||
else
|
||||
strlcpy(jobmsg, message, sizeof(jobmsg));
|
||||
@@ -673,7 +632,43 @@ cupsdLogJob(cupsd_job_t *job, /* I - Job */
|
||||
return (1);
|
||||
}
|
||||
else if (level <= LogLevel)
|
||||
+ {
|
||||
+#ifdef HAVE_SYSTEMD_SD_JOURNAL_H
|
||||
+ if (!strcmp(ErrorLog, "syslog"))
|
||||
+ {
|
||||
+ cupsd_printer_t *printer = job ? (job->printer ? job->printer : (job->dest ? cupsdFindDest(job->dest) : NULL)) : NULL;
|
||||
+ static const char * const job_states[] =
|
||||
+ { /* job-state strings */
|
||||
+ "Pending",
|
||||
+ "PendingHeld",
|
||||
+ "Processing",
|
||||
+ "ProcessingStopped",
|
||||
+ "Canceled",
|
||||
+ "Aborted",
|
||||
+ "Completed"
|
||||
+ };
|
||||
+
|
||||
+ if (job)
|
||||
+ sd_journal_send("MESSAGE=%s", log_line,
|
||||
+ "PRIORITY=%i", log_levels[level],
|
||||
+ PWG_Event"=JobStateChanged",
|
||||
+ PWG_ServiceURI"=%s", printer ? printer->uri : "",
|
||||
+ PWG_JobID"=%d", job->id,
|
||||
+ PWG_JobState"=%s", job->state_value < IPP_JSTATE_PENDING ? "" : job_states[job->state_value - IPP_JSTATE_PENDING],
|
||||
+ PWG_JobImpressionsCompleted"=%d", ippGetInteger(job->impressions, 0),
|
||||
+ NULL);
|
||||
+ else
|
||||
+ sd_journal_send("MESSAGE=%s", log_line,
|
||||
+ "PRIORITY=%i", log_levels[level],
|
||||
+ NULL);
|
||||
+
|
||||
+ return (1);
|
||||
+ }
|
||||
+ else
|
||||
+#endif /* HAVE_SYSTEMD_SD_JOURNAL_H */
|
||||
+
|
||||
return (cupsdWriteErrorLog(level, log_line));
|
||||
+ }
|
||||
else
|
||||
return (1);
|
||||
}
|
63
cups-logrotate.patch
Normal file
63
cups-logrotate.patch
Normal file
@ -0,0 +1,63 @@
|
||||
diff -up cups-2.1b1/scheduler/log.c.logrotate cups-2.1b1/scheduler/log.c
|
||||
--- cups-2.1b1/scheduler/log.c.logrotate 2015-06-04 20:00:31.000000000 +0200
|
||||
+++ cups-2.1b1/scheduler/log.c 2015-06-29 13:25:09.623350218 +0200
|
||||
@@ -26,6 +26,9 @@
|
||||
# include <systemd/sd-journal.h>
|
||||
#endif /* HAVE_ASL_H */
|
||||
#include <syslog.h>
|
||||
+#include <sys/types.h>
|
||||
+#include <sys/stat.h>
|
||||
+#include <unistd.h>
|
||||
|
||||
|
||||
/*
|
||||
@@ -135,12 +138,10 @@ cupsdCheckLogFile(cups_file_t **lf, /* I
|
||||
}
|
||||
|
||||
/*
|
||||
- * Format the filename as needed...
|
||||
+ * Format the filename...
|
||||
*/
|
||||
|
||||
- if (!*lf ||
|
||||
- (strncmp(logname, "/dev/", 5) && cupsFileTell(*lf) > MaxLogSize &&
|
||||
- MaxLogSize > 0))
|
||||
+ if (strncmp(logname, "/dev/", 5))
|
||||
{
|
||||
/*
|
||||
* Handle format strings...
|
||||
@@ -254,6 +255,34 @@ cupsdCheckLogFile(cups_file_t **lf, /* I
|
||||
/*
|
||||
* Change ownership and permissions of non-device logs...
|
||||
*/
|
||||
+
|
||||
+ fchown(cupsFileNumber(*lf), RunUser, Group);
|
||||
+ fchmod(cupsFileNumber(*lf), LogFilePerm);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /*
|
||||
+ * Has someone else (i.e. logrotate) already rotated the log for us?
|
||||
+ */
|
||||
+ else if (strncmp(filename, "/dev/", 5))
|
||||
+ {
|
||||
+ struct stat st;
|
||||
+ if (stat(filename, &st) || st.st_size == 0)
|
||||
+ {
|
||||
+ /* File is either missing or has zero size. */
|
||||
+
|
||||
+ cupsFileClose(*lf);
|
||||
+ if ((*lf = cupsFileOpen(filename, "a")) == NULL)
|
||||
+ {
|
||||
+ syslog(LOG_ERR, "Unable to open log file \"%s\" - %s", filename,
|
||||
+ strerror(errno));
|
||||
+
|
||||
+ return (0);
|
||||
+ }
|
||||
+
|
||||
+ /*
|
||||
+ * Change ownership and permissions of non-device logs...
|
||||
+ */
|
||||
|
||||
fchown(cupsFileNumber(*lf), RunUser, Group);
|
||||
fchmod(cupsFileNumber(*lf), LogFilePerm);
|
48
cups-lpr-help.patch
Normal file
48
cups-lpr-help.patch
Normal file
@ -0,0 +1,48 @@
|
||||
diff -up cups-2.2b2/berkeley/lpr.c.lpr-help cups-2.2b2/berkeley/lpr.c
|
||||
--- cups-2.2b2/berkeley/lpr.c.lpr-help 2016-06-24 17:43:35.000000000 +0200
|
||||
+++ cups-2.2b2/berkeley/lpr.c 2016-06-27 15:11:30.646348752 +0200
|
||||
@@ -18,6 +18,31 @@
|
||||
#include <cups/cups-private.h>
|
||||
|
||||
|
||||
+static void
|
||||
+usage (const char *name)
|
||||
+{
|
||||
+ _cupsLangPrintf(stdout,
|
||||
+"Usage: %s [OPTION] [ file(s) ]\n"
|
||||
+"Print files.\n\n"
|
||||
+" -E force encryption\n"
|
||||
+" -H server[:port] specify alternate server\n"
|
||||
+" -C title, -J title, -T title\n"
|
||||
+" set the job name\n\n"
|
||||
+" -P destination/instance print to named printer\n"
|
||||
+" -U username specify alternate username\n"
|
||||
+" -# num-copies set number of copies\n"
|
||||
+" -h disable banner printing\n"
|
||||
+" -l print without filtering\n"
|
||||
+" -m send email on completion\n"
|
||||
+" -o option[=value] set a job option\n"
|
||||
+" -p format text file with header\n"
|
||||
+" -q hold job for printing\n"
|
||||
+" -r delete files after printing\n"
|
||||
+"\nWith no file given, read standard input.\n"
|
||||
+, name);
|
||||
+}
|
||||
+
|
||||
+
|
||||
/*
|
||||
* 'main()' - Parse options and send files for printing.
|
||||
*/
|
||||
@@ -281,6 +306,12 @@ main(int argc, /* I - Number of comm
|
||||
break;
|
||||
|
||||
default :
|
||||
+ if (!strcmp (argv[i], "--help"))
|
||||
+ {
|
||||
+ usage (argv[0]);
|
||||
+ return (0);
|
||||
+ }
|
||||
+
|
||||
_cupsLangPrintf(stderr, _("%s: Error - unknown option \"%c\"."), argv[0], *opt);
|
||||
return (1);
|
||||
}
|
1997
cups-lspp.patch
Normal file
1997
cups-lspp.patch
Normal file
File diff suppressed because it is too large
Load Diff
16
cups-multilib.patch
Normal file
16
cups-multilib.patch
Normal file
@ -0,0 +1,16 @@
|
||||
diff -up cups-1.5b1/cups-config.in.multilib cups-1.5b1/cups-config.in
|
||||
--- cups-1.5b1/cups-config.in.multilib 2010-06-16 02:48:25.000000000 +0200
|
||||
+++ cups-1.5b1/cups-config.in 2011-05-23 17:33:31.000000000 +0200
|
||||
@@ -22,8 +22,10 @@ prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
bindir=@bindir@
|
||||
includedir=@includedir@
|
||||
-libdir=@libdir@
|
||||
-imagelibdir=@libdir@
|
||||
+# Fetch libdir from gnutls's pkg-config script. This is a bit
|
||||
+# of a cheat, but the cups-devel package requires gnutls-devel anyway.
|
||||
+libdir=`pkg-config --variable=libdir gnutls`
|
||||
+imagelibdir=`pkg-config --variable=libdir gnutls`
|
||||
datarootdir=@datadir@
|
||||
datadir=@datadir@
|
||||
sysconfdir=@sysconfdir@
|
10
cups-no-export-ssllibs.patch
Normal file
10
cups-no-export-ssllibs.patch
Normal file
@ -0,0 +1,10 @@
|
||||
diff -up cups-2.2b2/config-scripts/cups-ssl.m4.no-export-ssllibs cups-2.2b2/config-scripts/cups-ssl.m4
|
||||
--- cups-2.2b2/config-scripts/cups-ssl.m4.no-export-ssllibs 2016-06-27 15:06:22.299980753 +0200
|
||||
+++ cups-2.2b2/config-scripts/cups-ssl.m4 2016-06-27 15:08:00.953154042 +0200
|
||||
@@ -102,5 +102,5 @@ AC_SUBST(IPPALIASES)
|
||||
AC_SUBST(SSLFLAGS)
|
||||
AC_SUBST(SSLLIBS)
|
||||
|
||||
-EXPORT_SSLLIBS="$SSLLIBS"
|
||||
+EXPORT_SSLLIBS=""
|
||||
AC_SUBST(EXPORT_SSLLIBS)
|
18
cups-no-gzip-man.patch
Normal file
18
cups-no-gzip-man.patch
Normal file
@ -0,0 +1,18 @@
|
||||
diff -up cups-2.2.4/config-scripts/cups-manpages.m4.no-gzip-man cups-2.2.4/config-scripts/cups-manpages.m4
|
||||
--- cups-2.2.4/config-scripts/cups-manpages.m4.no-gzip-man 2017-06-30 20:37:09.470034273 +0200
|
||||
+++ cups-2.2.4/config-scripts/cups-manpages.m4 2017-06-30 20:39:15.982884832 +0200
|
||||
@@ -53,10 +53,10 @@ case "$host_os_name" in
|
||||
;;
|
||||
linux* | gnu* | darwin*)
|
||||
# Linux, GNU Hurd, and macOS
|
||||
- MAN1EXT=1.gz
|
||||
- MAN5EXT=5.gz
|
||||
- MAN7EXT=7.gz
|
||||
- MAN8EXT=8.gz
|
||||
+ MAN1EXT=1
|
||||
+ MAN5EXT=5
|
||||
+ MAN7EXT=7
|
||||
+ MAN8EXT=8
|
||||
MAN8DIR=8
|
||||
;;
|
||||
*)
|
21
cups-ricoh-deviceid-oid.patch
Normal file
21
cups-ricoh-deviceid-oid.patch
Normal file
@ -0,0 +1,21 @@
|
||||
diff -up cups-1.5b1/backend/snmp.c.ricoh-deviceid-oid cups-1.5b1/backend/snmp.c
|
||||
--- cups-1.5b1/backend/snmp.c.ricoh-deviceid-oid 2011-05-24 17:29:48.000000000 +0200
|
||||
+++ cups-1.5b1/backend/snmp.c 2011-05-24 17:29:48.000000000 +0200
|
||||
@@ -188,6 +188,7 @@ static const int LexmarkProductOID[] = {
|
||||
static const int LexmarkProductOID2[] = { 1,3,6,1,4,1,674,10898,100,2,1,2,1,2,1,-1 };
|
||||
static const int LexmarkDeviceIdOID[] = { 1,3,6,1,4,1,641,2,1,2,1,3,1,-1 };
|
||||
static const int HPDeviceIdOID[] = { 1,3,6,1,4,1,11,2,3,9,1,1,7,0,-1 };
|
||||
+static const int RicohDeviceIdOID[] = { 1,3,6,1,4,1,367,3,2,1,1,1,11,0,-1 };
|
||||
static const int XeroxProductOID[] = { 1,3,6,1,4,1,128,2,1,3,1,2,0,-1 };
|
||||
static cups_array_t *DeviceURIs = NULL;
|
||||
static int HostNameLookups = 0;
|
||||
@@ -1005,6 +1006,9 @@ read_snmp_response(int fd) /* I - SNMP
|
||||
packet.community, CUPS_ASN1_GET_REQUEST,
|
||||
DEVICE_ID, LexmarkDeviceIdOID);
|
||||
_cupsSNMPWrite(fd, &(packet.address), CUPS_SNMP_VERSION_1,
|
||||
+ packet.community, CUPS_ASN1_GET_REQUEST,
|
||||
+ DEVICE_ID, RicohDeviceIdOID);
|
||||
+ _cupsSNMPWrite(fd, &(packet.address), CUPS_SNMP_VERSION_1,
|
||||
packet.community, CUPS_ASN1_GET_REQUEST,
|
||||
DEVICE_PRODUCT, XeroxProductOID);
|
||||
_cupsSNMPWrite(fd, &(packet.address), CUPS_SNMP_VERSION_1,
|
48
cups-synconclose.patch
Normal file
48
cups-synconclose.patch
Normal file
@ -0,0 +1,48 @@
|
||||
diff -up cups-2.0.2/conf/cups-files.conf.in.LGOyhq cups-2.0.2/conf/cups-files.conf.in
|
||||
--- cups-2.0.2/conf/cups-files.conf.in.LGOyhq 2015-02-10 13:51:24.912193296 +0100
|
||||
+++ cups-2.0.2/conf/cups-files.conf.in 2015-02-10 13:52:49.400997262 +0100
|
||||
@@ -7,7 +7,7 @@
|
||||
#FatalErrors @CUPS_FATAL_ERRORS@
|
||||
|
||||
# Do we call fsync() after writing configuration or status files?
|
||||
-#SyncOnClose No
|
||||
+#SyncOnClose Yes
|
||||
|
||||
# Default user and group for filters/backends/helper programs; this cannot be
|
||||
# any user or group that resolves to ID 0 for security reasons...
|
||||
diff -up cups-2.0.2/doc/help/man-cups-files.conf.html.LGOyhq cups-2.0.2/doc/help/man-cups-files.conf.html
|
||||
--- cups-2.0.2/doc/help/man-cups-files.conf.html.LGOyhq 2015-02-10 13:52:49.400997262 +0100
|
||||
+++ cups-2.0.2/doc/help/man-cups-files.conf.html 2015-02-10 13:53:07.057747311 +0100
|
||||
@@ -136,7 +136,7 @@ The default is "/etc/cups".
|
||||
<dd style="margin-left: 5.0em">Specifies whether the scheduler calls
|
||||
<b>fsync</b>(2)
|
||||
after writing configuration or state files.
|
||||
-The default is "No".
|
||||
+The default is "Yes".
|
||||
<dt><a name="SystemGroup"></a><b>SystemGroup </b><i>group-name </i>[ ... <i>group-name</i> ]
|
||||
<dd style="margin-left: 5.0em">Specifies the group(s) to use for <i>@SYSTEM</i> group authentication.
|
||||
The default contains "admin", "lpadmin", "root", "sys", and/or "system".
|
||||
diff -up cups-2.0.2/man/cups-files.conf.man.in.LGOyhq cups-2.0.2/man/cups-files.conf.man.in
|
||||
--- cups-2.0.2/man/cups-files.conf.man.in.LGOyhq 2015-02-10 13:52:49.400997262 +0100
|
||||
+++ cups-2.0.2/man/cups-files.conf.man.in 2015-02-10 13:53:23.753510964 +0100
|
||||
@@ -201,7 +201,7 @@ The default is "/etc/cups".
|
||||
Specifies whether the scheduler calls
|
||||
.BR fsync (2)
|
||||
after writing configuration or state files.
|
||||
-The default is "No".
|
||||
+The default is "Yes".
|
||||
.\"#SystemGroup
|
||||
.TP 5
|
||||
\fBSystemGroup \fIgroup-name \fR[ ... \fIgroup-name\fR ]
|
||||
diff -up cups-2.0.2/scheduler/conf.c.LGOyhq cups-2.0.2/scheduler/conf.c
|
||||
--- cups-2.0.2/scheduler/conf.c.LGOyhq 2015-02-10 13:51:24.991192177 +0100
|
||||
+++ cups-2.0.2/scheduler/conf.c 2015-02-10 13:52:49.401997248 +0100
|
||||
@@ -717,7 +717,7 @@ cupsdReadConfiguration(void)
|
||||
RootCertDuration = 300;
|
||||
Sandboxing = CUPSD_SANDBOXING_STRICT;
|
||||
StrictConformance = FALSE;
|
||||
- SyncOnClose = FALSE;
|
||||
+ SyncOnClose = TRUE;
|
||||
Timeout = DEFAULT_TIMEOUT;
|
||||
WebInterface = CUPS_DEFAULT_WEBIF;
|
||||
|
38
cups-system-auth.patch
Normal file
38
cups-system-auth.patch
Normal file
@ -0,0 +1,38 @@
|
||||
diff -up cups-1.5b1/conf/cups.password-auth.system-auth cups-1.5b1/conf/cups.password-auth
|
||||
--- cups-1.5b1/conf/cups.password-auth.system-auth 2011-05-23 17:27:27.000000000 +0200
|
||||
+++ cups-1.5b1/conf/cups.password-auth 2011-05-23 17:27:27.000000000 +0200
|
||||
@@ -0,0 +1,4 @@
|
||||
+#%PAM-1.0
|
||||
+# Use password-auth common PAM configuration for the daemon
|
||||
+auth include password-auth
|
||||
+account include password-auth
|
||||
diff -up cups-1.5b1/conf/cups.system-auth.system-auth cups-1.5b1/conf/cups.system-auth
|
||||
--- cups-1.5b1/conf/cups.system-auth.system-auth 2011-05-23 17:27:27.000000000 +0200
|
||||
+++ cups-1.5b1/conf/cups.system-auth 2011-05-23 17:27:27.000000000 +0200
|
||||
@@ -0,0 +1,3 @@
|
||||
+#%PAM-1.0
|
||||
+auth include system-auth
|
||||
+account include system-auth
|
||||
diff -up cups-1.5b1/conf/Makefile.system-auth cups-1.5b1/conf/Makefile
|
||||
--- cups-1.5b1/conf/Makefile.system-auth 2011-05-12 07:21:56.000000000 +0200
|
||||
+++ cups-1.5b1/conf/Makefile 2011-05-23 17:27:27.000000000 +0200
|
||||
@@ -90,10 +90,16 @@ install-data:
|
||||
done
|
||||
-if test x$(PAMDIR) != x; then \
|
||||
$(INSTALL_DIR) -m 755 $(BUILDROOT)$(PAMDIR); \
|
||||
- if test -r $(BUILDROOT)$(PAMDIR)/cups ; then \
|
||||
- $(INSTALL_DATA) $(PAMFILE) $(BUILDROOT)$(PAMDIR)/cups.N ; \
|
||||
+ if test -f /etc/pam.d/password-auth; then \
|
||||
+ $(INSTALL_DATA) cups.password-auth $(BUILDROOT)$(PAMDIR)/cups; \
|
||||
+ elif test -f /etc/pam.d/system-auth; then \
|
||||
+ $(INSTALL_DATA) cups.system-auth $(BUILDROOT)$(PAMDIR)/cups; \
|
||||
else \
|
||||
- $(INSTALL_DATA) $(PAMFILE) $(BUILDROOT)$(PAMDIR)/cups ; \
|
||||
+ if test -r $(BUILDROOT)$(PAMDIR)/cups ; then \
|
||||
+ $(INSTALL_DATA) $(PAMFILE) $(BUILDROOT)$(PAMDIR)/cups.N ; \
|
||||
+ else \
|
||||
+ $(INSTALL_DATA) $(PAMFILE) $(BUILDROOT)$(PAMDIR)/cups ; \
|
||||
+ fi ; \
|
||||
fi ; \
|
||||
fi
|
||||
|
73
cups-systemd-socket.patch
Normal file
73
cups-systemd-socket.patch
Normal file
@ -0,0 +1,73 @@
|
||||
diff -up cups-2.2.8/scheduler/main.c.systemd-socket cups-2.2.8/scheduler/main.c
|
||||
--- cups-2.2.8/scheduler/main.c.systemd-socket 2018-06-05 18:06:54.000000000 +0200
|
||||
+++ cups-2.2.8/scheduler/main.c 2018-09-19 10:38:09.285892238 +0200
|
||||
@@ -681,8 +681,16 @@ main(int argc, /* I - Number of comm
|
||||
|
||||
#ifdef HAVE_ONDEMAND
|
||||
if (OnDemand)
|
||||
+ {
|
||||
cupsdAddEvent(CUPSD_EVENT_SERVER_STARTED, NULL, NULL, "Scheduler started on demand.");
|
||||
- else
|
||||
+# ifdef HAVE_SYSTEMD
|
||||
+ sd_notifyf(0, "READY=1\n"
|
||||
+ "STATUS=Scheduler is running...\n"
|
||||
+ "MAINPID=%lu",
|
||||
+ (unsigned long) getpid());
|
||||
+# endif /* HAVE_SYSTEMD */
|
||||
+ } else
|
||||
+
|
||||
#endif /* HAVE_ONDEMAND */
|
||||
if (fg)
|
||||
cupsdAddEvent(CUPSD_EVENT_SERVER_STARTED, NULL, NULL, "Scheduler started in foreground.");
|
||||
diff -up cups-2.2.8/scheduler/org.cups.cupsd.path.in.systemd-socket cups-2.2.8/scheduler/org.cups.cupsd.path.in
|
||||
--- cups-2.2.8/scheduler/org.cups.cupsd.path.in.systemd-socket 2018-06-05 18:06:54.000000000 +0200
|
||||
+++ cups-2.2.8/scheduler/org.cups.cupsd.path.in 2018-09-19 10:46:11.246666713 +0200
|
||||
@@ -1,6 +1,6 @@
|
||||
[Unit]
|
||||
Description=CUPS Scheduler
|
||||
-PartOf=org.cups.cupsd.service
|
||||
+PartOf=cups.service
|
||||
|
||||
[Path]
|
||||
PathExists=@CUPS_CACHEDIR@/org.cups.cupsd
|
||||
diff -up cups-2.2.8/scheduler/org.cups.cupsd.service.in.systemd-socket cups-2.2.8/scheduler/org.cups.cupsd.service.in
|
||||
--- cups-2.2.8/scheduler/org.cups.cupsd.service.in.systemd-socket 2018-06-05 18:06:54.000000000 +0200
|
||||
+++ cups-2.2.8/scheduler/org.cups.cupsd.service.in 2018-09-19 10:41:11.378295760 +0200
|
||||
@@ -1,12 +1,13 @@
|
||||
[Unit]
|
||||
Description=CUPS Scheduler
|
||||
Documentation=man:cupsd(8)
|
||||
+After=network.target
|
||||
|
||||
[Service]
|
||||
ExecStart=@sbindir@/cupsd -l
|
||||
-Type=simple
|
||||
+Type=notify
|
||||
Restart=on-failure
|
||||
|
||||
[Install]
|
||||
-Also=org.cups.cupsd.socket org.cups.cupsd.path
|
||||
+Also=cups.socket cups.path
|
||||
WantedBy=printer.target
|
||||
diff -up cups-2.2.8/scheduler/org.cups.cupsd.socket.in.systemd-socket cups-2.2.8/scheduler/org.cups.cupsd.socket.in
|
||||
--- cups-2.2.8/scheduler/org.cups.cupsd.socket.in.systemd-socket 2018-09-19 10:42:21.411681757 +0200
|
||||
+++ cups-2.2.8/scheduler/org.cups.cupsd.socket.in 2018-09-19 10:42:44.819476530 +0200
|
||||
@@ -1,6 +1,6 @@
|
||||
[Unit]
|
||||
Description=CUPS Scheduler
|
||||
-PartOf=org.cups.cupsd.service
|
||||
+PartOf=cups.service
|
||||
|
||||
[Socket]
|
||||
ListenStream=@CUPS_DEFAULT_DOMAINSOCKET@
|
||||
diff -up cups-2.2.8/scheduler/org.cups.cups-lpd.socket.systemd-socket cups-2.2.8/scheduler/org.cups.cups-lpd.socket
|
||||
--- cups-2.2.8/scheduler/org.cups.cups-lpd.socket.systemd-socket 2018-09-19 10:53:59.222563802 +0200
|
||||
+++ cups-2.2.8/scheduler/org.cups.cups-lpd.socket 2018-09-19 10:54:16.483412464 +0200
|
||||
@@ -1,6 +1,6 @@
|
||||
[Unit]
|
||||
Description=CUPS LPD Server Socket
|
||||
-PartOf=org.cups.cups-lpd.service
|
||||
+PartOf=cups-lpd.service
|
||||
|
||||
[Socket]
|
||||
ListenStream=515
|
51
cups-uri-compat.patch
Normal file
51
cups-uri-compat.patch
Normal file
@ -0,0 +1,51 @@
|
||||
diff -up cups-1.5b1/backend/usb-unix.c.uri-compat cups-1.5b1/backend/usb-unix.c
|
||||
--- cups-1.5b1/backend/usb-unix.c.uri-compat 2011-05-24 15:59:05.000000000 +0200
|
||||
+++ cups-1.5b1/backend/usb-unix.c 2011-05-24 16:02:03.000000000 +0200
|
||||
@@ -63,11 +63,34 @@ print_device(const char *uri, /* I - De
|
||||
int device_fd; /* USB device */
|
||||
ssize_t tbytes; /* Total number of bytes written */
|
||||
struct termios opts; /* Parallel port options */
|
||||
+ char *fixed_uri = strdup (uri);
|
||||
+ char *p;
|
||||
|
||||
|
||||
(void)argc;
|
||||
(void)argv;
|
||||
|
||||
+ p = strchr (fixed_uri, ':');
|
||||
+ if (p++ != NULL)
|
||||
+ {
|
||||
+ char *e;
|
||||
+ p += strspn (p, "/");
|
||||
+ e = strchr (p, '/');
|
||||
+ if (e > p)
|
||||
+ {
|
||||
+ size_t mfrlen = e - p;
|
||||
+ e++;
|
||||
+ if (!strncasecmp (e, p, mfrlen))
|
||||
+ {
|
||||
+ char *x = e + mfrlen;
|
||||
+ if (!strncmp (x, "%20", 3))
|
||||
+ /* Take mfr name out of mdl name for compatibility with
|
||||
+ * Fedora 11 before bug #507244 was fixed. */
|
||||
+ strcpy (e, x + 3); puts(fixed_uri);
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
/*
|
||||
* Open the USB port device...
|
||||
*/
|
||||
@@ -107,10 +130,10 @@ print_device(const char *uri, /* I - De
|
||||
_cups_strncasecmp(hostname, "Minolta", 7);
|
||||
#endif /* __FreeBSD__ || __NetBSD__ || __OpenBSD__ || __DragonFly__ */
|
||||
|
||||
- if (use_bc && !strncmp(uri, "usb:/dev/", 9))
|
||||
+ if (use_bc && !strncmp(fixed_uri, "usb:/dev/", 9))
|
||||
use_bc = 0;
|
||||
|
||||
- if ((device_fd = open_device(uri, &use_bc)) == -1)
|
||||
+ if ((device_fd = open_device(fixed_uri, &use_bc)) == -1)
|
||||
{
|
||||
if (getenv("CLASS") != NULL)
|
||||
{
|
52
cups-usb-paperout.patch
Normal file
52
cups-usb-paperout.patch
Normal file
@ -0,0 +1,52 @@
|
||||
diff -up cups-1.5b1/backend/usb-unix.c.usb-paperout cups-1.5b1/backend/usb-unix.c
|
||||
--- cups-1.5b1/backend/usb-unix.c.usb-paperout 2011-05-24 15:51:39.000000000 +0200
|
||||
+++ cups-1.5b1/backend/usb-unix.c 2011-05-24 15:51:39.000000000 +0200
|
||||
@@ -30,6 +30,11 @@
|
||||
|
||||
#include <sys/select.h>
|
||||
|
||||
+#ifdef __linux
|
||||
+#include <sys/ioctl.h>
|
||||
+#include <linux/lp.h>
|
||||
+#endif /* __linux */
|
||||
+
|
||||
|
||||
/*
|
||||
* Local functions...
|
||||
@@ -334,7 +339,19 @@ open_device(const char *uri, /* I - Dev
|
||||
if (!strncmp(uri, "usb:/dev/", 9))
|
||||
#ifdef __linux
|
||||
{
|
||||
- return (open(uri + 4, O_RDWR | O_EXCL));
|
||||
+ fd = open(uri + 4, O_RDWR | O_EXCL);
|
||||
+
|
||||
+ if (fd != -1)
|
||||
+ {
|
||||
+ /*
|
||||
+ * Tell the driver to return from write() with errno==ENOSPACE
|
||||
+ * on paper-out.
|
||||
+ */
|
||||
+ unsigned int t = 1;
|
||||
+ ioctl (fd, LPABORT, &t);
|
||||
+ }
|
||||
+
|
||||
+ return fd;
|
||||
}
|
||||
else if (!strncmp(uri, "usb://", 6))
|
||||
{
|
||||
@@ -400,7 +417,14 @@ open_device(const char *uri, /* I - Dev
|
||||
if (!strcmp(uri, device_uri))
|
||||
{
|
||||
/*
|
||||
- * Yes, return this file descriptor...
|
||||
+ * Yes, tell the driver to return from write() with
|
||||
+ * errno==ENOSPACE on paper-out.
|
||||
+ */
|
||||
+ unsigned int t = 1;
|
||||
+ ioctl (fd, LPABORT, &t);
|
||||
+
|
||||
+ /*
|
||||
+ * Return this file descriptor...
|
||||
*/
|
||||
|
||||
fprintf(stderr, "DEBUG: Printer using device file \"%s\"...\n",
|
19
cups-web-devices-timeout.patch
Normal file
19
cups-web-devices-timeout.patch
Normal file
@ -0,0 +1,19 @@
|
||||
diff -up cups-1.7rc1/cgi-bin/admin.c.web-devices-timeout cups-1.7rc1/cgi-bin/admin.c
|
||||
--- cups-1.7rc1/cgi-bin/admin.c.web-devices-timeout 2013-05-29 12:51:34.000000000 +0100
|
||||
+++ cups-1.7rc1/cgi-bin/admin.c 2013-08-16 16:01:17.308264287 +0100
|
||||
@@ -1019,13 +1019,13 @@ do_am_printer(http_t *http, /* I - HTTP
|
||||
}
|
||||
|
||||
/*
|
||||
- * Scan for devices for up to 30 seconds...
|
||||
+ * Scan for devices for up to 10 seconds...
|
||||
*/
|
||||
|
||||
fputs("DEBUG: Getting list of devices...\n", stderr);
|
||||
|
||||
current_device = 0;
|
||||
- if (cupsGetDevices(http, 5, CUPS_INCLUDE_ALL, CUPS_EXCLUDE_NONE,
|
||||
+ if (cupsGetDevices(http, 10, CUPS_INCLUDE_ALL, CUPS_EXCLUDE_NONE,
|
||||
(cups_device_cb_t)choose_device_cb,
|
||||
(void *)title) == IPP_OK)
|
||||
{
|
12
cups-ypbind.patch
Normal file
12
cups-ypbind.patch
Normal file
@ -0,0 +1,12 @@
|
||||
diff -up cups-2.2.0/scheduler/org.cups.cupsd.service.in.ypbind cups-2.2.0/scheduler/org.cups.cupsd.service.in
|
||||
--- cups-2.2.0/scheduler/org.cups.cupsd.service.in.ypbind 2017-09-22 16:51:39.053585694 +0200
|
||||
+++ cups-2.2.0/scheduler/org.cups.cupsd.service.in 2017-09-22 16:52:02.588403584 +0200
|
||||
@@ -1,7 +1,7 @@
|
||||
[Unit]
|
||||
Description=CUPS Scheduler
|
||||
Documentation=man:cupsd(8)
|
||||
-After=network.target
|
||||
+After=network.target ypbind.service
|
||||
|
||||
[Service]
|
||||
ExecStart=@sbindir@/cupsd -l
|
5
cups.logrotate
Normal file
5
cups.logrotate
Normal file
@ -0,0 +1,5 @@
|
||||
/var/log/cups/*_log {
|
||||
missingok
|
||||
notifempty
|
||||
sharedscripts
|
||||
}
|
345
cups.spec
Normal file
345
cups.spec
Normal file
@ -0,0 +1,345 @@
|
||||
Name: cups
|
||||
Epoch: 1
|
||||
Version: 2.2.8
|
||||
Release: 7
|
||||
Summary: CUPS is the standards-based, open source printing system for linux operating systems.
|
||||
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
|
||||
|
||||
Source2: cupsprinter.png
|
||||
Source3: cups.logrotate
|
||||
Source4: ncp.backend
|
||||
Source5: macros.cups
|
||||
|
||||
Patch1: cups-no-gzip-man.patch
|
||||
Patch2: cups-system-auth.patch
|
||||
Patch3: cups-multilib.patch
|
||||
Patch5: cups-banners.patch
|
||||
Patch7: cups-no-export-ssllibs.patch
|
||||
Patch8: cups-direct-usb.patch
|
||||
Patch12: cups-eggcups.patch
|
||||
Patch13: cups-driverd-timeout.patch
|
||||
Patch15: cups-logrotate.patch
|
||||
Patch16: cups-usb-paperout.patch
|
||||
Patch19: cups-uri-compat.patch
|
||||
Patch22: cups-hp-deviceid-oid.patch
|
||||
Patch24: cups-ricoh-deviceid-oid.patch
|
||||
Patch25: cups-systemd-socket.patch
|
||||
Patch30: cups-freebind.patch
|
||||
Patch35: cups-ipp-multifile.patch
|
||||
Patch36: cups-web-devices-timeout.patch
|
||||
Patch37: cups-synconclose.patch
|
||||
Patch38: cups-ypbind.patch
|
||||
Patch100: cups-lspp.patch
|
||||
Patch9: cups-lpr-help.patch
|
||||
Patch18: cups-filter-debug.patch
|
||||
Patch29: cups-dymo-deviceid.patch
|
||||
Patch40: cups-journal-history.patch
|
||||
Patch41: cups-accesslog-null.patch
|
||||
Patch42: cups-epson-A6-crash.patch
|
||||
Patch43: cups-ippvalidateattr-regression.patch
|
||||
Patch44: cups-ippeve-webui.patch
|
||||
Patch45: 0001-Fix-memory-leaks-found-by-Coverity-Issue-5375.patch
|
||||
Patch6000: CVE-2018-4300.patch
|
||||
Patch6001: CVE-2019-8675-CVE-2019-8696.patch
|
||||
|
||||
Provides: cupsddk cupsddk-drivers cups-filesystem cups-client cups-ipptool cups-lpd
|
||||
Provides: lpd lpr /usr/bin/lpq /usr/bin/lpr /usr/bin/lp /usr/bin/cancel /usr/bin/lprm /usr/bin/lpstat
|
||||
Obsoletes: cups-client cups-filesystem cups-lpd cups-ipptool
|
||||
|
||||
BuildRequires: pam-devel pkgconf-pkg-config pkgconfig(gnutls) libacl-devel openldap-devel pkgconfig(libusb-1.0)
|
||||
BuildRequires: krb5-devel pkgconfig(avahi-client) systemd pkgconfig(libsystemd) pkgconfig(dbus-1) python3-cups
|
||||
BuildRequires: automake zlib-devel gcc gcc-c++ libselinux-devel audit-libs-devel
|
||||
Requires: dbus systemd acl cups-filters /usr/sbin/alternatives %{name}-libs = %{epoch}:%{version}-%{release}
|
||||
|
||||
%description
|
||||
CUPS is the standards-based, open source printing system developed by Apple Inc.
|
||||
for UNIX®-like operating systems. CUPS uses the Internet Printing
|
||||
Protocol (IPP) to support printing to local and network printers..
|
||||
|
||||
%package devel
|
||||
Summary: CUPS printing system - development environment
|
||||
License: LGPLv2
|
||||
Requires: %{name}%-libs = %{epoch}:%{version}-%{release}
|
||||
Requires: gnutls-devel krb5-devel zlib-devel
|
||||
Provides: cupsddk-devel
|
||||
|
||||
%description devel
|
||||
CUPS is the standards-based, open source printing system developed by Apple Inc.
|
||||
for macOS® and other UNIX®-like operating systems. Developers can use this development
|
||||
package to develop other printer drivers.
|
||||
|
||||
%package libs
|
||||
Summary: CUPS libs
|
||||
License: LGPLv2 and zlib
|
||||
|
||||
%description libs
|
||||
The package provides cups libraries
|
||||
|
||||
%package help
|
||||
Summary: Documents for cups
|
||||
Buildarch: noarch
|
||||
|
||||
%description help
|
||||
Man pages and other related documents.
|
||||
|
||||
%prep
|
||||
%autosetup -n %{name}-%{version} -p1
|
||||
|
||||
sed -i -e '1iMaxLogSize 0' conf/cupsd.conf.in
|
||||
sed -i -e 's,^ErrorLog .*$,ErrorLog syslog,' -i -e 's,^AccessLog .*$,AccessLog syslog,' -i -e 's,^PageLog .*,PageLog syslog,' conf/cups-files.conf.in
|
||||
|
||||
aclocal -I config-scripts
|
||||
autoconf -I config-scripts
|
||||
|
||||
%build
|
||||
export DSOFLAGS="$DSOFLAGS -L../cgi-bin -L../filter -L../ppdc -L../scheduler -Wl,-z,relro -Wl,-z,now -specs=/usr/lib/rpm/%{?_vendor}/%{?_vendor}-hardened-ld -Wl,-z,relro,-z,now -fPIE -pie"
|
||||
export CFLAGS="$RPM_OPT_FLAGS -fstack-protector-all -DLDAP_DEPRECATED=1"
|
||||
# --enable-debug to avoid stripping binaries
|
||||
%configure --with-docdir=%{_datadir}/%{name}/www --enable-debug \
|
||||
--enable-lspp \
|
||||
--with-exe-file-perm=0755 \
|
||||
--with-cupsd-file-perm=0755 \
|
||||
--with-log-file-perm=0600 \
|
||||
--enable-relro \
|
||||
--with-dbusdir=%{_sysconfdir}/dbus-1 \
|
||||
--with-php=/usr/bin/php-cgi \
|
||||
--enable-avahi \
|
||||
--enable-threads \
|
||||
--enable-gnutls \
|
||||
--enable-webif \
|
||||
--with-xinetd=no \
|
||||
--with-access-log-level=actions \
|
||||
--enable-page-logging \
|
||||
localedir=%{_datadir}/locale
|
||||
|
||||
%make_build
|
||||
|
||||
%install
|
||||
make BUILDROOT=${RPM_BUILD_ROOT} install
|
||||
|
||||
rm -rf ${RPM_BUILD_ROOT}%{_initddir} ${RPM_BUILD_ROOT}%{_sysconfdir}/{init.d,rc?.d}
|
||||
install -d ${RPM_BUILD_ROOT}%{_unitdir}
|
||||
|
||||
find ${RPM_BUILD_ROOT}%{_datadir}/cups/model -name "*.ppd" |xargs gzip -n9f
|
||||
|
||||
pushd ${RPM_BUILD_ROOT}%{_bindir}
|
||||
for file in cancel lp lpq lpr lprm lpstat; do
|
||||
mv $file $file.cups
|
||||
done
|
||||
|
||||
mv ${RPM_BUILD_ROOT}%{_sbindir}/lpc ${RPM_BUILD_ROOT}%{_sbindir}/lpc.cups
|
||||
cd ${RPM_BUILD_ROOT}%{_mandir}/man1
|
||||
for file in cancel lp lpq lpr lprm lpstat; do
|
||||
mv $file.1 $file-cups.1
|
||||
done
|
||||
|
||||
mv ${RPM_BUILD_ROOT}%{_mandir}/man8/lpc.8 ${RPM_BUILD_ROOT}%{_mandir}/man8/lpc-cups.8
|
||||
popd
|
||||
|
||||
mv ${RPM_BUILD_ROOT}%{_unitdir}/org.cups.cupsd.path ${RPM_BUILD_ROOT}%{_unitdir}/cups.path
|
||||
mv ${RPM_BUILD_ROOT}%{_unitdir}/org.cups.cupsd.service ${RPM_BUILD_ROOT}%{_unitdir}/cups.service
|
||||
mv ${RPM_BUILD_ROOT}%{_unitdir}/org.cups.cupsd.socket ${RPM_BUILD_ROOT}%{_unitdir}/cups.socket
|
||||
mv ${RPM_BUILD_ROOT}%{_unitdir}/org.cups.cups-lpd.socket ${RPM_BUILD_ROOT}%{_unitdir}/cups-lpd.socket
|
||||
mv ${RPM_BUILD_ROOT}%{_unitdir}/org.cups.cups-lpd@.service ${RPM_BUILD_ROOT}%{_unitdir}/cups-lpd@.service
|
||||
|
||||
/bin/sed -i -e "s,org.cups.cupsd,cups,g" ${RPM_BUILD_ROOT}%{_unitdir}/cups.service
|
||||
|
||||
install -d ${RPM_BUILD_ROOT}%{_datadir}/pixmaps ${RPM_BUILD_ROOT}%{_sysconfdir}/X11/sysconfig \
|
||||
${RPM_BUILD_ROOT}%{_sysconfdir}/X11/applnk/System ${RPM_BUILD_ROOT}%{_sysconfdir}/logrotate.d \
|
||||
${RPM_BUILD_ROOT}%{_rpmconfigdir}/macros.d
|
||||
install -p -m 644 %{SOURCE2} ${RPM_BUILD_ROOT}%{_datadir}/pixmaps
|
||||
install -p -m 644 %{SOURCE3} ${RPM_BUILD_ROOT}%{_sysconfdir}/logrotate.d/cups
|
||||
install -p -m 755 %{SOURCE4} ${RPM_BUILD_ROOT}%{_exec_prefix}/lib/cups/backend/ncp
|
||||
install -m 0644 %{SOURCE5} ${RPM_BUILD_ROOT}%{_rpmconfigdir}/macros.d
|
||||
|
||||
touch ${RPM_BUILD_ROOT}%{_sysconfdir}/cups/{printers,classes,client,subscriptions}.conf
|
||||
touch ${RPM_BUILD_ROOT}%{_sysconfdir}/cups/lpoptions
|
||||
|
||||
install -d ${RPM_BUILD_ROOT}%{_datadir}/ppd
|
||||
|
||||
install -d ${RPM_BUILD_ROOT}%{_tmpfilesdir}
|
||||
cat > ${RPM_BUILD_ROOT}%{_tmpfilesdir}/cups.conf <<EOF
|
||||
d /run/cups 0755 root lp -
|
||||
d /run/cups/certs 0511 lp sys -
|
||||
d /var/spool/cups/tmp - - - 30d
|
||||
EOF
|
||||
|
||||
cat > ${RPM_BUILD_ROOT}%{_tmpfilesdir}/cups-lp.conf <<EOF
|
||||
c /dev/lp0 0660 root lp - 6:0
|
||||
c /dev/lp1 0660 root lp - 6:1
|
||||
c /dev/lp2 0660 root lp - 6:2
|
||||
c /dev/lp3 0660 root lp - 6:3
|
||||
EOF
|
||||
|
||||
find ${RPM_BUILD_ROOT} -type f -o -type l | sed '
|
||||
s:.*\('%{_datadir}'/\)\([^/_]\+\)\(.*\.po$\):%lang(\2) \1\2\3:
|
||||
/^%lang(C)/d
|
||||
/^\([^%].*\)/d
|
||||
' > %{name}.lang
|
||||
|
||||
%pre
|
||||
|
||||
%preun
|
||||
%systemd_preun %{name}.path %{name}.socket %{name}.service
|
||||
%systemd_preun cups-lpd.socket
|
||||
|
||||
%post
|
||||
|
||||
%systemd_post %{name}.path %{name}.socket %{name}.service
|
||||
|
||||
install -d ${RPM_BUILD_ROOT}%{_localstatedir}/run/cups/certs
|
||||
|
||||
/bin/sed -i -e "s,^PageLogFormat,#PageLogFormat,i" %{_sysconfdir}/cups/cups-files.conf
|
||||
|
||||
%systemd_post cups-lpd.socket
|
||||
exit 0
|
||||
|
||||
%post libs -p /sbin/ldconfig
|
||||
|
||||
%postun
|
||||
|
||||
%systemd_postun_with_restart %{name}.path %{name}.socket %{name}.service
|
||||
%systemd_postun_with_restart cups-lpd.socket
|
||||
exit 0
|
||||
|
||||
%postun libs -p /sbin/ldconfig
|
||||
|
||||
%triggerin -- samba-client
|
||||
ln -sf %{_libexecdir}/samba/cups_backend_smb %{_exec_prefix}/lib/cups/backend/smb || :
|
||||
exit 0
|
||||
|
||||
%triggerun -- samba-client
|
||||
[ $2 = 0 ] || exit 0
|
||||
rm -f %{_exec_prefix}/lib/cups/backend/smb
|
||||
|
||||
%files -f %{name}.lang
|
||||
%dir %attr(0755,root,lp) %{_sysconfdir}/cups
|
||||
%dir %attr(0755,root,lp) %{_localstatedir}/run/cups
|
||||
%dir %attr(0511,lp,sys) %{_localstatedir}/run/cups/certs
|
||||
%{_tmpfilesdir}/cups.conf
|
||||
%{_tmpfilesdir}/cups-lp.conf
|
||||
%verify(not md5 size mtime) %config(noreplace) %attr(0640,root,lp) %{_sysconfdir}/cups/cupsd.conf
|
||||
%attr(0640,root,lp) %{_sysconfdir}/cups/cupsd.conf.default
|
||||
%verify(not md5 size mtime) %config(noreplace) %attr(0640,root,lp) %{_sysconfdir}/cups/cups-files.conf
|
||||
%attr(0640,root,lp) %{_sysconfdir}/cups/cups-files.conf.default
|
||||
%verify(not md5 size mtime) %config(noreplace) %attr(0644,root,lp) %{_sysconfdir}/cups/client.conf
|
||||
%verify(not md5 size mtime) %config(noreplace) %attr(0600,root,lp) %{_sysconfdir}/cups/classes.conf
|
||||
%verify(not md5 size mtime) %config(noreplace) %attr(0600,root,lp) %{_sysconfdir}/cups/printers.conf
|
||||
%verify(not md5 size mtime) %config(noreplace) %attr(0644,root,lp) %{_sysconfdir}/cups/snmp.conf
|
||||
%attr(0640,root,lp) %{_sysconfdir}/cups/snmp.conf.default
|
||||
%verify(not md5 size mtime) %config(noreplace) %attr(0640,root,lp) %{_sysconfdir}/cups/subscriptions.conf
|
||||
%verify(not md5 size mtime) %config(noreplace) %attr(0644,root,lp) %{_sysconfdir}/cups/lpoptions
|
||||
%dir %attr(0755,root,lp) %{_sysconfdir}/cups/ppd
|
||||
%dir %attr(0700,root,lp) %{_sysconfdir}/cups/ssl
|
||||
%config(noreplace) %{_sysconfdir}/pam.d/cups
|
||||
%config(noreplace) %{_sysconfdir}/logrotate.d/cups
|
||||
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/cups.conf
|
||||
|
||||
%dir %{_datadir}/cups/data
|
||||
%dir %{_datadir}/cups/drv
|
||||
%dir %{_datadir}/cups/mime
|
||||
%dir %{_datadir}/cups/model
|
||||
%dir %{_datadir}/cups/ppdc
|
||||
%dir %{_datadir}/ppd
|
||||
%exclude %{_mandir}/cat?
|
||||
%exclude %{_mandir}/*/cat?
|
||||
%exclude %{_datadir}/applications/cups.desktop
|
||||
%exclude %{_datadir}/icons
|
||||
%exclude %{_datadir}/cups/banners
|
||||
%exclude %{_datadir}/cups/data/testprint
|
||||
|
||||
%{_unitdir}/%{name}.service
|
||||
%{_unitdir}/%{name}.socket
|
||||
%{_unitdir}/%{name}.path
|
||||
%{_unitdir}/cups-lpd.socket
|
||||
%{_unitdir}/cups-lpd@.service
|
||||
%{_bindir}/cupstestppd
|
||||
%{_bindir}/cupstestdsc
|
||||
%{_bindir}/ppd*
|
||||
%{_bindir}/cancel*
|
||||
%{_bindir}/lp*
|
||||
%{_bindir}/ipptool
|
||||
%{_bindir}/ippfind
|
||||
%{_sbindir}/*
|
||||
%{_sbindir}/lpc.cups
|
||||
|
||||
%{_exec_prefix}/lib/cups/backend/*
|
||||
%{_exec_prefix}/lib/cups/cgi-bin
|
||||
%dir %{_exec_prefix}/lib/cups/driver
|
||||
%dir %{_exec_prefix}/lib/cups/daemon
|
||||
%{_exec_prefix}/lib/cups/daemon/cups-deviced
|
||||
%{_exec_prefix}/lib/cups/daemon/cups-driverd
|
||||
%{_exec_prefix}/lib/cups/daemon/cups-exec
|
||||
%{_exec_prefix}/lib/cups/notifier
|
||||
%{_exec_prefix}/lib/cups/filter/*
|
||||
%{_exec_prefix}/lib/cups/monitor
|
||||
%{_exec_prefix}/lib/cups/daemon/cups-lpd
|
||||
|
||||
%{_datadir}/cups/templates/*.tmpl
|
||||
%{_datadir}/cups/templates/de/*.tmpl
|
||||
%{_datadir}/cups/templates/fr/*.tmpl
|
||||
%{_datadir}/cups/templates/es/*.tmpl
|
||||
%{_datadir}/cups/templates/ja/*.tmpl
|
||||
%{_datadir}/cups/templates/ru/*.tmpl
|
||||
%{_datadir}/cups/templates/pt_BR/*.tmpl
|
||||
%dir %attr(1770,root,lp) %{_localstatedir}/spool/cups/tmp
|
||||
%dir %attr(0710,root,lp) %{_localstatedir}/spool/cups
|
||||
%dir %attr(0755,lp,sys) %{_localstatedir}/log/cups
|
||||
%{_datadir}/pixmaps/cupsprinter.png
|
||||
|
||||
%{_datadir}/cups/drv/sample.drv
|
||||
%{_datadir}/cups/examples
|
||||
%{_datadir}/cups/mime/mime.types
|
||||
%{_datadir}/cups/mime/mime.convs
|
||||
%{_datadir}/cups/ppdc/*.defs
|
||||
%{_datadir}/cups/ppdc/*.h
|
||||
|
||||
%{_datadir}/%{name}/www/images
|
||||
%{_datadir}/%{name}/www/*.css
|
||||
%dir %{_datadir}/%{name}/usb
|
||||
%{_datadir}/%{name}/usb/org.cups.usb-quirks
|
||||
%dir %{_datadir}/cups/ipptool
|
||||
%{_datadir}/cups/ipptool/*
|
||||
|
||||
%files libs
|
||||
%{license} LICENSE.txt
|
||||
%{_libdir}/lib*.so.*
|
||||
|
||||
%files devel
|
||||
%{_bindir}/cups-config
|
||||
%{_libdir}/*.so
|
||||
%{_includedir}/cups
|
||||
%{_rpmconfigdir}/macros.d/macros.cups
|
||||
|
||||
%files help
|
||||
%{_mandir}/man[1578]/*
|
||||
%{_mandir}/man1/cancel-cups.1.gz
|
||||
%{_mandir}/man1/cups-config.1.gz
|
||||
%{_mandir}/man1/ipptool.1.gz
|
||||
%{_mandir}/man1/lp*.1.gz
|
||||
%{_mandir}/man5/ipptoolfile.5.gz
|
||||
%{_mandir}/man8/cups-lpd.8.gz
|
||||
%{_mandir}/man8/lpc-cups.8.gz
|
||||
|
||||
%doc README.md CREDITS.md CHANGES.md
|
||||
%doc %{_datadir}/%{name}/www/index.html
|
||||
%doc %{_datadir}/%{name}/www/help
|
||||
%doc %{_datadir}/%{name}/www/robots.txt
|
||||
%doc %{_datadir}/%{name}/www/de/index.html
|
||||
%doc %{_datadir}/%{name}/www/es/index.html
|
||||
%doc %{_datadir}/%{name}/www/ja/index.html
|
||||
%doc %{_datadir}/%{name}/www/ru/index.html
|
||||
%doc %{_datadir}/%{name}/www/pt_BR/index.html
|
||||
%doc %{_datadir}/%{name}/www/apple-touch-icon.png
|
||||
|
||||
%changelog
|
||||
* Wed Sep 25 2019 gaoguanghui <gaoguanghui1@huawei.com> - 2.2.8-7
|
||||
- Type:cves
|
||||
- ID:CVE-2019-8675 CVE-2019-8696
|
||||
- SUG:restart
|
||||
- DESC:fix CVE-2019-8675 CVE-2019-8696
|
||||
|
||||
* Wed Sep 18 2019 Guan Yanjie <guanyanjie@huawei.com> - 2.2.8-6
|
||||
- Package init
|
BIN
cupsprinter.png
Normal file
BIN
cupsprinter.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.1 KiB |
1
macros.cups
Normal file
1
macros.cups
Normal file
@ -0,0 +1 @@
|
||||
%_cups_serverbin %(/usr/bin/cups-config --serverbin)
|
51
ncp.backend
Executable file
51
ncp.backend
Executable file
@ -0,0 +1,51 @@
|
||||
#!/bin/sh
|
||||
# This is a modified version of 'ncpprint'. It can now be used as a CUPS
|
||||
# backend.
|
||||
# Modifications:
|
||||
# Copyright (C) 2002 Red Hat, inc
|
||||
# Copyright (C) 2002 Tim Waugh
|
||||
# Before modification: shipped as /usr/share/printconf/util/ncpprint
|
||||
|
||||
if [ -z "$*" ]
|
||||
then
|
||||
# This is where we would enumerate all the URIs we support.
|
||||
# Patches welcome.
|
||||
exit 0
|
||||
fi
|
||||
|
||||
FILE=$6
|
||||
if [ -z "$FILE" ]
|
||||
then
|
||||
FILE=-
|
||||
fi
|
||||
|
||||
# $DEVICE_URI is 'ncp://[user:password@]server/queue'
|
||||
URI=${DEVICE_URI#*://}
|
||||
queue=${URI#*/}
|
||||
URI=${URI%/$queue}
|
||||
server=${URI#*@}
|
||||
URI=${URI%$server}
|
||||
URI=${URI%@}
|
||||
if [ -n "$URI" ]
|
||||
then
|
||||
user=${URI%:*}
|
||||
URI=${URI#$user}
|
||||
password=${URI#:}
|
||||
fi
|
||||
|
||||
#echo user: ${user-(none)}
|
||||
#echo password: ${password-(none)}
|
||||
#echo server: $server
|
||||
#echo queue: $queue
|
||||
|
||||
if [ -n "$user" ]
|
||||
then
|
||||
if [ -n "$password" ]
|
||||
then
|
||||
/usr/bin/nprint -S "$server" -q "$queue" -U "$user" -P "$password" -N "$FILE" 2>/dev/null
|
||||
else
|
||||
/usr/bin/nprint -S "$server" -q "$queue" -U "$user" -n -N "$FILE" 2>/dev/null
|
||||
fi
|
||||
else
|
||||
/usr/bin/nprint -S "$server" -q "$queue" -N "$FILE" 2>/dev/null
|
||||
fi
|
Loading…
Reference in New Issue
Block a user