Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Step:FrontRunner
openssl-1_1.8412
0001-Resume-reading-from-randfile-when-interrup...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0001-Resume-reading-from-randfile-when-interrupted-by-a-s.patch of Package openssl-1_1.8412
From c5ac41de1511f898301c298b2b28d05372cba817 Mon Sep 17 00:00:00 2001 From: Vitezslav Cizek <vcizek@suse.com> Date: Thu, 8 Dec 2016 13:10:33 +0100 Subject: [PATCH] Resume reading from randfile when interrupted by a signal. It was regularly observed with openssh: sshd: fatal: cannot read from /dev/urandom, Interrupted system call --- crypto/rand/randfile.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/crypto/rand/randfile.c b/crypto/rand/randfile.c index c96383a..6e39e86 100644 --- a/crypto/rand/randfile.c +++ b/crypto/rand/randfile.c @@ -104,6 +104,12 @@ static __FILE_ptr32 (*const vms_fopen)(const char *, const char *, ...) = #define RFILE ".rnd" +#ifdef EINTR +# define INTERRUPTED(in) (ferror(in) && errno == EINTR) +#else +# define INTERRUPTED (0) +#endif + /* * Note that these functions are intended for seed files only. Entropy * devices and EGD sockets are handled in rand_unix.c @@ -162,9 +168,16 @@ int RAND_load_file(const char *file, long bytes) n = (bytes < BUFSIZE) ? (int)bytes : BUFSIZE; else n = BUFSIZE; + i = fread(buf, 1, n, in); - if (i <= 0) + if (i <= 0) { + if (INTERRUPTED(in)) { + /* Interrupted by a signal, resume reading */ + clearerr(in); + continue; + } break; + } RAND_add(buf, i, (double)i); ret += i; -- 2.10.2
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor