On 2/10/2013 12:43 AM, Jim Meyering wrote:
On Thu, Sep 26, 2013 at 6:17 PM, Jonathan Liu <[email protected]> wrote:
Using tv_usec in struct timeval from gettimeofday() doesn't provide
enough precision to fill an unsigned 32-bit integer and isn't really
random. It it always less than one million when using the GNU C library
while an unsigned 32-bit integer ranges between 0 and 4294967295.

A better random generator is used for FAT filesystem creation so move
it into a common function and use it for MS-DOS MBR signature
generation.

* libparted/fs/r/fat/fat.c (_gen_new_serial_number): Remove.
(fat_create): Use generate_random_uint32 instead of
_gen_new_serial_number.
* libparted/labels/dos.c (generate_random_id): Remove.
(msdos_write): Use generate_random_uint32 instead of
generate_random_id.
* libparted/labels/misc.h (generate_random_uint32): New function.
Created from _gen_new_serial_number in libparted/fs/r/fat/fat.c with
additional check to avoid returning zero which may be interpreted
as no FAT serial number or no MBR signature.
Thank you for the patch.  Normally we require copyright assignment,
but this change is small enough to get by without that.  Would you
please amend your commit to do two things:
   - insert a note in NEWS that describes this change
   - move or copy the commit-log comment about the meaning of that zero
into the function's comment.

With those, it should be good to push, assuming "make syntax-check"
and "make check" still pass.
Done. Submitted as V3 patch.

Regards,
Jonathan

Reply via email to