kill TAINTED code
While I was working on the TestCodeRun refactor I found two tests about Tainted code. I looked into it and coulnd't get HHVM to compile with TAINTED=1. Then I checked and none of the extension functions we exposed about tainting were used in WWW. Scratching my head I asked, @srenfro and @jdelong, who thought it was dead. So I killed this zombie.
Esse commit está contido em:
@@ -350,7 +350,6 @@ int prepareOptions(CompilerOptions &po, int argc, char **argv) {
|
||||
"to specify here.")
|
||||
("compiler-id", "display the git hash for the compiler id")
|
||||
("repo-schema", "display the repo schema id used by this app")
|
||||
("taint-status", "check if the compiler was built with taint enabled")
|
||||
;
|
||||
|
||||
positional_options_description p;
|
||||
@@ -402,13 +401,6 @@ int prepareOptions(CompilerOptions &po, int argc, char **argv) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (vm.count("taint-status")) {
|
||||
#ifdef TAINTED
|
||||
cout << TAINTED << "\n";
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
|
||||
if ((po.target == "hhbc" || po.target == "run") &&
|
||||
po.format.find("exe") == string::npos) {
|
||||
if (po.program == "program") {
|
||||
|
||||
@@ -83,10 +83,6 @@ testing and some alternative PHP implementation.
|
||||
- fb_enable_code_coverage
|
||||
- fb_disable_code_coverage
|
||||
|
||||
- fb_get_taint
|
||||
- fb_set_taint
|
||||
- fb_unset_taint
|
||||
|
||||
- xhprof_enable
|
||||
- xhprof_disable
|
||||
- xhprof_sample_enable
|
||||
|
||||
@@ -71,7 +71,6 @@ DefineFunction(
|
||||
'desc' => "The value of the note.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -83,10 +82,6 @@ DefineFunction(
|
||||
'type' => StringVec,
|
||||
'desc' => "An associative array of all the HTTP headers in the current request, or FALSE on failure.",
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_ALL",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -98,10 +93,6 @@ DefineFunction(
|
||||
'type' => StringVec,
|
||||
'desc' => "An array of all Apache response headers on success or FALSE on failure.",
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_ALL",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -131,7 +122,6 @@ DefineFunction(
|
||||
'desc' => "Whether to set the top-level variable available to all Apache layers.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -143,10 +133,6 @@ DefineFunction(
|
||||
'type' => StringVec,
|
||||
'desc' => "An associative array of all the HTTP headers in the current request, or FALSE on failure.",
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_ALL",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -165,7 +151,6 @@ DefineFunction(
|
||||
'desc' => "The file that the virtual command will be performed on.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -175,7 +160,6 @@ DefineFunction(
|
||||
'return' => array(
|
||||
'type' => Variant,
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -185,7 +169,6 @@ DefineFunction(
|
||||
'return' => array(
|
||||
'type' => Variant,
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -195,7 +178,6 @@ DefineFunction(
|
||||
'return' => array(
|
||||
'type' => Variant,
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -81,10 +81,6 @@ DefineFunction(
|
||||
'value' => "0",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -119,10 +115,6 @@ DefineFunction(
|
||||
'value' => "0",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -152,10 +144,6 @@ DefineFunction(
|
||||
'value' => "0",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -179,7 +167,6 @@ DefineFunction(
|
||||
'value' => "0",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -208,7 +195,6 @@ DefineFunction(
|
||||
'value' => "0",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -234,7 +220,6 @@ DefineFunction(
|
||||
'desc' => "If limited is TRUE, the return value will exclude the individual list of cache entries. This is useful when trying to optimize calls for statistics gathering.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -254,7 +239,6 @@ DefineFunction(
|
||||
'desc' => "If cache_type is \"user\", the user cache will be cleared; otherwise, the system cache (cached files) will be cleared.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -289,7 +273,6 @@ DefineFunction(
|
||||
'value' => "0",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -319,7 +302,6 @@ DefineFunction(
|
||||
'value' => "0",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -339,7 +321,6 @@ DefineFunction(
|
||||
'desc' => "When set to FALSE (default) apc_sma_info() will return a detailed information about each segment.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -349,7 +330,6 @@ DefineFunction(
|
||||
'return' => array(
|
||||
'type' => StringVec,
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -373,7 +353,6 @@ DefineFunction(
|
||||
'value' => "0",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -409,7 +388,6 @@ DefineFunction(
|
||||
'value' => "0",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -445,7 +423,6 @@ DefineFunction(
|
||||
'value' => "0",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -476,7 +453,6 @@ DefineFunction(
|
||||
'value' => "0",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -500,7 +476,6 @@ DefineFunction(
|
||||
'value' => "0",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -526,7 +501,6 @@ DefineFunction(
|
||||
'desc' => "The user vars. Passing in NULL signals a dump of every entry, while passing in array() will dump nothing.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -556,7 +530,6 @@ DefineFunction(
|
||||
'value' => "0",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -597,7 +570,6 @@ DefineFunction(
|
||||
'desc' => "The context passed to the filename stream. See the file_put_contents() documentation for details.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -633,7 +605,6 @@ DefineFunction(
|
||||
'value' => "0",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -75,7 +75,6 @@ DefineFunction(
|
||||
'desc' => "The new code for the function.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -99,7 +98,6 @@ DefineFunction(
|
||||
'desc' => "The new name for the original_name function.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -109,7 +107,6 @@ DefineFunction(
|
||||
'return' => array(
|
||||
'type' => null,
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -134,7 +131,6 @@ DefineFunction(
|
||||
'value' => "null_string",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -168,7 +164,6 @@ DefineFunction(
|
||||
'desc' => "An integer which is formed by adding together the XXX_TRACE constants.\n\nIt is not recommended to use MEMORY_TRACE. It is very slow and does not appear to be accurate. ASSIGNMENT_TRACE is not implemented yet.\n\nTo turn on all functional traces (TIMING, FUNCTIONS, ARGS SUMMARY (like strace -c)) use the value 99",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -178,7 +173,6 @@ DefineFunction(
|
||||
'return' => array(
|
||||
'type' => null,
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -190,7 +184,6 @@ DefineFunction(
|
||||
'type' => Boolean,
|
||||
'desc' => "Returns TRUE on success or FALSE on failure.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -202,7 +195,6 @@ DefineFunction(
|
||||
'type' => Boolean,
|
||||
'desc' => "Returns TRUE on success or FALSE on failure.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -221,7 +213,6 @@ DefineFunction(
|
||||
'desc' => "The debugged variable.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -197,8 +197,6 @@ DefineFunction(
|
||||
'desc' => "Either CASE_UPPER or CASE_LOWER (default)",
|
||||
),
|
||||
),
|
||||
// NB: A MUTATing TaintObserver is declared in ArrayUtil::ChangeKeyCase
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -228,7 +226,6 @@ DefineFunction(
|
||||
'desc' => "When set to TRUE keys will be preserved. Default is FALSE which will reindex the chunk numerically",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -252,7 +249,6 @@ DefineFunction(
|
||||
'desc' => "Array of values to be used",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -271,7 +267,6 @@ DefineFunction(
|
||||
'desc' => "The array of values to count",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -295,7 +290,6 @@ DefineFunction(
|
||||
'desc' => "Value to use for filling",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -324,7 +318,6 @@ DefineFunction(
|
||||
'desc' => "Value to use for filling",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -349,7 +342,6 @@ DefineFunction(
|
||||
'desc' => "The callback function to use\n\nIf no callback is supplied, all entries of input equal to FALSE (see converting to boolean) will be removed.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -368,7 +360,6 @@ DefineFunction(
|
||||
'desc' => "An array of key/value pairs to be flipped.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -392,7 +383,6 @@ DefineFunction(
|
||||
'desc' => "An array with keys to check.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -412,7 +402,6 @@ DefineFunction(
|
||||
'type' => Variant,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -443,7 +432,6 @@ DefineFunction(
|
||||
'desc' => "Determines if strict comparison (===) should be used during the search.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -467,7 +455,6 @@ DefineFunction(
|
||||
'desc' => "An array to run through the callback function.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -486,7 +473,6 @@ DefineFunction(
|
||||
'desc' => "Initial array to merge.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -505,7 +491,6 @@ DefineFunction(
|
||||
'desc' => "Initial array to merge.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -524,7 +509,6 @@ DefineFunction(
|
||||
'desc' => "The array in which elements are replaced.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -543,7 +527,6 @@ DefineFunction(
|
||||
'desc' => "The array in which elements are replaced.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -562,7 +545,6 @@ DefineFunction(
|
||||
'desc' => "An array being sorted.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -591,7 +573,6 @@ DefineFunction(
|
||||
'desc' => "Value to pad if input is less than pad_size.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -610,7 +591,6 @@ DefineFunction(
|
||||
'desc' => "The array to get the value from.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -629,7 +609,6 @@ DefineFunction(
|
||||
'desc' => "The array.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -653,7 +632,6 @@ DefineFunction(
|
||||
'desc' => "The pushed value.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -678,7 +656,6 @@ DefineFunction(
|
||||
'desc' => "Specifies how many entries you want to pick. Trying to pick more elements than there are in the array will result in an E_WARNING level error.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -708,7 +685,6 @@ DefineFunction(
|
||||
'desc' => "If the optional initial is available, it will be used at the beginning of the process, or as a final result in case the array is empty.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -733,7 +709,6 @@ DefineFunction(
|
||||
'desc' => "If set to TRUE keys are preserved.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -763,7 +738,6 @@ DefineFunction(
|
||||
'desc' => "If the third parameter strict is set to TRUE then the array_search() function will search for identical elements in the haystack. This means it will also check the types of the needle in the haystack, and objects must be the same instance.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -782,7 +756,6 @@ DefineFunction(
|
||||
'desc' => "The input array.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -818,7 +791,6 @@ DefineFunction(
|
||||
'desc' => "Note that array_slice() will reorder and reset the array indices by default. You can change this behaviour by setting preserve_keys to TRUE.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -854,7 +826,6 @@ DefineFunction(
|
||||
'desc' => "If replacement array is specified, then the removed elements are replaced with elements from this array.\n\nIf offset and length are such that nothing is removed, then the elements from the replacement array are inserted in the place specified by the offset. Note that keys in replacement array are not preserved.\n\nIf replacement is just one element it is not necessary to put array() around it, unless the element is an array itself, an object or NULL.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -873,7 +844,6 @@ DefineFunction(
|
||||
'desc' => "The input array.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -898,7 +868,6 @@ DefineFunction(
|
||||
'desc' => "The optional second parameter sort_flags may be used to modify the sorting behavior using these values:\n\nSorting type flags: SORT_REGULAR - compare items normally (don't change types) SORT_NUMERIC - compare items numerically SORT_STRING - compare items as strings SORT_LOCALE_STRING - compare items as strings, based on the current locale.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -922,7 +891,6 @@ DefineFunction(
|
||||
'desc' => "The prepended variable.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -941,7 +909,6 @@ DefineFunction(
|
||||
'desc' => "The array.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -971,7 +938,6 @@ DefineFunction(
|
||||
'desc' => "If the optional userdata parameter is supplied, it will be passed as the third parameter to the callback funcname.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1000,7 +966,6 @@ DefineFunction(
|
||||
'desc' => "If the optional userdata parameter is supplied, it will be passed as the third parameter to the callback funcname.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1019,7 +984,6 @@ DefineFunction(
|
||||
'desc' => "compact() takes a variable number of parameters. Each parameter can be either a string containing the name of the variable, or an array of variable names. The array can contain other arrays of variable names inside it; compact() handles it recursively.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1038,7 +1002,6 @@ DefineFunction(
|
||||
'desc' => "The array.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1063,7 +1026,6 @@ DefineFunction(
|
||||
'desc' => "If the optional mode parameter is set to COUNT_RECURSIVE (or 1), count() will recursively count the array. This is particularly useful for counting all the elements of a multidimensional array. count() does not detect infinite recursion.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1084,7 +1046,6 @@ DefineFunction(
|
||||
'value' => "false",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1103,7 +1064,6 @@ DefineFunction(
|
||||
'desc' => "The input array.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1122,7 +1082,6 @@ DefineFunction(
|
||||
'desc' => "The array.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1141,7 +1100,6 @@ DefineFunction(
|
||||
'desc' => "The array.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1160,7 +1118,6 @@ DefineFunction(
|
||||
'desc' => "The array being affected.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1176,7 +1133,6 @@ DefineFunction(
|
||||
'type' => Variant | Reference,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1195,7 +1151,6 @@ DefineFunction(
|
||||
'desc' => "The input array.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1214,7 +1169,6 @@ DefineFunction(
|
||||
'desc' => "The input array.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1233,7 +1187,6 @@ DefineFunction(
|
||||
'desc' => "The array. This array is passed by reference because it is modified by the function. This means you must pass it a real variable and not a function returning an array because only actual variables may be passed by reference.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1252,7 +1205,6 @@ DefineFunction(
|
||||
'desc' => "The array.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1271,7 +1223,6 @@ DefineFunction(
|
||||
'desc' => "The array or object to iterate on.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1290,7 +1241,6 @@ DefineFunction(
|
||||
'desc' => "The array or object to iterate on.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1320,7 +1270,6 @@ DefineFunction(
|
||||
'desc' => "If the third parameter strict is set to TRUE then the in_array() function will also check the types of the needle in the haystack.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1350,7 +1299,6 @@ DefineFunction(
|
||||
'desc' => "If a step value is given, it will be used as the increment between elements in the sequence. step should be given as a positive number. If not specified, step will default to 1.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1374,7 +1322,6 @@ DefineFunction(
|
||||
'desc' => "An array to compare against",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1403,7 +1350,6 @@ DefineFunction(
|
||||
'desc' => "The callback comparison function.\n\nThe user supplied callback function is used for comparison. It must return an integer less than, equal to, or greater than zero if the first argument is considered to be respectively less than, equal to, or greater than the second.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1427,7 +1373,6 @@ DefineFunction(
|
||||
'desc' => "An array to compare against",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1456,7 +1401,6 @@ DefineFunction(
|
||||
'desc' => "More arrays to compare against",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1485,7 +1429,6 @@ DefineFunction(
|
||||
'desc' => "The callback comparison function.\n\nThe user supplied callback function is used for comparison. It must return an integer less than, equal to, or greater than zero if the first argument is considered to be respectively less than, equal to, or greater than the second.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1519,7 +1462,6 @@ DefineFunction(
|
||||
'desc' => "The comparison of keys (indices) is done also by the callback function key_compare_func. This behaviour is unlike what array_udiff_assoc() does, since the latter compares the indices by using an internal function.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1543,7 +1485,6 @@ DefineFunction(
|
||||
'desc' => "An array to compare against",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1572,7 +1513,6 @@ DefineFunction(
|
||||
'desc' => "More arrays to compare against",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1596,7 +1536,6 @@ DefineFunction(
|
||||
'desc' => "An array to compare values against.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1625,7 +1564,6 @@ DefineFunction(
|
||||
'desc' => "The callback comparison function.\n\nThe user supplied callback function is used for comparison. It must return an integer less than, equal to, or greater than zero if the first argument is considered to be respectively less than, equal to, or greater than the second.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1648,7 +1586,6 @@ DefineFunction(
|
||||
'desc' => "An array to compare values against.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1677,7 +1614,6 @@ DefineFunction(
|
||||
'desc' => "Variable list of array arguments to compare values against.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1706,7 +1642,6 @@ DefineFunction(
|
||||
'desc' => "For comparison is used the user supplied callback function. It must return an integer less than, equal to, or greater than zero if the first argument is considered to be respectively less than, equal to, or greater than the second.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1740,7 +1675,6 @@ DefineFunction(
|
||||
'desc' => "Key comparison callback function.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1764,7 +1698,6 @@ DefineFunction(
|
||||
'desc' => "An array to compare keys against.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1793,7 +1726,6 @@ DefineFunction(
|
||||
'desc' => "Variable list of array arguments to compare keys against.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1823,7 +1755,6 @@ DefineFunction(
|
||||
'value' => "false",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1853,7 +1784,6 @@ DefineFunction(
|
||||
'value' => "false",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1883,7 +1813,6 @@ DefineFunction(
|
||||
'value' => "false",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1913,7 +1842,6 @@ DefineFunction(
|
||||
'value' => "false",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1938,7 +1866,6 @@ DefineFunction(
|
||||
'desc' => "You may modify the behavior of the sort using the optional parameter sort_flags, for details see sort().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1963,7 +1890,6 @@ DefineFunction(
|
||||
'desc' => "You may modify the behavior of the sort using the optional parameter sort_flags, for details see sort().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1987,7 +1913,6 @@ DefineFunction(
|
||||
'desc' => "The comparison function must return an integer less than, equal to, or greater than zero if the first argument is considered to be respectively less than, equal to, or greater than the second.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2011,7 +1936,6 @@ DefineFunction(
|
||||
'desc' => "See usort() and uksort() for examples of user-defined comparison functions.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2035,7 +1959,6 @@ DefineFunction(
|
||||
'desc' => "The callback comparison function.\n\nFunction cmp_function should accept two parameters which will be filled by pairs of array keys. The comparison function must return an integer less than, equal to, or greater than zero if the first argument is considered to be respectively less than, equal to, or greater than the second.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2054,7 +1977,6 @@ DefineFunction(
|
||||
'desc' => "The input array.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2073,7 +1995,6 @@ DefineFunction(
|
||||
'desc' => "The input array.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2083,7 +2004,6 @@ DefineFunction(
|
||||
'return' => array(
|
||||
'type' => String,
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2099,7 +2019,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2119,7 +2038,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2135,7 +2053,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2145,7 +2062,6 @@ DefineFunction(
|
||||
'return' => array(
|
||||
'type' => Variant,
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -49,7 +49,6 @@ CPP
|
||||
// 'value' => default value of the argument
|
||||
// 'desc' => description of the argument
|
||||
// )
|
||||
// 'taint_observer' => taint propagation information
|
||||
// array (
|
||||
// 'set_mask' => which bits to set automatically
|
||||
// 'clear_mask' => which bits to clear automatically
|
||||
|
||||
@@ -65,7 +65,6 @@ DefineFunction(
|
||||
'desc' => "The scale factor.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -95,10 +94,6 @@ DefineFunction(
|
||||
'desc' => "This optional parameter is used to set the number of digits after the decimal place in the result. You can also set the global default scale for all functions by using bcscale().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -128,10 +123,6 @@ DefineFunction(
|
||||
'desc' => "This optional parameter is used to set the number of digits after the decimal place in the result. You can also set the global default scale for all functions by using bcscale().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -190,10 +181,6 @@ DefineFunction(
|
||||
'desc' => "This optional parameter is used to set the number of digits after the decimal place in the result. You can also set the global default scale for all functions by using bcscale().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -223,10 +210,6 @@ DefineFunction(
|
||||
'desc' => "This optional parameter is used to set the number of digits after the decimal place in the result. You can also set the global default scale for all functions by using bcscale().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -250,10 +233,6 @@ DefineFunction(
|
||||
'desc' => "The modulus, as a string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -283,10 +262,6 @@ DefineFunction(
|
||||
'desc' => "This optional parameter is used to set the number of digits after the decimal place in the result. You can also set the global default scale for all functions by using bcscale().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -321,10 +296,6 @@ DefineFunction(
|
||||
'desc' => "This optional parameter is used to set the number of digits after the decimal place in the result. You can also set the global default scale for all functions by using bcscale().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -349,10 +320,6 @@ DefineFunction(
|
||||
'desc' => "This optional parameter is used to set the number of digits after the decimal place in the result. You can also set the global default scale for all functions by using bcscale().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -65,7 +65,6 @@ DefineFunction(
|
||||
'desc' => "The file pointer. It must be valid and must point to a file successfully opened by bzopen().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -89,7 +88,6 @@ DefineFunction(
|
||||
'desc' => "Similar to the fopen() function, only 'r' (read) and 'w' (write) are supported. Everything else will cause bzopen to return FALSE.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -114,10 +112,6 @@ DefineFunction(
|
||||
'desc' => "If not specified, bzread() will read 1024 (uncompressed) bytes at a time.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_ALL_NO_TRACE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -147,7 +141,6 @@ DefineFunction(
|
||||
'desc' => "If supplied, writing will stop after length (uncompressed) bytes have been written or the end of data is reached, whichever comes first.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -166,7 +159,6 @@ DefineFunction(
|
||||
'desc' => "The file pointer. It must be valid and must point to a file successfully opened by bzopen().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -185,7 +177,6 @@ DefineFunction(
|
||||
'desc' => "The file pointer. It must be valid and must point to a file successfully opened by bzopen().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -204,7 +195,6 @@ DefineFunction(
|
||||
'desc' => "The file pointer. It must be valid and must point to a file successfully opened by bzopen().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -223,7 +213,6 @@ DefineFunction(
|
||||
'desc' => "The file pointer. It must be valid and must point to a file successfully opened by bzopen().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -254,10 +243,6 @@ DefineFunction(
|
||||
'desc' => "Controls how the compression phase behaves when presented with worst case, highly repetitive, input data. The value can be between 0 and 250 with 0 being a special case.\n\nRegardless of the workfactor, the generated output is the same.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -282,10 +267,6 @@ DefineFunction(
|
||||
'desc' => "If TRUE, an alternative decompression algorithm will be used which uses less memory (the maximum memory requirement drops to around 2300K) but works at roughly half the speed.\n\nSee the » bzip2 documentation for more information about this feature.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -58,7 +58,6 @@ DefineFunction(
|
||||
'type' => VariantMap,
|
||||
'desc' => "Returns an array of the names of the declared classes in the current script.\n\nNote that depending on what extensions you have compiled or loaded into PHP, additional classes could be present. This means that you will not be able to define your own classes using these names. There is a list of predefined classes in the Predefined Classes section of the appendices.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -70,7 +69,6 @@ DefineFunction(
|
||||
'type' => VariantMap,
|
||||
'desc' => "Returns an array of the names of the declared interfaces in the current script.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -106,7 +104,6 @@ DefineFunction(
|
||||
'desc' => "Whether or not to call __autoload by default.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -131,7 +128,6 @@ DefineFunction(
|
||||
'desc' => "Whether to call __autoload or not by default.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -174,7 +170,6 @@ DefineFunction(
|
||||
'desc' => "The class name or an object instance",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -193,7 +188,6 @@ DefineFunction(
|
||||
'desc' => "The class name",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -212,7 +206,6 @@ DefineFunction(
|
||||
'desc' => "The class name",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -232,7 +225,6 @@ DefineFunction(
|
||||
'desc' => "The tested object. This parameter may be omitted when inside a class.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -252,7 +244,6 @@ DefineFunction(
|
||||
'desc' => "The tested object or class name",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -282,7 +273,6 @@ DefineFunction(
|
||||
'desc' => "If this parameter set to false (default), string class name as object is not allowed. This also prevents from calling autoloader if the class doesn't exist.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -312,7 +302,6 @@ DefineFunction(
|
||||
'desc' => "If this parameter set to false, string class name as object is not allowed. This also prevents from calling autoloader if the class doesn't exist.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -336,7 +325,6 @@ DefineFunction(
|
||||
'desc' => "The method name",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -361,7 +349,6 @@ DefineFunction(
|
||||
'desc' => "The name of the property",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -380,7 +367,6 @@ DefineFunction(
|
||||
'desc' => "An object instance.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -407,7 +393,6 @@ DefineFunction(
|
||||
'desc' => "An array of parameters.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -429,7 +414,6 @@ DefineFunction(
|
||||
'desc' => "The object that method_name is being called on.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -74,7 +74,6 @@ DefineFunction(
|
||||
'value' => 'null_array',
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -65,7 +65,6 @@ DefineFunction(
|
||||
'desc' => "The tested string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -84,7 +83,6 @@ DefineFunction(
|
||||
'desc' => "The tested string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -103,7 +101,6 @@ DefineFunction(
|
||||
'desc' => "The tested string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -122,7 +119,6 @@ DefineFunction(
|
||||
'desc' => "The tested string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -141,7 +137,6 @@ DefineFunction(
|
||||
'desc' => "The tested string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -160,7 +155,6 @@ DefineFunction(
|
||||
'desc' => "The tested string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -179,7 +173,6 @@ DefineFunction(
|
||||
'desc' => "The tested string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -198,7 +191,6 @@ DefineFunction(
|
||||
'desc' => "The tested string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -217,7 +209,6 @@ DefineFunction(
|
||||
'desc' => "The tested string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -236,7 +227,6 @@ DefineFunction(
|
||||
'desc' => "The tested string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -255,7 +245,6 @@ DefineFunction(
|
||||
'desc' => "The tested string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -68,7 +68,6 @@ DefineFunction(
|
||||
'desc' => "If provided, the CURLOPT_URL option will be set to its value. You can manually set this using the curl_setopt() function.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -87,7 +86,6 @@ DefineFunction(
|
||||
'desc' => "A cURL handle returned by curl_init().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -106,7 +104,6 @@ DefineFunction(
|
||||
'value' => "k_CURLVERSION_NOW",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -132,7 +129,6 @@ DefineFunction(
|
||||
'type' => Variant,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -156,7 +152,6 @@ DefineFunction(
|
||||
'desc' => "An array specifying which options to set and their values. The keys should be valid curl_setopt() constants or their integer equivalents.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
// FB-specific extension
|
||||
@@ -182,7 +177,6 @@ DefineFunction(
|
||||
'desc' => "This should be one of the CURLOPT_* values.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -201,10 +195,6 @@ DefineFunction(
|
||||
'desc' => "A cURL handle returned by curl_init().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_ALL",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -229,10 +219,6 @@ DefineFunction(
|
||||
'desc' => "This may be one of the following constants: CURLINFO_EFFECTIVE_URL - Last effective URL CURLINFO_HTTP_CODE - Last received HTTP code CURLINFO_FILETIME - Remote time of the retrieved document, if -1 is returned the time of the document is unknown CURLINFO_TOTAL_TIME - Total transaction time in seconds for last transfer CURLINFO_NAMELOOKUP_TIME - Time in seconds until name resolving was complete CURLINFO_CONNECT_TIME - Time in seconds it took to establish the connection CURLINFO_PRETRANSFER_TIME - Time in seconds from start until just before file transfer begins CURLINFO_STARTTRANSFER_TIME - Time in seconds until the first byte is about to be transferred CURLINFO_REDIRECT_TIME - Time in seconds of all redirection steps before final transaction was started CURLINFO_SIZE_UPLOAD - Total number of bytes uploaded CURLINFO_SIZE_DOWNLOAD - Total number of bytes downloaded CURLINFO_SPEED_DOWNLOAD - Average download speed CURLINFO_SPEED_UPLOAD - Average upload speed CURLINFO_HEADER_SIZE - Total size of all headers received CURLINFO_HEADER_OUT - The request string sent CURLINFO_REQUEST_SIZE - Total size of issued requests, currently only for HTTP requests CURLINFO_SSL_VERIFYRESULT - Result of SSL certification verification requested by setting CURLOPT_SSL_VERIFYPEER CURLINFO_CONTENT_LENGTH_DOWNLOAD - content-length of download, read from Content-Length: field CURLINFO_CONTENT_LENGTH_UPLOAD - Specified size of upload CURLINFO_CONTENT_TYPE - Content-Type: of downloaded object, NULL indicates server did not send valid Content-Type: header",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_ALL",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -251,7 +237,6 @@ DefineFunction(
|
||||
'desc' => "A cURL handle returned by curl_init().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -270,7 +255,6 @@ DefineFunction(
|
||||
'desc' => "A cURL handle returned by curl_init().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -289,7 +273,6 @@ DefineFunction(
|
||||
'desc' => "A cURL handle returned by curl_init().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -301,7 +284,6 @@ DefineFunction(
|
||||
'type' => Resource,
|
||||
'desc' => "Returns a cURL multi handle resource on success, FALSE on failure.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -325,7 +307,6 @@ DefineFunction(
|
||||
'desc' => "A cURL handle returned by curl_init().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -349,7 +330,6 @@ DefineFunction(
|
||||
'desc' => "A cURL handle returned by curl_init().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -373,10 +353,6 @@ DefineFunction(
|
||||
'desc' => "A reference to a flag to tell whether the operations are still running.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_ALL",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -401,7 +377,6 @@ DefineFunction(
|
||||
'desc' => "Time, in seconds, to wait for a response.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -441,7 +416,6 @@ DefineFunction(
|
||||
'desc' => "If no file descriptors are set, max_fd will contain -1. Otherwise it will contain the higher descriptor number.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -460,10 +434,6 @@ DefineFunction(
|
||||
'desc' => "A cURL handle returned by curl_init().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_ALL",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -488,7 +458,6 @@ DefineFunction(
|
||||
'desc' => "Number of messages that are still in the queue",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -507,7 +476,6 @@ DefineFunction(
|
||||
'desc' => "A cURL multi handle returned by curl_multi_init().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -536,7 +504,6 @@ DefineFunction(
|
||||
'desc' => "Port number of the HTTP server.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -567,10 +534,6 @@ DefineFunction(
|
||||
'desc' => "How many seconds to wait for response.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_ALL",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -606,10 +569,6 @@ DefineFunction(
|
||||
'desc' => "How many seconds to wait for response.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_ALL",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -640,10 +599,6 @@ DefineFunction(
|
||||
'desc' => "How many seconds to wait for response.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_ALL",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -679,10 +634,6 @@ DefineFunction(
|
||||
'desc' => "How many seconds to wait for response.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_ALL",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -701,10 +652,6 @@ DefineFunction(
|
||||
'desc' => "The object created by calling evhttp_async_get() or evhttp_async_post().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_ALL",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -78,7 +78,6 @@ DefineFunction(
|
||||
'desc' => "The year is between 1 and 32767 inclusive.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -143,7 +142,6 @@ DefineFunction(
|
||||
'value' => "null_object",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -171,7 +169,6 @@ DefineFunction(
|
||||
'type' => Int32,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -183,7 +180,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
'desc' => "Returns a string.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -202,7 +198,6 @@ DefineFunction(
|
||||
'desc' => "The timezone identifier, like UTC or Europe/Lisbon. The list of valid identifiers is available in the List of Supported Timezones.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -246,7 +241,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -318,7 +312,6 @@ DefineFunction(
|
||||
'value' => "1",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -338,7 +331,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -354,7 +346,6 @@ DefineFunction(
|
||||
'type' => Object,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -372,7 +363,6 @@ DefineFunction(
|
||||
'desc' => "Date in format accepted by strtotime().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -419,7 +409,6 @@ DefineFunction(
|
||||
'desc' => "Longitude in degrees.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -468,7 +457,6 @@ DefineFunction(
|
||||
'desc' => "Specified in hours.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -517,7 +505,6 @@ DefineFunction(
|
||||
'desc' => "Specified in hours.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -546,7 +533,6 @@ DefineFunction(
|
||||
'value' => "0",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -596,7 +582,6 @@ DefineFunction(
|
||||
'type' => Object,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -616,7 +601,6 @@ DefineFunction(
|
||||
'type' => Object,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -639,10 +623,6 @@ DefineFunction(
|
||||
'value' => "TimeStamp::Current()",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -661,7 +641,6 @@ DefineFunction(
|
||||
'desc' => "The optional timestamp parameter is an integer Unix timestamp that defaults to the current local time if a timestamp is not given. In other words, it defaults to the value of time().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -681,7 +660,6 @@ DefineFunction(
|
||||
'desc' => "When set to TRUE, a float instead of an array is returned.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -706,10 +684,6 @@ DefineFunction(
|
||||
'desc' => "The optional timestamp parameter is an integer Unix timestamp that defaults to the current local time if a timestamp is not given. In other words, it defaults to the value of time().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -759,7 +733,6 @@ DefineFunction(
|
||||
'desc' => "The year",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -784,10 +757,6 @@ DefineFunction(
|
||||
'desc' => "The optional timestamp parameter is an integer Unix timestamp that defaults to the current local time if a timestamp is not given. In other words, it defaults to the value of time().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -812,7 +781,6 @@ DefineFunction(
|
||||
'desc' => "The optional timestamp parameter is an integer Unix timestamp that defaults to the current local time if a timestamp is not given. In other words, it defaults to the value of time().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -837,7 +805,6 @@ DefineFunction(
|
||||
'desc' => "If set to FALSE or not supplied then the array is returned as a regular, numerically indexed array. If the argument is set to TRUE then localtime() returns an associative array containing all the different elements of the structure returned by the C function call to localtime. The names of the different keys of the associative array are as follows:\n\n\"tm_sec\" - seconds \"tm_min\" - minutes \"tm_hour\" - hour \"tm_mday\" - day of the month Months are from 0 (Jan) to 11 (Dec) and days of the week are from 0 (Sun) to 6 (Sat). \"tm_mon\" - month of the year, starting with 0 for January \"tm_year\" - Years since 1900 \"tm_wday\" - Day of the week \"tm_yday\" - Day of the year \"tm_isdst\" - Is daylight savings time in effect",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -856,7 +823,6 @@ DefineFunction(
|
||||
'desc' => "When called without the optional argument, this function returns the string \"msec sec\" where sec is the current time measured in the number of seconds since the Unix Epoch (0:00:00 January 1, 1970 GMT), and msec is the microseconds part. Both portions of the string are returned in units of seconds.\n\nIf the optional get_as_float is set to TRUE then a float (in seconds) is returned.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -906,7 +872,6 @@ DefineFunction(
|
||||
'desc' => "The number of the year, may be a two or four digit value, with values between 0-69 mapping to 2000-2069 and 70-100 to 1970-2000. On systems where time_t is a 32bit signed integer, as most common today, the valid range for year is somewhere between 1901 and 2038. However, before PHP 5.1.0 this range was limited from 1970 to 2038 on some systems (e.g. Windows).",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -929,10 +894,6 @@ DefineFunction(
|
||||
'value' => "TimeStamp::Current()",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -956,10 +917,6 @@ DefineFunction(
|
||||
'desc' => "The format used in date (e.g. the same as used in strftime()). Note that some of the format options available to strftime() may not have any effect within strptime(); the exact subset that are supported will vary based on the operating system and C library in use.\n\nFor more information about the format options, read the strftime() page.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -983,7 +940,6 @@ DefineFunction(
|
||||
'desc' => "The timestamp which is used as a base for the calculation of relative dates.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -994,7 +950,6 @@ DefineFunction(
|
||||
'return' => array(
|
||||
'type' => Int64,
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1004,7 +959,6 @@ DefineFunction(
|
||||
'return' => array(
|
||||
'type' => StringVec,
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1014,7 +968,6 @@ DefineFunction(
|
||||
'return' => array(
|
||||
'type' => StringVec,
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1059,7 +1012,6 @@ DefineFunction(
|
||||
'desc' => "Daylight saving time indicator. Defaults to -1, which means that whether the time zone has daylight saving or not is not taken into consideration when searching. If this is set to 1, then the gmtOffset is assumed to be an offset with daylight saving in effect; if 0, then gmtOffset is assumed to be an offset without daylight saving in effect. If abbr doesn't exist then the time zone is searched solely by the gmtOffset and isdst.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1075,7 +1027,6 @@ DefineFunction(
|
||||
'type' => Object,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1095,7 +1046,6 @@ DefineFunction(
|
||||
'type' => Object,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1111,7 +1061,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1127,7 +1076,6 @@ DefineFunction(
|
||||
'type' => Object,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
|
||||
@@ -71,7 +71,6 @@ DefineFunction(
|
||||
'desc' => "The debugger command class that has its implementation.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -83,7 +82,6 @@ DefineFunction(
|
||||
'type' => StringMap,
|
||||
'desc' => "A map of commands and their PHP classes.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -102,7 +100,6 @@ DefineFunction(
|
||||
'desc' => "If true, break, otherwise, continue.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -121,7 +118,6 @@ DefineFunction(
|
||||
'desc' => "the name to identify the debugger client",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -144,7 +140,6 @@ DefineFunction(
|
||||
'desc' => "the string to represent the operation",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -71,7 +71,6 @@ DefineFunction(
|
||||
'value' => "null_string",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -87,7 +86,6 @@ DefineFunction(
|
||||
'type' => Variant,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -107,7 +105,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -127,7 +124,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -147,7 +143,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -172,7 +167,6 @@ DefineFunction(
|
||||
'value' => "null_string",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -192,7 +186,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -212,7 +205,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -232,7 +224,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -257,7 +248,6 @@ DefineFunction(
|
||||
'value' => "false",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -286,7 +276,6 @@ DefineFunction(
|
||||
'value' => "null_string",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -310,7 +299,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -334,7 +322,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -354,7 +341,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -370,7 +356,6 @@ DefineFunction(
|
||||
'type' => Variant,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -399,7 +384,6 @@ DefineFunction(
|
||||
'value' => "0",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -429,7 +413,6 @@ DefineFunction(
|
||||
'value' => "0",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -447,7 +430,6 @@ DefineFunction(
|
||||
'type' => Variant,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -471,7 +453,6 @@ DefineFunction(
|
||||
'value' => "0",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -487,7 +468,6 @@ DefineFunction(
|
||||
'type' => Variant,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -507,7 +487,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -527,7 +506,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -547,7 +525,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -567,7 +544,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -587,7 +563,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -612,7 +587,6 @@ DefineFunction(
|
||||
'value' => "null",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -636,7 +610,6 @@ DefineFunction(
|
||||
'type' => Object,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -656,7 +629,6 @@ DefineFunction(
|
||||
'type' => Object,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -676,7 +648,6 @@ DefineFunction(
|
||||
'type' => Object,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -692,7 +663,6 @@ DefineFunction(
|
||||
'type' => Variant,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -713,7 +683,6 @@ DefineFunction(
|
||||
'value' => "false",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -731,7 +700,6 @@ DefineFunction(
|
||||
'type' => Variant,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -755,7 +723,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -771,7 +738,6 @@ DefineFunction(
|
||||
'type' => Variant,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -791,7 +757,6 @@ DefineFunction(
|
||||
'type' => Object,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -811,7 +776,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -831,7 +795,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -851,7 +814,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -874,7 +836,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -894,7 +855,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -917,7 +877,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -941,7 +900,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -965,7 +923,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -985,7 +942,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1009,7 +965,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1033,7 +988,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1061,7 +1015,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1077,7 +1030,6 @@ DefineFunction(
|
||||
'type' => Variant,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1097,7 +1049,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1121,7 +1072,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1141,7 +1091,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1161,7 +1110,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1181,7 +1129,6 @@ DefineFunction(
|
||||
'type' => Object,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1201,7 +1148,6 @@ DefineFunction(
|
||||
'type' => Object,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1221,7 +1167,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1245,7 +1190,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1273,7 +1217,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1297,7 +1240,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1321,7 +1263,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1341,7 +1282,6 @@ DefineFunction(
|
||||
'type' => Object,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1365,7 +1305,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1385,7 +1324,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1409,7 +1347,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1433,7 +1370,6 @@ DefineFunction(
|
||||
'type' => Boolean,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1461,7 +1397,6 @@ DefineFunction(
|
||||
'type' => Boolean,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1485,7 +1420,6 @@ DefineFunction(
|
||||
'type' => Boolean,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1505,7 +1439,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1521,7 +1454,6 @@ DefineFunction(
|
||||
'type' => Variant,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1545,7 +1477,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1574,7 +1505,6 @@ DefineFunction(
|
||||
'value' => "null_object",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1603,7 +1533,6 @@ DefineFunction(
|
||||
'value' => "null_object",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1624,7 +1553,6 @@ DefineFunction(
|
||||
'value' => "null",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -66,7 +66,6 @@ DefineFunction(
|
||||
'desc' => "Whether or not to populate the \"object\" index.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -78,7 +77,6 @@ DefineFunction(
|
||||
'type' => null,
|
||||
'desc' => "No value is returned.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -90,7 +88,6 @@ DefineFunction(
|
||||
'type' => StringVec,
|
||||
'desc' => "Returns an associative array describing the last error with keys \"type\", \"message\", \"file\" and \"line\". Returns NULL if there hasn't been an error yet.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -127,7 +124,6 @@ DefineFunction(
|
||||
'desc' => "The extra headers. It's used when the message_type parameter is set to 1. This message type uses the same internal function as mail() does.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -147,7 +143,6 @@ DefineFunction(
|
||||
'desc' => "The new error_reporting level. It takes on either a bitmask, or named constants. Using named constants is strongly encouraged to ensure compatibility for future versions. As error levels are added, the range of integers increases, so older integer-based error levels will not always behave as expected.\n\nThe available error level constants and the actual meanings of these error levels are described in the predefined constants.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -159,7 +154,6 @@ DefineFunction(
|
||||
'type' => Boolean,
|
||||
'desc' => "This function always returns TRUE.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -171,7 +165,6 @@ DefineFunction(
|
||||
'type' => Boolean,
|
||||
'desc' => "This function always returns TRUE.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -196,7 +189,6 @@ DefineFunction(
|
||||
'desc' => "The second parameter, errstr, contains the error message, as a string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -215,7 +207,6 @@ DefineFunction(
|
||||
'desc' => "Name of the function to be called when an uncaught exception occurs. This function must be defined before calling set_exception_handler(). This handler function needs to accept one parameter, which will be the exception object that was thrown.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -233,7 +224,6 @@ DefineFunction(
|
||||
'desc' => "Relative path of the PHP document.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -251,7 +241,6 @@ DefineFunction(
|
||||
'desc' => "The error message for the fatal.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -262,7 +251,6 @@ DefineFunction(
|
||||
'return' => array(
|
||||
'type' => null,
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -274,7 +262,6 @@ DefineFunction(
|
||||
'type' => StringVec,
|
||||
'desc' => "Returns an associative array. On success, the array will contain two keys 'file' and 'line' which indicate the filename and line number of the callsite that invoked the current function or method.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -299,7 +286,6 @@ DefineFunction(
|
||||
'desc' => "The designated error type for this error. It only works with the E_USER family of constants, and will default to E_USER_NOTICE.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -320,7 +306,6 @@ DefineFunction(
|
||||
'value' => "k_E_USER_NOTICE",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -93,54 +93,6 @@ DefineConstant(
|
||||
'type' => Int64,
|
||||
));
|
||||
|
||||
DefineConstant(
|
||||
array(
|
||||
'name' => "TAINT_NONE",
|
||||
'type' => Int64,
|
||||
));
|
||||
|
||||
DefineConstant(
|
||||
array(
|
||||
'name' => "TAINT_HTML",
|
||||
'type' => Int64,
|
||||
));
|
||||
|
||||
DefineConstant(
|
||||
array(
|
||||
'name' => "TAINT_MUTATED",
|
||||
'type' => Int64,
|
||||
));
|
||||
|
||||
DefineConstant(
|
||||
array(
|
||||
'name' => "TAINT_SQL",
|
||||
'type' => Int64,
|
||||
));
|
||||
|
||||
DefineConstant(
|
||||
array(
|
||||
'name' => "TAINT_SHELL",
|
||||
'type' => Int64,
|
||||
));
|
||||
|
||||
DefineConstant(
|
||||
array(
|
||||
'name' => "TAINT_TRACE_HTML",
|
||||
'type' => Int64,
|
||||
));
|
||||
|
||||
DefineConstant(
|
||||
array(
|
||||
'name' => "TAINT_ALL",
|
||||
'type' => Int64,
|
||||
));
|
||||
|
||||
DefineConstant(
|
||||
array(
|
||||
'name' => "TAINT_TRACE_SELF",
|
||||
'type' => Int64,
|
||||
));
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Functions
|
||||
@@ -162,7 +114,6 @@ DefineConstant(
|
||||
// 'value' => default value of the argument
|
||||
// 'desc' => description of the argument
|
||||
// )
|
||||
// 'taint_observer' => taint propagation information
|
||||
// array (
|
||||
// 'set_mask' => which bits to set automatically
|
||||
// 'clear_mask' => which bits to clear automatically
|
||||
@@ -185,10 +136,6 @@ DefineFunction(
|
||||
'desc' => "What to serialize. Note that objects are not supported.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -218,10 +165,6 @@ DefineFunction(
|
||||
'desc' => "One of those FB_UNSERIALIZE_ constants to describe what the decoding error was, if it failed.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -240,10 +183,6 @@ DefineFunction(
|
||||
'desc' => "What to serialize. Note that objects are not supported.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -273,10 +212,6 @@ DefineFunction(
|
||||
'desc' => "One of those FB_UNSERIALIZE_ constants to describe what the decoding error was, if it failed.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -295,10 +230,6 @@ DefineFunction(
|
||||
'desc' => "What to serialize. Note that objects are not supported.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -328,10 +259,6 @@ DefineFunction(
|
||||
'desc' => "One of those FB_UNSERIALIZE_ constants to describe what the decoding error was, if it failed.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -350,8 +277,6 @@ DefineFunction(
|
||||
'desc' => "The file to test"
|
||||
)
|
||||
),
|
||||
'taint_observer' => array(
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -381,8 +306,6 @@ DefineFunction(
|
||||
'desc' => "Extra data to pass to the handler when intercepting",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -421,8 +344,6 @@ DefineFunction(
|
||||
'desc' => "Will always set to TRUE.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -461,8 +382,6 @@ DefineFunction(
|
||||
'desc' => "Will always set to TRUE.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -480,8 +399,6 @@ DefineFunction(
|
||||
'desc' => "The functions that can be renamed.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -505,8 +422,6 @@ DefineFunction(
|
||||
'desc' => "What is the new name.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -530,7 +445,6 @@ DefineFunction(
|
||||
'desc' => "Root to be prepended to all paths in the map.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -549,10 +463,6 @@ DefineFunction(
|
||||
'desc' => "What string to sanitize.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -571,7 +481,6 @@ DefineFunction(
|
||||
'desc' => "The string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -590,7 +499,6 @@ DefineFunction(
|
||||
'desc' => "The string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -620,10 +528,6 @@ DefineFunction(
|
||||
'desc' => "If length is given and is positive, the return value will contain at most length characters of the portion that begins at start (depending on the length of string).\n\nIf negative length is passed, fb_utf8_substr() cuts the portion out of str from the start'th character up to the character that is length characters away from the end of the string. In case start is also negative, the start position is calculated beforehand according to the rule explained above.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -642,8 +546,6 @@ DefineFunction(
|
||||
'desc' => "The callback to invoke.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -667,8 +569,6 @@ DefineFunction(
|
||||
'desc' => "Value returned when function does not exist.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -692,8 +592,6 @@ DefineFunction(
|
||||
'desc' => "The function parameters to invoke with.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -711,8 +609,6 @@ DefineFunction(
|
||||
'desc' => "Whether to clear data after this function call.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -723,8 +619,6 @@ DefineFunction(
|
||||
'return' => array(
|
||||
'type' => null,
|
||||
),
|
||||
'taint_observer' => array(
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -735,8 +629,6 @@ DefineFunction(
|
||||
'return' => array(
|
||||
'type' => Variant,
|
||||
),
|
||||
'taint_observer' => array(
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -761,8 +653,6 @@ DefineFunction(
|
||||
'desc' => "Extra argument to reserve for future use.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -774,8 +664,6 @@ DefineFunction(
|
||||
'type' => Variant,
|
||||
'desc' => "Profile result.",
|
||||
),
|
||||
'taint_observer' => array(
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -786,8 +674,6 @@ DefineFunction(
|
||||
'return' => array(
|
||||
'type' => null,
|
||||
),
|
||||
'taint_observer' => array(
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -799,8 +685,6 @@ DefineFunction(
|
||||
'type' => Variant,
|
||||
'desc' => "Profile result.",
|
||||
),
|
||||
'taint_observer' => array(
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -818,8 +702,6 @@ DefineFunction(
|
||||
'desc' => "The \"virtual\" function's name.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -830,8 +712,6 @@ DefineFunction(
|
||||
'return' => array(
|
||||
'type' => null,
|
||||
),
|
||||
'taint_observer' => array(
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -855,8 +735,6 @@ DefineFunction(
|
||||
'desc' => "One of those XHPROF_FLAGS_ constant to specify what to profile.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -867,8 +745,6 @@ DefineFunction(
|
||||
'return' => array(
|
||||
'type' => null,
|
||||
),
|
||||
'taint_observer' => array(
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -879,8 +755,6 @@ DefineFunction(
|
||||
'return' => array(
|
||||
'type' => Variant,
|
||||
),
|
||||
'taint_observer' => array(
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -898,8 +772,6 @@ DefineFunction(
|
||||
'desc' => "The map to load. The format is array(\$id1 => array('ip' => {ip address}, 'db' => {database name}, 'port' => {port number}, 'username' => {user name for login}, 'password' => {password for login}), \$id2 => ...), where \$id1 and \$ids2 are arbitrary 32-bit integers that fb_crossall_query() can use to refer to the physical databases.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -954,8 +826,6 @@ DefineFunction(
|
||||
'desc' => "Whether connect_timeout or read_timeout are in seconds or milli-seconds.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1004,106 +874,6 @@ DefineFunction(
|
||||
'desc' => "Whether connect_timeout or read_timeout are in seconds or milli-seconds.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
array(
|
||||
'name' => "fb_set_taint",
|
||||
'desc' => "Taints a string with a flag or a bit. This bit is contagious in string operations, being carried over to new strings that are copied or composed from this string. This may be used for checking dirty or clean status of end user's input for different purposes.",
|
||||
'flags' => HasDocComment | HipHopSpecific,
|
||||
'return' => array(
|
||||
'type' => null,
|
||||
),
|
||||
'args' => array(
|
||||
array(
|
||||
'name' => "str",
|
||||
'type' => Variant | Reference,
|
||||
'desc' => "The string to taint.",
|
||||
),
|
||||
array(
|
||||
'name' => "taint",
|
||||
'type' => Int32,
|
||||
'desc' => "The bit to flag.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
array(
|
||||
'name' => "fb_unset_taint",
|
||||
'desc' => "Untaints a string by clearing off the bit that was set or carried over.",
|
||||
'flags' => HasDocComment | HipHopSpecific,
|
||||
'return' => array(
|
||||
'type' => null,
|
||||
),
|
||||
'args' => array(
|
||||
array(
|
||||
'name' => "str",
|
||||
'type' => Variant | Reference,
|
||||
'desc' => "The string to untaint.",
|
||||
),
|
||||
array(
|
||||
'name' => "taint",
|
||||
'type' => Int32,
|
||||
'desc' => "The bit to clear.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
array(
|
||||
'name' => "fb_get_taint",
|
||||
'desc' => "Checks to see if a bit is set.",
|
||||
'flags' => HasDocComment | HipHopSpecific,
|
||||
'return' => array(
|
||||
'type' => Boolean,
|
||||
'desc' => "Whether the taint was set.",
|
||||
),
|
||||
'args' => array(
|
||||
array(
|
||||
'name' => "str",
|
||||
'type' => String,
|
||||
'desc' => "The string to check.",
|
||||
),
|
||||
array(
|
||||
'name' => "taint",
|
||||
'type' => Int32,
|
||||
'desc' => "The bit to check against.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
array(
|
||||
'name' => "fb_get_taint_warning_counts",
|
||||
'desc' => "Get counts of various suppressed taint warnings.",
|
||||
'flags' => HasDocComment | HipHopSpecific,
|
||||
'return' => array(
|
||||
'type' => Int64Vec,
|
||||
'desc' => "The array of warning counts.",
|
||||
),
|
||||
'taint_observer' => array(
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
array(
|
||||
'name' => "fb_enable_html_taint_trace",
|
||||
'desc' => "Enable an optional tracing feature.",
|
||||
'flags' => HasDocComment | HipHopSpecific,
|
||||
'return' => array(
|
||||
'type' => null,
|
||||
),
|
||||
'taint_observer' => array(
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1122,8 +892,6 @@ DefineFunction(
|
||||
'desc' => "The key for locating the value.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1142,8 +910,6 @@ DefineFunction(
|
||||
'desc' => "The new value for the compression state.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1161,8 +927,6 @@ DefineFunction(
|
||||
'desc' => "The callback to invoke. An exception object will be passed to the function",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1174,8 +938,6 @@ DefineFunction(
|
||||
'type' => VariantMap,
|
||||
'desc' => "Query result in a format of array('total' => {number of total bytes to flush}, 'sent' => {number of bytes sent out}, 'time' => {time for flushing in us}).",
|
||||
),
|
||||
'taint_observer' => array(
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1187,8 +949,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
'desc' => "Total number of bytes flushed since last flush",
|
||||
),
|
||||
'taint_observer' => array(
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1261,7 +1021,6 @@ DefineFunction(
|
||||
'desc' => "Profiler function to call or null to disable",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
|
||||
@@ -59,7 +59,6 @@ DefineFunction(
|
||||
'type' => VariantMap,
|
||||
'desc' => "Returns an multidimensional array containing a list of all defined functions, both built-in (internal) and user-defined. The internal functions will be accessible via \$arr[\"internal\"], and the user defined ones using \$arr[\"user\"] (see example below).",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -84,7 +83,6 @@ DefineFunction(
|
||||
'desc' => "Whether to try to autoload.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -115,7 +113,6 @@ DefineFunction(
|
||||
'desc' => "Receives the \"callable name\". In the example below it is \"someClass::someMethod\". Note, however, that despite the implication that someClass::SomeMethod() is a callable static method, this is not the case.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -139,7 +136,6 @@ DefineFunction(
|
||||
'desc' => "The parameters to be passed to the function, as an indexed array.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -158,7 +154,6 @@ DefineFunction(
|
||||
'desc' => "The function to be called. Class methods may also be invoked statically using this function by passing array(\$classname, \$methodname) to this parameter. Additionally class methods of an object instance may be called by passing array(\$objectinstance, \$methodname) to this parameter.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -182,7 +177,6 @@ DefineFunction(
|
||||
'desc' => "Parameters, same as in call_user_func_array().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -201,7 +195,6 @@ DefineFunction(
|
||||
'desc' => "The function to be called, same as in call_user_func_array().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -226,7 +219,6 @@ DefineFunction(
|
||||
'desc' => "In milli-seconds. -1 to return job status immediately without blocking; positive numbers for blocking until some of the specified jobs are done; 0 for infinite waiting until some of the specified jobs are done.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -257,7 +249,6 @@ DefineFunction(
|
||||
'desc' => "Extra strategy for individual variables. Please read documentation for more details.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -276,7 +267,6 @@ DefineFunction(
|
||||
'desc' => "Serialized callback and parameters.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -320,7 +310,6 @@ DefineFunction(
|
||||
'desc' => "Parameters, same as in call_user_func_array().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -359,7 +348,6 @@ DefineFunction(
|
||||
'desc' => "The function to be called, same as in call_user_func_array().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -383,7 +371,6 @@ DefineFunction(
|
||||
'desc' => "One parameter, gathering all the method parameter in one array.\n\nNote that the parameters for forward_static_call_array() are not passed by reference.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -402,7 +389,6 @@ DefineFunction(
|
||||
'desc' => "The function or method to be called. This parameter may be an array, with the name of the class, and the method, or a string, with a function name.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -414,7 +400,6 @@ DefineFunction(
|
||||
'type' => Variant,
|
||||
'desc' => "Returns the class name. Returns FALSE if called from outside a class.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -438,7 +423,6 @@ DefineFunction(
|
||||
'desc' => "The function code.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -457,7 +441,6 @@ DefineFunction(
|
||||
'desc' => "The argument offset. Function arguments are counted starting from zero.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -470,7 +453,6 @@ DefineFunction(
|
||||
'desc' => "Returns an array in which each element is a copy of the corresponding member of the current user-defined function's argument list.",
|
||||
'predicted_type' => VariantVec,
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -482,7 +464,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
'desc' => "Returns the number of arguments passed into the current user-defined function.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -500,7 +481,6 @@ DefineFunction(
|
||||
'desc' => "The callback to register.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -519,7 +499,6 @@ DefineFunction(
|
||||
'desc' => "The shutdown function to register.\n\nThe shutdown functions are called as the part of the request so that it's possible to send the output from them. There is currently no way to process the data with output buffering functions in the shutdown function.\n\nShutdown functions are called after closing all opened output buffers thus, for example, its output will not be compressed if zlib.output_compression is enabled.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -537,7 +516,6 @@ DefineFunction(
|
||||
'desc' => "The callback to register.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -555,7 +533,6 @@ DefineFunction(
|
||||
'desc' => "The function name as a string, or an array consisting of an object and a method.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -573,7 +550,6 @@ DefineFunction(
|
||||
'desc' => "The function name, as a string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -75,10 +75,6 @@ DefineFunction(
|
||||
'desc' => "When set to TRUE, outputs raw binary data. FALSE outputs lowercase hexits.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -89,7 +85,6 @@ DefineFunction(
|
||||
'type' => StringVec,
|
||||
'desc' => "Returns a numerically indexed array containing the list of supported hashing algorithms.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -119,7 +114,6 @@ DefineFunction(
|
||||
'desc' => "When HASH_HMAC is specified for options, a shared secret key to be used with the HMAC hashing method must be supplied in this parameter.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -148,10 +142,6 @@ DefineFunction(
|
||||
'desc' => "When set to TRUE, outputs raw binary data. FALSE outputs lowercase hexits.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -175,10 +165,6 @@ DefineFunction(
|
||||
'desc' => "When set to TRUE, outputs raw binary data. FALSE outputs lowercase hexits.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -212,10 +198,6 @@ DefineFunction(
|
||||
'desc' => "When set to TRUE, outputs raw binary data. FALSE outputs lowercase hexits.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -249,10 +231,6 @@ DefineFunction(
|
||||
'desc' => "When set to TRUE, outputs raw binary data. FALSE outputs lowercase hexits.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -281,7 +259,6 @@ DefineFunction(
|
||||
'desc' => "Stream context as returned by stream_context_create().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -310,7 +287,6 @@ DefineFunction(
|
||||
'desc' => "Maximum number of characters to copy from handle into the hashing context.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -333,7 +309,6 @@ DefineFunction(
|
||||
'desc' => "Message to be included in the hash digest.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
|
||||
@@ -362,7 +337,6 @@ DefineFunction(
|
||||
'desc' => "The number of buckets",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -375,7 +349,6 @@ DefineFunction(
|
||||
),
|
||||
'args' => array(
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -403,7 +376,6 @@ DefineFunction(
|
||||
'desc' => "The seed to use for hashing",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -76,10 +76,6 @@ DefineFunction(
|
||||
'desc' => "You can control the behaviour of iconv_mime_encode() by specifying an associative array that contains configuration items to the optional third parameter preferences. The items supported by iconv_mime_encode() are listed below. Note that item names are treated case-sensitive. Configuration items supported by iconv_mime_encode() Item Type Description Default value Example scheme string Specifies the method to encode a field value by. The value of this item may be either \"B\" or \"Q\", where \"B\" stands for base64 encoding scheme and \"Q\" stands for quoted-printable encoding scheme. B B input-charset string Specifies the character set in which the first parameter field_name and the second parameter field_value are presented. If not given, iconv_mime_encode() assumes those parameters are presented to it in the iconv.internal_encoding ini setting. iconv.internal_encoding ISO-8859-1 output-charset string Specifies the character set to use to compose the MIME header. If not given, the same value as input-charset will be used. iconv.internal_encoding UTF-8 line-length integer Specifies the maximum length of the header lines. The resulting header is \"folded\" to a set of multiple lines in case the resulting header field would be longer than the value of this parameter, according to » RFC2822 - Internet Message Format. If not given, the length will be limited to 76 characters. 76 996 line-break-chars string Specifies the sequence of characters to append to each line as an end-of-line sign when \"folding\" is performed on a long header field. If not given, this defaults to \"\\r\\n\" (CR LF). Note that this parameter is always treated as an ASCII string regardless of the value of input-charset. \\r\\n \\n",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -110,10 +106,6 @@ DefineFunction(
|
||||
'desc' => "The optional charset parameter specifies the character set to represent the result by. If omitted, iconv.internal_encoding will be used.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -144,8 +136,6 @@ DefineFunction(
|
||||
'desc' => "The optional charset parameter specifies the character set to represent the result by. If omitted, iconv.internal_encoding will be used.",
|
||||
),
|
||||
),
|
||||
// NB: TaintObserver declared in f_iconv_mime_decode_headers
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -165,7 +155,6 @@ DefineFunction(
|
||||
'desc' => "The value of the optional type can be: all input_encoding output_encoding internal_encoding",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -189,7 +178,6 @@ DefineFunction(
|
||||
'desc' => "The character set.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -218,10 +206,6 @@ DefineFunction(
|
||||
'desc' => "The string to be converted.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -246,7 +230,6 @@ DefineFunction(
|
||||
'desc' => "If charset parameter is omitted, str is assumed to be encoded in iconv.internal_encoding.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -282,7 +265,6 @@ DefineFunction(
|
||||
'desc' => "If charset parameter is omitted, string are assumed to be encoded in iconv.internal_encoding.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -312,7 +294,6 @@ DefineFunction(
|
||||
'desc' => "If charset parameter is omitted, string are assumed to be encoded in iconv.internal_encoding.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -348,10 +329,6 @@ DefineFunction(
|
||||
'desc' => "If charset parameter is omitted, string are assumed to be encoded in iconv.internal_encoding.\n\nNote that offset and length parameters are always deemed to represent offsets that are calculated on the basis of the character set determined by charset, whilst the counterpart substr() always takes these for byte offsets.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -373,10 +350,6 @@ DefineFunction(
|
||||
'type' => Int32,
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -144,10 +144,6 @@ DefineFunction(
|
||||
'type' => Boolean,
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
|
||||
@@ -163,8 +159,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
// NB: TaintObserver declared in f_icu_tokenize to avoid tainting _B_, _E_
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -56,11 +56,6 @@ CPP
|
||||
// 'value' => default value of the argument
|
||||
// 'desc' => description of the argument
|
||||
// )
|
||||
// 'taint_observer' => taint propagation information
|
||||
// array (
|
||||
// 'set_mask' => which bits to set automatically
|
||||
// 'clear_mask' => which bits to clear automatically
|
||||
// )
|
||||
// )
|
||||
|
||||
|
||||
|
||||
@@ -56,11 +56,6 @@ CPP
|
||||
// 'value' => default value of the argument
|
||||
// 'desc' => description of the argument
|
||||
// )
|
||||
// 'taint_observer' => taint propagation information
|
||||
// array (
|
||||
// 'set_mask' => which bits to set automatically
|
||||
// 'clear_mask' => which bits to clear automatically
|
||||
// )
|
||||
// )
|
||||
|
||||
|
||||
|
||||
@@ -57,7 +57,6 @@ DefineFunction(
|
||||
'return' => array(
|
||||
'type' => VariantMap,
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -81,7 +80,6 @@ DefineFunction(
|
||||
'desc' => "This optional parameter allows you to extract some extended information from the image file. Currently, this will return the different JPG APP markers as an associative array. Some programs use these APP markers to embed text information in images. A very common one is to embed » IPTC information in the APP13 marker. You can use the iptcparse() function to parse the binary APP13 marker into something readable.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -106,7 +104,6 @@ DefineFunction(
|
||||
'desc' => "Whether to prepend a dot to the extension or not. Default to TRUE.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -125,7 +122,6 @@ DefineFunction(
|
||||
'desc' => "One of the IMAGETYPE_XXX constants.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -156,7 +152,6 @@ DefineFunction(
|
||||
'desc' => "Threshold value, between 0 and 255 (inclusive).",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -180,7 +175,6 @@ DefineFunction(
|
||||
'desc' => "Whether to enable the blending mode or not. On true color images the default value is TRUE otherwise the default value is FALSE",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -204,7 +198,6 @@ DefineFunction(
|
||||
'desc' => "Whether to enable antialiasing or not.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -258,7 +251,6 @@ DefineFunction(
|
||||
'desc' => "A color identifier created with imagecolorallocate().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -302,7 +294,6 @@ DefineFunction(
|
||||
'desc' => "A color identifier created with imagecolorallocate().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -346,7 +337,6 @@ DefineFunction(
|
||||
'desc' => "A color identifier created with imagecolorallocate().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -380,7 +370,6 @@ DefineFunction(
|
||||
'desc' => "Value of blue component.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -419,7 +408,6 @@ DefineFunction(
|
||||
'desc' => "A value between 0 and 127. 0 indicates completely opaque while 127 indicates completely transparent.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -448,7 +436,6 @@ DefineFunction(
|
||||
'desc' => "y-coordinate of the point.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -482,7 +469,6 @@ DefineFunction(
|
||||
'desc' => "Value of blue component.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -521,7 +507,6 @@ DefineFunction(
|
||||
'desc' => "A value between 0 and 127. 0 indicates completely opaque while 127 indicates completely transparent.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -555,7 +540,6 @@ DefineFunction(
|
||||
'desc' => "Value of blue component.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -579,7 +563,6 @@ DefineFunction(
|
||||
'desc' => "The color identifier.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -613,7 +596,6 @@ DefineFunction(
|
||||
'desc' => "Value of blue component.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -652,7 +634,6 @@ DefineFunction(
|
||||
'desc' => "A value between 0 and 127. 0 indicates completely opaque while 127 indicates completely transparent.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -676,7 +657,6 @@ DefineFunction(
|
||||
'desc' => "A palette image link resource pointing to an image that has the same size as image1.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -710,7 +690,6 @@ DefineFunction(
|
||||
'desc' => "Value of blue component.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -749,7 +728,6 @@ DefineFunction(
|
||||
'desc' => "A value between 0 and 127. 0 indicates completely opaque while 127 indicates completely transparent.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -788,7 +766,6 @@ DefineFunction(
|
||||
'desc' => "Value of blue component.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -812,7 +789,6 @@ DefineFunction(
|
||||
'desc' => "The color index.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -831,7 +807,6 @@ DefineFunction(
|
||||
'desc' => "An image resource, returned by one of the image creation functions, such as imagecreatefromgif().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -856,7 +831,6 @@ DefineFunction(
|
||||
'desc' => "A color identifier created with imagecolorallocate().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -890,7 +864,6 @@ DefineFunction(
|
||||
'desc' => "Color offset.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -944,7 +917,6 @@ DefineFunction(
|
||||
'desc' => "Source height.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1003,7 +975,6 @@ DefineFunction(
|
||||
'desc' => "The two images will be merged according to pct which can range from 0 to 100. When pct = 0, no action is taken, when 100 this function behaves identically to imagecopy() for pallete images, while it implements alpha transparency for true colour images.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1062,7 +1033,6 @@ DefineFunction(
|
||||
'desc' => "The src_im will be changed to grayscale according to pct where 0 is fully grayscale and 100 is unchanged. When pct = 100 this function behaves identically to imagecopy() for pallete images, while it implements alpha transparency for true colour images.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1126,7 +1096,6 @@ DefineFunction(
|
||||
'desc' => "Source height.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1190,7 +1159,6 @@ DefineFunction(
|
||||
'desc' => "Source height.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1214,7 +1182,6 @@ DefineFunction(
|
||||
'desc' => "The image height.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1253,7 +1220,6 @@ DefineFunction(
|
||||
'desc' => "Source height.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1272,7 +1238,6 @@ DefineFunction(
|
||||
'desc' => "Path to the GD file.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1291,7 +1256,6 @@ DefineFunction(
|
||||
'desc' => "Path to the GD2 image.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1310,7 +1274,6 @@ DefineFunction(
|
||||
'desc' => "Path to the GIF image.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1329,7 +1292,6 @@ DefineFunction(
|
||||
'desc' => "Path to the JPEG image.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1348,7 +1310,6 @@ DefineFunction(
|
||||
'desc' => "Path to the PNG image.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1367,7 +1328,6 @@ DefineFunction(
|
||||
'desc' => "A string containing the image data.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1386,7 +1346,6 @@ DefineFunction(
|
||||
'desc' => "Path to the WBMP image.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1405,7 +1364,6 @@ DefineFunction(
|
||||
'desc' => "Path to the XBM image.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1424,7 +1382,6 @@ DefineFunction(
|
||||
'desc' => "Path to the XPM image.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1448,7 +1405,6 @@ DefineFunction(
|
||||
'desc' => "Image height.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1492,7 +1448,6 @@ DefineFunction(
|
||||
'desc' => "The fill color. A color identifier created with imagecolorallocate().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1511,7 +1466,6 @@ DefineFunction(
|
||||
'desc' => "An image resource, returned by one of the image creation functions, such as imagecreatetruecolor().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1555,7 +1509,6 @@ DefineFunction(
|
||||
'desc' => "The color of the ellipse. A color identifier created with imagecolorallocate().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1589,7 +1542,6 @@ DefineFunction(
|
||||
'desc' => "The fill color. A color identifier created with imagecolorallocate().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1648,7 +1600,6 @@ DefineFunction(
|
||||
'desc' => "A bitwise OR of the following possibilities: IMG_ARC_PIE IMG_ARC_CHORD IMG_ARC_NOFILL IMG_ARC_EDGED IMG_ARC_PIE and IMG_ARC_CHORD are mutually exclusive; IMG_ARC_CHORD just connects the starting and ending angles with a straight line, while IMG_ARC_PIE produces a rounded edge. IMG_ARC_NOFILL indicates that the arc or chord should be outlined, not filled. IMG_ARC_EDGED, used together with IMG_ARC_NOFILL, indicates that the beginning and ending angles should be connected to the center - this is a good way to outline (rather than fill) a 'pie slice'.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1692,7 +1643,6 @@ DefineFunction(
|
||||
'desc' => "The fill color. A color identifier created with imagecolorallocate().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1726,7 +1676,6 @@ DefineFunction(
|
||||
'desc' => "A color identifier created with imagecolorallocate().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1770,7 +1719,6 @@ DefineFunction(
|
||||
'desc' => "The fill color. A color identifier created with imagecolorallocate().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1809,7 +1757,6 @@ DefineFunction(
|
||||
'desc' => "The fill color. A color identifier created with imagecolorallocate().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1857,7 +1804,6 @@ DefineFunction(
|
||||
'desc' => "IMG_FILTER_COLORIZE: Alpha channel, A value between 0 and 127. 0 indicates completely opaque while 127 indicates completely transparent.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1876,7 +1822,6 @@ DefineFunction(
|
||||
'desc' => "Can be 1, 2, 3, 4, 5 for built-in fonts in latin2 encoding (where higher numbers corresponding to larger fonts) or any of your own font identifiers registered with imageloadfont().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1895,7 +1840,6 @@ DefineFunction(
|
||||
'desc' => "Can be 1, 2, 3, 4, 5 for built-in fonts in latin2 encoding (where higher numbers corresponding to larger fonts) or any of your own font identifiers registered with imageloadfont().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1935,7 +1879,6 @@ DefineFunction(
|
||||
'desc' => "Possible array indexes for extrainfo Key Type Meaning linespacing float Defines drawing linespacing",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1994,7 +1937,6 @@ DefineFunction(
|
||||
'desc' => "Possible array indexes for extrainfo Key Type Meaning linespacing float Defines drawing linespacing",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2023,7 +1965,6 @@ DefineFunction(
|
||||
'desc' => "The output gamma.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2060,7 +2001,6 @@ DefineFunction(
|
||||
'desc' => "Either IMG_GD2_RAW or IMG_GD2_COMPRESSED. Default is IMG_GD2_RAW.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2085,7 +2025,6 @@ DefineFunction(
|
||||
'desc' => "The path to save the file to. If not set or NULL, the raw image stream will be outputted directly.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2110,7 +2049,6 @@ DefineFunction(
|
||||
'desc' => "The path to save the file to. If not set or NULL, the raw image stream will be outputted directly.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2122,7 +2060,6 @@ DefineFunction(
|
||||
'type' => Variant,
|
||||
'desc' => "Returns an image resource identifier on success, FALSE on failure.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2147,7 +2084,6 @@ DefineFunction(
|
||||
'desc' => "Include the client area of the application window.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2172,7 +2108,6 @@ DefineFunction(
|
||||
'desc' => "If non-zero, the image will be interlaced, else the interlace bit is turned off.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2191,7 +2126,6 @@ DefineFunction(
|
||||
'desc' => "An image resource, returned by one of the image creation functions, such as imagecreatetruecolor().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2222,7 +2156,6 @@ DefineFunction(
|
||||
'desc' => "quality is optional, and ranges from 0 (worst quality, smaller file) to 100 (best quality, biggest file). The default is the default IJG quality value (about 75).",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2246,7 +2179,6 @@ DefineFunction(
|
||||
'desc' => "One of the following constants: IMG_EFFECT_REPLACE Use pixel replacement (equivalent of passing TRUE to imagealphablending())",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2290,7 +2222,6 @@ DefineFunction(
|
||||
'desc' => "The line color. A color identifier created with imagecolorallocate().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2309,7 +2240,6 @@ DefineFunction(
|
||||
'desc' => "The font file format is currently binary and architecture dependent. This means you should generate the font files on the same type of CPU as the machine you are running PHP on.\n\nFont file format byte position C data type description byte 0-3 int number of characters in the font byte 4-7 int value of first character in the font (often 32 for space) byte 8-11 int pixel width of each character byte 12-15 int pixel height of each character byte 16- char array with character data, one byte per pixel in each character, for a total of (nchars*width*height) bytes.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2333,7 +2263,6 @@ DefineFunction(
|
||||
'desc' => "The source image resource.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2370,7 +2299,6 @@ DefineFunction(
|
||||
'desc' => "Allows reducing the PNG file size. It is a bitmask field which may be set to any combination of the PNG_FILTER_XXX constants. PNG_NO_FILTER or PNG_ALL_FILTERS may also be used to respectively disable or activate all filters.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2404,7 +2332,6 @@ DefineFunction(
|
||||
'desc' => "A color identifier created with imagecolorallocate().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2451,7 +2378,6 @@ DefineFunction(
|
||||
'desc' => "angle is in degrees.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2475,7 +2401,6 @@ DefineFunction(
|
||||
'desc' => "The exact format of this file is described in T1libs documentation. T1lib comes with two ready-to-use files, IsoLatin1.enc and IsoLatin2.enc.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2499,7 +2424,6 @@ DefineFunction(
|
||||
'desc' => "Extension value, must be greater than 0.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2518,7 +2442,6 @@ DefineFunction(
|
||||
'desc' => "A font resource, returned by imagepsloadfont().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2537,7 +2460,6 @@ DefineFunction(
|
||||
'desc' => "Path to the Postscript font file.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2561,7 +2483,6 @@ DefineFunction(
|
||||
'desc' => "Slant level.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2639,7 +2560,6 @@ DefineFunction(
|
||||
'desc' => "Allows you to control the number of colours used for antialiasing text. Allowed values are 4 and 16. The higher value is recommended for text sizes lower than 20, where the effect in text quality is quite visible. With bigger sizes, use 4. It's less computationally intensive.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2683,7 +2603,6 @@ DefineFunction(
|
||||
'desc' => "A color identifier created with imagecolorallocate().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2718,7 +2637,6 @@ DefineFunction(
|
||||
'desc' => "If set and non-zero, transparent colors are ignored (otherwise kept).",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2742,7 +2660,6 @@ DefineFunction(
|
||||
'desc' => "Whether to save the alpha channel or not. Default to FALSE.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2766,7 +2683,6 @@ DefineFunction(
|
||||
'desc' => "An image resource.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2800,7 +2716,6 @@ DefineFunction(
|
||||
'desc' => "A color identifier created with imagecolorallocate().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2824,7 +2739,6 @@ DefineFunction(
|
||||
'desc' => "An array of pixel colors. You can use the IMG_COLOR_TRANSPARENT constant to add a transparent pixel.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2848,7 +2762,6 @@ DefineFunction(
|
||||
'desc' => "Thickness, in pixels.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2872,7 +2785,6 @@ DefineFunction(
|
||||
'desc' => "The image resource to be used as a tile.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2916,7 +2828,6 @@ DefineFunction(
|
||||
'desc' => "A color identifier created with imagecolorallocate().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2960,7 +2871,6 @@ DefineFunction(
|
||||
'desc' => "A color identifier created with imagecolorallocate().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2979,7 +2889,6 @@ DefineFunction(
|
||||
'desc' => "An image resource, returned by one of the image creation functions, such as imagecreatetruecolor().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2998,7 +2907,6 @@ DefineFunction(
|
||||
'desc' => "An image resource, returned by one of the image creation functions, such as imagecreatetruecolor().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -3027,7 +2935,6 @@ DefineFunction(
|
||||
'desc' => "Sets the maximum number of colors that should be retained in the palette.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -3061,7 +2968,6 @@ DefineFunction(
|
||||
'desc' => "The string to be measured.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -3115,7 +3021,6 @@ DefineFunction(
|
||||
'desc' => "The text string in UTF-8 encoding.\n\nMay include decimal numeric character references (of the form: €) to access characters in a font beyond position 127. The hexadecimal format (like ©) is supported. Strings in UTF-8 encoding can be passed directly.\n\nNamed entities, such as ©, are not supported. Consider using html_entity_decode() to decode these named entities into UTF-8 strings (html_entity_decode() supports this as of PHP 5.0.0).\n\nIf a character is used in the string which is not supported by the font, a hollow rectangle will replace the character.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -3127,7 +3032,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
'desc' => "Returns a bit-field corresponding to the image formats supported by the version of GD linked into PHP. The following bits are returned, IMG_GIF | IMG_JPG | IMG_PNG | IMG_WBMP | IMG_XPM.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -3158,7 +3062,6 @@ DefineFunction(
|
||||
'desc' => "You can set the foreground color with this parameter by setting an identifier obtained from imagecolorallocate(). The default foreground color is black.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -3189,7 +3092,6 @@ DefineFunction(
|
||||
'desc' => "You can set the foreground color with this parameter by setting an identifier obtained from imagecolorallocate(). The default foreground color is black.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -3219,7 +3121,6 @@ DefineFunction(
|
||||
'desc' => "Spool flag. If the spool flag is over 2 then the JPEG will be returned as a string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -3238,7 +3139,6 @@ DefineFunction(
|
||||
'desc' => "A binary IPTC block.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -3277,7 +3177,6 @@ DefineFunction(
|
||||
'desc' => "Threshold value, between 0 and 8 (inclusive).",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -3316,7 +3215,6 @@ DefineFunction(
|
||||
'desc' => "Threshold value, between 0 and 8 (inclusive).",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -3335,7 +3233,6 @@ DefineFunction(
|
||||
'desc' => "The image being checked.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -3372,7 +3269,6 @@ DefineFunction(
|
||||
'desc' => "When set to TRUE the thumbnail itself is read. Otherwise, only the tagged data is read.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -3403,7 +3299,6 @@ DefineFunction(
|
||||
'value' => "false",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -3421,7 +3316,6 @@ DefineFunction(
|
||||
'desc' => "The image index",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -3458,7 +3352,6 @@ DefineFunction(
|
||||
'desc' => "The returned image type of the returned thumbnail. This is either TIFF or JPEG.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -62,7 +62,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
'desc' => "Error code returned by the last API function call.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -74,7 +73,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
'desc' => "Description of an error occurred in the last API function call.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -93,7 +91,6 @@ DefineFunction(
|
||||
'desc' => "ICU error code.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -111,7 +108,6 @@ DefineFunction(
|
||||
'desc' => "is a value that returned by functions: intl_get_error_code(), collator_get_error_code() .",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -140,7 +136,6 @@ DefineFunction(
|
||||
'desc' => "Optional sorting type, one of the following:\n\nCollator::SORT_REGULAR - compare items normally (don't change types)\n\nCollator::SORT_NUMERIC - compare items numerically\n\nCollator::SORT_STRING - compare items as strings\n\nDefault \$sort_flag value is Collator::SORT_REGULAR. It is also used if an invalid \$sort_flag value has been specified.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -169,7 +164,6 @@ DefineFunction(
|
||||
'desc' => "The second string to compare.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -188,7 +182,6 @@ DefineFunction(
|
||||
'desc' => "The locale containing the required collation rules. Special values for locales can be passed in - if null is passed for the locale, the default locale collation rules will be used. If empty string (\"\") or \"root\" are passed, UCA rules will be used.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -208,7 +201,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -224,7 +216,6 @@ DefineFunction(
|
||||
'type' => Variant,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -240,7 +231,6 @@ DefineFunction(
|
||||
'type' => Variant,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -261,7 +251,6 @@ DefineFunction(
|
||||
'value' => "0",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -277,7 +266,6 @@ DefineFunction(
|
||||
'type' => Variant,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -301,7 +289,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -321,7 +308,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -341,7 +327,6 @@ DefineFunction(
|
||||
'type' => Variant | Reference,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -371,7 +356,6 @@ DefineFunction(
|
||||
'desc' => "Optional sorting type, one of the following:\n\n\n\nCollator::SORT_REGULAR - compare items normally (don't change types)\n\nCollator::SORT_NUMERIC - compare items numerically\n\nCollator::SORT_STRING - compare items as strings Default sorting type is Collator::SORT_REGULAR.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -408,10 +392,6 @@ DefineFunction(
|
||||
'desc' => "This parameter can be used only if INTL_IDNA_VARIANT_UTS46 was used for variant. In that case, it will be filled with an array with the keys 'result', the possibly illegal result of the transformation, 'isTransitionalDifferent', a boolean indicating whether the usage of the transitional mechanisms of UTS #46 either has or would have changed the result and 'errors', which is an int representing a bitset of the error constants IDNA_ERROR_*. ",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -445,10 +425,6 @@ DefineFunction(
|
||||
'desc' => "This parameter can be used only if INTL_IDNA_VARIANT_UTS46 was used for variant. In that case, it will be filled with an array with the keys 'result', the possibly illegal result of the transformation, 'isTransitionalDifferent', a boolean indicating whether the usage of the transitional mechanisms of UTS #46 either has or would have changed the result and 'errors', which is an int representing a bitset of the error constants IDNA_ERROR_*. ",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -485,10 +461,6 @@ DefineFunction(
|
||||
'desc' => "This parameter can be used only if INTL_IDNA_VARIANT_UTS46 was used for variant. In that case, it will be filled with an array with the keys 'result', the possibly illegal result of the transformation, 'isTransitionalDifferent', a boolean indicating whether the usage of the transitional mechanisms of UTS #46 either has or would have changed the result and 'errors', which is an int representing a bitset of the error constants IDNA_ERROR_*. ",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -70,7 +70,6 @@ DefineFunction(
|
||||
'desc' => "Project identifier. This must be a one character string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -95,7 +94,6 @@ DefineFunction(
|
||||
'desc' => "Queue permissions. Default to 0666. If the message queue already exists, the perms will be ignored.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -114,7 +112,6 @@ DefineFunction(
|
||||
'desc' => "Queue key.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -157,10 +154,6 @@ DefineFunction(
|
||||
'value' => "null",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -216,10 +209,6 @@ DefineFunction(
|
||||
'desc' => "If the function fails, the optional errorcode will be set to the value of the system errno variable.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -238,7 +227,6 @@ DefineFunction(
|
||||
'desc' => "Message queue resource handle",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -262,7 +250,6 @@ DefineFunction(
|
||||
'desc' => "You specify the values you require by setting the value of the keys that you require in the data array.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -281,7 +268,6 @@ DefineFunction(
|
||||
'desc' => "Message queue resource handle",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -300,7 +286,6 @@ DefineFunction(
|
||||
'desc' => "sem_identifier is a semaphore resource, obtained from sem_get().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -336,7 +321,6 @@ DefineFunction(
|
||||
'desc' => "Specifies if the semaphore should be automatically released on request shutdown.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -355,7 +339,6 @@ DefineFunction(
|
||||
'desc' => "A Semaphore resource handle as returned by sem_get().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -374,7 +357,6 @@ DefineFunction(
|
||||
'desc' => "A semaphore resource identifier as returned by sem_get().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -405,7 +387,6 @@ DefineFunction(
|
||||
'desc' => "The optional permission bits. Default to 0666.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -424,7 +405,6 @@ DefineFunction(
|
||||
'desc' => "A shared memory resource handle as returned by shm_attach()",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -443,7 +423,6 @@ DefineFunction(
|
||||
'desc' => "The shared memory identifier as returned by shm_attach()",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -467,10 +446,6 @@ DefineFunction(
|
||||
'desc' => "The variable key.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -494,7 +469,6 @@ DefineFunction(
|
||||
'desc' => "The variable key.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -523,10 +497,6 @@ DefineFunction(
|
||||
'desc' => "The variable. All variable-types are supported.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -550,7 +520,6 @@ DefineFunction(
|
||||
'desc' => "The variable key.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -74,7 +74,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -90,7 +89,6 @@ DefineFunction(
|
||||
'type' => Resource,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -106,7 +104,6 @@ DefineFunction(
|
||||
'type' => Resource,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -122,7 +119,6 @@ DefineFunction(
|
||||
'type' => Resource,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -138,7 +134,6 @@ DefineFunction(
|
||||
'type' => Resource,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -154,7 +149,6 @@ DefineFunction(
|
||||
'type' => Resource,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -170,7 +164,6 @@ DefineFunction(
|
||||
'type' => Resource,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -190,7 +183,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -206,7 +198,6 @@ DefineFunction(
|
||||
'type' => Resource,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -222,7 +213,6 @@ DefineFunction(
|
||||
'type' => Resource,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -238,7 +228,6 @@ DefineFunction(
|
||||
'type' => Resource,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -258,7 +247,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -274,7 +262,6 @@ DefineFunction(
|
||||
'type' => Resource,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -290,7 +277,6 @@ DefineFunction(
|
||||
'type' => Resource,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -306,7 +292,6 @@ DefineFunction(
|
||||
'type' => Resource,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -322,7 +307,6 @@ DefineFunction(
|
||||
'type' => Resource,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -346,7 +330,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -362,7 +345,6 @@ DefineFunction(
|
||||
'type' => Resource,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -378,7 +360,6 @@ DefineFunction(
|
||||
'type' => Resource,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -394,7 +375,6 @@ DefineFunction(
|
||||
'type' => Resource,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -414,7 +394,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -430,7 +409,6 @@ DefineFunction(
|
||||
'type' => Resource,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -446,7 +424,6 @@ DefineFunction(
|
||||
'type' => Resource,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -462,7 +439,6 @@ DefineFunction(
|
||||
'type' => Resource,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -478,7 +454,6 @@ DefineFunction(
|
||||
'type' => Resource,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -494,7 +469,6 @@ DefineFunction(
|
||||
'type' => Resource,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -510,7 +484,6 @@ DefineFunction(
|
||||
'type' => Resource,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -526,7 +499,6 @@ DefineFunction(
|
||||
'type' => Resource,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -136,10 +136,6 @@ DefineFunction(
|
||||
'desc' => "Bitmask consisting of JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_FORCE_OBJECT.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -170,10 +166,6 @@ DefineFunction(
|
||||
'desc' => "User specified recursion depth.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
|
||||
|
||||
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
@@ -57,7 +57,6 @@ DefineFunction(
|
||||
'type' => Double,
|
||||
'desc' => "The value of pi as float.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -76,7 +75,6 @@ DefineFunction(
|
||||
'desc' => "An array containing the values.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -95,7 +93,6 @@ DefineFunction(
|
||||
'desc' => "An array containing the values.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -114,7 +111,6 @@ DefineFunction(
|
||||
'desc' => "The numeric value to process",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -133,7 +129,6 @@ DefineFunction(
|
||||
'desc' => "The value to check",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -152,7 +147,6 @@ DefineFunction(
|
||||
'desc' => "The value to check",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -171,7 +165,6 @@ DefineFunction(
|
||||
'desc' => "The value to check",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -189,7 +182,6 @@ DefineFunction(
|
||||
'desc' => "The value to round",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -207,7 +199,6 @@ DefineFunction(
|
||||
'desc' => "The numeric value to round",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineConstant(
|
||||
@@ -270,7 +261,6 @@ DefineFunction(
|
||||
'desc' => "One of the PHP_ROUND_HALF_* constants to determine how rounding should occur.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -289,7 +279,6 @@ DefineFunction(
|
||||
'desc' => "Angular value in degrees",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -308,7 +297,6 @@ DefineFunction(
|
||||
'desc' => "A radian value",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -327,10 +315,6 @@ DefineFunction(
|
||||
'desc' => "Decimal value to convert Range of inputs on 32-bit machines positive number negative number return value 0 0 1 1 2 10 ... normal progression ... 2147483646 1111111111111111111111111111110 2147483647 (largest signed integer) 1111111111111111111111111111111 (31 1's) 2147483648 -2147483648 10000000000000000000000000000000 ... normal progression ... 4294967294 -2 11111111111111111111111111111110 4294967295 (largest unsigned integer) -1 11111111111111111111111111111111 (32 1's) Range of inputs on 64-bit machines positive number negative number return value 0 0 1 1 2 10 ... normal progression ... 9223372036854775806 111111111111111111111111111111111111111111111111111111111111110 9223372036854775807 (largest signed integer) 111111111111111111111111111111111111111111111111111111111111111 (63 1's) -9223372036854775808 1000000000000000000000000000000000000000000000000000000000000000 ... normal progression ... -2 1111111111111111111111111111111111111111111111111111111111111110 -1 1111111111111111111111111111111111111111111111111111111111111111 (64 1's)",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -349,10 +333,6 @@ DefineFunction(
|
||||
'desc' => "Decimal value to convert",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -371,10 +351,6 @@ DefineFunction(
|
||||
'desc' => "Decimal value to convert",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -393,7 +369,6 @@ DefineFunction(
|
||||
'desc' => "The binary string to convert",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -412,7 +387,6 @@ DefineFunction(
|
||||
'desc' => "The hexadecimal string to convert",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -431,7 +405,6 @@ DefineFunction(
|
||||
'desc' => "The octal string to convert",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -460,10 +433,6 @@ DefineFunction(
|
||||
'desc' => "The base to convert number to",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -487,7 +456,6 @@ DefineFunction(
|
||||
'desc' => "The exponent",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -506,7 +474,6 @@ DefineFunction(
|
||||
'desc' => "The argument to process",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -525,7 +492,6 @@ DefineFunction(
|
||||
'desc' => "The argument to process",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -544,7 +510,6 @@ DefineFunction(
|
||||
'desc' => "The argument to process",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -563,7 +528,6 @@ DefineFunction(
|
||||
'desc' => "The argument to process",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -588,7 +552,6 @@ DefineFunction(
|
||||
'desc' => "The optional logarithmic base to use (defaults to 'e' and so to the natural logarithm).",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -607,7 +570,6 @@ DefineFunction(
|
||||
'desc' => "An angle in radians",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -626,7 +588,6 @@ DefineFunction(
|
||||
'desc' => "The argument to process",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -645,7 +606,6 @@ DefineFunction(
|
||||
'desc' => "A value in radians",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -664,7 +624,6 @@ DefineFunction(
|
||||
'desc' => "The argument to process",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -683,7 +642,6 @@ DefineFunction(
|
||||
'desc' => "The argument to process in radians",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -702,7 +660,6 @@ DefineFunction(
|
||||
'desc' => "The argument to process",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -721,7 +678,6 @@ DefineFunction(
|
||||
'desc' => "The argument to process",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -740,7 +696,6 @@ DefineFunction(
|
||||
'desc' => "The value to process",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -759,7 +714,6 @@ DefineFunction(
|
||||
'desc' => "The argument to process",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -778,7 +732,6 @@ DefineFunction(
|
||||
'desc' => "The argument to process",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -797,7 +750,6 @@ DefineFunction(
|
||||
'desc' => "The argument to process",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -816,7 +768,6 @@ DefineFunction(
|
||||
'desc' => "The argument to process",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -839,7 +790,6 @@ DefineFunction(
|
||||
'desc' => "Divisor parameter",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -863,7 +813,6 @@ DefineFunction(
|
||||
'desc' => "Length of second side",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -887,7 +836,6 @@ DefineFunction(
|
||||
'desc' => "The divisor",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -906,7 +854,6 @@ DefineFunction(
|
||||
'desc' => "The argument to process",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -917,7 +864,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
'desc' => "The largest possible random value returned by rand()",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -937,7 +883,6 @@ DefineFunction(
|
||||
'desc' => "Optional seed value",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -962,7 +907,6 @@ DefineFunction(
|
||||
'desc' => "The highest value to return (default: getrandmax())",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -973,7 +917,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
'desc' => "Returns the maximum random value returned by mt_rand()",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -993,7 +936,6 @@ DefineFunction(
|
||||
'desc' => "An optional seed value",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1018,7 +960,6 @@ DefineFunction(
|
||||
'desc' => "Optional highest value to be returned (default: mt_getrandmax())",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1030,7 +971,6 @@ DefineFunction(
|
||||
'type' => Double,
|
||||
'desc' => "A pseudo random float value in the range of (0, 1)",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -58,7 +58,6 @@ DefineFunction(
|
||||
'type' => StringVec,
|
||||
'desc' => "Returns a numerically indexed array.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -75,7 +74,6 @@ DefineFunction(
|
||||
'value' => "null_string",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -92,7 +90,6 @@ DefineFunction(
|
||||
'value' => "null_string",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -118,7 +115,6 @@ DefineFunction(
|
||||
'desc' => "The expected encoding.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -148,10 +144,6 @@ DefineFunction(
|
||||
'desc' => "encoding parameter is the character encoding. If it is omitted, the internal character encoding value will be used.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -181,7 +173,6 @@ DefineFunction(
|
||||
'desc' => "Is specified by character code names before conversion. It is either an array, or a comma separated enumerated list. If from_encoding is not specified, the internal encoding will be used.\n\n\"auto\" may be used, which expands to \"ASCII,JIS,UTF-8,EUC-JP,SJIS\".",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -212,10 +203,6 @@ DefineFunction(
|
||||
'desc' => "encoding parameter is the character encoding. If it is omitted, the internal character encoding value will be used.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -244,7 +231,6 @@ DefineFunction(
|
||||
'desc' => "vars is the reference to the variable being converted. String, Array and Object are accepted. mb_convert_variables() assumes all parameters have the same encoding.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -263,10 +249,6 @@ DefineFunction(
|
||||
'desc' => "The string being decoded.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -296,7 +278,6 @@ DefineFunction(
|
||||
'desc' => "encoding parameter is the character encoding. If it is omitted, the internal character encoding value will be used.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -327,7 +308,6 @@ DefineFunction(
|
||||
'desc' => "strict specifies whether to use the strict encoding detection or not. Default is FALSE.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -347,7 +327,6 @@ DefineFunction(
|
||||
'desc' => "encoding_list is an array or comma separated list of character encoding. (\"auto\" is expanded to \"ASCII, JIS, UTF-8, EUC-JP, SJIS\")\n\nIf encoding_list is omitted, it returns the current character encoding detection order as array.\n\nThis setting affects mb_detect_encoding() and mb_send_mail().\n\nmbstring currently implements the following encoding detection filters. If there is an invalid byte sequence for the following encodings, encoding detection will fail. UTF-8, UTF-7, ASCII, EUC-JP,SJIS, eucJP-win, SJIS-win, JIS, ISO-2022-JP\n\nFor ISO-8859-*, mbstring always detects as ISO-8859-*.\n\nFor UTF-16, UTF-32, UCS2 and UCS4, encoding detection will fail always.\n\nExample #1 Useless detect order example",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -390,10 +369,6 @@ DefineFunction(
|
||||
'desc' => "Indentation of the first line (number of characters in the header before str).",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -423,7 +398,6 @@ DefineFunction(
|
||||
'desc' => "encoding parameter is the character encoding. If it is omitted, the internal character encoding value will be used.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -452,7 +426,6 @@ DefineFunction(
|
||||
'value' => "null_string",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -486,10 +459,6 @@ DefineFunction(
|
||||
'desc' => "Matching condition can be set by option parameter. If i is specified for this parameter, the case will be ignored. If x is specified, white space will be ignored. If m is specified, match will be executed in multiline mode and line break will be included in '.'. If p is specified, match will be executed in POSIX mode, line break will be considered as normal character. If e is specified, replacement string will be evaluated as PHP expression.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -660,7 +629,6 @@ DefineFunction(
|
||||
'desc' => "Contains a substring of the matched string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -694,10 +662,6 @@ DefineFunction(
|
||||
'desc' => "option has the same meaning as in mb_ereg_replace().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -726,7 +690,6 @@ DefineFunction(
|
||||
'desc' => "Contains a substring of the matched string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -745,7 +708,6 @@ DefineFunction(
|
||||
'desc' => "If type isn't specified or is specified to \"all\", an array having the elements \"internal_encoding\", \"http_output\", \"http_input\", \"func_overload\", \"mail_charset\", \"mail_header_encoding\", \"mail_body_encoding\" will be returned.\n\nIf type is specified as \"http_output\", \"http_input\", \"internal_encoding\", \"func_overload\", the specified setting parameter will be returned.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -764,7 +726,6 @@ DefineFunction(
|
||||
'desc' => "Input string specifies the input type. \"G\" for GET, \"P\" for POST, \"C\" for COOKIE, \"S\" for string, \"L\" for list, and \"I\" for the whole list (will return array). If type is omitted, it returns the last input type processed.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -784,7 +745,6 @@ DefineFunction(
|
||||
'desc' => "If encoding is set, mb_http_output() sets the HTTP output character encoding to encoding.\n\nIf encoding is omitted, mb_http_output() returns the current HTTP output character encoding.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -804,7 +764,6 @@ DefineFunction(
|
||||
'desc' => "encoding is the character encoding name used for the HTTP input character encoding conversion, HTTP output character encoding conversion, and the default character encoding for string functions defined by the mbstring module.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -824,7 +783,6 @@ DefineFunction(
|
||||
'desc' => "Used for encoding e-mail messages. Valid languages are \"Japanese\", \"ja\",\"English\",\"en\" and \"uni\" (UTF-8). mb_send_mail() uses this setting to encode e-mail.\n\nLanguage and its setting is ISO-2022-JP/Base64 for Japanese, UTF-8/Base64 for uni, ISO-8859-1/quoted printable for English.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -848,7 +806,6 @@ DefineFunction(
|
||||
'desc' => "The status of the output buffer.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -873,7 +830,6 @@ DefineFunction(
|
||||
'desc' => "An array containing decoded and character encoded converted values.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -892,7 +848,6 @@ DefineFunction(
|
||||
'desc' => "The encoding being checked.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -912,7 +867,6 @@ DefineFunction(
|
||||
'desc' => "encoding parameter is the character encoding. If it is omitted, the internal character encoding value will be used.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -931,7 +885,6 @@ DefineFunction(
|
||||
'desc' => "The options to set. This is a a string where each character is an option. To set a mode, the mode character must be the last one set, however there can only be set one mode but multiple options. Regex options Option Meaning i Ambiguity match on x Enables extended pattern form m '.' matches with newlines s '^' -> '\\A', '\$' -> '\\Z' p Same as both the m and s options l Finds longest matches n Ignores empty matches e eval() resulting code Regex syntax modes Mode Meaning j Java (Sun java.util.regex) u GNU regex g grep c Emacs r Ruby z Perl b POSIX Basic regex d POSIX Extended regex",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -972,7 +925,6 @@ DefineFunction(
|
||||
'desc' => "additional_parameter is a MTA command line parameter. It is useful when setting the correct Return-Path header when using sendmail.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1001,10 +953,6 @@ DefineFunction(
|
||||
'desc' => "If optional parameter limit is specified, it will be split in limit elements as maximum.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1040,10 +988,6 @@ DefineFunction(
|
||||
'desc' => "encoding parameter is the character encoding. If it is omitted, the internal character encoding value will be used.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1084,10 +1028,6 @@ DefineFunction(
|
||||
'desc' => "encoding parameter is the character encoding. If it is omitted, the internal character encoding value will be used.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1123,7 +1063,6 @@ DefineFunction(
|
||||
'desc' => "Character encoding name to use. If it is omitted, internal character encoding is used.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1159,10 +1098,6 @@ DefineFunction(
|
||||
'desc' => "Character encoding name to use. If it is omitted, internal character encoding is used.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1187,7 +1122,6 @@ DefineFunction(
|
||||
'desc' => "encoding parameter is the character encoding. If it is omitted, the internal character encoding value will be used.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1223,7 +1157,6 @@ DefineFunction(
|
||||
'desc' => "encoding parameter is the character encoding. If it is omitted, the internal character encoding value will be used.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1259,10 +1192,6 @@ DefineFunction(
|
||||
'desc' => "Character encoding name to use. If it is omitted, internal character encoding is used.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1298,10 +1227,6 @@ DefineFunction(
|
||||
'desc' => "Character encoding name to use. If it is omitted, internal character encoding is used.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1337,7 +1262,6 @@ DefineFunction(
|
||||
'desc' => "Character encoding name to use. If it is omitted, internal character encoding is used.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1373,7 +1297,6 @@ DefineFunction(
|
||||
'desc' => "encoding parameter is the character encoding. If it is omitted, the internal character encoding value will be used.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1409,10 +1332,6 @@ DefineFunction(
|
||||
'desc' => "Character encoding name to use. If it is omitted, internal character encoding is used.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1437,10 +1356,6 @@ DefineFunction(
|
||||
'desc' => "encoding parameter is the character encoding. If it is omitted, the internal character encoding value will be used.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1465,10 +1380,6 @@ DefineFunction(
|
||||
'desc' => "encoding parameter is the character encoding. If it is omitted, the internal character encoding value will be used.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1493,7 +1404,6 @@ DefineFunction(
|
||||
'desc' => "encoding parameter is the character encoding. If it is omitted, the internal character encoding value will be used.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1513,7 +1423,6 @@ DefineFunction(
|
||||
'desc' => "Specify the Unicode value as an integer, or as one of the following strings: \"none\" : no output \"long\" : Output character code value (Example: U+3000, JIS+7E7E) \"entity\" : Output character entity (Example: Ȁ)",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1543,7 +1452,6 @@ DefineFunction(
|
||||
'desc' => "encoding parameter is the character encoding. If it is omitted, the internal character encoding value will be used.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1579,10 +1487,6 @@ DefineFunction(
|
||||
'desc' => "encoding parameter is the character encoding. If it is omitted, the internal character encoding value will be used.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -79,7 +79,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -98,7 +97,6 @@ DefineFunction(
|
||||
'desc' => "The encryption descriptor.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -118,7 +116,6 @@ DefineFunction(
|
||||
'desc' => "Specifies the directory where all algorithms are located. If not specifies, the value of the mcrypt.algorithms_dir php.ini directive is used.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -138,7 +135,6 @@ DefineFunction(
|
||||
'desc' => "Specifies the directory where all modes are located. If not specifies, the value of the mcrypt.modes_dir php.ini directive is used.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -163,7 +159,6 @@ DefineFunction(
|
||||
'desc' => "This optional parameter can contain the location where the mode module is on the system.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -188,7 +183,6 @@ DefineFunction(
|
||||
'desc' => "This optional parameter can contain the location where the mode module is on the system.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -213,7 +207,6 @@ DefineFunction(
|
||||
'desc' => "The optional lib_dir parameter can contain the location of where the algorithm module is on the system.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -238,7 +231,6 @@ DefineFunction(
|
||||
'desc' => "The optional lib_dir parameter can contain the location of where the algorithm module is on the system.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -263,7 +255,6 @@ DefineFunction(
|
||||
'desc' => "The optional lib_dir parameter can contain the location of where the algorithm module is on the system.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -288,7 +279,6 @@ DefineFunction(
|
||||
'desc' => "The optional lib_dir parameter can contain the location of where the algorithm module is on the system.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -313,7 +303,6 @@ DefineFunction(
|
||||
'desc' => "The optional lib_dir parameter can contain the location of where the algorithm module is on the system.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -338,7 +327,6 @@ DefineFunction(
|
||||
'desc' => "The source can be MCRYPT_RAND (system random number generator), MCRYPT_DEV_RANDOM (read data from /dev/random) and MCRYPT_DEV_URANDOM (read data from /dev/urandom). Prior to 5.3.0, MCRYPT_RAND was the only one supported on Windows.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -378,10 +366,6 @@ DefineFunction(
|
||||
'desc' => "Used for the initialisation in CBC, CFB, OFB modes, and in some algorithms in STREAM mode. If you do not supply an IV, while it is needed for an algorithm, the function issues a warning and uses an IV with all bytes set to '\\0'.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -421,10 +405,6 @@ DefineFunction(
|
||||
'desc' => "The iv parameter is used for the initialisation in CBC, CFB, OFB modes, and in some algorithms in STREAM mode. If you do not supply an IV, while it is needed for an algorithm, the function issues a warning and uses an IV with all bytes set to '\\0'.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -457,10 +437,6 @@ DefineFunction(
|
||||
'value' => "null_string",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -493,10 +469,6 @@ DefineFunction(
|
||||
'value' => "null_string",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -529,10 +501,6 @@ DefineFunction(
|
||||
'value' => "null_string",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -565,10 +533,6 @@ DefineFunction(
|
||||
'value' => "null_string",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -593,7 +557,6 @@ DefineFunction(
|
||||
'desc' => "The module.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -612,7 +575,6 @@ DefineFunction(
|
||||
'desc' => "One of the MCRYPT_ciphername constants or the name of the algorithm as string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -636,7 +598,6 @@ DefineFunction(
|
||||
'desc' => "mode is one of the MCRYPT_MODE_modename constants or one of \"ecb\", \"cbc\", \"cfb\", \"ofb\", \"nofb\" or \"stream\". The IV is ignored in ECB mode as this mode does not require it. You will need to have the same IV (think: starting point) both at encryption and decryption stages, otherwise your encryption will fail.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -656,7 +617,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -675,7 +635,6 @@ DefineFunction(
|
||||
'desc' => "The encryption descriptor.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -694,7 +653,6 @@ DefineFunction(
|
||||
'desc' => "The encryption descriptor.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -713,7 +671,6 @@ DefineFunction(
|
||||
'desc' => "The encryption descriptor.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -732,7 +689,6 @@ DefineFunction(
|
||||
'desc' => "The encryption descriptor.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -751,7 +707,6 @@ DefineFunction(
|
||||
'desc' => "The encryption descriptor.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -770,7 +725,6 @@ DefineFunction(
|
||||
'desc' => "The encryption descriptor.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -789,7 +743,6 @@ DefineFunction(
|
||||
'desc' => "The encryption descriptor.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -808,7 +761,6 @@ DefineFunction(
|
||||
'desc' => "The encryption descriptor.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -827,7 +779,6 @@ DefineFunction(
|
||||
'desc' => "The encryption descriptor.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -846,7 +797,6 @@ DefineFunction(
|
||||
'desc' => "The encryption descriptor.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -870,10 +820,6 @@ DefineFunction(
|
||||
'desc' => "The data to encrypt.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -902,7 +848,6 @@ DefineFunction(
|
||||
'desc' => "The IV should normally have the size of the algorithms block size, but you must obtain the size by calling mcrypt_enc_get_iv_size(). IV is ignored in ECB. IV MUST exist in CFB, CBC, STREAM, nOFB and OFB modes. It needs to be random and unique (but not secret). The same IV must be used for encryption/decryption. If you do not want to use it you should set it to zeros, but this is not recommended.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -925,10 +870,6 @@ DefineFunction(
|
||||
'desc' => "Encrypted data.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -947,7 +888,6 @@ DefineFunction(
|
||||
'desc' => "The encryption descriptor.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -963,7 +903,6 @@ DefineFunction(
|
||||
'type' => Resource,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -82,7 +82,6 @@ DefineFunction(
|
||||
'value' => "0",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -118,7 +117,6 @@ DefineFunction(
|
||||
'value' => "0",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -158,7 +156,6 @@ DefineFunction(
|
||||
'value' => "0",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -198,7 +195,6 @@ DefineFunction(
|
||||
'value' => "0",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -238,7 +234,6 @@ DefineFunction(
|
||||
'value' => "0",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -267,10 +262,6 @@ DefineFunction(
|
||||
'value' => "null",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_ALL",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -299,7 +290,6 @@ DefineFunction(
|
||||
'value' => "0",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -328,7 +318,6 @@ DefineFunction(
|
||||
'value' => "1",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -357,7 +346,6 @@ DefineFunction(
|
||||
'value' => "1",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -375,7 +363,6 @@ DefineFunction(
|
||||
'type' => Object,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -394,7 +381,6 @@ DefineFunction(
|
||||
'desc' => "Turns debug output on if equals to TRUE. Turns debug output off if equals to FALSE.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -410,7 +396,6 @@ DefineFunction(
|
||||
'type' => Object,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -433,7 +418,6 @@ DefineFunction(
|
||||
'value' => "0",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -453,7 +437,6 @@ DefineFunction(
|
||||
'type' => Int32,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -478,7 +461,6 @@ DefineFunction(
|
||||
'value' => "0",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -503,7 +485,6 @@ DefineFunction(
|
||||
'value' => "0.2",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -534,7 +515,6 @@ DefineFunction(
|
||||
'value' => "100",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -565,7 +545,6 @@ DefineFunction(
|
||||
'value' => "100",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -610,7 +589,6 @@ DefineFunction(
|
||||
'value' => "null_variant",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -670,7 +648,6 @@ DefineFunction(
|
||||
'value' => "0",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
|
||||
@@ -932,10 +909,6 @@ DefineFunction(
|
||||
'desc' => "If present, flags fetched along with the values will be written to this parameter. These flags are the same as the ones given to for example Memcache::set(). The lowest byte of the int is reserved for pecl/memcache internal usage (e.g. to indicate compression and serialization status).",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_ALL",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
|
||||
@@ -811,10 +811,6 @@ DefineFunction(
|
||||
'type' => Variant,
|
||||
'desc' => "Returns the next result or FALSE otherwise. The Memcached::getResultCode() will return Memcached::RES_END if result set is exhausted.",
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_ALL",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -826,10 +822,6 @@ DefineFunction(
|
||||
'type' => Variant,
|
||||
'desc' => "Returns the results or FALSE on failure. Use Memcached::getResultCode() if necessary.",
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_ALL",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -879,10 +871,6 @@ DefineFunction(
|
||||
'desc' => "The variable to store the CAS token in.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_ALL",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -918,10 +906,6 @@ DefineFunction(
|
||||
'desc' => "The variable to store the CAS token in.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_ALL",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -952,10 +936,6 @@ DefineFunction(
|
||||
'desc' => "The result callback or NULL.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_ALL",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -991,10 +971,6 @@ DefineFunction(
|
||||
'desc' => "The result callback or NULL.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_ALL",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1025,10 +1001,6 @@ DefineFunction(
|
||||
'desc' => "The flags for the get operation.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_ALL",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1064,10 +1036,6 @@ DefineFunction(
|
||||
'desc' => "The flags for the get operation.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_ALL",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
|
||||
@@ -70,7 +70,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
'desc' => "Returns 1 if client disconnected, 0 otherwise.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -82,7 +81,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
'desc' => "Returns the connection status bitfield, which can be used against the CONNECTION_XXX constants to determine the connection status.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -94,7 +92,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
'desc' => "Returns 1 if the script timed out, 0 otherwise.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -112,7 +109,6 @@ DefineFunction(
|
||||
'desc' => "The constant name.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -142,7 +138,6 @@ DefineFunction(
|
||||
'desc' => "If set to TRUE, the constant will be defined case-insensitive. The default behavior is case-sensitive; i.e. CONSTANT and Constant represent different values.\n\nCase-insensitive constants are stored as lower-case.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -167,7 +162,6 @@ DefineFunction(
|
||||
'desc' => "Whether to try to autoload.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -184,7 +178,6 @@ DefineFunction(
|
||||
'value' => "null_variant",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -204,7 +197,6 @@ DefineFunction(
|
||||
'desc' => "If status is a string, this function prints the status just before exiting.\n\nIf status is an integer, that value will be used as the exit status and not printed. Exit statuses should be in the range 0 to 254, the exit status 255 is reserved by PHP and shall not be used. The status 0 is used to terminate the program successfully. PHP >= 4.2.0 does NOT print the status if it is an integer.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -223,7 +215,6 @@ DefineFunction(
|
||||
'desc' => "The code string to be evaluated. code_str does not have to contain PHP Opening tags.\n\nA return statement will immediately terminate the evaluation of the string .",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -249,7 +240,6 @@ DefineFunction(
|
||||
'desc' => "If set to TRUE, this function will return an array instead of an object.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -259,7 +249,6 @@ DefineFunction(
|
||||
'return' => array(
|
||||
'type' => null,
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -284,7 +273,6 @@ DefineFunction(
|
||||
'desc' => "Set this parameter to TRUE to make this function return the highlighted code.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -305,7 +293,6 @@ DefineFunction(
|
||||
'value' => "false",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -329,10 +316,6 @@ DefineFunction(
|
||||
'desc' => "Set this parameter to TRUE to make this function return the highlighted code.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -352,7 +335,6 @@ DefineFunction(
|
||||
'desc' => "If set, this function will set the ignore_user_abort ini setting to the given value. If not, this function will only return the previous setting without changing it.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -371,7 +353,6 @@ DefineFunction(
|
||||
'desc' => "The format string consists of format codes followed by an optional repeater argument. The repeater argument can be either an integer value or * for repeating to the end of the input data. For a, A, h, H the repeat count specifies how many characters of one data argument are taken, for @ it is the absolute position where to put the next data, for everything else the repeat count specifies how many data arguments are consumed and packed into the resulting binary string.\n\nCurrently implemented formats are: pack() format characters Code Description a NUL-padded string A SPACE-padded string h Hex string, low nibble first H Hex string, high nibble first csigned char C unsigned char s signed short (always 16 bit, machine byte order) S unsigned short (always 16 bit, machine byte order) n unsigned short (always 16 bit, big endian byte order) v unsigned short (always 16 bit, little endian byte order) i signed integer (machine dependent size and byte order) I unsigned integer (machine dependent size and byte order) l signed long (always 32 bit, machine byte order) L unsigned long (always 32 bit, machine byte order) N unsigned long (always 32 bit, big endian byte order) V unsigned long (always 32 bit, little endian byte order) f float (machine dependent size and representation) d double (machine dependent size and representation) x NUL byte X Back up one byte @ NUL-fill to absolute position",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -396,7 +377,6 @@ DefineFunction(
|
||||
'desc' => "If the error_message parameter is used, it will contain the error message generated by the syntax check. error_message is passed by reference.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -415,10 +395,6 @@ DefineFunction(
|
||||
'desc' => "Path to the PHP file.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -436,7 +412,6 @@ DefineFunction(
|
||||
'desc' => "Halt time in seconds.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -455,7 +430,6 @@ DefineFunction(
|
||||
'desc' => "Halt time in micro seconds. A micro second is one millionth of a second.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -479,7 +453,6 @@ DefineFunction(
|
||||
'desc' => "Must be a positive integer less than 1 billion.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -498,7 +471,6 @@ DefineFunction(
|
||||
'desc' => "The timestamp when the script should wake.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -524,7 +496,6 @@ DefineFunction(
|
||||
'desc' => "If set to TRUE, uniqid() will add additional entropy (using the combined linear congruential generator) at the end of the return value, which should make the results more unique.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -548,7 +519,6 @@ DefineFunction(
|
||||
'desc' => "The packed data.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -560,7 +530,6 @@ DefineFunction(
|
||||
'type' => VariantMap,
|
||||
'desc' => "Returns an array with three samples (last 1, 5 and 15 minutes).",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -579,7 +548,6 @@ DefineFunction(
|
||||
'desc' => "The PHP source to parse.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -598,7 +566,6 @@ DefineFunction(
|
||||
'desc' => "The token value.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -617,7 +584,6 @@ DefineFunction(
|
||||
'desc' => "You shouldn't be calling this function if you don't know the magic value.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -636,7 +602,6 @@ DefineFunction(
|
||||
'desc' => "The value being casted to a string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -101,7 +101,6 @@ DefineFunction(
|
||||
'desc' => "(HipHop specific) How many milli-seconds to wait for query.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -139,7 +138,6 @@ DefineFunction(
|
||||
'value' => "null_string",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -158,7 +156,6 @@ DefineFunction(
|
||||
'desc' => "The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -182,7 +179,6 @@ DefineFunction(
|
||||
'desc' => "The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -201,7 +197,6 @@ DefineFunction(
|
||||
'desc' => "The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -220,7 +215,6 @@ DefineFunction(
|
||||
'desc' => "The mysql result object from mysql_async_query_result.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -245,10 +239,6 @@ DefineFunction(
|
||||
'desc' => "The type of array that is to be fetched. It's a constant and can take the following values: MYSQL_ASSOC, MYSQL_NUM, and MYSQL_BOTH. The default is MYSQL_ASSOC (1)",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_ALL",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -272,7 +262,6 @@ DefineFunction(
|
||||
'desc' => "Time, in seconds, to wait for actionable events. Subsecond accuracy is supported.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -322,7 +311,6 @@ DefineFunction(
|
||||
'desc' => "(HipHop specific) How many milli-seconds to wait for query.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -374,7 +362,6 @@ DefineFunction(
|
||||
'value' => "-1",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -421,7 +408,6 @@ DefineFunction(
|
||||
'value' => "-1",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -446,7 +432,6 @@ DefineFunction(
|
||||
'desc' => "The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -466,7 +451,6 @@ DefineFunction(
|
||||
'desc' => "The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -485,10 +469,6 @@ DefineFunction(
|
||||
'desc' => "The string that is to be escaped.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_SQL",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -513,10 +493,6 @@ DefineFunction(
|
||||
'desc' => "The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_SQL",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -536,7 +512,6 @@ DefineFunction(
|
||||
'desc' => "The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -556,7 +531,6 @@ DefineFunction(
|
||||
'desc' => "The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -576,7 +550,6 @@ DefineFunction(
|
||||
'desc' => "The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -596,7 +569,6 @@ DefineFunction(
|
||||
'desc' => "The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -616,7 +588,6 @@ DefineFunction(
|
||||
'desc' => "The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -628,7 +599,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
'desc' => "The MySQL client version.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -648,7 +618,6 @@ DefineFunction(
|
||||
'desc' => "The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -668,7 +637,6 @@ DefineFunction(
|
||||
'desc' => "The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -688,7 +656,6 @@ DefineFunction(
|
||||
'desc' => "The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -708,10 +675,6 @@ DefineFunction(
|
||||
'desc' => "The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -731,7 +694,6 @@ DefineFunction(
|
||||
'desc' => "The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -751,10 +713,6 @@ DefineFunction(
|
||||
'desc' => "The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -774,7 +732,6 @@ DefineFunction(
|
||||
'desc' => "The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -799,7 +756,6 @@ DefineFunction(
|
||||
'desc' => "The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -824,7 +780,6 @@ DefineFunction(
|
||||
'desc' => "The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -849,7 +804,6 @@ DefineFunction(
|
||||
'desc' => "The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -869,7 +823,6 @@ DefineFunction(
|
||||
'desc' => "The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -894,7 +847,6 @@ DefineFunction(
|
||||
'desc' => "Which connection to set to. If absent, default or current connection will be applied to.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -919,7 +871,6 @@ DefineFunction(
|
||||
'desc' => "The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -944,7 +895,6 @@ DefineFunction(
|
||||
'desc' => "The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -964,7 +914,6 @@ DefineFunction(
|
||||
'desc' => "The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -984,7 +933,6 @@ DefineFunction(
|
||||
'desc' => "The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1004,7 +952,6 @@ DefineFunction(
|
||||
'desc' => "The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1029,7 +976,6 @@ DefineFunction(
|
||||
'desc' => "The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1059,7 +1005,6 @@ DefineFunction(
|
||||
'desc' => "The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1079,7 +1024,6 @@ DefineFunction(
|
||||
'desc' => "The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1104,7 +1048,6 @@ DefineFunction(
|
||||
'desc' => "The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1134,7 +1077,6 @@ DefineFunction(
|
||||
'desc' => "The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1154,7 +1096,6 @@ DefineFunction(
|
||||
'desc' => "The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1184,10 +1125,6 @@ DefineFunction(
|
||||
'desc' => "The field name.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_ALL",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1211,10 +1148,6 @@ DefineFunction(
|
||||
'desc' => "The integer index (row/table number)",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_ALL",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1233,7 +1166,6 @@ DefineFunction(
|
||||
'desc' => "resource that is being evaluated. This result comes from a call to mysql_query().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1252,7 +1184,6 @@ DefineFunction(
|
||||
'desc' => "resource that is being evaluated. This result comes from a call to mysql_query().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1271,7 +1202,6 @@ DefineFunction(
|
||||
'desc' => "resource that is being evaluated. This result comes from a call to mysql_query().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1295,7 +1225,6 @@ DefineFunction(
|
||||
'desc' => "The desired row number of the new result pointer.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1314,10 +1243,6 @@ DefineFunction(
|
||||
'desc' => "resource that is being evaluated. This result comes from a call to mysql_query().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_ALL",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1336,10 +1261,6 @@ DefineFunction(
|
||||
'desc' => "resource that is being evaluated. This result comes from a call to mysql_query().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_ALL",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1364,10 +1285,6 @@ DefineFunction(
|
||||
'desc' => "The type of array that is to be fetched. It's a constant and can take the following values: MYSQL_ASSOC, MYSQL_NUM, and MYSQL_BOTH.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_ALL",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1386,7 +1303,6 @@ DefineFunction(
|
||||
'desc' => "resource that is being evaluated. This result comes from a call to mysql_query().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1417,10 +1333,6 @@ DefineFunction(
|
||||
'desc' => "An optional array of parameters to pass to the constructor for class_name objects.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_ALL",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1450,10 +1362,6 @@ DefineFunction(
|
||||
'desc' => "The name or offset of the field being retrieved.\n\nIt can be the field's offset, the field's name, or the field's table dot field name (tablename.fieldname). If the column name has been aliased ('select foo as bar from...'), use the alias instead of the column name. If undefined, the first field is retrieved.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_ALL",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1478,10 +1386,6 @@ DefineFunction(
|
||||
'desc' => "The numerical field offset. If the field offset is not specified, the next field that was not yet retrieved by this function is retrieved. The field_offset starts at 0.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_ALL",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1506,7 +1410,6 @@ DefineFunction(
|
||||
'desc' => "The numerical field offset. The field_offset starts at 0. If field_offset does not exist, an error of level E_WARNING is also issued.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1531,10 +1434,6 @@ DefineFunction(
|
||||
'desc' => "The numerical field offset. The field_offset starts at 0. If field_offset does not exist, an error of level E_WARNING is also issued.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_ALL",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1559,10 +1458,6 @@ DefineFunction(
|
||||
'desc' => "The numerical field offset. The field_offset starts at 0. If field_offset does not exist, an error of level E_WARNING is also issued.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_ALL",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1587,7 +1482,6 @@ DefineFunction(
|
||||
'desc' => "The numerical field offset. The field_offset starts at 0. If field_offset does not exist, an error of level E_WARNING is also issued.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1612,7 +1506,6 @@ DefineFunction(
|
||||
'desc' => "The numerical field offset. The field_offset starts at 0. If field_offset does not exist, an error of level E_WARNING is also issued.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1637,7 +1530,6 @@ DefineFunction(
|
||||
'desc' => "The numerical field offset. The field_offset starts at 0. If field_offset does not exist, an error of level E_WARNING is also issued.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -73,7 +73,6 @@ DefineFunction(
|
||||
'desc' => "An optional new value for the option.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -92,7 +91,6 @@ DefineFunction(
|
||||
'desc' => "The assertion.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -111,7 +109,6 @@ DefineFunction(
|
||||
'desc' => "This parameter is only the filename of the extension to load which also depends on your platform. For example, the sockets extension (if compiled as a shared module, not the default!) would be called sockets.so on Unix platforms whereas it is called php_sockets.dll on the Windows platform.\n\nThe directory where the extension is loaded from depends on your platform:\n\nWindows - If not explicitly set in the php.ini, the extension is loaded from C:\\php4\\extensions\\ (PHP4) or C:\\php5\\ (PHP5) by default.\n\nUnix - If not explicitly set in the php.ini, the default extension directory depends on whether PHP has been built with --enable-debug or not whether PHP has been built with (experimental) ZTS (Zend Thread Safety) support or not the current internal ZEND_MODULE_API_NO (Zend internal module API number, which is basically the date on which a major module API change happened, e.g. 20010901) Taking into account the above, the directory then defaults to <install-dir>/lib/php/extensions/ <debug-or-not>-<zts-or-not>-ZEND_MODULE_API_NO, e.g. /usr/local/php/lib/php/extensions/debug-non-zts-20010901 or /usr/local/php/lib/php/extensions/no-debug-zts-20010901.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -130,7 +127,6 @@ DefineFunction(
|
||||
'desc' => "The extension name.\n\nYou can see the names of various extensions by using phpinfo() or if you're using the CGI or CLI version of PHP you can use the -m switch to list all available extensions: \$ php -m [PHP Modules] xml tokenizer standard sockets session posix pcre overload mysql mbstring ctype [Zend Modules]",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -150,7 +146,6 @@ DefineFunction(
|
||||
'desc' => "Only return Zend extensions, if not then regular extensions, like mysqli are listed. Defaults to FALSE (return regular extensions).",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -169,7 +164,6 @@ DefineFunction(
|
||||
'desc' => "The module name.\n\nThis parameter must be in lowercase.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -188,7 +182,6 @@ DefineFunction(
|
||||
'desc' => "The configuration option name.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -199,7 +192,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
'desc' => "Returns the username as a string.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -218,7 +210,6 @@ DefineFunction(
|
||||
'desc' => "Causing this function to return a multi-dimensional array with categories in the keys of the first dimension and constants and their values in the second dimension.\n\n\n\nThe above example will output something similar to: Array ( [Core] => Array ( [E_ERROR] => 1 [E_WARNING] => 2 [E_PARSE] => 4 [E_NOTICE] => 8 [E_CORE_ERROR] => 16 [E_CORE_WARNING] => 32 [E_COMPILE_ERROR] => 64 [E_COMPILE_WARNING] => 128 [E_USER_ERROR] => 256 [E_USER_WARNING] => 512 [E_USER_NOTICE] => 1024 [E_ALL] => 2047 [TRUE] => 1 ) [pcre] => Array ( [PREG_PATTERN_ORDER] => 1 [PREG_SET_ORDER] => 2 [PREG_OFFSET_CAPTURE] => 256 [PREG_SPLIT_NO_EMPTY] => 1 [PREG_SPLIT_DELIM_CAPTURE] => 2 [PREG_SPLIT_OFFSET_CAPTURE] => 4 [PREG_GREP_INVERT] => 1 ) [user] => Array ( [MY_CONSTANT] => 1 ) )",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -229,7 +220,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
'desc' => "Returns the path, as a string.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -240,7 +230,6 @@ DefineFunction(
|
||||
'type' => null,
|
||||
'desc' => "No value is returned.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -259,7 +248,6 @@ DefineFunction(
|
||||
'desc' => "The new value for the include_path",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -271,7 +259,6 @@ DefineFunction(
|
||||
'type' => StringVec,
|
||||
'desc' => "Returns an array of the names of all files.\n\nThe script originally called is considered an \"included file,\" so it will be listed together with the files referenced by include() and family.\n\nFiles that are included or required multiple times only show up once in the returned array.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -283,7 +270,6 @@ DefineFunction(
|
||||
'type' => VariantVec,
|
||||
'desc' => "The inclued data.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -295,7 +281,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
'desc' => "Returns 0 if magic_quotes_gpc is off, 1 otherwise.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -306,7 +291,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
'desc' => "Returns 0 if magic_quotes_runtime is off, 1 otherwise.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -316,7 +300,6 @@ DefineFunction(
|
||||
'return' => array(
|
||||
'type' => StringVec,
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -335,7 +318,6 @@ DefineFunction(
|
||||
'desc' => "The variable name.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -347,7 +329,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
'desc' => "Returns the time of the last modification of the current page. The value returned is a Unix timestamp, suitable for feeding to date(). Returns FALSE on error.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -358,7 +339,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
'desc' => "Returns the group ID of the current script, or FALSE on error.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -370,7 +350,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
'desc' => "Returns the current script's inode as an integer, or FALSE on error.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -382,7 +361,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
'desc' => "Returns the current PHP process ID, or FALSE on error.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -393,7 +371,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
'desc' => "Returns the user ID of the current script, or FALSE on error.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -418,7 +395,6 @@ DefineFunction(
|
||||
'desc' => "An array of options. Each element in this array will be used as option strings and matched against options passed to the script starting with two hyphens (--). For example, an longopts element \"opt\" recognizes an option --opt. Prior to PHP5.3.0 this parameter was only available on few systems",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -438,7 +414,6 @@ DefineFunction(
|
||||
'desc' => "If who is 1, getrusage will be called with RUSAGE_CHILDREN.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -467,7 +442,6 @@ DefineFunction(
|
||||
'desc' => "Return value in nano-seconds.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -496,7 +470,6 @@ DefineFunction(
|
||||
'desc' => "Return value in nano-seconds.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -525,7 +498,6 @@ DefineFunction(
|
||||
'desc' => "Value to set in nano-seconds.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -537,7 +509,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
'desc' => "Number of CPUs.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -549,7 +520,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
'desc' => "Model name of CPU.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -569,7 +539,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -589,7 +558,6 @@ DefineFunction(
|
||||
'desc' => "An optional extension name. If set, the function return only options specific for that extension.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -608,7 +576,6 @@ DefineFunction(
|
||||
'desc' => "The configuration option name.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -627,7 +594,6 @@ DefineFunction(
|
||||
'desc' => "The configuration option name.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -651,7 +617,6 @@ DefineFunction(
|
||||
'desc' => "The new value for the option.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -663,7 +628,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
'desc' => "Returns the total memory allocated in bytes.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -683,7 +647,6 @@ DefineFunction(
|
||||
'desc' => "Set this to TRUE to get the real size of memory allocated from system. If not set or FALSE only the memory used by emalloc() is reported.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -703,7 +666,6 @@ DefineFunction(
|
||||
'desc' => "Set this to TRUE to get the real size of memory allocated from system. If not set or FALSE only the memory used by emalloc() is reported.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -715,7 +677,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
'desc' => "Returns a comma-separated string of .ini files on success. Each comma is followed by a newline. If the directive --with-config-file-scan-dir wasn't set, FALSE is returned. If it was set and the directory was empty, an empty string is returned. If a file is unrecognizable, the file will still make it into the returned string but a PHP error will also result. This PHP error will be seen both at compile time and while using php_ini_scanned_files().",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -727,7 +688,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
'desc' => "Returns PHPE9568F34-D428-11d2-A769-00AA001ACF42.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -738,7 +698,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
'desc' => "Returns the interface type, as a lowercase string.\n\nAlthough not exhaustive, the possible return values include aolserver, apache, apache2filter, apache2handler, caudium, cgi (until PHP 5.3), cgi-fcgi, cli, continuity, embed, isapi, litespeed, milter, nsapi, phttpd, pi3web, roxen, thttpd, tux, and webjames.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -758,7 +717,6 @@ DefineFunction(
|
||||
'desc' => "mode is a single character that defines what information is returned: 'a': This is the default. Contains all modes in the sequence \"s n r v m\". 's': Operating system name. eg. FreeBSD. 'n': Host name. eg. localhost.example.com. 'r': Release name. eg. 5.1.2-RELEASE. 'v': Version information. Varies a lot between operating systems. 'm': Machine type. eg. i386.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -778,7 +736,6 @@ DefineFunction(
|
||||
'desc' => "To generate a custom credits page, you may want to use the flag parameter.\n\nPre-defined phpcredits() flags name description CREDITS_ALL All the credits, equivalent to using: CREDITS_DOCS + CREDITS_GENERAL + CREDITS_GROUP + CREDITS_MODULES + CREDITS_FULLPAGE. It generates a complete stand-alone HTML page with the appropriate tags. CREDITS_DOCS The credits for the documentation team CREDITS_FULLPAGE Usually used in combination with the other flags. Indicates that a complete stand-alone HTML page needs to be printed including the information indicated by the other flags. CREDITS_GENERAL General credits: Language design and concept, PHP authors and SAPI module. CREDITS_GROUP A list of the core developers CREDITS_MODULES A list of the extension modules for PHP, and their authors CREDITS_SAPI A list of the server API modules for PHP, and their authors",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -798,7 +755,6 @@ DefineFunction(
|
||||
'desc' => "The output may be customized by passing one or more of the following constants bitwise values summed together in the optional what parameter. One can also combine the respective constants or bitwise values together with the or operator.\n\nphpinfo() options Name (constant) Value Description INFO_GENERAL 1 The configuration line, php.ini location, build date, Web Server, System and more. INFO_CREDITS 2 PHP Credits. See also phpcredits(). INFO_CONFIGURATION 4 Current Local and Master values for PHP directives. See also ini_get(). INFO_MODULES 8 Loaded modules and their respective settings. See also get_loaded_extensions(). INFO_ENVIRONMENT 16 Environment Variable information that's also available in \$_ENV. INFO_VARIABLES 32 Shows all predefined variables from EGPCS (Environment, GET, POST, Cookie, Server). INFO_LICENSE 64 PHP License information. See also the » license FAQ. INFO_ALL -1 Shows all of the above.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -818,7 +774,6 @@ DefineFunction(
|
||||
'desc' => "An optional extension name.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -837,7 +792,6 @@ DefineFunction(
|
||||
'desc' => "The setting, like \"FOO=BAR\"",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -856,7 +810,6 @@ DefineFunction(
|
||||
'desc' => "FALSE for off, TRUE for on.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -875,7 +828,6 @@ DefineFunction(
|
||||
'desc' => "The maximum execution time, in seconds. If set to zero, no time limit is imposed.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -887,7 +839,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
'desc' => "Returns the path of the temporary directory.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -917,7 +868,6 @@ DefineFunction(
|
||||
'desc' => "If you specify the third optional operator argument, you can test for a particular relationship. The possible operators are: <, lt, <=, le, >, gt, >=, ge, ==, =, eq, !=, <>, ne respectively.\n\nThis parameter is case-sensitive, so values should be lowercase.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -930,7 +880,6 @@ DefineFunction(
|
||||
'desc' => "Returns TRUE if the garbage collector is enabled, ".
|
||||
"FALSE otherwise.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -939,7 +888,6 @@ DefineFunction(
|
||||
'desc' => "Activates the circular reference collector.",
|
||||
'flags' => HasDocComment,
|
||||
'return' => null,
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -948,7 +896,6 @@ DefineFunction(
|
||||
'desc' => "Deactivates the circular reference collector.",
|
||||
'flags' => HasDocComment,
|
||||
'return' => null,
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -960,7 +907,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
'desc' => "Returns number of collected cycles.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -972,7 +918,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
'desc' => "Returns PHPE9568F35-D428-11d2-A769-00AA001ACF42.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -984,7 +929,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
'desc' => "Returns the thread id as an integer.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -996,7 +940,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
'desc' => "Returns the Zend Engine version number, as a string.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -78,10 +78,6 @@ DefineFunction(
|
||||
'desc' => "If the optional parameter erase is set to FALSE, the buffer will not be deleted until the script finishes. This causes that flushing and cleaning functions would issue a notice and return FALSE if called.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -93,10 +89,6 @@ DefineFunction(
|
||||
'type' => null,
|
||||
'desc' => "No value is returned.",
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -108,10 +100,6 @@ DefineFunction(
|
||||
'type' => null,
|
||||
'desc' => "No value is returned.",
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -123,10 +111,6 @@ DefineFunction(
|
||||
'type' => Boolean,
|
||||
'desc' => "Returns TRUE on success or FALSE on failure. Reasons for failure are first that you called the function without an active buffer or that for some reason a buffer could not be deleted (possible for special buffer).",
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -138,10 +122,6 @@ DefineFunction(
|
||||
'type' => Boolean,
|
||||
'desc' => "Returns TRUE on success or FALSE on failure. Reasons for failure are first that you called the function without an active buffer or that for some reason a buffer could not be deleted (possible for special buffer).",
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -153,10 +133,6 @@ DefineFunction(
|
||||
'type' => null,
|
||||
'desc' => "No value is returned.",
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -168,10 +144,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
'desc' => "Returns the contents of the output buffer and end output buffering. If output buffering isn't active then FALSE is returned.",
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -183,10 +155,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
'desc' => "This will return the contents of the output buffer or FALSE, if output buffering isn't active.",
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -198,10 +166,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
'desc' => "Returns the output buffer or FALSE if no buffering is active.",
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -213,10 +177,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
'desc' => "Returns the length of the output buffer contents or FALSE if no buffering is active.",
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -228,10 +188,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
'desc' => "Returns the level of nested output buffering handlers or zero if output buffering is not active.",
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -250,10 +206,6 @@ DefineFunction(
|
||||
'desc' => "TRUE to return all active output buffer levels. If FALSE or not set, only the top level output buffer is returned.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -274,10 +226,6 @@ DefineFunction(
|
||||
'type' => Int32,
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -297,10 +245,6 @@ DefineFunction(
|
||||
'desc' => "TRUE to turn implicit flushing on, FALSE otherwise.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -312,10 +256,6 @@ DefineFunction(
|
||||
'type' => StringVec,
|
||||
'desc' => "This will return an array with the output handlers in use (if any). If output_buffering is enabled or an anonymous function was used with ob_start(), ob_list_handlers() will return \"default output handler\".",
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -339,10 +279,6 @@ DefineFunction(
|
||||
'desc' => "The variable value.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -354,10 +290,6 @@ DefineFunction(
|
||||
'type' => Boolean,
|
||||
'desc' => "Returns TRUE on success or FALSE on failure.",
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -380,10 +312,6 @@ DefineFunction(
|
||||
'desc' => "Value to write to log.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -406,10 +334,6 @@ DefineFunction(
|
||||
'desc' => "An integer to add up.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -428,10 +352,6 @@ DefineFunction(
|
||||
'desc' => "Name of the entry.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -443,10 +363,6 @@ DefineFunction(
|
||||
'type' => VariantMap,
|
||||
'desc' => "Array of thread statuses.",
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -458,10 +374,6 @@ DefineFunction(
|
||||
'type' => VariantMap,
|
||||
'desc' => "Array of all I/O so far for current thread.",
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -480,10 +392,6 @@ DefineFunction(
|
||||
'desc' => "Specifies the logical name to replace with.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -503,10 +411,6 @@ DefineFunction(
|
||||
'desc' => "same as in microtime() to specify output format, except it defaults to true for float format.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -526,10 +430,6 @@ DefineFunction(
|
||||
'desc' => "Specifies what format to use, whether to serialize into a string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -540,10 +440,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
'desc' => "Returns the current instruction counter value."
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -554,10 +450,6 @@ DefineFunction(
|
||||
'type' => Variant,
|
||||
'desc' => "An array of hardware counters",
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -576,20 +468,12 @@ DefineFunction(
|
||||
'desc' => "comma separated list of hardware events",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
array(
|
||||
'name' => "hphp_clear_hardware_events",
|
||||
'flags' => NoInjection | HipHopSpecific,
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -71,7 +71,6 @@ DefineFunction(
|
||||
'desc' => "A mask consisting of one or more of POSIX_F_OK, POSIX_R_OK, POSIX_W_OK and POSIX_X_OK.\n\nPOSIX_R_OK, POSIX_W_OK and POSIX_X_OK request checking whether the file exists and has read, write and execute permissions, respectively. POSIX_F_OK just requests checking for the existence of the file.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -83,7 +82,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
'desc' => "Upon successful completion, returns string of the pathname to the current controlling terminal. Otherwise FALSE is returned and errno is set, which can be checked with posix_get_last_error().",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -95,7 +93,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
'desc' => "Returns the errno (error number) set by the last posix function that failed. If no errors exist, 0 is returned.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -107,7 +104,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
'desc' => "Returns a string of the absolute pathname on success. On error, returns FALSE and sets errno which can be checked with posix_get_last_error().",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -119,7 +115,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
'desc' => "Returns an integer of the effective group ID.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -131,7 +126,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
'desc' => "Returns the user id, as an integer",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -143,7 +137,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
'desc' => "Returns the real group id, as an integer.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -162,7 +155,6 @@ DefineFunction(
|
||||
'desc' => "The group id.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -180,7 +172,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -192,7 +183,6 @@ DefineFunction(
|
||||
'type' => Variant,
|
||||
'desc' => "Returns an array of integers containing the numeric group ids of the group set of the current process.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -204,7 +194,6 @@ DefineFunction(
|
||||
'type' => Variant,
|
||||
'desc' => "Returns the login name of the user, as a string.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -223,7 +212,6 @@ DefineFunction(
|
||||
'desc' => "The process id.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -235,7 +223,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
'desc' => "Returns the identifier, as an integer.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -247,7 +234,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
'desc' => "Returns the identifier, as an integer.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -259,7 +245,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
'desc' => "Returns the identifier, as an integer.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -278,7 +263,6 @@ DefineFunction(
|
||||
'desc' => "An alphanumeric username.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -297,7 +281,6 @@ DefineFunction(
|
||||
'desc' => "The user identifier.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -309,7 +292,6 @@ DefineFunction(
|
||||
'type' => Variant,
|
||||
'desc' => "Returns an associative array of elements for each limit that is defined. Each limit has a soft and a hard limit. List of possible limits returned Limit name Limit description core The maximum size of the core file. When 0, not core files are created. When core files are larger than this size, they will be truncated at this size. totalmem The maximum size of the memory of the process, in bytes. virtualmem The maximum size of the virtual memory for the process, in bytes. data The maximum size of the data segment for the process, in bytes. stack The maximum size of the process stack, in bytes. rss The maximum number of virtual pages resident in RAM maxproc The maximum number of processes that can be created for the real user ID of the calling process. memlock The maximum number of bytes of memory that may be locked into RAM. cpu The amount of time the process is allowed to use the CPU. filesize The maximum size of the data segment for the process, in bytes. openfiles One more than the maximum number of open file descriptors.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -328,7 +310,6 @@ DefineFunction(
|
||||
'desc' => "The process identifier. If set to 0, the current process is assumed. If an invalid pid is specified, then FALSE is returned and an error is set which can be checked with posix_get_last_error().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -340,7 +321,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
'desc' => "Returns the user id, as an integer",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -364,7 +344,6 @@ DefineFunction(
|
||||
'desc' => "Typically the group number from the password file.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -383,7 +362,6 @@ DefineFunction(
|
||||
'desc' => "The file descriptor.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -407,7 +385,6 @@ DefineFunction(
|
||||
'desc' => "One of the PCNTL signals constants.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -431,7 +408,6 @@ DefineFunction(
|
||||
'desc' => "The second parameter mode has to be given in octal notation (e.g. 0644). The permission of the newly created FIFO also depends on the setting of the current umask(). The permissions of the created file are (mode & ~umask).",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -467,7 +443,6 @@ DefineFunction(
|
||||
'desc' => "The minor device kernel identifier.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -486,7 +461,6 @@ DefineFunction(
|
||||
'desc' => "The group id.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -505,7 +479,6 @@ DefineFunction(
|
||||
'desc' => "The user id.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -524,7 +497,6 @@ DefineFunction(
|
||||
'desc' => "The group id.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -548,7 +520,6 @@ DefineFunction(
|
||||
'desc' => "The process group id.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -560,7 +531,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
'desc' => "Returns the session id, or -1 on errors.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -579,7 +549,6 @@ DefineFunction(
|
||||
'desc' => "The user id.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -598,7 +567,6 @@ DefineFunction(
|
||||
'desc' => "A POSIX error number, returned by posix_get_last_error(). If set to 0, then the string \"Success\" is returned.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -610,7 +578,6 @@ DefineFunction(
|
||||
'type' => Variant,
|
||||
'desc' => "Returns a hash of strings with information about the current process CPU usage. The indices of the hash are: ticks - the number of clock ticks that have elapsed since reboot. utime - user time used by the current process. stime - system time used by the current process. cutime - user time used by current process and children. cstime - system time used by current process and children.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -629,7 +596,6 @@ DefineFunction(
|
||||
'desc' => "The file descriptor.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -641,7 +607,6 @@ DefineFunction(
|
||||
'type' => Variant,
|
||||
'desc' => "Returns a hash of strings with information about the system. The indices of the hash are sysname - operating system name (e.g. Linux) nodename - system name (e.g. valiant) release - operating system release (e.g. 2.2.10) version - operating system version (e.g. #4 Tue Jul 20 17:01:36 MEST 1999) machine - system architecture (e.g. i586) domainname - DNS domainname (e.g. example.com)\n\ndomainname is a GNU extension and not part of POSIX.1, so this field is only available on GNU systems or when using the GNU libc.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -76,7 +76,6 @@ DefineFunction(
|
||||
'desc' => "If set to PREG_GREP_INVERT, this function returns the elements of the input array that do not match the given pattern.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -118,7 +117,6 @@ DefineFunction(
|
||||
'desc' => "Normally, the search starts from the beginning of the subject string. The optional parameter offset can be used to specify the alternate place from which to start the search (in bytes).\n\nUsing offset is not equivalent to passing substr(\$subject, \$offset) to preg_match() in place of the subject string, because pattern can contain assertions such as ^, \$ or (?<=x). Compare:\n\nArray ( )\n\nwhile this example\n\n\n\nwill produce Array ( [0] => Array ( [0] => def [1] => 0 ) )",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -159,7 +157,6 @@ DefineFunction(
|
||||
'desc' => "Orders results so that \$matches[0] is an array of first set of matches, \$matches[1] is an array of second set of matches, and so on.\n\n<b>example: </b>, example: <div align=\"left\">this is a test</div>, this is a test",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -200,10 +197,6 @@ DefineFunction(
|
||||
'desc' => "If specified, this variable will be filled with the number of replacements done.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -244,10 +237,6 @@ DefineFunction(
|
||||
'desc' => "If specified, this variable will be filled with the number of replacements done.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -283,10 +272,6 @@ DefineFunction(
|
||||
'desc' => "flags can be any combination of the following flags (combined with the | bitwise operator): PREG_SPLIT_NO_EMPTY If this flag is set, only non-empty pieces will be returned by preg_split().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -311,10 +296,6 @@ DefineFunction(
|
||||
'desc' => "If the optional delimiter is specified, it will also be escaped. This is useful for escaping the delimiter that is required by the PCRE functions. The / is the most commonly used delimiter.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -326,7 +307,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
'desc' => "Returns one of the following constants (explained on their own page): PREG_NO_ERROR PREG_INTERNAL_ERROR PREG_BACKTRACK_LIMIT_ERROR (see also pcre.backtrack_limit) PREG_RECURSION_LIMIT_ERROR (see also pcre.recursion_limit) PREG_BAD_UTF8_ERROR PREG_BAD_UTF8_OFFSET_ERROR (since PHP 5.3.0)",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -354,10 +334,6 @@ DefineFunction(
|
||||
'desc' => "The input string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -386,10 +362,6 @@ DefineFunction(
|
||||
'desc' => "The input string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -418,7 +390,6 @@ DefineFunction(
|
||||
'desc' => "If matches are found for parenthesized substrings of pattern and the function is called with the third argument regs, the matches will be stored in the elements of the array regs.\n\n\$regs[1] will contain the substring which starts at the first left parenthesis; \$regs[2] will contain the substring starting at the second, and so on. \$regs[0] will contain a copy of the complete string matched.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -448,7 +419,6 @@ DefineFunction(
|
||||
'desc' => "If matches are found for parenthesized substrings of pattern and the function is called with the third argument regs, the matches will be stored in the elements of the array regs.\n\n\$regs[1] will contain the substring which starts at the first left parenthesis; \$regs[2] will contain the substring starting at the second, and so on. \$regs[0] will contain a copy of the complete string matched.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -478,10 +448,6 @@ DefineFunction(
|
||||
'desc' => "If limit is set, the returned array will contain a maximum of limit elements with the last element containing the whole rest of string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -511,10 +477,6 @@ DefineFunction(
|
||||
'desc' => "If limit is set, the returned array will contain a maximum of limit elements with the last element containing the whole rest of string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -533,10 +495,6 @@ DefineFunction(
|
||||
'desc' => "The input string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -65,7 +65,6 @@ DefineFunction(
|
||||
'desc' => "The number of seconds to wait. If seconds is zero, no new alarm is created.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -96,7 +95,6 @@ DefineFunction(
|
||||
'desc' => "envs is an array of strings which are passed as environment to the program. The array is in the format of name => value, the key being the name of the environmental variable and the value being the value of that variable.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -108,7 +106,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
'desc' => "On success, the PID of the child process is returned in the parent's thread of execution, and a 0 is returned in the child's thread of execution. On failure, a -1 will be returned in the parent's context, no child process will be created, and a PHP error is raised.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -134,7 +131,6 @@ DefineFunction(
|
||||
'desc' => "One of PRIO_PGRP, PRIO_USER or PRIO_PROCESS.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -165,7 +161,6 @@ DefineFunction(
|
||||
'desc' => "One of PRIO_PGRP, PRIO_USER or PRIO_PROCESS.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -195,7 +190,6 @@ DefineFunction(
|
||||
'desc' => "Specifies whether system call restarting should be used when this signal arrives.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -220,7 +214,6 @@ DefineFunction(
|
||||
'desc' => "If wait3 is available on your system (mostly BSD-style systems), you can provide the optional options parameter. If this parameter is not provided, wait will be used for the system call. If wait3 is not available, providing a value for options will have no effect. The value of options is the value of zero or more of the following two constants OR'ed together: Possible values for options WNOHANG Return immediately if no child has exited. WUNTRACED Return for children which are stopped, and whose status has not been reported.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -250,7 +243,6 @@ DefineFunction(
|
||||
'desc' => "The value of options is the value of zero or more of the following two global constants OR'ed together: possible values for options WNOHANG return immediately if no child has exited. WUNTRACED return for children which are stopped, and whose status has not been reported.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -269,7 +261,6 @@ DefineFunction(
|
||||
'desc' => "status parameter is the status parameter supplied to a successful call to pcntl_waitpid().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -288,7 +279,6 @@ DefineFunction(
|
||||
'desc' => "status parameter is the status parameter supplied to a successful call to pcntl_waitpid().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -307,7 +297,6 @@ DefineFunction(
|
||||
'desc' => "status parameter is the status parameter supplied to a successful call to pcntl_waitpid().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -326,7 +315,6 @@ DefineFunction(
|
||||
'desc' => "status parameter is the status parameter supplied to a successful call to pcntl_waitpid().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -345,7 +333,6 @@ DefineFunction(
|
||||
'desc' => "status parameter is the status parameter supplied to a successful call to pcntl_waitpid().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -364,7 +351,6 @@ DefineFunction(
|
||||
'desc' => "status parameter is the status parameter supplied to a successful call to pcntl_waitpid().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -376,7 +362,6 @@ DefineFunction(
|
||||
'type' => Boolean,
|
||||
'desc' => "Returns TRUE on success or FALSE on failure.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -395,7 +380,6 @@ DefineFunction(
|
||||
'desc' => "The command that will be executed.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -426,7 +410,6 @@ DefineFunction(
|
||||
'desc' => "If the return_var argument is present along with the output argument, then the return status of the executed command will be written to this variable.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -451,7 +434,6 @@ DefineFunction(
|
||||
'desc' => "If the return_var argument is present, the return status of the Unix command will be placed here.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -476,7 +458,6 @@ DefineFunction(
|
||||
'desc' => "If the return_var argument is present, then the return status of the executed command will be written to this variable.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -523,7 +504,6 @@ DefineFunction(
|
||||
'desc' => "Allows you to specify additional options. Currently supported options include: suppress_errors (windows only): suppresses errors generated by this function when it's set to TRUE bypass_shell (windows only): bypass cmd.exe shell when set to TRUE context: stream context used when opening files (created with stream_context_create()) binary_pipes: open pipes in binary mode, instead of using the usual stream_encoding",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -548,7 +528,6 @@ DefineFunction(
|
||||
'desc' => "This optional parameter is only useful on POSIX operating systems; you may specify a signal to send to the process using the kill(2) system call. The default is SIGTERM.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -567,7 +546,6 @@ DefineFunction(
|
||||
'desc' => "The proc_open() resource that will be closed.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -585,7 +563,6 @@ DefineFunction(
|
||||
'desc' => "The proc_open() resource that will be evaluated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -604,7 +581,6 @@ DefineFunction(
|
||||
'desc' => "The increment value of the priority change.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -623,10 +599,6 @@ DefineFunction(
|
||||
'desc' => "The argument that will be escaped.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_SHELL",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -645,10 +617,6 @@ DefineFunction(
|
||||
'desc' => "The command that will be escaped.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_SHELL",
|
||||
),
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -63,7 +63,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -84,7 +83,6 @@ DefineFunction(
|
||||
'type' => Variant,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -101,7 +99,6 @@ DefineFunction(
|
||||
'type' => Variant,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -122,7 +119,6 @@ DefineFunction(
|
||||
'type' => Variant,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -139,7 +135,6 @@ DefineFunction(
|
||||
'type' => Variant,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -156,7 +151,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -177,7 +171,6 @@ DefineFunction(
|
||||
'type' => VariantVec,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -206,7 +199,6 @@ DefineFunction(
|
||||
'type' => VariantVec,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -227,7 +219,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -248,7 +239,6 @@ DefineFunction(
|
||||
'type' => VariantVec,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -265,7 +255,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -290,7 +279,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -319,7 +307,6 @@ DefineFunction(
|
||||
'type' => Variant,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -340,7 +327,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -365,7 +351,6 @@ DefineFunction(
|
||||
'type' => Variant,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -382,7 +367,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -393,7 +377,6 @@ DefineFunction(
|
||||
'return' => array(
|
||||
'type' => Boolean,
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -72,11 +72,6 @@ $output .= <<<CODE
|
||||
// 'value' => default value of the argument
|
||||
// 'desc' => description of the argument
|
||||
// )
|
||||
// 'taint_observer' => taint propagation information
|
||||
// array (
|
||||
// 'set_mask' => which bits to set automatically
|
||||
// 'clear_mask' => which bits to clear automatically
|
||||
// )
|
||||
// )
|
||||
|
||||
|
||||
@@ -309,20 +304,6 @@ function define_function($func, $clsname = 'function') {
|
||||
$args = '';
|
||||
}
|
||||
|
||||
$taint_observer = '';
|
||||
if (isset($func['taint_observer'])) {
|
||||
if (is_array($func['taint_observer'])) {
|
||||
push_globals();
|
||||
begin_array(false);
|
||||
out_str('set_mask', $func['taint_observer']['set_mask']);
|
||||
out_str('clear_mask', $func['taint_observer']['clear_mask']);
|
||||
end_array(false);
|
||||
$taint_observer = pop_globals();
|
||||
} else {
|
||||
$taint_observer = "false";
|
||||
}
|
||||
}
|
||||
|
||||
begin_function('DefineFunction');
|
||||
begin_array();
|
||||
out_str('name', $func['name'], true);
|
||||
@@ -331,7 +312,6 @@ function define_function($func, $clsname = 'function') {
|
||||
out_str('opt', idx_string($func, 'opt'));
|
||||
out_fmt('return', $return);
|
||||
out_fmt('args', $args);
|
||||
out_fmt('taint_observer', $taint_observer);
|
||||
out_str('note', idx_string($func, 'note'));
|
||||
end_array(false);
|
||||
end_function();
|
||||
|
||||
@@ -87,10 +87,6 @@ DefineFunction(
|
||||
'value' => "false",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -131,7 +127,6 @@ DefineFunction(
|
||||
'value' => "false",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -143,7 +138,6 @@ DefineFunction(
|
||||
'type' => Variant,
|
||||
'desc' => "Returns an array with LibXMLError objects if there are any errors in the buffer, or an empty array otherwise.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -155,7 +149,6 @@ DefineFunction(
|
||||
'type' => Variant,
|
||||
'desc' => "Returns a LibXMLError object if there is any error in the buffer, FALSE otherwise.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -167,7 +160,6 @@ DefineFunction(
|
||||
'type' => null,
|
||||
'desc' => "No value is returned.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -187,7 +179,6 @@ DefineFunction(
|
||||
'desc' => "Whether to enable user error handling.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -206,7 +197,6 @@ DefineFunction(
|
||||
'desc' => "The stream context resource (created with stream_context_create())",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -226,7 +216,6 @@ DefineFunction(
|
||||
'desc' => "Disable (TRUE) or enable (FALSE) libxml extensions (such as DOM, XMLWriter and XMLReader) to load external entities.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -67,7 +67,6 @@ DefineFunction(
|
||||
'desc' => "Set to TRUE to send error details to clients.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -86,7 +85,6 @@ DefineFunction(
|
||||
'desc' => "The object to test.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -99,7 +97,6 @@ DefineFunction(
|
||||
'desc' => "This will return the active soap version.",
|
||||
),
|
||||
'args' => array(),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -70,10 +70,6 @@ DefineFunction(
|
||||
'desc' => "A list of characters to be escaped. If charlist contains characters \\n, \\r etc., they are converted in C-like style, while other non-alphanumeric characters with ASCII codes lower than 32 and higher than 126 converted to octal representation.\n\nWhen you define a sequence of characters in the charlist argument make sure that you know what characters come between the characters that you set as the start and end of the range.\n\nAlso, if the first character in a range has a higher ASCII value than the second character in the range, no range will be constructed. Only the start, end and period characters will be escaped. Use the ord() function to find the ASCII value for a character.\n\n\n\nBe careful if you choose to escape characters 0, a, b, f, n, r, t and v. They will be converted to \\0, \\a, \\b, \\f, \\n, \\r, \\t and \\v. In PHP \\0 (NULL), \\r (carriage return), \\n (newline), \\f (form feed), \\v (vertical tab) and \\t (tab) are predefined escape sequences, while in C all of these are predefined escape sequences.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -92,10 +88,6 @@ DefineFunction(
|
||||
'desc' => "The string to be unescaped.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -114,10 +106,6 @@ DefineFunction(
|
||||
'desc' => "The string to be escaped.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -136,10 +124,6 @@ DefineFunction(
|
||||
'desc' => "The input string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -158,10 +142,6 @@ DefineFunction(
|
||||
'desc' => "A character.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -181,10 +161,6 @@ DefineFunction(
|
||||
'desc' => "A character.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -203,10 +179,6 @@ DefineFunction(
|
||||
'desc' => "The input string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -225,10 +197,6 @@ DefineFunction(
|
||||
'desc' => "The input string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -246,10 +214,6 @@ DefineFunction(
|
||||
'desc' => "The input string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -268,10 +232,6 @@ DefineFunction(
|
||||
'desc' => "The string to be reversed.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -290,10 +250,6 @@ DefineFunction(
|
||||
'desc' => "The input string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -312,10 +268,6 @@ DefineFunction(
|
||||
'desc' => "The input string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -334,10 +286,6 @@ DefineFunction(
|
||||
'desc' => "The input string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -375,10 +323,6 @@ DefineFunction(
|
||||
'desc' => "The input string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -403,10 +347,6 @@ DefineFunction(
|
||||
'desc' => "You can use the optional second parameter to specify tags which should not be stripped.\n\nHTML comments and PHP tags are also stripped. This is hardcoded and can not be changed with allowable_tags.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -431,10 +371,6 @@ DefineFunction(
|
||||
'desc' => "Optionally, the stripped characters can also be specified using the charlist parameter. Simply list all characters that you want to be stripped. With .. you can specify a range of characters.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -459,10 +395,6 @@ DefineFunction(
|
||||
'desc' => "You can also specify the characters you want to strip, by means of the charlist parameter. Simply list all characters that you want to be stripped. With .. you can specify a range of characters.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -487,10 +419,6 @@ DefineFunction(
|
||||
'desc' => "You can also specify the characters you want to strip, by means of the charlist parameter. Simply list all characters that you want to be stripped. With .. you can specify a range of characters.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => 'TAINT_BIT_NONE',
|
||||
'clear_mask' => 'TAINT_BIT_NONE',
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -511,10 +439,6 @@ DefineFunction(
|
||||
'value' => "k_HPHP_TRIM_CHARLIST",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -544,10 +468,6 @@ DefineFunction(
|
||||
'desc' => "If limit is set and positive, the returned array will contain a maximum of limit elements with the last element containing the rest of string.\n\nIf the limit parameter is negative, all components except the last -limit are returned.\n\nIf the limit parameter is zero, then this is treated as 1.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -572,10 +492,6 @@ DefineFunction(
|
||||
'desc' => "The array of strings to implode.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -596,10 +512,6 @@ DefineFunction(
|
||||
'value' => "null_variant",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -624,10 +536,6 @@ DefineFunction(
|
||||
'desc' => "Maximum length of the chunk.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -658,10 +566,6 @@ DefineFunction(
|
||||
'desc' => "The line ending sequence.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -686,10 +590,6 @@ DefineFunction(
|
||||
'desc' => "The delimiter used when splitting up str.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -724,8 +624,6 @@ DefineFunction(
|
||||
'desc' => "If passed, this will hold the number of matched and replaced needles.",
|
||||
),
|
||||
),
|
||||
// NB: TaintObserver declared in str_replace
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -759,8 +657,6 @@ DefineFunction(
|
||||
'desc' => "The number of matched and replaced needles will be returned in count which is passed by reference.",
|
||||
),
|
||||
),
|
||||
// NB: TaintObserver declared in str_replace
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -795,8 +691,6 @@ DefineFunction(
|
||||
'desc' => "If given and is positive, it represents the length of the portion of string which is to be replaced. If it is negative, it represents the number of characters from the end of string at which to stop replacing. If it is not given, then it will default to strlen( string ); i.e. end the replacing at the end of string. Of course, if length is zero then this function will have the effect of inserting replacement into string at the given start offset.",
|
||||
),
|
||||
),
|
||||
// NB: TaintObserver declared in str_replace
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -826,10 +720,6 @@ DefineFunction(
|
||||
'desc' => "If length is given and is positive, the string returned will contain at most length characters beginning from start (depending on the length of string).\n\nIf length is given and is negative, then that many characters will be omitted from the end of string (after the start position has been calculated when a start is negative). If start denotes a position beyond this truncation, an empty string will be returned.\n\nIf length is given and is 0, FALSE or NULL an empty string will be returned.\n\nIf length is omitted, the substring starting from start until the end of the string will be returned. Example #2 Using a negative length",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -865,10 +755,6 @@ DefineFunction(
|
||||
'desc' => "Optional argument pad_type can be STR_PAD_RIGHT, STR_PAD_LEFT, or STR_PAD_BOTH. If pad_type is not specified it is assumed to be STR_PAD_RIGHT.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -892,10 +778,6 @@ DefineFunction(
|
||||
'desc' => "Number of time the input string should be repeated.\n\nmultiplier has to be greater than or equal to 0. If the multiplier is set to 0, the function will return an empty string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -932,10 +814,6 @@ DefineFunction(
|
||||
'desc' => "If the cut is set to TRUE, the string is always wrapped at or before the specified width. So if you have a word that is larger than the given width, it is broken apart. (See second example).",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -966,10 +844,6 @@ DefineFunction(
|
||||
'desc' => "The ISO-8859-1 character set is used as default for the optional third charset. This defines the character set used in conversion.\n\nFollowing character sets are supported in PHP 4.3.0 and later. Supported charsets Charset Aliases Description ISO-8859-1 ISO8859-1 Western European, Latin-1 ISO-8859-15 ISO8859-15 Western European, Latin-9. Adds the Euro sign, French and Finnish letters missing in Latin-1(ISO-8859-1). UTF-8 ASCII compatible multi-byte 8-bit Unicode. cp866 ibm866, 866 DOS-specific Cyrillic charset. This charset is supported in 4.3.2. cp1251 Windows-1251, win-1251, 1251 Windows-specific Cyrillic charset. This charset is supported in 4.3.2. cp1252 Windows-1252, 1252 Windows specific charset for Western European. KOI8-R koi8-ru, koi8r Russian. This charset is supported in 4.3.2. BIG5 950 Traditional Chinese, mainly used in Taiwan. GB2312 936 Simplified Chinese, national standard character set. BIG5-HKSCS Big5 with Hong Kong extensions, Traditional Chinese. Shift_JIS SJIS, 932 Japanese EUC-JP EUCJP Japanese Any other character sets are not recognized and ISO-8859-1 will be used instead.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1006,10 +880,6 @@ DefineFunction(
|
||||
'desc' => "When double_encode is turned off PHP will not encode existing html entities. The default is to convert everything.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1034,10 +904,6 @@ DefineFunction(
|
||||
'desc' => "The quote style. One of the following constants: quote_style constants Constant Name Description ENT_COMPAT Will convert double-quotes and leave single-quotes alone (default) ENT_QUOTES Will convert both double and single quotes ENT_NOQUOTES Will leave both double and single quotes unconverted",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1074,10 +940,6 @@ DefineFunction(
|
||||
'desc' => "When double_encode is turned off PHP will not encode existing html entities, the default is to convert everything.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1114,10 +976,6 @@ DefineFunction(
|
||||
'desc' => "An array of extra ascii chars to be encoded.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1136,10 +994,6 @@ DefineFunction(
|
||||
'desc' => "The input string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1158,10 +1012,6 @@ DefineFunction(
|
||||
'desc' => "The input string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1180,10 +1030,6 @@ DefineFunction(
|
||||
'desc' => "The uuencoded data.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1202,10 +1048,6 @@ DefineFunction(
|
||||
'desc' => "The data to be encoded.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1224,10 +1066,6 @@ DefineFunction(
|
||||
'desc' => "The input string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1246,7 +1084,6 @@ DefineFunction(
|
||||
'desc' => "The data.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1271,10 +1108,6 @@ DefineFunction(
|
||||
'desc' => "An optional salt string to base the hashing on. If not provided, the behaviour is defined by the algorithm implementation and can lead to unexpected results.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1299,10 +1132,6 @@ DefineFunction(
|
||||
'desc' => "If the optional raw_output is set to TRUE, then the md5 digest is instead returned in raw binary format with a length of 16.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1326,10 +1155,6 @@ DefineFunction(
|
||||
'desc' => "If the optional raw_output is set to TRUE, then the sha1 digest is instead returned in raw binary format with a length of 20, otherwise the returned value is a 40-character hexadecimal number.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1359,10 +1184,6 @@ DefineFunction(
|
||||
'desc' => "The string replacing from.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1391,10 +1212,6 @@ DefineFunction(
|
||||
'desc' => "The target Cyrillic character set, as a single character.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1420,7 +1237,6 @@ DefineFunction(
|
||||
'desc' => "Like the htmlspecialchars() and htmlentities() functions you can optionally specify the quote_style you are working with. See the description of these modes in htmlspecialchars().",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1445,10 +1261,6 @@ DefineFunction(
|
||||
'desc' => "This optional parameter indicates maximum number of characters per line that will be returned.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1473,10 +1285,6 @@ DefineFunction(
|
||||
'desc' => "This optional parameter indicates maximum number of characters per line that will be returned.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1500,7 +1308,6 @@ DefineFunction(
|
||||
'desc' => "If locale is NULL or the empty string \"\", the locale names will be set from the values of environment variables with the same names as the above categories, or from \"LANG\".\n\nIf locale is \"0\", the locale setting is not affected, only the current setting is returned.\n\nIf locale is an array or followed by additional parameters then each array element or parameter is tried to be set as new locale until success. This is useful if a locale is known under different names on different systems or for providing a fallback for a possibly not available locale.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1511,7 +1318,6 @@ DefineFunction(
|
||||
'return' => array(
|
||||
'type' => VariantMap,
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1529,7 +1335,6 @@ DefineFunction(
|
||||
'type' => Int32,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1547,10 +1352,6 @@ DefineFunction(
|
||||
'desc' => "See sprintf() for a description of format.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1573,10 +1374,6 @@ DefineFunction(
|
||||
'type' => VariantVec,
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1594,10 +1391,6 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1620,10 +1413,6 @@ DefineFunction(
|
||||
'type' => VariantVec,
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1647,10 +1436,6 @@ DefineFunction(
|
||||
'desc' => "The interpreted format for str, which is described in the documentation for sprintf() with following differences: Function is not locale-aware. F, g, G and b are not supported. D stands for decimal number. i stands for integer with base detection. n stands for number of characters processed so far.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1669,10 +1454,6 @@ DefineFunction(
|
||||
'desc' => "The ascii code.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1691,7 +1472,6 @@ DefineFunction(
|
||||
'desc' => "A character.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1715,10 +1495,6 @@ DefineFunction(
|
||||
'desc' => "Disable the use of grouping characters (as defined by the current locale).",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1755,10 +1531,6 @@ DefineFunction(
|
||||
'desc' => "Sets the thousands separator.\n\nOnly the first character of thousands_sep is used. For example, if you use bar as thousands_sep on the number 1000, number_format() will return 1b000.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1781,7 +1553,6 @@ DefineFunction(
|
||||
'desc' => "The second string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1811,7 +1582,6 @@ DefineFunction(
|
||||
'desc' => "Number of characters to use in the comparison.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1835,7 +1605,6 @@ DefineFunction(
|
||||
'desc' => "The second string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1859,7 +1628,6 @@ DefineFunction(
|
||||
'desc' => "The second string",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1889,7 +1657,6 @@ DefineFunction(
|
||||
'desc' => "The length of strings to be used in the comparison.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1913,7 +1680,6 @@ DefineFunction(
|
||||
'desc' => "The second string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1937,7 +1703,6 @@ DefineFunction(
|
||||
'desc' => "The second string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1978,7 +1743,6 @@ DefineFunction(
|
||||
'desc' => "If case_insensitivity is TRUE, comparison is case insensitive.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -1998,10 +1762,6 @@ DefineFunction(
|
||||
'type' => Variant,
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2025,10 +1785,6 @@ DefineFunction(
|
||||
'desc' => "If needle contains more than one character, only the first is used. This behavior is different from that of strstr().\n\nIf needle is not a string, it is converted to an integer and applied as the ordinal value of a character.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2058,10 +1814,6 @@ DefineFunction(
|
||||
'desc' => "If TRUE, strstr() returns the part of the haystack before the first occurrence of the needle (excluding the needle).",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2085,10 +1837,6 @@ DefineFunction(
|
||||
'desc' => "If needle is not a string, it is converted to an integer and applied as the ordinal value of a character.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2112,10 +1860,6 @@ DefineFunction(
|
||||
'desc' => "This parameter is case sensitive.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2145,7 +1889,6 @@ DefineFunction(
|
||||
'desc' => "The optional offset parameter allows you to specify which character in haystack to start searching. The position returned is still relative to the beginning of haystack.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2175,7 +1918,6 @@ DefineFunction(
|
||||
'desc' => "The optional offset parameter allows you to specify which character in haystack to start searching. The position returned is still relative to the beginning of haystack.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2205,7 +1947,6 @@ DefineFunction(
|
||||
'desc' => "May be specified to begin searching an arbitrary number of characters into the string. Negative values will stop searching at an arbitrary point prior to the end of the string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2235,7 +1976,6 @@ DefineFunction(
|
||||
'desc' => "The offset parameter may be specified to begin searching an arbitrary number of characters into the string.\n\nNegative offset values will start the search at offset characters from the start of the string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2271,7 +2011,6 @@ DefineFunction(
|
||||
'desc' => "The maximum length after the specified offset to search for the substring. It outputs a warning if the offset plus the length is greater than the haystack length.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2307,7 +2046,6 @@ DefineFunction(
|
||||
'desc' => "The length of the segment from subject to examine.\n\nIf length is given and is non-negative, then subject will be examined for length characters after the starting position.\n\nIf lengthis given and is negative, then subject will be examined from the starting position up to length characters from the end of subject.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2343,7 +2081,6 @@ DefineFunction(
|
||||
'desc' => "The length of the string to examine.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2362,7 +2099,6 @@ DefineFunction(
|
||||
'desc' => "The string being measured for length.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2387,7 +2123,6 @@ DefineFunction(
|
||||
'desc' => "See return values.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2418,7 +2153,6 @@ DefineFunction(
|
||||
'desc' => "A list of additional characters which will be considered as 'word'",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2460,7 +2194,6 @@ DefineFunction(
|
||||
'desc' => "Defines the cost of deletion.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2490,7 +2223,6 @@ DefineFunction(
|
||||
'desc' => "By passing a reference as third argument, similar_text() will calculate the similarity in percent for you.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2509,10 +2241,6 @@ DefineFunction(
|
||||
'desc' => "The input string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2537,10 +2265,6 @@ DefineFunction(
|
||||
'desc' => "This parameter restricts the returned metaphone key to phonemes characters in length. The default value of 0 means no restriction.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -2565,7 +2289,6 @@ DefineFunction(
|
||||
'desc' => "If the second parameter arr is present, variables are stored in this variable as array elements instead.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -58,7 +58,6 @@ DefineFunction(
|
||||
'type' => Boolean,
|
||||
'desc' => "TRUE if the current thread is a service thread, FALSE otherwise."
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -69,7 +68,6 @@ DefineFunction(
|
||||
'return' => array(
|
||||
'type' => null,
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -88,7 +86,6 @@ DefineFunction(
|
||||
'desc' => "How many seconds to wait for system to tell us.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -100,7 +97,6 @@ DefineFunction(
|
||||
'type' => Boolean,
|
||||
'desc' => "TRUE if warmed up already, FALSE otherwise.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -111,7 +107,6 @@ DefineFunction(
|
||||
'return' => array(
|
||||
'type' => null,
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -123,7 +118,6 @@ DefineFunction(
|
||||
'type' => Int64,
|
||||
'desc' => "The pthread_self() return.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -135,7 +129,6 @@ DefineFunction(
|
||||
'type' => Int32,
|
||||
'desc' => "The tid of the current running thread. In Linux, this is gettid()",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -82,7 +82,6 @@ DefineFunction(
|
||||
'type' => Boolean,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -106,7 +105,6 @@ DefineFunction(
|
||||
'type' => Boolean,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
|
||||
@@ -71,10 +71,6 @@ DefineFunction(
|
||||
'desc' => "Returns FALSE if input contains character from outside the base64 alphabet.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -93,10 +89,6 @@ DefineFunction(
|
||||
'desc' => "The data to encode.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -121,10 +113,6 @@ DefineFunction(
|
||||
'desc' => "If the optional format parameter is set to non-zero, get_headers() parses the response and sets the array's keys.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -149,10 +137,6 @@ DefineFunction(
|
||||
'desc' => "Setting use_include_path to TRUE will result in PHP trying to open the file along the standard include path as per the include_path directive. This is used for local files, not URLs.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -183,10 +167,6 @@ DefineFunction(
|
||||
'desc' => "arg_separator.output is used to separate arguments, unless this parameter is specified, and is then used.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -211,10 +191,6 @@ DefineFunction(
|
||||
'desc' => "Specify one of PHP_URL_SCHEME, PHP_URL_HOST, PHP_URL_PORT, PHP_URL_USER, PHP_URL_PASS, PHP_URL_PATH, PHP_URL_QUERY or PHP_URL_FRAGMENT to retrieve just a specific URL component as a string.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -233,10 +209,6 @@ DefineFunction(
|
||||
'desc' => "The URL to be decoded.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -255,10 +227,6 @@ DefineFunction(
|
||||
'desc' => "The URL to be encoded.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -277,10 +245,6 @@ DefineFunction(
|
||||
'desc' => "The string to be decoded.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -299,10 +263,6 @@ DefineFunction(
|
||||
'desc' => "The string to be encoded.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -65,7 +65,6 @@ DefineFunction(
|
||||
'desc' => "The variable being evaluated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -84,7 +83,6 @@ DefineFunction(
|
||||
'desc' => "The variable being evaluated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -100,7 +98,6 @@ DefineFunction(
|
||||
'type' => Any,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -116,7 +113,6 @@ DefineFunction(
|
||||
'type' => Any,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -132,7 +128,6 @@ DefineFunction(
|
||||
'type' => Any,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -151,7 +146,6 @@ DefineFunction(
|
||||
'desc' => "The variable being evaluated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -170,7 +164,6 @@ DefineFunction(
|
||||
'desc' => "The variable being evaluated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -186,7 +179,6 @@ DefineFunction(
|
||||
'type' => Any,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -205,7 +197,6 @@ DefineFunction(
|
||||
'desc' => "The variable being evaluated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -224,7 +215,6 @@ DefineFunction(
|
||||
'desc' => "The variable being evaluated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -243,7 +233,6 @@ DefineFunction(
|
||||
'desc' => "The variable being evaluated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -262,7 +251,6 @@ DefineFunction(
|
||||
'desc' => "The variable being evaluated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -281,7 +269,6 @@ DefineFunction(
|
||||
'desc' => "The variable being evaluated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -300,7 +287,6 @@ DefineFunction(
|
||||
'desc' => "The variable being evaluated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -319,7 +305,6 @@ DefineFunction(
|
||||
'desc' => "The variable being type checked.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -338,7 +323,6 @@ DefineFunction(
|
||||
'desc' => "The evaluated resource handle.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -363,7 +347,6 @@ DefineFunction(
|
||||
'desc' => "The base for the conversion",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -379,7 +362,6 @@ DefineFunction(
|
||||
'type' => Any,
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -398,7 +380,6 @@ DefineFunction(
|
||||
'desc' => "May be any scalar type. floatval() should not be used on objects, as doing so will emit an E_NOTICE level error and return 1.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -416,7 +397,6 @@ DefineFunction(
|
||||
'desc' => "The variable that is being converted to a string.\n\nvar may be any scalar type or an object that implements the __toString method. You cannot use strval() on arrays or on objects that do not implement the __toString method.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -440,7 +420,6 @@ DefineFunction(
|
||||
'desc' => "Possibles values of type are: \"boolean\" (or, since PHP 4.2.0, \"bool\") \"integer\" (or, since PHP 4.2.0, \"int\") \"float\" (only possible since PHP 4.2.0, for older versions use the deprecated variant \"double\") \"string\" \"array\" \"object\" \"null\" (since PHP 4.2.0)",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -465,10 +444,6 @@ DefineFunction(
|
||||
'desc' => "If you would like to capture the output of print_r(), use the return parameter. When this parameter is set to TRUE, print_r() will return the information rather than print it.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -492,10 +467,6 @@ DefineFunction(
|
||||
'desc' => "If used and set to TRUE, var_export() will return the variable representation instead of outputing it.\n\nThis function uses internal output buffering with this parameter so it can not be used inside an ob_start() callback function.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -513,10 +484,6 @@ DefineFunction(
|
||||
'desc' => "The variable you want to export.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -535,10 +502,6 @@ DefineFunction(
|
||||
'desc' => "The variable being evaluated.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_NONE",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -557,10 +520,6 @@ DefineFunction(
|
||||
'desc' => "The value to be serialized. serialize() handles all types, except the resource-type. You can even serialize() arrays that contain references to itself. Circular references inside the array/object you are serializing will also be stored. Any other reference will be lost.\n\nWhen serializing objects, PHP will attempt to call the member function __sleep prior to serialization. This is to allow the object to do any last minute clean-up, etc. prior to being serialized. Likewise, when the object is restored using unserialize() the __wakeup member function is called.\n\nObject's private members have the class name prepended to the member name; protected members have a '*' prepended to the member name. These prepended values have null bytes on either side.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -578,10 +537,6 @@ DefineFunction(
|
||||
'desc' => "The serialized string.\n\nIf the variable being unserialized is an object, after successfully reconstructing the object PHP will automatically attempt to call the __wakeup() member function (if it exists).\n\nunserialize_callback_func directive\n\nIt's possible to set a callback-function which will be called, if an undefined class should be instantiated during unserializing. (to prevent getting an incomplete object \"__PHP_Incomplete_Class\".) Use your php.ini, ini_set() or .htaccess to define 'unserialize_callback_func'. Everytime an undefined class should be instantiated, it'll be called. To disable this feature just empty this setting.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
'set_mask' => "TAINT_BIT_MUTATED",
|
||||
'clear_mask' => "TAINT_BIT_NONE",
|
||||
),
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -593,7 +548,6 @@ DefineFunction(
|
||||
'type' => VariantMap,
|
||||
'desc' => "A multidimensional array with all the variables.",
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -618,7 +572,6 @@ DefineFunction(
|
||||
'desc' => "Variable name prefix, prepended before all variable's name imported into the global scope. So if you have a GET value named \"userid\", and provide a prefix \"pref_\", then you'll get a global variable named \$pref_userid.\n\nAlthough the prefix parameter is optional, you will get an E_NOTICE level error if you specify no prefix, or specify an empty string as a prefix. This is a possible security hazard. Notice level errors are not displayed using the default error reporting level.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
DefineFunction(
|
||||
@@ -649,7 +602,6 @@ DefineFunction(
|
||||
'desc' => "If there is a collision, don't overwrite the existing variable.",
|
||||
),
|
||||
),
|
||||
'taint_observer' => false,
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -474,7 +474,6 @@ Array ArrayUtil::EnsureIntKeys(CArrRef input) {
|
||||
Variant ArrayUtil::ChangeKeyCase(CArrRef input, bool lower) {
|
||||
Array ret = Array::Create();
|
||||
for (ArrayIter iter(input); iter; ++iter) {
|
||||
TAINT_OBSERVER(TAINT_BIT_MUTATED, TAINT_BIT_NONE);
|
||||
Variant key(iter.first());
|
||||
if (key.isString()) {
|
||||
if (lower) {
|
||||
|
||||
@@ -818,7 +818,6 @@ Variant unserialize_ex(CStrRef str, VariableUnserializer::Type type) {
|
||||
}
|
||||
|
||||
String concat3(CStrRef s1, CStrRef s2, CStrRef s3) {
|
||||
TAINT_OBSERVER(TAINT_BIT_NONE, TAINT_BIT_NONE);
|
||||
StringSlice r1 = s1.slice();
|
||||
StringSlice r2 = s2.slice();
|
||||
StringSlice r3 = s3.slice();
|
||||
@@ -833,7 +832,6 @@ String concat3(CStrRef s1, CStrRef s2, CStrRef s3) {
|
||||
}
|
||||
|
||||
String concat4(CStrRef s1, CStrRef s2, CStrRef s3, CStrRef s4) {
|
||||
TAINT_OBSERVER(TAINT_BIT_NONE, TAINT_BIT_NONE);
|
||||
StringSlice r1 = s1.slice();
|
||||
StringSlice r2 = s2.slice();
|
||||
StringSlice r3 = s3.slice();
|
||||
@@ -850,8 +848,6 @@ String concat4(CStrRef s1, CStrRef s2, CStrRef s3, CStrRef s4) {
|
||||
}
|
||||
|
||||
String concat5(CStrRef s1, CStrRef s2, CStrRef s3, CStrRef s4, CStrRef s5) {
|
||||
TAINT_OBSERVER(TAINT_BIT_NONE, TAINT_BIT_NONE);
|
||||
|
||||
int len1 = s1.size();
|
||||
int len2 = s2.size();
|
||||
int len3 = s3.size();
|
||||
@@ -870,8 +866,6 @@ String concat5(CStrRef s1, CStrRef s2, CStrRef s3, CStrRef s4, CStrRef s5) {
|
||||
|
||||
String concat6(CStrRef s1, CStrRef s2, CStrRef s3, CStrRef s4, CStrRef s5,
|
||||
CStrRef s6) {
|
||||
TAINT_OBSERVER(TAINT_BIT_NONE, TAINT_BIT_NONE);
|
||||
|
||||
int len1 = s1.size();
|
||||
int len2 = s2.size();
|
||||
int len3 = s3.size();
|
||||
|
||||
@@ -25,8 +25,6 @@
|
||||
#include <runtime/base/intercept.h>
|
||||
#include <runtime/base/runtime_error.h>
|
||||
#include <runtime/base/runtime_option.h>
|
||||
#include <runtime/base/taint/taint_data.h>
|
||||
#include <runtime/base/taint/taint_observer.h>
|
||||
#include <runtime/base/variable_unserializer.h>
|
||||
#include <runtime/base/util/request_local.h>
|
||||
#include <runtime/base/strings.h>
|
||||
@@ -128,15 +126,12 @@ inline double negate(double v) { return -v; }
|
||||
inline Variant negate(CVarRef v) { return -(Variant)v; }
|
||||
|
||||
inline String concat(CStrRef s1, CStrRef s2) {
|
||||
TAINT_OBSERVER(TAINT_BIT_NONE, TAINT_BIT_NONE);
|
||||
return s1 + s2;
|
||||
}
|
||||
inline String &concat_assign(String &s1, litstr s2) {
|
||||
TAINT_OBSERVER(TAINT_BIT_NONE, TAINT_BIT_NONE);
|
||||
return s1 += s2;
|
||||
}
|
||||
inline String &concat_assign(String &s1, CStrRef s2) {
|
||||
TAINT_OBSERVER(TAINT_BIT_NONE, TAINT_BIT_NONE);
|
||||
return s1 += s2;
|
||||
}
|
||||
|
||||
@@ -148,8 +143,6 @@ String concat6(CStrRef s1, CStrRef s2, CStrRef s3, CStrRef s4, CStrRef s5,
|
||||
CStrRef s6);
|
||||
|
||||
inline Variant &concat_assign(Variant &v1, litstr s2) {
|
||||
TAINT_OBSERVER(TAINT_BIT_NONE, TAINT_BIT_NONE);
|
||||
|
||||
if (v1.getType() == KindOfString) {
|
||||
StringData *data = v1.getStringData();
|
||||
if (data->getCount() == 1) {
|
||||
@@ -164,8 +157,6 @@ inline Variant &concat_assign(Variant &v1, litstr s2) {
|
||||
}
|
||||
|
||||
inline Variant &concat_assign(Variant &v1, CStrRef s2) {
|
||||
TAINT_OBSERVER(TAINT_BIT_NONE, TAINT_BIT_NONE);
|
||||
|
||||
if (v1.getType() == KindOfString) {
|
||||
StringData *data = v1.getStringData();
|
||||
if (data->getCount() == 1) {
|
||||
@@ -223,8 +214,6 @@ inline int print(const char *s) {
|
||||
}
|
||||
inline int print(CStrRef s) {
|
||||
// print is not a real function. x_print exists, but this function gets called
|
||||
// directly. We therefore need to setup the TaintObserver.
|
||||
TAINT_OBSERVER(TAINT_BIT_NONE, TAINT_BIT_NONE);
|
||||
g_context->write(s);
|
||||
return 1;
|
||||
}
|
||||
@@ -233,8 +222,6 @@ inline void echo(const char *s) {
|
||||
}
|
||||
inline void echo(CStrRef s) {
|
||||
// echo is not a real function. x_echo exists, but this function gets called
|
||||
// directly. We therefore need to setup the TaintObserver.
|
||||
TAINT_OBSERVER(TAINT_BIT_NONE, TAINT_BIT_NONE);
|
||||
g_context->write(s);
|
||||
}
|
||||
|
||||
|
||||
@@ -31,8 +31,6 @@
|
||||
#include <runtime/base/memory/sweepable.h>
|
||||
#include <runtime/base/runtime_option.h>
|
||||
#include <runtime/eval/debugger/debugger.h>
|
||||
#include <runtime/base/taint/taint_data.h>
|
||||
#include <runtime/base/taint/taint_warning.h>
|
||||
#include <runtime/vm/event_hook.h>
|
||||
#include <runtime/ext/ext_string.h>
|
||||
#include <util/logger.h>
|
||||
@@ -223,15 +221,6 @@ void BaseExecutionContext::setRequestMemoryMaxBytes(int64_t max) {
|
||||
// write()
|
||||
|
||||
void BaseExecutionContext::write(CStrRef s) {
|
||||
#ifdef TAINTED
|
||||
if (!getTransport() && !m_out) {
|
||||
// We are running a PHP script and we are about to echo to stdout
|
||||
TaintWarning::WarnIfTainted(s, TAINT_BIT_HTML);
|
||||
} else if (getTransport() && m_buffers.size() == 2) {
|
||||
// We are responding to a request and we are about to echo to stdout
|
||||
TaintWarning::WarnIfTainted(s, TAINT_BIT_HTML);
|
||||
}
|
||||
#endif
|
||||
write(s.data(), s.size());
|
||||
}
|
||||
|
||||
|
||||
@@ -156,8 +156,6 @@ public:
|
||||
HphpArray,
|
||||
ObjectData,
|
||||
GlobalVariables,
|
||||
TaintTraceNode,
|
||||
TaintTraceData,
|
||||
TestGlobals
|
||||
};
|
||||
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
#include <runtime/base/builtin_functions.h>
|
||||
#include <runtime/base/zend/zend_functions.h>
|
||||
#include <runtime/base/array/array_iterator.h>
|
||||
#include <runtime/base/taint/taint_observer.h>
|
||||
#include <tbb/concurrent_hash_map.h>
|
||||
|
||||
#define PREG_PATTERN_ORDER 1
|
||||
@@ -76,7 +75,6 @@ typedef tbb::concurrent_hash_map<const StringData*,const pcre_cache_entry*,
|
||||
static PCREStringMap s_pcreCacheMap;
|
||||
|
||||
static const pcre_cache_entry* lookup_cached_pcre(CStrRef regex) {
|
||||
TAINT_OBSERVER_CAP_STACK();
|
||||
PCREStringMap::const_accessor acc;
|
||||
if (s_pcreCacheMap.find(acc, regex.get())) {
|
||||
return acc->second;
|
||||
@@ -86,7 +84,6 @@ static const pcre_cache_entry* lookup_cached_pcre(CStrRef regex) {
|
||||
|
||||
static const pcre_cache_entry*
|
||||
insert_cached_pcre(CStrRef regex, const pcre_cache_entry* ent) {
|
||||
TAINT_OBSERVER_CAP_STACK();
|
||||
PCREStringMap::accessor acc;
|
||||
if (s_pcreCacheMap.insert(acc, StringData::GetStaticString(regex.get()))) {
|
||||
acc->second = ent;
|
||||
|
||||
@@ -760,7 +760,6 @@ static int execute_program_impl(int argc, char **argv) {
|
||||
("version", "display version number")
|
||||
("compiler-id", "display the git hash for the compiler id")
|
||||
("repo-schema", "display the repo schema id used by this app")
|
||||
("taint-status", "check if the compiler was built with taint enabled")
|
||||
("mode,m", value<string>(&po.mode)->default_value("run"),
|
||||
"run | debug (d) | server (s) | daemon | replay | translate (t)")
|
||||
("config,c", value<string>(&po.config),
|
||||
@@ -862,13 +861,6 @@ static int execute_program_impl(int argc, char **argv) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (vm.count("taint-status")) {
|
||||
#ifdef TAINTED
|
||||
cout << TAINTED << "\n";
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!po.show.empty()) {
|
||||
PlainFile f;
|
||||
f.open(po.show, "r");
|
||||
|
||||
@@ -362,11 +362,6 @@ int RuntimeOption::ScannerType = 0;
|
||||
int RuntimeOption::MaxUserFunctionId = (2 * 65536);
|
||||
bool RuntimeOption::EnableFinallyStatement = false;
|
||||
|
||||
#ifdef TAINTED
|
||||
bool RuntimeOption::EnableTaintWarnings = false;
|
||||
int RuntimeOption::TaintTraceMaxStrlen = 127;
|
||||
#endif
|
||||
|
||||
// Initializers for Eval flags.
|
||||
static inline bool evalJitDefault() {
|
||||
// --mode server or --mode daemon
|
||||
@@ -1110,11 +1105,6 @@ void RuntimeOption::Load(Hdf &config, StringVec *overwrites /* = NULL */,
|
||||
|
||||
EnableFinallyStatement = eval["EnableFinallyStatement"].getBool();
|
||||
|
||||
#ifdef TAINTED
|
||||
EnableTaintWarnings = eval["EnableTaintWarnings"].getBool();
|
||||
TaintTraceMaxStrlen = eval["TaintTraceMaxStrlen"].getInt32(127);
|
||||
#endif
|
||||
|
||||
#define get_double getDouble
|
||||
#define get_bool getBool
|
||||
#define get_string getString
|
||||
|
||||
@@ -367,11 +367,6 @@ public:
|
||||
static int MaxUserFunctionId;
|
||||
static bool EnableFinallyStatement;
|
||||
|
||||
#ifdef TAINTED
|
||||
static bool EnableTaintWarnings;
|
||||
static int TaintTraceMaxStrlen;
|
||||
#endif
|
||||
|
||||
static std::set<std::string, stdltistr> DynamicInvokeFunctions;
|
||||
|
||||
#define EVALFLAGS() \
|
||||
|
||||
@@ -30,8 +30,6 @@
|
||||
#include <runtime/base/server/replay_transport.h>
|
||||
#include <runtime/base/server/virtual_host.h>
|
||||
#include <runtime/base/util/http_client.h>
|
||||
#include <runtime/base/taint/taint_helper.h>
|
||||
#include <runtime/base/taint/taint_observer.h>
|
||||
|
||||
#define DEFAULT_POST_CONTENT_TYPE "application/x-www-form-urlencoded"
|
||||
|
||||
@@ -372,13 +370,6 @@ void HttpProtocol::PrepareSystemVariables(Transport *transport,
|
||||
const char *threadType = transport->getThreadTypeName();
|
||||
server.set("THREAD_TYPE", threadType);
|
||||
StackTraceNoHeap::AddExtraLogging("ThreadType", threadType);
|
||||
|
||||
#ifdef TAINTED
|
||||
TAINT_OBSERVER_CAP_STACK();
|
||||
|
||||
taint_array_variant(g->GV(_GET), "$_GET");
|
||||
taint_array_variant(g->GV(_POST), "$_POST");
|
||||
#endif
|
||||
}
|
||||
|
||||
std::string HttpProtocol::RecordRequest(Transport *transport) {
|
||||
|
||||
@@ -100,7 +100,6 @@ void StringData::initLiteral(const char* data, int len) {
|
||||
m_cdata = data;
|
||||
m_big.cap = len | IsLiteral;
|
||||
assert(checkSane());
|
||||
TAINT_OBSERVER_REGISTER_MUTATED(m_taint_data, rawdata());
|
||||
}
|
||||
|
||||
void StringData::enlist() {
|
||||
@@ -167,7 +166,6 @@ void StringData::initAttach(const char* data, int len) {
|
||||
free((void*)data);
|
||||
}
|
||||
assert(checkSane());
|
||||
TAINT_OBSERVER_REGISTER_MUTATED(m_taint_data, rawdata());
|
||||
}
|
||||
|
||||
HOT_FUNC
|
||||
@@ -197,7 +195,6 @@ void StringData::initCopy(const char* data, int len) {
|
||||
m_big.cap = len | IsSmart;
|
||||
}
|
||||
assert(checkSane());
|
||||
TAINT_OBSERVER_REGISTER_MUTATED(m_taint_data, rawdata());
|
||||
}
|
||||
|
||||
HOT_FUNC
|
||||
@@ -222,7 +219,6 @@ void StringData::initMalloc(const char* data, int len) {
|
||||
m_big.cap = len | IsMalloc;
|
||||
}
|
||||
assert(checkSane());
|
||||
TAINT_OBSERVER_REGISTER_MUTATED(m_taint_data, rawdata());
|
||||
}
|
||||
|
||||
HOT_FUNC
|
||||
@@ -236,7 +232,6 @@ StringData::StringData(SharedVariant *shared)
|
||||
m_big.shared = shared;
|
||||
m_big.cap = m_len | IsShared;
|
||||
enlist();
|
||||
TAINT_OBSERVER_REGISTER_MUTATED(m_taint_data, rawdata());
|
||||
}
|
||||
|
||||
HOT_FUNC
|
||||
@@ -327,7 +322,6 @@ void StringData::append(const char *s, int len) {
|
||||
// size to avoid O(N^2) copying cost.
|
||||
if (isShared() || isLiteral()) {
|
||||
// buffer is immutable, don't modify it.
|
||||
// We are mutating, so we don't need to repropagate our own taint
|
||||
StringSlice r = slice();
|
||||
char* newdata = smart_concat(r.ptr, r.len, s, len);
|
||||
if (isShared()) {
|
||||
@@ -340,7 +334,6 @@ void StringData::append(const char *s, int len) {
|
||||
m_hash = 0;
|
||||
} else if (rawdata() == s) {
|
||||
// appending ourself to ourself, be conservative.
|
||||
// We are mutating, so we don't need to repropagate our own taint
|
||||
StringSlice r = slice();
|
||||
char *newdata = smart_concat(r.ptr, r.len, s, len);
|
||||
releaseData();
|
||||
@@ -350,7 +343,6 @@ void StringData::append(const char *s, int len) {
|
||||
m_hash = 0;
|
||||
} else if (isSmall()) {
|
||||
// we're currently small but might not be after append.
|
||||
// We are mutating, so we don't need to repropagate our own taint
|
||||
uint32_t oldlen = m_len;
|
||||
newlen = oldlen + len;
|
||||
if (newlen <= MaxSmallSize) {
|
||||
@@ -405,7 +397,6 @@ void StringData::append(const char *s, int len) {
|
||||
m_hash = 0;
|
||||
}
|
||||
assert(newlen <= MaxSize);
|
||||
TAINT_OBSERVER_REGISTER_MUTATED(m_taint_data, rawdata());
|
||||
assert(checkSane());
|
||||
}
|
||||
|
||||
@@ -507,10 +498,6 @@ void StringData::dump() const {
|
||||
printf("\\x%02x", ch);
|
||||
}
|
||||
}
|
||||
#ifdef TAINTED
|
||||
printf("\n");
|
||||
this->getTaintDataRefConst().dump();
|
||||
#endif
|
||||
printf("]\n");
|
||||
}
|
||||
|
||||
@@ -554,7 +541,6 @@ void StringData::setChar(int offset, CStrRef substring) {
|
||||
if (uint32_t(offset) < s.len) {
|
||||
((char*)s.ptr)[offset] = c;
|
||||
} else if (offset <= RuntimeOption::StringOffsetLimit) {
|
||||
// We are mutating, so we don't need to repropagate our own taint
|
||||
uint32_t newlen = offset + 1;
|
||||
MutableSlice buf = isImmutable() ? escalate(newlen) : reserve(newlen);
|
||||
memset(buf.ptr + s.len, ' ', newlen - s.len);
|
||||
@@ -696,7 +682,6 @@ void StringData::set(CVarRef key, CStrRef v) {
|
||||
|
||||
void StringData::preCompute() const {
|
||||
assert(!isShared()); // because we are gonna reuse the space!
|
||||
// We don't want to collect taint for a hash
|
||||
StringSlice s = slice();
|
||||
m_hash = hash_string(s.ptr, s.len);
|
||||
assert(m_hash >= 0);
|
||||
@@ -720,7 +705,6 @@ DataType StringData::isNumericWithVal(int64_t &lval, double &dval,
|
||||
DataType ret = KindOfNull;
|
||||
StringSlice s = slice();
|
||||
if (s.len) {
|
||||
// Not involved in further string construction/mutation; no taint pickup
|
||||
ret = is_numeric_string(s.ptr, s.len, &lval, &dval, allow_errors);
|
||||
if (ret == KindOfNull && !isShared() && allow_errors) {
|
||||
m_hash |= STRHASH_MSB;
|
||||
@@ -760,7 +744,6 @@ bool StringData::isInteger() const {
|
||||
}
|
||||
|
||||
bool StringData::isValidVariableName() const {
|
||||
// Not involved in further string construction/mutation; no taint pickup
|
||||
StringSlice s = slice();
|
||||
return is_valid_var_name(s.ptr, s.len);
|
||||
}
|
||||
@@ -770,13 +753,11 @@ bool StringData::toBoolean() const {
|
||||
}
|
||||
|
||||
int64_t StringData::toInt64(int base /* = 10 */) const {
|
||||
// Taint absorbtion unnecessary; taint is recreated later for numerics
|
||||
return strtoll(rawdata(), nullptr, base);
|
||||
}
|
||||
|
||||
double StringData::toDouble() const {
|
||||
StringSlice s = slice();
|
||||
// Taint absorbtion unnecessary; taint is recreated later for numerics
|
||||
if (s.len) return zend_strtod(s.ptr, nullptr);
|
||||
return 0;
|
||||
}
|
||||
@@ -839,7 +820,6 @@ int StringData::compare(const StringData *v2) const {
|
||||
int len1 = size();
|
||||
int len2 = v2->size();
|
||||
int len = len1 < len2 ? len1 : len2;
|
||||
// No taint absorption on self-contained string ops like compare
|
||||
ret = memcmp(rawdata(), v2->rawdata(), len);
|
||||
if (ret) return ret;
|
||||
if (len1 == len2) return 0;
|
||||
@@ -850,7 +830,6 @@ int StringData::compare(const StringData *v2) const {
|
||||
|
||||
HOT_FUNC
|
||||
strhash_t StringData::hashHelper() const {
|
||||
// We don't want to collect taint for a hash
|
||||
strhash_t h = isShared() ? m_big.shared->stringHash() :
|
||||
hash_string_inline(m_data, m_len);
|
||||
assert(h >= 0);
|
||||
|
||||
@@ -25,8 +25,6 @@
|
||||
#include <util/hash.h>
|
||||
#include <util/alloc.h>
|
||||
#include <runtime/base/util/exceptions.h>
|
||||
#include <runtime/base/taint/taint_observer.h>
|
||||
#include <runtime/base/taint/taint_data.h>
|
||||
|
||||
namespace HPHP {
|
||||
|
||||
@@ -252,20 +250,13 @@ public:
|
||||
const char *data() const {
|
||||
// TODO: t1800106: re-enable this assert
|
||||
//assert(rawdata()[size()] == 0); // all strings must be null-terminated
|
||||
TAINT_OBSERVER_REGISTER_ACCESSED(m_taint_data);
|
||||
return rawdata();
|
||||
}
|
||||
// This method should only be used internally by the String class.
|
||||
const char *dataIgnoreTaint() const {
|
||||
// TODO: t1800106: re-enable this assert
|
||||
//assert(rawdata()[size()] == 0); // all strings must be null-terminated
|
||||
return rawdata();
|
||||
}
|
||||
int size() const { return m_len; }
|
||||
static uint sizeOffset() { return offsetof(StringData, m_len); }
|
||||
int capacity() const { return isSmall() ? MaxSmallSize : bigCap(); }
|
||||
StringSlice slice() const {
|
||||
TAINT_OBSERVER_REGISTER_ACCESSED(m_taint_data);
|
||||
return StringSlice(m_data, m_len);
|
||||
}
|
||||
bool empty() const { return size() == 0;}
|
||||
@@ -287,11 +278,6 @@ public:
|
||||
bool isZero() const { return size() == 1 && rawdata()[0] == '0'; }
|
||||
bool isValidVariableName() const;
|
||||
|
||||
#ifdef TAINTED
|
||||
TaintData& getTaintDataRef() { return m_taint_data; }
|
||||
const TaintData& getTaintDataRefConst() const { return m_taint_data; }
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Mutations.
|
||||
*/
|
||||
@@ -410,9 +396,6 @@ public:
|
||||
uint64_t cap;
|
||||
} m_big;
|
||||
};
|
||||
#ifdef TAINTED
|
||||
TaintData m_taint_data;
|
||||
#endif
|
||||
|
||||
private:
|
||||
/**
|
||||
|
||||
@@ -1,334 +0,0 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| HipHop for PHP |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 2010 Facebook, Inc. (http://www.facebook.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
+----------------------------------------------------------------------+
|
||||
|
||||
|
||||
/******************************************
|
||||
* |1| What is tainting / taint analysis? *
|
||||
******************************************/
|
||||
|
||||
Tainting (wikipedia:Taint_checking) is a mechanism used for detecting data
|
||||
that poses a security threat (i.e., any user-controlled data), tracking this
|
||||
data across all codepaths, and ultimately preventing or flagging dangerous
|
||||
uses (e.g., echos, queries, shell commands). Tainting is generally used to
|
||||
preempt XSS injection attacks, either by failing to execute things like curl,
|
||||
eval, or exec when run on strings controlled by the user or, more
|
||||
realistically for an imperfect codebase and with more ubiquitous calls like
|
||||
echo, by providing valuable debugging information dynamically. However, the
|
||||
mechanism of tainting, which simply involves attaching small amounts of
|
||||
metadata to target variables and propagating this metadata through code
|
||||
execution, can be extended to other similar purposes.
|
||||
|
||||
In HPHP (with taint analysis enabled), only PHP strings are given taints and
|
||||
thereafter tracked. This "taint" comes in the form of a small sequence of
|
||||
bit flags, which can be multipurposed and used for various semantics.
|
||||
|
||||
Note that only tainting strings comes with some disadvantages. In particular,
|
||||
malicious code designed to ignore taint could destroy it, for example, thusly
|
||||
|
||||
$s = '';
|
||||
for ($i = 0; $i < strlen($tainted_string); $i++) {
|
||||
$s .= chr(ord($tainted_string[$i]));
|
||||
}
|
||||
|
||||
In general, it's hard to prevent malicious code from clearing taint, so the
|
||||
utility of tainting is dependent on the lack of a desire in developers to
|
||||
undermine security.
|
||||
|
||||
For more HPHP tainting details, see |3| Taint analysis in HPHP.
|
||||
|
||||
|
||||
/***********************************************
|
||||
* |2| How to build HPHP with string tainting. *
|
||||
***********************************************/
|
||||
|
||||
Compiling string tainting into HPHP simply requires that you set a flag in
|
||||
your local/$USER.mk file:
|
||||
|
||||
TAINTED = 1
|
||||
|
||||
Then from $HPHP_HOME, run
|
||||
|
||||
make clean
|
||||
make -C src -j
|
||||
|
||||
This will build hphp and hhvm with taint enabled. Running an hhvm server
|
||||
or compiling code and running in server mode is done the usual way.
|
||||
|
||||
|
||||
/******************************
|
||||
* |3| Taint analysis in HPHP *
|
||||
******************************/
|
||||
|
||||
// 3.1: HPHP string types
|
||||
|
||||
In addition to the typical char * and std::string representations of strings,
|
||||
HPHP has a complex type system which is used both internally and to parallel
|
||||
PHP strings. The implementations of these strings are mostly restricted to
|
||||
the following files (all pathnames relative to $HPHP_HOME/src):
|
||||
|
||||
runtime/base/type_string.{h,cpp}
|
||||
runtime/base/string_data.{h,cpp}
|
||||
runtime/base/util/string_buffer.{h,cpp}
|
||||
runtime/base/type_variant.{h,cpp}
|
||||
|
||||
Unfortunately for implementors of taint semantics, there is no perfect mirror
|
||||
for PHP strings. The String class is used to represent all PHP strings, but
|
||||
is also used for various other internal purposes; moreover, String is merely
|
||||
a wrapper for the StringData class which actually carries the raw char * as
|
||||
well as the fundamental string operations, and StringData is used as the
|
||||
data source for even more varied sorts of strings, such as StaticString.
|
||||
|
||||
For simplicity, taint bits are carried by only the StringData and StringBuffer
|
||||
classes (the latter of which is a completely separate string implementation
|
||||
used to optimize combinatory operations on large numbers of strings). However,
|
||||
since these two types are used for every string type in HPHP (sometimes both
|
||||
are used in the process of constructing a string), to ensure proper tainting
|
||||
semantics, caution must be taken.
|
||||
|
||||
Taint, however, is a property that is generally associated with variables
|
||||
rather than with data. A design more conducive to taint semantics might
|
||||
include taint in the variable types (String and Variant) rather than in the
|
||||
data types, but the perf impact of this has not been examined. Treating taint
|
||||
as a write operation and performing copy-on-taint is another idea, but also
|
||||
has not been investigated.
|
||||
|
||||
Instrumenting taint in StringData proves more fickle. For instance, the
|
||||
following PHP code
|
||||
|
||||
<?php
|
||||
$a = 'foo';
|
||||
$b = $a;
|
||||
fb_set_taint($b, TAINT_ALL);
|
||||
echo fb_get_taint('foo', TAINT_ALL);
|
||||
|
||||
will echo value because String types share StringData until modified. In
|
||||
practice, this particular situation is more or less irrelevant to actual
|
||||
use of the taint system, but it does highlight one of the design quirks of
|
||||
the system.
|
||||
|
||||
A brief overview of HPHP string representations:
|
||||
|
||||
<String>: The String class is HPHP's C++ parallel to PHP strings. However,
|
||||
it is also used internally and mostly acts as a wrapper for StringData.
|
||||
Relatively little work for taint is done (or should be done) from this
|
||||
class.
|
||||
|
||||
<StringData>: The meat of HPHP's strings. The semantics of when taint is
|
||||
set, read, and propagated is implemented here, and the taint bits
|
||||
themselves are also embedded in these objects. The implementation in
|
||||
StringData ensures that tainting happens and happens correctly. For
|
||||
cases and string representations that should not involve taint, we
|
||||
need to do our work from a higher level, such as the wrapper classes.
|
||||
|
||||
<StaticString>: Global strings that are only used internally. The entire
|
||||
set of StaticStrings is generated before any request begins. Tainting
|
||||
is inactive during this period, and none of these strings are user-
|
||||
influenced, so we do no work in this class. Though they do wrap
|
||||
StringData, these strings will never be tainted because they do not
|
||||
mutate after their creation time. Of import is the fact that these
|
||||
strings DO NOT represent static or literal PHP strings, which do not
|
||||
have their own specialized representation.
|
||||
|
||||
<StringBuffer>: A completely separate implementation of strings. Like
|
||||
StringData, it carries a raw char * and string ops, as well as taint
|
||||
bits; however, it is not wrapped. It maintains semantics of taint much
|
||||
like StringData.
|
||||
|
||||
<Variant>: A representation of a variable with unknown or readily changing
|
||||
type. Like String, it wraps StringData (although only sometimes) and
|
||||
hence involves little to no taint work.
|
||||
|
||||
// 3.2: The TaintObserver class
|
||||
|
||||
The TaintObserver class was the result of evaluating several possible
|
||||
implementations of string tainting. It is essentially a thread-local,
|
||||
singleton object with a notion of scope that absorbs, processes, and
|
||||
propagates taint information at the level of string access, creation, and
|
||||
mutation.
|
||||
|
||||
The critical advantage of this approach is that we don't need to convert the
|
||||
entire HPHP codebase to be taint-aware. The TaintObserver allows us to keep
|
||||
the mechanism of tainting restricted to the StringData class, while allowing
|
||||
us to declare different policies and semantics for tainting in as many and
|
||||
as specific parts of the codebase as we please. It also allows us to continue
|
||||
using raw char * operations in the Zend codebase.
|
||||
|
||||
The TaintObserver has three core methods:
|
||||
|
||||
::TaintObserver: The class's constructor. Construction of TaintObserver
|
||||
objects is restricted to the stack, and the TaintObservers contain
|
||||
an m_previous pointer such that they form their own stack (this is
|
||||
a reasonably common C++ paradigm) with an implicit pop operation
|
||||
that happens on frame destruction. Meanwhile, instantiating a new
|
||||
TaintObserver is an explicit push op, and this TaintObserver will
|
||||
become the active instance until either another TaintObserver is
|
||||
pushed or until it goes out of scope with the rest of its resident
|
||||
frame, at which point the previous TaintObserver takes over. Note
|
||||
that the default case is that no TaintObserver is in scope, which
|
||||
means that no taints will be created or destroyed. This is surprisingly
|
||||
important because of how TaintObservers propagate taint, discussed
|
||||
below.
|
||||
|
||||
The TaintObserver stack is the mechanism that allows us to apply
|
||||
specific policies to specific regions of HPHP. When we instantiate
|
||||
a TaintObserver, it is often the first one on the stack and serves
|
||||
the purposes of initializing taint tracking. For instance, when
|
||||
concatenating two strings, we invoke a TaintObserver, which will
|
||||
absorb the taints of the strings we concatenate, which will ultimately
|
||||
propagate to the new StringData object due to calls made within the
|
||||
StringData methods. This TaintObserver will die as soon as we leave
|
||||
the scope in which we wanted the tainting to occur, ensuring that
|
||||
we don't over-taint.
|
||||
|
||||
Meanwhile, the TaintObserver also contains set_mask and clear_mask
|
||||
fields, which when set with certain bits, will cause those bits to be
|
||||
forcibly set or omitted from all mutated or created strings while that
|
||||
TaintObserver is active. If neither are set, propagation occurs
|
||||
normally.
|
||||
|
||||
::RegisterAccessed: Called whenever a StringData or StringBuffer's raw
|
||||
char * data is accessed. This causes the active TaintObserver to
|
||||
absorb that object's taint.
|
||||
|
||||
It is important that we call this on every access of data which will
|
||||
lead to the formation of a new String, which is the case with most
|
||||
calls to String::data(). However, for operations like find() or same(),
|
||||
we want to avoid tainting because the string will not propagate, and
|
||||
hence neither should the string. External compare operations, however,
|
||||
should be using the internal find(), same(), and related methods, and
|
||||
so only the data() call should be called from outside the String class
|
||||
itself.
|
||||
|
||||
::RegisterMutated: Called whenever a new StringData or StringBuffer
|
||||
object is created or whenever an existing object's data is mutated.
|
||||
All of the taints that the active TaintObserver has absorbed will
|
||||
fall through to the new/mutated string.
|
||||
|
||||
Note that both Register methods rely on externally declared TaintObservers
|
||||
in order to do anything at all. This allows us to restrict when we should
|
||||
pay attention to taint (e.g., when following a PHP codepath) and when we
|
||||
don't (e.g., internal operations). To do this, we modified idl/base.php
|
||||
to allow for customization of taint semantics - from the idl files, we can
|
||||
choose whether a function instantiates a TaintObserver, and what the set_mask
|
||||
and clear_mask should be.
|
||||
|
||||
The versatility of the TaintObserver, while allowing us all the above boons,
|
||||
comes with a painful price. One such price is that the scoping of the stack
|
||||
of TaintObservers is sensitive to errors. If a TaintObserver is accidentally
|
||||
instantiated, it will amass all taints of all strings it touches and propagate
|
||||
it to all newly created strings. For instance, if a TaintObserver were
|
||||
instantiated in call_user_func_array(), after falling through to the new PHP
|
||||
codepath, after reading a tainted string, all subsequent strings, including
|
||||
literals or even constant names, will become tainted with the read taint.
|
||||
The StringData class unquestioningly makes TaintObserver calls, so we must be
|
||||
careful about where we do and do not instantiate TaintObservers , which
|
||||
will determine whether those StringData calls do any real work. Except when
|
||||
we are on the user boundary (i.e., in extension functions or in concats),
|
||||
we probably don't want TaintObservers around.
|
||||
|
||||
The issue of scoping also highlights the other major disadvantage of the
|
||||
TaintObserver system, which is that TaintObservers have a fundamentally local
|
||||
and restricted understanding of taint. A TaintObserver blindly absorbs all the
|
||||
taints of strings that are accessed while it is active and will blindly
|
||||
propagate the sum of all those taints to any created or mutated strings.
|
||||
This leaves us no options for, say, ignoring the taint of the delimiter
|
||||
string passed to an explode().
|
||||
|
||||
Fortunately, though, both of these issues only ever lead to false positives
|
||||
at the time of taint detection, so neither are losses in security. This is
|
||||
especially good because tainting is fundamentally a blackslist system; we
|
||||
should err heavily on the side of false positives when possible.
|
||||
|
||||
// 3.3: Existing taints
|
||||
|
||||
The following taint semantics are implemented.
|
||||
|
||||
- TAINT_BIT_HTML: This bit represents whether or not a string is safe for
|
||||
echoing to a page. Unlike the SQL and SHELL bits, this bit is not unset
|
||||
in the PHP builtin sanitization functions (htmlspecialchars() and
|
||||
htmlentities()) to allow for external control (e.g in XHP).
|
||||
|
||||
- TAINT_BIT_MUTATED: This bit allows us to determine dynamically whether
|
||||
or not a string is a literal or a concatenation of literals. This is
|
||||
done by having the mutation bit set by all extension functions and on
|
||||
all strings that come from the user. It serves as a good example of
|
||||
a taint which uses the taint mechanism but does not server the typical
|
||||
purpose of taints.
|
||||
|
||||
- TAINT_BIT_SQL: This bit represents whether or not a string is safe for
|
||||
MySQL queries. It is unset in mysql_real_escape_string().
|
||||
|
||||
- TAINT_BIT_SHELL: This bit represents whether or not a string is safe for
|
||||
shell execs. It is unset in escapeshellarg() and escapeshellcmd().
|
||||
|
||||
Currently, strings are marked as tainted whenever they come out of user-
|
||||
provided parameters, MySQL queries, or Memcache fetches.
|
||||
|
||||
// 3.4: Taint tracing
|
||||
|
||||
The tainting system also includes a mechanism for tracing the propagation of
|
||||
taint. Taint already represents a negative impact on perf; performing trace
|
||||
with any level of useful information creates an enormous footprint. For this
|
||||
reason, the taint tracing system is heavily gated with exposed functions that
|
||||
allow it to be used for very targeted debugging purposes.
|
||||
|
||||
Currently, we support two sorts of traces: a TRACE_HTML, which tracks the
|
||||
propagation of HTML tainted strings, and TRACE_SELF, which is a method of
|
||||
tracking specific strings as they move across the codebase. Both of these
|
||||
traces share the same trace mechanism. We instrument trace by attaching trees
|
||||
of stack traces and source strings to any strings under certain conditions.
|
||||
These trace trees are aggressively shared between tainted strings and the
|
||||
trace tree nodes do not mutate once they are created (we construct the tree
|
||||
upwards from the leaves and create new nodes when we pass subtrees from
|
||||
tainted strings to the TaintObserver, which collect traces along with
|
||||
taints). The strings that represent the actual trace information are
|
||||
meanwhile hashed in a RequestLocal set to enable more sharing.
|
||||
|
||||
For TRACE_HTML, the condition for generating a trace is that the current
|
||||
TaintObserver has encountered both an HTML-tainted and an HTML-untainted
|
||||
string while in scope. We then drop the TRACE_HTML bit so that our trace
|
||||
has first-encounter-with-taint semantics. For TRACE_SELF, we propagate the
|
||||
bit and generate a new trace for each time we propagate.
|
||||
|
||||
Semantics for traces are configurable beyond their base definitions; for
|
||||
example, when tracing the HTML bit, we add new traces whenever a source
|
||||
string first is exposed to an untainted string, but we can skip tracing or
|
||||
delay the trace further upstream by configuring TAINT_OBSERVER() calls.
|
||||
Similar functionality could be instrumented for TAINT_SELF but currently is
|
||||
not.
|
||||
|
||||
|
||||
/******************************
|
||||
* |4| PHP tainting interface *
|
||||
******************************/
|
||||
|
||||
In order to provide extensibility to the HPHP tainting implementation, the
|
||||
taint constants, along with methods to get, set, and unset taint, namely
|
||||
|
||||
bool fb_get_taint(string s, int taint);
|
||||
void fb_set_taint(string s, int taint);
|
||||
void fb_unset_taint(string s, int taint);
|
||||
|
||||
are exposed as PHP extensions.
|
||||
|
||||
Meanwhile, the HTML trace can be activated using
|
||||
|
||||
void fb_enable_html_taint_trace()
|
||||
|
||||
A system for checking if suppressed warnings were generated also exists.
|
||||
Currently, we simply tally warnings that were suppressed, but we could
|
||||
additionally keep other data, such as the outputted string. This is
|
||||
accessible as an array indexed by taint, retrieved using
|
||||
|
||||
Array fb_get_warning_counts()
|
||||
@@ -1,76 +0,0 @@
|
||||
/*
|
||||
+----------------------------------------------------------------------+
|
||||
| HipHop for PHP |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 2010- Facebook, Inc. (http://www.facebook.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
+----------------------------------------------------------------------+
|
||||
*/
|
||||
|
||||
#ifdef TAINTED
|
||||
|
||||
#include <runtime/base/taint/taint_data.h>
|
||||
#include <runtime/base/taint/taint_trace.h>
|
||||
|
||||
namespace HPHP {
|
||||
|
||||
void TaintData::setTaintTrace(TaintTraceNodePtr trace) {
|
||||
assert(!TAINT_ISSET_ORIG(m_taint_bits));
|
||||
|
||||
// Check if the new trace is just the old trace under a dummy node.
|
||||
bool is_retrace = m_taint_trace.get() &&
|
||||
trace.get() && !trace->getNext().get() &&
|
||||
m_taint_trace.get() == trace->getChild().get();
|
||||
|
||||
if (trace.get() && !is_retrace) {
|
||||
m_taint_trace = trace;
|
||||
}
|
||||
}
|
||||
|
||||
void TaintData::setTaintTrace(TaintTraceDataPtr data) {
|
||||
assert(!m_taint_trace.get());
|
||||
if (data.get()) {
|
||||
m_taint_trace = NEW(TaintTraceNode)(nullptr, data);
|
||||
}
|
||||
}
|
||||
|
||||
void TaintData::attachTaintTrace(TaintTraceNodePtr trace) {
|
||||
assert(!TAINT_ISSET_ORIG(m_taint_bits));
|
||||
|
||||
// Check if the trace we're attaching is ourselves or our child/sibling.
|
||||
bool is_retrace = m_taint_trace.get() &&
|
||||
(trace.get() == m_taint_trace.get() ||
|
||||
trace.get() == m_taint_trace->getChild().get() ||
|
||||
trace.get() == m_taint_trace->getNext().get());
|
||||
|
||||
if (trace.get() && !is_retrace) {
|
||||
m_taint_trace = NEW(TaintTraceNode)(m_taint_trace, trace);
|
||||
}
|
||||
}
|
||||
|
||||
void TaintData::attachTaintTrace(TaintTraceDataPtr data) {
|
||||
assert(!TAINT_ISSET_ORIG(m_taint_bits));
|
||||
if (data.get()) {
|
||||
m_taint_trace = NEW(TaintTraceNode)(m_taint_trace, data);
|
||||
}
|
||||
}
|
||||
|
||||
void TaintData::dropTaintTrace() {
|
||||
assert(!TAINT_ISSET_ORIG(m_taint_bits));
|
||||
m_taint_trace.reset();
|
||||
}
|
||||
|
||||
void TaintData::dump() const {
|
||||
printf("Taint: %x\n", m_taint_bits);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif // TAINTED
|
||||
@@ -1,78 +0,0 @@
|
||||
/*
|
||||
+----------------------------------------------------------------------+
|
||||
| HipHop for PHP |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 2010- Facebook, Inc. (http://www.facebook.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
+----------------------------------------------------------------------+
|
||||
*/
|
||||
|
||||
#ifndef __HPHP_TAINT_DATA_H__
|
||||
#define __HPHP_TAINT_DATA_H__
|
||||
|
||||
#include <runtime/base/taint/taint_trace_node.h>
|
||||
|
||||
/*
|
||||
* Taint bits have the semantic of being propagated by OR; untainted then
|
||||
* implies a semantic of propagation by AND. Note that some taint bits are
|
||||
* bit-packed flags and do not function as taints.
|
||||
*/
|
||||
#define TAINT_BIT_NONE (0x00)
|
||||
#define TAINT_BIT_HTML (0x01)
|
||||
#define TAINT_BIT_MUTATED (0x02)
|
||||
#define TAINT_BIT_SQL (0x04)
|
||||
#define TAINT_BIT_SHELL (0x08)
|
||||
#define TAINT_BIT_ALL_NO_TRACE (0x0f)
|
||||
#define TAINT_BIT_TRACE_HTML (0x10)
|
||||
#define TAINT_BIT_ALL (0x1f)
|
||||
#define TAINT_BIT_TRACE_SELF (0x20)
|
||||
#define TAINT_BIT_TRACE_ALL (0x30)
|
||||
|
||||
#define TAINT_BITS_RESERVED (0xe0000000)
|
||||
#define TAINT_GET_TAINT(bits) ((bits) & (~TAINT_BITS_RESERVED))
|
||||
#define TAINT_GET_FLAGS(bits) ((bits) & (TAINT_BITS_RESERVED))
|
||||
|
||||
#ifdef TAINTED
|
||||
|
||||
namespace HPHP {
|
||||
|
||||
typedef int taint_t;
|
||||
|
||||
class TaintData {
|
||||
public:
|
||||
TaintData() : m_taint_bits(TAINT_BIT_NONE), m_taint_trace() { }
|
||||
|
||||
taint_t getTaint() const { return TAINT_GET_TAINT(m_taint_bits); }
|
||||
taint_t getRawTaint() const { return m_taint_bits; }
|
||||
void setTaint(taint_t bits) { m_taint_bits |= bits; }
|
||||
void unsetTaint(taint_t bits) {
|
||||
m_taint_bits &= (~bits);
|
||||
if (bits & TAINT_BIT_HTML) { dropTaintTrace(); }
|
||||
}
|
||||
|
||||
const TaintTraceNodePtr& getTaintTrace() const { return m_taint_trace; }
|
||||
void setTaintTrace(TaintTraceNodePtr trace);
|
||||
void setTaintTrace(TaintTraceDataPtr data);
|
||||
void attachTaintTrace(TaintTraceNodePtr trace);
|
||||
void attachTaintTrace(TaintTraceDataPtr data);
|
||||
void dropTaintTrace();
|
||||
|
||||
void dump() const;
|
||||
|
||||
private:
|
||||
taint_t m_taint_bits;
|
||||
TaintTraceNodePtr m_taint_trace;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // TAINTED
|
||||
|
||||
#endif // __HPHP_TAINT_DATA_H__
|
||||
@@ -1,75 +0,0 @@
|
||||
/*
|
||||
+----------------------------------------------------------------------+
|
||||
| HipHop for PHP |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 2010- Facebook, Inc. (http://www.facebook.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
+----------------------------------------------------------------------+
|
||||
*/
|
||||
|
||||
#ifdef TAINTED
|
||||
|
||||
#include <runtime/base/complex_types.h>
|
||||
#include <runtime/base/array/array_iterator.h>
|
||||
#include <runtime/base/taint/taint_data.h>
|
||||
#include <runtime/base/taint/taint_helper.h>
|
||||
#include <runtime/base/taint/taint_observer.h>
|
||||
#include <runtime/base/taint/taint_trace.h>
|
||||
|
||||
namespace HPHP {
|
||||
|
||||
void taint_array_variant(Variant& v, const std::string s, bool iskey) {
|
||||
assert(!TaintObserver::IsActive());
|
||||
|
||||
if (v.isString()) {
|
||||
TaintData& td = v.asStrRef().get()->getTaintDataRef();
|
||||
|
||||
std::string str;
|
||||
if (iskey) {
|
||||
str = s + " {using key}";
|
||||
} else /* isval */ {
|
||||
str = s + ": " + v.toString().c_str();
|
||||
}
|
||||
|
||||
td.setTaint(TAINT_BIT_ALL | TAINT_FLAG_ORIG);
|
||||
assert(!td.getTaintTrace().get());
|
||||
// We don't call TaintTracer::Trace on these strings because they:
|
||||
// (1) are likely to be unique and not to match function calls or
|
||||
// filenames or other params; and
|
||||
// (2) may persist across requests, at which point they will have been
|
||||
// cleared from the trace set and cannot be reinserted because the
|
||||
// neither a new request nor new trace set will have been init'd.
|
||||
td.setTaintTrace(NEW(TaintTraceData)(str));
|
||||
assert(!td.getTaintTrace()->getNext().get());
|
||||
assert(!td.getTaintTrace()->getChild().get());
|
||||
}
|
||||
|
||||
if (v.isArray()) {
|
||||
CArrRef a = v.toCArrRef();
|
||||
for (ArrayIter iter(a); iter; ++iter) {
|
||||
// Taint the key if it is actually a string (in cases where we have a
|
||||
// URI like /foo.php?123=hello, the key will have type int, so we skip
|
||||
// it since we only taint strings).
|
||||
Variant key = iter.first();
|
||||
std::string str = s + "[" + key.toString().c_str() + "]";
|
||||
if (key.isString()) {
|
||||
taint_array_variant(key, str, true);
|
||||
}
|
||||
|
||||
// Taint the value.
|
||||
Variant value = iter.second();
|
||||
taint_array_variant(value, str, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif // TAINTED
|
||||
@@ -1,31 +0,0 @@
|
||||
/*
|
||||
+----------------------------------------------------------------------+
|
||||
| HipHop for PHP |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 2010- Facebook, Inc. (http://www.facebook.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
+----------------------------------------------------------------------+
|
||||
*/
|
||||
|
||||
#ifndef __HPHP_TAINT_HELPER_H__
|
||||
#define __HPHP_TAINT_HELPER_H__
|
||||
|
||||
#ifdef TAINTED
|
||||
|
||||
namespace HPHP {
|
||||
|
||||
void taint_array_variant(Variant& v, const std::string s, bool iskey=false);
|
||||
|
||||
}
|
||||
|
||||
#endif // TAINTED
|
||||
|
||||
#endif // __HPHP_TAINT_HELPER_H__
|
||||
|
||||
@@ -1,83 +0,0 @@
|
||||
/*
|
||||
+----------------------------------------------------------------------+
|
||||
| HipHop for PHP |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 2010- Facebook, Inc. (http://www.facebook.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
+----------------------------------------------------------------------+
|
||||
*/
|
||||
|
||||
#ifdef TAINTED
|
||||
|
||||
#include <runtime/base/complex_types.h>
|
||||
#include <runtime/base/taint/taint_data.h>
|
||||
#include <runtime/base/taint/taint_observer.h>
|
||||
#include <runtime/base/taint/taint_trace.h>
|
||||
|
||||
namespace HPHP {
|
||||
|
||||
IMPLEMENT_THREAD_LOCAL(TaintObserver*, TaintObserver::instance);
|
||||
|
||||
void TaintObserver::RegisterAccessed(const TaintData& td) {
|
||||
if (!IsActive()) { return; }
|
||||
|
||||
// Prevent recursive calls into the TaintObserver.
|
||||
TaintObserver *tc = *instance;
|
||||
TAINT_OBSERVER_CAP_STACK();
|
||||
|
||||
// If the string is HTML-untainted, set the HTML_CLEAN flag.
|
||||
if (!(td.getTaint() & TAINT_BIT_HTML)) {
|
||||
tc->m_current_taint.setTaint(TAINT_FLAG_HTML_CLEAN);
|
||||
}
|
||||
|
||||
// Absorb the taint and any trace data.
|
||||
tc->m_current_taint.setTaint(td.getTaint());
|
||||
if (TaintTracer::IsTraceEnabled(TAINT_BIT_TRACE_HTML)) {
|
||||
tc->m_current_taint.attachTaintTrace(td.getTaintTrace());
|
||||
}
|
||||
}
|
||||
|
||||
void TaintObserver::RegisterMutated(TaintData& td, const char *s) {
|
||||
if (!IsActive()) { return; }
|
||||
|
||||
// Prevent recursive calls into the TaintObserver.
|
||||
TaintObserver *tc = *instance;
|
||||
TAINT_OBSERVER_CAP_STACK();
|
||||
|
||||
taint_t t = tc->m_current_taint.getTaint();
|
||||
taint_t set_mask = tc->m_set_mask;
|
||||
taint_t clear_mask = tc->m_clear_mask;
|
||||
|
||||
// Trace the passed string if we're asked to inside some extension function.
|
||||
if ((set_mask & TAINT_BIT_TRACE_HTML) && s) {
|
||||
td.attachTaintTrace(NEW(TaintTraceData)(TaintTracer::Trace(s, true, true)));
|
||||
}
|
||||
|
||||
bool do_trace = (t & TAINT_BIT_HTML) &&
|
||||
(t & TAINT_BIT_TRACE_HTML) &&
|
||||
(tc->m_current_taint.getRawTaint() & TAINT_FLAG_HTML_CLEAN);
|
||||
|
||||
// Perform HTML trace as desired.
|
||||
if (TaintTracer::IsTraceEnabled(TAINT_BIT_TRACE_HTML) && do_trace) {
|
||||
t &= ~TAINT_BIT_TRACE_HTML;
|
||||
TaintTraceDataPtr ttd = TaintTracer::CreateTrace();
|
||||
tc->m_current_taint.attachTaintTrace(ttd);
|
||||
}
|
||||
|
||||
// Propagate the taint and any trace data.
|
||||
td.setTaint(set_mask | (~clear_mask & t));
|
||||
if (TaintTracer::IsTraceEnabled(TAINT_BIT_TRACE_HTML)) {
|
||||
td.setTaintTrace(tc->m_current_taint.getTaintTrace());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif // TAINTED
|
||||
@@ -1,120 +0,0 @@
|
||||
/*
|
||||
+----------------------------------------------------------------------+
|
||||
| HipHop for PHP |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 2010- Facebook, Inc. (http://www.facebook.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
+----------------------------------------------------------------------+
|
||||
*/
|
||||
|
||||
#ifndef __HPHP_TAINT_OBSERVER_H__
|
||||
#define __HPHP_TAINT_OBSERVER_H__
|
||||
|
||||
#ifdef TAINTED
|
||||
|
||||
#include <util/thread_local.h>
|
||||
#include <runtime/base/taint/taint_data.h>
|
||||
|
||||
/**
|
||||
* The purpose of this class is to keep track of which strings are getting
|
||||
* "read" and which strings are getting created. This allows us to taint
|
||||
* strings by modifying the idl, and saves us from having taint related
|
||||
* code spread all over the HPHP codebase. This code is meant to be created
|
||||
* in the stack. You can therefore not make calls such as new TaintObserver().
|
||||
*
|
||||
* While adding convenience, the TaintObserver system has some downsides,
|
||||
* which are explained further in the README.
|
||||
*/
|
||||
|
||||
// This flag is marked in the taints of $_GET, $_POST, and relevant $_COOKIE
|
||||
// and $_SERVER keys and values. It is never passed and is used to ensure that
|
||||
// we never modify the initial traces given to these strings.
|
||||
#define TAINT_FLAG_ORIG (0x80000000)
|
||||
#define TAINT_ISSET_ORIG(bits) ((bits) & TAINT_FLAG_ORIG)
|
||||
|
||||
// This flag is set in a TaintObserver's m_current_taint when it encounters
|
||||
// an HTML-untainted string. It allows us to determine when an HTML-tainted
|
||||
// string first makes contact with a clean string. If both this flag and the
|
||||
// HTML bit itself are set at the time of String creation (i.e., mutation),
|
||||
// then we capture trace data.
|
||||
#define TAINT_FLAG_HTML_CLEAN (0x40000000)
|
||||
|
||||
namespace HPHP {
|
||||
|
||||
class TaintObserver {
|
||||
public:
|
||||
// The standard TaintObserver constructor. By default, registered taints in
|
||||
// a TaintObserver are propagated to all strings created or mutated within
|
||||
// its scope. Setting m_set_mask or m_clear_mask will, respectively,
|
||||
// forcibly apply or remove taints to/from new strings.
|
||||
TaintObserver(taint_t set_mask, taint_t clear_mask)
|
||||
: m_set_mask(set_mask), m_clear_mask(clear_mask), m_previous(*instance),
|
||||
m_cap_stack(m_previous ? m_previous->m_cap_stack : false) {
|
||||
*instance = this;
|
||||
}
|
||||
|
||||
// Setting m_cap_stack turns all TaintObserver ops, besides construction and
|
||||
// destruction, into no-ops. This allows us to turn off tainting when in
|
||||
// particularly sensitive HPHP-internal scopes.
|
||||
TaintObserver(bool cap) : m_previous(*instance), m_cap_stack(cap) {
|
||||
*instance = this;
|
||||
}
|
||||
|
||||
~TaintObserver() { *instance = m_previous; }
|
||||
|
||||
// This functions needs to be called whenever data inside strings is accessed.
|
||||
static void RegisterAccessed(const TaintData& td);
|
||||
|
||||
// This function needs to be called whenever a string is created or mutated.
|
||||
static void RegisterMutated(TaintData& td, const char *s);
|
||||
|
||||
static bool IsActive() { return *instance && !(*instance)->m_cap_stack; }
|
||||
|
||||
private:
|
||||
TaintData m_current_taint;
|
||||
taint_t m_set_mask;
|
||||
taint_t m_clear_mask;
|
||||
TaintObserver* m_previous;
|
||||
bool m_cap_stack;
|
||||
|
||||
static DECLARE_THREAD_LOCAL(TaintObserver*, instance);
|
||||
|
||||
// Disallow new, copy constructor, and assignment operator.
|
||||
void* operator new(long unsigned int size);
|
||||
TaintObserver(const TaintObserver&);
|
||||
TaintObserver& operator=(const TaintObserver&);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
// Helper macro. If you use TAINT_OBSERVER, you don't need to
|
||||
// wrap things in #ifdef TAINTED ... #endif
|
||||
#define TAINT_OBSERVER(set, clear) \
|
||||
TaintObserver taint_observer((set), (clear))
|
||||
|
||||
#define TAINT_OBSERVER_CAP_STACK() \
|
||||
TaintObserver taint_observer(true)
|
||||
|
||||
#define TAINT_OBSERVER_REGISTER_ACCESSED(td) \
|
||||
TaintObserver::RegisterAccessed((td))
|
||||
|
||||
#define TAINT_OBSERVER_REGISTER_MUTATED(td, s) \
|
||||
TaintObserver::RegisterMutated((td), (s))
|
||||
|
||||
#else
|
||||
|
||||
#define TAINT_OBSERVER(set, clear) /* do nothing (note: not ; friendly) */
|
||||
#define TAINT_OBSERVER_CAP_STACK() /* do nothing */
|
||||
#define TAINT_OBSERVER_REGISTER_ACCESSED(td) /* do nothing */
|
||||
#define TAINT_OBSERVER_REGISTER_MUTATED(td, s) /* do nothing */
|
||||
|
||||
#endif // TAINTED
|
||||
|
||||
#endif // __HPHP_TAINT_OBSERVER_H__
|
||||
@@ -1,168 +0,0 @@
|
||||
/*
|
||||
+----------------------------------------------------------------------+
|
||||
| HipHop for PHP |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 2010- Facebook, Inc. (http://www.facebook.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
+----------------------------------------------------------------------+
|
||||
*/
|
||||
|
||||
#ifdef TAINTED
|
||||
|
||||
#include <runtime/base/frame_injection.h>
|
||||
#include <runtime/base/runtime_option.h>
|
||||
#include <runtime/base/util/extended_logger.h>
|
||||
#include <runtime/base/array/array_iterator.h>
|
||||
#include <runtime/base/taint/taint_observer.h>
|
||||
#include <runtime/base/taint/taint_trace.h>
|
||||
|
||||
namespace HPHP {
|
||||
|
||||
IMPLEMENT_REQUEST_LOCAL(TaintTracerRequestData, TaintTracer::s_requestdata);
|
||||
IMPLEMENT_SMART_ALLOCATION(TaintTraceData);
|
||||
IMPLEMENT_SMART_ALLOCATION(TaintTraceNode);
|
||||
|
||||
/*
|
||||
* TaintTraceDataPtr methods
|
||||
*/
|
||||
TaintTraceDataPtr::TaintTraceDataPtr() { }
|
||||
|
||||
TaintTraceDataPtr::~TaintTraceDataPtr() { }
|
||||
|
||||
TaintTraceDataPtr::TaintTraceDataPtr(TaintTraceData* ttd)
|
||||
: SmartPtr<TaintTraceData>(ttd) { }
|
||||
|
||||
TaintTraceDataPtr::TaintTraceDataPtr(const TaintTraceDataPtr& ttd)
|
||||
: SmartPtr<TaintTraceData>(ttd) { }
|
||||
|
||||
/*
|
||||
* TaintTracer methods
|
||||
*/
|
||||
String TaintTracer::Trace(String str, bool copy, bool truncate) {
|
||||
assert(!TaintObserver::IsActive());
|
||||
|
||||
if (copy && !s_requestdata->find(str)) {
|
||||
int len = (truncate && RuntimeOption::TaintTraceMaxStrlen < str.size()) ?
|
||||
RuntimeOption::TaintTraceMaxStrlen : str.size();
|
||||
String str_copy(str.c_str(), len, CopyString);
|
||||
return s_requestdata->insert(str_copy);
|
||||
} else {
|
||||
return s_requestdata->insert(str);
|
||||
}
|
||||
}
|
||||
|
||||
String TaintTracer::TraceFrameAsString(Array frame, int i) {
|
||||
return Trace(ExtendedLogger::StringOfFrame(frame, i));
|
||||
}
|
||||
|
||||
Array TaintTracer::TraceFrameAsArray(Array frame) {
|
||||
if (frame.exists("function")) {
|
||||
frame.set("function", Trace(frame["function"].toString()));
|
||||
}
|
||||
if (frame.exists("class")) {
|
||||
frame.set("class", Trace(frame["class"].toString()));
|
||||
}
|
||||
if (frame.exists("type")) {
|
||||
frame.set("type", Trace(frame["type"].toString()));
|
||||
}
|
||||
if (frame.exists("file")) {
|
||||
frame.set("file", Trace(frame["file"].toString()));
|
||||
}
|
||||
|
||||
return frame;
|
||||
}
|
||||
|
||||
TaintTraceDataPtr TaintTracer::CreateTrace() {
|
||||
TAINT_OBSERVER_CAP_STACK();
|
||||
|
||||
TaintTraceDataPtr head;
|
||||
Array bt = FrameInjection::GetBacktrace();
|
||||
ArrayIter it(bt);
|
||||
|
||||
Array frame;
|
||||
|
||||
if (it) {
|
||||
frame = it.second().toArray();
|
||||
head = NEW(TaintTraceData)(TraceFrameAsString(frame, 0));
|
||||
++it;
|
||||
}
|
||||
|
||||
TaintTraceDataPtr ttd = head;
|
||||
for (int i = 1; it; ++it, ++i) {
|
||||
frame = it.second().toArray();
|
||||
ttd = ttd->attachData(TraceFrameAsString(frame, i));
|
||||
}
|
||||
|
||||
return head;
|
||||
}
|
||||
|
||||
std::string TaintTracer::ExtractTrace(const TaintTraceNodePtr& root) {
|
||||
TAINT_OBSERVER_CAP_STACK();
|
||||
|
||||
hphp_string_set sourceset;
|
||||
hphp_string_set frameset;
|
||||
|
||||
ExtractInternal(root, sourceset, frameset);
|
||||
|
||||
int i;
|
||||
hphp_string_set::iterator it;
|
||||
std::stringstream ss;
|
||||
|
||||
ss << "source strings fragments:\n";
|
||||
if (sourceset.empty()) {
|
||||
ss << " (none)\n";
|
||||
ss << "NB: Source strings are not kept for file reads; they are also ";
|
||||
ss << "dropped when passed into the APC.\n";
|
||||
}
|
||||
for (i = 0, it = sourceset.begin(); it != sourceset.end(); ++i, ++it) {
|
||||
ss << " #" << i << " ";
|
||||
ss << *it << "\n";
|
||||
}
|
||||
|
||||
for (i = 0, it = frameset.begin(); it != frameset.end(); ++i, ++it) {
|
||||
if (i > 0) {
|
||||
ss << "\n";
|
||||
}
|
||||
ss << "trace{" << i << "}:\n";
|
||||
ss << *it;
|
||||
}
|
||||
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
void TaintTracer::ExtractInternal(const TaintTraceNodePtr& root,
|
||||
hphp_string_set& sourceset, hphp_string_set& frameset) {
|
||||
TaintTraceNodePtr node;
|
||||
TaintTraceDataPtr ttd;
|
||||
|
||||
for (node = root; node.get(); node = node->getNext()) {
|
||||
if (node->getChild().get()) {
|
||||
assert(!node->getLeaf().get());
|
||||
ExtractInternal(node->getChild(), sourceset, frameset);
|
||||
} else if ((ttd = node->getLeaf()).get()) {
|
||||
if (strncmp(ttd->getStr().c_str(), " ", 4) != 0) {
|
||||
// Naive heuristic for determinine if we're a stacktrace leaf.
|
||||
sourceset.insert(ttd->getStr().c_str());
|
||||
} else {
|
||||
std::string buf;
|
||||
for ( ; ttd.get(); ttd = ttd->getNext()) {
|
||||
buf += ttd->getStr().c_str();
|
||||
}
|
||||
frameset.insert(buf);
|
||||
}
|
||||
} else {
|
||||
assert(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif // TAINTED
|
||||
@@ -1,147 +0,0 @@
|
||||
/*
|
||||
+----------------------------------------------------------------------+
|
||||
| HipHop for PHP |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 2010- Facebook, Inc. (http://www.facebook.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
+----------------------------------------------------------------------+
|
||||
*/
|
||||
|
||||
#ifndef __HPHP_TAINT_TRACE_H__
|
||||
#define __HPHP_TAINT_TRACE_H__
|
||||
|
||||
#ifdef TAINTED
|
||||
|
||||
#include <runtime/base/complex_types.h>
|
||||
#include <runtime/base/util/countable.h>
|
||||
#include <runtime/base/util/request_local.h>
|
||||
#include <runtime/base/util/smart_ptr.h>
|
||||
#include <runtime/base/memory/smart_allocator.h>
|
||||
#include <runtime/base/taint/taint_trace_node.h>
|
||||
|
||||
namespace HPHP {
|
||||
|
||||
/*
|
||||
* Representation of whatever data we consider a trace, in the form of a ref-
|
||||
* counted linked list of Strings. We naively consider the String(s) to form
|
||||
* a backtrace if there are more than one, and an original string otherwise.
|
||||
*/
|
||||
class TaintTraceData : public Countable {
|
||||
public:
|
||||
TaintTraceData() { }
|
||||
|
||||
TaintTraceData(String str) : m_string(str) { }
|
||||
|
||||
const TaintTraceDataPtr& getNext() const { return m_next; }
|
||||
CStrRef getStr() const { return m_string; }
|
||||
|
||||
TaintTraceDataPtr attachData(String str) {
|
||||
m_next = NEW(TaintTraceData)(str);
|
||||
return m_next;
|
||||
}
|
||||
|
||||
// SmartAllocator methods
|
||||
DECLARE_SMART_ALLOCATION(TaintTraceData);
|
||||
void dump() const { }
|
||||
|
||||
private:
|
||||
TaintTraceDataPtr m_next;
|
||||
String m_string;
|
||||
};
|
||||
|
||||
/*
|
||||
* A wrapper around StringMap (hash_set<String>) for RequestLocal use.
|
||||
*/
|
||||
class TaintTracerRequestData : public RequestEventHandler {
|
||||
public:
|
||||
virtual void requestInit() {
|
||||
m_trace_states = TAINT_BIT_NONE;
|
||||
}
|
||||
virtual void requestShutdown() {
|
||||
m_trace_states = TAINT_BIT_NONE;
|
||||
m_stringset.clear();
|
||||
}
|
||||
|
||||
bool isTraceEnabled(taint_t trace) { return m_trace_states & trace; }
|
||||
taint_t switchTrace(taint_t trace, bool state) {
|
||||
taint_t old = m_trace_states;
|
||||
m_trace_states = (m_trace_states & ~trace) | (trace & ((~state) + 1));
|
||||
return old;
|
||||
}
|
||||
void restoreTrace(taint_t trace) { m_trace_states = trace; }
|
||||
|
||||
const String insert(String str) {
|
||||
return *(m_stringset.insert(str).first);
|
||||
}
|
||||
bool find(String str) {
|
||||
return (m_stringset.find(str) != m_stringset.end());
|
||||
}
|
||||
|
||||
private:
|
||||
taint_t m_trace_states;
|
||||
StringSet m_stringset;
|
||||
};
|
||||
|
||||
/*
|
||||
* Public access class for the RequestLocal trace data store. Does all
|
||||
* nonlocal work for tracing.
|
||||
*/
|
||||
class TaintTracer {
|
||||
public:
|
||||
static String Trace(String str, bool copy=true, bool truncate=false);
|
||||
|
||||
static TaintTraceDataPtr CreateTrace();
|
||||
static std::string ExtractTrace(const TaintTraceNodePtr& root);
|
||||
|
||||
static bool IsTraceEnabled(taint_t trace) {
|
||||
return s_requestdata->isTraceEnabled(trace);
|
||||
}
|
||||
static taint_t SwitchTrace(taint_t trace, bool state) {
|
||||
return s_requestdata->switchTrace(trace, state);
|
||||
}
|
||||
static void RestoreTrace(taint_t trace) {
|
||||
s_requestdata->restoreTrace(trace);
|
||||
}
|
||||
|
||||
private:
|
||||
static String TraceFrameAsString(Array frame, int i);
|
||||
static Array TraceFrameAsArray(Array frame);
|
||||
|
||||
static void ExtractInternal(const TaintTraceNodePtr& root,
|
||||
hphp_string_set& sourceset, hphp_string_set& frameset);
|
||||
|
||||
DECLARE_STATIC_REQUEST_LOCAL(TaintTracerRequestData, s_requestdata);
|
||||
};
|
||||
|
||||
/*
|
||||
* Stack-scoped guard for HTML trace.
|
||||
*/
|
||||
class TaintTracerSwitchGuard {
|
||||
public:
|
||||
TaintTracerSwitchGuard(taint_t trace, bool state) {
|
||||
m_old = TaintTracer::SwitchTrace(trace, state);
|
||||
}
|
||||
~TaintTracerSwitchGuard() {
|
||||
TaintTracer::RestoreTrace(m_old);
|
||||
}
|
||||
|
||||
private:
|
||||
taint_t m_old;
|
||||
|
||||
void *operator new(long unsigned int size);
|
||||
TaintTracerSwitchGuard(const TaintTracerSwitchGuard&);
|
||||
TaintTracerSwitchGuard &operator=(const TaintTracerSwitchGuard&);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // TAINTED
|
||||
|
||||
#endif // __HPHP_TAINT_TRACE_H__
|
||||
@@ -1,104 +0,0 @@
|
||||
/*
|
||||
+----------------------------------------------------------------------+
|
||||
| HipHop for PHP |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 2010- Facebook, Inc. (http://www.facebook.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
+----------------------------------------------------------------------+
|
||||
*/
|
||||
|
||||
#ifndef __HPHP_TAINT_TRACE_PTR_H__
|
||||
#define __HPHP_TAINT_TRACE_PTR_H__
|
||||
|
||||
#ifdef TAINTED
|
||||
|
||||
#include <runtime/base/util/countable.h>
|
||||
#include <runtime/base/util/smart_ptr.h>
|
||||
#include <runtime/base/memory/smart_allocator.h>
|
||||
|
||||
namespace HPHP {
|
||||
|
||||
class TaintTraceData;
|
||||
|
||||
/*
|
||||
* SmartPtr for TaintTraceData.
|
||||
*/
|
||||
class TaintTraceDataPtr : public SmartPtr<TaintTraceData> {
|
||||
public:
|
||||
TaintTraceDataPtr();
|
||||
~TaintTraceDataPtr();
|
||||
|
||||
TaintTraceDataPtr(TaintTraceData* ttd);
|
||||
TaintTraceDataPtr(const TaintTraceDataPtr& ttd);
|
||||
};
|
||||
|
||||
class TaintTraceNode;
|
||||
|
||||
/*
|
||||
* A SmartPtr for TaintTraceNode which does automatic refcounting.
|
||||
*/
|
||||
class TaintTraceNodePtr : public SmartPtr<TaintTraceNode> {
|
||||
public:
|
||||
TaintTraceNodePtr() { }
|
||||
~TaintTraceNodePtr() { }
|
||||
|
||||
TaintTraceNodePtr(TaintTraceNode* ttn)
|
||||
: SmartPtr<TaintTraceNode>(ttn) { }
|
||||
TaintTraceNodePtr(const TaintTraceNodePtr& ttn)
|
||||
: SmartPtr<TaintTraceNode>(ttn) { }
|
||||
|
||||
TaintTraceNodePtr &operator=(const TaintTraceDataPtr& data);
|
||||
};
|
||||
|
||||
/*
|
||||
* A node in a tree representing taint trace information. While the structure
|
||||
* is ultimately just a binary tree, we distinguish sibling and child to
|
||||
* better capture the semantics that TaintObserver enforces for passing trace.
|
||||
*
|
||||
* Within the scope of a given TaintObserver, the traced callsites attached
|
||||
* to all HTML strings are globbed together so that they will be passed to any
|
||||
* newly created string. In order to avoid duplication, we create new nodes
|
||||
* whose children are these aggregated trace subtrees. Note that by this
|
||||
* mechanism, once a node is created, it should not and must not be altered,
|
||||
* nor should any of its children (although their refcounts may increment).
|
||||
*
|
||||
* TaintTraceNodes are fixed-sized, SmartAllocated objects with no out-of-
|
||||
* line pointers. This allows us to take advantage of SmartAllocation's
|
||||
* preservation of internal pointers through backups and restores, and hence
|
||||
* allows us to keep trace data on any strings that persist across requests.
|
||||
*/
|
||||
class TaintTraceNode : public Countable {
|
||||
public:
|
||||
TaintTraceNode() { }
|
||||
|
||||
TaintTraceNode(TaintTraceNodePtr sibling, TaintTraceNodePtr child)
|
||||
: m_sibling(sibling), m_child(child) { }
|
||||
TaintTraceNode(TaintTraceNodePtr sibling, TaintTraceDataPtr data)
|
||||
: m_sibling(sibling), m_leaf(data) { }
|
||||
|
||||
const TaintTraceNodePtr& getNext() const { return m_sibling; }
|
||||
const TaintTraceNodePtr& getChild() const { return m_child; }
|
||||
const TaintTraceDataPtr& getLeaf() const { return m_leaf; }
|
||||
|
||||
// SmartAllocator methods
|
||||
DECLARE_SMART_ALLOCATION(TaintTraceNode);
|
||||
void dump() const { }
|
||||
|
||||
private:
|
||||
const TaintTraceNodePtr m_sibling;
|
||||
const TaintTraceNodePtr m_child;
|
||||
const TaintTraceDataPtr m_leaf;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // TAINTED
|
||||
|
||||
#endif // __HPHP_TAINT_TRACE_PTR_H__
|
||||
@@ -1,85 +0,0 @@
|
||||
/*
|
||||
+----------------------------------------------------------------------+
|
||||
| HipHop for PHP |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 2010- Facebook, Inc. (http://www.facebook.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
+----------------------------------------------------------------------+
|
||||
*/
|
||||
|
||||
#ifdef TAINTED
|
||||
|
||||
#include <runtime/base/complex_types.h>
|
||||
#include <runtime/base/util/request_local.h>
|
||||
#include <runtime/base/taint/taint_data.h>
|
||||
#include <runtime/base/taint/taint_trace.h>
|
||||
#include <runtime/base/taint/taint_warning.h>
|
||||
|
||||
namespace HPHP {
|
||||
|
||||
IMPLEMENT_REQUEST_LOCAL(TaintWarningRequestData, TaintWarning::s_requestdata);
|
||||
|
||||
void TaintWarning::WarnIfTainted(CStrRef s, const taint_t bit) {
|
||||
const TaintData& td = s.get()->getTaintDataRefConst();
|
||||
if (!(td.getTaint() & bit)) { return; }
|
||||
|
||||
bool force_warning = false;
|
||||
std::string buf, aux;
|
||||
|
||||
buf = "Using a ";
|
||||
switch (bit) {
|
||||
case TAINT_BIT_HTML:
|
||||
buf += "HTML-unsafe (tainted)";
|
||||
if (TaintTracer::IsTraceEnabled(TAINT_BIT_TRACE_HTML)) {
|
||||
force_warning = true;
|
||||
aux = TaintTracer::ExtractTrace(td.getTaintTrace());
|
||||
}
|
||||
break;
|
||||
|
||||
case TAINT_BIT_MUTATED:
|
||||
buf += "non-static (tainted)";
|
||||
break;
|
||||
|
||||
case TAINT_BIT_SQL:
|
||||
buf += "SQL-unsafe (tainted)";
|
||||
break;
|
||||
|
||||
case TAINT_BIT_SHELL:
|
||||
buf += "shell-unsafe (tainted)";
|
||||
break;
|
||||
|
||||
case TAINT_BIT_ALL:
|
||||
buf += "tainted";
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
buf += " string!\n";
|
||||
|
||||
if (RuntimeOption::EnableTaintWarnings || force_warning) {
|
||||
buf += aux;
|
||||
buf += "\n";
|
||||
|
||||
buf += "---begin output---\n";
|
||||
buf += s.c_str();
|
||||
buf += "\n";
|
||||
buf += "----end output----\n";
|
||||
|
||||
ZeroCount(bit);
|
||||
raise_warning(buf);
|
||||
} else {
|
||||
IncCount(bit);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif // TAINTED
|
||||
@@ -1,64 +0,0 @@
|
||||
/*
|
||||
+----------------------------------------------------------------------+
|
||||
| HipHop for PHP |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 2010- Facebook, Inc. (http://www.facebook.com) |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
+----------------------------------------------------------------------+
|
||||
*/
|
||||
|
||||
#ifndef __HPHP_TAINT_WARNING_H__
|
||||
#define __HPHP_TAINT_WARNING_H__
|
||||
|
||||
#ifdef TAINTED
|
||||
|
||||
#include <runtime/base/types.h>
|
||||
#include <runtime/base/util/request_local.h>
|
||||
#include <runtime/base/taint/taint_data.h>
|
||||
|
||||
namespace HPHP {
|
||||
|
||||
class TaintWarningRequestData : public RequestEventHandler {
|
||||
public:
|
||||
virtual void requestInit() {
|
||||
m_counts.set(TAINT_BIT_HTML, 0);
|
||||
m_counts.set(TAINT_BIT_MUTATED, 0);
|
||||
m_counts.set(TAINT_BIT_SQL, 0);
|
||||
m_counts.set(TAINT_BIT_SHELL, 0);
|
||||
m_counts.set(TAINT_BIT_ALL, 0);
|
||||
}
|
||||
virtual void requestShutdown() { m_counts.clear(); }
|
||||
|
||||
int incCount(taint_t bit) { return m_counts.lvalAt(bit)++; }
|
||||
void zeroCount(taint_t bit) { m_counts.lvalAt(bit) = 0; }
|
||||
CArrRef getCounts() { return m_counts; }
|
||||
|
||||
private:
|
||||
Array m_counts;
|
||||
};
|
||||
|
||||
class TaintWarning {
|
||||
public:
|
||||
static void WarnIfTainted(CStrRef s, const taint_t bit);
|
||||
|
||||
static int IncCount(taint_t bit) { return s_requestdata->incCount(bit); }
|
||||
static void ZeroCount(taint_t bit) { s_requestdata->zeroCount(bit); }
|
||||
static CArrRef GetCounts() { return s_requestdata->getCounts(); }
|
||||
|
||||
private:
|
||||
DECLARE_STATIC_REQUEST_LOCAL(TaintWarningRequestData, s_requestdata);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // TAINTED
|
||||
|
||||
#endif // __HPHP_TAINT_WARNING_H__
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
#include <runtime/base/zend/zend_functions.h>
|
||||
#include <runtime/base/zend/zend_string.h>
|
||||
#include <runtime/base/zend/zend_printf.h>
|
||||
#include <runtime/base/taint/taint_observer.h>
|
||||
|
||||
namespace HPHP {
|
||||
|
||||
@@ -96,8 +95,6 @@ StringData* buildStringData(int n) {
|
||||
int is_negative;
|
||||
int len;
|
||||
|
||||
TAINT_OBSERVER(TAINT_BIT_MUTATED, TAINT_BIT_NONE);
|
||||
|
||||
tmpbuf[11] = '\0';
|
||||
p = conv_10(n, &is_negative, &tmpbuf[11], &len);
|
||||
return NEW(StringData)(p, len, CopyString);
|
||||
@@ -120,8 +117,6 @@ StringData* buildStringData(int64_t n) {
|
||||
int is_negative;
|
||||
int len;
|
||||
|
||||
TAINT_OBSERVER(TAINT_BIT_MUTATED, TAINT_BIT_NONE);
|
||||
|
||||
tmpbuf[20] = '\0';
|
||||
p = conv_10(n, &is_negative, &tmpbuf[20], &len);
|
||||
return NEW(StringData)(p, len, CopyString);
|
||||
@@ -142,8 +137,6 @@ String::String(int64_t n) {
|
||||
StringData* buildStringData(double n) {
|
||||
char *buf;
|
||||
|
||||
TAINT_OBSERVER(TAINT_BIT_MUTATED, TAINT_BIT_NONE);
|
||||
|
||||
if (n == 0.0) n = 0.0; // so to avoid "-0" output
|
||||
vspprintf(&buf, 0, "%.*G", 14, n);
|
||||
return NEW(StringData)(buf, AttachString);
|
||||
@@ -182,8 +175,7 @@ String String::lastToken(char delimiter) {
|
||||
int String::find(char ch, int pos /* = 0 */,
|
||||
bool caseSensitive /* = true */) const {
|
||||
if (empty()) return -1;
|
||||
// Ignore taint in comparison functions.
|
||||
return string_find(m_px->dataIgnoreTaint(), m_px->size(), ch, pos,
|
||||
return string_find(m_px->data(), m_px->size(), ch, pos,
|
||||
caseSensitive);
|
||||
}
|
||||
|
||||
@@ -194,8 +186,7 @@ int String::find(const char *s, int pos /* = 0 */,
|
||||
if (*s && *(s+1) == 0) {
|
||||
return find(*s, pos, caseSensitive);
|
||||
}
|
||||
// Ignore taint in comparison functions.
|
||||
return string_find(m_px->dataIgnoreTaint(), m_px->size(), s, strlen(s),
|
||||
return string_find(m_px->data(), m_px->size(), s, strlen(s),
|
||||
pos, caseSensitive);
|
||||
}
|
||||
|
||||
@@ -204,18 +195,16 @@ int String::find(CStrRef s, int pos /* = 0 */,
|
||||
bool caseSensitive /* = true */) const {
|
||||
if (empty()) return -1;
|
||||
if (s.size() == 1) {
|
||||
return find(*s.dataIgnoreTaint(), pos, caseSensitive);
|
||||
return find(*s.data(), pos, caseSensitive);
|
||||
}
|
||||
// Ignore taint in comparison functions.
|
||||
return string_find(m_px->dataIgnoreTaint(), m_px->size(),
|
||||
s.dataIgnoreTaint(), s.size(), pos, caseSensitive);
|
||||
return string_find(m_px->data(), m_px->size(),
|
||||
s.data(), s.size(), pos, caseSensitive);
|
||||
}
|
||||
|
||||
int String::rfind(char ch, int pos /* = 0 */,
|
||||
bool caseSensitive /* = true */) const {
|
||||
if (empty()) return -1;
|
||||
// Ignore taint in comparison functions.
|
||||
return string_rfind(m_px->dataIgnoreTaint(), m_px->size(), ch,
|
||||
return string_rfind(m_px->data(), m_px->size(), ch,
|
||||
pos, caseSensitive);
|
||||
}
|
||||
|
||||
@@ -226,8 +215,7 @@ int String::rfind(const char *s, int pos /* = 0 */,
|
||||
if (*s && *(s+1) == 0) {
|
||||
return rfind(*s, pos, caseSensitive);
|
||||
}
|
||||
// Ignore taint in comparison functions.
|
||||
return string_rfind(m_px->dataIgnoreTaint(), m_px->size(), s, strlen(s),
|
||||
return string_rfind(m_px->data(), m_px->size(), s, strlen(s),
|
||||
pos, caseSensitive);
|
||||
}
|
||||
|
||||
@@ -235,11 +223,10 @@ int String::rfind(CStrRef s, int pos /* = 0 */,
|
||||
bool caseSensitive /* = true */) const {
|
||||
if (empty()) return -1;
|
||||
if (s.size() == 1) {
|
||||
return rfind(*s.dataIgnoreTaint(), pos, caseSensitive);
|
||||
return rfind(*s.data(), pos, caseSensitive);
|
||||
}
|
||||
// Ignore taint in comparison functions.
|
||||
return string_rfind(m_px->dataIgnoreTaint(), m_px->size(),
|
||||
s.dataIgnoreTaint(), s.size(), pos, caseSensitive);
|
||||
return string_rfind(m_px->data(), m_px->size(),
|
||||
s.data(), s.size(), pos, caseSensitive);
|
||||
}
|
||||
|
||||
String String::replace(int start, int length, CStrRef replacement) const {
|
||||
|
||||
@@ -214,14 +214,6 @@ public:
|
||||
const char *data() const {
|
||||
return m_px ? m_px->data() : "";
|
||||
}
|
||||
private:
|
||||
// This method is only used internally for comparisons; that is, fully
|
||||
// self-contained string ops which do not lead to mutation or creation and
|
||||
// do not need to propagate taint. Only use it if you're sure what you're
|
||||
// doing should ignore taint!
|
||||
const char *dataIgnoreTaint() const {
|
||||
return m_px ? m_px->dataIgnoreTaint() : "";
|
||||
}
|
||||
public:
|
||||
CStrRef setSize(int len) {
|
||||
assert(m_px);
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
#include <runtime/base/file/file.h>
|
||||
#include <runtime/base/zend/zend_functions.h>
|
||||
#include <runtime/base/zend/utf8_decode.h>
|
||||
#include <runtime/base/taint/taint_observer.h>
|
||||
#include <runtime/ext/ext_json.h>
|
||||
|
||||
namespace HPHP {
|
||||
@@ -38,7 +37,6 @@ StringBuffer::StringBuffer(int initialSize /* = 63 */)
|
||||
MutableSlice s = m_str->mutableSlice();
|
||||
m_buffer = s.ptr;
|
||||
m_cap = s.len;
|
||||
TAINT_OBSERVER_REGISTER_MUTATED(m_taint_data, dataIgnoreTaint());
|
||||
}
|
||||
|
||||
StringBuffer::~StringBuffer() {
|
||||
@@ -49,15 +47,6 @@ StringBuffer::~StringBuffer() {
|
||||
}
|
||||
|
||||
const char *StringBuffer::data() const {
|
||||
TAINT_OBSERVER_REGISTER_ACCESSED(m_taint_data);
|
||||
if (m_buffer && m_len) {
|
||||
m_buffer[m_len] = '\0'; // fixup
|
||||
return m_buffer;
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
const char *StringBuffer::dataIgnoreTaint() const {
|
||||
if (m_buffer && m_len) {
|
||||
m_buffer[m_len] = '\0'; // fixup
|
||||
return m_buffer;
|
||||
@@ -74,11 +63,6 @@ char StringBuffer::charAt(int pos) const {
|
||||
}
|
||||
|
||||
String StringBuffer::detachImpl() {
|
||||
TAINT_OBSERVER_REGISTER_ACCESSED(m_taint_data);
|
||||
#ifdef TAINTED
|
||||
m_taint_data.unsetTaint(TAINT_BIT_ALL);
|
||||
#endif
|
||||
|
||||
if (m_buffer && m_len) {
|
||||
assert(m_str && m_str->getCount() == 0);
|
||||
m_buffer[m_len] = '\0'; // fixup
|
||||
@@ -98,16 +82,8 @@ String StringBuffer::copy() {
|
||||
return String(data(), size(), CopyString);
|
||||
}
|
||||
|
||||
String StringBuffer::copyWithTaint() {
|
||||
TAINT_OBSERVER(TAINT_BIT_NONE, TAINT_BIT_NONE);
|
||||
return String(data(), size(), CopyString);
|
||||
}
|
||||
|
||||
void StringBuffer::absorb(StringBuffer &buf) {
|
||||
if (empty()) {
|
||||
TAINT_OBSERVER_REGISTER_ACCESSED(buf.getTaintDataRefConst());
|
||||
TAINT_OBSERVER_REGISTER_MUTATED(m_taint_data, dataIgnoreTaint());
|
||||
|
||||
StringData* str = m_str;
|
||||
|
||||
m_str = buf.m_str;
|
||||
@@ -134,9 +110,6 @@ void StringBuffer::absorb(StringBuffer &buf) {
|
||||
|
||||
void StringBuffer::reset() {
|
||||
m_len = 0;
|
||||
#ifdef TAINTED
|
||||
m_taint_data.unsetTaint(TAINT_BIT_ALL);
|
||||
#endif
|
||||
}
|
||||
|
||||
void StringBuffer::release() {
|
||||
@@ -438,7 +411,6 @@ void StringBuffer::growBy(int spaceRequired) {
|
||||
CstrBuffer::CstrBuffer(int cap)
|
||||
: m_buffer((char*)Util::safe_malloc(cap + 1)), m_len(0), m_cap(cap) {
|
||||
assert(unsigned(cap) <= kMaxCap);
|
||||
TAINT_OBSERVER_REGISTER_MUTATED(m_taint_data, dataIgnoreTaint());
|
||||
}
|
||||
|
||||
CstrBuffer::CstrBuffer(const char *filename)
|
||||
@@ -466,7 +438,6 @@ CstrBuffer::CstrBuffer(const char *filename)
|
||||
::close(fd);
|
||||
}
|
||||
}
|
||||
TAINT_OBSERVER_REGISTER_MUTATED(m_taint_data, dataIgnoreTaint());
|
||||
}
|
||||
|
||||
CstrBuffer::CstrBuffer(char* data, int len)
|
||||
@@ -496,7 +467,6 @@ void CstrBuffer::append(const char* data, int len) {
|
||||
|
||||
String CstrBuffer::detach() {
|
||||
assert(m_len <= m_cap);
|
||||
TAINT_OBSERVER_REGISTER_ACCESSED(m_taint_data);
|
||||
m_buffer[m_len] = 0;
|
||||
String s(m_buffer, m_len, AttachString);
|
||||
m_buffer = 0;
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
|
||||
#include <runtime/base/types.h>
|
||||
#include <runtime/base/complex_types.h>
|
||||
#include <runtime/base/taint/taint_data.h>
|
||||
|
||||
namespace HPHP {
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
@@ -59,12 +58,6 @@ public:
|
||||
int size() const { return m_len;}
|
||||
int length() const { return m_len;}
|
||||
const char *data() const;
|
||||
private:
|
||||
// This method is only used internally for particular operations which do
|
||||
// not lead to mutation or creation of strings and do not require support
|
||||
// for taint propagation. There is probably no reason to use this method
|
||||
// where it isn't already used.
|
||||
const char *dataIgnoreTaint() const;
|
||||
public:
|
||||
char charAt(int pos) const;
|
||||
|
||||
@@ -73,13 +66,8 @@ public:
|
||||
* object any more.
|
||||
*/
|
||||
String detach() { return detachImpl(); }
|
||||
String detachWithTaint() {
|
||||
TAINT_OBSERVER(TAINT_BIT_NONE, TAINT_BIT_NONE);
|
||||
return detachImpl();
|
||||
}
|
||||
String detachImpl();
|
||||
String copy();
|
||||
String copyWithTaint();
|
||||
void reset();
|
||||
void clear() { reset();}
|
||||
void resize(int size);
|
||||
@@ -107,14 +95,9 @@ public:
|
||||
void append(unsigned char c) { append((char)c);}
|
||||
void append(litstr s) { assert(s); append(s, strlen(s));}
|
||||
void append(CStrRef s);
|
||||
void appendWithTaint(CStrRef s) {
|
||||
TAINT_OBSERVER(TAINT_BIT_NONE, TAINT_BIT_NONE);
|
||||
append(s);
|
||||
}
|
||||
void append(CVarRef s);
|
||||
void append(const StringData *s) { append(s->data(), s->size()); }
|
||||
void append(const char *s, int len) {
|
||||
TAINT_OBSERVER_REGISTER_MUTATED(m_taint_data, dataIgnoreTaint());
|
||||
assert(len >= 0);
|
||||
if (m_buffer && len <= m_cap - m_len) {
|
||||
memcpy(m_buffer + m_len, s, len);
|
||||
@@ -123,7 +106,6 @@ public:
|
||||
}
|
||||
appendHelper(s, len);
|
||||
}
|
||||
void appendWithTaint(const char *s, int len) { append(s, len); }
|
||||
void appendHelper(const char *s, int len);
|
||||
void append(const std::string &s) { append(s.data(), s.size());}
|
||||
/**
|
||||
@@ -137,22 +119,13 @@ public:
|
||||
StringBuffer &operator+=(CStrRef s) { append(s); return *this;}
|
||||
|
||||
StringBuffer &add(CStrRef s) { append(s); return *this; }
|
||||
StringBuffer &addWithTaint(CStrRef s) { appendWithTaint(s); return *this; }
|
||||
StringBuffer &add(const char *s, int len) { append(s, len); return *this; }
|
||||
StringBuffer &addWithTaint(const char *s, int len) {
|
||||
appendWithTaint(s, len);
|
||||
return *this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Append what buf has, and reset buf. Internally, if this StringBuffer
|
||||
* is empty, it will swap with buf, so to avoid one string copying.
|
||||
*/
|
||||
void absorb(StringBuffer &buf);
|
||||
void absorbWithTaint(StringBuffer &buf) {
|
||||
TAINT_OBSERVER(TAINT_BIT_NONE, TAINT_BIT_NONE);
|
||||
absorb(buf);
|
||||
}
|
||||
|
||||
/**
|
||||
* Write data.
|
||||
@@ -166,11 +139,6 @@ public:
|
||||
void read(FILE *in, int page_size = 1024);
|
||||
void read(File *in, int page_size = 1024);
|
||||
|
||||
#ifdef TAINTED
|
||||
TaintData& getTaintDataRef() { return m_taint_data; }
|
||||
const TaintData& getTaintDataRefConst() const { return m_taint_data; }
|
||||
#endif
|
||||
|
||||
private:
|
||||
// disabling copy constructor and assignment
|
||||
StringBuffer(const StringBuffer &sb) { assert(false); }
|
||||
@@ -185,9 +153,6 @@ private:
|
||||
int m_maxBytes;
|
||||
int m_cap;
|
||||
int m_len;
|
||||
#ifdef TAINTED
|
||||
TaintData m_taint_data;
|
||||
#endif
|
||||
|
||||
void growBy(int spaceRequired);
|
||||
};
|
||||
@@ -209,21 +174,14 @@ class CstrBuffer {
|
||||
void append(const char* s, int len);
|
||||
String detach();
|
||||
|
||||
private:
|
||||
char* dataIgnoreTaint() const { return m_buffer; }
|
||||
|
||||
private:
|
||||
char* m_buffer;
|
||||
unsigned m_len;
|
||||
unsigned m_cap;
|
||||
#ifdef TAINTED
|
||||
TaintData m_taint_data;
|
||||
#endif
|
||||
};
|
||||
|
||||
inline const char* CstrBuffer::data() const {
|
||||
assert(m_len <= m_cap);
|
||||
TAINT_OBSERVER_REGISTER_ACCESSED(m_taint_data);
|
||||
m_buffer[m_len] = 0;
|
||||
return m_buffer;
|
||||
}
|
||||
|
||||
@@ -72,10 +72,9 @@ Object c_ContinuationWaitHandle::ti_start(const char* cls, CObjRef continuation)
|
||||
}
|
||||
|
||||
if (UNLIKELY(cont->m_index != -1)) {
|
||||
assert(cont->m_running);
|
||||
Object e(SystemLib::AllocInvalidOperationExceptionObject(
|
||||
cont->m_running
|
||||
? "Encountered an attempt to start currently running continuation"
|
||||
: "Encountered an attempt to start tainted continuation"));
|
||||
"Encountered an attempt to start currently running continuation"));
|
||||
throw e;
|
||||
}
|
||||
|
||||
|
||||
@@ -26,8 +26,6 @@
|
||||
#include <runtime/base/builtin_functions.h>
|
||||
#include <runtime/base/variable_serializer.h>
|
||||
#include <util/alloc.h>
|
||||
#include <runtime/base/taint/taint_data.h>
|
||||
#include <runtime/base/taint/taint_trace.h>
|
||||
#include <runtime/base/ini_setting.h>
|
||||
|
||||
using HPHP::Util::ScopedMem;
|
||||
@@ -69,9 +67,6 @@ bool f_apc_store(CStrRef key, CVarRef var, int64_t ttl /* = 0 */,
|
||||
return false;
|
||||
}
|
||||
|
||||
#ifdef TAINTED
|
||||
TaintTracerSwitchGuard guard(TAINT_BIT_TRACE_ALL, false);
|
||||
#endif
|
||||
return s_apc_store[cache_id].store(key, var, ttl);
|
||||
}
|
||||
|
||||
@@ -84,9 +79,6 @@ bool f_apc_add(CStrRef key, CVarRef var, int64_t ttl /* = 0 */,
|
||||
return false;
|
||||
}
|
||||
|
||||
#ifdef TAINTED
|
||||
TaintTracerSwitchGuard guard(TAINT_BIT_TRACE_ALL, false);
|
||||
#endif
|
||||
return s_apc_store[cache_id].store(key, var, ttl, false);
|
||||
}
|
||||
|
||||
@@ -99,9 +91,6 @@ Variant f_apc_fetch(CVarRef key, VRefParam success /* = null */,
|
||||
return false;
|
||||
}
|
||||
|
||||
#ifdef TAINTED
|
||||
TaintTracerSwitchGuard guard(TAINT_BIT_TRACE_ALL, false);
|
||||
#endif
|
||||
Variant v;
|
||||
|
||||
if (key.is(KindOfArray)) {
|
||||
|
||||
@@ -28,9 +28,6 @@
|
||||
#include <runtime/base/code_coverage.h>
|
||||
#include <runtime/base/runtime_option.h>
|
||||
#include <runtime/base/intercept.h>
|
||||
#include <runtime/base/taint/taint_data.h>
|
||||
#include <runtime/base/taint/taint_trace.h>
|
||||
#include <runtime/base/taint/taint_warning.h>
|
||||
#include <runtime/vm/backup_gc.h>
|
||||
#include <unicode/uchar.h>
|
||||
#include <unicode/utf8.h>
|
||||
@@ -56,15 +53,6 @@ const int64_t k_FB_UNSERIALIZE_UNRECOGNIZED_OBJECT_TYPE =
|
||||
const int64_t k_FB_UNSERIALIZE_UNEXPECTED_ARRAY_KEY_TYPE =
|
||||
FB_UNSERIALIZE_UNEXPECTED_ARRAY_KEY_TYPE;
|
||||
|
||||
const int64_t k_TAINT_NONE = TAINT_BIT_NONE;
|
||||
const int64_t k_TAINT_HTML = TAINT_BIT_HTML;
|
||||
const int64_t k_TAINT_MUTATED = TAINT_BIT_MUTATED;
|
||||
const int64_t k_TAINT_SQL = TAINT_BIT_SQL;
|
||||
const int64_t k_TAINT_SHELL = TAINT_BIT_SHELL;
|
||||
const int64_t k_TAINT_TRACE_HTML = TAINT_BIT_TRACE_HTML;
|
||||
const int64_t k_TAINT_ALL = TAINT_BIT_ALL;
|
||||
const int64_t k_TAINT_TRACE_SELF = TAINT_BIT_TRACE_SELF;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/* Linux and other systems don't currently support a ntohx or htonx
|
||||
@@ -1554,72 +1542,6 @@ Variant f_fb_disable_code_coverage() {
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void f_fb_set_taint(VRefParam str, int taint) {
|
||||
#ifdef TAINTED
|
||||
if (!str.isString()) {
|
||||
return;
|
||||
}
|
||||
|
||||
StringData *sd = str.getStringData();
|
||||
assert(sd);
|
||||
if (sd->getCount() > 1) {
|
||||
// Pass taint to our copy.
|
||||
TAINT_OBSERVER(TAINT_BIT_NONE, TAINT_BIT_NONE);
|
||||
str = NEW(StringData)(sd->data(), sd->size(), CopyString);
|
||||
}
|
||||
|
||||
str.getStringData()->getTaintDataRef().setTaint(taint);
|
||||
#endif
|
||||
}
|
||||
|
||||
void f_fb_unset_taint(VRefParam str, int taint) {
|
||||
#ifdef TAINTED
|
||||
if (!str.isString()) {
|
||||
return;
|
||||
}
|
||||
|
||||
StringData *sd = str.getStringData();
|
||||
assert(sd);
|
||||
if (sd->getCount() > 1) {
|
||||
// Pass taint to our copy.
|
||||
TAINT_OBSERVER(TAINT_BIT_NONE, TAINT_BIT_NONE);
|
||||
str = NEW(StringData)(sd->data(), sd->size(), CopyString);
|
||||
}
|
||||
|
||||
str.getStringData()->getTaintDataRef().unsetTaint(taint);
|
||||
#endif
|
||||
}
|
||||
|
||||
bool f_fb_get_taint(CStrRef str, int taint) {
|
||||
#ifdef TAINTED
|
||||
StringData *string_data = str.get();
|
||||
assert(string_data);
|
||||
return string_data->getTaintDataRefConst().getTaint() & taint;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
Array f_fb_get_taint_warning_counts() {
|
||||
#ifdef TAINTED
|
||||
return TaintWarning::GetCounts();
|
||||
#else
|
||||
Array counts;
|
||||
counts.set(TAINT_BIT_HTML, 0);
|
||||
counts.set(TAINT_BIT_MUTATED, 0);
|
||||
counts.set(TAINT_BIT_SQL, 0);
|
||||
counts.set(TAINT_BIT_SHELL, 0);
|
||||
counts.set(TAINT_BIT_ALL, 0);
|
||||
return counts;
|
||||
#endif
|
||||
}
|
||||
|
||||
void f_fb_enable_html_taint_trace() {
|
||||
#ifdef TAINTED
|
||||
TaintTracer::SwitchTrace(TAINT_BIT_TRACE_HTML, true);
|
||||
#endif
|
||||
}
|
||||
|
||||
bool f_fb_output_compression(bool new_value) {
|
||||
Transport *transport = g_context->getTransport();
|
||||
if (transport) {
|
||||
|
||||
@@ -1295,229 +1295,6 @@ TypedValue* fg_fb_crossall_query(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
void HPHP::f_fb_set_taint(HPHP::VRefParamValue const&, int)
|
||||
_ZN4HPHP14f_fb_set_taintERKNS_14VRefParamValueEi
|
||||
|
||||
str => rdi
|
||||
taint => rsi
|
||||
*/
|
||||
|
||||
void fh_fb_set_taint(TypedValue* str, int taint) asm("_ZN4HPHP14f_fb_set_taintERKNS_14VRefParamValueEi");
|
||||
|
||||
TypedValue * fg1_fb_set_taint(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_fb_set_taint(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_data.num = 0LL;
|
||||
rv->m_type = KindOfNull;
|
||||
tvCastToInt64InPlace(args-1);
|
||||
fh_fb_set_taint((args-0), (int)(args[-1].m_data.num));
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_fb_set_taint(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 2LL) {
|
||||
if ((args-1)->m_type == KindOfInt64) {
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
fh_fb_set_taint((args-0), (int)(args[-1].m_data.num));
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_fb_set_taint(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("fb_set_taint", count, 2, 2, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
void HPHP::f_fb_unset_taint(HPHP::VRefParamValue const&, int)
|
||||
_ZN4HPHP16f_fb_unset_taintERKNS_14VRefParamValueEi
|
||||
|
||||
str => rdi
|
||||
taint => rsi
|
||||
*/
|
||||
|
||||
void fh_fb_unset_taint(TypedValue* str, int taint) asm("_ZN4HPHP16f_fb_unset_taintERKNS_14VRefParamValueEi");
|
||||
|
||||
TypedValue * fg1_fb_unset_taint(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_fb_unset_taint(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_data.num = 0LL;
|
||||
rv->m_type = KindOfNull;
|
||||
tvCastToInt64InPlace(args-1);
|
||||
fh_fb_unset_taint((args-0), (int)(args[-1].m_data.num));
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_fb_unset_taint(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 2LL) {
|
||||
if ((args-1)->m_type == KindOfInt64) {
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
fh_fb_unset_taint((args-0), (int)(args[-1].m_data.num));
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_fb_unset_taint(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("fb_unset_taint", count, 2, 2, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_fb_get_taint(HPHP::String const&, int)
|
||||
_ZN4HPHP14f_fb_get_taintERKNS_6StringEi
|
||||
|
||||
(return value) => rax
|
||||
str => rdi
|
||||
taint => rsi
|
||||
*/
|
||||
|
||||
bool fh_fb_get_taint(Value* str, int taint) asm("_ZN4HPHP14f_fb_get_taintERKNS_6StringEi");
|
||||
|
||||
TypedValue * fg1_fb_get_taint(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_fb_get_taint(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfBoolean;
|
||||
if ((args-1)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-1);
|
||||
}
|
||||
if (!IS_STRING_TYPE((args-0)->m_type)) {
|
||||
tvCastToStringInPlace(args-0);
|
||||
}
|
||||
rv->m_data.num = (fh_fb_get_taint(&args[-0].m_data, (int)(args[-1].m_data.num))) ? 1LL : 0LL;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_fb_get_taint(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 2LL) {
|
||||
if ((args-1)->m_type == KindOfInt64 && IS_STRING_TYPE((args-0)->m_type)) {
|
||||
rv.m_type = KindOfBoolean;
|
||||
rv.m_data.num = (fh_fb_get_taint(&args[-0].m_data, (int)(args[-1].m_data.num))) ? 1LL : 0LL;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_fb_get_taint(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("fb_get_taint", count, 2, 2, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Array HPHP::f_fb_get_taint_warning_counts()
|
||||
_ZN4HPHP29f_fb_get_taint_warning_countsEv
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
*/
|
||||
|
||||
Value* fh_fb_get_taint_warning_counts(Value* _rv) asm("_ZN4HPHP29f_fb_get_taint_warning_countsEv");
|
||||
|
||||
TypedValue* fg_fb_get_taint_warning_counts(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 0LL) {
|
||||
rv.m_type = KindOfArray;
|
||||
fh_fb_get_taint_warning_counts((&rv.m_data));
|
||||
if (rv.m_data.num == 0LL) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("fb_get_taint_warning_counts", 0, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
void HPHP::f_fb_enable_html_taint_trace()
|
||||
_ZN4HPHP28f_fb_enable_html_taint_traceEv
|
||||
|
||||
*/
|
||||
|
||||
void fh_fb_enable_html_taint_trace() asm("_ZN4HPHP28f_fb_enable_html_taint_traceEv");
|
||||
|
||||
TypedValue* fg_fb_enable_html_taint_trace(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 0LL) {
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
fh_fb_enable_html_taint_trace();
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("fb_enable_html_taint_trace", 0, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_fb_const_fetch(HPHP::Variant const&)
|
||||
_ZN4HPHP16f_fb_const_fetchERKNS_7VariantE
|
||||
|
||||
@@ -324,55 +324,6 @@ timeout_in_ms => st0
|
||||
|
||||
Value* fh_fb_crossall_query(Value* _rv, Value* sql, int max_thread, bool retry_query_on_fail, int connect_timeout, int read_timeout, bool timeout_in_ms) asm("_ZN4HPHP19f_fb_crossall_queryERKNS_6StringEibiib");
|
||||
|
||||
/*
|
||||
void HPHP::f_fb_set_taint(HPHP::VRefParamValue const&, int)
|
||||
_ZN4HPHP14f_fb_set_taintERKNS_14VRefParamValueEi
|
||||
|
||||
str => rdi
|
||||
taint => rsi
|
||||
*/
|
||||
|
||||
void fh_fb_set_taint(TypedValue* str, int taint) asm("_ZN4HPHP14f_fb_set_taintERKNS_14VRefParamValueEi");
|
||||
|
||||
/*
|
||||
void HPHP::f_fb_unset_taint(HPHP::VRefParamValue const&, int)
|
||||
_ZN4HPHP16f_fb_unset_taintERKNS_14VRefParamValueEi
|
||||
|
||||
str => rdi
|
||||
taint => rsi
|
||||
*/
|
||||
|
||||
void fh_fb_unset_taint(TypedValue* str, int taint) asm("_ZN4HPHP16f_fb_unset_taintERKNS_14VRefParamValueEi");
|
||||
|
||||
/*
|
||||
bool HPHP::f_fb_get_taint(HPHP::String const&, int)
|
||||
_ZN4HPHP14f_fb_get_taintERKNS_6StringEi
|
||||
|
||||
(return value) => rax
|
||||
str => rdi
|
||||
taint => rsi
|
||||
*/
|
||||
|
||||
bool fh_fb_get_taint(Value* str, int taint) asm("_ZN4HPHP14f_fb_get_taintERKNS_6StringEi");
|
||||
|
||||
/*
|
||||
HPHP::Array HPHP::f_fb_get_taint_warning_counts()
|
||||
_ZN4HPHP29f_fb_get_taint_warning_countsEv
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
*/
|
||||
|
||||
Value* fh_fb_get_taint_warning_counts(Value* _rv) asm("_ZN4HPHP29f_fb_get_taint_warning_countsEv");
|
||||
|
||||
/*
|
||||
void HPHP::f_fb_enable_html_taint_trace()
|
||||
_ZN4HPHP28f_fb_enable_html_taint_traceEv
|
||||
|
||||
*/
|
||||
|
||||
void fh_fb_enable_html_taint_trace() asm("_ZN4HPHP28f_fb_enable_html_taint_traceEv");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_fb_const_fetch(HPHP::Variant const&)
|
||||
_ZN4HPHP16f_fb_const_fetchERKNS_7VariantE
|
||||
|
||||
@@ -60,11 +60,6 @@ Variant f_xhprof_sample_disable();
|
||||
void f_fb_load_local_databases(CArrRef servers);
|
||||
Array f_fb_parallel_query(CArrRef sql_map, int max_thread = 50, bool combine_result = true, bool retry_query_on_fail = true, int connect_timeout = -1, int read_timeout = -1, bool timeout_in_ms = false);
|
||||
Array f_fb_crossall_query(CStrRef sql, int max_thread = 50, bool retry_query_on_fail = true, int connect_timeout = -1, int read_timeout = -1, bool timeout_in_ms = false);
|
||||
void f_fb_set_taint(VRefParam str, int taint);
|
||||
void f_fb_unset_taint(VRefParam str, int taint);
|
||||
bool f_fb_get_taint(CStrRef str, int taint);
|
||||
Array f_fb_get_taint_warning_counts();
|
||||
void f_fb_enable_html_taint_trace();
|
||||
Variant f_fb_const_fetch(CVarRef key);
|
||||
bool f_fb_output_compression(bool new_value);
|
||||
void f_fb_set_exit_callback(CVarRef function);
|
||||
@@ -87,14 +82,6 @@ extern const int64_t k_XHPROF_FLAGS_VTSC;
|
||||
extern const int64_t k_XHPROF_FLAGS_TRACE;
|
||||
extern const int64_t k_XHPROF_FLAGS_MEASURE_XHPROF_DISABLE;
|
||||
extern const int64_t k_XHPROF_FLAGS_MALLOC;
|
||||
extern const int64_t k_TAINT_NONE;
|
||||
extern const int64_t k_TAINT_HTML;
|
||||
extern const int64_t k_TAINT_MUTATED;
|
||||
extern const int64_t k_TAINT_SQL;
|
||||
extern const int64_t k_TAINT_SHELL;
|
||||
extern const int64_t k_TAINT_TRACE_HTML;
|
||||
extern const int64_t k_TAINT_ALL;
|
||||
extern const int64_t k_TAINT_TRACE_SELF;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
@@ -1638,7 +1638,6 @@ Variant f_iconv_mime_decode_headers(CStrRef encoded_headers,
|
||||
const char *encoded_str = encoded_headers.data();
|
||||
int encoded_str_len = encoded_headers.size();
|
||||
while (encoded_str_len > 0) {
|
||||
TAINT_OBSERVER(TAINT_BIT_MUTATED, TAINT_BIT_NONE);
|
||||
StringBuffer decoded_header;
|
||||
|
||||
const char *header_name = NULL;
|
||||
|
||||
@@ -307,7 +307,6 @@ Array f_icu_tokenize(CStrRef text) {
|
||||
|
||||
Array ret;
|
||||
std::vector<Token> tokens;
|
||||
TAINT_OBSERVER(TAINT_BIT_MUTATED, TAINT_BIT_NONE);
|
||||
tokenizeString(tokens, getMaster(), UnicodeString::fromUTF8(text.data()));
|
||||
|
||||
int i = 0;
|
||||
|
||||
@@ -218,7 +218,6 @@ bool c_Memcache::t_replace(CStrRef key, CVarRef var, int flag /*= 0*/,
|
||||
}
|
||||
|
||||
Variant c_Memcache::t_get(CVarRef key, VRefParam flags /*= null*/) {
|
||||
TAINT_OBSERVER(TAINT_BIT_ALL, TAINT_BIT_NONE);
|
||||
if (key.is(KindOfArray)) {
|
||||
std::vector<const char *> real_keys;
|
||||
std::vector<size_t> key_len;
|
||||
|
||||
@@ -208,14 +208,12 @@ void c_Memcached::t___construct(CStrRef persistent_id /*= null_string*/) {
|
||||
|
||||
Variant c_Memcached::t_get(CStrRef key, CVarRef cache_cb /*= null_variant*/,
|
||||
VRefParam cas_token /*= null_variant*/) {
|
||||
TAINT_OBSERVER(TAINT_BIT_ALL, TAINT_BIT_NONE);
|
||||
return t_getbykey(null_string, key, cache_cb, cas_token);
|
||||
}
|
||||
|
||||
Variant c_Memcached::t_getbykey(CStrRef server_key, CStrRef key,
|
||||
CVarRef cache_cb /*= null_variant*/,
|
||||
VRefParam cas_token /*= null_variant*/) {
|
||||
TAINT_OBSERVER(TAINT_BIT_ALL, TAINT_BIT_NONE);
|
||||
m_impl->rescode = q_Memcached$$RES_SUCCESS;
|
||||
if (key.empty()) {
|
||||
m_impl->rescode = q_Memcached$$RES_BAD_KEY_PROVIDED;
|
||||
@@ -259,14 +257,12 @@ Variant c_Memcached::t_getbykey(CStrRef server_key, CStrRef key,
|
||||
Variant c_Memcached::t_getmulti(CArrRef keys,
|
||||
VRefParam cas_tokens /*= null_variant*/,
|
||||
int flags /*= 0*/) {
|
||||
TAINT_OBSERVER(TAINT_BIT_ALL, TAINT_BIT_NONE);
|
||||
return t_getmultibykey(null_string, keys, cas_tokens, flags);
|
||||
}
|
||||
|
||||
Variant c_Memcached::t_getmultibykey(CStrRef server_key, CArrRef keys,
|
||||
VRefParam cas_tokens /*= null_variant*/,
|
||||
int flags /*= 0*/) {
|
||||
TAINT_OBSERVER(TAINT_BIT_ALL, TAINT_BIT_NONE);
|
||||
m_impl->rescode = q_Memcached$$RES_SUCCESS;
|
||||
|
||||
bool preserveOrder = flags & q_Memcached$$GET_PRESERVE_ORDER;
|
||||
@@ -301,13 +297,11 @@ Variant c_Memcached::t_getmultibykey(CStrRef server_key, CArrRef keys,
|
||||
|
||||
bool c_Memcached::t_getdelayed(CArrRef keys, bool with_cas /*= false*/,
|
||||
CVarRef value_cb /*= null_variant*/) {
|
||||
TAINT_OBSERVER(TAINT_BIT_ALL, TAINT_BIT_NONE);
|
||||
return t_getdelayedbykey(null_string, keys, with_cas, value_cb);
|
||||
}
|
||||
|
||||
bool c_Memcached::t_getdelayedbykey(CStrRef server_key, CArrRef keys,
|
||||
bool with_cas /*= false*/, CVarRef value_cb /*= null_variant*/) {
|
||||
TAINT_OBSERVER(TAINT_BIT_ALL, TAINT_BIT_NONE);
|
||||
m_impl->rescode = q_Memcached$$RES_SUCCESS;
|
||||
|
||||
if (!getMultiImpl(server_key, keys, with_cas, NULL)) return false;
|
||||
@@ -324,7 +318,6 @@ bool c_Memcached::t_getdelayedbykey(CStrRef server_key, CArrRef keys,
|
||||
}
|
||||
|
||||
Variant c_Memcached::t_fetch() {
|
||||
TAINT_OBSERVER(TAINT_BIT_ALL, TAINT_BIT_NONE);
|
||||
m_impl->rescode = q_Memcached$$RES_SUCCESS;
|
||||
|
||||
MemcachedResultWrapper result(&m_impl->memcached); Array item;
|
||||
@@ -334,7 +327,6 @@ Variant c_Memcached::t_fetch() {
|
||||
}
|
||||
|
||||
Variant c_Memcached::t_fetchall() {
|
||||
TAINT_OBSERVER(TAINT_BIT_ALL, TAINT_BIT_NONE);
|
||||
m_impl->rescode = q_Memcached$$RES_SUCCESS;
|
||||
|
||||
Array returnValue;
|
||||
|
||||
@@ -27,8 +27,6 @@
|
||||
#include <locale.h>
|
||||
#include <runtime/base/server/http_request_handler.h>
|
||||
#include <runtime/base/server/http_protocol.h>
|
||||
#include <runtime/base/taint/taint_data.h>
|
||||
#include <runtime/base/taint/taint_observer.h>
|
||||
|
||||
namespace HPHP {
|
||||
|
||||
@@ -205,7 +203,6 @@ static Variant str_replace(CVarRef search, CVarRef replace, CStrRef subject,
|
||||
Array replArr = replace.toArray();
|
||||
ArrayIter replIter(replArr);
|
||||
for (ArrayIter iter(searchArr); iter; ++iter) {
|
||||
TAINT_OBSERVER(TAINT_BIT_MUTATED, TAINT_BIT_NONE);
|
||||
if (replIter) {
|
||||
ret = ret.replace(iter.second().toString(),
|
||||
replIter.second().toString(),
|
||||
@@ -219,7 +216,6 @@ static Variant str_replace(CVarRef search, CVarRef replace, CStrRef subject,
|
||||
return ret;
|
||||
}
|
||||
|
||||
TAINT_OBSERVER(TAINT_BIT_MUTATED, TAINT_BIT_NONE);
|
||||
String repl = replace.toString();
|
||||
for (ArrayIter iter(searchArr); iter; ++iter) {
|
||||
ret = ret.replace(iter.second().toString(), repl, count, caseSensitive);
|
||||
@@ -230,7 +226,6 @@ static Variant str_replace(CVarRef search, CVarRef replace, CStrRef subject,
|
||||
if (replace.is(KindOfArray)) {
|
||||
raise_notice("Array to string conversion");
|
||||
}
|
||||
TAINT_OBSERVER(TAINT_BIT_MUTATED, TAINT_BIT_NONE);
|
||||
return subject.replace(search.toString(), replace.toString(), count,
|
||||
caseSensitive);
|
||||
}
|
||||
@@ -276,7 +271,6 @@ Variant f_substr_replace(CVarRef str, CVarRef replacement, CVarRef start,
|
||||
} else {
|
||||
repl = replacement.toString();
|
||||
}
|
||||
TAINT_OBSERVER(TAINT_BIT_MUTATED, TAINT_BIT_NONE);
|
||||
if (start.is(KindOfArray)) {
|
||||
if (!length.is(KindOfArray)) {
|
||||
throw_invalid_argument("start and length should be of same type - "
|
||||
@@ -307,7 +301,6 @@ Variant f_substr_replace(CVarRef str, CVarRef replacement, CVarRef start,
|
||||
ArrayIter replIter(replArr);
|
||||
for (ArrayIter iter(strArr); iter;
|
||||
++iter, ++startIter, ++lengthIter) {
|
||||
TAINT_OBSERVER(TAINT_BIT_MUTATED, TAINT_BIT_NONE);
|
||||
int nStart = startIter.second().toInt32();
|
||||
int nLength = lengthIter.second().toInt32();
|
||||
String repl("");
|
||||
@@ -321,7 +314,6 @@ Variant f_substr_replace(CVarRef str, CVarRef replacement, CVarRef start,
|
||||
String repl = replacement.toString();
|
||||
for (ArrayIter iter(strArr); iter;
|
||||
++iter, ++startIter, ++lengthIter) {
|
||||
TAINT_OBSERVER(TAINT_BIT_MUTATED, TAINT_BIT_NONE);
|
||||
int nStart = startIter.second().toInt32();
|
||||
int nLength = lengthIter.second().toInt32();
|
||||
ret.append(iter.second().toString().replace(nStart, nLength, repl));
|
||||
@@ -924,7 +916,6 @@ Variant f_strtr(CStrRef str, CVarRef from, CVarRef to /* = null_variant */) {
|
||||
}
|
||||
|
||||
if (!to.isNull()) {
|
||||
TAINT_OBSERVER(TAINT_BIT_MUTATED, TAINT_BIT_NONE);
|
||||
return StringUtil::Translate(str, from.toString(), to.toString());
|
||||
}
|
||||
|
||||
@@ -950,7 +941,6 @@ Variant f_strtr(CStrRef str, CVarRef from, CVarRef to /* = null_variant */) {
|
||||
if (minlen == -1 || minlen > len) minlen = len;
|
||||
}
|
||||
|
||||
TAINT_OBSERVER(TAINT_BIT_MUTATED, TAINT_BIT_NONE);
|
||||
const char *s = str.data();
|
||||
int slen = str.size();
|
||||
char *key = (char *)malloc(maxlen+1);
|
||||
|
||||
@@ -403,11 +403,6 @@ TypedValue* fg_xhprof_sample_disable(VM::ActRec *ar);
|
||||
TypedValue* fg_fb_load_local_databases(VM::ActRec *ar);
|
||||
TypedValue* fg_fb_parallel_query(VM::ActRec *ar);
|
||||
TypedValue* fg_fb_crossall_query(VM::ActRec *ar);
|
||||
TypedValue* fg_fb_set_taint(VM::ActRec *ar);
|
||||
TypedValue* fg_fb_unset_taint(VM::ActRec *ar);
|
||||
TypedValue* fg_fb_get_taint(VM::ActRec *ar);
|
||||
TypedValue* fg_fb_get_taint_warning_counts(VM::ActRec *ar);
|
||||
TypedValue* fg_fb_enable_html_taint_trace(VM::ActRec *ar);
|
||||
TypedValue* fg_fb_const_fetch(VM::ActRec *ar);
|
||||
TypedValue* fg_fb_output_compression(VM::ActRec *ar);
|
||||
TypedValue* fg_fb_set_exit_callback(VM::ActRec *ar);
|
||||
@@ -3062,7 +3057,7 @@ TypedValue* tg_9XMLWriter_endDTD(VM::ActRec *ar);
|
||||
TypedValue* tg_9XMLWriter_flush(VM::ActRec *ar);
|
||||
TypedValue* tg_9XMLWriter_outputMemory(VM::ActRec *ar);
|
||||
|
||||
const long long hhbc_ext_funcs_count = 2208;
|
||||
const long long hhbc_ext_funcs_count = 2203;
|
||||
const HhbcExtFuncInfo hhbc_ext_funcs[] = {
|
||||
{ "apache_note", fg_apache_note, (void *)&fh_apache_note },
|
||||
{ "apache_request_headers", fg_apache_request_headers, (void *)&fh_apache_request_headers },
|
||||
@@ -3444,11 +3439,6 @@ const HhbcExtFuncInfo hhbc_ext_funcs[] = {
|
||||
{ "fb_load_local_databases", fg_fb_load_local_databases, (void *)&fh_fb_load_local_databases },
|
||||
{ "fb_parallel_query", fg_fb_parallel_query, (void *)&fh_fb_parallel_query },
|
||||
{ "fb_crossall_query", fg_fb_crossall_query, (void *)&fh_fb_crossall_query },
|
||||
{ "fb_set_taint", fg_fb_set_taint, (void *)&fh_fb_set_taint },
|
||||
{ "fb_unset_taint", fg_fb_unset_taint, (void *)&fh_fb_unset_taint },
|
||||
{ "fb_get_taint", fg_fb_get_taint, (void *)&fh_fb_get_taint },
|
||||
{ "fb_get_taint_warning_counts", fg_fb_get_taint_warning_counts, (void *)&fh_fb_get_taint_warning_counts },
|
||||
{ "fb_enable_html_taint_trace", fg_fb_enable_html_taint_trace, (void *)&fh_fb_enable_html_taint_trace },
|
||||
{ "fb_const_fetch", fg_fb_const_fetch, (void *)&fh_fb_const_fetch },
|
||||
{ "fb_output_compression", fg_fb_output_compression, (void *)&fh_fb_output_compression },
|
||||
{ "fb_set_exit_callback", fg_fb_set_exit_callback, (void *)&fh_fb_set_exit_callback },
|
||||
|
||||
@@ -2630,37 +2630,6 @@ const char *g_class_map[] = {
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
(const char *)0x10016040, "fb_set_taint", "", (const char*)0, (const char*)0,
|
||||
"/**\n * ( HipHop specific )\n *\n * Taints a string with a flag or a bit. This bit is contagious in string\n * operations, being carried over to new strings that are copied or\n * composed from this string. This may be used for checking dirty or clean\n * status of end user's input for different purposes.\n *\n * @str mixed The string to taint.\n * @taint int The bit to flag.\n */",
|
||||
(const char *)0x8 /* KindOfNull */, (const char *)0x2800, "str", "", (const char *)0xffffffff /* KindOfUnknown: $t: Variant */, "", (const char *)0, "", (const char *)0, NULL,
|
||||
(const char *)0x2000, "taint", "", (const char *)0xa /* KindOfInt64 */, "", (const char *)0, "", (const char *)0, NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
(const char *)0x10016040, "fb_unset_taint", "", (const char*)0, (const char*)0,
|
||||
"/**\n * ( HipHop specific )\n *\n * Untaints a string by clearing off the bit that was set or carried over.\n *\n * @str mixed The string to untaint.\n * @taint int The bit to clear.\n */",
|
||||
(const char *)0x8 /* KindOfNull */, (const char *)0x2800, "str", "", (const char *)0xffffffff /* KindOfUnknown: $t: Variant */, "", (const char *)0, "", (const char *)0, NULL,
|
||||
(const char *)0x2000, "taint", "", (const char *)0xa /* KindOfInt64 */, "", (const char *)0, "", (const char *)0, NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
(const char *)0x10016040, "fb_get_taint", "", (const char*)0, (const char*)0,
|
||||
"/**\n * ( HipHop specific )\n *\n * Checks to see if a bit is set.\n *\n * @str string The string to check.\n * @taint int The bit to check against.\n *\n * @return bool Whether the taint was set.\n */",
|
||||
(const char *)0x9 /* KindOfBoolean */, (const char *)0x2000, "str", "", (const char *)0x14 /* KindOfString */, "", (const char *)0, "", (const char *)0, NULL,
|
||||
(const char *)0x2000, "taint", "", (const char *)0xa /* KindOfInt64 */, "", (const char *)0, "", (const char *)0, NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
(const char *)0x10016040, "fb_get_taint_warning_counts", "", (const char*)0, (const char*)0,
|
||||
"/**\n * ( HipHop specific )\n *\n * Get counts of various suppressed taint warnings.\n *\n * @return vector The array of warning counts.\n */",
|
||||
(const char *)0x20 /* KindOfArray */, NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
(const char *)0x10016040, "fb_enable_html_taint_trace", "", (const char*)0, (const char*)0,
|
||||
"/**\n * ( HipHop specific )\n *\n * Enable an optional tracing feature.\n *\n */",
|
||||
(const char *)0x8 /* KindOfNull */, NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
(const char *)0x10016040, "fb_const_fetch", "", (const char*)0, (const char*)0,
|
||||
"/**\n * ( HipHop specific )\n *\n * Fetches a constant string from a special store that's compiled into the\n * executable. This is faster than apc_fetch(), which needs locking between\n * different threads. This store is immutable and loaded once with strings\n * that are never changed. Therefore, no locking is needed when accessed by\n * different threads.\n *\n * @key mixed The key for locating the value.\n *\n * @return mixed The value that was stored.\n */",
|
||||
(const char *)0xffffffff /* KindOfUnknown: $t: Variant */, (const char *)0x2000, "key", "", (const char *)0xffffffff /* KindOfUnknown: $t: Variant */, "", (const char *)0, "", (const char *)0, NULL,
|
||||
@@ -19527,14 +19496,6 @@ const char *g_class_map[] = {
|
||||
"XHPROF_FLAGS_TRACE", (const char *)&k_XHPROF_FLAGS_TRACE, (const char *)0xc /* KindOfInt64 */,
|
||||
"XHPROF_FLAGS_MEASURE_XHPROF_DISABLE", (const char *)&k_XHPROF_FLAGS_MEASURE_XHPROF_DISABLE, (const char *)0xc /* KindOfInt64 */,
|
||||
"XHPROF_FLAGS_MALLOC", (const char *)&k_XHPROF_FLAGS_MALLOC, (const char *)0xc /* KindOfInt64 */,
|
||||
"TAINT_NONE", (const char *)&k_TAINT_NONE, (const char *)0xc /* KindOfInt64 */,
|
||||
"TAINT_HTML", (const char *)&k_TAINT_HTML, (const char *)0xc /* KindOfInt64 */,
|
||||
"TAINT_MUTATED", (const char *)&k_TAINT_MUTATED, (const char *)0xc /* KindOfInt64 */,
|
||||
"TAINT_SQL", (const char *)&k_TAINT_SQL, (const char *)0xc /* KindOfInt64 */,
|
||||
"TAINT_SHELL", (const char *)&k_TAINT_SHELL, (const char *)0xc /* KindOfInt64 */,
|
||||
"TAINT_TRACE_HTML", (const char *)&k_TAINT_TRACE_HTML, (const char *)0xc /* KindOfInt64 */,
|
||||
"TAINT_ALL", (const char *)&k_TAINT_ALL, (const char *)0xc /* KindOfInt64 */,
|
||||
"TAINT_TRACE_SELF", (const char *)&k_TAINT_TRACE_SELF, (const char *)0xc /* KindOfInt64 */,
|
||||
"STDIN", (const char *)&BuiltinFiles::GetSTDIN, nullptr,
|
||||
"STDOUT", (const char *)&BuiltinFiles::GetSTDOUT, nullptr,
|
||||
"STDERR", (const char *)&BuiltinFiles::GetSTDERR, nullptr,
|
||||
|
||||
@@ -12019,7 +12019,6 @@ DefineConstant(
|
||||
// 'value' => default value of the argument
|
||||
// 'desc' => description of the argument
|
||||
// )
|
||||
// 'taint_observer' => taint propagation information
|
||||
// array (
|
||||
// 'set_mask' => which bits to set automatically
|
||||
// 'clear_mask' => which bits to clear automatically
|
||||
|
||||
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
@@ -208,10 +208,6 @@ class TestCodeRun : public TestBase {
|
||||
bool TestYield();
|
||||
bool TestHint();
|
||||
bool TestUserAttributes();
|
||||
#ifdef TAINTED
|
||||
bool TestTaint();
|
||||
bool TestTaintExt();
|
||||
#endif
|
||||
bool TestStrictMode();
|
||||
|
||||
// debugging purpose
|
||||
|
||||
Referência em uma Nova Issue
Bloquear um usuário