From d7a214526f84ab621f5ec5dc7b98d5a3890ed4bc Mon Sep 17 00:00:00 2001 From: Graham Esau Date: Sat, 14 Sep 2019 20:36:59 +0100 Subject: [PATCH] Prevent possibility of infinite loop --- schemars/src/gen.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/schemars/src/gen.rs b/schemars/src/gen.rs index fa7d162..4c4dd1d 100644 --- a/schemars/src/gen.rs +++ b/schemars/src/gen.rs @@ -149,7 +149,7 @@ impl SchemaGenerator { } pub fn get_schema_object(&self, mut schema: Schema) -> Result { - loop { + for _ in 0..100 { match schema { Schema::Object(obj) => return Ok(obj), Schema::Bool(true) => return Ok(Default::default()), @@ -189,5 +189,9 @@ impl SchemaGenerator { } } } + Err(JsonSchemaError::new( + "Failed to dereference schema after 100 iterations - reference may be cyclic.", + schema, + )) } }