From d136f2c8817ee72ff673f65d7f882d5918ed366a Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Sun, 21 Jul 2024 01:24:36 +0200 Subject: [PATCH] fix(tvix/nar-bridge): fix root node decoding and validation This got broken while moving things around. We need to parse the b64-decoded bytes. Since we're now validating the root node, we also need to rename the root node to get past the node name validation. There probably should be some tests for this. Co-Authored-By: sinavir@sinavir.fr Change-Id: I8f24a4a0ac107b1ea5b94c0e0ed872a34eb7b587 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11996 Reviewed-by: Brian Olsen Tested-by: BuildkiteCI --- tvix/nar-bridge/src/nar.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tvix/nar-bridge/src/nar.rs b/tvix/nar-bridge/src/nar.rs index 5bce0c973..9ee27c7df 100644 --- a/tvix/nar-bridge/src/nar.rs +++ b/tvix/nar-bridge/src/nar.rs @@ -46,13 +46,18 @@ pub async fn get( } // parse the proto - let root_node: tvix_castore::proto::Node = Message::decode(Bytes::from(root_node_enc)) + let mut root_node: tvix_castore::proto::Node = Message::decode(Bytes::from(root_node_proto)) .map_err(|e| { warn!(err=%e, "unable to decode root node proto"); StatusCode::NOT_FOUND })?; - // validate it. + // validate the node, but add a dummy node name, as we only send unnamed + // nodes + if let Some(rn) = root_node.node { + root_node.node = Some(rn.rename("00000000000000000000000000000000-dummy".into())) + } + let root_node = root_node .validate() .map_err(|e| {