librpc: fixed the GUID_compare() function
authorAndrew Tridgell <tridge@samba.org>
Sat, 19 Dec 2009 23:25:46 +0000 (10:25 +1100)
committerAndrew Tridgell <tridge@samba.org>
Mon, 21 Dec 2009 12:41:07 +0000 (23:41 +1100)
commita106fefcfb0cb60ce439884d8cd0c920d2fb193a
treefa5ac7f77c41b97733f885004cf877ca370b4d3c
parent2a4a159a8443ebaae53f5902a0f5c1f8536a6edd
librpc: fixed the GUID_compare() function

When comparing two unsigned values you can't just subtract
them.

Imagine you are comparing: "uint32_t u1" and "uint32_t u2". If you use
"u1 - u2" and u2 is zero, then the signed integer result will depend
on the top bit of u1.

This error occurs in a few places in Samba. For DRS replication it
resulted in corrupt uptodateness vectors.
librpc/ndr/uuid.c