2007-06-15 20:29:43

by Jim Meyering

[permalink] [raw]
Subject: close /dev/urandom fd (e2fsprogs 1.40-WIP (7-Apr-2007))

The file descriptor opened on /dev/urandom can be closed sooner:

diff -r 11b6e3e021f0 -r 777972a573b3 lib/uuid/ChangeLog
--- a/lib/uuid/ChangeLog Thu May 31 12:39:02 2007 -0400
+++ b/lib/uuid/ChangeLog Fri Jun 15 18:05:09 2007 +0200
@@ -1,3 +1,8 @@ 2006-10-22 Theodore Tso <[email protected]
+2007-06-15 Jim Meyering <[email protected]>
+
+ * gen_uuid.c (get_random_bytes): Don't leave /dev/urandom open.
+ (uuid_generate): Likewise.
+
2006-10-22 Theodore Tso <[email protected]>

* gen_uuid.c (get_random_bytes): Add in randomness based on
diff -r 11b6e3e021f0 -r 777972a573b3 lib/uuid/gen_uuid.c
--- a/lib/uuid/gen_uuid.c Thu May 31 12:39:02 2007 -0400
+++ b/lib/uuid/gen_uuid.c Fri Jun 15 18:05:09 2007 +0200
@@ -139,6 +139,7 @@ static void get_random_bytes(void *buf,
cp += i;
lose_counter = 0;
}
+ close(fd);
}

/*
@@ -337,8 +338,10 @@ void uuid_generate_random(uuid_t out)
*/
void uuid_generate(uuid_t out)
{
- if (get_random_fd() >= 0)
+ int fd;
+ if ((fd = get_random_fd()) >= 0) {
+ close(fd);
uuid_generate_random(out);
- else
+ } else
uuid_generate_time(out);
}

Signed-off-by: Jim Meyering <[email protected]>


2007-06-15 22:09:05

by Theodore Ts'o

[permalink] [raw]
Subject: Re: close /dev/urandom fd (e2fsprogs 1.40-WIP (7-Apr-2007))

On Fri, Jun 15, 2007 at 10:28:40PM +0200, Jim Meyering wrote:
> The file descriptor opened on /dev/urandom can be closed sooner:

Is there a reason why the caching of the open file descriptor for
/dev/random is causing you problems? Keeping it open was deliberate.

Regards,

- Ted

2007-06-16 05:38:50

by Jim Meyering

[permalink] [raw]
Subject: Re: close /dev/urandom fd (e2fsprogs 1.40-WIP (7-Apr-2007))

Theodore Tso <[email protected]> wrote:
> On Fri, Jun 15, 2007 at 10:28:40PM +0200, Jim Meyering wrote:
>> The file descriptor opened on /dev/urandom can be closed sooner:
>
> Is there a reason why the caching of the open file descriptor for
> /dev/random is causing you problems? Keeping it open was deliberate.

I saw it open at exit, missed the 'static' and thought it was an fd leak.
Désolé.