Don't depend on that memcmp() have same return value on all platforms

BSDish libc returns -14 3 14, while GNU LIBC returns -1 3 1.
This commit is contained in:
Love Hornquist Astrand
2009-08-14 05:34:50 +02:00
parent 21ff5b84a5
commit d3828fe201

View File

@@ -399,7 +399,7 @@ _hx509_name_ds_cmp(const DirectoryString *ds1,
int *diff)
{
uint32_t *ds1lp, *ds2lp;
size_t ds1len, ds2len;
size_t ds1len, ds2len, i;
int ret;
ret = dsstringprep(ds1, &ds1lp, &ds1len);
@@ -413,9 +413,13 @@ _hx509_name_ds_cmp(const DirectoryString *ds1,
if (ds1len != ds2len)
*diff = ds1len - ds2len;
else
*diff = memcmp(ds1lp, ds2lp, ds1len * sizeof(ds1lp[0]));
else {
for (i = 0; i < ds1len; i++) {
*diff = ds1lp[i] - ds2lp[i];
if (*diff)
break;
}
}
free(ds1lp);
free(ds2lp);