crdb_core/
check_string.rs

1pub fn check_string(s: &str) -> crate::Result<()> {
2    if s.contains('\0') {
3        return Err(crate::Error::NullByteInString);
4    }
5    Ok(())
6}
7
8pub fn check_strings(v: &serde_json::Value) -> crate::Result<()> {
9    match v {
10        serde_json::Value::Null => (),
11        serde_json::Value::Bool(_) => (),
12        serde_json::Value::Number(_) => (),
13        serde_json::Value::String(s) => check_string(s)?,
14        serde_json::Value::Array(a) => {
15            for v in a.iter() {
16                check_strings(v)?;
17            }
18        }
19        serde_json::Value::Object(m) => {
20            for (k, v) in m.iter() {
21                check_string(k)?;
22                check_strings(v)?;
23            }
24        }
25    }
26    Ok(())
27}