/[secure-testing]/bin/show-debsecan
ViewVC logotype

Contents of /bin/show-debsecan

Parent Directory Parent Directory | Revision Log Revision Log


Revision 10628 - (show annotations) (download)
Fri Dec 5 19:10:23 2008 UTC (4 years, 5 months ago) by fw
File size: 1389 byte(s)
bin/show-debsecan: new script to debug debsecan data
1 #!/usr/bin/python
2
3 import sys
4 import apsw
5 import base64
6 import zlib
7 from cStringIO import StringIO
8
9 if len(sys.argv) not in (2, 3):
10 print "usage: show-debsecan DATABASE-PATH [BLOB-NAME]"
11 sys.exit(1)
12
13 db = apsw.Connection(sys.argv[1])
14 c = db.cursor()
15
16 if len(sys.argv) == 2:
17 for (name,) in c.execute("SELECT name FROM debsecan_data ORDER BY name"):
18 print name
19 else: # len(sys.argv) == 3
20 name = sys.argv[2]
21 for (data,) in c.execute("SELECT data FROM debsecan_data WHERE name = ?",
22 (name,)):
23 pass
24 data = base64.b64decode(data)
25 data = zlib.decompress(data)
26
27 # The following has been taken from a debsecan test case.
28 data = StringIO(data)
29
30 if data.readline() <> "VERSION 1\n":
31 sys.stderr.write("error: server sends data in unknown format\n")
32 sys.exit(1)
33
34 vuln_names = []
35 for line in data:
36 if line[-1:] == '\n':
37 line = line[:-1]
38 if line == '':
39 break
40 (name, flags, desc) = line.split(',', 2)
41 vuln_names.append(name)
42
43 for line in data:
44 if line[-1:] == '\n':
45 line = line[:-1]
46 if line == '':
47 break
48 (package, vuln, rest) = line.split(',', 2)
49 vuln = vuln_names[int(vuln)]
50 print "%s,%s,%s" % (package, vuln, rest)
51
52 for line in data:
53 print line,
54
55 db.close()

  ViewVC Help
Powered by ViewVC 1.1.5