]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
Add fallback for old platforms w/out MAP_ANON.
authorDarren Tucker <dtucker@dtucker.net>
Wed, 23 Nov 2022 02:18:54 +0000 (13:18 +1100)
committerDarren Tucker <dtucker@dtucker.net>
Wed, 23 Nov 2022 02:24:53 +0000 (13:24 +1100)
openbsd-compat/arc4random.h

index 2b57611f060c009b922b38f78b4dbe33ae27863f..01629752d127e861da6e3b7f312138cc419b40f6 100644 (file)
@@ -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);