| 83 |
padding-right : 0.25em; } |
padding-right : 0.25em; } |
| 84 |
td { vertical-align: baseline } |
td { vertical-align: baseline } |
| 85 |
span.red { color: red; } |
span.red { color: red; } |
| 86 |
|
span.purple { color: purple; } |
| 87 |
span.dangerous { color: rgb(191,127,0); } |
span.dangerous { color: rgb(191,127,0); } |
| 88 |
"""), SCRIPT('''var old_query_value = ""; |
"""), SCRIPT('''var old_query_value = ""; |
| 89 |
|
|
| 150 |
[P( |
[P( |
| 151 |
"""The data in this tracker comes solely from the bug database maintained |
"""The data in this tracker comes solely from the bug database maintained |
| 152 |
by Debian's security team located in the testing-security Subversion """, |
by Debian's security team located in the testing-security Subversion """, |
| 153 |
A("http://svn.debian.org/wsvn/secure-testing/data", "repository"), |
A("http://svn.debian.org/wsvn/secure-testing/data/", "repository"), |
| 154 |
""". The data represented here is derived from: """, |
""". The data represented here is derived from: """, |
| 155 |
A("http://www.debian.org/security/#DSAS", "DSAs"), |
A("http://www.debian.org/security/#DSAS", "DSAs"), |
| 156 |
""" issued by the Security Team; issues tracked in the """, |
""" issued by the Security Team; issues tracked in the """, |
| 284 |
source = bug.name.split('-')[0] |
source = bug.name.split('-')[0] |
| 285 |
if source == 'CVE': |
if source == 'CVE': |
| 286 |
source_xref = compose(self.make_cve_ref(url, bug.name, 'CVE'), |
source_xref = compose(self.make_cve_ref(url, bug.name, 'CVE'), |
| 287 |
" (", |
" (at ", |
| 288 |
self.make_nvd_ref(url, bug.name, |
self.make_nvd_ref(url, bug.name, |
| 289 |
'in NVD'), |
'NVD'), |
| 290 |
|
"; ", |
| 291 |
|
self.make_rhbug_ref(url, bug.name, |
| 292 |
|
'RH'), |
| 293 |
")") |
")") |
| 294 |
elif source == 'DSA': |
elif source == 'DSA': |
| 295 |
source_xref = self.make_dsa_ref(url, bug.name, 'Debian') |
source_xref = self.make_dsa_ref(url, bug.name, 'Debian') |
| 331 |
|
|
| 332 |
if not bug.not_for_us: |
if not bug.not_for_us: |
| 333 |
for (release, status, reason) in bug.getStatus(cursor): |
for (release, status, reason) in bug.getStatus(cursor): |
| 334 |
if status <> 'fixed': |
if status == 'undetermined': |
| 335 |
|
reason = self.make_purple(reason) |
| 336 |
|
elif status <> 'fixed': |
| 337 |
reason = self.make_red(reason) |
reason = self.make_red(reason) |
| 338 |
yield B('Debian/%s' % release), reason |
yield B('Debian/%s' % release), reason |
| 339 |
|
|
| 353 |
package = compose( |
package = compose( |
| 354 |
self.make_source_package_ref(url, package), |
self.make_source_package_ref(url, package), |
| 355 |
" (", self.make_pts_ref(url, package, 'PTS'), ")") |
" (", self.make_pts_ref(url, package, 'PTS'), ")") |
| 356 |
if vulnerable: |
if vulnerable == 1: |
| 357 |
vuln = self.make_red('vulnerable') |
vuln = self.make_red('vulnerable') |
| 358 |
version = self.make_red(version) |
version = self.make_red(version) |
| 359 |
|
elif vulnerable == 2: |
| 360 |
|
vuln = self.make_purple('undetermined') |
| 361 |
|
version = self.make_purple(version) |
| 362 |
else: |
else: |
| 363 |
vuln = 'fixed' |
vuln = 'fixed' |
| 364 |
|
|
| 379 |
old_pkg = pkg |
old_pkg = pkg |
| 380 |
packages = self.make_binary_packages_ref(url, packages) |
packages = self.make_binary_packages_ref(url, packages) |
| 381 |
|
|
| 382 |
if vulnerable: |
if vulnerable == 1: |
| 383 |
vuln = self.make_red('vulnerable') |
vuln = self.make_red('vulnerable') |
| 384 |
version = self.make_red(version) |
version = self.make_red(version) |
| 385 |
|
elif vulnerable == 2: |
| 386 |
|
vuln = self.make_purple('undetermined') |
| 387 |
|
version = self.make_purple(version) |
| 388 |
else: |
else: |
| 389 |
vuln = 'fixed' |
vuln = 'fixed' |
| 390 |
yield (packages, |
yield (packages, |
| 447 |
def gen_comments(): |
def gen_comments(): |
| 448 |
for (t, c) in bug.comments: |
for (t, c) in bug.comments: |
| 449 |
yield c |
yield c |
| 450 |
page.append(make_pre(gen_comments())) |
page.append(make_pre(linkify(gen_comments()))) |
| 451 |
|
|
| 452 |
return self.create_page(url, bug.name, page) |
return self.create_page(url, bug.name, page) |
| 453 |
|
|
| 656 |
urgency = '' |
urgency = '' |
| 657 |
elif urgency == 'high': |
elif urgency == 'high': |
| 658 |
urgency = self.make_red(urgency) |
urgency = self.make_red(urgency) |
| 659 |
|
elif urgency == 'undetermined': |
| 660 |
|
urgency = self.make_purple(urgency) |
| 661 |
else: |
else: |
| 662 |
if no_dsa: |
if no_dsa: |
| 663 |
urgency = urgency + '*' |
urgency = urgency + '*' |
| 774 |
urgency = '' |
urgency = '' |
| 775 |
elif urgency == 'high': |
elif urgency == 'high': |
| 776 |
urgency = self.make_red(urgency) |
urgency = self.make_red(urgency) |
| 777 |
|
elif urgency == 'undetermined': |
| 778 |
|
urgency = self.make_purple(urgency) |
| 779 |
|
|
| 780 |
yield pkg_name, self.make_xref(url, bug_name), urgency, remote |
yield pkg_name, self.make_xref(url, bug_name), urgency, remote |
| 781 |
return self.create_page( |
return self.create_page( |
| 1158 |
def url_nvd(self, url, name): |
def url_nvd(self, url, name): |
| 1159 |
return url.absolute("http://web.nvd.nist.gov/view/vuln/detail", |
return url.absolute("http://web.nvd.nist.gov/view/vuln/detail", |
| 1160 |
vulnId=name) |
vulnId=name) |
| 1161 |
|
def url_rhbug(self, url, name): |
| 1162 |
|
return url.absolute("https://bugzilla.redhat.com/show_bug.cgi", |
| 1163 |
|
id=name) |
| 1164 |
|
|
| 1165 |
def url_dsa(self, url, dsa, re_dsa=re.compile(r'^DSA-(\d+)(?:-\d+)?$')): |
def url_dsa(self, url, dsa, re_dsa=re.compile(r'^DSA-(\d+)(?:-\d+)?$')): |
| 1166 |
match = re_dsa.match(dsa) |
match = re_dsa.match(dsa) |
| 1217 |
if name is None: |
if name is None: |
| 1218 |
name = cve |
name = cve |
| 1219 |
return A(self.url_nvd(url, cve), name) |
return A(self.url_nvd(url, cve), name) |
| 1220 |
|
|
| 1221 |
|
def make_rhbug_ref(self, url, cve, name=None): |
| 1222 |
|
if name is None: |
| 1223 |
|
name = cve |
| 1224 |
|
return A(self.url_rhbug(url, cve), name) |
| 1225 |
|
|
| 1226 |
def make_dsa_ref(self, url, dsa, name=None): |
def make_dsa_ref(self, url, dsa, name=None): |
| 1227 |
if name is None: |
if name is None: |
| 1252 |
|
|
| 1253 |
def make_red(self, contents): |
def make_red(self, contents): |
| 1254 |
return SPAN(contents, _class="red") |
return SPAN(contents, _class="red") |
| 1255 |
|
|
| 1256 |
|
def make_purple(self, contents): |
| 1257 |
|
return SPAN(contents, _class="purple") |
| 1258 |
|
|
| 1259 |
def make_dangerous(self, contents): |
def make_dangerous(self, contents): |
| 1260 |
return SPAN(contents, _class="dangerous") |
return SPAN(contents, _class="dangerous") |