---
id: CVE-2020-37287
title: Vyper before 0.2.6 Call Stack Corruption via Complex Type Function Arguments
summary: >-
  Vyper before 0.2.6 contains a call stack corruption vulnerability that causes
  incorrect function outputs when complex types with non-base members are passed
  as arguments. Contracts passing multi-dimensional arrays or structs to
  internal …
severity: medium
cvss: 5.9
cvssVector: 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N'
cvssSource: cna
cwe:
  - CWE-131
vendor: vyperlang
product: vyper
affected:
  - vyper < 0.2.6
published: '2026-10-21'
updated: '2026-10-21'
sourceUpdated: '2026-10-21T00:36:16.257Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2020-37287'
references:
  - url: 'https://github.com/vyperlang/vyper/security/advisories/GHSA-4v7v-gqf9-ww2g'
    label: GitHub Security Advisory (GHSA-4v7v-gqf9-ww2g)
  - url: >-
      https://www.vulncheck.com/advisories/vyper-before-0.2.6-call-stack-corruption-via-complex-type-function-arguments
    label: >-
      VulnCheck Advisory: Vyper before 0.2.6 Call Stack Corruption via Complex
      Type Function Arguments
tags:
  - cve.org
ingestedAt: '2026-10-21T01:37:08.049Z'
---

## Overview

Vyper before 0.2.6 contains a call stack corruption vulnerability that causes incorrect function outputs when complex types with non-base members are passed as arguments. Contracts passing multi-dimensional arrays or structs to internal or external functions receive corrupted values because the compiler assumed each subtype size is 32.

## Affected

- `vyper < 0.2.6`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
