ghostscript: ensure update of cups-filter

Bug #1848210 reported by Mauricio Faria de Oliveira
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
cups-filters (Ubuntu)
Invalid
Undecided
Unassigned
Xenial
Invalid
Undecided
Unassigned
Bionic
Invalid
Undecided
Unassigned
ghostscript (Ubuntu)
Fix Released
Undecided
Unassigned
Xenial
Won't Fix
Undecided
Unassigned
Bionic
Won't Fix
Undecided
Unassigned

Bug Description

[Impact]

 * After an update of ghostscript but not cups-filters
   users may hit errors printing PDF files (LP#1828401).

 * This is possible as Landscape does not consider the
   -security pocket (has both ghostscript/cups-filters)
   but rather USN notices and ghostscript had a notice [0].
   The regression on cups-filters was identified later,
   and doesn't warrant a USN notice.

 * So, to ensure that ghostscript and cups-filters are
   both updated, add a versioned 'Breaks:' relationship
   to ghostscript for older cups-filters versions which
   are not yet fixed.

   Per Debian Policy [1]:

     """
     Normally a Breaks entry will have an “earlier than” version clause;
     such a Breaks is introduced in the version ... [that] reveals a bug
     in earlier versions of the broken package ...

     This use of Breaks will inform higher-level package management tools
     that the broken package must be upgraded before the new one.
     """

 * A versioned 'Depends:' relationship is not possible
   as ghostscript doesn't depend on cups-filters, thus
   it's possible to have ghostscript installed without
   cups-filters at all.

 * This doesn't fix the current situation with Landscape
   and USNs so this same problem might still occur again,
   but at least it is already in place on future updates.

[Test Case]

 * Install cups-filters version without fix for LP#1828401:
   1.20.2-0ubuntu3 in Bionic, and 1.8.3-2ubuntu3.4 in Xenial.

 * Update ghostscript to/later than fix for CVE-2019-3839-1/-2
   9.26~dfsg+0-0ubuntu0.18.04.9 in Bionic / .16.04.9 in Xenial.

 * Notice it does _not_ update cups-filters to version with fix:
   1.20.2-0ubuntu3.1 in Bionic, and 1.8.3-2ubuntu3.5 in Xenial.

 * $ wget -O ppd-with-pdf-support.ppd \
     'http://www.openprinting.org/ppd-o-matic.php?driver=hl7x0&printer=Brother-HL-1020&show=1'

 * $ wget -O dummy.pdf \
     https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf

 * $ foomatic-rip -v --ppd ppd-with-pdf-support.ppd dummy.pdf
   ...
   Filetype: PDF
   GPL Ghostscript 9.26: Unrecoverable error, exit code 1
   Process is dying with "Unable to determine number of pages, page count: -1
   ", exit stat 3
   ...

 * Note it's broken.

 * Install ghostscript (test) packages with the relationships
   'Breaks: cups-filters (<< 1.20.2-0ubuntu3.1)' in Bionic or
   'Breaks: ..., cups-filters (<< 1.8.3-2ubuntu3.5)' in Xenial.

 * Note it _does_ update cups-filters to version with fix.

 * $ foomatic-rip -v --ppd ppd-with-pdf-support.ppd dummy.pdf
   ...
   Filetype: PDF
   File contains 1 pages
   Starting renderer with command: <...>
   ...

 * Note it's now working.

[Regression Potential]

 * Low. This only causes an update to cups-filters to a version
   that fixes an already identified/resolved problem (LP#1828401),
   which is available in bionic- & xenial-updates since May 2019.

[Other Info]

 * This is only required in Xenial and Bionic.

 * Trusty doesn't have the ghostscript update that causes the problem.

 * Disco/Eoan have the cups-filters fix that it requires (1.22.5+).

[Links]

[0] https://usn.ubuntu.com/3970-1/
[1] https://www.debian.org/doc/debian-policy/ch-relationships.html#packages-which-break-other-packages-breaks

Tags: sts
Changed in ghostscript (Ubuntu):
status: New → Invalid
Changed in ghostscript (Ubuntu Xenial):
assignee: nobody → Mauricio Faria de Oliveira (mfo)
Changed in ghostscript (Ubuntu Bionic):
assignee: nobody → Mauricio Faria de Oliveira (mfo)
status: New → In Progress
Changed in ghostscript (Ubuntu Xenial):
status: New → In Progress
Changed in ghostscript (Ubuntu Xenial):
importance: Undecided → Medium
Changed in ghostscript (Ubuntu Bionic):
importance: Undecided → Medium
tags: added: sts
summary: - ghostscript: add breaks relationship to cups-filter
+ ghostscript: add Breaks: relationship to cups-filter
summary: - ghostscript: add Breaks: relationship to cups-filter
+ ghostscript: ensure update of cups-filter
description: updated
description: updated
description: updated
Revision history for this message
Mauricio Faria de Oliveira (mfo) wrote :

Testing on Bionic
---

Files)

$ wget -O ppd-with-pdf-support.ppd 'http://www.openprinting.org/ppd-o-matic.php?driver=hl7x0&printer=Brother-HL-1020&show=1'

$ wget -O dummy.pdf https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf

Test 0) Before updating ghostscript or cups-filters

