Commit f69a8aeb authored by Lutz Jänicke's avatar Lutz Jänicke
Browse files

Fix hang in EGD/PRNGD query when communication socket is closed

prematurely by EGD/PRNGD.
PR: 1014
Submitted by: Darren Tucker <dtucker@zip.com.au>
parent 9d10b15e
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -750,6 +750,10 @@

 Changes between 0.9.7e and 0.9.7f  [XX xxx XXXX]

  *) Fix hang in EGD/PRNGD query when communication socket is closed
     prematurely by EGD/PRNGD.
     [Darren Tucker <dtucker@zip.com.au> via Lutz Jänicke, resolves #1014]

  *) Prompt for pass phrases when appropriate for PKCS12 input format.
     [Steve Henson]

+6 −2
Original line number Diff line number Diff line
@@ -216,7 +216,9 @@ int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes)
	    while (numbytes != 1)
		{
	        num = read(fd, egdbuf, 1);
	        if (num >= 0)
	        if (num == 0)
			goto err;	/* descriptor closed */
		else if (num > 0)
		    numbytes += num;
	    	else
		    {
@@ -246,7 +248,9 @@ int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes)
	    while (numbytes != egdbuf[0])
		{
	        num = read(fd, retrievebuf + numbytes, egdbuf[0] - numbytes);
	        if (num >= 0)
		if (num == 0)
			goto err;	/* descriptor closed */
	        else if (num > 0)
		    numbytes += num;
	    	else
		    {