[vlc-commits] input: readdir_helper: don't apply options on the current object
Thomas Guillem
git at videolan.org
Thu Oct 12 13:45:23 CEST 2017
vlc | branch: master | Thomas Guillem <thomas at gllm.fr> | Thu Oct 12 10:41:44 2017 +0200| [6c87f601071d8ca1e9a321fd0a13824359e990a4] | committer: Thomas Guillem
input: readdir_helper: don't apply options on the current object
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=6c87f601071d8ca1e9a321fd0a13824359e990a4
---
src/input/item.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/src/input/item.c b/src/input/item.c
index 187f633e3c..99cf6a2066 100644
--- a/src/input/item.c
+++ b/src/input/item.c
@@ -1670,8 +1670,15 @@ void vlc_readdir_helper_init(struct vlc_readdir_helper *p_rdh,
vlc_object_t *p_obj, input_item_node_t *p_node)
{
/* Read options from the parent item. This allows vlc_stream_ReadDir()
- * users to specify options whitout touching any vlc_object_t. */
- input_item_ApplyOptions(p_obj, p_node->p_item);
+ * users to specify options whitout touhing any vlc_object_t. Apply options
+ * on a temporary object in order to not apply options (that can be
+ * insecure) to the current object. */
+ vlc_object_t *p_var_obj = vlc_object_create(p_obj, sizeof(vlc_object_t));
+ if (p_var_obj != NULL)
+ {
+ input_item_ApplyOptions(p_var_obj, p_node->p_item);
+ p_obj = p_var_obj;
+ }
p_rdh->p_node = p_node;
p_rdh->b_show_hiddenfiles = var_InheritBool(p_obj, "show-hiddenfiles");
@@ -1681,6 +1688,9 @@ void vlc_readdir_helper_init(struct vlc_readdir_helper *p_rdh,
var_InheritInteger(p_obj, "sub-autodetect-fuzzy");
TAB_INIT(p_rdh->i_slaves, p_rdh->pp_slaves);
TAB_INIT(p_rdh->i_dirs, p_rdh->pp_dirs);
+
+ if (p_var_obj != NULL)
+ vlc_object_release(p_var_obj);
}
void vlc_readdir_helper_finish(struct vlc_readdir_helper *p_rdh, bool b_success)
More information about the vlc-commits
mailing list