From dafa9e4e72d6b7ac0aa0ba02550337f975fa5e09 Mon Sep 17 00:00:00 2001 From: Matthew Jordan Date: Mon, 30 Sep 2013 19:57:36 +0000 Subject: [PATCH] Parse arguments passed to the CDR_PROP function correctly I can only blame this on a bad merge, because this in no way worked properly the way it was written. Mea culpa. The function should now parse its arguments correctly and function properly. (Note that the API used by the CDR_PROP function has working unit tests... this was merely bad coding of the actual registered function) (closes issue ASTERISK-22613) Reported by: Private Name git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@400196 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- funcs/func_cdr.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/funcs/func_cdr.c b/funcs/func_cdr.c index 6d9fb19a14..48df0a0928 100644 --- a/funcs/func_cdr.c +++ b/funcs/func_cdr.c @@ -349,12 +349,23 @@ static int cdr_prop_write(struct ast_channel *chan, const char *cmd, char *parse { enum ast_cdr_options option; - if (!strcasecmp("party_a", cmd)) { + AST_DECLARE_APP_ARGS(args, + AST_APP_ARG(variable); + AST_APP_ARG(options); + ); + + if (ast_strlen_zero(parse) || !value || !chan) { + return -1; + } + + AST_STANDARD_APP_ARGS(args, parse); + + if (!strcasecmp("party_a", args.variable)) { option = AST_CDR_FLAG_PARTY_A; - } else if (!strcasecmp("disable", cmd)) { + } else if (!strcasecmp("disable", args.variable)) { option = AST_CDR_FLAG_DISABLE_ALL; } else { - ast_log(AST_LOG_WARNING, "Unknown option %s used with CDR_PROP\n", cmd); + ast_log(AST_LOG_WARNING, "Unknown option %s used with CDR_PROP\n", args.variable); return 0; }