Lookup for vulnerable packages by Package URL.

Purlpkg:gem/rdiscount@2.2.7.4
Typegem
Namespace
Namerdiscount
Version2.2.7.4
Qualifiers
Subpath
Is_vulnerablefalse
Next_non_vulnerable_versionnull
Latest_non_vulnerable_versionnull
Affected_by_vulnerabilities
Fixing_vulnerabilities
0
url VCID-b9zq-jygh-u3da
vulnerability_id VCID-b9zq-jygh-u3da
summary
rdiscount has an Out-of-bounds Read
### Summary

A signed length truncation bug causes an out-of-bounds read in the
default Markdown parse path. Inputs larger than `INT_MAX` are truncated
to a signed `int` before entering the native parser, allowing the
parser to read past the end of the supplied buffer and crash the process.

### Details

In both  public entry points:

- `ext/rdiscount.c:97`
- `ext/rdiscount.c:136`

`RSTRING_LEN(text)` is passed directly into `mkd_string()`:

```c
MMIOT *doc = mkd_string(RSTRING_PTR(text),
RSTRING_LEN(text), flags);
```

`mkd_string()` accepts `int len`:

- `ext/mkdio.c:174`

```c
Document
* mkd_string(const char *buf, int len, mkd_flag_t flags)
{
    struct string_stream about;

    about.data = buf;
    about.size = len;

    return populate((getc_func)__mkd_io_strget, &about, flags & INPUT_MASK);
}
```

The parser stores the remaining input length in a signed `int`:

- `ext/markdown.h:205`

```c
struct string_stream {
    const
char *data;
    int   size;
};
```

The read loop stops only when `size == 0`:

- `ext/mkdio.c:161`

```c
int __mkd_io_strget(struct string_stream *in)
{
    if ( !in->size ) return EOF;

    --(in->size);

    return *(in->data)++;
}
```

If the Ruby string length exceeds `INT_MAX`, the value can truncate
to a negative `int`. In that state, the parser continues incrementing
`data` and reading past the end of the original Ruby string, causing
an out-of-bounds read and native crash.

Affected APIs:

- `RDiscount.new(input).to_html`
- `RDiscount.new(input).toc_content`

### Impact

This is an out-of-bounds read with the main issue being reliable
denial-of-service. Impacted is limited to deployments parses
attacker-controlled Markdown and permits multi-GB inputs.

### Fix

just add a checked length guard before the `mkd_string()`
call in both public entry points:

- `ext/rdiscount.c:97`
- `ext/rdiscount.c:136`
ex:

```c
VALUE text = rb_funcall(self, rb_intern(\"text\"), 0);
long text_len = RSTRING_LEN(text);
VALUE buf = rb_str_buf_new(1024);
Check_Type(text, T_STRING);

if (text_len > INT_MAX) {
    rb_raise(rb_eArgError, \"markdown input too large\");
}

MMIOT *doc = mkd_string(RSTRING_PTR(text), (int)text_len, flags);
```

The same guard should be applied in `rb_rdiscount_toc_content()`
before its `mkd_string()` call.
references
0
reference_url http://github.com/davidfstr/rdiscount/releases/tag/2.2.7.4
reference_id
reference_type
scores
0
value 5.9
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
1
value MODERATE
scoring_system generic_textual
scoring_elements
url http://github.com/davidfstr/rdiscount/releases/tag/2.2.7.4
1
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-35201
reference_id
reference_type
scores
0
value 0.00077
scoring_system epss
scoring_elements 0.2313
published_at 2026-06-09T12:55:00Z
1
value 0.00077
scoring_system epss
scoring_elements 0.2324
published_at 2026-06-05T12:55:00Z
2
value 0.00077
scoring_system epss
scoring_elements 0.23225
published_at 2026-06-06T12:55:00Z
3
value 0.00077
scoring_system epss
scoring_elements 0.2318
published_at 2026-06-07T12:55:00Z
4
value 0.00077
scoring_system epss
scoring_elements 0.23125
published_at 2026-06-08T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-35201
2
reference_url https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-35201
reference_id
reference_type
scores
url https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-35201
3
reference_url https://ftp.suse.com/pub/projects/security/yaml/suse-cvss-scores.yaml
reference_id
reference_type
scores
0
value 5.9
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
url https://ftp.suse.com/pub/projects/security/yaml/suse-cvss-scores.yaml
4
reference_url https://github.com/davidfstr/rdiscount
reference_id
reference_type
scores
0
value 5.9
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
1
value MODERATE
scoring_system generic_textual
scoring_elements
url https://github.com/davidfstr/rdiscount
5
reference_url https://github.com/davidfstr/rdiscount/commit/b1a16445e92e0d12c07594dedcdc56f80b317761
reference_id
reference_type
scores
0
value 5.9
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
1
value MODERATE
scoring_system generic_textual
scoring_elements
url https://github.com/davidfstr/rdiscount/commit/b1a16445e92e0d12c07594dedcdc56f80b317761
6
reference_url https://github.com/davidfstr/rdiscount/security/advisories/GHSA-6r34-94wq-jhrc
reference_id
reference_type
scores
0
value 5.9
scoring_system cvssv3
scoring_elements
1
value 5.9
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
2
value MODERATE
scoring_system cvssv3.1_qr
scoring_elements
3
value MODERATE
scoring_system generic_textual
scoring_elements
4
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:P/P:M/B:A/M:M/D:T/2026-04-07T16:21:05Z/
url https://github.com/davidfstr/rdiscount/security/advisories/GHSA-6r34-94wq-jhrc
7
reference_url https://github.com/rubysec/ruby-advisory-db/blob/master/gems/rdiscount/CVE-2026-35201.yml
reference_id
reference_type
scores
0
value 5.9
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
1
value MODERATE
scoring_system generic_textual
scoring_elements
url https://github.com/rubysec/ruby-advisory-db/blob/master/gems/rdiscount/CVE-2026-35201.yml
8
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-35201
reference_id
reference_type
scores
0
value 5.9
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
1
value MODERATE
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-35201
9
reference_url https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1136025
reference_id 1136025
reference_type
scores
url https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1136025
10
reference_url https://github.com/advisories/GHSA-6r34-94wq-jhrc
reference_id GHSA-6r34-94wq-jhrc
reference_type
scores
0
value MODERATE
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-6r34-94wq-jhrc
fixed_packages
0
url pkg:gem/rdiscount@2.2.7.4
purl pkg:gem/rdiscount@2.2.7.4
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:gem/rdiscount@2.2.7.4
aliases CVE-2026-35201, GHSA-6r34-94wq-jhrc
risk_score 3.1
exploitability 0.5
weighted_severity 6.2
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-b9zq-jygh-u3da
Risk_scorenull
Resource_urlhttp://public2.vulnerablecode.io/packages/pkg:gem/rdiscount@2.2.7.4