Dereference pointer when comparing password history in qsort compare.

The man page for qsort(3) says that the comparison function is called
with pointers to pointers to char but memcmp(3) wants a pointer to void
so we need to cast and dereference.

Without this the qsort() call wasn't properly sorting the elements so
a random password was being removed rather than the oldest when the
list overflowed.

https://fedorahosted.org/freeipa/ticket/2613
This commit is contained in:
Rob Crittenden 2012-04-09 23:42:41 -04:00 committed by Martin Kosek
parent 2e3f5f25c4
commit 35f44a1aeb

View File

@ -152,7 +152,7 @@ static int ipapwd_gentime_cmp(const void *p1, const void *p2)
* a higher letter or number */ * a higher letter or number */
/* return youngest first by inverting terms */ /* return youngest first by inverting terms */
return memcmp(p2, p1, GENERALIZED_TIME_LENGTH); return memcmp(*(void * const *)p2, *(void * const *)p1, GENERALIZED_TIME_LENGTH);
} }
#define SHA_SALT_LENGTH 8 #define SHA_SALT_LENGTH 8