Add overflow-safe allocation wrappers to pmem module
This commit is contained in:
parent
89ef8663b0
commit
4e3bb5a0c9
|
|
@ -1,4 +1,6 @@
|
|||
#include <sys/mman.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include "pcompiler.h"
|
||||
#include "psql.h"
|
||||
|
|
@ -60,3 +62,10 @@ int pmem_munlock(void *ptr, size_t size) {
|
|||
void pmem_reset(void *ptr, size_t size) {
|
||||
madvise(ptr, size, MADV_DONTNEED);
|
||||
}
|
||||
|
||||
void *pmem_calloc_safe(size_t nmemb, size_t size) {
|
||||
if (nmemb != 0 && size > SIZE_MAX / nmemb) {
|
||||
return NULL;
|
||||
}
|
||||
return calloc(nmemb, size);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
#define __PMEM_H
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
void *pmem_mmap(size_t size);
|
||||
void *pmem_mmap_safe(size_t size);
|
||||
|
|
@ -9,5 +10,6 @@ int pmem_munmap(void *ptr, size_t size);
|
|||
int pmem_mlock(void *ptr, size_t size);
|
||||
int pmem_munlock(void *ptr, size_t size);
|
||||
void pmem_reset(void *ptr, size_t size);
|
||||
void *pmem_calloc_safe(size_t nmemb, size_t size);
|
||||
|
||||
#endif
|
||||
Loading…
Reference in New Issue