From d3828fe20192a8fe0a177e564eb641d0857fbec4 Mon Sep 17 00:00:00 2001 From: Love Hornquist Astrand Date: Fri, 14 Aug 2009 05:34:50 +0200 Subject: [PATCH] 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. --- lib/hx509/name.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/hx509/name.c b/lib/hx509/name.c index 23736edde..efea5cb27 100644 --- a/lib/hx509/name.c +++ b/lib/hx509/name.c @@ -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);