(self)
| 198 | _BASE_URL: Final = 'https://www.cve.org/CVERecord?id=CVE-' |
| 199 | |
| 200 | def run(self) -> tuple[list[Node], list[system_message]]: |
| 201 | target_id = f'index-{self.env.new_serialno("index")}' |
| 202 | entries = [ |
| 203 | ( |
| 204 | 'single', |
| 205 | _('Common Vulnerabilities and Exposures; CVE %s') % self.target, |
| 206 | target_id, |
| 207 | '', |
| 208 | None, |
| 209 | ) |
| 210 | ] |
| 211 | |
| 212 | index = addnodes.index(entries=entries) |
| 213 | target = nodes.target('', '', ids=[target_id]) |
| 214 | self.inliner.document.note_explicit_target(target) |
| 215 | |
| 216 | try: |
| 217 | refuri = self.build_uri() |
| 218 | reference = nodes.reference( |
| 219 | '', '', internal=False, refuri=refuri, classes=['cve'] |
| 220 | ) |
| 221 | if self.has_explicit_title: |
| 222 | reference += nodes.strong(self.title, self.title) |
| 223 | else: |
| 224 | title = f'CVE {self.title}' |
| 225 | reference += nodes.strong(title, title) |
| 226 | except ValueError: |
| 227 | msg = self.inliner.reporter.error( |
| 228 | __('invalid CVE number %s') % self.target, line=self.lineno |
| 229 | ) |
| 230 | prb = self.inliner.problematic(self.rawtext, self.rawtext, msg) |
| 231 | return [prb], [msg] |
| 232 | |
| 233 | return [index, target, reference], [] |
| 234 | |
| 235 | def build_uri(self) -> str: |
| 236 | ret = self.target.partition('#') |
no test coverage detected