]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
vala: Prevent possible stack-overflow in Class.is_compact/is_immutable 5dad5b3904450417b467a9a05210847c5a9a831b
authorRico Tzschichholz <ricotz@ubuntu.com>
Wed, 19 Feb 2020 13:56:37 +0000 (14:56 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Wed, 19 Feb 2020 14:49:12 +0000 (15:49 +0100)
Guard recursive call on base_class in is_compact and is_immutable by
checking for cyclic class declaration.

vala/valaclass.vala

index c4f196c64a67bc0b30db99632c323266f8fa8d52..d5288a757d8031218d578c276b466619c62ab1bb 100644 (file)
@@ -51,7 +51,7 @@ public class Vala.Class : ObjectTypeSymbol {
        public bool is_compact {
                get {
                        if (_is_compact == null) {
-                               if (base_class != null) {
+                               if (base_class != null && !base_class.is_subtype_of (this)) {
                                        _is_compact = base_class.is_compact;
                                } else {
                                        _is_compact = get_attribute ("Compact") != null;
@@ -71,7 +71,7 @@ public class Vala.Class : ObjectTypeSymbol {
        public bool is_immutable {
                get {
                        if (_is_immutable == null) {
-                               if (base_class != null) {
+                               if (base_class != null && !base_class.is_subtype_of (this)) {
                                        _is_immutable = base_class.is_immutable;
                                } else {
                                        _is_immutable = get_attribute ("Immutable") != null;