Skip to content

Commit

Permalink
fix: Forgot to enforce field count limits
Browse files Browse the repository at this point in the history
  • Loading branch information
jshearer committed Aug 7, 2023
1 parent dcca058 commit 198f61d
Showing 1 changed file with 13 additions and 11 deletions.
24 changes: 13 additions & 11 deletions crates/doc/src/reduce/schema.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,18 +31,20 @@ pub fn json_schema_merge<'alloc, L: AsNode, R: AsNode>(
let left = shape_from_node(lhs).map_err(|e| Error::with_location(e, loc))?;
let right = shape_from_node(rhs).map_err(|e| Error::with_location(e, loc))?;

let mut merged_shape = Shape::union(left, right);
merged_shape.enforce_field_count_limits(json::Location::Root);

// Union together the LHS and RHS, and convert back from `Shape` into `HeapNode`.
let merged_doc =
serde_json::to_value(&SchemaBuilder::new(Shape::union(left, right)).root_schema())
.and_then(|value| HeapNode::from_serde(value, alloc))
.map_err(|e| {
Error::with_location(
Error::JsonSchemaMergeWrongType {
detail: Some(e.to_string()),
},
loc,
)
})?;
let merged_doc = serde_json::to_value(&SchemaBuilder::new(merged_shape).root_schema())
.and_then(|value| HeapNode::from_serde(value, alloc))
.map_err(|e| {
Error::with_location(
Error::JsonSchemaMergeWrongType {
detail: Some(e.to_string()),
},
loc,
)
})?;

Ok(merged_doc)
}
Expand Down

0 comments on commit 198f61d

Please sign in to comment.