$ dpkg -s cups-filters ghostscript | grep ^Version:
Version: 1.20.2-0ubuntu3
Version: 9.26~dfsg+0-0ubuntu0.18.04.8

$ foomatic-rip -v --ppd ppd-with-pdf-support.ppd dummy.pdf
...
Filetype: PDF
File contains 1 pages
Starting renderer with command: <...>
...

Test 1) After updating ghostscript (not cups-filters)

$ dpkg -s cups-filters ghostscript | grep ^Version:
Version: 1.20.2-0ubuntu3
Version: 9.26~dfsg+0-0ubuntu0.18.04.11

$ foomatic-rip -v --ppd ppd-with-pdf-support.ppd dummy.pdf
...
Filetype: PDF
GPL Ghostscript 9.26: Unrecoverable error, exit code 1
Process is dying with "Unable to determine number of pages, page count: -1
", exit stat 3
...

Test 2) Checking before updating ghostscript with test package (thus cups-filters too)

Checking update of cups-filters with apt:

$ sudo apt install --dry-run ghostscript
...
The following packages will be upgraded:
  cups-filters ghostscript libgs9 libgs9-common
...
Inst cups-filters [1.20.2-0ubuntu3] (1.20.2-0ubuntu3.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64])
Inst ghostscript [9.26~dfsg+0-0ubuntu0.18.04.11] (9.26~dfsg+0-0ubuntu0.18.04.11+test20191510b1 mfo-sf246942:18.04/bionic [amd64]) []
...

Checking update of cups-filters with apt-get:

$ sudo apt-get install --dry-run ghostscript
...
The following packages will be upgraded:
  cups-filters ghostscript libgs9 libgs9-common
...
Inst cups-filters [1.20.2-0ubuntu3] (1.20.2-0ubuntu3.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64])
Inst ghostscript [9.26~dfsg+0-0ubuntu0.18.04.11] (9.26~dfsg+0-0ubuntu0.18.04.11+test20191510b1 mfo-sf246942:18.04/bionic [amd64]) []
...

Test 3) After updating ghostscript with test package (thus cups-filters too)

$ dpkg -s cups-filters ghostscript | grep ^Version:
Version: 1.20.2-0ubuntu3.1
Version: 9.26~dfsg+0-0ubuntu0.18.04.11+test20191510b1

$ foomatic-rip -v --ppd ppd-with-pdf-support.ppd dummy.pdf
...
Filetype: PDF
File contains 1 pages
Starting renderer with command: <...>
...

Revision history for this message
Mauricio Faria de Oliveira (mfo) wrote :

Testing on Xenial
---

Files)

$ wget -O ppd-with-pdf-support.ppd 'http://www.openprinting.org/ppd-o-matic.php?driver=hl7x0&printer=Brother-HL-1020&show=1'

$ wget -O dummy.pdf https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf

Test 0) Before updating ghostscript or cups-filters
$ dpkg -s cups-filters ghostscript | grep ^Version:
Version: 1.8.3-2ubuntu3.4
Version: 9.26~dfsg+0-0ubuntu0.16.04.8

$ foomatic-rip -v --ppd ppd-with-pdf-support.ppd dummy.pdf
...
Filetype: PDF
File contains 1 pages
Starting renderer with command: <...>
...

Test 1) After updating ghostscript (not cups-filters)

$ dpkg -s cups-filters ghostscript | grep ^Version:
Version: 1.8.3-2ubuntu3.4
Version: 9.26~dfsg+0-0ubuntu0.16.04.11

$ foomatic-rip -v --ppd ppd-with-pdf-support.ppd dummy.pdf
...
Filetype: PDF
GPL Ghostscript 9.26: Unrecoverable error, exit code 1
Process is dying with "Unable to determine number of pages, page count: -1
", exit stat 3
...

Test 2) Checking before updating ghostscript with test package (thus cups-filters too)

Checking update of cups-filters with apt-get and apt:

$ sudo apt-get install --dry-run ghostscript
...
The following packages will be upgraded:
  cups-filters cups-filters-core-drivers ghostscript libgs9 libgs9-common
