|
Packit |
284210 |
/*
|
|
Packit |
284210 |
* ModSecurity for Apache 2.x, http://www.modsecurity.org/
|
|
Packit |
284210 |
* Copyright (c) 2004-2013 Trustwave Holdings, Inc. (http://www.trustwave.com/)
|
|
Packit |
284210 |
*
|
|
Packit |
284210 |
* You may not use this file except in compliance with
|
|
Packit |
284210 |
* the License. You may obtain a copy of the License at
|
|
Packit |
284210 |
*
|
|
Packit |
284210 |
* http://www.apache.org/licenses/LICENSE-2.0
|
|
Packit |
284210 |
*
|
|
Packit |
284210 |
* If any of the files related to licensing are missing or if you have any
|
|
Packit |
284210 |
* other questions related to licensing please contact Trustwave Holdings, Inc.
|
|
Packit |
284210 |
* directly using the email address security@modsecurity.org.
|
|
Packit |
284210 |
*/
|
|
Packit |
284210 |
|
|
Packit |
284210 |
#include <ctype.h>
|
|
Packit |
284210 |
|
|
Packit |
284210 |
#include "apr_md5.h"
|
|
Packit |
284210 |
#include "apr_sha1.h"
|
|
Packit |
284210 |
#include "apr_base64.h"
|
|
Packit |
284210 |
|
|
Packit |
284210 |
#include "msc_unicode.h"
|
|
Packit |
284210 |
#include "re.h"
|
|
Packit |
284210 |
#include "msc_util.h"
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* cmdline */
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/**
|
|
Packit |
284210 |
* \brief cmdline transformation function
|
|
Packit |
284210 |
*
|
|
Packit |
284210 |
* \param mptmp Pointer to resource pool
|
|
Packit |
284210 |
* \param input Pointer to input data
|
|
Packit |
284210 |
* \param input_len Input data length
|
|
Packit |
284210 |
* \param rval Pointer to decoded buffer
|
|
Packit |
284210 |
* \param rval_len Decoded buffer length
|
|
Packit |
284210 |
*
|
|
Packit |
284210 |
* \retval 0 On failure
|
|
Packit |
284210 |
* \retval 1 On Success
|
|
Packit |
284210 |
*/
|
|
Packit |
284210 |
static int msre_fn_cmdline_execute(apr_pool_t *mptmp, unsigned char *input,
|
|
Packit |
284210 |
long int input_len, char **rval, long int *rval_len)
|
|
Packit |
284210 |
{
|
|
Packit |
284210 |
int space = 0;
|
|
Packit |
284210 |
unsigned char *s = input;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
if (rval == NULL) return -1;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
*rval = (char *)input;
|
|
Packit |
284210 |
/* Check characters */
|
|
Packit |
284210 |
for ( ; *input; input++ ) {
|
|
Packit |
284210 |
switch(*input) {
|
|
Packit |
284210 |
/* remove some characters */
|
|
Packit |
284210 |
case '"':
|
|
Packit |
284210 |
case '\'':
|
|
Packit |
284210 |
case '\\':
|
|
Packit |
284210 |
case '^':
|
|
Packit |
284210 |
continue;
|
|
Packit |
284210 |
/* replace some characters to space (only one) */
|
|
Packit |
284210 |
case ' ':
|
|
Packit |
284210 |
case ',':
|
|
Packit |
284210 |
case ';':
|
|
Packit |
284210 |
case '\t':
|
|
Packit |
284210 |
case '\r':
|
|
Packit |
284210 |
case '\n':
|
|
Packit |
284210 |
if (!space) {
|
|
Packit |
284210 |
*s++ = ' ';
|
|
Packit |
284210 |
space++;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
break;
|
|
Packit |
284210 |
case '/':
|
|
Packit |
284210 |
case '(':
|
|
Packit |
284210 |
/* remove space before / or ( */
|
|
Packit |
284210 |
if (space) s--;
|
|
Packit |
284210 |
space = 0;
|
|
Packit |
284210 |
*s++ = *input;
|
|
Packit |
284210 |
break;
|
|
Packit |
284210 |
/* copy normal characters */
|
|
Packit |
284210 |
default :
|
|
Packit |
284210 |
*s++ = tolower(*input);
|
|
Packit |
284210 |
space = 0;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
*s = 0;
|
|
Packit |
284210 |
*rval_len = strlen(*rval);
|
|
Packit |
284210 |
return 1;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* lowercase */
|
|
Packit |
284210 |
|
|
Packit |
284210 |
static int msre_fn_lowercase_execute(apr_pool_t *mptmp, unsigned char *input,
|
|
Packit |
284210 |
long int input_len, char **rval, long int *rval_len)
|
|
Packit |
284210 |
{
|
|
Packit |
284210 |
long int i;
|
|
Packit |
284210 |
int changed = 0;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
if (rval == NULL) return -1;
|
|
Packit |
284210 |
*rval = NULL;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
i = 0;
|
|
Packit |
284210 |
while(i < input_len) {
|
|
Packit |
284210 |
int x = input[i];
|
|
Packit |
284210 |
input[i] = tolower(x);
|
|
Packit |
284210 |
if (x != input[i]) changed = 1;
|
|
Packit |
284210 |
i++;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
*rval = (char *)input;
|
|
Packit |
284210 |
*rval_len = input_len;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
return changed;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* trimLeft */
|
|
Packit |
284210 |
|
|
Packit |
284210 |
static int msre_fn_trimLeft_execute(apr_pool_t *mptmp, unsigned char *input,
|
|
Packit |
284210 |
long int input_len, char **rval, long int *rval_len)
|
|
Packit |
284210 |
{
|
|
Packit |
284210 |
long int i;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
*rval = (char *)input;
|
|
Packit |
284210 |
for (i = 0; i < input_len; i++) {
|
|
Packit |
284210 |
if (isspace(**rval) == 0) {
|
|
Packit |
284210 |
break;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
(*rval)++;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
*rval_len = input_len - i;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
return (*rval_len == input_len ? 0 : 1);
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* trimRight */
|
|
Packit |
284210 |
|
|
Packit |
284210 |
static int msre_fn_trimRight_execute(apr_pool_t *mptmp, unsigned char *input,
|
|
Packit |
284210 |
long int input_len, char **rval, long int *rval_len)
|
|
Packit |
284210 |
{
|
|
Packit |
284210 |
long int i;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
*rval = (char *)input;
|
|
Packit |
284210 |
for (i = input_len - 1; i >= 0; i--) {
|
|
Packit |
284210 |
if (isspace((*rval)[i]) == 0) {
|
|
Packit |
284210 |
break;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
(*rval)[i] = '\0';
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
*rval_len = i + 1;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
return (*rval_len == input_len ? 0 : 1);
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* trim */
|
|
Packit |
284210 |
|
|
Packit |
284210 |
static int msre_fn_trim_execute(apr_pool_t *mptmp, unsigned char *input,
|
|
Packit |
284210 |
long int input_len, char **rval, long int *rval_len)
|
|
Packit |
284210 |
{
|
|
Packit |
284210 |
int rc = 0;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
rc = msre_fn_trimLeft_execute(mptmp, input, input_len, rval, rval_len);
|
|
Packit |
284210 |
if (rc == 1) {
|
|
Packit |
284210 |
rc = msre_fn_trimRight_execute(mptmp, (unsigned char *)*rval, *rval_len, rval, rval_len);
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
else {
|
|
Packit |
284210 |
rc = msre_fn_trimRight_execute(mptmp, input, input_len, rval, rval_len);
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
return (*rval_len == input_len ? 0 : 1);
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* removeNulls */
|
|
Packit |
284210 |
|
|
Packit |
284210 |
static int msre_fn_removeNulls_execute(apr_pool_t *mptmp, unsigned char *input,
|
|
Packit |
284210 |
long int input_len, char **rval, long int *rval_len)
|
|
Packit |
284210 |
{
|
|
Packit |
284210 |
long int i, j;
|
|
Packit |
284210 |
int changed = 0;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
i = j = 0;
|
|
Packit |
284210 |
while(i < input_len) {
|
|
Packit |
284210 |
if (input[i] == '\0') {
|
|
Packit |
284210 |
changed = 1;
|
|
Packit |
284210 |
} else {
|
|
Packit |
284210 |
input[j] = input[i];
|
|
Packit |
284210 |
j++;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
i++;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
*rval = (char *)input;
|
|
Packit |
284210 |
*rval_len = j;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
return changed;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* replaceNulls */
|
|
Packit |
284210 |
|
|
Packit |
284210 |
static int msre_fn_replaceNulls_execute(apr_pool_t *mptmp, unsigned char *input,
|
|
Packit |
284210 |
long int input_len, char **rval, long int *rval_len)
|
|
Packit |
284210 |
{
|
|
Packit |
284210 |
long int i;
|
|
Packit |
284210 |
int changed = 0;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
if (rval == NULL) return -1;
|
|
Packit |
284210 |
*rval = NULL;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
i = 0;
|
|
Packit |
284210 |
while(i < input_len) {
|
|
Packit |
284210 |
if (input[i] == '\0') {
|
|
Packit |
284210 |
changed = 1;
|
|
Packit |
284210 |
input[i] = ' ';
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
i++;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
*rval = (char *)input;
|
|
Packit |
284210 |
*rval_len = input_len;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
return changed;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* compressWhitespace */
|
|
Packit |
284210 |
|
|
Packit |
284210 |
static int msre_fn_compressWhitespace_execute(apr_pool_t *mptmp, unsigned char *input,
|
|
Packit |
284210 |
long int input_len, char **rval, long int *rval_len)
|
|
Packit |
284210 |
{
|
|
Packit |
284210 |
long int i, j, count;
|
|
Packit |
284210 |
int changed = 0;
|
|
Packit |
284210 |
int inwhitespace = 0;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
i = j = count = 0;
|
|
Packit |
284210 |
while(i < input_len) {
|
|
Packit |
284210 |
if (isspace(input[i])||(input[i] == NBSP)) {
|
|
Packit |
284210 |
if (inwhitespace) changed = 1;
|
|
Packit |
284210 |
inwhitespace = 1;
|
|
Packit |
284210 |
count++;
|
|
Packit |
284210 |
} else {
|
|
Packit |
284210 |
inwhitespace = 0;
|
|
Packit |
284210 |
if (count) {
|
|
Packit |
284210 |
input[j] = ' ';
|
|
Packit |
284210 |
count = 0;
|
|
Packit |
284210 |
j++;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
input[j] = input[i];
|
|
Packit |
284210 |
j++;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
i++;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
if (count) {
|
|
Packit |
284210 |
input[j] = ' ';
|
|
Packit |
284210 |
j++;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
*rval = (char *)input;
|
|
Packit |
284210 |
*rval_len = j;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
return changed;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* cssDecode */
|
|
Packit |
284210 |
|
|
Packit |
284210 |
static int msre_fn_cssDecode_execute(apr_pool_t *mptmp, unsigned char *input,
|
|
Packit |
284210 |
long int input_len, char **rval, long int *rval_len)
|
|
Packit |
284210 |
{
|
|
Packit |
284210 |
long int length;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
length = css_decode_inplace(input, input_len);
|
|
Packit |
284210 |
*rval = (char *)input;
|
|
Packit |
284210 |
*rval_len = length;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
return (*rval_len == input_len ? 0 : 1);
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* removeWhitespace */
|
|
Packit |
284210 |
|
|
Packit |
284210 |
static int msre_fn_removeWhitespace_execute(apr_pool_t *mptmp, unsigned char *input,
|
|
Packit |
284210 |
long int input_len, char **rval, long int *rval_len)
|
|
Packit |
284210 |
{
|
|
Packit |
284210 |
long int i, j;
|
|
Packit |
284210 |
int changed = 0;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
i = j = 0;
|
|
Packit |
284210 |
while(i < input_len) {
|
|
Packit |
284210 |
if (isspace(input[i])||(input[i] == NBSP)) {
|
|
Packit |
284210 |
/* do nothing */
|
|
Packit |
284210 |
changed = 1;
|
|
Packit |
284210 |
} else {
|
|
Packit |
284210 |
input[j] = input[i];
|
|
Packit |
284210 |
j++;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
i++;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
*rval = (char *)input;
|
|
Packit |
284210 |
*rval_len = j;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
return changed;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* removeCommentsChar */
|
|
Packit |
284210 |
|
|
Packit |
284210 |
static int msre_fn_removeCommentsChar_execute(apr_pool_t *mptmp, unsigned char *input,
|
|
Packit |
284210 |
long int input_len, char **rval, long int *rval_len)
|
|
Packit |
284210 |
{
|
|
Packit |
284210 |
long int i, j;
|
|
Packit |
284210 |
int changed = 0;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
i = j = 0;
|
|
Packit |
284210 |
while(i < input_len) {
|
|
Packit |
284210 |
if ((input[i] == '/')&&(i + 1 < input_len)&&(input[i + 1] == '*')) {
|
|
Packit |
284210 |
changed = 1;
|
|
Packit |
284210 |
i += 2;
|
|
Packit |
284210 |
} else if ((input[i] == '*')&&(i + 1 < input_len)&&(input[i + 1] == '/')) {
|
|
Packit |
284210 |
changed = 1;
|
|
Packit |
284210 |
i += 2;
|
|
Packit |
284210 |
} else if ((input[i] == '<')&&(i + 1 < input_len)&&(input[i + 1] == '!')&&
|
|
Packit |
284210 |
(i + 2 < input_len)&&(input[i+2] == '-')&&(i + 3 < input_len)&&
|
|
Packit |
284210 |
(input[i + 3] == '-')) {
|
|
Packit |
284210 |
changed = 1;
|
|
Packit |
284210 |
i += 4;
|
|
Packit |
284210 |
} else if ((input[i] == '-')&&(i + 1 < input_len)&&(input[i + 1] == '-')&&
|
|
Packit |
284210 |
(i + 2 < input_len)&&(input[i+2] == '>')) {
|
|
Packit |
284210 |
changed = 1;
|
|
Packit |
284210 |
i += 3;
|
|
Packit |
284210 |
} else if ((input[i] == '-')&&(i + 1 < input_len)&&(input[i + 1] == '-')) {
|
|
Packit |
284210 |
changed = 1;
|
|
Packit |
284210 |
i += 2;
|
|
Packit |
284210 |
} else if (input[i] == '#') {
|
|
Packit |
284210 |
changed = 1;
|
|
Packit |
284210 |
i++;
|
|
Packit |
284210 |
} else {
|
|
Packit |
284210 |
input[j] = input[i];
|
|
Packit |
284210 |
i++;
|
|
Packit |
284210 |
j++;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
input[j] = '\0';
|
|
Packit |
284210 |
|
|
Packit |
284210 |
*rval = (char *)input;
|
|
Packit |
284210 |
*rval_len = j;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
return changed;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* removeComments */
|
|
Packit |
284210 |
|
|
Packit |
284210 |
static int msre_fn_removeComments_execute(apr_pool_t *mptmp, unsigned char *input,
|
|
Packit |
284210 |
long int input_len, char **rval, long int *rval_len)
|
|
Packit |
284210 |
{
|
|
Packit |
284210 |
long int i, j, incomment;
|
|
Packit |
284210 |
int changed = 0;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
i = j = incomment = 0;
|
|
Packit |
284210 |
while(i < input_len) {
|
|
Packit |
284210 |
if (incomment == 0) {
|
|
Packit |
284210 |
if ((input[i] == '/')&&(i + 1 < input_len)&&(input[i + 1] == '*')) {
|
|
Packit |
284210 |
changed = 1;
|
|
Packit |
284210 |
incomment = 1;
|
|
Packit |
284210 |
i += 2;
|
|
Packit |
284210 |
} else if ((input[i] == '<')&&(i + 1 < input_len)&&(input[i + 1] == '!')&&
|
|
Packit |
284210 |
(i + 2 < input_len)&&(input[i+2] == '-')&&(i + 3 < input_len)&&
|
|
Packit |
284210 |
(input[i + 3] == '-') && (incomment == 0)) {
|
|
Packit |
284210 |
incomment = 1;
|
|
Packit |
284210 |
changed = 1;
|
|
Packit |
284210 |
i += 4;
|
|
Packit |
284210 |
} else if ((input[i] == '-')&&(i + 1 < input_len)&&(input[i + 1] == '-')
|
|
Packit |
284210 |
&& (incomment == 0)) {
|
|
Packit |
284210 |
changed = 1;
|
|
Packit |
284210 |
input[i] = ' ';
|
|
Packit |
284210 |
break;
|
|
Packit |
284210 |
} else if (input[i] == '#' && (incomment == 0)) {
|
|
Packit |
284210 |
changed = 1;
|
|
Packit |
284210 |
input[i] = ' ';
|
|
Packit |
284210 |
break;
|
|
Packit |
284210 |
} else {
|
|
Packit |
284210 |
input[j] = input[i];
|
|
Packit |
284210 |
i++;
|
|
Packit |
284210 |
j++;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
} else {
|
|
Packit |
284210 |
if ((input[i] == '*')&&(i + 1 < input_len)&&(input[i + 1] == '/')) {
|
|
Packit |
284210 |
incomment = 0;
|
|
Packit |
284210 |
i += 2;
|
|
Packit |
284210 |
input[j] = input[i];
|
|
Packit |
284210 |
i++;
|
|
Packit |
284210 |
j++;
|
|
Packit |
284210 |
} else if ((input[i] == '-')&&(i + 1 < input_len)&&(input[i + 1] == '-')&&
|
|
Packit |
284210 |
(i + 2 < input_len)&&(input[i+2] == '>')) {
|
|
Packit |
284210 |
incomment = 0;
|
|
Packit |
284210 |
i += 3;
|
|
Packit |
284210 |
input[j] = input[i];
|
|
Packit |
284210 |
i++;
|
|
Packit |
284210 |
j++;
|
|
Packit |
284210 |
} else {
|
|
Packit |
284210 |
i++;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
if (incomment) {
|
|
Packit |
284210 |
input[j++] = ' ';
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
*rval = (char *)input;
|
|
Packit |
284210 |
*rval_len = j;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
return changed;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* replaceComments */
|
|
Packit |
284210 |
|
|
Packit |
284210 |
static int msre_fn_replaceComments_execute(apr_pool_t *mptmp, unsigned char *input,
|
|
Packit |
284210 |
long int input_len, char **rval, long int *rval_len)
|
|
Packit |
284210 |
{
|
|
Packit |
284210 |
long int i, j, incomment;
|
|
Packit |
284210 |
int changed = 0;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
i = j = incomment = 0;
|
|
Packit |
284210 |
while(i < input_len) {
|
|
Packit |
284210 |
if (incomment == 0) {
|
|
Packit |
284210 |
if ((input[i] == '/')&&(i + 1 < input_len)&&(input[i + 1] == '*')) {
|
|
Packit |
284210 |
changed = 1;
|
|
Packit |
284210 |
incomment = 1;
|
|
Packit |
284210 |
i += 2;
|
|
Packit |
284210 |
} else {
|
|
Packit |
284210 |
input[j] = input[i];
|
|
Packit |
284210 |
i++;
|
|
Packit |
284210 |
j++;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
} else {
|
|
Packit |
284210 |
if ((input[i] == '*')&&(i + 1 < input_len)&&(input[i + 1] == '/')) {
|
|
Packit |
284210 |
incomment = 0;
|
|
Packit |
284210 |
i += 2;
|
|
Packit |
284210 |
input[j] = ' ';
|
|
Packit |
284210 |
j++;
|
|
Packit |
284210 |
} else {
|
|
Packit |
284210 |
i++;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
if (incomment) {
|
|
Packit |
284210 |
input[j++] = ' ';
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
*rval = (char *)input;
|
|
Packit |
284210 |
*rval_len = j;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
return changed;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* jsDecode */
|
|
Packit |
284210 |
|
|
Packit |
284210 |
static int msre_fn_jsDecode_execute(apr_pool_t *mptmp, unsigned char *input,
|
|
Packit |
284210 |
long int input_len, char **rval, long int *rval_len)
|
|
Packit |
284210 |
{
|
|
Packit |
284210 |
long int length;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
length = js_decode_nonstrict_inplace(input, input_len);
|
|
Packit |
284210 |
*rval = (char *)input;
|
|
Packit |
284210 |
*rval_len = length;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
return (*rval_len == input_len ? 0 : 1);
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* urlDecode */
|
|
Packit |
284210 |
|
|
Packit |
284210 |
static int msre_fn_urlDecode_execute(apr_pool_t *mptmp, unsigned char *input,
|
|
Packit |
284210 |
long int input_len, char **rval, long int *rval_len)
|
|
Packit |
284210 |
{
|
|
Packit |
284210 |
long int length;
|
|
Packit |
284210 |
int invalid_count;
|
|
Packit |
284210 |
int changed;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
length = urldecode_nonstrict_inplace_ex(input, input_len, &invalid_count, &changed);
|
|
Packit |
284210 |
*rval = (char *)input;
|
|
Packit |
284210 |
*rval_len = length;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
return changed;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* urlDecodeUni */
|
|
Packit |
284210 |
|
|
Packit |
284210 |
static int msre_fn_urlDecodeUni_execute(apr_pool_t *mptmp, unsigned char *input,
|
|
Packit |
284210 |
long int input_len, char **rval, long int *rval_len)
|
|
Packit |
284210 |
{
|
|
Packit |
284210 |
long int length;
|
|
Packit |
284210 |
int changed;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
length = urldecode_uni_nonstrict_inplace_ex(input, input_len, &changed);
|
|
Packit |
284210 |
*rval = (char *)input;
|
|
Packit |
284210 |
*rval_len = length;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
return changed;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
static int msre_fn_utf8Unicode_execute(apr_pool_t *mptmp, unsigned char *input,
|
|
Packit |
284210 |
long int input_len, char **rval, long int *rval_len)
|
|
Packit |
284210 |
{
|
|
Packit |
284210 |
int changed = 0;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
*rval = (char *)utf8_unicode_inplace_ex(mptmp, input, input_len, &changed);
|
|
Packit |
284210 |
*rval_len = strlen(*rval);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
return changed;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* urlEncode */
|
|
Packit |
284210 |
|
|
Packit |
284210 |
static int msre_fn_urlEncode_execute(apr_pool_t *mptmp, unsigned char *input,
|
|
Packit |
284210 |
long int input_len, char **rval, long int *rval_len)
|
|
Packit |
284210 |
{
|
|
Packit |
284210 |
int changed;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
*rval = url_encode(mptmp, (char *)input, input_len, &changed);
|
|
Packit |
284210 |
*rval_len = strlen(*rval);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
return changed;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* base64Encode */
|
|
Packit |
284210 |
|
|
Packit |
284210 |
static int msre_fn_base64Encode_execute(apr_pool_t *mptmp, unsigned char *input,
|
|
Packit |
284210 |
long int input_len, char **rval, long int *rval_len)
|
|
Packit |
284210 |
{
|
|
Packit |
284210 |
*rval_len = apr_base64_encode_len(input_len); /* returns len with NULL byte included */
|
|
Packit |
284210 |
*rval = apr_palloc(mptmp, *rval_len);
|
|
Packit |
284210 |
apr_base64_encode(*rval, (const char *)input, input_len);
|
|
Packit |
284210 |
(*rval_len)--;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
return *rval_len ? 1 : 0;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* base64Decode */
|
|
Packit |
284210 |
|
|
Packit |
284210 |
static int msre_fn_base64Decode_execute(apr_pool_t *mptmp, unsigned char *input,
|
|
Packit |
284210 |
long int input_len, char **rval, long int *rval_len)
|
|
Packit |
284210 |
{
|
|
Packit |
284210 |
*rval_len = apr_base64_decode_len((const char *)input); /* returns len with NULL byte included */
|
|
Packit |
284210 |
*rval = apr_palloc(mptmp, *rval_len);
|
|
Packit |
284210 |
*rval_len = apr_base64_decode(*rval, (const char *)input);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
return *rval_len ? 1 : 0;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* length */
|
|
Packit |
284210 |
|
|
Packit |
284210 |
static int msre_fn_length_execute(apr_pool_t *mptmp, unsigned char *input,
|
|
Packit |
284210 |
long int input_len, char **rval, long int *rval_len)
|
|
Packit |
284210 |
{
|
|
Packit |
284210 |
*rval = apr_psprintf(mptmp, "%ld", input_len);
|
|
Packit |
284210 |
*rval_len = strlen(*rval);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
return 1;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* md5 */
|
|
Packit |
284210 |
|
|
Packit |
284210 |
static int msre_fn_md5_execute(apr_pool_t *mptmp, unsigned char *input,
|
|
Packit |
284210 |
long int input_len, char **rval, long int *rval_len)
|
|
Packit |
284210 |
{
|
|
Packit |
284210 |
unsigned char digest[APR_MD5_DIGESTSIZE];
|
|
Packit |
284210 |
|
|
Packit |
284210 |
apr_md5(digest, input, input_len);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
*rval_len = APR_MD5_DIGESTSIZE;
|
|
Packit |
284210 |
*rval = apr_pstrmemdup(mptmp, (const char *)digest, APR_MD5_DIGESTSIZE);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
return 1;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* sha1 */
|
|
Packit |
284210 |
|
|
Packit |
284210 |
static int msre_fn_sha1_execute(apr_pool_t *mptmp, unsigned char *input,
|
|
Packit |
284210 |
long int input_len, char **rval, long int *rval_len)
|
|
Packit |
284210 |
{
|
|
Packit |
284210 |
unsigned char digest[APR_SHA1_DIGESTSIZE];
|
|
Packit |
284210 |
apr_sha1_ctx_t context;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
apr_sha1_init(&context);
|
|
Packit |
284210 |
apr_sha1_update(&context, (const char *)input, input_len);
|
|
Packit |
284210 |
apr_sha1_final(digest, &context);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
*rval_len = APR_SHA1_DIGESTSIZE;
|
|
Packit |
284210 |
*rval = apr_pstrmemdup(mptmp, (const char *)digest, APR_SHA1_DIGESTSIZE);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
return 1;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/**
|
|
Packit |
284210 |
* \brief SqlHexDecode transformation function. Transform xNN data.
|
|
Packit |
284210 |
*
|
|
Packit |
284210 |
* \param mptmp Pointer to resource pool
|
|
Packit |
284210 |
* \param input Pointer to input data
|
|
Packit |
284210 |
* \param input_len Input data length
|
|
Packit |
284210 |
* \param rval Pointer to decoded buffer
|
|
Packit |
284210 |
* \param rval_len Decoded buffer length
|
|
Packit |
284210 |
*
|
|
Packit |
284210 |
* \retval 0 On failure
|
|
Packit |
284210 |
* \retval 1 On Success
|
|
Packit |
284210 |
*/
|
|
Packit |
284210 |
static int msre_fn_sqlHexDecode_execute(apr_pool_t *mptmp, unsigned char *input,
|
|
Packit |
284210 |
long int input_len, char **rval, long int *rval_len)
|
|
Packit |
284210 |
{
|
|
Packit |
284210 |
*rval_len = sql_hex2bytes_inplace(input, input_len);
|
|
Packit |
284210 |
*rval = (char *)input;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
return 1;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* hexDecode */
|
|
Packit |
284210 |
|
|
Packit |
284210 |
static int msre_fn_hexDecode_execute(apr_pool_t *mptmp, unsigned char *input,
|
|
Packit |
284210 |
long int input_len, char **rval, long int *rval_len)
|
|
Packit |
284210 |
{
|
|
Packit |
284210 |
*rval_len = hex2bytes_inplace(input, input_len);
|
|
Packit |
284210 |
*rval = (char *)input;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
return 1;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* hexEncode */
|
|
Packit |
284210 |
|
|
Packit |
284210 |
static int msre_fn_hexEncode_execute(apr_pool_t *mptmp, unsigned char *input,
|
|
Packit |
284210 |
long int input_len, char **rval, long int *rval_len)
|
|
Packit |
284210 |
{
|
|
Packit |
284210 |
*rval = bytes2hex(mptmp, input, input_len);
|
|
Packit |
284210 |
*rval_len = strlen(*rval);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
return 1;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* htmlEntityDecode */
|
|
Packit |
284210 |
|
|
Packit |
284210 |
static int msre_fn_htmlEntityDecode_execute(apr_pool_t *mptmp, unsigned char *input,
|
|
Packit |
284210 |
long int input_len, char **rval, long int *rval_len)
|
|
Packit |
284210 |
{
|
|
Packit |
284210 |
*rval_len = html_entities_decode_inplace(mptmp, input, input_len);
|
|
Packit |
284210 |
*rval = (char *)input;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
return (*rval_len == input_len ? 0 : 1);
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* escapeSeqDecode */
|
|
Packit |
284210 |
|
|
Packit |
284210 |
static int msre_fn_escapeSeqDecode_execute(apr_pool_t *mptmp, unsigned char *input,
|
|
Packit |
284210 |
long int input_len, char **rval, long int *rval_len)
|
|
Packit |
284210 |
{
|
|
Packit |
284210 |
*rval_len = ansi_c_sequences_decode_inplace(input, input_len);
|
|
Packit |
284210 |
*rval = (char *)input;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
return (*rval_len == input_len ? 0 : 1);
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* normalizePath */
|
|
Packit |
284210 |
|
|
Packit |
284210 |
static int msre_fn_normalizePath_execute(apr_pool_t *mptmp, unsigned char *input,
|
|
Packit |
284210 |
long int input_len, char **rval, long int *rval_len)
|
|
Packit |
284210 |
{
|
|
Packit |
284210 |
int changed;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
*rval_len = normalize_path_inplace(input, input_len, 0, &changed);
|
|
Packit |
284210 |
*rval = (char *)input;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
return changed;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* normalizePathWin */
|
|
Packit |
284210 |
|
|
Packit |
284210 |
static int msre_fn_normalizePathWin_execute(apr_pool_t *mptmp, unsigned char *input,
|
|
Packit |
284210 |
long int input_len, char **rval, long int *rval_len)
|
|
Packit |
284210 |
{
|
|
Packit |
284210 |
int changed;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
*rval_len = normalize_path_inplace(input, input_len, 1, &changed);
|
|
Packit |
284210 |
*rval = (char *)input;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
return changed;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* parityEven7bit */
|
|
Packit |
284210 |
|
|
Packit |
284210 |
static int msre_fn_parityEven7bit_execute(apr_pool_t *mptmp, unsigned char *input,
|
|
Packit |
284210 |
long int input_len, char **rval, long int *rval_len)
|
|
Packit |
284210 |
{
|
|
Packit |
284210 |
long int i;
|
|
Packit |
284210 |
int changed = 0;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
if (rval == NULL) return -1;
|
|
Packit |
284210 |
*rval = NULL;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
i = 0;
|
|
Packit |
284210 |
while(i < input_len) {
|
|
Packit |
284210 |
unsigned int x = input[i];
|
|
Packit |
284210 |
|
|
Packit |
284210 |
input[i] ^= input[i] >> 4;
|
|
Packit |
284210 |
input[i] &= 0xf;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
if ((0x6996 >> input[i]) & 1) {
|
|
Packit |
284210 |
input[i] = x | 0x80;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
else {
|
|
Packit |
284210 |
input[i] = x & 0x7f;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
if (x != input[i]) changed = 1;
|
|
Packit |
284210 |
i++;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
*rval = (char *)input;
|
|
Packit |
284210 |
*rval_len = input_len;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
return changed;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* parityZero7bit */
|
|
Packit |
284210 |
|
|
Packit |
284210 |
static int msre_fn_parityZero7bit_execute(apr_pool_t *mptmp, unsigned char *input,
|
|
Packit |
284210 |
long int input_len, char **rval, long int *rval_len)
|
|
Packit |
284210 |
{
|
|
Packit |
284210 |
long int i;
|
|
Packit |
284210 |
int changed = 0;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
if (rval == NULL) return -1;
|
|
Packit |
284210 |
*rval = NULL;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
i = 0;
|
|
Packit |
284210 |
while(i < input_len) {
|
|
Packit |
284210 |
unsigned char c = input[i];
|
|
Packit |
284210 |
input[i] &= 0x7f;
|
|
Packit |
284210 |
if (c != input[i]) changed = 1;
|
|
Packit |
284210 |
i++;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
*rval = (char *)input;
|
|
Packit |
284210 |
*rval_len = input_len;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
return changed;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* parityOdd7bit */
|
|
Packit |
284210 |
|
|
Packit |
284210 |
static int msre_fn_parityOdd7bit_execute(apr_pool_t *mptmp, unsigned char *input,
|
|
Packit |
284210 |
long int input_len, char **rval, long int *rval_len)
|
|
Packit |
284210 |
{
|
|
Packit |
284210 |
long int i;
|
|
Packit |
284210 |
int changed = 0;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
if (rval == NULL) return -1;
|
|
Packit |
284210 |
*rval = NULL;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
i = 0;
|
|
Packit |
284210 |
while(i < input_len) {
|
|
Packit |
284210 |
unsigned int x = input[i];
|
|
Packit |
284210 |
|
|
Packit |
284210 |
input[i] ^= input[i] >> 4;
|
|
Packit |
284210 |
input[i] &= 0xf;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
if ((0x6996 >> input[i]) & 1) {
|
|
Packit |
284210 |
input[i] = x & 0x7f;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
else {
|
|
Packit |
284210 |
input[i] = x | 0x80;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
if (x != input[i]) changed = 1;
|
|
Packit |
284210 |
i++;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
*rval = (char *)input;
|
|
Packit |
284210 |
*rval_len = input_len;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
return changed;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/**
|
|
Packit |
284210 |
* \brief Base64 transformation function based on RFC2045
|
|
Packit |
284210 |
*
|
|
Packit |
284210 |
* \param mptmp Pointer to resource pool
|
|
Packit |
284210 |
* \param input Pointer to input data
|
|
Packit |
284210 |
* \param input_len Input data length
|
|
Packit |
284210 |
* \param rval Pointer to decoded buffer
|
|
Packit |
284210 |
* \param rval_len Decoded buffer length
|
|
Packit |
284210 |
*
|
|
Packit |
284210 |
* \retval 0 On failure
|
|
Packit |
284210 |
* \retval 1 On Success
|
|
Packit |
284210 |
*/
|
|
Packit |
284210 |
static int msre_fn_base64DecodeExt_execute(apr_pool_t *mptmp, unsigned char *input, long int input_len, char **rval, long int *rval_len)
|
|
Packit |
284210 |
{
|
|
Packit |
284210 |
*rval_len = input_len;
|
|
Packit |
284210 |
*rval = apr_palloc(mptmp, *rval_len);
|
|
Packit |
284210 |
*rval_len = decode_base64_ext(*rval, (const unsigned char *)input, input_len);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
return *rval_len ? 1 : 0;
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* ------------------------------------------------------------------------------ */
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/**
|
|
Packit |
284210 |
* Registers one transformation function with the engine.
|
|
Packit |
284210 |
*/
|
|
Packit |
284210 |
void msre_engine_tfn_register(msre_engine *engine, const char *name,
|
|
Packit |
284210 |
fn_tfn_execute_t execute)
|
|
Packit |
284210 |
{
|
|
Packit |
284210 |
msre_tfn_metadata *metadata = (msre_tfn_metadata *)apr_pcalloc(engine->mp,
|
|
Packit |
284210 |
sizeof(msre_tfn_metadata));
|
|
Packit |
284210 |
if (metadata == NULL) return;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
metadata->name = name;
|
|
Packit |
284210 |
metadata->execute = execute;
|
|
Packit |
284210 |
|
|
Packit |
284210 |
apr_table_setn(engine->tfns, name, (void *)metadata);
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/**
|
|
Packit |
284210 |
* Returns transformation function metadata given a name.
|
|
Packit |
284210 |
*/
|
|
Packit |
284210 |
msre_tfn_metadata *msre_engine_tfn_resolve(msre_engine *engine, const char *name) {
|
|
Packit |
284210 |
return (msre_tfn_metadata *)apr_table_get(engine->tfns, name);
|
|
Packit |
284210 |
}
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/**
|
|
Packit |
284210 |
* Register the default transformation functions.
|
|
Packit |
284210 |
*/
|
|
Packit |
284210 |
void msre_engine_register_default_tfns(msre_engine *engine) {
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* none */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"none",
|
|
Packit |
284210 |
NULL
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* base64Decode */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"base64Decode",
|
|
Packit |
284210 |
msre_fn_base64Decode_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* base64Encode */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"base64Encode",
|
|
Packit |
284210 |
msre_fn_base64Encode_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* compressWhitespace */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"compressWhitespace",
|
|
Packit |
284210 |
msre_fn_compressWhitespace_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* cssDecode */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"cssDecode",
|
|
Packit |
284210 |
msre_fn_cssDecode_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* escapeSeqDecode */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"escapeSeqDecode",
|
|
Packit |
284210 |
msre_fn_escapeSeqDecode_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* sqlHexDecode */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"sqlHexDecode",
|
|
Packit |
284210 |
msre_fn_sqlHexDecode_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* hexDecode */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"hexDecode",
|
|
Packit |
284210 |
msre_fn_hexDecode_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* hexEncode */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"hexEncode",
|
|
Packit |
284210 |
msre_fn_hexEncode_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* htmlEntityDecode */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"htmlEntityDecode",
|
|
Packit |
284210 |
msre_fn_htmlEntityDecode_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* jsDecode */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"jsDecode",
|
|
Packit |
284210 |
msre_fn_jsDecode_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* length */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"length",
|
|
Packit |
284210 |
msre_fn_length_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* lowercase */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"lowercase",
|
|
Packit |
284210 |
msre_fn_lowercase_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* md5 */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"md5",
|
|
Packit |
284210 |
msre_fn_md5_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* normalisePath */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"normalisePath",
|
|
Packit |
284210 |
msre_fn_normalizePath_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* normalizePath */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"normalizePath",
|
|
Packit |
284210 |
msre_fn_normalizePath_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* normalisePathWin */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"normalisePathWin",
|
|
Packit |
284210 |
msre_fn_normalizePathWin_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* normalizePathWin */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"normalizePathWin",
|
|
Packit |
284210 |
msre_fn_normalizePathWin_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* parityEven7bit */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"parityEven7bit",
|
|
Packit |
284210 |
msre_fn_parityEven7bit_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* parityZero7bit */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"parityZero7bit",
|
|
Packit |
284210 |
msre_fn_parityZero7bit_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* parityOdd7bit */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"parityOdd7bit",
|
|
Packit |
284210 |
msre_fn_parityOdd7bit_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* removeWhitespace */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"removeWhitespace",
|
|
Packit |
284210 |
msre_fn_removeWhitespace_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* removeNulls */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"removeNulls",
|
|
Packit |
284210 |
msre_fn_removeNulls_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* replaceNulls */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"replaceNulls",
|
|
Packit |
284210 |
msre_fn_replaceNulls_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* removeComments */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"removeComments",
|
|
Packit |
284210 |
msre_fn_removeComments_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* removeCommentsChar */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"removeCommentsChar",
|
|
Packit |
284210 |
msre_fn_removeCommentsChar_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* replaceComments */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"replaceComments",
|
|
Packit |
284210 |
msre_fn_replaceComments_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* sha1 */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"sha1",
|
|
Packit |
284210 |
msre_fn_sha1_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* trim */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"trim",
|
|
Packit |
284210 |
msre_fn_trim_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* trimLeft */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"trimLeft",
|
|
Packit |
284210 |
msre_fn_trimLeft_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"cmdline",
|
|
Packit |
284210 |
msre_fn_cmdline_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* trimRight */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"trimRight",
|
|
Packit |
284210 |
msre_fn_trimRight_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* urlDecode */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"urlDecode",
|
|
Packit |
284210 |
msre_fn_urlDecode_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* urlDecodeUni */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"urlDecodeUni",
|
|
Packit |
284210 |
msre_fn_urlDecodeUni_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* Utf8Unicode */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"Utf8toUnicode",
|
|
Packit |
284210 |
msre_fn_utf8Unicode_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* urlEncode */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"urlEncode",
|
|
Packit |
284210 |
msre_fn_urlEncode_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
/* base64DecodeExt */
|
|
Packit |
284210 |
msre_engine_tfn_register(engine,
|
|
Packit |
284210 |
"base64DecodeExt",
|
|
Packit |
284210 |
msre_fn_base64DecodeExt_execute
|
|
Packit |
284210 |
);
|
|
Packit |
284210 |
|
|
Packit |
284210 |
}
|