From 11c7c49d7b492cff17a0c9ff745fc226866ff353 Mon Sep 17 00:00:00 2001 From: Gary Talent <gtalent2@gmail.com> Date: Fri, 8 Sep 2017 18:06:27 -0500 Subject: [PATCH] Add some missing field checks to JSON reader --- src/nostalgia/studio/lib/json_read.hpp | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/nostalgia/studio/lib/json_read.hpp b/src/nostalgia/studio/lib/json_read.hpp index e2fa84a6..8b781707 100644 --- a/src/nostalgia/studio/lib/json_read.hpp +++ b/src/nostalgia/studio/lib/json_read.hpp @@ -59,18 +59,26 @@ class JsonReader { template<typename T> ox::Error JsonReader::op(QString fieldName, T *dest) { - auto obj = m_src[fieldName].toObject(); - auto reader = JsonReader(obj); - return ioOp(&reader, dest); + if (m_src.contains(fieldName)) { + auto obj = m_src[fieldName].toObject(); + auto reader = JsonReader(obj); + return ioOp(&reader, dest); + } else { + return JSON_ERR_FIELD_MISSING; + } }; template<typename T> ox::Error JsonReader::op(QString fieldName, QVector<T> *dest) { ox::Error err = 0; - auto a = m_src[fieldName].toArray(); - dest->resize(a.size()); - for (int i = 0; i < dest->size(); i++) { - err |= op(a[i], &(*dest)[i]); + if (m_src.contains(fieldName)) { + auto a = m_src[fieldName].toArray(); + dest->resize(a.size()); + for (int i = 0; i < dest->size(); i++) { + err |= op(a[i], &(*dest)[i]); + } + } else { + err |= JSON_ERR_FIELD_MISSING; } return err; };