From 15a01cf15f396f87c6d221c5a6af98331c818962 Mon Sep 17 00:00:00 2001 From: Darren Tucker Date: Wed, 23 Nov 2022 13:18:54 +1100 Subject: [PATCH] Add fallback for old platforms w/out MAP_ANON. --- openbsd-compat/arc4random.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/openbsd-compat/arc4random.h b/openbsd-compat/arc4random.h index 2b57611f0..01629752d 100644 --- a/openbsd-compat/arc4random.h +++ b/openbsd-compat/arc4random.h @@ -63,6 +63,7 @@ _rs_forkdetect(void) static inline int _rs_allocate(struct _rs **rsp, struct _rsx **rsxp) { +#if defined(MAP_ANON) && defined(MAP_PRIVATE) if ((*rsp = mmap(NULL, sizeof(**rsp), PROT_READ|PROT_WRITE, MAP_ANON|MAP_PRIVATE, -1, 0)) == MAP_FAILED) return (-1); @@ -73,6 +74,15 @@ _rs_allocate(struct _rs **rsp, struct _rsx **rsxp) *rsp = NULL; return (-1); } +#else + if ((*rsp = malloc(sizeof(**rsp))) == NULL) + return (-1); + if ((*rsxp = malloc(sizeof(**rsxp))) == NULL) { + free(*rsp); + *rsp = NULL; + return (-1); + } +#endif _ARC4_ATFORK(_rs_forkhandler); return (0);