Skip to content

Commit 6c0eb8b

Browse files
committed
Ruby: update array flow summaries to use getConstantValue()
1 parent 693ff6a commit 6c0eb8b

File tree

1 file changed

+27
-27
lines changed

1 file changed

+27
-27
lines changed

ruby/ql/lib/codeql/ruby/frameworks/StandardLibrary.qll

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -712,7 +712,7 @@ module Array {
712712
ElementReferenceRangeReadKnownSummary() {
713713
mc.getNumberOfArguments() = 2 and
714714
start = getKnownArrayElementContent(mc.getArgument(0)).getIndex() and
715-
exists(int length | length = mc.getArgument(1).getValueText().toInt() |
715+
exists(int length | length = mc.getArgument(1).getConstantValue().getInt() |
716716
end = (start + length - 1) and
717717
this = "[](" + start + ", " + length + ")"
718718
)
@@ -722,14 +722,14 @@ module Array {
722722
rl = mc.getArgument(0) and
723723
(
724724
// Either an explicit, positive beginning index...
725-
start = rl.getBegin().getValueText().toInt() and start >= 0
725+
start = rl.getBegin().getConstantValue().getInt() and start >= 0
726726
or
727727
// Or a begin-less one, since `..n` is equivalent to `0..n`
728728
not exists(rl.getBegin()) and start = 0
729729
) and
730730
// There must be an explicit end. An end-less range like `2..` is not
731731
// treated as a known range, since we don't track the length of the array.
732-
exists(int e | e = rl.getEnd().getValueText().toInt() and e >= 0 |
732+
exists(int e | e = rl.getEnd().getConstantValue().getInt() and e >= 0 |
733733
rl.isInclusive() and end = e
734734
or
735735
rl.isExclusive() and end = e - 1
@@ -762,16 +762,16 @@ module Array {
762762
(
763763
mc.getNumberOfArguments() = 2 and
764764
(
765-
not exists(mc.getArgument(0).getValueText().toInt()) or
766-
not exists(mc.getArgument(1).getValueText().toInt())
765+
not exists(mc.getArgument(0).getConstantValue().getInt()) or
766+
not exists(mc.getArgument(1).getConstantValue().getInt())
767767
)
768768
or
769769
mc.getNumberOfArguments() = 1 and
770770
exists(RangeLiteral rl | rl = mc.getArgument(0) |
771771
exists(rl.getBegin()) and
772-
not exists(int b | b = rl.getBegin().getValueText().toInt() and b >= 0)
772+
not exists(int b | b = rl.getBegin().getConstantValue().getInt() and b >= 0)
773773
or
774-
not exists(int e | e = rl.getEnd().getValueText().toInt() and e >= 0)
774+
not exists(int e | e = rl.getEnd().getConstantValue().getInt() and e >= 0)
775775
)
776776
)
777777
}
@@ -1234,7 +1234,7 @@ module Array {
12341234

12351235
InsertKnownSummary() {
12361236
this = "insert(" + i + ")" and
1237-
i = mc.getArgument(0).getValueText().toInt()
1237+
i = mc.getArgument(0).getConstantValue().getInt()
12381238
}
12391239

12401240
override predicate propagatesFlowExt(string input, string output, boolean preservesValue) {
@@ -1275,7 +1275,7 @@ module Array {
12751275
private class InsertUnknownSummary extends InsertSummary {
12761276
InsertUnknownSummary() {
12771277
this = "insert(index)" and
1278-
not exists(mc.getArgument(0).getValueText().toInt())
1278+
not exists(mc.getArgument(0).getConstantValue().getInt())
12791279
}
12801280

12811281
override predicate propagatesFlowExt(string input, string output, boolean preservesValue) {
@@ -1552,7 +1552,7 @@ module Array {
15521552
private int c;
15531553

15541554
RotateKnownSummary() {
1555-
c = mc.getArgument(0).getValueText().toInt() and
1555+
c = mc.getArgument(0).getConstantValue().getInt() and
15561556
this = "rotate(" + c + ")"
15571557
or
15581558
not exists(mc.getArgument(0)) and c = 1 and this = "rotate"
@@ -1580,7 +1580,7 @@ module Array {
15801580
RotateUnknownSummary() {
15811581
this = "rotate(index)" and
15821582
exists(mc.getArgument(0)) and
1583-
not exists(mc.getArgument(0).getValueText().toInt())
1583+
not exists(mc.getArgument(0).getConstantValue().getInt())
15841584
}
15851585

15861586
override predicate propagatesFlowExt(string input, string output, boolean preservesValue) {
@@ -1608,7 +1608,7 @@ module Array {
16081608
private int c;
16091609

16101610
RotateBangKnownSummary() {
1611-
c = mc.getArgument(0).getValueText().toInt() and
1611+
c = mc.getArgument(0).getConstantValue().getInt() and
16121612
this = "rotate!(" + c + ")"
16131613
or
16141614
not exists(mc.getArgument(0)) and c = 1 and this = "rotate!"
@@ -1635,7 +1635,7 @@ module Array {
16351635
RotateBangUnknownSummary() {
16361636
this = "rotate!(index)" and
16371637
exists(mc.getArgument(0)) and
1638-
not exists(mc.getArgument(0).getValueText().toInt())
1638+
not exists(mc.getArgument(0).getConstantValue().getInt())
16391639
}
16401640

16411641
override predicate propagatesFlowExt(string input, string output, boolean preservesValue) {
@@ -1701,7 +1701,7 @@ module Array {
17011701
private int n;
17021702

17031703
ShiftArgKnownSummary() {
1704-
n = mc.getArgument(0).getValueText().toInt() and
1704+
n = mc.getArgument(0).getConstantValue().getInt() and
17051705
this = "shift(" + n + ")"
17061706
}
17071707

@@ -1724,7 +1724,7 @@ module Array {
17241724
ShiftArgUnknownSummary() {
17251725
this = "shift(index)" and
17261726
exists(mc.getArgument(0)) and
1727-
not exists(mc.getArgument(0).getValueText().toInt())
1727+
not exists(mc.getArgument(0).getConstantValue().getInt())
17281728
}
17291729

17301730
override predicate propagatesFlowExt(string input, string output, boolean preservesValue) {
@@ -1826,7 +1826,7 @@ module Array {
18261826
SliceBangRangeKnownSummary() {
18271827
mc.getNumberOfArguments() = 2 and
18281828
start = getKnownArrayElementContent(mc.getArgument(0)).getIndex() and
1829-
exists(int length | length = mc.getArgument(1).getValueText().toInt() |
1829+
exists(int length | length = mc.getArgument(1).getConstantValue().getInt() |
18301830
end = (start + length - 1) and
18311831
this = "slice!(" + start + ", " + length + ")"
18321832
)
@@ -1835,11 +1835,11 @@ module Array {
18351835
exists(RangeLiteral rl |
18361836
rl = mc.getArgument(0) and
18371837
(
1838-
start = rl.getBegin().getValueText().toInt() and start >= 0
1838+
start = rl.getBegin().getConstantValue().getInt() and start >= 0
18391839
or
18401840
not exists(rl.getBegin()) and start = 0
18411841
) and
1842-
exists(int e | e = rl.getEnd().getValueText().toInt() and e >= 0 |
1842+
exists(int e | e = rl.getEnd().getConstantValue().getInt() and e >= 0 |
18431843
rl.isInclusive() and end = e
18441844
or
18451845
rl.isExclusive() and end = e - 1
@@ -1883,16 +1883,16 @@ module Array {
18831883
(
18841884
mc.getNumberOfArguments() = 2 and
18851885
(
1886-
not exists(mc.getArgument(0).getValueText().toInt()) or
1887-
not exists(mc.getArgument(1).getValueText().toInt())
1886+
not exists(mc.getArgument(0).getConstantValue().getInt()) or
1887+
not exists(mc.getArgument(1).getConstantValue().getInt())
18881888
)
18891889
or
18901890
mc.getNumberOfArguments() = 1 and
18911891
exists(RangeLiteral rl | rl = mc.getArgument(0) |
18921892
exists(rl.getBegin()) and
1893-
not exists(int b | b = rl.getBegin().getValueText().toInt() and b >= 0)
1893+
not exists(int b | b = rl.getBegin().getConstantValue().getInt() and b >= 0)
18941894
or
1895-
not exists(int e | e = rl.getEnd().getValueText().toInt() and e >= 0)
1895+
not exists(int e | e = rl.getEnd().getConstantValue().getInt() and e >= 0)
18961896
)
18971897
)
18981898
}
@@ -1920,7 +1920,7 @@ module Array {
19201920
ValuesAtKnownSummary() {
19211921
this = "values_at(known)" and
19221922
forall(int i | i in [0 .. mc.getNumberOfArguments() - 1] |
1923-
mc.getArgument(i).getValueText().toInt() >= 0
1923+
mc.getArgument(i).getConstantValue().getInt() >= 0
19241924
)
19251925
}
19261926

@@ -1932,7 +1932,7 @@ module Array {
19321932
or
19331933
exists(ArrayIndex elementIndex, int argIndex |
19341934
argIndex in [0 .. mc.getNumberOfArguments() - 1] and
1935-
elementIndex = mc.getArgument(argIndex).getValueText().toInt()
1935+
elementIndex = mc.getArgument(argIndex).getConstantValue().getInt()
19361936
|
19371937
input = "ArrayElement[" + elementIndex + "] of Receiver" and
19381938
output = "ArrayElement[" + argIndex + "] of ReturnValue"
@@ -1949,7 +1949,7 @@ module Array {
19491949
ValuesAtUnknownSummary() {
19501950
this = "values_at(unknown)" and
19511951
exists(int i | i in [0 .. mc.getNumberOfArguments() - 1] |
1952-
not exists(int val | val = mc.getArgument(i).getValueText().toInt() and val >= 0)
1952+
not exists(int val | val = mc.getArgument(i).getConstantValue().getInt() and val >= 0)
19531953
)
19541954
}
19551955

@@ -2695,7 +2695,7 @@ module Enumerable {
26952695

26962696
TakeKnownSummary() {
26972697
this = "take(" + i + ")" and
2698-
i = mc.getArgument(0).getValueText().toInt()
2698+
i = mc.getArgument(0).getConstantValue().getInt()
26992699
}
27002700

27012701
override predicate propagatesFlowExt(string input, string output, boolean preservesValue) {
@@ -2715,7 +2715,7 @@ module Enumerable {
27152715
private class TakeUnknownSummary extends TakeSummary {
27162716
TakeUnknownSummary() {
27172717
this = "take(index)" and
2718-
not exists(mc.getArgument(0).getValueText().toInt())
2718+
not exists(mc.getArgument(0).getConstantValue().getInt())
27192719
}
27202720

27212721
override predicate propagatesFlowExt(string input, string output, boolean preservesValue) {

0 commit comments

Comments
 (0)