Skip to content

Releases: GrapheneOS/hardened_malloc

12

28 Sep 05:49
12
Compare
Choose a tag to compare

Changes in version 12:

  • raise class region size to 32GB for arm64 Android (requires kernel providing 48-bit address space via 4 level page tables)
  • add configuration for disabling self-init
  • enable Intel CET support
  • drop support for legacy compilers and libc versions
  • merge fprintf/fputs calls in malloc_info
  • preserve error for free calls (future POSIX requirement)
  • support versioned Clang
  • when arenas are enabled, properly handle threads making their first allocation by resizing a slab allocation from another thread to another slab allocation size class with realloc instead of triggering a crash by trying to lock a field in the internal allocator state that's not a lock
  • minor implementation and code style improvements

A full list of changes from the previous release (version 11) is available through the Git commit log between the releases.


See the README for this release for an overview of the project and many details about the design goals and implementation.
versions
These integer tags are the standalone releases, while date style tags such as 2023091800 and 2023091800-felix are part of GrapheneOS releases and may contain GrapheneOS-specific changes such as workarounds for latent memory corruption bugs encountered in the wild while waiting for an upstream or downstream fix.

11

22 Jan 03:24
11
Compare
Choose a tag to compare
11

Full list of changes from the previous release (version 10). Notable changes:

  • improved test suite portability
  • various minor optimizations
  • code readability improvements

See the README for this release for an overview of the project and many details about the design goals and implementation.

These integer numbered tags are the standalone releases, while the SQ1A.211205.008.2021122018 style tags are part of GrapheneOS releases and may contain GrapheneOS-specific changes such as workarounds for latent memory corruption bugs encountered in the wild while waiting for an upstream or downstream fix.

10

12 Jan 20:15
10
Compare
Choose a tag to compare
10

Full list of changes from the previous release (version 9). Notable changes:

  • improved memory corruption mitigation test suite
  • remove canary value field from slab metadata when the slab canary feature is disabled
  • add appropriate attributes to the public API defined in the hardened_malloc header
  • add configuration variant system with two standard recommended configurations: default for an aggressive security-focused configuration and light for a more balanced configuration disabling a subset of the optional security features for better performance (comparable to glibc malloc without the thread cache) and much lower memory usage while still providing most of the security properties (details in README)
  • switch from C11 to C17

See the README for this release for an overview of the project and many details about the design goals and implementation.

These integer numbered tags are the standalone releases, while the SQ1A.211205.008.2021122018 style tags are part of GrapheneOS releases and may contain GrapheneOS-specific changes such as workarounds for latent memory corruption bugs encountered in the wild while waiting for an upstream or downstream fix.

9

03 Jan 06:38
9
Compare
Choose a tag to compare
9

Full list of changes from the previous release (version 8).


See the README for this release for an overview of the project and many details about the design goals and implementation.

These integer numbered tags are the standalone releases, while the SQ1A.211205.008.2021122018 style tags are part of GrapheneOS releases and may contain GrapheneOS-specific changes such as workarounds for latent memory corruption bugs encountered in the wild while waiting for an upstream or downstream fix.

8

13 May 22:32
8
Compare
Choose a tag to compare
8

Full list of changes from the previous release (version 7).


See the README for this release for an overview of the project and many details about the design goals and implementation.

These integer numbered tags are the standalone releases, while the RQ1A.210105.003.2021.01.05.03 style tags are part of GrapheneOS releases and may contain GrapheneOS-specific changes such as workarounds for latent memory corruption bugs encountered in the wild while waiting for an upstream or downstream fix.

7

28 Mar 18:11
7
Compare
Choose a tag to compare
7

Full list of changes from the previous release (version 6).


See the README for this release for an overview of the project and many details about the design goals and implementation.

These integer numbered tags are the standalone releases, while the RQ1A.210105.003.2021.01.05.03 style tags are part of GrapheneOS releases and may contain GrapheneOS-specific changes such as workarounds for latent memory corruption bugs encountered in the wild while waiting for an upstream or downstream fix.

6

16 Feb 14:30
6
Compare
Choose a tag to compare
6

Full list of changes from the previous release (version 5).


See the README for this release for an overview of the project and many details about the design goals and implementation.

These integer numbered tags are the standalone releases, while the RQ1A.210105.003.2021.01.05.03 style tags are part of GrapheneOS releases and may contain GrapheneOS-specific changes such as workarounds for latent memory corruption bugs encountered in the wild while waiting for an upstream or downstream fix.

5

07 Jan 16:07
5
Compare
Choose a tag to compare
5

Full list of changes from the previous release (version 4).


See the README for this release for an overview of the project and many details about the design goals and implementation.

These integer numbered tags are the standalone releases, while the RQ1A.210105.003.2021.01.05.03 style tags are part of GrapheneOS releases and may contain GrapheneOS-specific changes such as workarounds for latent memory corruption bugs encountered in the wild while waiting for an upstream or downstream fix.

4

10 Nov 19:39
4
Compare
Choose a tag to compare
4

Full list of changes from the previous release (version 3).


See the README for this release for an overview of the project and many details about the design goals and implementation.

These integer numbered tags are the standalone releases, while the RP1A.201105.002.2020.11.07.00 style tags are part of GrapheneOS releases and may contain GrapheneOS-specific changes such as workarounds for latent memory corruption bugs encountered in the wild while waiting for an upstream or downstream fix.

3

17 Sep 21:14
3
Compare
Choose a tag to compare
3

Full list of changes from the previous release (version 2).


See the README for this release for an overview of the project and many details about the design goals and implementation.

These integer numbered tags are the standalone releases, while the QQ3A.200805.001.2020.09.11.14 style tags are part of GrapheneOS releases and may contain GrapheneOS-specific changes such as workarounds for latent memory corruption bugs encountered in the wild while waiting for an upstream or downstream fix.