Frank Denis
473e1718cc
Add sodium_{malloc,allocarray,free}() and sodium_mprotect_*()
...
ptr = sodium_malloc(size) returns a pointer from which exactly "size" bytes
can be accessed.
ptr = sodium_allocarray(count, size) allocates enough storage space for
"count" pointers or scalars of unit size "size".
In both cases, the region is immediately followed by a guard page.
As a result, any attempt to access a memory location after ptr[size - 1] will
immediately trigger a segmentation fault.
The allocated region is mlock()ed and filled with 0xd0 bytes.
A read-only page with the size, a guard page, as well as a canary are
placed before the returned pointer.
The canary is checked by sodium_free(); as a result, altering data right
before ptr is likely to cause sodium_free() to kill the process.
sodium_free() munlock()s the region and fills it with zeros before
actually calling free().
sodium_mprotect_noaccess(), sodium_mprotect_readonly() and
sodium_mprotect_readwrite() can be used to change the protection on the set
of allocated pages.
Reverting the protection to read+write is not required before calling
sodium_free().
2014-08-14 21:41:05 -07:00
..
2014-06-30 16:23:34 -07:00
2014-06-30 16:23:34 -07:00
2013-04-21 17:32:04 -07:00
2013-02-09 04:21:32 +08:00
2013-04-21 17:32:04 -07:00
2013-02-09 04:21:32 +08:00
2013-04-28 01:02:52 -07:00
2013-02-09 04:21:32 +08:00
2014-04-14 21:34:55 -07:00
2014-04-14 21:34:55 -07:00
2014-04-14 21:34:55 -07:00
2014-04-14 21:34:55 -07:00
2013-04-26 21:52:21 -07:00
2013-02-09 04:21:32 +08:00
2013-04-21 17:32:04 -07:00
2013-02-09 04:21:32 +08:00
2013-04-26 23:25:14 -07:00
2013-02-09 04:21:32 +08:00
2013-04-28 01:02:52 -07:00
2013-02-09 04:21:32 +08:00
2014-07-11 12:28:52 -07:00
2014-07-11 12:28:52 -07:00
2014-07-01 19:33:59 +00:00
2013-12-31 18:37:36 +01:00
2014-05-23 10:33:58 +03:00
2014-05-25 19:13:04 -07:00
2013-04-21 17:32:04 -07:00
2013-02-09 04:21:32 +08:00
2014-05-15 15:26:44 -07:00
2014-05-15 15:26:44 -07:00
2014-04-14 15:52:55 -07:00
2013-04-21 17:32:04 -07:00
2013-02-09 04:21:32 +08:00
2013-04-21 17:32:04 -07:00
2013-02-09 04:21:32 +08:00
2013-04-21 17:32:04 -07:00
2013-02-09 04:21:32 +08:00
2013-04-21 17:32:04 -07:00
2013-02-09 04:21:32 +08:00
2013-04-21 17:32:04 -07:00
2013-02-09 04:21:32 +08:00
2013-04-21 17:32:04 -07:00
2013-02-09 04:21:32 +08:00
2014-08-05 14:26:39 -07:00
2014-08-05 13:32:25 -07:00
2013-04-27 04:34:36 -07:00
2013-04-21 17:32:09 -07:00
2013-11-11 23:33:16 -08:00
2013-11-11 23:33:16 -08:00
2013-04-26 23:25:14 -07:00
2013-04-21 17:32:08 -07:00
2013-02-09 04:21:32 +08:00
2013-04-27 04:41:34 -07:00
2013-02-09 04:21:32 +08:00
2013-04-27 04:41:34 -07:00
2013-02-09 04:21:32 +08:00
2014-08-14 21:41:05 -07:00
2013-04-21 17:32:04 -07:00
2013-02-09 04:21:32 +08:00
2013-04-28 01:02:52 -07:00
2013-02-09 04:21:32 +08:00
2013-04-21 17:32:04 -07:00
2013-02-09 04:21:32 +08:00
2013-07-07 22:04:13 -07:00
2014-06-07 10:16:03 -07:00
2014-06-07 10:16:03 -07:00
2014-05-15 00:01:16 -07:00
2014-05-14 23:22:11 -07:00
2013-02-09 04:21:32 +08:00
2013-04-21 17:32:04 -07:00
2013-02-09 04:21:32 +08:00
2013-04-21 17:32:04 -07:00
2013-02-09 04:21:32 +08:00
2013-04-21 17:32:04 -07:00
2013-02-09 04:21:32 +08:00
2013-04-21 17:32:04 -07:00
2013-02-09 04:21:32 +08:00
2013-04-21 17:32:04 -07:00
2013-02-09 04:21:32 +08:00
2013-04-26 23:25:14 -07:00
2013-02-09 04:21:32 +08:00
2013-04-28 01:02:52 -07:00
2013-02-09 04:21:32 +08:00
2014-07-11 12:23:52 -07:00
2014-06-26 15:18:39 -07:00
2014-07-01 19:33:59 +00:00
2014-06-26 15:18:39 -07:00
2013-04-21 17:32:04 -07:00
2013-02-09 04:21:32 +08:00
2013-04-27 04:41:34 -07:00
2013-02-13 21:14:29 +08:00
2014-08-05 14:26:39 -07:00
2014-05-07 23:23:13 -07:00
2013-04-25 22:37:15 -07:00
2013-04-25 22:37:15 -07:00
2014-08-14 21:41:05 -07:00
2014-08-14 21:41:05 -07:00
2014-08-14 21:41:05 -07:00
2014-08-14 21:41:05 -07:00
2014-04-17 22:15:09 -07:00
2014-04-15 00:39:14 -07:00
2014-05-08 21:32:36 -07:00
2013-04-25 22:37:15 -07:00
2013-04-21 17:32:04 -07:00
2013-02-09 04:21:32 +08:00
2013-04-21 17:32:04 -07:00
2013-02-09 04:21:32 +08:00
2013-04-21 17:32:04 -07:00
2013-02-09 04:21:32 +08:00
2013-04-21 17:32:04 -07:00
2013-02-09 04:21:32 +08:00
2014-04-08 14:36:09 -07:00
2014-04-08 14:36:09 -07:00
2013-10-21 20:11:56 -07:00