...
Inst cups-filters [1.8.3-2ubuntu3.4] (1.8.3-2ubuntu3.5 Ubuntu:16.04/xenial-updates, Ubuntu:16.04/xenial-security [amd64])
Inst ghostscript [9.26~dfsg+0-0ubuntu0.16.04.11] (9.26~dfsg+0-0ubuntu0.16.04.11+test20191510b1 mfo-sf246942:16.04/xenial [amd64]) []
...

$ sudo apt install --dry-run ghostscript
...
The following packages will be upgraded:
  cups-filters cups-filters-core-drivers ghostscript libgs9 libgs9-common
...
Inst cups-filters [1.8.3-2ubuntu3.4] (1.8.3-2ubuntu3.5 Ubuntu:16.04/xenial-updates, Ubuntu:16.04/xenial-security [amd64])
Inst ghostscript [9.26~dfsg+0-0ubuntu0.16.04.11] (9.26~dfsg+0-0ubuntu0.16.04.11+test20191510b1 mfo-sf246942:16.04/xenial [amd64]) []
...

Test 3) After updating ghostscript with test package (thus cups-filters too)

$ dpkg -s cups-filters ghostscript | grep ^Version:
Version: 1.8.3-2ubuntu3.5
Version: 9.26~dfsg+0-0ubuntu0.16.04.11+test20191510b1

$ foomatic-rip -v --ppd ppd-with-pdf-support.ppd dummy.pdf
...
Filetype: PDF
File contains 1 pages
Starting renderer with command: <...>
...

Revision history for this message
Mauricio Faria de Oliveira (mfo) wrote :

Test packages used for verification in comments #1 and #2
built successfully on all architectures, ppa:mfo/sf246942 [1].

[1] https://launchpad.net/~mfo/+archive/ubuntu/sf246942

description: updated
description: updated
description: updated
description: updated
Revision history for this message
Mauricio Faria de Oliveira (mfo) wrote :

The approach to fix/deliver this is under discussion for a bit.
We'll move forward once that's more clearly defined.

Eric Desrochers (slashd)
tags: added: sts-sponsor-slashd
Eric Desrochers (slashd)
Changed in cups-filters (Ubuntu Bionic):
assignee: nobody → Mauricio Faria de Oliveira (mfo)
Changed in cups-filters (Ubuntu Xenial):
assignee: nobody → Mauricio Faria de Oliveira (mfo)
importance: Undecided → Medium
Changed in cups-filters (Ubuntu Bionic):
importance: Undecided → Medium
Changed in ghostscript (Ubuntu):
status: Invalid → Fix Released
description: updated
description: updated
Revision history for this message
Mauricio Faria de Oliveira (mfo) wrote :

After discussing this with Eric (slashd) and Marc (mdeslaur),
it seems like the Breaks: approach is indeed the way to go.

Nonetheless, it doesn't warrant an USN notice (security-only),
which is the bit that could make Landscape (problem trigger)
to pick up the new ghostscript fix then update cups-filters.

So, we agreed on likely folding this fix/update into another
SRU, as the impact to other audiences (non-Landscape) is small,
because both ghostscript/cups-filters are on -security pocket.

If other users are hit by this issue, we can sure enough
revisit that option and consider some form to deliver it.

cheers,
Mauricio

Revision history for this message
Mauricio Faria de Oliveira (mfo) wrote :
Revision history for this message
Mauricio Faria de Oliveira (mfo) wrote :
Changed in cups-filters (Ubuntu):
status: New → Invalid
Changed in cups-filters (Ubuntu Xenial):
status: New → Invalid
Changed in cups-filters (Ubuntu Bionic):
status: New → Invalid
Changed in cups-filters (Ubuntu Xenial):
assignee: Mauricio Faria de Oliveira (mfo) → nobody
Changed in cups-filters (Ubuntu Bionic):
assignee: Mauricio Faria de Oliveira (mfo) → nobody
Changed in cups-filters (Ubuntu Xenial):
importance: Medium → Undecided
Changed in cups-filters (Ubuntu Bionic):
importance: Medium → Undecided
Eric Desrochers (slashd)
tags: removed: sts-sponsor-slashd
Revision history for this message
Mauricio Faria de Oliveira (mfo) wrote :

It looks like this wasn't needed in practice; marking as Won't Fix.

Changed in ghostscript (Ubuntu Xenial):
status: In Progress → Won't Fix
importance: Medium → Undecided
assignee: Mauricio Faria de Oliveira (mfo) → nobody
Changed in ghostscript (Ubuntu Bionic):
status: In Progress → Won't Fix
importance: Medium → Undecided
assignee: Mauricio Faria de Oliveira (mfo) → nobody
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.