Skip to content

Commit d85424d

Browse files
committed
Ruby: Drop ActiveRecord::Persistence.ModifyAndSaveCall
1 parent 19c413d commit d85424d

File tree

1 file changed

+5
-26
lines changed

1 file changed

+5
-26
lines changed

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

Lines changed: 5 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -319,17 +319,6 @@ private class ActiveRecordInstanceMethodCall extends DataFlow::CallNode {
319319
* Provides modeling relating to the `ActiveRecord::Persistence` module.
320320
*/
321321
private module Persistence {
322-
/**
323-
* A call to a method that may modify or create a model object and write it to
324-
* the database. Examples include `create`, `insert`, and `update`.
325-
*/
326-
abstract private class ModifyAndSaveCall extends DataFlow::CallNode, PersistentWriteAccess::Range {
327-
/**
328-
* Gets the ActiveRecord model class to which this call applies.
329-
*/
330-
abstract ActiveRecordModelClass getClass();
331-
}
332-
333322
/**
334323
* Holds if there is a hash literal argument to `call` at `argIndex`
335324
* containing a KV pair with value `value`.
@@ -355,7 +344,7 @@ private module Persistence {
355344
}
356345

357346
/** A call to e.g. `User.create(name: "foo")` */
358-
private class CreateLikeCall extends ModifyAndSaveCall {
347+
private class CreateLikeCall extends DataFlow::CallNode, PersistentWriteAccess::Range {
359348
private ActiveRecordModelClass modelCls;
360349

361350
CreateLikeCall() {
@@ -372,12 +361,10 @@ private module Persistence {
372361
hashArgumentWithValue(this, 0, result) or
373362
keywordArgumentWithValue(this, result)
374363
}
375-
376-
override ActiveRecordModelClass getClass() { result = modelCls }
377364
}
378365

379366
/** A call to e.g. `User.update(1, name: "foo")` */
380-
private class UpdateLikeClassMethodCall extends ModifyAndSaveCall {
367+
private class UpdateLikeClassMethodCall extends DataFlow::CallNode, PersistentWriteAccess::Range {
381368
private ActiveRecordModelClass modelCls;
382369

383370
UpdateLikeClassMethodCall() {
@@ -403,12 +390,10 @@ private module Persistence {
403390
)
404391
)
405392
}
406-
407-
override ActiveRecordModelClass getClass() { result = modelCls }
408393
}
409394

410395
/** A call to e.g. `User.insert_all([{name: "foo"}, {name: "bar"}])` */
411-
private class InsertAllLikeCall extends ModifyAndSaveCall {
396+
private class InsertAllLikeCall extends DataFlow::CallNode, PersistentWriteAccess::Range {
412397
private ExprNodes::ArrayLiteralCfgNode arr;
413398
private ActiveRecordModelClass modelCls;
414399

@@ -427,12 +412,10 @@ private module Persistence {
427412
result.asExpr() = pair.getValue()
428413
)
429414
}
430-
431-
override ActiveRecordModelClass getClass() { result = modelCls }
432415
}
433416

434417
/** A call to e.g. `user.update(name: "foo")` */
435-
private class UpdateLikeInstanceMethodCall extends ModifyAndSaveCall,
418+
private class UpdateLikeInstanceMethodCall extends DataFlow::CallNode, PersistentWriteAccess::Range,
436419
ActiveRecordInstanceMethodCall {
437420
UpdateLikeInstanceMethodCall() {
438421
this.getMethodName() = ["update", "update!", "update_attributes", "update_attributes!"]
@@ -445,20 +428,16 @@ private module Persistence {
445428
// keyword arg
446429
keywordArgumentWithValue(this, result)
447430
}
448-
449-
override ActiveRecordModelClass getClass() { result = this.getInstance().getClass() }
450431
}
451432

452433
/** A call to e.g. `user.update_attribute(name, "foo")` */
453-
private class UpdateAttributeCall extends ModifyAndSaveCall, ActiveRecordInstanceMethodCall {
434+
private class UpdateAttributeCall extends DataFlow::CallNode, PersistentWriteAccess::Range, ActiveRecordInstanceMethodCall {
454435
UpdateAttributeCall() { this.getMethodName() = "update_attribute" }
455436

456437
override DataFlow::Node getValue() {
457438
// e.g. `foo.update_attribute(key, value)`
458439
result = this.getArgument(1)
459440
}
460-
461-
override ActiveRecordModelClass getClass() { result = this.getInstance().getClass() }
462441
}
463442

464443
/**

0 commit comments

Comments
 (0)