From 1808f416e1ae5ff8e078d7452337f77a45861117 Mon Sep 17 00:00:00 2001 From: Packit Service Date: Dec 09 2020 19:21:16 +0000 Subject: Apply patch 0002-Add-getentropy-emulation-through-syscall.patch patch_name: 0002-Add-getentropy-emulation-through-syscall.patch present_in_specfile: true --- diff --git a/src/iceauth.c b/src/iceauth.c index 9b77eac..9af62f5 100644 --- a/src/iceauth.c +++ b/src/iceauth.c @@ -78,6 +78,55 @@ emulate_getrandom_buf ( } } +#ifndef HAVE_GETENTROPY +#include +#include + +/* code taken from libressl, license: */ +/* + * Copyright (c) 2014 Theo de Raadt + * Copyright (c) 2014 Bob Beck + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Emulation of getentropy(2) as documented at: + * http://man.openbsd.org/getentropy.2 + */ +#ifdef __NR_getrandom +static int +getentropy(void *buf, size_t len) +{ + int pre_errno = errno; + int ret; + if (len > 256) + return (-1); + do { + ret = syscall(__NR_getrandom, buf, len, 0); + } while (ret == -1 && errno == EINTR); + + if (ret != len) + return (-1); + errno = pre_errno; + + fprintf(stderr, "generating cookie with syscall\n"); + + return (0); +} +#define HAVE_GETENTROPY 1 +#endif /* __NR_getrandom */ + +#endif /* HAVE_GETENTROPY */ + static void arc4random_buf ( char *auth,