<article>
<header>
<h1>
{% if advisory.metadata.yanked %}
<span class="yanked">{{ advisory.id() }}</span>
{% else %}
{{ advisory.id() }}
{% endif %}
</h1>
<span class="subtitle">{{ rendered_title|safe }}</span>
</header>
{% if advisory.metadata.yanked %}
<hr>
<p class="warning">This advisory has been yanked and should be ignored. It is kept only for reference.</p>
<hr>
{% endif %}
<dl>
<dt id="issued">Issued</dt>
<dd>
<time datetime="{{ advisory.date().as_str() }}">
{{ advisory.date() | friendly_date }}
</time>
</dd>
<dt id="package">Package</dt>
<dd>
{% match advisory.metadata.collection %}
{% when Some with (collection) %}
{% if collection.to_string() == "crates" %}
<a href="/packages/{{ advisory.metadata.package }}.html">{{ advisory.metadata.package }}</a>
(<a href="https://crates.io/crates/{{ advisory.metadata.package }}">crates.io</a>)
{% else %}
<code><a href="/packages/{{ advisory.metadata.package }}.html">{{ advisory.metadata.package }}</a></code>
{% endif %}
{% when None %}
<code><a href="/packages/{{ advisory.metadata.package }}.html">{{ advisory.metadata.package }}</a></code>
{% endmatch %}
</dd>
<dt id="type">Type</dt>
<dd>
{% match advisory.metadata.informational %}
{% when Some with (informational) %}
{{ informational.to_string() | capitalize }}
{% when None %}
Vulnerability
{% endmatch %}
</dd>
{% if advisory.metadata.categories.len() > 0 %}
<dt id="categories">Categories</dt>
<dd>
<ul>
{% for category in advisory.metadata.categories %}
<li>{{ category.to_string() }}</li>
{% endfor %}
</ul>
</dd>
{% endif %}
{% if advisory.metadata.aliases.len() > 0 %}
<dt id="aliases">Aliases</dt>
<dd>
<ul>
{% for id in advisory.metadata.aliases %}
<li>
{% match id.url() %}
{% when Some with (url) %}
<a href="{{ url }}">{{ id }}</a>
{% when None %}
{{ id }}
{% endmatch %}
</li>
{% endfor %}
</ul>
</dd>
{% endif %}
{% if advisory.metadata.url.is_some() %}
<dt id="details">Details</dt>
<dd>
<a href="{{ advisory.metadata.url.as_ref().unwrap() }}">
{{ advisory.metadata.url.as_ref().unwrap() }}
</a>
</dd>
{% endif %}
{% if advisory.metadata.related.len() > 0 %}
<dt id="related">Related</dt>
<dd>
<ul>
{% for id in advisory.metadata.related %}
<li>
{% match id.url() %}
{% when Some with (url) %}
<a href="{{ url }}">{{ id }}</a>
{% when None %}
{{ id }}
{% endmatch %}
</li>
{% endfor %}
</ul>
</dd>
{% endif %}
{% match advisory.metadata.cvss %}
{% when Some with (cvss) %}
<dt id="cvss">CVSS</dt>
<dd>{{ cvss }}</dd>
{% when None %}
{% endmatch %}
<dt id="patched">Patched</dt>
<dd>
{% if advisory.versions.patched.len() == 0 %}
no patched versions
{% else %}
<ul>
{% for patched in advisory.versions.patched %}
<li><code>{{ patched }}</code></li>
{% endfor %}
</ul>
{% endif %}
</dd>
{% if advisory.versions.unaffected.len() > 0 %}
<dt id="unaffected">Unaffected</dt>
<dd>
<ul>
{% for unaffected in advisory.versions.unaffected %}
<li><code>{{ unaffected }}</code></li>
{% endfor %}
</ul>
</dd>
{% endif %}
{% if advisory.metadata.keywords.len() > 0 %}
<dt id="keywords">Keywords</dt>
<dd>
<ul>
{% for keyword in advisory.metadata.keywords %}
<li>{{ keyword.as_str() }}</li>
{% endfor %}
</ul>
</dd>
{% endif %}
{% match advisory.affected %}
{% when Some with (affected) %}
{% if affected.arch.len() > 0 %}
<dt>Affected Architectures</dt>
<dd>
<ul>
{% for arch in affected.arch %}
<li><code>{{ arch }}</code></li>
{% endfor %}
</ul>
</dd>
{% endif %}
{% if affected.os.len() > 0 %}
<dt>Affected OSes</dt>
<dd>
<ul>
{% for os in affected.os %}
<li><code>{{ os }}</code></li>
{% endfor %}
</ul>
</dd>
{% endif %}
{% when None %}
{% endmatch %}
</dl>
{% match advisory.affected %}
{% when Some with (affected) %}
{% if affected.functions.len() > 0 %}
<dl>
<dt>Affected Functions</dt>
<dd>Version</dd>
{% for function in affected.functions %}
<dt><code>{{ function.0 }}</code></dt>
<dd>
<ul>
{% for version_req in function.1 %}
<li><code>{{ version_req }}</code></li>
{% endfor %}
</ul>
</dd>
{% endfor %}
</dl>
{% endif %}
{% when None %}
{% endmatch %}
<h3 id="description">Description</h3>
{{ rendered_description|safe }}
{% match advisory.metadata.collection %}
{% when Some with (collection) %}
<h3 id="more">More</h3>
<ul>
<li><a
href="https://github.com/RustSec/advisory-db/commits/main/{{ collection }}/{{ advisory.metadata.package }}/{{ advisory.id() }}.md">Advisory
History</a></li>
<li><a
href="https://github.com/RustSec/advisory-db/edit/main/{{ collection }}/{{ advisory.metadata.package }}/{{ advisory.id() }}.md">Edit
Advisory</a></li>
</ul>
{% when None %}
{% endmatch %}
</article>