Skip to content

Commit 8c6c680

Browse files
committed
Ruby: Add OrmWriteAccess concept
1 parent 8b926f6 commit 8c6c680

1 file changed

Lines changed: 31 additions & 0 deletions

File tree

ruby/ql/lib/codeql/ruby/Concepts.qll

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -625,6 +625,37 @@ module OrmInstantiation {
625625
}
626626
}
627627

628+
/**
629+
* A data-flow node that may represent a write to the database in an ORM system.
630+
*
631+
* Extend this class to refine existing API models. If you want to model new APIs,
632+
* extend `OrmWriteAccess::Range` instead.
633+
*/
634+
class OrmWriteAccess extends DataFlow::Node instanceof OrmWriteAccess::Range {
635+
/**
636+
* Gets the name of a field that is assigned to `value` by this write.
637+
*/
638+
string getFieldNameAssignedTo(DataFlow::Node value) {
639+
result = super.getFieldNameAssignedTo(value)
640+
}
641+
}
642+
643+
/** Provides a class for modeling new ORM write access APIs. */
644+
module OrmWriteAccess {
645+
/**
646+
* A data-flow node that may represent a write to the database in an ORM system.
647+
*
648+
* Extend this class to model new APIs. If you want to refine existing API models,
649+
* extend `OrmWriteAccess` instead.
650+
*/
651+
abstract class Range extends DataFlow::Node {
652+
/**
653+
* Gets the name of a field that is assigned to `value` by this write.
654+
*/
655+
abstract string getFieldNameAssignedTo(DataFlow::Node value);
656+
}
657+
}
658+
628659
/**
629660
* A data-flow node that may set or unset Cross-site request forgery protection.
630661
*

0 commit comments

Comments
 (0)