-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathbugreports.html
More file actions
115 lines (103 loc) · 5.06 KB
/
Copy pathbugreports.html
File metadata and controls
115 lines (103 loc) · 5.06 KB
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
<!DOCTYPE html>
<html lang="en" class="scroll-smooth">
<head>
<meta charset="utf-8">
<script>(function(){var t=localStorage.getItem("cs-lab-theme");if(t==="light")document.documentElement.setAttribute("data-theme","light");})()</script>
<meta name="description" content="Bug reports — confirmed bugs found in network protocol implementations through formal analysis and automated testing.">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Bug Reports — The Lab for Compiler and Security Technology</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:ital,wght@0,300;0,400;0,500;0,600;0,700;0,800;1,400;1,700&family=JetBrains+Mono&display=swap" rel="stylesheet">
<link rel="stylesheet" href="static/css/fontawesome.all.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/academicons@1.9.2/css/academicons.min.css">
<link rel="stylesheet" href="static/css/index.css">
<link rel="icon" href="static/images/favicon.html">
<script defer src="static/js/fontawesome.all.min.js"></script>
<script src="static/js/index.js"></script>
</head>
<body>
<div class="bg-pattern"></div>
<div class="site-content">
<nav class="navbar" role="navigation" aria-label="main navigation">
<div class="navbar-inner">
<a id="nav-back" href="works.html" class="nav-back" style="display:none;">
<span class="back-arrow">←</span> Works
</a>
<a href="index.html" class="navbar-logo">
<span class="navbar-logo-dot"></span>
<span id="logo-text"></span>
</a>
<ul id="nav-links" class="navbar-links"></ul>
<div class="navbar-actions">
<button id="theme-toggle" class="theme-toggle" aria-label="Toggle theme">
<span id="theme-toggle-icon">☀️</span>
</button>
<button class="navbar-burger" aria-label="menu" aria-expanded="false">
<span aria-hidden="true"></span><span aria-hidden="true"></span><span aria-hidden="true"></span>
</button>
</div>
</div>
</nav>
<section class="hero">
<div class="hero-inner">
<h1 class="hero-title">
<span class="hero-title-line gradient-text">Bug Gallery</span>
</h1>
<p class="hero-subtitle">Confirmed bugs found in protocol implementations</p>
</div>
</section>
<section class="section">
<div class="section-inner">
<div class="stat-panels reveal" id="bug-count-panel">
<div class="stat-panel panel-fixed"><div class="panel-count" id="fixed-count">0</div><div class="panel-label">Fixed</div></div>
<div class="stat-panel panel-fix-approved"><div class="panel-count" id="reproduced-count">0</div><div class="panel-label">Fix Approved</div></div>
<div class="stat-panel panel-confirmed"><div class="panel-count" id="confirmed-count">0</div><div class="panel-label">Confirmed</div></div>
<div class="stat-panel panel-pending"><div class="panel-count" id="pending-count">0</div><div class="panel-label">Pending</div></div>
</div>
<div id="loading-message" class="loading">Loading bug reports...</div>
<div class="table-wrapper reveal">
<table>
<thead><tr><th>ID</th><th>Protocol</th><th>Root Causes</th><th>Link</th><th>Status</th><th>Date</th></tr></thead>
<tbody id="bug-report-table"></tbody>
</table>
</div>
</div>
</section>
<footer class="footer">
<div class="footer-brand">The Lab for Compiler and Security Technology</div>
<div class="footer-copy">
School of Computer Science · Nanjing University |
<a href="mailto:qingkaishi@nju.edu.cn">Contact</a>
</div>
</footer>
</div>
<script>
async function loadBugReports() {
try {
const r = await fetch("static/bug/BugReport.json");
const bugs = await r.json();
bugs.sort((a, b) => (new Date(b.date) - new Date(a.date)));
const tbody = document.getElementById("bug-report-table");
const counts = { "Fixed":0, "Confirmed":0, "Fix Approved":0, "Pending":0 };
bugs.forEach(b => { if (counts.hasOwnProperty(b.status)) counts[b.status] += 1; });
document.getElementById("fixed-count").textContent = counts["Fixed"];
document.getElementById("confirmed-count").textContent = counts["Confirmed"];
document.getElementById("reproduced-count").textContent = counts["Fix Approved"];
document.getElementById("pending-count").textContent = counts["Pending"];
document.getElementById("loading-message").style.display = "none";
bugs.forEach((bug, i) => {
const row = document.createElement("tr");
row.innerHTML = '<td>'+(i+1)+'</td><td>'+bug.repo_name+'</td><td>'+bug.bug_type+'</td><td><a href="'+bug["patch/issue link"]+'" target="_blank">View</a></td><td>'+bug.status+'</td><td>'+bug.date+'</td>';
tbody.appendChild(row);
});
} catch (e) {
console.error(e);
var m = document.getElementById("loading-message");
if (m) m.textContent = "Failed to load bug reports.";
}
}
document.addEventListener("DOMContentLoaded", loadBugReports);
</script>
</body>
</html>