From 33aac520c1bdeabe858cbc4c576884e6d66d700b Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Sun, 14 Jan 2018 09:38:48 +0100 Subject: [PATCH] api: dvr - owner/representative might be NULL, fixes #4846 --- src/api/api_dvr.c | 16 ++++++++-------- src/htsmsg.c | 10 ++++++++++ src/htsmsg.h | 1 + src/htsp_server.c | 28 ++++++++++------------------ 4 files changed, 29 insertions(+), 26 deletions(-) diff --git a/src/api/api_dvr.c b/src/api/api_dvr.c index 336f315ad..880452e85 100644 --- a/src/api/api_dvr.c +++ b/src/api/api_dvr.c @@ -145,8 +145,8 @@ api_dvr_entry_create cfg = dvr_config_find_by_list(perm->aa_dvrcfgs, s1); if (cfg) { htsmsg_set_uuid(conf, "config_name", &cfg->dvr_id.in_uuid); - htsmsg_set_str(conf, "owner", perm->aa_username ?: ""); - htsmsg_set_str(conf, "creator", perm->aa_representative ?: ""); + htsmsg_set_str2(conf, "owner", perm->aa_username); + htsmsg_set_str2(conf, "creator", perm->aa_representative); lang = access_get_lang(perm, htsmsg_get_str(conf, "lang")); if (lang) { @@ -227,8 +227,8 @@ api_dvr_entry_create_by_event conf = htsmsg_create_map(); htsmsg_copy_field(conf, "enabled", m, NULL); htsmsg_copy_field(conf, "comment", m, NULL); - htsmsg_add_str(conf, "owner", perm->aa_username); - htsmsg_add_str(conf, "creator", perm->aa_representative); + htsmsg_add_str2(conf, "owner", perm->aa_username); + htsmsg_add_str2(conf, "creator", perm->aa_representative); config_uuid = htsmsg_get_str(m, "config_uuid"); de = NULL; @@ -430,8 +430,8 @@ api_dvr_autorec_create if (!(conf = htsmsg_get_map(args, "conf"))) return EINVAL; - htsmsg_set_str(conf, "owner", perm->aa_username ?: ""); - htsmsg_set_str(conf, "creator", perm->aa_representative ?: ""); + htsmsg_set_str2(conf, "owner", perm->aa_username); + htsmsg_set_str2(conf, "creator", perm->aa_representative); s1 = htsmsg_get_str(conf, "config_uuid"); if (s1 == NULL) @@ -527,8 +527,8 @@ api_dvr_timerec_create if (!(conf = htsmsg_get_map(args, "conf"))) return EINVAL; - htsmsg_set_str(conf, "owner", perm->aa_username ?: ""); - htsmsg_set_str(conf, "creator", perm->aa_representative ?: ""); + htsmsg_set_str2(conf, "owner", perm->aa_username); + htsmsg_set_str2(conf, "creator", perm->aa_representative); pthread_mutex_lock(&global_lock); dte = dvr_timerec_create(NULL, conf); diff --git a/src/htsmsg.c b/src/htsmsg.c index 3d512be24..6d3dcf1a8 100644 --- a/src/htsmsg.c +++ b/src/htsmsg.c @@ -456,6 +456,16 @@ htsmsg_set_str(htsmsg_t *msg, const char *name, const char *str) return htsmsg_field_set_str(f, str); } +/* + * + */ +int +htsmsg_set_str2(htsmsg_t *msg, const char *name, const char *str) +{ + if (msg && name && str) + return htsmsg_set_str(msg, name, str); +} + /* * */ diff --git a/src/htsmsg.h b/src/htsmsg.h index 02d11eb0a..f619323bf 100644 --- a/src/htsmsg.h +++ b/src/htsmsg.h @@ -192,6 +192,7 @@ void htsmsg_add_str_exclusive(htsmsg_t *msg, const char *str); * Add/update a string field */ int htsmsg_set_str(htsmsg_t *msg, const char *name, const char *str); +int htsmsg_set_str2(htsmsg_t *msg, const char *name, const char *str); /** * Update a string field diff --git a/src/htsp_server.c b/src/htsp_server.c index c2e2c77c1..84a7b5787 100644 --- a/src/htsp_server.c +++ b/src/htsp_server.c @@ -661,8 +661,8 @@ htsp_serierec_convert(htsp_connection_t *htsp, htsmsg_t *in, channel_t *ch, int if (add) { str = htsp_dvr_config_name(htsp, htsmsg_get_str(in, "configName")); htsmsg_add_str(conf, "config_name", str ?: ""); - htsmsg_add_str(conf, "owner", htsp->htsp_granted_access->aa_username ?: ""); - htsmsg_add_str(conf, "creator", htsp->htsp_granted_access->aa_representative ?: ""); + htsmsg_add_str2(conf, "owner", htsp->htsp_granted_access->aa_username); + htsmsg_add_str2(conf, "creator", htsp->htsp_granted_access->aa_representative); } else { str = htsmsg_get_str(in, "configName"); if (str) { @@ -1021,12 +1021,9 @@ htsp_build_dvrentry(htsp_connection_t *htsp, dvr_entry_t *de, const char *method if(de->de_desc && (s = lang_str_get(de->de_desc, lang))) htsmsg_add_str(out, "description", s); htsp_serialize_epnum(out, &de->de_epnum, "episode"); - if(de->de_owner) - htsmsg_add_str(out, "owner", de->de_owner); - if(de->de_creator) - htsmsg_add_str(out, "creator", de->de_creator); - if(de->de_comment) - htsmsg_add_str(out, "comment", de->de_comment); + htsmsg_add_str2(out, "owner", de->de_owner); + htsmsg_add_str2(out, "creator", de->de_creator); + htsmsg_add_str2(out, "comment", de->de_comment); /* We use the accessor since it will also try to get * an image from current EPG if recording does not have * an associated image. @@ -1157,14 +1154,11 @@ htsp_build_autorecentry(htsp_connection_t *htsp, dvr_autorec_entry_t *dae, const htsmsg_add_str(out, "title", dae->dae_title); htsmsg_add_u32(out, "fulltext", dae->dae_fulltext >= 1 ? 1 : 0); } - if(dae->dae_name) - htsmsg_add_str(out, "name", dae->dae_name); + htsmsg_add_str2(out, "name", dae->dae_name); if(dae->dae_directory) htsmsg_add_str(out, "directory", dae->dae_directory); - if(dae->dae_owner) - htsmsg_add_str(out, "owner", dae->dae_owner); - if(dae->dae_creator) - htsmsg_add_str(out, "creator", dae->dae_creator); + htsmsg_add_str2(out, "owner", dae->dae_owner); + htsmsg_add_str2(out, "creator", dae->dae_creator); if(dae->dae_channel) htsmsg_add_u32(out, "channel", channel_get_id(dae->dae_channel)); @@ -1208,10 +1202,8 @@ htsp_build_timerecentry(htsp_connection_t *htsp, dvr_timerec_entry_t *dte, const htsmsg_add_str(out, "name", dte->dte_name); if(dte->dte_directory) htsmsg_add_str(out, "directory", dte->dte_directory); - if(dte->dte_owner) - htsmsg_add_str(out, "owner", dte->dte_owner); - if(dte->dte_creator) - htsmsg_add_str(out, "creator", dte->dte_creator); + htsmsg_add_str2(out, "owner", dte->dte_owner); + htsmsg_add_str2(out, "creator", dte->dte_creator); if(dte->dte_channel) htsmsg_add_u32(out, "channel", channel_get_id(dte->dte_channel)); -- 2.47.3