From: Jennifer Richards Date: Fri, 25 May 2018 16:49:25 +0000 (-0400) Subject: Add signed integer parser to eliminate compiler errors X-Git-Tag: 3.4.0~1^2~18^2~7 X-Git-Url: http://www.project-moonshot.org/gitweb/?p=trust_router.git;a=commitdiff_plain;h=bdaeb4ad46583393576eadb43a926c8dd8abe229 Add signed integer parser to eliminate compiler errors --- diff --git a/common/tr_config_internal.c b/common/tr_config_internal.c index b8d3bbb..b6a16ad 100644 --- a/common/tr_config_internal.c +++ b/common/tr_config_internal.c @@ -71,6 +71,38 @@ static TR_CFG_RC tr_cfg_parse_boolean(json_t *src, const char *key, int *dest) } /** + * Parse a signed integer + * + * If the key does not exist in the src object, returns success but does fill in *dest. + * + * @param src JSON object to pull a value from + * @param key key to pull + * @param dest (output) pointer to an allocated integer + * @return TR_CFG_SUCCESS or an error code + */ +static TR_CFG_RC tr_cfg_parse_integer(json_t *src, const char *key, int *dest) +{ + json_t *jtmp; + + /* Validate parameters */ + if ((src == NULL) || (key == NULL) || (dest == NULL)) + return TR_CFG_BAD_PARAMS; + + /* See if we have a value for this key; do nothing if not */ + jtmp = json_object_get(src, key); + if (jtmp) { + if (json_is_number(jtmp)) { + *dest = (int) json_integer_value(jtmp); + } else { + tr_debug("tr_cfg_parse_unsigned: Parsing error, %s is not a number.", key); + return TR_CFG_NOPARSE; + } + } + + return TR_CFG_SUCCESS; +} + +/** * Parse an unsigned integer * * If the key does not exist in the src object, returns success but does fill in *dest. @@ -177,7 +209,7 @@ static TR_CFG_RC tr_cfg_parse_monitoring(TR_CFG *trc, json_t *jmon) NOPARSE_UNLESS(tr_cfg_parse_boolean(jmon, "enabled", &enabled)); if (enabled) { - NOPARSE_UNLESS(tr_cfg_parse_unsigned(jmon, "port", &(trc->internal->mons_port))); + NOPARSE_UNLESS(tr_cfg_parse_integer(jmon, "port", &(trc->internal->mons_port))); NOPARSE_UNLESS(tr_cfg_parse_gss_names(trc->internal, json_object_get(jmon, "authorized_credentials"), &(trc->internal->monitoring_credentials))); @@ -213,8 +245,8 @@ TR_CFG_RC tr_cfg_parse_internal(TR_CFG *trc, json_t *jint) talloc_steal(trc->internal, trc->internal->hostname); NOPARSE_UNLESS(tr_cfg_parse_unsigned(jint, "max_tree_depth", &(trc->internal->max_tree_depth))); - NOPARSE_UNLESS(tr_cfg_parse_unsigned(jint, "tids_port", &(trc->internal->tids_port))); - NOPARSE_UNLESS(tr_cfg_parse_unsigned(jint, "trps_port", &(trc->internal->trps_port))); + NOPARSE_UNLESS(tr_cfg_parse_integer(jint, "tids_port", &(trc->internal->tids_port))); + NOPARSE_UNLESS(tr_cfg_parse_integer(jint, "trps_port", &(trc->internal->trps_port))); NOPARSE_UNLESS(tr_cfg_parse_unsigned(jint, "cfg_poll_interval", &(trc->internal->cfg_poll_interval))); NOPARSE_UNLESS(tr_cfg_parse_unsigned(jint, "cfg_settling_time", &(trc->internal->cfg_settling_time))); NOPARSE_UNLESS(tr_cfg_parse_unsigned(jint, "trp_connect_interval", &(trc->internal->trp_connect_interval)));