mirror of
https://github.com/asterisk/asterisk.git
synced 2026-05-04 20:33:53 +00:00
func_odbc: Introduce minargs config and expose ARGC in addition to ARGn.
minargs enables enforcing of minimum count of arguments to pass to
func_odbc, so if you're unconditionally using ARG1 through ARG4 then
this should be set to 4. func_odbc will generate an error in this case,
so for example
[FOO]
minargs = 4
and ODBC_FOO(a,b,c) in dialplan will now error out instead of using a
potentially leaked ARG4 from Gosub().
ARGC is needed if you're using optional argument, to verify whether or
not an argument has been passed, else it's possible to use a leaked ARGn
from Gosub (app_stack). So now you can safely do
${IF($[${ARGC}>3]?${ARGV}:default value)} kind of thing.
Change-Id: I6ca0b137d90b03f6aa9c496991f6cbf1518f6c24
Signed-off-by: Jaco Kroon <jaco@uls.co.za>
This commit is contained in:
committed by
George Joseph
parent
6e695c867f
commit
b0f349a330
@@ -23,6 +23,10 @@
|
||||
; For substitution, you have ${ARG1}, ${ARG2} ... ${ARGn}
|
||||
; for the arguments to each SQL statement.
|
||||
;
|
||||
; Additionally you can use ${ARGC} to determine the number of arguments that
|
||||
; was actually passed (or risk using leaked ARGn variables from the channel).
|
||||
; Also reference the minargs configuration option.
|
||||
;
|
||||
; In addition, for write statements, you have ${VAL1}, ${VAL2} ... ${VALn}
|
||||
; parsed, just like arguments, for the values. In addition, if you want the
|
||||
; whole value, never mind the parsing, you can get that with ${VALUE}.
|
||||
@@ -87,6 +91,13 @@
|
||||
; These additional rows can be returned by using the name of the
|
||||
; function which was called to retrieve the first row as an
|
||||
; argument to ODBC_FETCH().
|
||||
; minargs The minimum number of ARGUMENTS that has to be passed to the
|
||||
; function. If fewer arguments than this is passed, then the call
|
||||
; will fail. It is important to note that unlike Gosub() and friends,
|
||||
; func_odbc will not mask out ARGn variables that it's not actively
|
||||
; using, as such, without this, it's entirely possible to use say
|
||||
; ARG2 from the Gosub() inside func_odbc when the intent was to
|
||||
; use an argument passed to func_odbc, but it simply was never passed.
|
||||
|
||||
|
||||
; ODBC_SQL - Allow an SQL statement to be built entirely in the dialplan
|
||||
|
||||
Reference in New Issue
Block a user