mirror of
https://github.com/github/codeql.git
synced 2026-05-01 03:35:13 +02:00
Ratpack conversion to new lambda model
Signed-off-by: Jonathan Leitschuh <Jonathan.Leitschuh@gmail.com>
This commit is contained in:
@@ -53,13 +53,16 @@ class Resource {
|
||||
}
|
||||
|
||||
void test3(Context ctx) {
|
||||
sink(ctx.getRequest().getBody().map(TypedData::getText)); //$hasTaintFlow
|
||||
Promise<String> mapResult = ctx.getRequest().getBody().map(b -> {
|
||||
ctx.getRequest().getBody().map(TypedData::getText).then(s -> {
|
||||
sink(s); //$hasTaintFlow
|
||||
});
|
||||
ctx.getRequest().getBody().map(b -> {
|
||||
sink(b); //$hasTaintFlow
|
||||
sink(b.getText()); //$hasTaintFlow
|
||||
return b.getText();
|
||||
}).then(t -> {
|
||||
sink(t); //$hasTaintFlow
|
||||
});
|
||||
sink(mapResult); //$hasTaintFlow
|
||||
ctx.getRequest().getBody().map(TypedData::getText).then(this::sink); //$hasTaintFlow
|
||||
ctx
|
||||
.getRequest()
|
||||
@@ -72,7 +75,9 @@ class Resource {
|
||||
void test4() {
|
||||
String tainted = taint();
|
||||
Promise.value(tainted);
|
||||
sink(Promise.value(tainted)); //$hasTaintFlow
|
||||
Promise
|
||||
.value(tainted)
|
||||
.then(this::sink); //$hasTaintFlow
|
||||
Promise
|
||||
.value(tainted)
|
||||
.map(a -> a)
|
||||
@@ -188,15 +193,14 @@ class Resource {
|
||||
.then(value -> {
|
||||
sink(value); //$hasTaintFlow
|
||||
});
|
||||
// Waiting for support for lambda data flow
|
||||
// Promise
|
||||
// .value("potato")
|
||||
// .flatMapError(RuntimeException.class, exception -> {
|
||||
// return Promise.value(taint());
|
||||
// })
|
||||
// .then(value -> {
|
||||
// sink(value); //$hasTaintFlow
|
||||
// });
|
||||
Promise
|
||||
.value("potato")
|
||||
.flatMapError(RuntimeException.class, exception -> {
|
||||
return Promise.value(taint());
|
||||
})
|
||||
.then(value -> {
|
||||
sink(value); //$hasTaintFlow
|
||||
});
|
||||
}
|
||||
|
||||
void test9() {
|
||||
@@ -213,6 +217,12 @@ class Resource {
|
||||
.then(value -> {
|
||||
sink(value); // no taints flow
|
||||
});
|
||||
Promise
|
||||
.value(tainted)
|
||||
.flatMap(v -> Promise.value(v))
|
||||
.then(value -> {
|
||||
sink(value); //$hasTaintFlow
|
||||
});
|
||||
}
|
||||
|
||||
public static String identity(String input) {
|
||||
@@ -234,5 +244,51 @@ class Resource {
|
||||
sink(value); // no taints flow
|
||||
});
|
||||
}
|
||||
|
||||
void test11() {
|
||||
String tainted = taint();
|
||||
Promise
|
||||
.sync(() -> tainted)
|
||||
.mapIf(v -> {
|
||||
sink(v); //$hasTaintFlow
|
||||
return true;
|
||||
}, v -> {
|
||||
sink(v); //$hasTaintFlow
|
||||
return v;
|
||||
})
|
||||
.then(value -> {
|
||||
sink(value); //$hasTaintFlow
|
||||
});
|
||||
Promise
|
||||
.sync(() -> tainted)
|
||||
.mapIf(v -> {
|
||||
sink(v); //$hasTaintFlow
|
||||
return true;
|
||||
}, vTrue -> {
|
||||
sink(vTrue); //$hasTaintFlow
|
||||
return vTrue;
|
||||
}, vFalse -> {
|
||||
sink(vFalse); //$hasTaintFlow
|
||||
return vFalse;
|
||||
})
|
||||
.then(value -> {
|
||||
sink(value); //$hasTaintFlow
|
||||
});
|
||||
Promise
|
||||
.sync(() -> tainted)
|
||||
.mapIf(v -> {
|
||||
sink(v); //$hasTaintFlow
|
||||
return true;
|
||||
}, vTrue -> {
|
||||
sink(vTrue); //$hasTaintFlow
|
||||
return "potato";
|
||||
}, vFalse -> {
|
||||
sink(vFalse); //$hasTaintFlow
|
||||
return "potato";
|
||||
})
|
||||
.then(value -> {
|
||||
sink(value); // no tainted flow
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
@@ -74,6 +74,14 @@ public interface Promise<T> {
|
||||
return null;
|
||||
}
|
||||
|
||||
default Promise<T> mapIf(Predicate<? super T> predicate, Function<? super T, ? extends T> transformer) {
|
||||
return null;
|
||||
}
|
||||
|
||||
default <O> Promise<O> mapIf(Predicate<? super T> predicate, Function<? super T, ? extends O> onTrue, Function<? super T, ? extends O> onFalse) {
|
||||
return null;
|
||||
}
|
||||
|
||||
default Promise<T> mapError(Function<? super Throwable, ? extends T> transformer) {
|
||||
return null;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user