Skip to content

Releases: GrapheneOS/hardened_malloc

13

14 Oct 04:44
13
Compare
Choose a tag to compare

Changes in version 13:

  • add support for ARM hardware memory tagging (MTE) which has been shipped in production on GrapheneOS for the past year (see the README section on memory tagging for details)
  • Android: implement fatal_error() via async_safe_fatal() for improved logging
  • Android: restore the default SIGABRT handler in fatal_error() before aborting to avoid deadlocks with crashlytics
  • Android: remove redundant warning switches for Android
  • fix -Wimplicit-function-declaration warning with GCC 14
  • update libdivide to 5.1

A full list of changes from the previous release (version 12) 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.

This is a standalone release for use outside of GrapheneOS. GrapheneOS ships these changes shortly after they're implemented as part of our OS releases rather than waiting for these releases.

These integer tags are the standalone releases, while date style tags such as 2024101200 and 2024101200-caimito 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.

12

06 Aug 22:06
12
Compare
Choose a tag to compare
12

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.

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.