This file is indexed.

/usr/lib/cups/driver/foo2zjs is in printer-driver-foo2zjs 20111202dfsg0-1ubuntu1.

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
#!/usr/bin/env python

# compressor.py
from subprocess import Popen, PIPE

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

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

def decompress(value):
    """Decompresses a string 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

from optparse import OptionParser
from sys import argv
import base64
import cPickle
from cStringIO import StringIO
from os.path import basename

def load():
    ppds_compressed = base64.b64decode(ppds_compressed_b64)
    ppds_decompressed = decompress(ppds_compressed)
    ppds = cPickle.loads(ppds_decompressed)
    return ppds

def ls():
    binary_name = basename(argv[0])
    ppds = load()
    for key, value in ppds.iteritems():
        if key == 'ARCHIVE': continue
        for ppd in value[2]:
            print ppd.replace('"', '"' + binary_name + ':', 1)

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()
    ppds['ARCHIVE'] = StringIO(decompress(ppds['ARCHIVE']))

    if ppds.has_key(ppd):
        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 0.4.9\n" \
              "Copyright (c) 2010 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])
        print ppd
    else:
        parser.error("argument " + args[0] + " invalid")

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

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