This file is indexed.

/usr/lib/cups/driver/foo2zjs is in printer-driver-foo2zjs-common 20160902dfsg0-2.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#!/usr/bin/env python3

# compressor.py
from subprocess import Popen, PIPE

def compress(value):
    """Compresses a byte array with the xz binary"""

    process = Popen(["xz", "--compress", "--force"], stdin=PIPE, stdout=PIPE)
    return process.communicate(value)[0]

def decompress(value):
    """Decompresses a byte array with the xz binary"""

    process = Popen(["xz", "--decompress", "--stdout", "--force"],
                    stdin=PIPE, stdout=PIPE)
    return process.communicate(value)[0]

def compress_file(path):
    """Compress the file at 'path' with the xz binary"""

    process = Popen(["xz", "--compress", "--force", "--stdout", path], stdout=PIPE)
    return process.communicate()[0]

# compressor.py

import os
import sys
from optparse import OptionParser
from sys import argv
import base64
import json
from io import BytesIO

from os.path import basename
from errno import EPIPE

def load():
    ppds_compressed = base64.b64decode(ppds_compressed_b64)
    ppds_decompressed = decompress(ppds_compressed)
    ppds = json.loads(ppds_decompressed.decode(encoding='ASCII'))
    return ppds

def ls():
    binary_name = basename(argv[0])
    ppds = load()
    for key, value in ppds.items():
        if key == 'ARCHIVE': continue
        for ppd in value[2]:
            try:
                print(ppd.replace('"', '"' + binary_name + ':', 1))
            except IOError as e:
                # Errors like broken pipes (program which takes the standard
                # output terminates before this program terminates) should not
                # generate a traceback.
                if e.errno == EPIPE: exit(0)
                raise

def cat(ppd):
    # Ignore driver's name, take only PPD's
    ppd = ppd.split(":")[-1]
    # Remove also the index
    ppd = "0/" + ppd[ppd.find("/")+1:]

    ppds = load()
    # Encode to binary, decode base64, decompress and convert to bytes again
    ppds['ARCHIVE'] = BytesIO(decompress(base64.b64decode(ppds['ARCHIVE'].encode('ASCII'))))

    if ppd in ppds:
        start = ppds[ppd][0]
        length = ppds[ppd][1]
        ppds['ARCHIVE'].seek(start)
        return ppds['ARCHIVE'].read(length)

def main():
    usage = "usage: %prog list\n" \
            "       %prog cat URI"
    version = "%prog 1.0.2\n" \
              "Copyright (c) 2013 Vitor Baptista.\n" \
              "This is free software; see the source for copying conditions.\n" \
              "There is NO warranty; not even for MERCHANTABILITY or\n" \
              "FITNESS FOR A PARTICULAR PURPOSE."
    parser = OptionParser(usage=usage,
                          version=version)
    (options, args) = parser.parse_args()

    if len(args) == 0 or len(args) > 2:
        parser.error("incorrect number of arguments")

    if args[0].lower() == 'list':
        ls()
    elif args[0].lower() == 'cat':
        if not len(args) == 2:
            parser.error("incorrect number of arguments")
        ppd = cat(args[1])
        if not ppd:
            parser.error("Printer '%s' does not have default driver!" % args[1])
        try:
            # avoid any assumption of encoding or system locale; just print the
            # bytes of the PPD as they are
            if sys.version_info.major < 3:
                sys.stdout.write(ppd)
            else:
                sys.stdout.buffer.write(ppd)
        except IOError as e:
            # Errors like broken pipes (program which takes the standard output
            # terminates before this program terminates) should not generate a
            # traceback.
            if e.errno == EPIPE: exit(0)
            raise
    else:
        parser.error("argument " + args[0] + " invalid")

# PPDs Archive
ppds_compressed_b64 = b"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"

if __name__ == "__main__":
    try:
        main()
    except KeyboardInterrupt:
        # We don't want a KeyboardInterrupt throwing a
        # traceback into stdout.
        pass