diff --git a/lib/asn1/oid_resolution.c b/lib/asn1/oid_resolution.c index b0d390263..3b416e9d1 100644 --- a/lib/asn1/oid_resolution.c +++ b/lib/asn1/oid_resolution.c @@ -181,7 +181,7 @@ sort_sym_oids(int (*cmp)(const void *, const void *)) int der_find_heim_oid_by_name(const char *str, const heim_oid **oid) { - size_t right = num_sym_oids; + size_t right = num_sym_oids - 1; size_t left = 0; *oid = NULL; @@ -198,14 +198,12 @@ der_find_heim_oid_by_name(const char *str, const heim_oid **oid) *oid = sym_oids_sorted_by_name[mid].oid; return 0; } - if (cmp < 0 && right) + if (cmp < 0 && mid > 0) /* avoid underflow */ right = mid - 1; else if (cmp < 0) return -1; - else if (mid < num_sym_oids - 1) - left = mid + 1; else - return -1; + left = mid + 1; } return -1; }