m/p/tpm/e/internal: fix validation logic error
The previous logic was wrong: (et < 0x80000000 && et > 0x800000FF)
always evaluates to false. The overall condition evaluates to true for
values in the range [0x80000000, 0x800000FF] and thus incorrectly
rejects them as invalid.
Now, an error is only returned if the value is not in either of the two
valid ranges.
Change-Id: I30ac473cca323e4f7bb0ca2137fcb0eee18a806a
Reviewed-on: https://review.monogon.dev/c/monogon/+/3069
Reviewed-by: Lorenz Brun <lorenz@monogon.tech>
Tested-by: Jenkins CI
diff --git a/metropolis/pkg/tpm/eventlog/internal/events.go b/metropolis/pkg/tpm/eventlog/internal/events.go
index 4e6c8ad..3a719ab 100644
--- a/metropolis/pkg/tpm/eventlog/internal/events.go
+++ b/metropolis/pkg/tpm/eventlog/internal/events.go
@@ -148,7 +148,7 @@
func UntrustedParseEventType(et uint32) (EventType, error) {
// "The value associated with a UEFI specific platform event type MUST be in
// the range between 0x80000000 and 0x800000FF, inclusive."
- if (et < 0x80000000 && et > 0x800000FF) || et > 0x12 {
+ if (et < 0x80000000 || et > 0x800000FF) && et > 0x12 {
return EventType(0), fmt.Errorf("event type not between [0x0, 0x12] or [0x80000000, 0x800000FF]: got %#x", et)
}
if _, ok := eventTypeNames[EventType(et)]; !ok {