mirror of
https://dev.iopsys.eu/bbf/bbfdm.git
synced 2025-12-10 07:44:39 +01:00
add dmjson_get_string && fix segfault: add tests case ptr != NULL
This commit is contained in:
parent
92cdf363f5
commit
c549dad741
5 changed files with 44 additions and 19 deletions
|
|
@ -132,3 +132,8 @@ void dm_update_enabled_notify(struct dm_enabled_notify *p, char *new_value)
|
|||
free(p->value); // Should be free and not dmfree
|
||||
p->value = strdup(new_value);
|
||||
}
|
||||
|
||||
void dmjson_get_string(char *jkey, char **jval)
|
||||
{
|
||||
bbf_api_dmjson_get_string(jkey, jval);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ json_object *dmjson_select_obj(json_object * jobj, char *argv[]);
|
|||
void del_list_fault_param(struct param_fault *param_fault);
|
||||
int copy_temporary_file_to_original_file(char *f1, char *f2);
|
||||
void dmjson_get_var(char *jkey, char **jval);
|
||||
void dmjson_get_string(char *jkey, char **jval);
|
||||
void dm_update_enabled_notify(struct dm_enabled_notify *p, char *new_value);
|
||||
|
||||
void apply_end_session(void);
|
||||
|
|
|
|||
|
|
@ -940,14 +940,16 @@ int bbf_api_dm_update_file_enabled_notify(char *param, char *new_value)
|
|||
if (len)
|
||||
buf[len-1] = '\0';
|
||||
bbf_api_dmjson_parse_init(buf);
|
||||
bbf_api_dmjson_get_var("parameter", &jval);
|
||||
parameter = dmstrdup(jval);
|
||||
bbf_api_dmjson_get_var("value", &jval);
|
||||
value = dmstrdup(jval);
|
||||
bbf_api_dmjson_get_var("notification", &jval);
|
||||
notification = dmstrdup(jval);
|
||||
bbf_api_dmjson_get_var("type", &jval);
|
||||
type = dmstrdup(jval);
|
||||
bbf_api_dmjson_get_string("parameter", &jval);
|
||||
if (jval == NULL || strlen(jval) == 0)
|
||||
continue;
|
||||
parameter = dmstrdup(jval?jval:"");
|
||||
bbf_api_dmjson_get_string("value", &jval);
|
||||
value = dmstrdup(jval?jval:"");
|
||||
bbf_api_dmjson_get_string("notification", &jval);
|
||||
notification = dmstrdup(jval?jval:"");
|
||||
bbf_api_dmjson_get_string("type", &jval);
|
||||
type = dmstrdup(jval?jval:"");
|
||||
bbf_api_dmjson_parse_fini();
|
||||
if (strcmp(parameter, param) == 0)
|
||||
dmjson_fprintf(ftmp, 4, DMJSON_ARGS{{"parameter", parameter}, {"notification", notification}, {"value", new_value}, {"type", type}});
|
||||
|
|
@ -1982,12 +1984,14 @@ int dm_entry_enabled_notify_check_value_change(struct dmctx *dmctx, void (*add_l
|
|||
if (len)
|
||||
buf[len-1] = '\0';
|
||||
bbf_api_dmjson_parse_init(buf);
|
||||
bbf_api_dmjson_get_var("parameter", &jval);
|
||||
dmctx->in_param = dmstrdup(jval);
|
||||
bbf_api_dmjson_get_var("value", &jval);
|
||||
dmctx->in_value = dmstrdup(jval);
|
||||
bbf_api_dmjson_get_var("notification", &jval);
|
||||
dmctx->in_notification = dmstrdup(jval);
|
||||
bbf_api_dmjson_get_string("parameter", &jval);
|
||||
if (jval == NULL || strlen(jval) == 0)
|
||||
continue;
|
||||
dmctx->in_param = dmstrdup(jval?jval:"");
|
||||
bbf_api_dmjson_get_string("value", &jval);
|
||||
dmctx->in_value = dmstrdup(jval?jval:"");
|
||||
bbf_api_dmjson_get_string("notification", &jval);
|
||||
dmctx->in_notification = dmstrdup(jval?jval:"");
|
||||
bbf_api_dmjson_parse_fini();
|
||||
dmctx->checkobj = NULL ;
|
||||
dmctx->checkleaf = NULL;
|
||||
|
|
@ -2007,7 +2011,6 @@ static int enabled_notify_check_value_change_obj(DMOBJECT_ARGS)
|
|||
static int enabled_notify_check_value_change_param(DMPARAM_ARGS)
|
||||
{
|
||||
char *refparam, *value = "";
|
||||
|
||||
dmastrcat(&refparam, node->current_object, lastname);
|
||||
if (strcmp(refparam, dmctx->in_param) != 0) {
|
||||
dmfree(refparam);
|
||||
|
|
@ -2015,7 +2018,7 @@ static int enabled_notify_check_value_change_param(DMPARAM_ARGS)
|
|||
}
|
||||
(get_cmd)(refparam, dmctx, data, instance, &value);
|
||||
|
||||
if (strcmp(value, dmctx->in_value) != 0) {
|
||||
if (value && strcmp(value, dmctx->in_value) != 0) {
|
||||
if (api_add_list_value_change) {
|
||||
api_add_list_value_change(refparam, value, DMT_TYPE[type]);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
* as published by the Free Software Foundation
|
||||
*
|
||||
* Author: MOHAMED Kallel <mohamed.kallel@pivasoftware.com>
|
||||
* Authro: Omar Kallel <omar.kallel@pivasoftware.com>
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
@ -15,8 +16,10 @@ static json_object *dmjson_jobj = NULL;
|
|||
|
||||
void dm_add_json_obj(json_object *json_obj_out, char *object, char *string)
|
||||
{
|
||||
json_object *json_obj_tmp = json_object_new_string(string);
|
||||
json_object_object_add(json_obj_out, object, json_obj_tmp);
|
||||
if (object != NULL && string != NULL) {
|
||||
json_object *json_obj_tmp = json_object_new_string(string);
|
||||
json_object_object_add(json_obj_out, object, json_obj_tmp);
|
||||
}
|
||||
}
|
||||
|
||||
static void inline __dmjson_fprintf(FILE *fp, int argc, struct dmjson_arg dmarg[])
|
||||
|
|
@ -290,3 +293,15 @@ void bbf_api_dmjson_get_var(char *jkey, char **jval)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
void bbf_api_dmjson_get_string(char *jkey, char **jval)
|
||||
{
|
||||
*jval = "";
|
||||
if (dmjson_jobj == NULL)
|
||||
return;
|
||||
|
||||
struct json_object *get_obj = json_object_object_get(dmjson_jobj, jkey);
|
||||
if (get_obj) {
|
||||
*jval = json_object_get_string(get_obj);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ void dmjson_fprintf(FILE *fp, int argc, struct dmjson_arg dmarg[]);
|
|||
void bbf_api_dmjson_parse_init(char *msg);
|
||||
void bbf_api_dmjson_parse_fini(void);
|
||||
void bbf_api_dmjson_get_var(char *jkey, char **jval);
|
||||
void bbf_api_dmjson_get_string(char *jkey, char **jval);
|
||||
json_object *bbf_api_dmjson_select_obj(json_object * jobj, char *argv[]);
|
||||
json_object *__dmjson_get_obj(json_object *mainjobj, int argc, ...);
|
||||
char *____dmjson_get_value_in_obj(json_object *mainjobj, char *argv[]);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue