Nmap Development mailing list archives
Re: [PATCH] Dramatically reduce # of fopen()s and fclose()s in nbase_rnd.c
From: "Dmitry V. Levin" <ldv () altlinux org>
Date: Sat, 16 Dec 2006 05:24:18 +0300
On Fri, Dec 15, 2006 at 11:43:38AM -0600, Kris Katterjohn wrote:
This simple patch dramatically reduces the number of fopen()s and
fclose()s used when getting random numbers from nbase_rnd.c by keeping
the rng device open.
Before:
# strace nmap -p- localhost 2>&1 | grep 'open("/dev/[au]*random"' | wc
512 3584 31744
After:
# strace ./nmap -p- localhost 2>&1 | grep 'open("/dev/[au]*random"' | wc
2 14 124
You can also compare "strace -c" output to estimate effect of the change.
--- x/nbase/nbase_rnd.c 2006-08-29 00:42:46.000000000 -0500
+++ y/nbase/nbase_rnd.c 2006-12-15 11:06:02.000000000 -0600
@@ -114,14 +114,14 @@ int get_random_bytes(void *buf, int numb
int tmp;
int res;
struct timeval tv;
- FILE *fp = NULL;
+ static FILE *fp;
unsigned int i;
short *iptr;
if (numbytes < 0 || numbytes > 0xFFFF) return -1;
if (bytesleft == 0) {
- fp = fopen("/dev/arandom", "r");
+ if (!fp) fp = fopen("/dev/arandom", "r");
if (!fp) fp = fopen("/dev/urandom", "r");
if (!fp) fp = fopen("/dev/random", "r");
if (fp) {
@@ -149,7 +149,7 @@ int get_random_bytes(void *buf, int numb
}
bytesleft = (sizeof(bytebuf) / sizeof(short)) * sizeof(short);
/* ^^^^^^^^^^^^^^^not as meaningless as it looks */
- } else fclose(fp);
+ }
}
if (numbytes <= bytesleft) { /* we can cover it */
I'll have to apply smth like this to update my nmap chroot patch. -- ldv
_______________________________________________ Sent through the nmap-dev mailing list http://cgi.insecure.org/mailman/listinfo/nmap-dev Archived at http://SecLists.Org
Current thread:
- [PATCH] Dramatically reduce # of fopen()s and fclose()s in nbase_rnd.c Kris Katterjohn (Dec 15)
- Re: [PATCH] Dramatically reduce # of fopen()s and fclose()s in nbase_rnd.c Fyodor (Dec 15)
- Re: [PATCH] Dramatically reduce # of fopen()s and fclose()s in nbase_rnd.c Kris Katterjohn (Dec 15)
- Re: [PATCH] Dramatically reduce # of fopen()s and fclose()s in nbase_rnd.c Dmitry V. Levin (Dec 15)
- Re: [PATCH] Dramatically reduce # of fopen()s and fclose()s in nbase_rnd.c Kris Katterjohn (Dec 16)
- Re: [PATCH] Dramatically reduce # of fopen()s and fclose()s in nbase_rnd.c Fyodor (Dec 15)
