about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFlorian Klink <flokli@flokli.de>2024-07-20T23·24+0200
committerflokli <flokli@flokli.de>2024-07-21T00·06+0000
commitd136f2c8817ee72ff673f65d7f882d5918ed366a (patch)
treefc682012b63e51c2798e6be5815b1f049efa47d9
parentfca8462530460f7db3c71394d01e0f996d3c5d12 (diff)
fix(tvix/nar-bridge): fix root node decoding and validation r/8382
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 <me@griff.name>
Tested-by: BuildkiteCI
-rw-r--r--tvix/nar-bridge/src/nar.rs9
1 files changed, 7 insertions, 2 deletions
diff --git a/tvix/nar-bridge/src/nar.rs b/tvix/nar-bridge/src/nar.rs
index 5bce0c973ef3..9ee27c7df5ca 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| {