-CHANGES - 2.3.3 - 2020-04-24
+CHANGES - 2.3.4 - 2020-04-24 (IN PROGRESS)
============================
+Changes in CUPS v2.3.4
+----------------------
+
+- CVE-20XX-YYYY: TODO rdar://61415567 embargo
+
Changes in CUPS v2.3.3
----------------------
-INSTALL - CUPS v2.3.3 - 2020-04-24
+INSTALL - CUPS v2.3.4 - 2020-04-24 (IN PROGRESS)
==================================
This file describes how to compile and install CUPS from source code. For more
-README - CUPS v2.3.3 - 2020-04-24
+README - CUPS v2.3.4 - 2020-04-24 (IN PROGRESS)
=================================
INTRODUCTION
LEGAL STUFF
-----------
-Copyright © 2007-2019 by Apple Inc.
+Copyright © 2007-2020 by Apple Inc.
Copyright © 1997-2007 by Easy Software Products.
CUPS is provided under the terms of the Apache License, Version 2.0 with
#define IS_64BIT 1
#define IS_NOT_64BIT 0
-#if defined(__i386__) || defined(__x86_64__)
+#if defined(__arm64e__)
static pid_t child_pid; /* Child PID */
-static void run_legacy_backend(int argc, char *argv[], int fd) _CUPS_NORETURN; /* Starts child backend process running as a ppc executable */
-#endif /* __i386__ || __x86_64__ */
-static void sigterm_handler(int sig); /* SIGTERM handler */
+static void run_legacy_backend(int argc, char *argv[], int fd) _CUPS_NORETURN; /* Starts child backend process running as a x86_64 executable */
+static void sigterm_handler(int sig); /* SIGTERM handler */
+#endif /* __arm64e__ */
static void sigquit_handler(int sig, siginfo_t *si, void *unused) _CUPS_NORETURN;
#ifdef PARSE_PS_ERRORS
status = registry_open(&driverBundlePath);
-#if defined(__i386__) || defined(__x86_64__)
+#if defined(__arm64e__)
/*
* If we were unable to load the class drivers for this printer it's
- * probably because they're ppc or i386. In this case try to run this
- * backend as i386 or ppc executables so we can use them...
+ * probably because they're x86_64 (or older). In this case try to run this
+ * backend as x86_64 so we can use them...
*/
if (status == -2)
{
run_legacy_backend(argc, argv, print_fd);
/* Never returns here */
}
-#endif /* __i386__ || __x86_64__ */
+#endif /* __arm64e__ */
if (status == -2)
{
}
#pragma mark -
-#if defined(__i386__) || defined(__x86_64__)
+#if defined(__arm64e__)
/*!
* @function run_legacy_backend
*
- * @abstract Starts child backend process running as a ppc or i386 executable.
+ * @abstract Starts child backend process running as a x86_64 executable.
*
* @result Never returns; always calls exit().
*
/*
- * If we're running as x86_64 or i386 and couldn't load the class driver
- * (because it's ppc or i386), then try to re-exec ourselves in ppc or i386
- * mode to try again. If we don't have a ppc or i386 architecture we may be
+ * If we're running as ARM and couldn't load the class driver
+ * (because it's x86_64, i386 or ppc), then try to re-exec ourselves in x86_64
+ * mode to try again. If we don't have that architecture we may be
* running with the same architecture again so guard against this by setting
* and testing an environment variable...
*/
-# ifdef __x86_64__
- usb_legacy_status = getenv("USB_I386_STATUS");
-# else
- usb_legacy_status = getenv("USB_PPC_STATUS");
-# endif /* __x86_64__ */
+ usb_legacy_status = getenv("USB_LEGACY_STATUS");
if (!usb_legacy_status)
{
* Set the environment variable...
*/
-# ifdef __x86_64__
- setenv("USB_I386_STATUS", "1", false);
-# else
- setenv("USB_PPC_STATUS", "1", false);
-# endif /* __x86_64__ */
+ setenv("USB_LEGACY_STATUS", "1", false);
/*
* Tell the kernel to use the specified CPU architecture...
*/
-# ifdef __x86_64__
- cpu_type_t cpu = CPU_TYPE_I386;
-# else
- cpu_type_t cpu = CPU_TYPE_POWERPC;
-# endif /* __x86_64__ */
+ cpu_type_t cpu = CPU_TYPE_X86_64;
size_t ocount = 1;
posix_spawnattr_t attrs;
posix_spawnattr_setsigdefault(&attrs, &oldmask);
if (posix_spawnattr_setbinpref_np(&attrs, 1, &cpu, &ocount) || ocount != 1)
{
-# ifdef __x86_64__
- perror("DEBUG: Unable to set binary preference to i386");
-# else
- perror("DEBUG: Unable to set binary preference to ppc");
-# endif /* __x86_64__ */
+ perror("DEBUG: Unable to set binary preference to X86_64");
_cupsLangPrintFilter(stderr, "ERROR",
_("Unable to use legacy USB class driver."));
exit(CUPS_BACKEND_STOP);
exit(exitstatus);
}
-#endif /* __i386__ || __x86_64__ */
-
/*
* 'sigterm_handler()' - SIGTERM handler.
static void
sigterm_handler(int sig) /* I - Signal */
{
-#if defined(__i386__) || defined(__x86_64__)
/*
* If we started a child process pass the signal on to it...
*/
_exit(CUPS_BACKEND_STOP);
}
}
-#endif /* __i386__ || __x86_64__ */
}
+#endif /* __arm64e__ */
/*
/*
* LIBUSB interface code for CUPS.
*
- * Copyright 2007-2019 by Apple Inc.
+ * Copyright 2007-2020 by Apple Inc.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
/*
* CGI form variable and array functions for CUPS.
*
- * Copyright © 2007-2019 by Apple Inc.
+ * Copyright © 2007-2020 by Apple Inc.
* Copyright © 1997-2005 by Easy Software Products.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more
dnl
dnl Compiler stuff for CUPS.
dnl
-dnl Copyright 2007-2018 by Apple Inc.
+dnl Copyright 2007-2020 by Apple Inc.
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
dnl
dnl Licensed under Apache License v2.0. See the file "LICENSE" for more information.
# doesn't trigger...
gccversion=`$CC --version | head -1 | awk '{print $NF}'`
case "$gccversion" in
- 7.* | 8.*)
+ 7.* | 8.* | 9.*)
WARNING_OPTIONS="$WARNING_OPTIONS -Wno-format-truncation -Wno-tautological-compare"
;;
esac
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for CUPS 2.3.3.
+# Generated by GNU Autoconf 2.69 for CUPS 2.3.4.
#
# Report bugs to <https://github.com/apple/cups/issues>.
#
# Identity of this package.
PACKAGE_NAME='CUPS'
PACKAGE_TARNAME='cups'
-PACKAGE_VERSION='2.3.3'
-PACKAGE_STRING='CUPS 2.3.3'
+PACKAGE_VERSION='2.3.4'
+PACKAGE_STRING='CUPS 2.3.4'
PACKAGE_BUGREPORT='https://github.com/apple/cups/issues'
PACKAGE_URL='https://www.cups.org/'
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures CUPS 2.3.3 to adapt to many kinds of systems.
+\`configure' configures CUPS 2.3.4 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of CUPS 2.3.3:";;
+ short | recursive ) echo "Configuration of CUPS 2.3.4:";;
esac
cat <<\_ACEOF
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-CUPS configure 2.3.3
+CUPS configure 2.3.4
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by CUPS $as_me 2.3.3, which was
+It was created by CUPS $as_me 2.3.4, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
ac_config_headers="$ac_config_headers config.h"
-CUPS_VERSION="2.3.3"
+CUPS_VERSION="2.3.4"
CUPS_REVISION=""
CUPS_BUILD="cups-$CUPS_VERSION"
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by CUPS $as_me 2.3.3, which was
+This file was extended by CUPS $as_me 2.3.4, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-CUPS config.status 2.3.3
+CUPS config.status 2.3.4
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
dnl
dnl Configuration script for CUPS.
dnl
-dnl Copyright © 2007-2019 by Apple Inc.
+dnl Copyright © 2007-2020 by Apple Inc.
dnl Copyright © 1997-2007 by Easy Software Products, all rights reserved.
dnl
dnl Licensed under Apache License v2.0. See the file "LICENSE" for more
AC_PREREQ(2.60)
dnl Package name and version...
-AC_INIT([CUPS], [2.3.3], [https://github.com/apple/cups/issues], [cups], [https://www.cups.org/])
+AC_INIT([CUPS], [2.3.4], [https://github.com/apple/cups/issues], [cups], [https://www.cups.org/])
sinclude(config-scripts/cups-opsys.m4)
sinclude(config-scripts/cups-common.m4)
/*
* API definitions for CUPS.
*
- * Copyright © 2007-2019 by Apple Inc.
+ * Copyright © 2007-2020 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* Constants...
*/
-# define CUPS_VERSION 2.0303
+# define CUPS_VERSION 2.0304
# define CUPS_VERSION_MAJOR 2
# define CUPS_VERSION_MINOR 3
-# define CUPS_VERSION_PATCH 3
+# define CUPS_VERSION_PATCH 4
# define CUPS_BC_FD 3
/* Back-channel file descriptor for
---
title: CUPS Programming Manual
author: Michael R Sweet
-copyright: Copyright © 2007-2019 by Apple Inc. All Rights Reserved.
-version: 2.3.3
+copyright: Copyright © 2007-2020 by Apple Inc. All Rights Reserved.
+version: 2.3.4
...
> Please [file issues on Github](https://github.com/apple/cups/issues) to
/*
* Internet Printing Protocol functions for CUPS.
*
- * Copyright © 2007-2019 by Apple Inc.
+ * Copyright © 2007-2020 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products, all rights reserved.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more
unsigned char *buffer, /* Data buffer */
string[IPP_MAX_TEXT],
/* Small string buffer */
- *bufptr; /* Pointer into buffer */
+ *bufptr, /* Pointer into buffer */
+ *bufptrEnd; /* Pointer after valid buffer range */
ipp_attribute_t *attr; /* Current attribute */
ipp_tag_t tag; /* Current tag */
ipp_tag_t value_tag; /* Current value tag */
}
bufptr = buffer;
+ bufptrEnd = &buffer[n];
+
/*
* text-with-language and name-with-language are composite
n = (bufptr[0] << 8) | bufptr[1];
- if ((bufptr + 2 + n) >= (buffer + IPP_BUF_SIZE) || n >= (int)sizeof(string))
+ if ((bufptr + 2 + n) > bufptrEnd || n >= (int)sizeof(string))
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL,
_("IPP language length overflows value."), 1);
bufptr += 2 + n;
n = (bufptr[0] << 8) | bufptr[1];
- if ((bufptr + 2 + n) >= (buffer + IPP_BUF_SIZE))
+ if ((bufptr + 2 + n) > bufptrEnd)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL,
_("IPP string length overflows value."), 1);
* Copy data over...
*/
+ if (!_cups_strcasecmp(spec, "custom") || !_cups_strncasecmp(spec, "custom.", 7))
+ {
+ temp->spec[0] = '_';
+ strlcpy(temp->spec + 1, spec, sizeof(temp->spec) - 1);
+ }
+ else {
+ strlcpy(temp->spec, spec, sizeof(temp->spec));
+ }
+
strlcpy(temp->name, name, sizeof(temp->name));
- strlcpy(temp->spec, spec, sizeof(temp->spec));
strlcpy(temp->text, text, sizeof(temp->text));
temp->value = (char *)value;
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="creator" content="codedoc v3.1">
<meta name="author" content="Michael R Sweet">
- <meta name="copyright" content="Copyright © 2007-2019 by Apple Inc. All Rights Reserved.">
- <meta name="version" content="2.3.3">
+ <meta name="copyright" content="Copyright © 2007-2020 by Apple Inc. All Rights Reserved.">
+ <meta name="version" content="2.3.4">
<style type="text/css"><!--
body, p, h1, h2, h3, h4 {
font-family: sans-serif;
<body>
<h1 class="title">CUPS Programming Manual</h1>
<p>Michael R Sweet</p>
- <p>Copyright © 2007-2019 by Apple Inc. All Rights Reserved.</p>
+ <p>Copyright © 2007-2020 by Apple Inc. All Rights Reserved.</p>
<div class="contents">
<h2 class="title">Contents</h2>
<ul class="contents">
-All work and no play makes Johhny a dull boy. All work and no\r
-play makes Johhny a dull boy. All work and no play makes Johhny\r
-a dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy.\r
+All work and no play makes Johhny a dull boy. All work and no
+play makes Johhny a dull boy. All work and no play makes Johhny
+a dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy.
#
# Message catalog template for CUPS.
#
-# Copyright © 2007-2019 by Apple Inc.
+# Copyright © 2007-2020 by Apple Inc.
# Copyright © 2005-2007 by Easy Software Products.
#
# Licensed under Apache License v2.0. See the file "LICENSE" for more
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: CUPS 2.3.3\n"
+"Project-Id-Version: CUPS 2.3.4\n"
"Report-Msgid-Bugs-To: https://github.com/apple/cups/issues\n"
"POT-Creation-Date: 2019-12-18 20:19-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
//
// Source class for the CUPS PPD Compiler.
//
-// Copyright 2007-2018 by Apple Inc.
+// Copyright 2007-2020 by Apple Inc.
// Copyright 2002-2007 by Easy Software Products.
//
// Licensed under Apache License v2.0. See the file "LICENSE" for more
/*
* Printer routines for the CUPS scheduler.
*
- * Copyright © 2007-2019 by Apple Inc.
+ * Copyright © 2007-2020 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products, all rights reserved.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more
printers.tmpl \
printers-header.tmpl \
restart.tmpl \
- samba-export.tmpl \
- samba-exported.tmpl \
search.tmpl \
set-printer-options-header.tmpl \
set-printer-options-trailer.tmpl \
/*
* Configuration file for CUPS on Windows.
*
- * Copyright © 2007-2019 by Apple Inc.
+ * Copyright © 2007-2020 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* Version of software...
*/
-#define CUPS_SVERSION "CUPS v2.3.3"
-#define CUPS_MINIMAL "CUPS/2.3.3"
+#define CUPS_SVERSION "CUPS v2.3.4"
+#define CUPS_MINIMAL "CUPS/2.3.4"
/*
/*
* Configuration file for CUPS and Xcode.
*
- * Copyright 2007-2019 by Apple Inc.
+ * Copyright 2007-2020 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
* Version of software...
*/
-#define CUPS_SVERSION "CUPS v2.3.3"
-#define CUPS_MINIMAL "CUPS/2.3.3"
+#define CUPS_SVERSION "CUPS v2.3.4"
+#define CUPS_MINIMAL "CUPS/2.3.4"
/*