krb5_sname_match() can read past the end of princ's component array in
some circumstances (typically when a keytab contains both "x" and
"x/y" principals). Add a length check. Reported by Spencer Jackson.
ticket: 8415
target_version: 1.14-next
target_version: 1.13-next
tags: pullup
if (matching->type != KRB5_NT_SRV_HST || matching->length != 2)
return krb5_principal_compare(context, matching, princ);
+ if (princ->length != 2)
+ return FALSE;
+
/* Check the realm if present in matching. */
if (matching->realm.length != 0 && !data_eq(matching->realm, princ->realm))
return FALSE;