cvs commit: src/sys/kern kern_uuid.c

Ralf S. Engelschall rse at engelschall.com
Fri Jan 23 00:53:53 PST 2004


On Thu, Jan 22, 2004, Marcel Moolenaar wrote:

> On Thu, Jan 22, 2004 at 05:34:11AM -0800, Ralf S. Engelschall wrote:
> > rse         2004/01/22 05:34:11 PST
> >
> >   FreeBSD src repository
> >
> >   Modified files:
> >     sys/kern             kern_uuid.c
> >   Log:
> >   Fix generation of random multicast MAC address.
>
> An excellent catch and an outstanding commit log. Chapeau!

Thanks. You can image how surprised and confused I was during
discovering this standards bug. Especially, because all(!) six
freely available UUID implementations (FreeBSD's kern_uuid.c, Linux'
e2fsprogs's libuuid, Perl's Data::UUID, Apache's apt-util, Java's JUG
and Wine's UUID generator) I evaluated also have inherited this bug
similarly. Three of them (our FreeBSD one here, the Apache APR-Util and
the Perl Data::UUID) I've now already fixed myself. For the others I've
sent patches to the authors.

I discovered this bug during development of my portable UUID toolkit
OSSP uuid (see http://www.ossp.org/pkg/lib/uuid/). Once I had the UUID
decoding functionality in place ("uuid -d"), I recognized that the
MAC addresses in all v1 UUIDs generated with other libraries were not
always decoded as "multicast". So I was puzzled whether I decoded it
incorrectly or MAC addresses were generated incorrectly. I digged deeper
and had to found out that the bug was already in the reference code of
the expired UUID draft.

Interestingly, the DCE 1.1 and ISO guys are lucky, they do not deal with
the fact that an IEEE 802 MAC address cannot be determined at all and so
do not mention how to generate a random multicast MAC address instead ;-)

                                       Ralf S. Engelschall
                                       rse at engelschall.com
                                       www.engelschall.com



More information about the cvs-src mailing list