Skip to content

Commit 32241ad

Browse files
committed
fix: reject unknown event_log_version values instead of silent fallback
from_u32 now returns Option<Self>, rejecting unknown values like 0 or 42 rather than silently degrading to V1. A silent downgrade could produce incorrect RTMR measurements — a security-relevant bug.
1 parent 660e0e3 commit 32241ad

2 files changed

Lines changed: 8 additions & 5 deletions

File tree

dstack-types/src/lib.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,11 @@ pub enum EventLogVersion {
2424
}
2525

2626
impl EventLogVersion {
27-
pub fn from_u32(v: u32) -> Self {
27+
pub fn from_u32(v: u32) -> Option<Self> {
2828
match v {
29-
2 => EventLogVersion::V2,
30-
_ => EventLogVersion::V1,
29+
1 => Some(EventLogVersion::V1),
30+
2 => Some(EventLogVersion::V2),
31+
_ => None,
3132
}
3233
}
3334
}
@@ -44,7 +45,8 @@ impl Serialize for EventLogVersion {
4445
impl<'de> Deserialize<'de> for EventLogVersion {
4546
fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4647
let v = u32::deserialize(deserializer)?;
47-
Ok(EventLogVersion::from_u32(v))
48+
EventLogVersion::from_u32(v)
49+
.ok_or_else(|| serde::de::Error::custom(format!("unknown event log version: {v}")))
4850
}
4951
}
5052

dstack-util/src/main.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,8 @@ fn hex_decode(hex_str: &str) -> Result<Vec<u8>> {
228228

229229
fn cmd_extend(extend_args: ExtendArgs) -> Result<()> {
230230
let payload = hex_decode(&extend_args.payload).context("Failed to decode payload")?;
231-
let version = dstack_types::EventLogVersion::from_u32(extend_args.event_log_version);
231+
let version = dstack_types::EventLogVersion::from_u32(extend_args.event_log_version)
232+
.context("unsupported event log version")?;
232233
emit_runtime_event(&extend_args.event, &payload, version).context("Failed to extend RTMR")
233234
}
234235

0 commit comments

Comments
 (0)