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
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;
}