Skip to content

Commit 731f866

Browse files
authored
Merge pull request #9717 from tausbn/python-fix-bad-mro-linearization-of-bases-join
Python: Fix bad join in MRO
2 parents 15dc083 + dc0f50d commit 731f866

File tree

1 file changed

+7
-5
lines changed
  • python/ql/lib/semmle/python/pointsto

1 file changed

+7
-5
lines changed

python/ql/lib/semmle/python/pointsto/MRO.qll

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -344,12 +344,12 @@ private class ClassListList extends TClassListList {
344344
)
345345
}
346346

347-
private predicate legalMergeCandidate(ClassObjectInternal cls, ClassListList remaining) {
348-
cls = this.getAHead() and remaining = this
347+
private predicate legalMergeCandidate(ClassObjectInternal cls, ClassListList remainingList) {
348+
cls = this.getAHead() and remainingList = this
349349
or
350-
this.legalMergeCandidate(cls, ConsList(Empty(), remaining))
350+
this.legalMergeCandidate(cls, ConsList(Empty(), remainingList))
351351
or
352-
this.legalMergeCandidateNonEmpty(cls, remaining, Empty())
352+
this.legalMergeCandidateNonEmpty(cls, remainingList, Empty())
353353
}
354354

355355
pragma[noinline]
@@ -419,7 +419,9 @@ private ClassListList list_of_linearization_of_bases_plus_bases(ClassObjectInter
419419
result = ConsList(bases(cls), EmptyList()) and n = Types::base_count(cls) and n > 1
420420
or
421421
exists(ClassListList partial |
422-
partial = list_of_linearization_of_bases_plus_bases(cls, n + 1) and
422+
partial =
423+
list_of_linearization_of_bases_plus_bases(pragma[only_bind_into](cls),
424+
pragma[only_bind_into](n + 1)) and
423425
result = ConsList(Mro::newStyleMro(Types::getBase(cls, n)), partial)
424426
)
425427
}

0 commit comments

Comments
 (0)