<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://db.gcve.eu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Mon, 28 Sep 2026 23:55:58 +0000</lastBuildDate>
    <item>
      <title>CVE-2022-50778 — fortify: Fix __compiletime_strlen() under UBSAN_BOUNDS_LOCAL</title>
      <link>https://db.gcve.eu/vuln/cve-2022-50778</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;fortify: Fix __compiletime_strlen() under UBSAN_BOUNDS_LOCAL&lt;/p&gt;
&lt;p&gt;With CONFIG_FORTIFY=y and CONFIG_UBSAN_LOCAL_BOUNDS=y enabled, we observe
a runtime panic while running Android&amp;#39;s Compatibility Test Suite&amp;#39;s (CTS)
android.hardware.input.cts.tests. This is stemming from a strlen()
call in hidinput_allocate().&lt;/p&gt;
&lt;p&gt;__compiletime_strlen() is implemented in terms of __builtin_object_size(),
then does an array access to check for NUL-termination. A quirk of
__builtin_object_size() is that for strings whose values are runtime
dependent, __builtin_object_size(str, 1 or 0) returns the maximum size
of possible values when those sizes are determinable at compile time.
Example:&lt;/p&gt;
&lt;p&gt;static const char *v = &amp;#34;FOO BAR&amp;#34;;
  static const char *y = &amp;#34;FOO BA&amp;#34;;
  unsigned long x (int z) {
      // Returns 8, which is:
      // max(__builtin_object_size(v, 1), __builtin_object_size(y, 1))
      return __builtin_object_size(z ? v : y, 1);
  }&lt;/p&gt;
&lt;p&gt;So when FORTIFY_SOURCE is enabled, the current implementation of
__compiletime_strlen() will try to access beyond the end of y at runtime
using the size of v. Mixed with UBSAN_LOCAL_BOUNDS we get a fault.&lt;/p&gt;
&lt;p&gt;hidinput_allocate() has a local C string whose value is control flow
dependent on a switch statement, so __builtin_object_size(str, 1)
evaluates to the maximum string length, making all other cases fault on
the last character check. hidinput_allocate() could be cleaned up to
avoid runtime calls to st…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;fortify: Fix __compiletime_strlen() under UBSAN_BOUNDS_LOCAL&lt;/p&gt;
&lt;p&gt;With CONFIG_FORTIFY=y and CONFIG_UBSAN_LOCAL_BOUNDS=y enabled, we observe
a runtime panic while running Android&amp;#39;s Compatibility Test Suite&amp;#39;s (CTS)
android.hardware.input.cts.tests. This is stemming from a strlen()
call in hidinput_allocate().&lt;/p&gt;
&lt;p&gt;__compiletime_strlen() is implemented in terms of __builtin_object_size(),
then does an array access to check for NUL-termination. A quirk of
__builtin_object_size() is that for strings whose values are runtime
dependent, __builtin_object_size(str, 1 or 0) returns the maximum size
of possible values when those sizes are determinable at compile time.
Example:&lt;/p&gt;
&lt;p&gt;static const char *v = &amp;#34;FOO BAR&amp;#34;;
  static const char *y = &amp;#34;FOO BA&amp;#34;;
  unsigned long x (int z) {
      // Returns 8, which is:
      // max(__builtin_object_size(v, 1), __builtin_object_size(y, 1))
      return __builtin_object_size(z ? v : y, 1);
  }&lt;/p&gt;
&lt;p&gt;So when FORTIFY_SOURCE is enabled, the current implementation of
__compiletime_strlen() will try to access beyond the end of y at runtime
using the size of v. Mixed with UBSAN_LOCAL_BOUNDS we get a fault.&lt;/p&gt;
&lt;p&gt;hidinput_allocate() has a local C string whose value is control flow
dependent on a switch statement, so __builtin_object_size(str, 1)
evaluates to the maximum string length, making all other cases fault on
the last character check. hidinput_allocate() could be cleaned up to
avoid runtime calls to st…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/cve-2022-50778</guid>
    </item>
  </channel>
</rss>
