mirror of
https://github.com/owasp-modsecurity/ModSecurity.git
synced 2025-08-13 21:36:00 +03:00
Added t:trimLeft, t:trimRight, t:trim to remove whitespace from a value on the left, right or both. (see trac #117)
This commit is contained in:
parent
d9a26780ab
commit
5482606c37
3
CHANGES
3
CHANGES
@ -2,6 +2,9 @@
|
||||
?? ??? 2007 - trunk
|
||||
-------------------
|
||||
|
||||
* Added t:trimLeft, t:trimRight, t:trim to remove whitespace
|
||||
from a value on the left, right or both.
|
||||
|
||||
* Added SecAuditLog2 directive to allow redundent concurrent audit log
|
||||
index files. This will allow sending audit data to two consoles, etc.
|
||||
|
||||
|
@ -44,6 +44,64 @@ static int msre_fn_lowercase_execute(apr_pool_t *mptmp, unsigned char *input,
|
||||
return changed;
|
||||
}
|
||||
|
||||
/* trimLeft */
|
||||
|
||||
static int msre_fn_trimLeft_execute(apr_pool_t *mptmp, unsigned char *input,
|
||||
long int input_len, char **rval, long int *rval_len)
|
||||
{
|
||||
long int i;
|
||||
|
||||
*rval = (char *)input;
|
||||
for (i = 0; i < input_len; i++) {
|
||||
if (isspace(**rval) == 0) {
|
||||
break;
|
||||
}
|
||||
(*rval)++;
|
||||
}
|
||||
|
||||
*rval_len = input_len - i;
|
||||
|
||||
return (*rval_len == input_len ? 0 : 1);
|
||||
}
|
||||
|
||||
/* trimRight */
|
||||
|
||||
static int msre_fn_trimRight_execute(apr_pool_t *mptmp, unsigned char *input,
|
||||
long int input_len, char **rval, long int *rval_len)
|
||||
{
|
||||
long int i;
|
||||
|
||||
*rval = (char *)input;
|
||||
for (i = input_len - 1; i >= 0; i--) {
|
||||
if (isspace((*rval)[i]) == 0) {
|
||||
break;
|
||||
}
|
||||
(*rval)[i] = '\0';
|
||||
}
|
||||
|
||||
*rval_len = i + 1;
|
||||
|
||||
return (*rval_len == input_len ? 0 : 1);
|
||||
}
|
||||
|
||||
/* trim */
|
||||
|
||||
static int msre_fn_trim_execute(apr_pool_t *mptmp, unsigned char *input,
|
||||
long int input_len, char **rval, long int *rval_len)
|
||||
{
|
||||
int rc = 0;
|
||||
|
||||
rc = msre_fn_trimLeft_execute(mptmp, input, input_len, rval, rval_len);
|
||||
if (rc == 1) {
|
||||
rc = msre_fn_trimRight_execute(mptmp, (unsigned char *)*rval, *rval_len, rval, rval_len);
|
||||
}
|
||||
else {
|
||||
rc = msre_fn_trimRight_execute(mptmp, input, input_len, rval, rval_len);
|
||||
}
|
||||
|
||||
return (*rval_len == input_len ? 0 : 1);
|
||||
}
|
||||
|
||||
/* removeNulls */
|
||||
|
||||
static int msre_fn_removeNulls_execute(apr_pool_t *mptmp, unsigned char *input,
|
||||
@ -492,6 +550,24 @@ void msre_engine_register_default_tfns(msre_engine *engine) {
|
||||
msre_fn_sha1_execute
|
||||
);
|
||||
|
||||
/* trim */
|
||||
msre_engine_tfn_register(engine,
|
||||
"trim",
|
||||
msre_fn_trim_execute
|
||||
);
|
||||
|
||||
/* trimLeft */
|
||||
msre_engine_tfn_register(engine,
|
||||
"trimLeft",
|
||||
msre_fn_trimLeft_execute
|
||||
);
|
||||
|
||||
/* trimRight */
|
||||
msre_engine_tfn_register(engine,
|
||||
"trimRight",
|
||||
msre_fn_trimRight_execute
|
||||
);
|
||||
|
||||
/* urlDecode */
|
||||
msre_engine_tfn_register(engine,
|
||||
"urlDecode",
|
||||
|
Loading…
x
Reference in New Issue
Block a user