asn1: Fix OID resolution bug

This commit is contained in:
Nicolas Williams
2019-10-23 18:04:28 -05:00
parent f717c7344b
commit db35aeb5be

View File

@@ -181,7 +181,7 @@ sort_sym_oids(int (*cmp)(const void *, const void *))
int int
der_find_heim_oid_by_name(const char *str, const heim_oid **oid) 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; size_t left = 0;
*oid = NULL; *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; *oid = sym_oids_sorted_by_name[mid].oid;
return 0; return 0;
} }
if (cmp < 0 && right) if (cmp < 0 && mid > 0) /* avoid underflow */
right = mid - 1; right = mid - 1;
else if (cmp < 0) else if (cmp < 0)
return -1; return -1;
else if (mid < num_sym_oids - 1)
left = mid + 1;
else else
return -1; left = mid + 1;
} }
return -1; return -1;
} }