From 34332d148dca31e4c4c06f3a23be338799a7c7c0 Mon Sep 17 00:00:00 2001 From: Christian Banse Date: Tue, 28 Nov 2023 11:53:05 +0100 Subject: [PATCH] ++ --- .../fraunhofer/aisec/cpg/frontends/Language.kt | 2 +- .../statements/expressions/AssignExpression.kt | 5 ++--- .../de/fraunhofer/aisec/cpg/helpers/Util.kt | 16 ---------------- 3 files changed, 3 insertions(+), 20 deletions(-) diff --git a/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/frontends/Language.kt b/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/frontends/Language.kt index 2cc9f6c50b6..342c0930ca6 100644 --- a/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/frontends/Language.kt +++ b/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/frontends/Language.kt @@ -276,6 +276,6 @@ abstract class Language> : Node() { internal class KClassSerializer : JsonSerializer>() { override fun serialize(value: KClass<*>, gen: JsonGenerator, provider: SerializerProvider) { // Write the fully qualified name as a string - gen.writeString(value.simpleName) + gen.writeString(value.qualifiedName) } } diff --git a/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/graph/statements/expressions/AssignExpression.kt b/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/graph/statements/expressions/AssignExpression.kt index ff0dce7106c..4feccfca7bd 100644 --- a/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/graph/statements/expressions/AssignExpression.kt +++ b/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/graph/statements/expressions/AssignExpression.kt @@ -30,7 +30,6 @@ import de.fraunhofer.aisec.cpg.graph.declarations.VariableDeclaration import de.fraunhofer.aisec.cpg.graph.types.HasType import de.fraunhofer.aisec.cpg.graph.types.TupleType import de.fraunhofer.aisec.cpg.graph.types.Type -import de.fraunhofer.aisec.cpg.helpers.Util.unwrapReference import org.slf4j.Logger import org.slf4j.LoggerFactory @@ -62,7 +61,7 @@ class AssignExpression : field = value if (operatorCode == "=") { field.forEach { - val unwrapped = unwrapReference(it) + val unwrapped = it.unwrapReference() unwrapped?.let { it.access = AccessValues.WRITE it.dfgHandlerHint = true @@ -70,7 +69,7 @@ class AssignExpression : } } else { field.forEach { - val unwrapped = unwrapReference(it) + val unwrapped = it.unwrapReference() unwrapped?.let { it.access = AccessValues.READWRITE it.dfgHandlerHint = true diff --git a/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/helpers/Util.kt b/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/helpers/Util.kt index 2be2bec309b..49edb26de3e 100644 --- a/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/helpers/Util.kt +++ b/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/helpers/Util.kt @@ -405,20 +405,4 @@ object Util { ENTRIES, EXITS } - - fun unwrapReference(node: Node?): Reference? { - return if (node is Reference) node - else if (node is UnaryOperator && (node.operatorCode == "*" || node.operatorCode == "&")) - unwrapReference(node.input) - else if (node is CastExpression) unwrapReference(node.expression) - else if ( - node is BinaryOperator && - (node.operatorCode == "&" || node.operatorCode == "*") && - node.lhs is CastExpression && - (node.lhs as CastExpression).expression is ProblemExpression - ) - // TODO: This is only a hotfix for a bug in the language frontend. - unwrapReference(node.rhs) - else if (node is SubscriptExpression) unwrapReference(node.arrayExpression) else null - } }