Ethernet MAC addresses (macaddr type) are not compared correctly for

equality.  The lobits macro is wrong and extracts the wrong set of
bits out of the structure.

To exhibit the problem:

select '000000:000000'::macaddr = '000000:110000'::macaddr ;
?column?
--------
t
(1 row)

Daniel Boyd
REL7_0_PATCHES
Bruce Momjian 26 years ago
parent 7585deb087
commit d033e17530
  1. 4
      src/backend/utils/adt/mac.c

@ -1,7 +1,7 @@
/* /*
* PostgreSQL type definitions for MAC addresses. * PostgreSQL type definitions for MAC addresses.
* *
* $Id: mac.c,v 1.13 1999/07/17 20:17:57 momjian Exp $ * $Id: mac.c,v 1.14 1999/12/16 01:30:49 momjian Exp $
*/ */
@ -132,7 +132,7 @@ manufacturer manufacturers[] = {
((unsigned long)((addr->a<<16)|(addr->b<<8)|(addr->c))) ((unsigned long)((addr->a<<16)|(addr->b<<8)|(addr->c)))
#define lobits(addr) \ #define lobits(addr) \
((unsigned long)((addr->c<<16)|(addr->e<<8)|(addr->f))) ((unsigned long)((addr->d<<16)|(addr->e<<8)|(addr->f)))
/* /*
* MAC address reader. Accepts several common notations. * MAC address reader. Accepts several common notations.

Loading…
Cancel
Save