From b30626062e049ef8357f1c56c3f41f1f55750565 Mon Sep 17 00:00:00 2001 From: Mark Donnelly Date: Tue, 19 Aug 2014 12:00:18 -0400 Subject: [PATCH] Update loadParameters to check for JSON value type, NULL --- json_gssapi/src/GSSImportName.cpp | 52 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 48 insertions(+), 4 deletions(-) diff --git a/json_gssapi/src/GSSImportName.cpp b/json_gssapi/src/GSSImportName.cpp index 2cf6a42..5284009 100644 --- a/json_gssapi/src/GSSImportName.cpp +++ b/json_gssapi/src/GSSImportName.cpp @@ -55,17 +55,33 @@ GSSImportName::GSSImportName(JSONObject *params, gss_imp_name_type fn) : GSSComm bool GSSImportName::loadParameters(JSONObject *params) { /* Variables */ + /* Error checking */ /* Setup */ // Should I zeroOut? /* Main processing */ // Easy stuff(*params) - std::string input_name = (*params)["arguments"]["input_name"].string(); - std::string input_name_type = (*params)["arguments"]["input_name_type"].string(); + if ( params->get("arguments").isNull() ) + return true; + + if ( !params->get("arguments").get("input_name").isNull() ) + { + if ( params->get("arguments").get("input_name").isString() ) + { + std::string input_name = params->get("arguments").get("input_name").string(); + this->inputName.setValue( input_name ); + } + } - this->inputName.setValue( input_name ); - this->inputNameType.setValue( input_name_type ); + if ( !params->get("arguments").get("input_name_type").isNull() ) + { + if ( params->get("arguments").get("input_name_type").isString() ) + { + std::string input_name_type = params->get("arguments").get("input_name_type").string(); + this->inputNameType.setValue( input_name_type ); + } + } /* Cleanup */ /* Return */ @@ -73,6 +89,34 @@ bool GSSImportName::loadParameters(JSONObject *params) } +// /*********** +// * QOP_REQ * +// ***********/ +// if ( ! params->get("arguments").get("qop_req").isNull() ) +// { +// if (params->get("arguments").get("qop_req").isString()) +// { +// sQopReq = params->get("arguments").get("qop_req").string(); +// if (sQopReq == "GSS_C_QOP_DEFAULT") +// this->qop_req = GSS_C_QOP_DEFAULT; +// else +// throw std::invalid_argument( std::string("Invalid QOP type given: ") + sQopReq ); +// } else if (params->get("arguments").get("qop_req").isInteger()) +// this->qop_req = (gss_cred_usage_t)( params->get("arguments").get("qop_req").integer() ); +// else +// throw std::invalid_argument( "Unrecognized argument type for qop_req." ); +// } +// +// /***************** +// * input_message * +// *****************/ +// if ( ! params->get("arguments").get("input_message").isNull() ) +// { +// sInputMessage = params->get("arguments").get("input_message").string(); +// this->inputMessage.setValue(sInputMessage); +// } + + /* Variables */ /* Error checking */ /* Setup */ -- 2.1.4