From: Darren Tucker Date: Wed, 23 Nov 2022 02:18:54 +0000 (+1100) Subject: Add fallback for old platforms w/out MAP_ANON. X-Git-Tag: V_9_2_P1~106 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=15a01cf15f396f87c6d221c5a6af98331c818962;p=thirdparty%2Fopenssh-portable.git Add fallback for old platforms w/out MAP_ANON. --- 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);