1
1
/*
2
2
* ModSecurity, http://www.modsecurity.org/
3
- * Copyright (c) 2015 - 2021 Trustwave Holdings, Inc. (http://www.trustwave.com/)
3
+ * Copyright (c) 2015 - 2023 Trustwave Holdings, Inc. (http://www.trustwave.com/)
4
4
*
5
5
* You may not use this file except in compliance with
6
6
* the License. You may obtain a copy of the License at
15
15
16
16
#include " src/actions/transformations/remove_comments_char.h"
17
17
18
- #include < iostream>
19
18
#include < string>
20
- #include < algorithm>
21
- #include < functional>
22
- #include < cctype>
23
- #include < locale>
24
19
25
20
#include " modsecurity/transaction.h"
26
21
#include " src/actions/transformations/transformation.h"
@@ -37,39 +32,40 @@ RemoveCommentsChar::RemoveCommentsChar(const std::string &action)
37
32
38
33
std::string RemoveCommentsChar::evaluate (const std::string &val,
39
34
Transaction *transaction) {
40
- int64_t i;
41
- std::string value (val);
35
+ size_t i = 0 ;
36
+ std::string transformed_value;
37
+ transformed_value.reserve (val.size ());
42
38
43
- i = 0 ;
44
- while (i < value.size ()) {
45
- if (value.at (i) == ' /'
46
- && (i+1 < value.size ()) && value.at (i+1 ) == ' *' ) {
47
- value.erase (i, 2 );
48
- } else if (value.at (i) == ' *'
49
- && (i+1 < value.size ()) && value.at (i+1 ) == ' /' ) {
50
- value.erase (i, 2 );
51
- } else if (value.at (i) == ' <'
52
- && (i+1 < value.size ())
53
- && value.at (i+1 ) == ' !'
54
- && (i+2 < value.size ())
55
- && value.at (i+2 ) == ' -'
56
- && (i+3 < value.size ())
57
- && value.at (i+3 ) == ' -' ) {
58
- value.erase (i, 4 );
59
- } else if (value.at (i) == ' -'
60
- && (i+1 < value.size ()) && value.at (i+1 ) == ' -'
61
- && (i+2 < value.size ()) && value.at (i+2 ) == ' >' ) {
62
- value.erase (i, 3 );
63
- } else if (value.at (i) == ' -'
64
- && (i+1 < value.size ()) && value.at (i+1 ) == ' -' ) {
65
- value.erase (i, 2 );
66
- } else if (value.at (i) == ' #' ) {
67
- value.erase (i, 1 );
39
+ while (i < val.size ()) {
40
+ if (val.at (i) == ' /'
41
+ && (i+1 < val.size ()) && val.at (i+1 ) == ' *' ) {
42
+ i += 2 ;
43
+ } else if (val.at (i) == ' *'
44
+ && (i+1 < val.size ()) && val.at (i+1 ) == ' /' ) {
45
+ i += 2 ;
46
+ } else if (val.at (i) == ' <'
47
+ && (i+1 < val.size ())
48
+ && val.at (i+1 ) == ' !'
49
+ && (i+2 < val.size ())
50
+ && val.at (i+2 ) == ' -'
51
+ && (i+3 < val.size ())
52
+ && val.at (i+3 ) == ' -' ) {
53
+ i += 4 ;
54
+ } else if (val.at (i) == ' -'
55
+ && (i+1 < val.size ()) && val.at (i+1 ) == ' -'
56
+ && (i+2 < val.size ()) && val.at (i+2 ) == ' >' ) {
57
+ i += 3 ;
58
+ } else if (val.at (i) == ' -'
59
+ && (i+1 < val.size ()) && val.at (i+1 ) == ' -' ) {
60
+ i += 2 ;
61
+ } else if (val.at (i) == ' #' ) {
62
+ i += 1 ;
68
63
} else {
64
+ transformed_value += val.at (i);
69
65
i++;
70
66
}
71
67
}
72
- return value ;
68
+ return transformed_value ;
73
69
}
74
70
75
71
} // namespace transformations
0 commit comments