<?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://cve.radiocsirt.org</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>Tue, 06 Oct 2026 23:30:11 +0000</lastBuildDate>
    <item>
      <title>CVE-2023-30629 — Vyper's raw_call with outsize=0 and revert_on_failure=False returns incorrect success value</title>
      <link>https://cve.radiocsirt.org/vuln/cve-2023-30629</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; vyperlang vyper&lt;/p&gt;
&lt;p&gt;Vyper is a Pythonic Smart Contract Language for the ethereum virtual machine. In versions 0.3.1 through 0.3.7, the Vyper compiler generates the wrong bytecode. Any contract that uses the `raw_call` with `revert_on_failure=False` and `max_outsize=0` receives the wrong response from `raw_call`. Depending on the memory garbage, the result can be either `True` or `False`. A patch is available and, as of time of publication, anticipated to be part of Vyper 0.3.8. As a workaround, one may always put  `max_outsize&amp;gt;0`.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; vyperlang vyper&lt;/p&gt;
&lt;p&gt;Vyper is a Pythonic Smart Contract Language for the ethereum virtual machine. In versions 0.3.1 through 0.3.7, the Vyper compiler generates the wrong bytecode. Any contract that uses the `raw_call` with `revert_on_failure=False` and `max_outsize=0` receives the wrong response from `raw_call`. Depending on the memory garbage, the result can be either `True` or `False`. A patch is available and, as of time of publication, anticipated to be part of Vyper 0.3.8. As a workaround, one may always put  `max_outsize&amp;gt;0`.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/cve-2023-30629</guid>
    </item>
    <item>
      <title>GHSA-w9g2-3w7p-72g9 — Incorrect success value returned in vyper</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-w9g2-3w7p-72g9</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: vyper&lt;/p&gt;
&lt;p&gt;### Background
During the audit of [Lido&amp;#39;s Gate Seals](https://github.com/lidofinance/gate-seals) code [statemind](https://statemind.io) team identified a weird behavior of the code that uses `raw_call`: https://github.com/lidofinance/gate-seals/blob/051593e74df01a4131c485b4fda52e691cd4b7d8/contracts/GateSeal.vy#L164 .&lt;/p&gt;
&lt;p&gt;Construction like this:
```vyper
success = raw_call(
    sealable,
    _abi_encode(SEAL_DURATION_SECONDS, method_id=method_id(&amp;#34;pauseFor(uint256)&amp;#34;)),
    revert_on_failure=False
)
```
was not fully documented: https://docs.vyperlang.org/en/v0.3.7/built-in-functions.html#raw_call .&lt;/p&gt;
&lt;p&gt;The documentation says that: if `max_outsize=0` it should return nothing and then it says that if `revert_on_failure=False` it should return a `success` flag in the tuple of response, but what if `max_outsize=0`  and `revert_on_failure=False`.&lt;/p&gt;
&lt;p&gt;&amp;lt;img width=&amp;#34;715&amp;#34; alt=&amp;#34;image&amp;#34; src=&amp;#34;https://user-images.githubusercontent.com/22330612/232125364-d2b3bbac-0b4f-40cb-80ff-f55d8eafef44.png&amp;#34;&amp;gt;&lt;/p&gt;
&lt;p&gt;So the team started researching what exactly happened in that case, after some research we found that the Vyper compiler generates the wrong bytecode in that case, it generates the sequence:
```
CALL // call
MLOAD // MLOAD is wrong since the CALL result is already stored in the stack
```&lt;/p&gt;
&lt;p&gt;### Impact
Example of buggy code:
```vyper
@external
def returnSome(calling: address, a: uint256) -&amp;gt; bool:
    success: bool = false
    success = raw_call(
        calling,
        _abi_encode(a, method_id=method_id(&amp;#34;a(…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: vyper&lt;/p&gt;
&lt;p&gt;### Background
During the audit of [Lido&amp;#39;s Gate Seals](https://github.com/lidofinance/gate-seals) code [statemind](https://statemind.io) team identified a weird behavior of the code that uses `raw_call`: https://github.com/lidofinance/gate-seals/blob/051593e74df01a4131c485b4fda52e691cd4b7d8/contracts/GateSeal.vy#L164 .&lt;/p&gt;
&lt;p&gt;Construction like this:
```vyper
success = raw_call(
    sealable,
    _abi_encode(SEAL_DURATION_SECONDS, method_id=method_id(&amp;#34;pauseFor(uint256)&amp;#34;)),
    revert_on_failure=False
)
```
was not fully documented: https://docs.vyperlang.org/en/v0.3.7/built-in-functions.html#raw_call .&lt;/p&gt;
&lt;p&gt;The documentation says that: if `max_outsize=0` it should return nothing and then it says that if `revert_on_failure=False` it should return a `success` flag in the tuple of response, but what if `max_outsize=0`  and `revert_on_failure=False`.&lt;/p&gt;
&lt;p&gt;&amp;lt;img width=&amp;#34;715&amp;#34; alt=&amp;#34;image&amp;#34; src=&amp;#34;https://user-images.githubusercontent.com/22330612/232125364-d2b3bbac-0b4f-40cb-80ff-f55d8eafef44.png&amp;#34;&amp;gt;&lt;/p&gt;
&lt;p&gt;So the team started researching what exactly happened in that case, after some research we found that the Vyper compiler generates the wrong bytecode in that case, it generates the sequence:
```
CALL // call
MLOAD // MLOAD is wrong since the CALL result is already stored in the stack
```&lt;/p&gt;
&lt;p&gt;### Impact
Example of buggy code:
```vyper
@external
def returnSome(calling: address, a: uint256) -&amp;gt; bool:
    success: bool = false
    success = raw_call(
        calling,
        _abi_encode(a, method_id=method_id(&amp;#34;a(…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-w9g2-3w7p-72g9</guid>
    </item>
  </channel>
</rss>
