From 79171a92326158152fb8794c8cde49b26885173c Mon Sep 17 00:00:00 2001 From: Chris Smowton Date: Thu, 15 May 2025 11:39:26 +0100 Subject: [PATCH 001/150] Fold v_1_5_0 and v_1_5_20 files forwards into v_1_6_0, dropping any that are overridden --- .../src/main/kotlin/utils/versions/v_1_5_0/FileEntry.kt | 5 ----- .../src/main/kotlin/utils/versions/v_1_5_0/Functions.kt | 8 -------- .../src/main/kotlin/utils/versions/v_1_5_0/IrBuiltIns.kt | 5 ----- .../src/main/kotlin/utils/versions/v_1_5_0/Psi2Ir.kt | 5 ----- .../main/kotlin/utils/versions/v_1_5_0/annotationType.kt | 8 -------- .../utils/versions/{v_1_5_0 => v_1_6_0}/CodeQLIrConst.kt | 0 .../utils/versions/{v_1_5_0 => v_1_6_0}/CodeQLIsRoot.kt | 0 .../{v_1_5_0 => v_1_6_0}/CommentExtractorLighterAST.kt | 0 .../{v_1_5_0 => v_1_6_0}/ExperimentalCompilerApi.kt | 0 .../utils/versions/{v_1_5_20 => v_1_6_0}/FileEntry.kt | 0 .../{v_1_5_0 => v_1_6_0}/FirMetadataSourceFirFile.kt | 0 .../utils/versions/{v_1_5_0 => v_1_6_0}/IrLazyFunction.kt | 0 .../versions/{v_1_5_0 => v_1_6_0}/IrSymbolInternals.kt | 0 .../utils/versions/{v_1_5_0 => v_1_6_0}/IrVisitor.kt | 0 .../{v_1_5_0 => v_1_6_0}/IsUnderscoreParameter.kt | 0 .../JvmDefaultModeIsNoCompatibility.kt | 0 .../{v_1_5_0 => v_1_6_0}/Kotlin2ComponentRegistrar.kt | 0 .../{v_1_5_0 => v_1_6_0}/LinesOfCodeLighterAST.kt | 0 .../kotlin/utils/versions/{v_1_5_20 => v_1_6_0}/Psi2Ir.kt | 0 .../versions/{v_1_5_0 => v_1_6_0}/ReferenceEntity.kt | 0 .../versions/{v_1_5_0 => v_1_6_0}/SyntheticBodyKind.kt | 0 .../kotlin/utils/versions/{v_1_5_0 => v_1_6_0}/Types.kt | 0 .../kotlin/utils/versions/{v_1_5_0 => v_1_6_0}/UsesK2.kt | 0 .../{v_1_5_0 => v_1_6_0}/VirtualFileBasedSourceElement.kt | 0 .../{v_1_5_0 => v_1_6_0}/allOverriddenIncludingSelf.kt | 0 .../kotlin/utils/versions/{v_1_5_0 => v_1_6_0}/copyTo.kt | 0 ...teImplicitParameterDeclarationWithWrappedDescriptor.kt | 0 .../versions/{v_1_5_0 => v_1_6_0}/getFileClassFqName.kt | 0 .../versions/{v_1_5_0 => v_1_6_0}/getJvmDefaultMode.kt | 0 .../utils/versions/{v_1_5_0 => v_1_6_0}/getKotlinType.kt | 0 .../versions/{v_1_5_0 => v_1_6_0}/isDispatchReceiver.kt | 0 .../utils/versions/{v_1_5_0 => v_1_6_0}/packageFqName.kt | 0 .../parameterIndexExcludingReceivers.kt | 0 .../kotlin/utils/versions/{v_1_5_0 => v_1_6_0}/parents.kt | 0 .../utils/versions/{v_1_5_0 => v_1_6_0}/typeUtils.kt | 0 .../versions/{v_1_5_0 => v_1_6_0}/withHasQuestionMark.kt | 0 36 files changed, 31 deletions(-) delete mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/FileEntry.kt delete mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Functions.kt delete mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/IrBuiltIns.kt delete mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Psi2Ir.kt delete mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/annotationType.kt rename java/kotlin-extractor/src/main/kotlin/utils/versions/{v_1_5_0 => v_1_6_0}/CodeQLIrConst.kt (100%) rename java/kotlin-extractor/src/main/kotlin/utils/versions/{v_1_5_0 => v_1_6_0}/CodeQLIsRoot.kt (100%) rename java/kotlin-extractor/src/main/kotlin/utils/versions/{v_1_5_0 => v_1_6_0}/CommentExtractorLighterAST.kt (100%) rename java/kotlin-extractor/src/main/kotlin/utils/versions/{v_1_5_0 => v_1_6_0}/ExperimentalCompilerApi.kt (100%) rename java/kotlin-extractor/src/main/kotlin/utils/versions/{v_1_5_20 => v_1_6_0}/FileEntry.kt (100%) rename java/kotlin-extractor/src/main/kotlin/utils/versions/{v_1_5_0 => v_1_6_0}/FirMetadataSourceFirFile.kt (100%) rename java/kotlin-extractor/src/main/kotlin/utils/versions/{v_1_5_0 => v_1_6_0}/IrLazyFunction.kt (100%) rename java/kotlin-extractor/src/main/kotlin/utils/versions/{v_1_5_0 => v_1_6_0}/IrSymbolInternals.kt (100%) rename java/kotlin-extractor/src/main/kotlin/utils/versions/{v_1_5_0 => v_1_6_0}/IrVisitor.kt (100%) rename java/kotlin-extractor/src/main/kotlin/utils/versions/{v_1_5_0 => v_1_6_0}/IsUnderscoreParameter.kt (100%) rename java/kotlin-extractor/src/main/kotlin/utils/versions/{v_1_5_0 => v_1_6_0}/JvmDefaultModeIsNoCompatibility.kt (100%) rename java/kotlin-extractor/src/main/kotlin/utils/versions/{v_1_5_0 => v_1_6_0}/Kotlin2ComponentRegistrar.kt (100%) rename java/kotlin-extractor/src/main/kotlin/utils/versions/{v_1_5_0 => v_1_6_0}/LinesOfCodeLighterAST.kt (100%) rename java/kotlin-extractor/src/main/kotlin/utils/versions/{v_1_5_20 => v_1_6_0}/Psi2Ir.kt (100%) rename java/kotlin-extractor/src/main/kotlin/utils/versions/{v_1_5_0 => v_1_6_0}/ReferenceEntity.kt (100%) rename java/kotlin-extractor/src/main/kotlin/utils/versions/{v_1_5_0 => v_1_6_0}/SyntheticBodyKind.kt (100%) rename java/kotlin-extractor/src/main/kotlin/utils/versions/{v_1_5_0 => v_1_6_0}/Types.kt (100%) rename java/kotlin-extractor/src/main/kotlin/utils/versions/{v_1_5_0 => v_1_6_0}/UsesK2.kt (100%) rename java/kotlin-extractor/src/main/kotlin/utils/versions/{v_1_5_0 => v_1_6_0}/VirtualFileBasedSourceElement.kt (100%) rename java/kotlin-extractor/src/main/kotlin/utils/versions/{v_1_5_0 => v_1_6_0}/allOverriddenIncludingSelf.kt (100%) rename java/kotlin-extractor/src/main/kotlin/utils/versions/{v_1_5_0 => v_1_6_0}/copyTo.kt (100%) rename java/kotlin-extractor/src/main/kotlin/utils/versions/{v_1_5_0 => v_1_6_0}/createImplicitParameterDeclarationWithWrappedDescriptor.kt (100%) rename java/kotlin-extractor/src/main/kotlin/utils/versions/{v_1_5_0 => v_1_6_0}/getFileClassFqName.kt (100%) rename java/kotlin-extractor/src/main/kotlin/utils/versions/{v_1_5_0 => v_1_6_0}/getJvmDefaultMode.kt (100%) rename java/kotlin-extractor/src/main/kotlin/utils/versions/{v_1_5_0 => v_1_6_0}/getKotlinType.kt (100%) rename java/kotlin-extractor/src/main/kotlin/utils/versions/{v_1_5_0 => v_1_6_0}/isDispatchReceiver.kt (100%) rename java/kotlin-extractor/src/main/kotlin/utils/versions/{v_1_5_0 => v_1_6_0}/packageFqName.kt (100%) rename java/kotlin-extractor/src/main/kotlin/utils/versions/{v_1_5_0 => v_1_6_0}/parameterIndexExcludingReceivers.kt (100%) rename java/kotlin-extractor/src/main/kotlin/utils/versions/{v_1_5_0 => v_1_6_0}/parents.kt (100%) rename java/kotlin-extractor/src/main/kotlin/utils/versions/{v_1_5_0 => v_1_6_0}/typeUtils.kt (100%) rename java/kotlin-extractor/src/main/kotlin/utils/versions/{v_1_5_0 => v_1_6_0}/withHasQuestionMark.kt (100%) diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/FileEntry.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/FileEntry.kt deleted file mode 100644 index 43597b1158c..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/FileEntry.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.ir.SourceManager - -typealias FileEntry = SourceManager.FileEntry diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Functions.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Functions.kt deleted file mode 100644 index 2fd45e905d9..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Functions.kt +++ /dev/null @@ -1,8 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext -import org.jetbrains.kotlin.ir.declarations.IrClass - -fun functionN(pluginContext: IrPluginContext): (Int) -> IrClass { - return { i -> pluginContext.irBuiltIns.functionFactory.functionN(i) } -} diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/IrBuiltIns.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/IrBuiltIns.kt deleted file mode 100644 index 825fc46b0d8..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/IrBuiltIns.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns - -typealias IrBuiltIns = IrBuiltIns diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Psi2Ir.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Psi2Ir.kt deleted file mode 100644 index 2046b507bf8..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Psi2Ir.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.github.codeql.utils.versions - -import com.github.codeql.utils.Psi2IrFacade - -fun getPsi2Ir(): Psi2IrFacade? = null diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/annotationType.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/annotationType.kt deleted file mode 100644 index d4e2f17430f..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/annotationType.kt +++ /dev/null @@ -1,8 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext -import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI - -@OptIn(ObsoleteDescriptorBasedAPI::class) -fun getAnnotationType(context: IrPluginContext) = - context.typeTranslator.translateType(context.builtIns.annotationType) diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/CodeQLIrConst.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/CodeQLIrConst.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/CodeQLIrConst.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/CodeQLIrConst.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/CodeQLIsRoot.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/CodeQLIsRoot.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/CodeQLIsRoot.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/CodeQLIsRoot.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/CommentExtractorLighterAST.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/CommentExtractorLighterAST.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/CommentExtractorLighterAST.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/CommentExtractorLighterAST.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/ExperimentalCompilerApi.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/ExperimentalCompilerApi.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/ExperimentalCompilerApi.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/ExperimentalCompilerApi.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_20/FileEntry.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/FileEntry.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_20/FileEntry.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/FileEntry.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/FirMetadataSourceFirFile.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/FirMetadataSourceFirFile.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/FirMetadataSourceFirFile.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/FirMetadataSourceFirFile.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/IrLazyFunction.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/IrLazyFunction.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/IrLazyFunction.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/IrLazyFunction.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/IrSymbolInternals.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/IrSymbolInternals.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/IrSymbolInternals.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/IrSymbolInternals.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/IrVisitor.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/IrVisitor.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/IrVisitor.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/IrVisitor.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/IsUnderscoreParameter.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/IsUnderscoreParameter.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/IsUnderscoreParameter.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/IsUnderscoreParameter.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/JvmDefaultModeIsNoCompatibility.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/JvmDefaultModeIsNoCompatibility.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/JvmDefaultModeIsNoCompatibility.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/JvmDefaultModeIsNoCompatibility.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Kotlin2ComponentRegistrar.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/Kotlin2ComponentRegistrar.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Kotlin2ComponentRegistrar.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/Kotlin2ComponentRegistrar.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/LinesOfCodeLighterAST.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/LinesOfCodeLighterAST.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/LinesOfCodeLighterAST.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/LinesOfCodeLighterAST.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_20/Psi2Ir.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/Psi2Ir.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_20/Psi2Ir.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/Psi2Ir.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/ReferenceEntity.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/ReferenceEntity.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/ReferenceEntity.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/ReferenceEntity.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/SyntheticBodyKind.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/SyntheticBodyKind.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/SyntheticBodyKind.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/SyntheticBodyKind.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Types.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/Types.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Types.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/Types.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/UsesK2.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/UsesK2.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/UsesK2.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/UsesK2.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/VirtualFileBasedSourceElement.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/VirtualFileBasedSourceElement.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/VirtualFileBasedSourceElement.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/VirtualFileBasedSourceElement.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/allOverriddenIncludingSelf.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/allOverriddenIncludingSelf.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/allOverriddenIncludingSelf.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/allOverriddenIncludingSelf.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/copyTo.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/copyTo.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/copyTo.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/copyTo.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/createImplicitParameterDeclarationWithWrappedDescriptor.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/createImplicitParameterDeclarationWithWrappedDescriptor.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/createImplicitParameterDeclarationWithWrappedDescriptor.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/createImplicitParameterDeclarationWithWrappedDescriptor.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/getFileClassFqName.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/getFileClassFqName.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/getFileClassFqName.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/getFileClassFqName.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/getJvmDefaultMode.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/getJvmDefaultMode.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/getJvmDefaultMode.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/getJvmDefaultMode.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/getKotlinType.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/getKotlinType.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/getKotlinType.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/getKotlinType.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/isDispatchReceiver.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/isDispatchReceiver.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/isDispatchReceiver.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/isDispatchReceiver.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/packageFqName.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/packageFqName.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/packageFqName.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/packageFqName.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/parameterIndexExcludingReceivers.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/parameterIndexExcludingReceivers.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/parameterIndexExcludingReceivers.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/parameterIndexExcludingReceivers.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/parents.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/parents.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/parents.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/parents.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/typeUtils.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/typeUtils.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/typeUtils.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/typeUtils.kt diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/withHasQuestionMark.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/withHasQuestionMark.kt similarity index 100% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/withHasQuestionMark.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/withHasQuestionMark.kt From 084222ec58383afa2b3ed96c93998786c9354df9 Mon Sep 17 00:00:00 2001 From: Chris Smowton Date: Thu, 15 May 2025 12:07:23 +0100 Subject: [PATCH 002/150] Inline version-specific override code where there is now only one version --- java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt | 2 +- .../src/main/kotlin/MetaAnnotationSupport.kt | 3 +-- .../src/main/kotlin/utils/versions/v_1_6_0/FileEntry.kt | 5 ----- .../src/main/kotlin/utils/versions/v_1_6_0/Functions.kt | 5 ----- .../src/main/kotlin/utils/versions/v_1_6_0/IrBuiltIns.kt | 5 ----- .../src/main/kotlin/utils/versions/v_1_6_0/annotationType.kt | 5 ----- .../src/main/kotlin/utils/versions/v_1_6_0/typeUtils.kt | 1 + .../main/kotlin/utils/versions/v_2_1_20-Beta1/typeUtils.kt | 1 + 8 files changed, 4 insertions(+), 23 deletions(-) delete mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/FileEntry.kt delete mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/Functions.kt delete mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/IrBuiltIns.kt delete mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/annotationType.kt diff --git a/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt b/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt index 690372d67f5..376736611d1 100644 --- a/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt +++ b/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt @@ -8053,7 +8053,7 @@ open class KotlinFileExtractor( ?.symbol ?.typeWithArguments(listOf(functionNTypeArguments.last())) else - functionN(pluginContext)(functionNTypeArguments.size - 1) + pluginContext.irBuiltIns.functionN(functionNTypeArguments.size - 1) .symbol .typeWithArguments(functionNTypeArguments) diff --git a/java/kotlin-extractor/src/main/kotlin/MetaAnnotationSupport.kt b/java/kotlin-extractor/src/main/kotlin/MetaAnnotationSupport.kt index e591eed3eca..368600267c1 100644 --- a/java/kotlin-extractor/src/main/kotlin/MetaAnnotationSupport.kt +++ b/java/kotlin-extractor/src/main/kotlin/MetaAnnotationSupport.kt @@ -2,7 +2,6 @@ package com.github.codeql import com.github.codeql.utils.versions.copyParameterToFunction import com.github.codeql.utils.versions.createImplicitParameterDeclarationWithWrappedDescriptor -import com.github.codeql.utils.versions.getAnnotationType import java.lang.annotation.ElementType import java.util.HashSet import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext @@ -375,7 +374,7 @@ class MetaAnnotationSupport( .apply { createImplicitParameterDeclarationWithWrappedDescriptor() parent = annotationClass - superTypes = listOf(getAnnotationType(pluginContext)) + superTypes = listOf(pluginContext.irBuiltIns.annotationType) } val propertyName = Name.identifier("value") diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/FileEntry.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/FileEntry.kt deleted file mode 100644 index 18308780bff..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/FileEntry.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.ir.IrFileEntry - -typealias FileEntry = IrFileEntry diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/Functions.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/Functions.kt deleted file mode 100644 index 7d6c3eda8c3..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/Functions.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext - -fun functionN(pluginContext: IrPluginContext) = pluginContext.irBuiltIns::functionN diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/IrBuiltIns.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/IrBuiltIns.kt deleted file mode 100644 index 1bb2ca62aa2..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/IrBuiltIns.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.ir.IrBuiltIns - -typealias IrBuiltIns = org.jetbrains.kotlin.ir.IrBuiltIns diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/annotationType.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/annotationType.kt deleted file mode 100644 index d51db5eb05c..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/annotationType.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext - -fun getAnnotationType(context: IrPluginContext) = context.irBuiltIns.annotationType diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/typeUtils.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/typeUtils.kt index 06829377a6b..3724cafaab9 100644 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/typeUtils.kt +++ b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/typeUtils.kt @@ -1,6 +1,7 @@ package com.github.codeql.utils.versions import org.jetbrains.kotlin.ir.types.* +import org.jetbrains.kotlin.ir.IrBuiltIns fun IrType.isNullableCodeQL(): Boolean = this.isNullable() diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_1_20-Beta1/typeUtils.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_1_20-Beta1/typeUtils.kt index ac34e633116..c6ffb89015e 100644 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_1_20-Beta1/typeUtils.kt +++ b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_1_20-Beta1/typeUtils.kt @@ -2,6 +2,7 @@ package com.github.codeql.utils.versions import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.util.* +import org.jetbrains.kotlin.ir.IrBuiltIns fun IrType.isNullableCodeQL(): Boolean = this.isNullable() From bedd44a2877e2b64b0e0717e49213fc5d46c8c02 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Wed, 21 May 2025 11:02:24 +0100 Subject: [PATCH 003/150] Update query and add case for iter(self.__next__, None) --- python/ql/src/Functions/IterReturnsNonSelf.ql | 43 +++++++++++++++---- 1 file changed, 35 insertions(+), 8 deletions(-) diff --git a/python/ql/src/Functions/IterReturnsNonSelf.ql b/python/ql/src/Functions/IterReturnsNonSelf.ql index 385677a5763..38da2954e1c 100644 --- a/python/ql/src/Functions/IterReturnsNonSelf.ql +++ b/python/ql/src/Functions/IterReturnsNonSelf.ql @@ -4,6 +4,7 @@ * @kind problem * @tags reliability * correctness + * quality * @problem.severity error * @sub-severity low * @precision high @@ -11,20 +12,46 @@ */ import python +import semmle.python.dataflow.new.DataFlow +import semmle.python.ApiGraphs -Function iter_method(ClassValue t) { result = t.lookup("__iter__").(FunctionValue).getScope() } +/** Holds if `f` is a method of the class `c`. */ +private predicate methodOfClass(Function f, Class c) { + exists(FunctionDef d | d.getDefinedFunction() = f and d.getScope() = c) +} -predicate is_self(Name value, Function f) { value.getVariable() = f.getArg(0).(Name).getVariable() } +Function iterMethod(Class c) { methodOfClass(result, c) and result.getName() = "__iter__" } -predicate returns_non_self(Function f) { +Function nextMethod(Class c) { methodOfClass(result, c) and result.getName() = "__next__" } + +predicate isSelfVar(Function f, Name var) { var.getVariable() = f.getArg(0).(Name).getVariable() } + +predicate isGoodReturn(Function f, Expr e) { + isSelfVar(f, e) + or + exists(DataFlow::CallCfgNode call, DataFlow::AttrRead read, DataFlow::Node selfNode | + e = call.asExpr() + | + call = API::builtin("iter").getACall() and + call.getArg(0) = read and + read.accesses(selfNode, "__next__") and + isSelfVar(f, selfNode.asExpr()) and + call.getArg(1).asExpr() instanceof None + ) +} + +predicate returnsNonSelf(Function f) { exists(f.getFallthroughNode()) or - exists(Return r | r.getScope() = f and not is_self(r.getValue(), f)) + exists(Return r | r.getScope() = f and not isGoodReturn(f, r.getValue())) or exists(Return r | r.getScope() = f and not exists(r.getValue())) } -from ClassValue t, Function iter -where t.isIterator() and iter = iter_method(t) and returns_non_self(iter) -select t, "Class " + t.getName() + " is an iterator but its $@ method does not return 'self'.", - iter, iter.getName() +from Class c, Function iter +where + exists(nextMethod(c)) and + iter = iterMethod(c) and + returnsNonSelf(iter) +select iter, "Iter method of iterator $@ does not return `" + iter.getArg(0).getName() + "`.", c, + c.getName() From 7b452a1611c961d504620462fcfb42be71be5f7a Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Thu, 22 May 2025 09:01:15 +0100 Subject: [PATCH 004/150] Add case for wrappers --- python/ql/src/Functions/IterReturnsNonSelf.ql | 47 +++++++++++++++++-- 1 file changed, 44 insertions(+), 3 deletions(-) diff --git a/python/ql/src/Functions/IterReturnsNonSelf.ql b/python/ql/src/Functions/IterReturnsNonSelf.ql index 38da2954e1c..e1672d25272 100644 --- a/python/ql/src/Functions/IterReturnsNonSelf.ql +++ b/python/ql/src/Functions/IterReturnsNonSelf.ql @@ -20,12 +20,16 @@ private predicate methodOfClass(Function f, Class c) { exists(FunctionDef d | d.getDefinedFunction() = f and d.getScope() = c) } +/** Gets the __iter__ method of `c`. */ Function iterMethod(Class c) { methodOfClass(result, c) and result.getName() = "__iter__" } +/** Gets the `__next__` method of `c`. */ Function nextMethod(Class c) { methodOfClass(result, c) and result.getName() = "__next__" } +/** Holds if `var` is a variable referring to the `self` parameter of `f`. */ predicate isSelfVar(Function f, Name var) { var.getVariable() = f.getArg(0).(Name).getVariable() } +/** Holds if `e` is an expression that an iter function `f` should return. */ predicate isGoodReturn(Function f, Expr e) { isSelfVar(f, e) or @@ -40,6 +44,7 @@ predicate isGoodReturn(Function f, Expr e) { ) } +/** Holds if the iter method `f` does not return `self` or an equivalent. */ predicate returnsNonSelf(Function f) { exists(f.getFallthroughNode()) or @@ -48,10 +53,46 @@ predicate returnsNonSelf(Function f) { exists(Return r | r.getScope() = f and not exists(r.getValue())) } -from Class c, Function iter +/** Holds if `iter` and `next` methods are wrappers around some field. */ +predicate iterWrapperMethods(Function iter, Function next) { + exists(string field | + exists(Return r, DataFlow::Node self, DataFlow::AttrRead read | + r.getScope() = iter and + r.getValue() = iterCall(read).asExpr() and + read.accesses(self, field) and + isSelfVar(iter, self.asExpr()) + ) and + exists(Return r, DataFlow::Node self, DataFlow::AttrRead read | + r.getScope() = next and + r.getValue() = nextCall(read).asExpr() and + read.accesses(self, field) and + isSelfVar(next, self.asExpr()) + ) + ) +} + +DataFlow::CallCfgNode iterCall(DataFlow::Node arg) { + result.(DataFlow::MethodCallNode).calls(arg, "__iter__") + or + result = API::builtin("iter").getACall() and + arg = result.getArg(0) and + not exists(result.getArg(1)) + or + result = arg // assume the wrapping field is already an iterator +} + +DataFlow::CallCfgNode nextCall(DataFlow::Node arg) { + result.(DataFlow::MethodCallNode).calls(arg, "__next__") + or + result = API::builtin("next").getACall() and + arg = result.getArg(0) +} + +from Class c, Function iter, Function next where - exists(nextMethod(c)) and + next = nextMethod(c) and iter = iterMethod(c) and - returnsNonSelf(iter) + returnsNonSelf(iter) and + not iterWrapperMethods(iter, next) select iter, "Iter method of iterator $@ does not return `" + iter.getArg(0).getName() + "`.", c, c.getName() From f27057a747a3a0e308eaf5627fe3275642f62c3b Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Fri, 23 May 2025 10:56:43 +0100 Subject: [PATCH 005/150] Update qhelp --- .../ql/src/Functions/IterReturnsNonSelf.qhelp | 27 +++++++------------ .../{ => examples}/IterReturnsNonSelf.py | 6 ++--- 2 files changed, 13 insertions(+), 20 deletions(-) rename python/ql/src/Functions/{ => examples}/IterReturnsNonSelf.py (56%) diff --git a/python/ql/src/Functions/IterReturnsNonSelf.qhelp b/python/ql/src/Functions/IterReturnsNonSelf.qhelp index f614d912ff0..94b6c30fbfe 100644 --- a/python/ql/src/Functions/IterReturnsNonSelf.qhelp +++ b/python/ql/src/Functions/IterReturnsNonSelf.qhelp @@ -3,34 +3,27 @@ "qhelp.dtd"> -

The __iter__ method of an iterator should return self. -This is important so that iterators can be used as sequences in any context -that expect a sequence. To do so requires that __iter__ is -idempotent on iterators.

- -

-Note that sequences and mapping should return a new iterator, it is just the returned -iterator that must obey this constraint. +

Iterator classes (classes defining a __next__ method) should have an __iter__ that returns the iterator itself. +This ensures that the object is also an iterable; and behaves as expected when used anywhere an iterator or iterable is expected, such as in for loops.

+ +
-

Make the __iter__ return self unless the class should not be an iterator, -in which case rename the next (Python 2) or __next__ (Python 3) -to something else.

+

Ensure that the __iter__ method returns self, or is otherwise equivalent as an iterator to self.

-

In this example the Counter class's __iter__ method does not -return self (or even an iterator). This will cause the program to fail when anyone attempts -to use the iterator in a for loop or in statement.

- +

In the following example, the MyRange class's __iter__ method does not return self. +This would lead to unexpected results when used with a for loop or in statement. + -

  • Python Language Reference: object.__iter__.
  • -
  • Python Standard Library: Iterators.
  • +
  • Python Language Reference: object.__iter__.
  • +
  • Python Standard Library: Iterators.
  • diff --git a/python/ql/src/Functions/IterReturnsNonSelf.py b/python/ql/src/Functions/examples/IterReturnsNonSelf.py similarity index 56% rename from python/ql/src/Functions/IterReturnsNonSelf.py rename to python/ql/src/Functions/examples/IterReturnsNonSelf.py index 6251b87aba7..20ba5eb1821 100644 --- a/python/ql/src/Functions/IterReturnsNonSelf.py +++ b/python/ql/src/Functions/examples/IterReturnsNonSelf.py @@ -4,10 +4,10 @@ class MyRange(object): self.high = high def __iter__(self): - return self.current + return (self.current, self.high) # BAD: does not return `self`. - def next(self): + def __next__(self): if self.current > self.high: - raise StopIteration + return None self.current += 1 return self.current - 1 \ No newline at end of file From 06504f2cb650feb6adc00d6a02ce08b1dfc39176 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Fri, 23 May 2025 13:04:56 +0100 Subject: [PATCH 006/150] Update tests --- .../python-code-quality.qls.expected | 1 + .../general/IterReturnsNonSelf.expected | 1 - .../iterators/IterReturnsNonSelf.expected | 0 .../IterReturnsNonSelf.qlref | 0 .../query-tests/Functions/iterators/test.py | 43 +++++++++++++++++++ 5 files changed, 44 insertions(+), 1 deletion(-) delete mode 100644 python/ql/test/query-tests/Functions/general/IterReturnsNonSelf.expected create mode 100644 python/ql/test/query-tests/Functions/iterators/IterReturnsNonSelf.expected rename python/ql/test/query-tests/Functions/{general => iterators}/IterReturnsNonSelf.qlref (100%) create mode 100644 python/ql/test/query-tests/Functions/iterators/test.py diff --git a/python/ql/integration-tests/query-suite/python-code-quality.qls.expected b/python/ql/integration-tests/query-suite/python-code-quality.qls.expected index b81d300d024..7f1bb89365e 100644 --- a/python/ql/integration-tests/query-suite/python-code-quality.qls.expected +++ b/python/ql/integration-tests/query-suite/python-code-quality.qls.expected @@ -2,5 +2,6 @@ ql/python/ql/src/Functions/NonCls.ql ql/python/ql/src/Functions/NonSelf.ql ql/python/ql/src/Functions/ReturnConsistentTupleSizes.ql ql/python/ql/src/Functions/SignatureSpecialMethods.ql +ql/python/ql/src/Functions/IterReturnsNonSelf.ql ql/python/ql/src/Resources/FileNotAlwaysClosed.ql ql/python/ql/src/Variables/LoopVariableCapture/LoopVariableCapture.ql diff --git a/python/ql/test/query-tests/Functions/general/IterReturnsNonSelf.expected b/python/ql/test/query-tests/Functions/general/IterReturnsNonSelf.expected deleted file mode 100644 index 9fd22c1df61..00000000000 --- a/python/ql/test/query-tests/Functions/general/IterReturnsNonSelf.expected +++ /dev/null @@ -1 +0,0 @@ -| protocols.py:54:1:54:29 | class AlmostIterator | Class AlmostIterator is an iterator but its $@ method does not return 'self'. | protocols.py:62:5:62:23 | Function __iter__ | __iter__ | diff --git a/python/ql/test/query-tests/Functions/iterators/IterReturnsNonSelf.expected b/python/ql/test/query-tests/Functions/iterators/IterReturnsNonSelf.expected new file mode 100644 index 00000000000..e69de29bb2d diff --git a/python/ql/test/query-tests/Functions/general/IterReturnsNonSelf.qlref b/python/ql/test/query-tests/Functions/iterators/IterReturnsNonSelf.qlref similarity index 100% rename from python/ql/test/query-tests/Functions/general/IterReturnsNonSelf.qlref rename to python/ql/test/query-tests/Functions/iterators/IterReturnsNonSelf.qlref diff --git a/python/ql/test/query-tests/Functions/iterators/test.py b/python/ql/test/query-tests/Functions/iterators/test.py new file mode 100644 index 00000000000..be334be77b7 --- /dev/null +++ b/python/ql/test/query-tests/Functions/iterators/test.py @@ -0,0 +1,43 @@ +class Bad1: + def __next__(self): + return 0 + + def __iter__(self): # BAD: Iter does not return self + yield 0 + +class Good1: + def __next__(self): + return 0 + + def __iter__(self): # GOOD: iter returns self + return self + +class Good2: + def __init__(self): + self._it = iter([0,0,0]) + + def __next__(self): + return next(self._it) + + def __iter__(self): # GOOD: iter and next are wrappers around a field + return self._it.__iter__() + +class Good3: + def __next__(self): + return 0 + + def __iter__(self): # GOOD: this is an equivalent iterator to `self`. + return iter(self.__next__, None) + +class FalsePositive1: + def __init__(self): + self._it = None + + def __next__(self): + if self._it is None: + self._it = iter(self) + return next(self._it) + + def __iter__(self): # SPURIOUS, GOOD: implementation of next ensures the iterator is equivalent to the one returned by iter, but this is not detected. + yield 0 + yield 0 \ No newline at end of file From 44a678a3f4f1b49dcfe87c2a1eb04fc8c963bb81 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Fri, 23 May 2025 13:16:13 +0100 Subject: [PATCH 007/150] remove redundant import --- python/ql/src/Functions/IterReturnsNonSelf.ql | 1 - 1 file changed, 1 deletion(-) diff --git a/python/ql/src/Functions/IterReturnsNonSelf.ql b/python/ql/src/Functions/IterReturnsNonSelf.ql index e1672d25272..275e2a1ebf6 100644 --- a/python/ql/src/Functions/IterReturnsNonSelf.ql +++ b/python/ql/src/Functions/IterReturnsNonSelf.ql @@ -12,7 +12,6 @@ */ import python -import semmle.python.dataflow.new.DataFlow import semmle.python.ApiGraphs /** Holds if `f` is a method of the class `c`. */ From b15fec0fb97e53411ca0cb10f098bdb2c947f7b5 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Fri, 23 May 2025 14:17:21 +0100 Subject: [PATCH 008/150] Fix qhelp and tests --- .../query-suite/python-code-quality.qls.expected | 2 +- python/ql/src/Functions/IterReturnsNonSelf.qhelp | 2 +- .../query-tests/Functions/iterators/IterReturnsNonSelf.expected | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/python/ql/integration-tests/query-suite/python-code-quality.qls.expected b/python/ql/integration-tests/query-suite/python-code-quality.qls.expected index 7f1bb89365e..c2168cab937 100644 --- a/python/ql/integration-tests/query-suite/python-code-quality.qls.expected +++ b/python/ql/integration-tests/query-suite/python-code-quality.qls.expected @@ -1,7 +1,7 @@ +ql/python/ql/src/Functions/IterReturnsNonSelf.ql ql/python/ql/src/Functions/NonCls.ql ql/python/ql/src/Functions/NonSelf.ql ql/python/ql/src/Functions/ReturnConsistentTupleSizes.ql ql/python/ql/src/Functions/SignatureSpecialMethods.ql -ql/python/ql/src/Functions/IterReturnsNonSelf.ql ql/python/ql/src/Resources/FileNotAlwaysClosed.ql ql/python/ql/src/Variables/LoopVariableCapture/LoopVariableCapture.ql diff --git a/python/ql/src/Functions/IterReturnsNonSelf.qhelp b/python/ql/src/Functions/IterReturnsNonSelf.qhelp index 94b6c30fbfe..b668e350967 100644 --- a/python/ql/src/Functions/IterReturnsNonSelf.qhelp +++ b/python/ql/src/Functions/IterReturnsNonSelf.qhelp @@ -11,7 +11,7 @@ This ensures that the object is also an iterable; and behaves as expected when u -

    Ensure that the __iter__ method returns self, or is otherwise equivalent as an iterator to self.

    +

    Ensure that the __iter__ method returns self, or is otherwise equivalent as an iterator to self.

    diff --git a/python/ql/test/query-tests/Functions/iterators/IterReturnsNonSelf.expected b/python/ql/test/query-tests/Functions/iterators/IterReturnsNonSelf.expected index e69de29bb2d..f07c637241e 100644 --- a/python/ql/test/query-tests/Functions/iterators/IterReturnsNonSelf.expected +++ b/python/ql/test/query-tests/Functions/iterators/IterReturnsNonSelf.expected @@ -0,0 +1,2 @@ +| test.py:5:5:5:23 | Function __iter__ | Iter method of iterator $@ does not return `self`. | test.py:1:1:1:11 | Class Bad1 | Bad1 | +| test.py:41:5:41:23 | Function __iter__ | Iter method of iterator $@ does not return `self`. | test.py:32:1:32:21 | Class FalsePositive1 | FalsePositive1 | From e933a27cd95a3bd6d33d880aae157db09b406e9d Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Fri, 23 May 2025 14:25:38 +0100 Subject: [PATCH 009/150] Add changenote --- python/ql/src/change-notes/2025-05-23-iter-not-return-self.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 python/ql/src/change-notes/2025-05-23-iter-not-return-self.md diff --git a/python/ql/src/change-notes/2025-05-23-iter-not-return-self.md b/python/ql/src/change-notes/2025-05-23-iter-not-return-self.md new file mode 100644 index 00000000000..80b8313a72b --- /dev/null +++ b/python/ql/src/change-notes/2025-05-23-iter-not-return-self.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The `py/iter-returns-non-self` query has been modernized, and no longer alerts for certain cases where an equivalent iterator is returned. \ No newline at end of file From c070d04231772818887d0747acee27bdc70d2265 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Fri, 23 May 2025 14:31:13 +0100 Subject: [PATCH 010/150] Fix qhelp --- python/ql/src/Functions/IterReturnsNonSelf.qhelp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/ql/src/Functions/IterReturnsNonSelf.qhelp b/python/ql/src/Functions/IterReturnsNonSelf.qhelp index b668e350967..5b37e8cffee 100644 --- a/python/ql/src/Functions/IterReturnsNonSelf.qhelp +++ b/python/ql/src/Functions/IterReturnsNonSelf.qhelp @@ -16,7 +16,7 @@ This ensures that the object is also an iterable; and behaves as expected when u

    In the following example, the MyRange class's __iter__ method does not return self. -This would lead to unexpected results when used with a for loop or in statement. +This would lead to unexpected results when used with a for loop or in statement.

    From f3a5608b06454b3f0e57e07de7c223141f4b858a Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Tue, 27 May 2025 13:35:13 +0100 Subject: [PATCH 011/150] Apply review suggestions - remove methodOfClass, fix qhelp typo; additionally add some more doc comments --- .../ql/src/Functions/IterReturnsNonSelf.qhelp | 2 +- python/ql/src/Functions/IterReturnsNonSelf.ql | 17 ++++++----------- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/python/ql/src/Functions/IterReturnsNonSelf.qhelp b/python/ql/src/Functions/IterReturnsNonSelf.qhelp index 5b37e8cffee..0ad5a05fdf4 100644 --- a/python/ql/src/Functions/IterReturnsNonSelf.qhelp +++ b/python/ql/src/Functions/IterReturnsNonSelf.qhelp @@ -3,7 +3,7 @@ "qhelp.dtd"> -

    Iterator classes (classes defining a __next__ method) should have an __iter__ that returns the iterator itself. +

    Iterator classes (classes defining a __next__ method) should have an __iter__ method that returns the iterator itself. This ensures that the object is also an iterable; and behaves as expected when used anywhere an iterator or iterable is expected, such as in for loops.

    diff --git a/python/ql/src/Functions/IterReturnsNonSelf.ql b/python/ql/src/Functions/IterReturnsNonSelf.ql index 275e2a1ebf6..229204e8c9d 100644 --- a/python/ql/src/Functions/IterReturnsNonSelf.ql +++ b/python/ql/src/Functions/IterReturnsNonSelf.ql @@ -14,16 +14,11 @@ import python import semmle.python.ApiGraphs -/** Holds if `f` is a method of the class `c`. */ -private predicate methodOfClass(Function f, Class c) { - exists(FunctionDef d | d.getDefinedFunction() = f and d.getScope() = c) -} - /** Gets the __iter__ method of `c`. */ -Function iterMethod(Class c) { methodOfClass(result, c) and result.getName() = "__iter__" } +Function iterMethod(Class c) { result = c.getAMethod() and result.getName() = "__iter__" } /** Gets the `__next__` method of `c`. */ -Function nextMethod(Class c) { methodOfClass(result, c) and result.getName() = "__next__" } +Function nextMethod(Class c) { result = c.getAMethod() and result.getName() = "__next__" } /** Holds if `var` is a variable referring to the `self` parameter of `f`. */ predicate isSelfVar(Function f, Name var) { var.getVariable() = f.getArg(0).(Name).getVariable() } @@ -48,8 +43,6 @@ predicate returnsNonSelf(Function f) { exists(f.getFallthroughNode()) or exists(Return r | r.getScope() = f and not isGoodReturn(f, r.getValue())) - or - exists(Return r | r.getScope() = f and not exists(r.getValue())) } /** Holds if `iter` and `next` methods are wrappers around some field. */ @@ -70,7 +63,8 @@ predicate iterWrapperMethods(Function iter, Function next) { ) } -DataFlow::CallCfgNode iterCall(DataFlow::Node arg) { +/** Gets a call to `iter(arg)`, `arg.__iter__()`, or `arg` itself (which we assume may already be an iterator). */ +private DataFlow::CallCfgNode iterCall(DataFlow::Node arg) { result.(DataFlow::MethodCallNode).calls(arg, "__iter__") or result = API::builtin("iter").getACall() and @@ -80,7 +74,8 @@ DataFlow::CallCfgNode iterCall(DataFlow::Node arg) { result = arg // assume the wrapping field is already an iterator } -DataFlow::CallCfgNode nextCall(DataFlow::Node arg) { +/** Gets a call to `next(arg)` or `arg.__next__()`. */ +private DataFlow::CallCfgNode nextCall(DataFlow::Node arg) { result.(DataFlow::MethodCallNode).calls(arg, "__next__") or result = API::builtin("next").getACall() and From 5f65ea60d12dd6b69e1979c269ad52e2873114d3 Mon Sep 17 00:00:00 2001 From: Kasper Svendsen Date: Tue, 27 May 2025 10:16:47 +0200 Subject: [PATCH 012/150] QL AST: Add overlay annotations --- ql/ql/src/codeql_ql/ast/Ast.qll | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/ql/ql/src/codeql_ql/ast/Ast.qll b/ql/ql/src/codeql_ql/ast/Ast.qll index 937c7bc6101..b3bbf41aaef 100644 --- a/ql/ql/src/codeql_ql/ast/Ast.qll +++ b/ql/ql/src/codeql_ql/ast/Ast.qll @@ -2538,6 +2538,18 @@ private class NoOptArg extends AnnotationArg { NoOptArg() { this.getValue() = "noopt" } } +private class CallerArg extends AnnotationArg { + CallerArg() { this.getValue() = "caller" } +} + +private class LocalArg extends AnnotationArg { + LocalArg() { this.getValue() = "local" } +} + +private class LocalQArg extends AnnotationArg { + LocalQArg() { this.getValue() = "local?" } +} + private class MonotonicAggregatesArg extends AnnotationArg { MonotonicAggregatesArg() { this.getValue() = "monotonicAggregates" } } @@ -2597,6 +2609,27 @@ class NoOpt extends Annotation { override string toString() { result = "noopt" } } +/** An `overlay[caller]` annotation. */ +class OverlayCaller extends Annotation { + OverlayCaller() { this.getName() = "overlay" and this.getArgs(0) instanceof CallerArg } + + override string toString() { result = "caller" } +} + +/** An `overlay[local]` annotation. */ +class OverlayLocal extends Annotation { + OverlayLocal() { this.getName() = "overlay" and this.getArgs(0) instanceof LocalArg } + + override string toString() { result = "local" } +} + +/** An `overlay[local?]` annotation. */ +class OverlayLocalQ extends Annotation { + OverlayLocalQ() { this.getName() = "overlay" and this.getArgs(0) instanceof LocalQArg } + + override string toString() { result = "local?" } +} + /** A `language[monotonicAggregates]` annotation. */ class MonotonicAggregates extends Annotation { MonotonicAggregates() { this.getArgs(0) instanceof MonotonicAggregatesArg } From b291b0637e9691371e4c9ffe1ca88835023df2a1 Mon Sep 17 00:00:00 2001 From: Kasper Svendsen Date: Tue, 27 May 2025 10:17:46 +0200 Subject: [PATCH 013/150] Warn about possible non-inlining across overlay frontier --- .../queries/overlay/InlineOverlayCaller.ql | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 ql/ql/src/queries/overlay/InlineOverlayCaller.ql diff --git a/ql/ql/src/queries/overlay/InlineOverlayCaller.ql b/ql/ql/src/queries/overlay/InlineOverlayCaller.ql new file mode 100644 index 00000000000..d27a0ade9bb --- /dev/null +++ b/ql/ql/src/queries/overlay/InlineOverlayCaller.ql @@ -0,0 +1,41 @@ +/** + * @name Cannot inline predicate across overlay frontier + * @description Local inline predicates that are not annotated with `overlay[caller]` are + * not inlined across the overlay frontier. This may negatively affect performance. + * @kind problem + * @problem.severity warning + * @id ql/inline-overlay-caller + * @tags performance + * @precision high + */ + +import ql + +predicate mayBeLocal(AstNode n) { + n.getAnAnnotation() instanceof OverlayLocal + or + n.getAnAnnotation() instanceof OverlayLocalQ + or + // The tree-sitter-ql grammar doesn't handle annotations on file-level + // module declarations correctly. To work around that, we consider any + // node in a file that contains an overlay[local] or overlay[local?] + // annotation to be potentially local. + exists(AstNode m | + n.getLocation().getFile() = m.getLocation().getFile() and + mayBeLocal(m) + ) +} + +from Predicate p +where + mayBeLocal(p) and + p.getAnAnnotation() instanceof Inline and + not p.getAnAnnotation() instanceof OverlayCaller and + not p.isPrivate() +select p, + "This possibly local non-private inline predicate will not " + + "be inlined across the overlay frontier. This may negatively " + + "affect evaluation performance. Consider adding an " + + "`overlay[caller]` annotation to allow inlining across the " + + "overlay frontier. Note that adding an `overlay[caller]` " + + "annotation affects semantics under overlay evaluation." From 73f2770acb2f2c7cc53c93a8d7171694201f476b Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Fri, 30 May 2025 11:24:06 +0100 Subject: [PATCH 014/150] Fix handling for some wrappers + add test case --- python/ql/src/Functions/IterReturnsNonSelf.ql | 6 ++---- .../Functions/iterators/IterReturnsNonSelf.expected | 2 +- .../ql/test/query-tests/Functions/iterators/test.py | 12 +++++++++++- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/python/ql/src/Functions/IterReturnsNonSelf.ql b/python/ql/src/Functions/IterReturnsNonSelf.ql index 229204e8c9d..d6501a803a3 100644 --- a/python/ql/src/Functions/IterReturnsNonSelf.ql +++ b/python/ql/src/Functions/IterReturnsNonSelf.ql @@ -50,7 +50,7 @@ predicate iterWrapperMethods(Function iter, Function next) { exists(string field | exists(Return r, DataFlow::Node self, DataFlow::AttrRead read | r.getScope() = iter and - r.getValue() = iterCall(read).asExpr() and + r.getValue() = [iterCall(read).asExpr(), read.asExpr()] and read.accesses(self, field) and isSelfVar(iter, self.asExpr()) ) and @@ -63,15 +63,13 @@ predicate iterWrapperMethods(Function iter, Function next) { ) } -/** Gets a call to `iter(arg)`, `arg.__iter__()`, or `arg` itself (which we assume may already be an iterator). */ +/** Gets a call to `iter(arg)` or `arg.__iter__()`. */ private DataFlow::CallCfgNode iterCall(DataFlow::Node arg) { result.(DataFlow::MethodCallNode).calls(arg, "__iter__") or result = API::builtin("iter").getACall() and arg = result.getArg(0) and not exists(result.getArg(1)) - or - result = arg // assume the wrapping field is already an iterator } /** Gets a call to `next(arg)` or `arg.__next__()`. */ diff --git a/python/ql/test/query-tests/Functions/iterators/IterReturnsNonSelf.expected b/python/ql/test/query-tests/Functions/iterators/IterReturnsNonSelf.expected index f07c637241e..a21f8de68a5 100644 --- a/python/ql/test/query-tests/Functions/iterators/IterReturnsNonSelf.expected +++ b/python/ql/test/query-tests/Functions/iterators/IterReturnsNonSelf.expected @@ -1,2 +1,2 @@ | test.py:5:5:5:23 | Function __iter__ | Iter method of iterator $@ does not return `self`. | test.py:1:1:1:11 | Class Bad1 | Bad1 | -| test.py:41:5:41:23 | Function __iter__ | Iter method of iterator $@ does not return `self`. | test.py:32:1:32:21 | Class FalsePositive1 | FalsePositive1 | +| test.py:51:5:51:23 | Function __iter__ | Iter method of iterator $@ does not return `self`. | test.py:42:1:42:21 | Class FalsePositive1 | FalsePositive1 | diff --git a/python/ql/test/query-tests/Functions/iterators/test.py b/python/ql/test/query-tests/Functions/iterators/test.py index be334be77b7..ced389967e4 100644 --- a/python/ql/test/query-tests/Functions/iterators/test.py +++ b/python/ql/test/query-tests/Functions/iterators/test.py @@ -21,8 +21,18 @@ class Good2: def __iter__(self): # GOOD: iter and next are wrappers around a field return self._it.__iter__() - + class Good3: + def __init__(self): + self._it = iter([0,0,0]) + + def __next__(self): + return self._it.__next__() + + def __iter__(self): # GOOD: iter and next are wrappers around a field + return self._it + +class Good4: def __next__(self): return 0 From 39583abade3fae825d35aeba89114458d5b236be Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Wed, 4 Jun 2025 15:41:24 -0400 Subject: [PATCH 015/150] Crypto: Update KnownAlgoirthmConstants to make a distinction between calls that return a known algorithm and calls that operate on a known algorithm. update KnownAlgorithmConstants to correct algType for signature algorithms. Update all instances and prior uses of the old mechanic to KnownAlgorithmConstants. --- .../AlgorithmInstances/AlgToAVCFlow.qll | 4 +- .../BlockAlgorithmInstance.qll | 13 +- .../CipherAlgorithmInstance.qll | 15 +- .../EllipticCurveAlgorithmInstance.qll | 11 +- .../HashAlgorithmInstance.qll | 13 +- .../KeyAgreementAlgorithmInstance.qll | 12 +- .../KnownAlgorithmConstants.qll | 286 +++++++++++------- .../OpenSSLAlgorithmInstances.qll | 1 + .../PaddingAlgorithmInstance.qll | 14 +- .../DirectAlgorithmValueConsumer.qll | 24 +- 10 files changed, 234 insertions(+), 159 deletions(-) diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/AlgToAVCFlow.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/AlgToAVCFlow.qll index c2df3989f81..cc540680c65 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/AlgToAVCFlow.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/AlgToAVCFlow.qll @@ -14,7 +14,9 @@ private import PaddingAlgorithmInstance */ module KnownOpenSSLAlgorithmToAlgorithmValueConsumerConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { - source.asExpr() instanceof KnownOpenSSLAlgorithmConstant + source.asExpr() instanceof KnownOpenSSLAlgorithmExpr and + // No need to flow direct operations to AVCs + not source.asExpr() instanceof OpenSSLDirectAlgorithmOperationCall } predicate isSink(DataFlow::Node sink) { diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/BlockAlgorithmInstance.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/BlockAlgorithmInstance.qll index 995b72a437e..177bc1321f4 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/BlockAlgorithmInstance.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/BlockAlgorithmInstance.qll @@ -7,14 +7,14 @@ private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgor private import AlgToAVCFlow /** - * Given a `KnownOpenSSLBlockModeAlgorithmConstant`, converts this to a block family type. + * Given a `KnownOpenSSLBlockModeAlgorithmExpr`, converts this to a block family type. * Does not bind if there is no mapping (no mapping to 'unknown' or 'other'). */ predicate knownOpenSSLConstantToBlockModeFamilyType( - KnownOpenSSLBlockModeAlgorithmConstant e, Crypto::TBlockCipherModeOfOperationType type + KnownOpenSSLBlockModeAlgorithmExpr e, Crypto::TBlockCipherModeOfOperationType type ) { exists(string name | - name = e.getNormalizedName() and + name = e.(KnownOpenSSLAlgorithmExpr).getNormalizedName() and ( name.matches("CBC") and type instanceof Crypto::CBC or @@ -40,7 +40,7 @@ predicate knownOpenSSLConstantToBlockModeFamilyType( } class KnownOpenSSLBlockModeConstantAlgorithmInstance extends OpenSSLAlgorithmInstance, - Crypto::ModeOfOperationAlgorithmInstance instanceof KnownOpenSSLBlockModeAlgorithmConstant + Crypto::ModeOfOperationAlgorithmInstance instanceof KnownOpenSSLBlockModeAlgorithmExpr { OpenSSLAlgorithmValueConsumer getterCall; @@ -49,7 +49,7 @@ class KnownOpenSSLBlockModeConstantAlgorithmInstance extends OpenSSLAlgorithmIns // 1) The source is a literal and flows to a getter, then we know we have an instance // 2) The source is a KnownOpenSSLAlgorithm is call, and we know we have an instance immediately from that // Possibility 1: - this instanceof Literal and + this instanceof OpenSSLAlgorithmLiteral and exists(DataFlow::Node src, DataFlow::Node sink | // Sink is an argument to a CipherGetterCall sink = getterCall.(OpenSSLAlgorithmValueConsumer).getInputNode() and @@ -60,7 +60,8 @@ class KnownOpenSSLBlockModeConstantAlgorithmInstance extends OpenSSLAlgorithmIns ) or // Possibility 2: - this instanceof DirectAlgorithmValueConsumer and getterCall = this + this instanceof OpenSSLAlgorithmCall and + getterCall = this } override Crypto::TBlockCipherModeOfOperationType getModeType() { diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/CipherAlgorithmInstance.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/CipherAlgorithmInstance.qll index 77251761040..b1c22e76296 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/CipherAlgorithmInstance.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/CipherAlgorithmInstance.qll @@ -10,14 +10,14 @@ private import AlgToAVCFlow private import BlockAlgorithmInstance /** - * Given a `KnownOpenSSLCipherAlgorithmConstant`, converts this to a cipher family type. + * Given a `KnownOpenSSLCipherAlgorithmExpr`, converts this to a cipher family type. * Does not bind if there is no mapping (no mapping to 'unknown' or 'other'). */ predicate knownOpenSSLConstantToCipherFamilyType( - KnownOpenSSLCipherAlgorithmConstant e, Crypto::KeyOpAlg::TAlgorithm type + KnownOpenSSLCipherAlgorithmExpr e, Crypto::KeyOpAlg::TAlgorithm type ) { exists(string name | - name = e.getNormalizedName() and + name = e.(KnownOpenSSLAlgorithmExpr).getNormalizedName() and ( name.matches("AES%") and type = KeyOpAlg::TSymmetricCipher(KeyOpAlg::AES()) or @@ -65,7 +65,7 @@ predicate knownOpenSSLConstantToCipherFamilyType( } class KnownOpenSSLCipherConstantAlgorithmInstance extends OpenSSLAlgorithmInstance, - Crypto::KeyOperationAlgorithmInstance instanceof KnownOpenSSLCipherAlgorithmConstant + Crypto::KeyOperationAlgorithmInstance instanceof KnownOpenSSLCipherAlgorithmExpr { OpenSSLAlgorithmValueConsumer getterCall; @@ -74,7 +74,7 @@ class KnownOpenSSLCipherConstantAlgorithmInstance extends OpenSSLAlgorithmInstan // 1) The source is a literal and flows to a getter, then we know we have an instance // 2) The source is a KnownOpenSSLAlgorithm is call, and we know we have an instance immediately from that // Possibility 1: - this instanceof Literal and + this instanceof OpenSSLAlgorithmLiteral and exists(DataFlow::Node src, DataFlow::Node sink | // Sink is an argument to a CipherGetterCall sink = getterCall.(OpenSSLAlgorithmValueConsumer).getInputNode() and @@ -85,7 +85,8 @@ class KnownOpenSSLCipherConstantAlgorithmInstance extends OpenSSLAlgorithmInstan ) or // Possibility 2: - this instanceof DirectAlgorithmValueConsumer and getterCall = this + this instanceof OpenSSLAlgorithmCall and + getterCall = this } override Crypto::ModeOfOperationAlgorithmInstance getModeOfOperationAlgorithm() { @@ -109,7 +110,7 @@ class KnownOpenSSLCipherConstantAlgorithmInstance extends OpenSSLAlgorithmInstan } override int getKeySizeFixed() { - this.(KnownOpenSSLCipherAlgorithmConstant).getExplicitKeySize() = result + this.(KnownOpenSSLCipherAlgorithmExpr).getExplicitKeySize() = result } override Crypto::KeyOpAlg::Algorithm getAlgorithmType() { diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/EllipticCurveAlgorithmInstance.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/EllipticCurveAlgorithmInstance.qll index bebca15d477..985a3231710 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/EllipticCurveAlgorithmInstance.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/EllipticCurveAlgorithmInstance.qll @@ -7,7 +7,7 @@ private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.DirectAlgori private import AlgToAVCFlow class KnownOpenSSLEllipticCurveConstantAlgorithmInstance extends OpenSSLAlgorithmInstance, - Crypto::EllipticCurveInstance instanceof KnownOpenSSLEllipticCurveAlgorithmConstant + Crypto::EllipticCurveInstance instanceof KnownOpenSSLEllipticCurveAlgorithmExpr { OpenSSLAlgorithmValueConsumer getterCall; @@ -16,7 +16,7 @@ class KnownOpenSSLEllipticCurveConstantAlgorithmInstance extends OpenSSLAlgorith // 1) The source is a literal and flows to a getter, then we know we have an instance // 2) The source is a KnownOpenSSLAlgorithm is call, and we know we have an instance immediately from that // Possibility 1: - this instanceof Literal and + this instanceof OpenSSLAlgorithmLiteral and exists(DataFlow::Node src, DataFlow::Node sink | // Sink is an argument to a CipherGetterCall sink = getterCall.getInputNode() and @@ -27,7 +27,8 @@ class KnownOpenSSLEllipticCurveConstantAlgorithmInstance extends OpenSSLAlgorith ) or // Possibility 2: - this instanceof DirectAlgorithmValueConsumer and getterCall = this + this instanceof OpenSSLAlgorithmCall and + getterCall = this } override OpenSSLAlgorithmValueConsumer getAVC() { result = getterCall } @@ -43,11 +44,11 @@ class KnownOpenSSLEllipticCurveConstantAlgorithmInstance extends OpenSSLAlgorith } override string getParsedEllipticCurveName() { - result = this.(KnownOpenSSLEllipticCurveAlgorithmConstant).getNormalizedName() + result = this.(KnownOpenSSLAlgorithmExpr).getNormalizedName() } override int getKeySize() { - Crypto::ellipticCurveNameToKeySizeAndFamilyMapping(this.(KnownOpenSSLEllipticCurveAlgorithmConstant) + Crypto::ellipticCurveNameToKeySizeAndFamilyMapping(this.(KnownOpenSSLAlgorithmExpr) .getNormalizedName(), result, _) } } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/HashAlgorithmInstance.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/HashAlgorithmInstance.qll index ca1882f3b6e..c0281130fef 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/HashAlgorithmInstance.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/HashAlgorithmInstance.qll @@ -6,10 +6,10 @@ private import experimental.quantum.OpenSSL.AlgorithmInstances.OpenSSLAlgorithmI private import AlgToAVCFlow predicate knownOpenSSLConstantToHashFamilyType( - KnownOpenSSLHashAlgorithmConstant e, Crypto::THashType type + KnownOpenSSLHashAlgorithmExpr e, Crypto::THashType type ) { exists(string name | - name = e.getNormalizedName() and + name = e.(KnownOpenSSLAlgorithmExpr).getNormalizedName() and ( name.matches("BLAKE2B") and type instanceof Crypto::BLAKE2B or @@ -45,7 +45,7 @@ predicate knownOpenSSLConstantToHashFamilyType( } class KnownOpenSSLHashConstantAlgorithmInstance extends OpenSSLAlgorithmInstance, - Crypto::HashAlgorithmInstance instanceof KnownOpenSSLHashAlgorithmConstant + Crypto::HashAlgorithmInstance instanceof KnownOpenSSLHashAlgorithmExpr { OpenSSLAlgorithmValueConsumer getterCall; @@ -54,7 +54,7 @@ class KnownOpenSSLHashConstantAlgorithmInstance extends OpenSSLAlgorithmInstance // 1) The source is a literal and flows to a getter, then we know we have an instance // 2) The source is a KnownOpenSSLAlgorithm is call, and we know we have an instance immediately from that // Possibility 1: - this instanceof Literal and + this instanceof OpenSSLAlgorithmLiteral and exists(DataFlow::Node src, DataFlow::Node sink | // Sink is an argument to a CipherGetterCall sink = getterCall.(OpenSSLAlgorithmValueConsumer).getInputNode() and @@ -65,7 +65,8 @@ class KnownOpenSSLHashConstantAlgorithmInstance extends OpenSSLAlgorithmInstance ) or // Possibility 2: - this instanceof DirectAlgorithmValueConsumer and getterCall = this + this instanceof OpenSSLAlgorithmCall and + getterCall = this } override OpenSSLAlgorithmValueConsumer getAVC() { result = getterCall } @@ -83,6 +84,6 @@ class KnownOpenSSLHashConstantAlgorithmInstance extends OpenSSLAlgorithmInstance } override int getFixedDigestLength() { - this.(KnownOpenSSLHashAlgorithmConstant).getExplicitDigestLength() = result + this.(KnownOpenSSLHashAlgorithmExpr).getExplicitDigestLength() = result } } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KeyAgreementAlgorithmInstance.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KeyAgreementAlgorithmInstance.qll index c72b9a8e925..7694463c113 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KeyAgreementAlgorithmInstance.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KeyAgreementAlgorithmInstance.qll @@ -6,10 +6,10 @@ private import experimental.quantum.OpenSSL.AlgorithmInstances.OpenSSLAlgorithmI private import AlgToAVCFlow predicate knownOpenSSLConstantToKeyAgreementFamilyType( - KnownOpenSSLKeyAgreementAlgorithmConstant e, Crypto::TKeyAgreementType type + KnownOpenSSLKeyAgreementAlgorithmExpr e, Crypto::TKeyAgreementType type ) { exists(string name | - name = e.getNormalizedName() and + name = e.(KnownOpenSSLAlgorithmExpr).getNormalizedName() and ( name = "ECDH" and type = Crypto::ECDH() or @@ -23,7 +23,7 @@ predicate knownOpenSSLConstantToKeyAgreementFamilyType( } class KnownOpenSSLHashConstantAlgorithmInstance extends OpenSSLAlgorithmInstance, - Crypto::KeyAgreementAlgorithmInstance instanceof KnownOpenSSLKeyAgreementAlgorithmConstant + Crypto::KeyAgreementAlgorithmInstance instanceof KnownOpenSSLKeyAgreementAlgorithmExpr { OpenSSLAlgorithmValueConsumer getterCall; @@ -32,7 +32,7 @@ class KnownOpenSSLHashConstantAlgorithmInstance extends OpenSSLAlgorithmInstance // 1) The source is a literal and flows to a getter, then we know we have an instance // 2) The source is a KnownOpenSSLAlgorithm is call, and we know we have an instance immediately from that // Possibility 1: - this instanceof Literal and + this instanceof OpenSSLAlgorithmLiteral and exists(DataFlow::Node src, DataFlow::Node sink | // Sink is an argument to a CipherGetterCall sink = getterCall.getInputNode() and @@ -43,7 +43,9 @@ class KnownOpenSSLHashConstantAlgorithmInstance extends OpenSSLAlgorithmInstance ) or // Possibility 2: - this instanceof DirectAlgorithmValueConsumer and getterCall = this + this instanceof OpenSSLAlgorithmCall and + this instanceof DirectAlgorithmValueConsumer and + getterCall = this } override OpenSSLAlgorithmValueConsumer getAVC() { result = getterCall } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KnownAlgorithmConstants.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KnownAlgorithmConstants.qll index 7b2b9549d00..f88be562ace 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KnownAlgorithmConstants.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KnownAlgorithmConstants.qll @@ -1,78 +1,43 @@ import cpp import experimental.quantum.OpenSSL.GenericSourceCandidateLiteral -predicate resolveAlgorithmFromExpr(Expr e, string normalizedName, string algType) { - resolveAlgorithmFromCall(e, normalizedName, algType) - or - resolveAlgorithmFromLiteral(e, normalizedName, algType) -} - -class KnownOpenSSLAlgorithmConstant extends Expr { - KnownOpenSSLAlgorithmConstant() { resolveAlgorithmFromExpr(this, _, _) } - - string getNormalizedName() { resolveAlgorithmFromExpr(this, result, _) } - - string getAlgType() { resolveAlgorithmFromExpr(this, _, result) } -} - -class KnownOpenSSLCipherAlgorithmConstant extends KnownOpenSSLAlgorithmConstant { - string algType; - - KnownOpenSSLCipherAlgorithmConstant() { - resolveAlgorithmFromExpr(this, _, algType) and - algType.matches("%ENCRYPTION") - } - - int getExplicitKeySize() { - exists(string name | - name = this.getNormalizedName() and - resolveAlgorithmFromExpr(this, name, algType) and - result = name.regexpCapture(".*-(\\d*)", 1).toInt() - ) - } -} - -class KnownOpenSSLPaddingAlgorithmConstant extends KnownOpenSSLAlgorithmConstant { - KnownOpenSSLPaddingAlgorithmConstant() { - exists(string algType | - resolveAlgorithmFromExpr(this, _, algType) and - algType.matches("%PADDING") - ) - } -} - -class KnownOpenSSLBlockModeAlgorithmConstant extends KnownOpenSSLAlgorithmConstant { - KnownOpenSSLBlockModeAlgorithmConstant() { resolveAlgorithmFromExpr(this, _, "BLOCK_MODE") } -} - -class KnownOpenSSLHashAlgorithmConstant extends KnownOpenSSLAlgorithmConstant { - KnownOpenSSLHashAlgorithmConstant() { resolveAlgorithmFromExpr(this, _, "HASH") } - - int getExplicitDigestLength() { - exists(string name | - name = this.getNormalizedName() and - resolveAlgorithmFromExpr(this, name, "HASH") and - result = name.regexpCapture(".*-(\\d*)$", 1).toInt() - ) - } -} - -class KnownOpenSSLEllipticCurveAlgorithmConstant extends KnownOpenSSLAlgorithmConstant { - KnownOpenSSLEllipticCurveAlgorithmConstant() { - resolveAlgorithmFromExpr(this, _, "ELLIPTIC_CURVE") - } -} - -class KnownOpenSSLSignatureAlgorithmConstant extends KnownOpenSSLAlgorithmConstant { - KnownOpenSSLSignatureAlgorithmConstant() { resolveAlgorithmFromExpr(this, _, "SIGNATURE") } -} - -class KnownOpenSSLKeyAgreementAlgorithmConstant extends KnownOpenSSLAlgorithmConstant { - KnownOpenSSLKeyAgreementAlgorithmConstant() { resolveAlgorithmFromExpr(this, _, "KEY_AGREEMENT") } +predicate resolveAlgorithmFromExpr( + KnownOpenSSLAlgorithmExpr e, string normalizedName, string algType +) { + normalizedName = e.getNormalizedName() and + algType = e.getAlgType() } /** - * Resolves a call to a 'direct algorithm getter', e.g., EVP_MD5() + * An expression that resolves to a known OpenSSL algorithm constant. + * This can be a literal, a call to a known OpenSSL algorithm constant getter, + * or a call to an operation that directly operates on a known algorithm. + */ +abstract class KnownOpenSSLAlgorithmExpr extends Expr { + abstract string getNormalizedName(); + + abstract string getAlgType(); +} + +class OpenSSLAlgorithmLiteral extends KnownOpenSSLAlgorithmExpr instanceof Literal { + string normalizedName; + string algType; + + OpenSSLAlgorithmLiteral() { resolveAlgorithmFromLiteral(this, normalizedName, algType) } + + override string getNormalizedName() { result = normalizedName } + + override string getAlgType() { result = algType } +} + +/** + * A call to either an OpenSSL algorithm constant 'getter', e.g., EVP_MD5() + * or call to an operation that directly operates on a known algorithm, e.g., AES_encrypt + */ +abstract class OpenSSLAlgorithmCall extends KnownOpenSSLAlgorithmExpr instanceof Call { } + +/** + * A call to a 'direct algorithm getter', e.g., EVP_MD5() * This approach to fetching algorithms was used in OpenSSL 1.0.2. * The strategy for resolving these calls is to parse the target name * and resolve the name as though it were a known literal. @@ -81,15 +46,112 @@ class KnownOpenSSLKeyAgreementAlgorithmConstant extends KnownOpenSSLAlgorithmCon * set of aliases. E.g., EVP_dss() and EVP_dss1() needed such mappings * alias = "dss" and target = "dsa" * or - * alias = "dss1" and target = "dsaWithSHA1" + * alias = "dss1" and target = "dsaWithSHA1" */ -predicate resolveAlgorithmFromCall(Call c, string normalized, string algType) { - exists(string name, string parsedTargetName | - parsedTargetName = - c.getTarget().getName().replaceAll("EVP_", "").toLowerCase().replaceAll("_", "-") and - name = resolveAlgorithmAlias(parsedTargetName) and - knownOpenSSLAlgorithmLiteral(name, _, normalized, algType) - ) +class OpenSSLDirectAlgorithmFetchCall extends OpenSSLAlgorithmCall { + string normalizedName; + string algType; + + OpenSSLDirectAlgorithmFetchCall() { + //ASSUMPTION: these cases will have operands for the call + not exists(this.(Call).getAnArgument()) and + exists(string name, string parsedTargetName | + parsedTargetName = + this.(Call).getTarget().getName().replaceAll("EVP_", "").toLowerCase().replaceAll("_", "-") and + name = resolveAlgorithmAlias(parsedTargetName) and + knownOpenSSLAlgorithmLiteral(name, _, normalizedName, algType) + ) + } + + override string getNormalizedName() { result = normalizedName } + + override string getAlgType() { result = algType } +} + +/** + * A call to an OpenSSL operation that directly operates on a known algorithm. + * An algorithm construct is not generated for these calls, rather, the operation + * is directly performed, and the algorithm is inferred by the operation itself. + */ +class OpenSSLDirectAlgorithmOperationCall extends OpenSSLAlgorithmCall { + string normalizedName; + string algType; + + OpenSSLDirectAlgorithmOperationCall() { + //TODO: this set will have to be exhaustive, and for each operation + //further modeling will be necessary for each case to map the APIs operands + //ASSUMPTION: these cases must have operands for the call + exists(this.(Call).getAnArgument()) and + //TODO: Each case would be enumerated here. Will likely need an exhaustive mapping much like + // for known constants. + knownOpenSSLAlgorithmOperationCall(this, normalizedName, algType) + } + + override string getNormalizedName() { result = normalizedName } + + override string getAlgType() { result = algType } +} + +class KnownOpenSSLCipherAlgorithmExpr extends Expr instanceof KnownOpenSSLAlgorithmExpr { + string algType; + + KnownOpenSSLCipherAlgorithmExpr() { + algType = this.(KnownOpenSSLAlgorithmExpr).getAlgType() and + algType.matches("%ENCRYPTION") + } + + int getExplicitKeySize() { + exists(string name | + name = this.(KnownOpenSSLAlgorithmExpr).getNormalizedName() and + resolveAlgorithmFromExpr(this, name, algType) and + result = name.regexpCapture(".*-(\\d*)", 1).toInt() + ) + } +} + +class KnownOpenSSLPaddingAlgorithmExpr extends Expr instanceof KnownOpenSSLAlgorithmExpr { + KnownOpenSSLPaddingAlgorithmExpr() { + exists(string algType | + resolveAlgorithmFromExpr(this, _, algType) and + algType.matches("%PADDING") + ) + } +} + +class KnownOpenSSLBlockModeAlgorithmExpr extends Expr instanceof KnownOpenSSLAlgorithmExpr { + KnownOpenSSLBlockModeAlgorithmExpr() { resolveAlgorithmFromExpr(this, _, "BLOCK_MODE") } +} + +class KnownOpenSSLHashAlgorithmExpr extends Expr instanceof KnownOpenSSLAlgorithmExpr { + KnownOpenSSLHashAlgorithmExpr() { resolveAlgorithmFromExpr(this, _, "HASH") } + + int getExplicitDigestLength() { + exists(string name | + name = this.(KnownOpenSSLAlgorithmExpr).getNormalizedName() and + resolveAlgorithmFromExpr(this, name, "HASH") and + result = name.regexpCapture(".*-(\\d*)$", 1).toInt() + ) + } +} + +class KnownOpenSSLEllipticCurveAlgorithmExpr extends Expr instanceof KnownOpenSSLAlgorithmExpr { + KnownOpenSSLEllipticCurveAlgorithmExpr() { resolveAlgorithmFromExpr(this, _, "ELLIPTIC_CURVE") } +} + +class KnownOpenSSLSignatureAlgorithmExpr extends Expr instanceof KnownOpenSSLAlgorithmExpr { + KnownOpenSSLSignatureAlgorithmExpr() { resolveAlgorithmFromExpr(this, _, "SIGNATURE") } +} + +class KnownOpenSSLKeyAgreementAlgorithmExpr extends Expr instanceof KnownOpenSSLAlgorithmExpr { + KnownOpenSSLKeyAgreementAlgorithmExpr() { resolveAlgorithmFromExpr(this, _, "KEY_AGREEMENT") } +} + +predicate knownOpenSSLAlgorithmOperationCall(Call c, string normalized, string algType) { + c.getTarget().getName() in [ + "EVP_RSA_gen", "RSA_generate_key_ex", "RSA_generate_key", "EVP_PKEY_CTX_set_rsa_keygen_bits" + ] and + normalized = "RSA" and + algType = "ASYMMETRIC_ENCRYPTION" } /** @@ -2818,93 +2880,93 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, name = "ripemd160withrsa" and nid = 119 and normalized = "RSA" and - algType = "ASYMMETRIC_ENCRYPTION" + algType = "SIGNATURE" or name = "ripemd160withrsa" and nid = 119 and normalized = "RIPEMD160" and algType = "HASH" or - name = "rsa-md2" and nid = 7 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-md2" and nid = 7 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-md2" and nid = 7 and normalized = "MD2" and algType = "HASH" or - name = "rsa-md4" and nid = 396 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-md4" and nid = 396 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-md4" and nid = 396 and normalized = "MD4" and algType = "HASH" or - name = "rsa-md5" and nid = 8 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-md5" and nid = 8 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-md5" and nid = 8 and normalized = "MD5" and algType = "HASH" or - name = "rsa-mdc2" and nid = 96 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-mdc2" and nid = 96 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-mdc2" and nid = 96 and normalized = "MDC2" and algType = "HASH" or - name = "rsa-np-md5" and nid = 104 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-np-md5" and nid = 104 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-np-md5" and nid = 104 and normalized = "MD5" and algType = "HASH" or - name = "rsa-ripemd160" and nid = 119 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-ripemd160" and nid = 119 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-ripemd160" and nid = 119 and normalized = "RIPEMD160" and algType = "HASH" or - name = "rsa-sha" and nid = 42 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-sha" and nid = 42 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-sha" and nid = 42 and normalized = "SHA" and algType = "HASH" or - name = "rsa-sha1" and nid = 65 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-sha1" and nid = 65 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-sha1" and nid = 65 and normalized = "SHA1" and algType = "HASH" or - name = "rsa-sha1-2" and nid = 115 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-sha1-2" and nid = 115 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-sha1-2" and nid = 115 and normalized = "SHA1" and algType = "HASH" or - name = "rsa-sha224" and nid = 671 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-sha224" and nid = 671 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-sha224" and nid = 671 and normalized = "SHA-224" and algType = "HASH" or - name = "rsa-sha256" and nid = 668 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-sha256" and nid = 668 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-sha256" and nid = 668 and normalized = "SHA-256" and algType = "HASH" or - name = "rsa-sha3-224" and nid = 1116 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-sha3-224" and nid = 1116 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-sha3-224" and nid = 1116 and normalized = "SHA3-224" and algType = "HASH" or - name = "rsa-sha3-256" and nid = 1117 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-sha3-256" and nid = 1117 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-sha3-256" and nid = 1117 and normalized = "SHA3-256" and algType = "HASH" or - name = "rsa-sha3-384" and nid = 1118 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-sha3-384" and nid = 1118 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-sha3-384" and nid = 1118 and normalized = "SHA3-384" and algType = "HASH" or - name = "rsa-sha3-512" and nid = 1119 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-sha3-512" and nid = 1119 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-sha3-512" and nid = 1119 and normalized = "SHA3-512" and algType = "HASH" or - name = "rsa-sha384" and nid = 669 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-sha384" and nid = 669 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-sha384" and nid = 669 and normalized = "SHA-384" and algType = "HASH" or - name = "rsa-sha512" and nid = 670 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-sha512" and nid = 670 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-sha512" and nid = 670 and normalized = "SHA-512" and algType = "HASH" or name = "rsa-sha512/224" and nid = 1145 and normalized = "RSA" and - algType = "ASYMMETRIC_ENCRYPTION" + algType = "SIGNATURE" or name = "rsa-sha512/224" and nid = 1145 and normalized = "SHA-512-224" and algType = "HASH" or name = "rsa-sha512/256" and nid = 1146 and normalized = "RSA" and - algType = "ASYMMETRIC_ENCRYPTION" + algType = "SIGNATURE" or name = "rsa-sha512/256" and nid = 1146 and normalized = "SHA-512-256" and algType = "HASH" or - name = "rsa-sm3" and nid = 1144 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsa-sm3" and nid = 1144 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsa-sm3" and nid = 1144 and normalized = "SM3" and algType = "HASH" or @@ -2928,52 +2990,52 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, normalized = "OAEP" and algType = "ASYMMETRIC_PADDING" or - name = "rsasignature" and nid = 377 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsasignature" and nid = 377 and normalized = "RSA" and algType = "SIGNATURE" or - name = "rsassa-pss" and nid = 912 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsassa-pss" and nid = 912 and normalized = "RSA" and algType = "SIGNATURE" or name = "rsassa-pss" and nid = 912 and normalized = "PSS" and algType = "ASYMMETRIC_PADDING" or - name = "rsassapss" and nid = 912 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "rsassapss" and nid = 912 and normalized = "RSA" and algType = "SIGNATURE" or - name = "rsassapss" and nid = 912 and normalized = "PSS" and algType = "ASYMMETRIC_PADDING" + name = "rsassapss" and nid = 912 and normalized = "PSS" and algType = "SIGNATURE" or - name = "sha1withrsa" and nid = 115 and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" + name = "sha1withrsa" and nid = 115 and normalized = "RSA" and algType = "SIGNATURE" or name = "sha1withrsa" and nid = 115 and normalized = "SHA1" and algType = "HASH" or name = "sha1withrsaencryption" and nid = 65 and normalized = "RSA" and - algType = "ASYMMETRIC_ENCRYPTION" + algType = "SIGNATURE" or name = "sha1withrsaencryption" and nid = 65 and normalized = "SHA1" and algType = "HASH" or name = "sha224withrsaencryption" and nid = 671 and normalized = "RSA" and - algType = "ASYMMETRIC_ENCRYPTION" + algType = "SIGNATURE" or name = "sha224withrsaencryption" and nid = 671 and normalized = "SHA-224" and algType = "HASH" or name = "sha256withrsaencryption" and nid = 668 and normalized = "RSA" and - algType = "ASYMMETRIC_ENCRYPTION" + algType = "SIGNATURE" or name = "sha256withrsaencryption" and nid = 668 and normalized = "SHA-256" and algType = "HASH" or name = "sha384withrsaencryption" and nid = 669 and normalized = "RSA" and - algType = "ASYMMETRIC_ENCRYPTION" + algType = "SIGNATURE" or name = "sha384withrsaencryption" and nid = 669 and normalized = "SHA-384" and algType = "HASH" or name = "sha512-224withrsaencryption" and nid = 1145 and normalized = "RSA" and - algType = "ASYMMETRIC_ENCRYPTION" + algType = "SIGNATURE" or name = "sha512-224withrsaencryption" and nid = 1145 and @@ -2983,7 +3045,7 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, name = "sha512-256withrsaencryption" and nid = 1146 and normalized = "RSA" and - algType = "ASYMMETRIC_ENCRYPTION" + algType = "SIGNATURE" or name = "sha512-256withrsaencryption" and nid = 1146 and @@ -2993,14 +3055,14 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, name = "sha512withrsaencryption" and nid = 670 and normalized = "RSA" and - algType = "ASYMMETRIC_ENCRYPTION" + algType = "SIGNATURE" or name = "sha512withrsaencryption" and nid = 670 and normalized = "SHA-512" and algType = "HASH" or name = "shawithrsaencryption" and nid = 42 and normalized = "RSA" and - algType = "ASYMMETRIC_ENCRYPTION" + algType = "SIGNATURE" or name = "shawithrsaencryption" and nid = 42 and normalized = "SHA" and algType = "HASH" or @@ -3017,7 +3079,7 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, name = "sm3withrsaencryption" and nid = 1144 and normalized = "RSA" and - algType = "ASYMMETRIC_ENCRYPTION" + algType = "SIGNATURE" or name = "sm3withrsaencryption" and nid = 1144 and normalized = "SM3" and algType = "HASH" } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/OpenSSLAlgorithmInstances.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/OpenSSLAlgorithmInstances.qll index 55beb58588b..f169ca28c0d 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/OpenSSLAlgorithmInstances.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/OpenSSLAlgorithmInstances.qll @@ -4,3 +4,4 @@ import PaddingAlgorithmInstance import BlockAlgorithmInstance import HashAlgorithmInstance import EllipticCurveAlgorithmInstance +import SignatureAlgorithmInstance diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/PaddingAlgorithmInstance.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/PaddingAlgorithmInstance.qll index b4c34607e45..de1f9ee00c1 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/PaddingAlgorithmInstance.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/PaddingAlgorithmInstance.qll @@ -24,14 +24,14 @@ class OpenSSLPaddingLiteral extends Literal { } /** - * Given a `KnownOpenSSLPaddingAlgorithmConstant`, converts this to a padding family type. + * Given a `KnownOpenSSLPaddingAlgorithmExpr`, converts this to a padding family type. * Does not bind if there is no mapping (no mapping to 'unknown' or 'other'). */ predicate knownOpenSSLConstantToPaddingFamilyType( - KnownOpenSSLPaddingAlgorithmConstant e, Crypto::TPaddingType type + KnownOpenSSLPaddingAlgorithmExpr e, Crypto::TPaddingType type ) { exists(string name | - name = e.getNormalizedName() and + name = e.(KnownOpenSSLAlgorithmExpr).getNormalizedName() and ( name.matches("OAEP") and type = Crypto::OAEP() or @@ -59,8 +59,8 @@ class KnownOpenSSLPaddingConstantAlgorithmInstance extends OpenSSLAlgorithmInsta // 2) The source is a KnownOpenSSLAlgorithm is call, and we know we have an instance immediately from that // 3) the source is a padding-specific literal flowing to a padding-specific consumer // Possibility 1: - this instanceof Literal and - this instanceof KnownOpenSSLPaddingAlgorithmConstant and + this instanceof OpenSSLAlgorithmLiteral and + this instanceof KnownOpenSSLPaddingAlgorithmExpr and exists(DataFlow::Node src, DataFlow::Node sink | // Sink is an argument to a CipherGetterCall sink = getterCall.(OpenSSLAlgorithmValueConsumer).getInputNode() and @@ -72,9 +72,9 @@ class KnownOpenSSLPaddingConstantAlgorithmInstance extends OpenSSLAlgorithmInsta ) or // Possibility 2: - this instanceof DirectAlgorithmValueConsumer and + this instanceof OpenSSLAlgorithmCall and getterCall = this and - this instanceof KnownOpenSSLPaddingAlgorithmConstant and + this instanceof KnownOpenSSLPaddingAlgorithmExpr and isPaddingSpecificConsumer = false or // Possibility 3: padding-specific literal diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/DirectAlgorithmValueConsumer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/DirectAlgorithmValueConsumer.qll index affb7ae6095..068536c8696 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/DirectAlgorithmValueConsumer.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/DirectAlgorithmValueConsumer.qll @@ -7,26 +7,30 @@ private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgor * Cases like EVP_MD5(), * there is no input, rather it directly gets an algorithm * and returns it. + * Also includes operations directly using an algorithm + * like AES_encrypt(). */ -class DirectAlgorithmValueConsumer extends OpenSSLAlgorithmValueConsumer { +class DirectAlgorithmValueConsumer extends OpenSSLAlgorithmValueConsumer instanceof OpenSSLAlgorithmCall +{ DataFlow::Node resultNode; Expr resultExpr; - DirectAlgorithmValueConsumer() { - this instanceof KnownOpenSSLAlgorithmConstant and - this instanceof Call and - resultExpr = this and - resultNode.asExpr() = resultExpr - } - /** * These cases take in no explicit value (the value is implicit) */ override Crypto::ConsumerInputDataFlowNode getInputNode() { none() } - override DataFlow::Node getResultNode() { result = resultNode } + /** + * Gets the DataFlow node represeting the output algorithm entity + * created as a result of this call. + */ + override DataFlow::Node getResultNode() { + this instanceof OpenSSLDirectAlgorithmFetchCall and + result.asExpr() = this + // NOTE: if instanceof OpenSSLDirectAlgorithmOperationCall then there is no algorithm generated + // the algorithm is directly used + } - // override DataFlow::Node getOutputNode() { result = resultNode } override Crypto::AlgorithmInstance getAKnownAlgorithmSource() { // Note: algorithm source definitions enforces that // this class will be a known algorithm source From 952bc266b11052f9639c08c2bc77ea865831f7bb Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Wed, 4 Jun 2025 15:42:55 -0400 Subject: [PATCH 016/150] Crypto: Added Signature algorithm instance and consumer --- .../SignatureAlgorithmInstance.qll | 102 ++++++++++++++++++ .../OpenSSLAlgorithmValueConsumers.qll | 1 + .../SignatureAlgorithmValueConsumer.qll | 32 ++++++ .../codeql/quantum/experimental/Model.qll | 7 +- 4 files changed, 137 insertions(+), 5 deletions(-) create mode 100644 cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/SignatureAlgorithmInstance.qll create mode 100644 cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/SignatureAlgorithmValueConsumer.qll diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/SignatureAlgorithmInstance.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/SignatureAlgorithmInstance.qll new file mode 100644 index 00000000000..45eb5f1ed57 --- /dev/null +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/SignatureAlgorithmInstance.qll @@ -0,0 +1,102 @@ +import cpp +private import experimental.quantum.Language +private import KnownAlgorithmConstants +private import Crypto::KeyOpAlg as KeyOpAlg +private import OpenSSLAlgorithmInstanceBase +private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumerBase +private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.DirectAlgorithmValueConsumer +private import AlgToAVCFlow + +/** + * Gets the signature algorithm type based on the normalized algorithm name. + */ +private predicate knownOpenSSLConstantToSignatureFamilyType( + KnownOpenSSLSignatureAlgorithmExpr e, Crypto::KeyOpAlg::TAlgorithm type +) { + exists(string name | + name = e.(KnownOpenSSLAlgorithmExpr).getNormalizedName() and + ( + name.matches("RSA%") and type = KeyOpAlg::TAsymmetricCipher(KeyOpAlg::RSA()) + or + name.matches("DSA%") and type = KeyOpAlg::TSignature(KeyOpAlg::DSA()) + or + name.matches("ECDSA%") and type = KeyOpAlg::TSignature(KeyOpAlg::ECDSA()) + or + name.matches("ED25519%") and type = KeyOpAlg::TSignature(KeyOpAlg::EDDSA()) + or + name.matches("ED448%") and type = KeyOpAlg::TSignature(KeyOpAlg::EDDSA()) + ) + ) +} + +/** + * A signature algorithm instance derived from an OpenSSL constant. + */ +class KnownOpenSSLSignatureConstantAlgorithmInstance extends OpenSSLAlgorithmInstance, + Crypto::KeyOperationAlgorithmInstance instanceof KnownOpenSSLSignatureAlgorithmExpr +{ + OpenSSLAlgorithmValueConsumer getterCall; + + KnownOpenSSLSignatureConstantAlgorithmInstance() { + // Two possibilities: + // 1) The source is a literal and flows to a getter, then we know we have an instance + // 2) The source is a KnownOpenSSLAlgorithm call, and we know we have an instance immediately from that + // Possibility 1: + this instanceof KnownOpenSSLPaddingAlgorithmExpr and + exists(DataFlow::Node src, DataFlow::Node sink | + // Sink is an argument to a signature getter call + sink = getterCall.getInputNode() and + // Source is `this` + src.asExpr() = this and + // This traces to a getter + KnownOpenSSLAlgorithmToAlgorithmValueConsumerFlow::flow(src, sink) + ) + or + // Possibility 2: + this instanceof OpenSSLAlgorithmCall and + getterCall = this + } + + override Crypto::ModeOfOperationAlgorithmInstance getModeOfOperationAlgorithm() { none() } + + override Crypto::PaddingAlgorithmInstance getPaddingAlgorithm() { none() } + + override string getRawAlgorithmName() { + result = this.(Literal).getValue().toString() + or + result = this.(Call).getTarget().getName() + } + + override int getKeySizeFixed() { + // TODO: use ellipticCurveNameToKeySizeAndFamilyMapping or KnownOpenSSLEllipticCurveConstantAlgorithmInstance + // TODO: maybe add getExplicitKeySize to KnownOpenSSLSignatureAlgorithmExpr and use it here + none() + } + + override KeyOpAlg::Algorithm getAlgorithmType() { + knownOpenSSLConstantToSignatureFamilyType(this, result) + or + not knownOpenSSLConstantToSignatureFamilyType(this, _) and + result = KeyOpAlg::TSignature(KeyOpAlg::OtherSignatureAlgorithmType()) + } + + override OpenSSLAlgorithmValueConsumer getAVC() { result = getterCall } + + override Crypto::ConsumerInputDataFlowNode getKeySizeConsumer() { + // TODO: trace to any key size initializer + // probably PKeyAlgorithmValueConsumer and SignatureAlgorithmValueConsumer + none() + } + + /** + * No mode for signatures. + */ + override predicate shouldHaveModeOfOperation() { none() } + + /** + * Padding only for RSA. + */ + override predicate shouldHavePaddingScheme() { + this.getAlgorithmType() instanceof KeyOpAlg::TAsymmetricCipher + } +} diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/OpenSSLAlgorithmValueConsumers.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/OpenSSLAlgorithmValueConsumers.qll index c76d6d6f041..8b862e2a7cc 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/OpenSSLAlgorithmValueConsumers.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/OpenSSLAlgorithmValueConsumers.qll @@ -5,3 +5,4 @@ import PaddingAlgorithmValueConsumer import HashAlgorithmValueConsumer import EllipticCurveAlgorithmValueConsumer import PKeyAlgorithmValueConsumer +import SignatureAlgorithmValueConsumer diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/SignatureAlgorithmValueConsumer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/SignatureAlgorithmValueConsumer.qll new file mode 100644 index 00000000000..077457e90cc --- /dev/null +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/SignatureAlgorithmValueConsumer.qll @@ -0,0 +1,32 @@ +import cpp +private import experimental.quantum.Language +private import experimental.quantum.OpenSSL.AlgorithmInstances.KnownAlgorithmConstants +private import experimental.quantum.OpenSSL.AlgorithmInstances.OpenSSLAlgorithmInstanceBase +private import OpenSSLAlgorithmValueConsumerBase +private import experimental.quantum.OpenSSL.LibraryDetector + +abstract class SignatureAlgorithmValueConsumer extends OpenSSLAlgorithmValueConsumer { } + +class EVPSignatureAlgorithmValueConsumer extends SignatureAlgorithmValueConsumer { + DataFlow::Node valueArgNode; + DataFlow::Node resultNode; + + EVPSignatureAlgorithmValueConsumer() { + resultNode.asExpr() = this and + ( + // EVP_SIGNATURE + this.(Call).getTarget().getName() = "EVP_SIGNATURE_fetch" and + valueArgNode.asExpr() = this.(Call).getArgument(1) + // EVP_PKEY_get1_DSA, EVP_PKEY_get1_RSA + // DSA_SIG_new, DSA_SIG_get0, RSA_sign ? + ) + } + + override DataFlow::Node getResultNode() { result = resultNode } + + override Crypto::ConsumerInputDataFlowNode getInputNode() { result = valueArgNode } + + override Crypto::AlgorithmInstance getAKnownAlgorithmSource() { + exists(OpenSSLAlgorithmInstance i | i.getAVC() = this and result = i) + } +} diff --git a/shared/quantum/codeql/quantum/experimental/Model.qll b/shared/quantum/codeql/quantum/experimental/Model.qll index e7bbe65d311..603dae127b5 100644 --- a/shared/quantum/codeql/quantum/experimental/Model.qll +++ b/shared/quantum/codeql/quantum/experimental/Model.qll @@ -597,8 +597,7 @@ module CryptographyBase Input> { newtype TSignatureAlgorithmType = DSA() or ECDSA() or - Ed25519() or - Ed448() or + EDDSA() or // e.g., ED25519 or ED448 OtherSignatureAlgorithmType() newtype TKEMAlgorithmType = @@ -703,9 +702,7 @@ module CryptographyBase Input> { or type = TSignature(ECDSA()) and name = "ECDSA" or - type = TSignature(Ed25519()) and name = "Ed25519" - or - type = TSignature(Ed448()) and name = "Ed448" + type = TSignature(EDDSA()) and name = "EDSA" or type = TSignature(OtherSignatureAlgorithmType()) and name = "UnknownSignature" or From 33e239d6674f9af6f7f283916f3a68e8d8f15d84 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Wed, 4 Jun 2025 15:44:06 -0400 Subject: [PATCH 017/150] Crypto: Collapse initializer qll's into operations. --- .../Operations/EVPCipherInitializer.qll | 117 ------------------ .../OpenSSL/Operations/EVPCipherOperation.qll | 110 +++++++++++++++- .../OpenSSL/Operations/EVPHashInitializer.qll | 14 --- .../OpenSSL/Operations/EVPHashOperation.qll | 13 +- 4 files changed, 121 insertions(+), 133 deletions(-) delete mode 100644 cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherInitializer.qll delete mode 100644 cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashInitializer.qll diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherInitializer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherInitializer.qll deleted file mode 100644 index e6e9954a333..00000000000 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherInitializer.qll +++ /dev/null @@ -1,117 +0,0 @@ -/** - * see: https://docs.openssl.org/master/man3/EVP_EncryptInit/ - * Models cipher initialization for EVP cipher operations. - */ - -private import experimental.quantum.Language -private import experimental.quantum.OpenSSL.CtxFlow as CTXFlow -private import OpenSSLOperationBase - -module EncValToInitEncArgConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source.asExpr().getValue().toInt() in [0, 1] } - - predicate isSink(DataFlow::Node sink) { - exists(EVP_Cipher_Initializer initCall | sink.asExpr() = initCall.getOperationSubtypeArg()) - } -} - -module EncValToInitEncArgFlow = DataFlow::Global; - -int getEncConfigValue(Expr e) { - exists(EVP_Cipher_Initializer initCall | e = initCall.getOperationSubtypeArg()) and - exists(DataFlow::Node a, DataFlow::Node b | - EncValToInitEncArgFlow::flow(a, b) and b.asExpr() = e and result = a.asExpr().getValue().toInt() - ) -} - -bindingset[i] -Crypto::KeyOperationSubtype intToCipherOperationSubtype(int i) { - if i = 0 - then result instanceof Crypto::TEncryptMode - else - if i = 1 - then result instanceof Crypto::TDecryptMode - else result instanceof Crypto::TUnknownKeyOperationMode -} - -// TODO: need to add key consumer -abstract class EVP_Cipher_Initializer extends EVPInitialize { - override Expr getAlgorithmArg() { result = this.(Call).getArgument(1) } - - abstract Expr getOperationSubtypeArg(); - - override Crypto::KeyOperationSubtype getKeyOperationSubtype() { - if this.(Call).getTarget().getName().toLowerCase().matches("%encrypt%") - then result instanceof Crypto::TEncryptMode - else - if this.(Call).getTarget().getName().toLowerCase().matches("%decrypt%") - then result instanceof Crypto::TDecryptMode - else - if exists(getEncConfigValue(this.getOperationSubtypeArg())) - then result = intToCipherOperationSubtype(getEncConfigValue(this.getOperationSubtypeArg())) - else result instanceof Crypto::TUnknownKeyOperationMode - } -} - -abstract class EVP_EX_Initializer extends EVP_Cipher_Initializer { - override Expr getKeyArg() { result = this.(Call).getArgument(3) } - - override Expr getIVArg() { result = this.(Call).getArgument(4) } -} - -abstract class EVP_EX2_Initializer extends EVP_Cipher_Initializer { - override Expr getKeyArg() { result = this.(Call).getArgument(2) } - - override Expr getIVArg() { result = this.(Call).getArgument(3) } -} - -class EVP_Cipher_EX_Init_Call extends EVP_EX_Initializer { - EVP_Cipher_EX_Init_Call() { - this.(Call).getTarget().getName() in [ - "EVP_EncryptInit_ex", "EVP_DecryptInit_ex", "EVP_CipherInit_ex" - ] - } - - override Expr getOperationSubtypeArg() { - this.(Call).getTarget().getName().toLowerCase().matches("%cipherinit%") and - result = this.(Call).getArgument(5) - } -} - -class EVP_Cipher_EX2_or_Simple_Init_Call extends EVP_EX2_Initializer { - EVP_Cipher_EX2_or_Simple_Init_Call() { - this.(Call).getTarget().getName() in [ - "EVP_EncryptInit_ex2", "EVP_DecryptInit_ex2", "EVP_CipherInit_ex2", "EVP_EncryptInit", - "EVP_DecryptInit", "EVP_CipherInit" - ] - } - - override Expr getOperationSubtypeArg() { - this.(Call).getTarget().getName().toLowerCase().matches("%cipherinit%") and - result = this.(Call).getArgument(4) - } -} - -class EVP_CipherInit_SKEY_Call extends EVP_EX2_Initializer { - EVP_CipherInit_SKEY_Call() { this.(Call).getTarget().getName() in ["EVP_CipherInit_SKEY"] } - - override Expr getOperationSubtypeArg() { result = this.(Call).getArgument(5) } -} - -class EVPCipherInitializerAlgorithmArgument extends Expr { - EVPCipherInitializerAlgorithmArgument() { - exists(EVP_Cipher_Initializer initCall | this = initCall.getAlgorithmArg()) - } -} - -class EVPCipherInitializerKeyArgument extends Expr { - EVPCipherInitializerKeyArgument() { - exists(EVP_Cipher_Initializer initCall | this = initCall.getKeyArg()) - } -} - -class EVPCipherInitializerIVArgument extends Expr { - EVPCipherInitializerIVArgument() { - exists(EVP_Cipher_Initializer initCall | this = initCall.getIVArg()) - } -} diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherOperation.qll index 5f24d840ff8..0fcf59832c5 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherOperation.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherOperation.qll @@ -1,9 +1,117 @@ private import experimental.quantum.Language private import experimental.quantum.OpenSSL.CtxFlow as CTXFlow -private import EVPCipherInitializer private import OpenSSLOperationBase private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers +module EncValToInitEncArgConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { source.asExpr().getValue().toInt() in [0, 1] } + + predicate isSink(DataFlow::Node sink) { + exists(EVP_Cipher_Initializer initCall | sink.asExpr() = initCall.getOperationSubtypeArg()) + } +} + +module EncValToInitEncArgFlow = DataFlow::Global; + +int getEncConfigValue(Expr e) { + exists(EVP_Cipher_Initializer initCall | e = initCall.getOperationSubtypeArg()) and + exists(DataFlow::Node a, DataFlow::Node b | + EncValToInitEncArgFlow::flow(a, b) and b.asExpr() = e and result = a.asExpr().getValue().toInt() + ) +} + +bindingset[i] +Crypto::KeyOperationSubtype intToCipherOperationSubtype(int i) { + if i = 0 + then result instanceof Crypto::TEncryptMode + else + if i = 1 + then result instanceof Crypto::TDecryptMode + else result instanceof Crypto::TUnknownKeyOperationMode +} + +// TODO: need to add key consumer +abstract class EVP_Cipher_Initializer extends EVPInitialize { + override Expr getAlgorithmArg() { result = this.(Call).getArgument(1) } + + abstract Expr getOperationSubtypeArg(); + + override Crypto::KeyOperationSubtype getKeyOperationSubtype() { + if this.(Call).getTarget().getName().toLowerCase().matches("%encrypt%") + then result instanceof Crypto::TEncryptMode + else + if this.(Call).getTarget().getName().toLowerCase().matches("%decrypt%") + then result instanceof Crypto::TDecryptMode + else + if exists(getEncConfigValue(this.getOperationSubtypeArg())) + then result = intToCipherOperationSubtype(getEncConfigValue(this.getOperationSubtypeArg())) + else result instanceof Crypto::TUnknownKeyOperationMode + } +} + +abstract class EVP_EX_Initializer extends EVP_Cipher_Initializer { + override Expr getKeyArg() { result = this.(Call).getArgument(3) } + + override Expr getIVArg() { result = this.(Call).getArgument(4) } +} + +abstract class EVP_EX2_Initializer extends EVP_Cipher_Initializer { + override Expr getKeyArg() { result = this.(Call).getArgument(2) } + + override Expr getIVArg() { result = this.(Call).getArgument(3) } +} + +class EVP_Cipher_EX_Init_Call extends EVP_EX_Initializer { + EVP_Cipher_EX_Init_Call() { + this.(Call).getTarget().getName() in [ + "EVP_EncryptInit_ex", "EVP_DecryptInit_ex", "EVP_CipherInit_ex" + ] + } + + override Expr getOperationSubtypeArg() { + this.(Call).getTarget().getName().toLowerCase().matches("%cipherinit%") and + result = this.(Call).getArgument(5) + } +} + +class EVP_Cipher_EX2_or_Simple_Init_Call extends EVP_EX2_Initializer { + EVP_Cipher_EX2_or_Simple_Init_Call() { + this.(Call).getTarget().getName() in [ + "EVP_EncryptInit_ex2", "EVP_DecryptInit_ex2", "EVP_CipherInit_ex2", "EVP_EncryptInit", + "EVP_DecryptInit", "EVP_CipherInit" + ] + } + + override Expr getOperationSubtypeArg() { + this.(Call).getTarget().getName().toLowerCase().matches("%cipherinit%") and + result = this.(Call).getArgument(4) + } +} + +class EVP_CipherInit_SKEY_Call extends EVP_EX2_Initializer { + EVP_CipherInit_SKEY_Call() { this.(Call).getTarget().getName() in ["EVP_CipherInit_SKEY"] } + + override Expr getOperationSubtypeArg() { result = this.(Call).getArgument(5) } +} + +class EVPCipherInitializerAlgorithmArgument extends Expr { + EVPCipherInitializerAlgorithmArgument() { + exists(EVP_Cipher_Initializer initCall | this = initCall.getAlgorithmArg()) + } +} + +class EVPCipherInitializerKeyArgument extends Expr { + EVPCipherInitializerKeyArgument() { + exists(EVP_Cipher_Initializer initCall | this = initCall.getKeyArg()) + } +} + +class EVPCipherInitializerIVArgument extends Expr { + EVPCipherInitializerIVArgument() { + exists(EVP_Cipher_Initializer initCall | this = initCall.getIVArg()) + } +} + class EVP_Cipher_Update_Call extends EVPUpdate { EVP_Cipher_Update_Call() { this.(Call).getTarget().getName() in [ diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashInitializer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashInitializer.qll deleted file mode 100644 index 7309242f198..00000000000 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashInitializer.qll +++ /dev/null @@ -1,14 +0,0 @@ -import cpp -private import OpenSSLOperationBase - -abstract class EVP_Hash_Initializer extends EVPInitialize { } - -class EVP_DigestInit_Variant_Calls extends EVP_Hash_Initializer { - EVP_DigestInit_Variant_Calls() { - this.(Call).getTarget().getName() in [ - "EVP_DigestInit", "EVP_DigestInit_ex", "EVP_DigestInit_ex2" - ] - } - - override Expr getAlgorithmArg() { result = this.(Call).getArgument(1) } -} diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashOperation.qll index 796f7139838..44b515d2f3c 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashOperation.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashOperation.qll @@ -5,9 +5,20 @@ private import experimental.quantum.Language private import experimental.quantum.OpenSSL.CtxFlow as CTXFlow private import OpenSSLOperationBase -private import EVPHashInitializer private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers +abstract class EVP_Hash_Initializer extends EVPInitialize { } + +class EVP_DigestInit_Variant_Calls extends EVP_Hash_Initializer { + EVP_DigestInit_Variant_Calls() { + this.(Call).getTarget().getName() in [ + "EVP_DigestInit", "EVP_DigestInit_ex", "EVP_DigestInit_ex2" + ] + } + + override Expr getAlgorithmArg() { result = this.(Call).getArgument(1) } +} + class EVP_Digest_Update_Call extends EVPUpdate { EVP_Digest_Update_Call() { this.(Call).getTarget().getName() = "EVP_DigestUpdate" } From f952f901e4ea07a24a1b990127375cab6c03cd8c Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Wed, 4 Jun 2025 15:44:45 -0400 Subject: [PATCH 018/150] Crypto: Update CtxFlow to flow from any "source ctx" which is any ctx that is an argument or a return. --- .../experimental/quantum/OpenSSL/CtxFlow.qll | 39 +++++++++++++++---- .../Operations/OpenSSLOperationBase.qll | 7 ++-- 2 files changed, 36 insertions(+), 10 deletions(-) diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/CtxFlow.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/CtxFlow.qll index 38b49b8d901..d1adbcc35c8 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/CtxFlow.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/CtxFlow.qll @@ -63,6 +63,15 @@ private class CtxPointerArgument extends CtxPointerExpr { Call getCall() { result.getAnArgument() = this } } +/** + * A call returning a CtxPointerExpr. + */ +private class CtxPointerReturn extends CtxPointerExpr { + CtxPointerReturn() { exists(Call c | c = this) } + + Call getCall() { result = this.(Call) } +} + /** * A call whose target contains 'free' or 'reset' and has an argument of type * CtxPointerArgument. @@ -97,10 +106,26 @@ private class CtxCopyReturnCall extends Call, CtxPointerExpr { } /** - * Flow from any CtxPointerArgument to any other CtxPointerArgument + * A source Ctx of interest is any argument or return of type CtxPointerExpr. */ -module OpenSSLCtxArgumentFlowConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source.asExpr() instanceof CtxPointerArgument } +private class CtxPointerSource extends CtxPointerExpr { + CtxPointerSource() { + this instanceof CtxPointerReturn or + this instanceof CtxPointerArgument + } + + DataFlow::Node asNode() { + result.asExpr() = this + or + result.asDefiningArgument() = this + } +} + +/** + * Flow from any CtxPointerSource to any CtxPointerArgument. + */ +module OpenSSLCtxSourceToArgumentFlowConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { exists(CtxPointerSource s | s.asNode() = source) } predicate isSink(DataFlow::Node sink) { sink.asExpr() instanceof CtxPointerArgument } @@ -125,15 +150,15 @@ module OpenSSLCtxArgumentFlowConfig implements DataFlow::ConfigSig { } } -module OpenSSLCtxArgumentFlow = DataFlow::Global; +module OpenSSLCtxSourceToArgumentFlow = DataFlow::Global; /** * Holds if there is a context flow from the source to the sink. */ -predicate ctxArgFlowsToCtxArg(CtxPointerArgument source, CtxPointerArgument sink) { +predicate ctxArgOrRetFlowsToCtxArg(CtxPointerSource source, CtxPointerArgument sink) { exists(DataFlow::Node a, DataFlow::Node b | - OpenSSLCtxArgumentFlow::flow(a, b) and - a.asExpr() = source and + OpenSSLCtxSourceToArgumentFlow::flow(a, b) and + a = source.asNode() and b.asExpr() = sink ) } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll index 6ada6cb4665..7c5d8c801f3 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll @@ -122,7 +122,7 @@ abstract class EVPOperation extends OpenSSLOperation { * Finds the initialization call, may be none. */ EVPInitialize getInitCall() { - CTXFlow::ctxArgFlowsToCtxArg(result.getContextArg(), this.getContextArg()) + CTXFlow::ctxArgOrRetFlowsToCtxArg(result.getContextArg(), this.getContextArg()) } Crypto::ArtifactOutputDataFlowNode getOutputArtifact() { @@ -138,14 +138,15 @@ abstract class EVPOperation extends OpenSSLOperation { } /** - * The final calls of the EVP API. + * An EVP final call, + * which is typicall usesed in an update/final pattern. */ abstract class EVPFinal extends EVPOperation { /** * All update calls that were executed before this final call. */ EVPUpdate getUpdateCalls() { - CTXFlow::ctxArgFlowsToCtxArg(result.getContextArg(), this.getContextArg()) + CTXFlow::ctxArgOrRetFlowsToCtxArg(result.getContextArg(), this.getContextArg()) } /** From 98aae6a7bf4c770828895b65653bd5d1189923d0 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Thu, 5 Jun 2025 16:38:37 -0400 Subject: [PATCH 019/150] Crypto: Add EVP key gen and signature operation (work in progress). Add initial signature tests (no expected files yet). Add new openssl .h stubs. Clean up of OperationBase and associated uses. Update test case stubs to be closer to the actual stubs. Fix unncessary instanceof check in signatures. --- .../SignatureAlgorithmInstance.qll | 2 +- .../OpenSSL/Operations/EVPCipherOperation.qll | 22 +- .../OpenSSL/Operations/EVPHashOperation.qll | 2 + .../OpenSSL/Operations/EVPKeyGenOperation.qll | 86 ++ .../Operations/EVPSignatureOperation.qll | 227 +++++ .../Operations/OpenSSLOperationBase.qll | 26 +- .../OpenSSL/Operations/OpenSSLOperations.qll | 2 + .../openssl/hash_input_sources.expected | 3 + .../quantum/openssl/hash_operations.expected | 2 + .../quantum/openssl/keygen_key_sources.ql | 7 + .../quantum/openssl/keygen_operations.ql | 6 + .../quantum/openssl/openssl_basic.c | 6 +- .../quantum/openssl/openssl_pkey.c | 70 ++ .../quantum/openssl/openssl_signature.c | 819 ++++++++++++++++++ .../quantum/openssl/signature_algorithms.ql | 6 + .../quantum/openssl/signature_key_sources.ql | 6 + .../openssl/signature_message_sources.ql | 6 + .../quantum/openssl/signature_operations.ql | 6 + cpp/ql/test/experimental/stubs/openssl/dsa.h | 78 ++ .../stubs/openssl/{evp_stubs.h => evp.h} | 656 +------------- .../openssl/{alg_macro_stubs.h => obj_mac.h} | 10 + cpp/ql/test/experimental/stubs/openssl/pem.h | 527 +++++++++++ cpp/ql/test/experimental/stubs/openssl/rand.h | 20 + .../experimental/stubs/openssl/rand_stubs.h | 3 - cpp/ql/test/experimental/stubs/openssl/rsa.h | 585 +++++++++++++ .../experimental/stubs/openssl/type_stubs.h | 702 +++++++++++++++ 26 files changed, 3206 insertions(+), 679 deletions(-) create mode 100644 cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPKeyGenOperation.qll create mode 100644 cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPSignatureOperation.qll create mode 100644 cpp/ql/test/experimental/library-tests/quantum/openssl/keygen_key_sources.ql create mode 100644 cpp/ql/test/experimental/library-tests/quantum/openssl/keygen_operations.ql create mode 100644 cpp/ql/test/experimental/library-tests/quantum/openssl/openssl_pkey.c create mode 100644 cpp/ql/test/experimental/library-tests/quantum/openssl/openssl_signature.c create mode 100644 cpp/ql/test/experimental/library-tests/quantum/openssl/signature_algorithms.ql create mode 100644 cpp/ql/test/experimental/library-tests/quantum/openssl/signature_key_sources.ql create mode 100644 cpp/ql/test/experimental/library-tests/quantum/openssl/signature_message_sources.ql create mode 100644 cpp/ql/test/experimental/library-tests/quantum/openssl/signature_operations.ql create mode 100644 cpp/ql/test/experimental/stubs/openssl/dsa.h rename cpp/ql/test/experimental/stubs/openssl/{evp_stubs.h => evp.h} (88%) rename cpp/ql/test/experimental/stubs/openssl/{alg_macro_stubs.h => obj_mac.h} (99%) create mode 100644 cpp/ql/test/experimental/stubs/openssl/pem.h create mode 100644 cpp/ql/test/experimental/stubs/openssl/rand.h delete mode 100644 cpp/ql/test/experimental/stubs/openssl/rand_stubs.h create mode 100644 cpp/ql/test/experimental/stubs/openssl/rsa.h create mode 100644 cpp/ql/test/experimental/stubs/openssl/type_stubs.h diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/SignatureAlgorithmInstance.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/SignatureAlgorithmInstance.qll index 45eb5f1ed57..d8754dbdc6e 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/SignatureAlgorithmInstance.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/SignatureAlgorithmInstance.qll @@ -42,7 +42,7 @@ class KnownOpenSSLSignatureConstantAlgorithmInstance extends OpenSSLAlgorithmIns // 1) The source is a literal and flows to a getter, then we know we have an instance // 2) The source is a KnownOpenSSLAlgorithm call, and we know we have an instance immediately from that // Possibility 1: - this instanceof KnownOpenSSLPaddingAlgorithmExpr and + this instanceof OpenSSLAlgorithmLiteral and exists(DataFlow::Node src, DataFlow::Node sink | // Sink is an argument to a signature getter call sink = getterCall.getInputNode() and diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherOperation.qll index 0fcf59832c5..6ebacd315d0 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherOperation.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherOperation.qll @@ -94,24 +94,6 @@ class EVP_CipherInit_SKEY_Call extends EVP_EX2_Initializer { override Expr getOperationSubtypeArg() { result = this.(Call).getArgument(5) } } -class EVPCipherInitializerAlgorithmArgument extends Expr { - EVPCipherInitializerAlgorithmArgument() { - exists(EVP_Cipher_Initializer initCall | this = initCall.getAlgorithmArg()) - } -} - -class EVPCipherInitializerKeyArgument extends Expr { - EVPCipherInitializerKeyArgument() { - exists(EVP_Cipher_Initializer initCall | this = initCall.getKeyArg()) - } -} - -class EVPCipherInitializerIVArgument extends Expr { - EVPCipherInitializerIVArgument() { - exists(EVP_Cipher_Initializer initCall | this = initCall.getIVArg()) - } -} - class EVP_Cipher_Update_Call extends EVPUpdate { EVP_Cipher_Update_Call() { this.(Call).getTarget().getName() in [ @@ -164,6 +146,8 @@ class EVP_Cipher_Call extends EVPOperation, EVP_Cipher_Operation { EVP_Cipher_Call() { this.(Call).getTarget().getName() = "EVP_Cipher" } override Expr getInputArg() { result = this.(Call).getArgument(2) } + + override Expr getAlgorithmArg() { result = this.getInitCall().getAlgorithmArg() } } class EVP_Cipher_Final_Call extends EVPFinal, EVP_Cipher_Operation { @@ -182,4 +166,6 @@ class EVP_Cipher_Final_Call extends EVPFinal, EVP_Cipher_Operation { or result = EVP_Cipher_Operation.super.getOutputArg() } + + override Expr getAlgorithmArg() { result = this.getInitCall().getAlgorithmArg() } } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashOperation.qll index 44b515d2f3c..40b3e863b60 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashOperation.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashOperation.qll @@ -93,4 +93,6 @@ class EVP_Digest_Final_Call extends EVPFinal, Crypto::HashOperationInstance { override Crypto::ConsumerInputDataFlowNode getInputConsumer() { result = EVPFinal.super.getInputConsumer() } + + override Expr getAlgorithmArg() { result = this.getInitCall().getAlgorithmArg() } } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPKeyGenOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPKeyGenOperation.qll new file mode 100644 index 00000000000..1acf15226a8 --- /dev/null +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPKeyGenOperation.qll @@ -0,0 +1,86 @@ +private import experimental.quantum.Language +private import experimental.quantum.OpenSSL.CtxFlow +private import OpenSSLOperationBase +private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers +private import semmle.code.cpp.dataflow.new.DataFlow + +class EVPKeyGenInitialize extends EVPInitialize { + EVPKeyGenInitialize() { + this.(Call).getTarget().getName() in [ + "EVP_PKEY_keygen_init", + "EVP_PKEY_paramgen_init" + ] + } + + override Expr getAlgorithmArg() { + // The context argument encodes the algorithm + result = this.getContextArg() + } +} + +// /** +// * All calls that can be tracked via ctx. +// * For example calls used to set parameters like a key size. +// */ +// class EVPKeyGenUpdate extends Call { +// EVPKeyGenUpdate() { +// this.(Call).getTarget().getName() in [ +// "EVP_PKEY_CTX_set_rsa_keygen_bits", +// // TODO: "EVP_PKEY_CTX_set_params" +// ] +// } +// /** +// * No input in our meaning. +// */ +// override Expr getInputArg() { none() } +// /** +// * No output in our meaning. +// */ +// override Expr getOutputArg() { none() } +// Expr getKeySizeArg() { +// this.(Call).getTarget().getName() = "EVP_PKEY_CTX_set_rsa_keygen_bits" and +// result = this.(Call).getArgument(1) +// } +// } +class EVPKeyGenOperation extends EVPOperation, Crypto::KeyGenerationOperationInstance { + DataFlow::Node keyResultNode; + + EVPKeyGenOperation() { + this.(Call).getTarget().getName() in ["EVP_RSA_gen", "EVP_PKEY_Q_keygen"] and + keyResultNode.asExpr() = this + or + this.(Call).getTarget().getName() in [ + "EVP_PKEY_generate", "EVP_PKEY_keygen", "EVP_PKEY_paramgen" + ] and + keyResultNode.asDefiningArgument() = this.(Call).getArgument(1) + } + + override Expr getAlgorithmArg() { + this.(Call).getTarget().getName() = "EVP_PKEY_Q_keygen" and + result = this.(Call).getArgument(0) + or + result = this.getInitCall().getAlgorithmArg() + } + + override Crypto::KeyArtifactType getOutputKeyType() { result = Crypto::TAsymmetricKeyType() } + + override Expr getInputArg() { none() } + + override Expr getOutputArg() { result = this.(Call).getArgument(1) } + + override Crypto::ArtifactOutputDataFlowNode getOutputKeyArtifact() { result = keyResultNode } + + override Crypto::ConsumerInputDataFlowNode getKeySizeConsumer() { + none() + // if this.(Call).getTarget().getName() = "EVP_PKEY_Q_keygen" + // then result = DataFlow::exprNode(this.(Call).getArgument(3)) // TODO: may be wrong for EC keys + // else + // if this.(Call).getTarget().getName() = "EVP_RSA_gen" + // then result = DataFlow::exprNode(this.(Call).getArgument(0)) + // else result = DataFlow::exprNode(this.getUpdateCalls().(EVPKeyGenUpdate).getKeySizeArg()) + } + + override int getKeySizeFixed() { + none() // TODO + } +} diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPSignatureOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPSignatureOperation.qll new file mode 100644 index 00000000000..0d9c2625221 --- /dev/null +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPSignatureOperation.qll @@ -0,0 +1,227 @@ +/** + * Provides classes for modeling OpenSSL's EVP signature operations + */ + +private import experimental.quantum.Language +private import OpenSSLOperationBase +private import experimental.quantum.OpenSSL.CtxFlow +private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers +private import experimental.quantum.OpenSSL.Operations.OpenSSLOperations + +module OpenSSLKeyGenToArgConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + exists(Crypto::KeyGenerationOperationInstance keygen | keygen.getOutputKeyArtifact() = source) + } + + predicate isSink(DataFlow::Node sink) { exists(Call c | c.getAnArgument() = sink.asExpr()) } +} + +module OpenSSLKeyGenToArgFlow = TaintTracking::Global; + +// TODO: verification functions +class EVP_Signature_Initializer extends EVPInitialize { + EVP_Signature_Initializer() { + this.(Call).getTarget().getName() in [ + "EVP_DigestSignInit", "EVP_DigestSignInit_ex", "EVP_SignInit", "EVP_SignInit_ex", + "EVP_PKEY_sign_init", "EVP_PKEY_sign_init_ex", "EVP_PKEY_sign_init_ex2", + "EVP_PKEY_sign_message_init" + ] + } + + /** + * Gets the algorithm associated with this initialization by following + * where the algorithm is set through the context argument. + */ + Expr getAlgorithmArgFromCtx() { + // exists(EVPPKeyAlgorithmConsumer source, DataFlow::Node sink | + // result = source.getInputNode().asExpr() and + // sink.asExpr() = this.getContextArg() and + // OpenSSLCtxSourceToArgumentFlow::flow(source.getResultNode(), sink) + // ) + // or + result = this.getAlgorithmArgFromKey(this.getKeyArgFromCtx()) + } + + Expr getAlgorithmArgFromKey(Expr keyArg) { + exists(Crypto::KeyGenerationOperationInstance keygen | + OpenSSLKeyGenToArgFlow::flow(keygen.getOutputKeyArtifact(), DataFlow::exprNode(keyArg)) and + result = keygen.(OpenSSLOperation).getAlgorithmArg() + ) + } + + /** + * Gets the argument ingesting a key + * by tracing the context arg back to a context creation + */ + Expr getKeyArgFromCtx() { + exists(Call contextCreationCall | + ctxArgOrRetFlowsToCtxArg(contextCreationCall, this.getContextArg()) and + ( + contextCreationCall.getTarget().getName() = "EVP_PKEY_CTX_new" and + result = contextCreationCall.getArgument(0) + or + contextCreationCall.getTarget().getName() = "EVP_PKEY_CTX_new_from_pkey" and + result = contextCreationCall.getArgument(1) + ) + ) + } + + override Expr getAlgorithmArg() { + // explicit algorithm as argument + this.(Call).getTarget().getName() in ["EVP_PKEY_sign_init_ex2", "EVP_PKEY_sign_message_init"] and + result = this.(Call).getArgument(1) + // or + // // algorithm (and key) specified in the context + // this.(Call).getTarget().getName() in ["EVP_PKEY_sign_init", "EVP_PKEY_sign_init_ex"] and + // result = getAlgorithmArgFromCtx() + // or + // // algorithm specified by the key + // this.(Call).getTarget().getName() in ["EVP_DigestSignInit", "EVP_DigestSignInit_ex"] and + // result = getAlgorithmArgFromKey() + // // NOTE: for EVP_SignInit and EVP_SignInit_ex the algorithm is not specified + // // rather the algorithm is specified by the key used for signing later in a final call. + } + + /** + * Returns the key argument if there is one. + * If the key was provided via the context, we track it to the context. + */ + override Expr getKeyArg() { + this.(Call).getTarget().getName() = "EVP_DigestSignInit" and + result = this.(Call).getArgument(4) + or + this.(Call).getTarget().getName() = "EVP_DigestSignInit_ex" and + result = this.(Call).getArgument(5) + or + this.(Call).getTarget().getName().matches("EVP_PKEY_%") and + result = this.getKeyArgFromCtx() + } + + /** + * Signing, verification or unknown. + */ + override Crypto::KeyOperationSubtype getKeyOperationSubtype() { + if this.(Call).getTarget().getName().toLowerCase().matches("%sign%") + then result instanceof Crypto::TSignMode + else + if this.(Call).getTarget().getName().toLowerCase().matches("%verify%") + then result instanceof Crypto::TVerifyMode + else result instanceof Crypto::TUnknownKeyOperationMode + } +} + +class EVP_Signature_Update_Call extends EVPUpdate { + EVP_Signature_Update_Call() { + this.(Call).getTarget().getName() in [ + "EVP_DigestSignUpdate", "EVP_SignUpdate", "EVP_PKEY_sign_message_update" + ] + } + + /** + * Input is the message to sign. + */ + override Expr getInputArg() { result = this.(Call).getArgument(1) } +} + +/** + * We model output explicit output arguments as predicate to use it in constructors. + * The predicate must cover all EVP_Signature_Operation subclasses. + */ +private Expr signatureOperationOutputArg(Call call) { + if call.getTarget().getName() = "EVP_SignFinal_ex" + then result = call.getArgument(2) + else result = call.getArgument(1) +} + +/** + * Base configuration for all EVP signature operations. + */ +abstract class EVP_Signature_Operation extends EVPOperation, Crypto::SignatureOperationInstance { + EVP_Signature_Operation() { + this.(Call).getTarget().getName().matches("EVP_%") and + // NULL output argument means the call is to get the size of the signature and such call is not an operation + ( + not exists(signatureOperationOutputArg(this).getValue()) + or + signatureOperationOutputArg(this).getValue() != "0" + ) + } + + /** + * Signing, verification or unknown. + */ + override Crypto::KeyOperationSubtype getKeyOperationSubtype() { + // TODO: if this KeyOperationSubtype does not match initialization call's KeyOperationSubtype then we found a bug + if this.(Call).getTarget().getName().toLowerCase().matches("%sign%") + then result instanceof Crypto::TSignMode + else + if this.(Call).getTarget().getName().toLowerCase().matches("%verify%") + then result instanceof Crypto::TVerifyMode + else result instanceof Crypto::TUnknownKeyOperationMode + } + + override Crypto::ConsumerInputDataFlowNode getNonceConsumer() { + // TODO: some signing operations may have explicit nonce generators + none() + } + + /** + * Keys provided in the initialization call or in a context are found by this method. + * Keys in explicit arguments are found by overriden methods in extending classes. + */ + override Crypto::ConsumerInputDataFlowNode getKeyConsumer() { + result = DataFlow::exprNode(this.getInitCall().getKeyArg()) + } + + override Crypto::ArtifactOutputDataFlowNode getOutputArtifact() { + result = EVPOperation.super.getOutputArtifact() + } + + override Crypto::ConsumerInputDataFlowNode getInputConsumer() { + result = EVPOperation.super.getInputConsumer() + } + + /** + * TODO: only signing operations for now, change when verificaiton is added + */ + override Crypto::ConsumerInputDataFlowNode getSignatureConsumer() { none() } +} +// class EVP_Signature_Call extends EVPOperation, EVP_Signature_Operation { +// EVP_Signature_Call() { this.(Call).getTarget().getName() in ["EVP_DigestSign", "EVP_PKEY_sign"] } +// /** +// * Output is the signature. +// */ +// override Expr getOutputArg() { result = signatureOperationOutputArg(this) } +// /** +// * Input is the message to sign. +// */ +// override Expr getInputArg() { result = this.(Call).getArgument(3) } +// } +// class EVP_Signature_Final_Call extends EVPFinal, EVP_Signature_Operation { +// EVP_Signature_Final_Call() { +// this.(Call).getTarget().getName() in [ +// "EVP_DigestSignFinal", "EVP_SignFinal_ex", "EVP_SignFinal", "EVP_PKEY_sign_message_final" +// ] +// } +// override Expr getAlgorithmArg() { +// none() +// // // algorithm specified by the key and the key is provided in this operation +// // if this.(Call).getTarget().getName() in ["EVP_SignFinal", "EVP_SignFinal_ex"] +// // then result = getAlgorithmFromKey(this.getKeyConsumer().asExpr()) +// // else +// // // or find algorithm in the initialization call +// // result = EVP_Signature_Operation.super.getAlgorithmArg() +// } +// override Crypto::ConsumerInputDataFlowNode getKeyConsumer() { +// // key provided as an argument +// if this.(Call).getTarget().getName() in ["EVP_SignFinal", "EVP_SignFinal_ex"] +// then result = DataFlow::exprNode(this.(Call).getArgument(3)) +// else +// // or find key in the initialization call +// result = EVP_Signature_Operation.super.getKeyConsumer() +// } +// /** +// * Output is the signature. +// */ +// override Expr getOutputArg() { result = signatureOperationOutputArg(this) } +// } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll index 7c5d8c801f3..5c29646b031 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll @@ -7,8 +7,11 @@ private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgor */ abstract class OpenSSLOperation extends Crypto::OperationInstance instanceof Call { /** - * Expression that specifies the algorithm for the operation. - * Will be an argument of the operation in the simplest case. + * Gets the argument that specifies the algorithm for the operation. + * This argument might not be immediately present at the specified operation. + * For example, it might be set in an initialization call. + * Modelers of the operation are resonsible for linking the operation to any + * initialization calls, and providing that argument as a returned value here. */ abstract Expr getAlgorithmArg(); @@ -16,7 +19,7 @@ abstract class OpenSSLOperation extends Crypto::OperationInstance instanceof Cal * Algorithm is specified in initialization call or is implicitly established by the key. */ override Crypto::AlgorithmValueConsumer getAnAlgorithmValueConsumer() { - AlgGetterToAlgConsumerFlow::flow(result.(OpenSSLAlgorithmValueConsumer).getResultNode(), + AlgGetterToArgFlow::flow(result.(OpenSSLAlgorithmValueConsumer).getResultNode(), DataFlow::exprNode(this.getAlgorithmArg())) } } @@ -79,17 +82,19 @@ abstract class EVPUpdate extends Call { /** * Flows from algorithm values to operations, specific to OpenSSL */ -private module AlgGetterToAlgConsumerConfig implements DataFlow::ConfigSig { +module AlgGetterToArgConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { exists(OpenSSLAlgorithmValueConsumer c | c.getResultNode() = source) } - predicate isSink(DataFlow::Node sink) { - exists(EVPOperation c | c.getAlgorithmArg() = sink.asExpr()) - } + /** + * Trace to any call accepting the algorithm. + * NOTE: users must restrict this set to the operations they are interested in. + */ + predicate isSink(DataFlow::Node sink) { exists(Call c | c.getAnArgument() = sink.asExpr()) } } -private module AlgGetterToAlgConsumerFlow = DataFlow::Global; +module AlgGetterToArgFlow = DataFlow::Global; /** * The base class for all operations of the EVP API. @@ -113,11 +118,6 @@ abstract class EVPOperation extends OpenSSLOperation { */ abstract Expr getOutputArg(); - /** - * Overwrite with an explicitly specified algorithm or leave base implementation to find it in the initialization call. - */ - override Expr getAlgorithmArg() { result = this.getInitCall().getAlgorithmArg() } - /** * Finds the initialization call, may be none. */ diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperations.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperations.qll index f6ff0dd1f07..78b8f8ce080 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperations.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperations.qll @@ -2,3 +2,5 @@ import OpenSSLOperationBase import EVPCipherOperation import EVPHashOperation import ECKeyGenOperation +import EVPSignatureOperation +import EVPKeyGenOperation diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/hash_input_sources.expected b/cpp/ql/test/experimental/library-tests/quantum/openssl/hash_input_sources.expected index 79ba1387a1e..2112252a3e2 100644 --- a/cpp/ql/test/experimental/library-tests/quantum/openssl/hash_input_sources.expected +++ b/cpp/ql/test/experimental/library-tests/quantum/openssl/hash_input_sources.expected @@ -1,2 +1,5 @@ | openssl_basic.c:124:13:124:30 | HashOperation | openssl_basic.c:120:37:120:43 | Message | openssl_basic.c:181:49:181:87 | Constant | | openssl_basic.c:144:13:144:22 | HashOperation | openssl_basic.c:144:24:144:30 | Message | openssl_basic.c:181:49:181:87 | Constant | +| openssl_signature.c:23:9:23:26 | HashOperation | openssl_signature.c:22:34:22:40 | Message | openssl_signature.c:602:37:602:77 | Constant | +| openssl_signature.c:23:9:23:26 | HashOperation | openssl_signature.c:22:34:22:40 | Message | openssl_signature.c:685:37:685:77 | Constant | +| openssl_signature.c:23:9:23:26 | HashOperation | openssl_signature.c:22:34:22:40 | Message | openssl_signature.c:741:37:741:77 | Constant | diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/hash_operations.expected b/cpp/ql/test/experimental/library-tests/quantum/openssl/hash_operations.expected index 247c4389bc1..89884b6c405 100644 --- a/cpp/ql/test/experimental/library-tests/quantum/openssl/hash_operations.expected +++ b/cpp/ql/test/experimental/library-tests/quantum/openssl/hash_operations.expected @@ -1,2 +1,4 @@ | openssl_basic.c:124:13:124:30 | HashOperation | openssl_basic.c:124:39:124:44 | Digest | openssl_basic.c:116:38:116:47 | HashAlgorithm | openssl_basic.c:120:37:120:43 | Message | | openssl_basic.c:144:13:144:22 | HashOperation | openssl_basic.c:144:46:144:51 | Digest | openssl_basic.c:144:67:144:73 | HashAlgorithm | openssl_basic.c:144:24:144:30 | Message | +| openssl_signature.c:23:9:23:26 | HashOperation | openssl_signature.c:23:36:23:41 | Digest | openssl_signature.c:684:24:684:33 | HashAlgorithm | openssl_signature.c:22:34:22:40 | Message | +| openssl_signature.c:23:9:23:26 | HashOperation | openssl_signature.c:23:36:23:41 | Digest | openssl_signature.c:740:24:740:33 | HashAlgorithm | openssl_signature.c:22:34:22:40 | Message | diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/keygen_key_sources.ql b/cpp/ql/test/experimental/library-tests/quantum/openssl/keygen_key_sources.ql new file mode 100644 index 00000000000..76c0ebf817f --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/openssl/keygen_key_sources.ql @@ -0,0 +1,7 @@ +import cpp +import experimental.quantum.Language +import experimental.quantum.OpenSSL.Operations.EVPKeyGenOperation + +from EVPKeyGenOperation keyGen, Crypto::KeyArtifactNode key +where keyGen = key.asElement().(Crypto::KeyArtifactOutputInstance).getCreator() +select keyGen, key, key.getAKnownAlgorithm() diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/keygen_operations.ql b/cpp/ql/test/experimental/library-tests/quantum/openssl/keygen_operations.ql new file mode 100644 index 00000000000..f7cbce152be --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/openssl/keygen_operations.ql @@ -0,0 +1,6 @@ +import cpp +import experimental.quantum.Language +import experimental.quantum.OpenSSL.Operations.EVPKeyGenOperation + +from Crypto::KeyGenerationOperationInstance n //KeyGenerationOperationNode n +select n, n.getOutputKeyArtifact(), n.getKeyArtifactOutputInstance() // , n.getAnAlgorithmOrGenericSource() diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/openssl_basic.c b/cpp/ql/test/experimental/library-tests/quantum/openssl/openssl_basic.c index ba6aa805c0b..f1ffbfa24d3 100644 --- a/cpp/ql/test/experimental/library-tests/quantum/openssl/openssl_basic.c +++ b/cpp/ql/test/experimental/library-tests/quantum/openssl/openssl_basic.c @@ -1,6 +1,6 @@ -#include "openssl/evp_stubs.h" -#include "openssl/alg_macro_stubs.h" -#include "openssl/rand_stubs.h" +#include "openssl/evp.h" +#include "openssl/obj_mac.h" +#include "openssl/rand.h" size_t strlen(const char* str); diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/openssl_pkey.c b/cpp/ql/test/experimental/library-tests/quantum/openssl/openssl_pkey.c new file mode 100644 index 00000000000..ba5e43bf33c --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/openssl/openssl_pkey.c @@ -0,0 +1,70 @@ + +#include +#include +#include +#include + +// #include +// #include +// #include +// #include +// #include +// #include + + +int generate_rsa_pkey() { + int key_length = 2048; + RSA *rsa = RSA_new(); + BIGNUM *bne = BN_new(); + BN_set_word(bne, RSA_F4); + + if (!RSA_generate_key_ex(rsa, key_length, bne, NULL)) { + return -1; + } + + // Save private key + FILE *priv_file = fopen("private_key.pem", "wb"); + PEM_write_RSAPrivateKey(priv_file, rsa, NULL, NULL, 0, NULL, NULL); + fclose(priv_file); + + // Save public key + FILE *pub_file = fopen("public_key.pem", "wb"); + PEM_write_RSA_PUBKEY(pub_file, rsa); + fclose(pub_file); + + RSA_free(rsa); + BN_free(bne); + + return 0; +} + + +int generate_evp_pkey() { + EVP_PKEY_CTX *ctx; + EVP_PKEY *pkey = NULL; + unsigned char *plaintext = (unsigned char *)"Hello, OpenSSL!"; + unsigned char encrypted[256]; + size_t encrypted_len; + + // Generate RSA key + ctx = EVP_PKEY_CTX_new_id(EVP_PKEY_RSA, NULL); + if (!ctx) return -1; + + if (EVP_PKEY_keygen_init(ctx) <= 0) return -1; + if (EVP_PKEY_CTX_set_rsa_keygen_bits(ctx, 2048) <= 0) return -1; + if (EVP_PKEY_keygen(ctx, &pkey) <= 0) return -1; + + EVP_PKEY_CTX_free(ctx); + + // Encrypt using the generated key + ctx = EVP_PKEY_CTX_new(pkey, NULL); + if (!ctx) handleErrors(); + + if (EVP_PKEY_encrypt_init(ctx) <= 0) return -1; + if (EVP_PKEY_encrypt(ctx, encrypted, &encrypted_len, plaintext, strlen((char *)plaintext)) <= 0) return -1; + + EVP_PKEY_CTX_free(ctx); + EVP_PKEY_free(pkey); + + return 0; +} diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/openssl_signature.c b/cpp/ql/test/experimental/library-tests/quantum/openssl/openssl_signature.c new file mode 100644 index 00000000000..f8be7441642 --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/openssl/openssl_signature.c @@ -0,0 +1,819 @@ +// #ifdef USE_REAL_HEADERS +#include +#include +#include +#include + +/* ============================================================================= + * UTILITY FUNCTIONS - Common operations shared across signature APIs + * ============================================================================= + */ + +/** + * Create message digest from raw message data + */ +static int create_digest(const unsigned char *message, size_t message_len, + const EVP_MD *md, unsigned char *digest, unsigned int *digest_len) { + EVP_MD_CTX *md_ctx = EVP_MD_CTX_new(); + int ret = 0; + + if (!md_ctx || + EVP_DigestInit_ex(md_ctx, md, NULL) != 1 || + EVP_DigestUpdate(md_ctx, message, message_len) != 1 || + EVP_DigestFinal_ex(md_ctx, digest, digest_len) != 1) { + goto cleanup; + } + ret = 1; + +cleanup: + EVP_MD_CTX_free(md_ctx); + return ret; +} + +/** + * Allocate signature buffer with appropriate size + */ +static unsigned char* allocate_signature_buffer(size_t *sig_len, const EVP_PKEY *pkey) { + *sig_len = EVP_PKEY_size(pkey); + return OPENSSL_malloc(*sig_len); +} + +/** + * Helper to extract key from EVP_PKEY + */ +static RSA* get_rsa_from_pkey(EVP_PKEY *pkey) { + return EVP_PKEY_get1_RSA(pkey); +} + +static DSA* get_dsa_from_pkey(EVP_PKEY *pkey) { + return EVP_PKEY_get1_DSA(pkey); +} + +/* ============================================================================= + * EVP_SIGN/VERIFY API - Legacy high-level API (older, simpler) + * ============================================================================= + */ + +/** + * Sign message using EVP_Sign API (legacy) + * Simple API with built-in hashing and signing + */ +int sign_using_evp_sign(const unsigned char *message, size_t message_len, + unsigned char **signature, size_t *signature_len, + EVP_PKEY *pkey, const EVP_MD *md) { + EVP_MD_CTX *md_ctx = NULL; + unsigned int sig_len = 0; + int ret = 0; + + if (!(md_ctx = EVP_MD_CTX_new()) || + EVP_SignInit(md_ctx, md) != 1 || + EVP_SignUpdate(md_ctx, message, message_len) != 1) { + goto cleanup; + } + + // more updates + EVP_SignUpdate(md_ctx, message+1, message_len-1); + + *signature = allocate_signature_buffer(signature_len, pkey); + if (!*signature) goto cleanup; + + if (EVP_SignFinal(md_ctx, *signature, &sig_len, pkey) == 1) { + *signature_len = sig_len; + ret = 1; + } else { + OPENSSL_free(*signature); + *signature = NULL; + } + +cleanup: + EVP_MD_CTX_free(md_ctx); + return ret; +} + +/** + * Verify signature using EVP_Verify API (legacy) + * Simple API with built-in hashing and verification + */ +int verify_using_evp_verify(const unsigned char *message, size_t message_len, + const unsigned char *signature, size_t signature_len, + EVP_PKEY *pkey, const EVP_MD *md) { + EVP_MD_CTX *md_ctx = NULL; + int ret = 0; + + if (!(md_ctx = EVP_MD_CTX_new()) || + EVP_VerifyInit(md_ctx, md) != 1 || + EVP_VerifyUpdate(md_ctx, message, message_len) != 1 || + EVP_VerifyUpdate(md_ctx, message+1, message_len-1) != 1 || + EVP_VerifyFinal(md_ctx, signature, (unsigned int)signature_len, pkey) != 1) { + goto cleanup; + } + ret = 1; + +cleanup: + EVP_MD_CTX_free(md_ctx); + return ret; +} + +/* ============================================================================= + * EVP_DIGESTSIGN/DIGESTVERIFY API - Modern recommended API + * ============================================================================= + */ + +/** + * Sign message using EVP_DigestSign API (recommended) + * Modern flexible API with better algorithm support + */ +int sign_using_evp_digestsign(const unsigned char *message, size_t message_len, + unsigned char **signature, size_t *signature_len, + EVP_PKEY *pkey, const EVP_MD *md) { + EVP_MD_CTX *md_ctx = NULL; + int ret = 0; + + if (!(md_ctx = EVP_MD_CTX_new()) || + EVP_DigestSignInit(md_ctx, NULL, md, NULL, pkey) != 1 || + EVP_DigestSignUpdate(md_ctx, message, message_len) != 1 || + EVP_DigestSignFinal(md_ctx, NULL, signature_len) != 1) { + goto cleanup; + } + + *signature = OPENSSL_malloc(*signature_len); + if (!*signature) goto cleanup; + + if (EVP_DigestSignFinal(md_ctx, *signature, signature_len) == 1) { + ret = 1; + } else { + OPENSSL_free(*signature); + *signature = NULL; + } + +cleanup: + EVP_MD_CTX_free(md_ctx); + return ret; +} + +/** + * Verify signature using EVP_DigestVerify API (recommended) + * Modern flexible API with better algorithm support + */ +int verify_using_evp_digestverify(const unsigned char *message, size_t message_len, + const unsigned char *signature, size_t signature_len, + EVP_PKEY *pkey, const EVP_MD *md) { + EVP_MD_CTX *md_ctx = NULL; + int ret = 0; + + if (!(md_ctx = EVP_MD_CTX_new()) || + EVP_DigestVerifyInit(md_ctx, NULL, md, NULL, pkey) != 1 || + EVP_DigestVerifyUpdate(md_ctx, message, message_len) != 1 || + EVP_DigestVerifyFinal(md_ctx, signature, signature_len) != 1) { + goto cleanup; + } + ret = 1; + +cleanup: + EVP_MD_CTX_free(md_ctx); + return ret; +} + +/** + * Sign with explicit PKEY_CTX for fine-grained parameter control + * Allows custom parameter settings (e.g., padding, salt length) + */ +int sign_using_digestsign_with_ctx(const unsigned char *message, size_t message_len, + unsigned char **signature, size_t *signature_len, + EVP_PKEY *pkey, const EVP_MD *md, + int (*param_setter)(EVP_PKEY_CTX *ctx)) { + EVP_MD_CTX *md_ctx = NULL; + EVP_PKEY_CTX *pkey_ctx = NULL; + int ret = 0; + + if (!(md_ctx = EVP_MD_CTX_new()) || + EVP_DigestSignInit(md_ctx, &pkey_ctx, md, NULL, pkey) != 1) { + goto cleanup; + } + + if (param_setter && param_setter(pkey_ctx) != 1) goto cleanup; + + if (EVP_DigestSignUpdate(md_ctx, message, message_len) != 1 || + EVP_DigestSignFinal(md_ctx, NULL, signature_len) != 1) { + goto cleanup; + } + + *signature = OPENSSL_malloc(*signature_len); + if (!*signature) goto cleanup; + + if (EVP_DigestSignFinal(md_ctx, *signature, signature_len) == 1) { + ret = 1; + } else { + OPENSSL_free(*signature); + *signature = NULL; + } + +cleanup: + EVP_MD_CTX_free(md_ctx); + return ret; +} + +/** + * Verify with explicit PKEY_CTX for fine-grained parameter control + */ +int verify_using_digestverify_with_ctx(const unsigned char *message, size_t message_len, + const unsigned char *signature, size_t signature_len, + EVP_PKEY *pkey, const EVP_MD *md, + int (*param_setter)(EVP_PKEY_CTX *ctx)) { + EVP_MD_CTX *md_ctx = NULL; + EVP_PKEY_CTX *pkey_ctx = NULL; + int ret = 0; + + if (!(md_ctx = EVP_MD_CTX_new()) || + EVP_DigestVerifyInit(md_ctx, &pkey_ctx, md, NULL, pkey) != 1) { + goto cleanup; + } + + if (param_setter && param_setter(pkey_ctx) != 1) goto cleanup; + + if (EVP_DigestVerifyUpdate(md_ctx, message, message_len) != 1 || + EVP_DigestVerifyFinal(md_ctx, signature, signature_len) != 1) { + goto cleanup; + } + ret = 1; + +cleanup: + EVP_MD_CTX_free(md_ctx); + return ret; +} + +/* ============================================================================= + * EVP_PKEY_SIGN/VERIFY API - Lower level API with pre-hashed input + * ============================================================================= + */ + +/** + * Sign pre-hashed digest using EVP_PKEY_sign API + * Lower-level API requiring pre-computed digest + */ +int sign_using_evp_pkey_sign(const unsigned char *digest, size_t digest_len, + unsigned char **signature, size_t *signature_len, + EVP_PKEY *pkey, const EVP_MD *md) { + EVP_PKEY_CTX *pkey_ctx = NULL; + int ret = 0; + + if (!(pkey_ctx = EVP_PKEY_CTX_new(pkey, NULL)) || + EVP_PKEY_sign_init(pkey_ctx) != 1 || + EVP_PKEY_CTX_set_signature_md(pkey_ctx, md) != 1 || + EVP_PKEY_sign(pkey_ctx, NULL, signature_len, digest, digest_len) != 1) { + goto cleanup; + } + + *signature = OPENSSL_malloc(*signature_len); + if (!*signature) goto cleanup; + + if (EVP_PKEY_sign(pkey_ctx, *signature, signature_len, digest, digest_len) == 1) { + ret = 1; + } else { + OPENSSL_free(*signature); + *signature = NULL; + } + +cleanup: + EVP_PKEY_CTX_free(pkey_ctx); + return ret; +} + +/** + * Verify pre-hashed digest using EVP_PKEY_verify API + * Lower-level API requiring pre-computed digest + */ +int verify_using_evp_pkey_verify(const unsigned char *digest, size_t digest_len, + const unsigned char *signature, size_t signature_len, + EVP_PKEY *pkey, const EVP_MD *md) { + EVP_PKEY_CTX *pkey_ctx = NULL; + int ret = 0; + + if (!(pkey_ctx = EVP_PKEY_CTX_new(pkey, NULL)) || + EVP_PKEY_verify_init(pkey_ctx) != 1 || + EVP_PKEY_CTX_set_signature_md(pkey_ctx, md) != 1 || + EVP_PKEY_verify(pkey_ctx, signature, signature_len, digest, digest_len) != 1) { + goto cleanup; + } + ret = 1; + +cleanup: + EVP_PKEY_CTX_free(pkey_ctx); + return ret; +} + +/* ============================================================================= + * EVP_PKEY_SIGN_MESSAGE API - Streamlined message signing + * ============================================================================= + */ + +/** + * Sign message using EVP_PKEY_sign_message API + * Streamlined interface for direct message signing + */ +int sign_using_evp_pkey_sign_message(const unsigned char *message, size_t message_len, + unsigned char **signature, size_t *signature_len, + EVP_PKEY *pkey, const EVP_MD *md, const char *alg_name) { + EVP_PKEY_CTX *pkey_ctx = NULL; + EVP_SIGNATURE *alg = NULL; + int ret = 0; + + if (!(pkey_ctx = EVP_PKEY_CTX_new(pkey, NULL))) goto cleanup; + + alg = EVP_SIGNATURE_fetch(NULL, alg_name, NULL); + + if (EVP_PKEY_sign_message_init(pkey_ctx, alg, NULL) != 1 || + EVP_PKEY_sign_message_update(pkey_ctx, message, message_len) != 1 || + EVP_PKEY_sign_message_final(pkey_ctx, NULL, signature_len) != 1) { + goto cleanup; + } + + *signature = OPENSSL_malloc(*signature_len); + if (!*signature) goto cleanup; + + if (EVP_PKEY_sign_message_final(pkey_ctx, *signature, signature_len) == 1) { + ret = 1; + } else { + OPENSSL_free(*signature); + *signature = NULL; + } + +cleanup: + EVP_PKEY_CTX_free(pkey_ctx); + return ret; +} + +/** + * Verify message using EVP_PKEY_verify_message API + * Streamlined interface for direct message verification + */ +int verify_using_evp_pkey_verify_message(const unsigned char *message, size_t message_len, + const unsigned char *signature, size_t signature_len, + EVP_PKEY *pkey, const EVP_MD *md, const char *alg_name) { + EVP_PKEY_CTX *pkey_ctx = NULL; + EVP_SIGNATURE *alg = NULL; + int ret = 0; + + if (!(pkey_ctx = EVP_PKEY_CTX_new(pkey, NULL))) goto cleanup; + + alg = EVP_SIGNATURE_fetch(NULL, alg_name, NULL); + + if (EVP_PKEY_verify_message_init(pkey_ctx, alg, NULL) != 1) goto cleanup; + + EVP_PKEY_CTX_set_signature(pkey_ctx, signature, signature_len); + + if (EVP_PKEY_verify_message_update(pkey_ctx, message, message_len) != 1 || + EVP_PKEY_verify_message_final(pkey_ctx) != 1) { + goto cleanup; + } + ret = 1; + +cleanup: + EVP_PKEY_CTX_free(pkey_ctx); + return ret; +} + +/* ============================================================================= + * LOW-LEVEL RSA API - Algorithm-specific functions (deprecated) + * ============================================================================= + */ + +/** + * Sign using low-level RSA_sign API (deprecated, RSA-only) + * Direct RSA signing with manual digest computation + */ +int sign_using_rsa_sign(const unsigned char *message, size_t message_len, + unsigned char **signature, size_t *signature_len, + RSA *rsa_key, int hash_nid, const EVP_MD *md) { + unsigned char digest[EVP_MAX_MD_SIZE]; + unsigned int digest_len; + int ret = 0; + + if (!create_digest(message, message_len, md, digest, &digest_len)) return 0; + + *signature_len = RSA_size(rsa_key); + *signature = OPENSSL_malloc(*signature_len); + if (!*signature) return 0; + + if (RSA_sign(hash_nid, digest, digest_len, *signature, + (unsigned int*)signature_len, rsa_key) == 1) { + ret = 1; + } else { + OPENSSL_free(*signature); + *signature = NULL; + } + + return ret; +} + +/** + * Verify using low-level RSA_verify API (deprecated, RSA-only) + * Direct RSA verification with manual digest computation + */ +int verify_using_rsa_verify(const unsigned char *message, size_t message_len, + const unsigned char *signature, size_t signature_len, + RSA *rsa_key, int hash_nid, const EVP_MD *md) { + unsigned char digest[EVP_MAX_MD_SIZE]; + unsigned int digest_len; + + if (!create_digest(message, message_len, md, digest, &digest_len)) return 0; + + return RSA_verify(hash_nid, digest, digest_len, signature, + (unsigned int)signature_len, rsa_key); +} + +/* ============================================================================= + * LOW-LEVEL DSA API - Algorithm-specific functions (deprecated) + * ============================================================================= + */ + +/** + * Sign using low-level DSA_do_sign API (deprecated, DSA-only) + * Direct DSA signing with manual digest and signature encoding + */ +int sign_using_dsa_sign(const unsigned char *message, size_t message_len, + unsigned char **signature, size_t *signature_len, + DSA *dsa_key, const EVP_MD *md) { + unsigned char digest[EVP_MAX_MD_SIZE]; + unsigned int digest_len; + DSA_SIG *sig = NULL; + const BIGNUM *r = NULL, *s = NULL; + unsigned int bn_len; + int ret = 0; + + if (!create_digest(message, message_len, md, digest, &digest_len)) return 0; + + sig = DSA_do_sign(digest, digest_len, dsa_key); + if (!sig) return 0; + + DSA_SIG_get0(sig, &r, &s); + if (!r || !s) goto cleanup; + + bn_len = DSA_size(dsa_key) / 2; + *signature_len = DSA_size(dsa_key); + *signature = OPENSSL_malloc(*signature_len); + if (!*signature) goto cleanup; + + memset(*signature, 0, *signature_len); + + if (BN_bn2bin(r, *signature + (bn_len - BN_num_bytes(r))) > 0 && + BN_bn2bin(s, *signature + bn_len + (bn_len - BN_num_bytes(s))) > 0) { + ret = 1; + } else { + OPENSSL_free(*signature); + *signature = NULL; + } + +cleanup: + DSA_SIG_free(sig); + return ret; +} + +/** + * Verify using low-level DSA_do_verify API (deprecated, DSA-only) + * Direct DSA verification with manual digest and signature decoding + */ +int verify_using_dsa_verify(const unsigned char *message, size_t message_len, + const unsigned char *signature, size_t signature_len, + DSA *dsa_key, const EVP_MD *md) { + unsigned char digest[EVP_MAX_MD_SIZE]; + unsigned int digest_len; + DSA_SIG *sig = NULL; + BIGNUM *r = NULL, *s = NULL; + unsigned int bn_len; + int ret = 0; + + if (!create_digest(message, message_len, md, digest, &digest_len)) return 0; + + sig = DSA_SIG_new(); + if (!sig) return 0; + + r = BN_new(); + s = BN_new(); + if (!r || !s) goto cleanup; + + bn_len = DSA_size(dsa_key) / 2; + + if (BN_bin2bn(signature, bn_len, r) && + BN_bin2bn(signature + bn_len, bn_len, s) && + DSA_SIG_set0(sig, r, s) == 1) { + /* r and s are now owned by sig */ + r = s = NULL; + ret = DSA_do_verify(digest, digest_len, sig, dsa_key); + } + +cleanup: + DSA_SIG_free(sig); + BN_free(r); + BN_free(s); + return (ret == 1); +} + +/* ============================================================================= + * PARAMETER SETTERS - Helper functions for algorithm configuration + * ============================================================================= + */ + +/** + * Set RSA PSS padding mode + */ +int set_rsa_pss_padding(EVP_PKEY_CTX *ctx) { + return EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_PSS_PADDING); +} + +/** + * No-op parameter setter for default behavior + */ +int no_parameter_setter(EVP_PKEY_CTX *ctx) { + return 1; +} + +/* ============================================================================= + * KEY GENERATION HELPERS + * ============================================================================= + */ + +/** + * Generate RSA key pair for testing + */ +static EVP_PKEY* generate_rsa_key(void) { + EVP_PKEY_CTX *key_ctx = NULL; + EVP_PKEY *key = NULL; + + key_ctx = EVP_PKEY_CTX_new_id(EVP_PKEY_RSA, NULL); + if (!key_ctx) return NULL; + + if (EVP_PKEY_keygen_init(key_ctx) <= 0 || + EVP_PKEY_CTX_set_rsa_keygen_bits(key_ctx, 2048) <= 0 || + EVP_PKEY_keygen(key_ctx, &key) <= 0) { + EVP_PKEY_free(key); + key = NULL; + } + + EVP_PKEY_CTX_free(key_ctx); + return key; +} + +/** + * Generate DSA key pair for testing + */ +static EVP_PKEY* generate_dsa_key(void) { + EVP_PKEY_CTX *param_ctx = NULL, *key_ctx = NULL; + EVP_PKEY *params = NULL, *key = NULL; + + /* Generate parameters first */ + param_ctx = EVP_PKEY_CTX_new_from_name(NULL, "dsa", NULL); + if (!param_ctx) return NULL; + + if (EVP_PKEY_paramgen_init(param_ctx) <= 0 || + EVP_PKEY_CTX_set_dsa_paramgen_bits(param_ctx, 2048) <= 0 || + EVP_PKEY_paramgen(param_ctx, ¶ms) <= 0) { + goto cleanup; + } + + /* Generate key using parameters */ + key_ctx = EVP_PKEY_CTX_new(params, NULL); + if (!key_ctx || + EVP_PKEY_keygen_init(key_ctx) <= 0 || + EVP_PKEY_keygen(key_ctx, &key) <= 0) { + EVP_PKEY_free(key); + key = NULL; + } + +cleanup: + EVP_PKEY_CTX_free(param_ctx); + EVP_PKEY_CTX_free(key_ctx); + EVP_PKEY_free(params); + return key; +} + +/* ============================================================================= + * TEST FUNCTIONS - Comprehensive API testing + * ============================================================================= + */ + +/** + * Test all signature APIs with a given key and algorithm + * Demonstrates the 6 different signature API approaches + */ +int test_signature_apis(EVP_PKEY *key, const EVP_MD *md, + int (*param_setter)(EVP_PKEY_CTX *ctx), + const char *algo_name) { + const unsigned char message[] = "Test message for OpenSSL signature APIs"; + const size_t message_len = strlen((char *)message); + + unsigned char *sig1 = NULL, *sig2 = NULL, *sig3 = NULL, + *sig4 = NULL, *sig6 = NULL; + size_t sig_len1 = 0, sig_len2 = 0, sig_len3 = 0, sig_len4 = 0, sig_len6 = 0; + + unsigned char digest[EVP_MAX_MD_SIZE]; + unsigned int digest_len; + int success = 1; + + printf("\nTesting signature APIs with %s:\n", algo_name); + + /* Test 1: EVP_Sign API */ + printf("1. EVP_Sign API: "); + if (sign_using_evp_sign(message, message_len, &sig1, &sig_len1, key, md) && + verify_using_evp_verify(message, message_len, sig1, sig_len1, key, md)) { + printf("PASS\n"); + } else { + printf("FAIL\n"); + success = 0; + } + + /* Test 2: EVP_DigestSign API */ + printf("2. EVP_DigestSign API: "); + if (sign_using_evp_digestsign(message, message_len, &sig2, &sig_len2, key, md) && + verify_using_evp_digestverify(message, message_len, sig2, sig_len2, key, md)) { + printf("PASS\n"); + } else { + printf("FAIL\n"); + success = 0; + } + + /* Test 3: EVP_PKEY_sign API (requires pre-hashed input) */ + printf("3. EVP_PKEY_sign API: "); + if (create_digest(message, message_len, md, digest, &digest_len) && + sign_using_evp_pkey_sign(digest, digest_len, &sig3, &sig_len3, key, md) && + verify_using_evp_pkey_verify(digest, digest_len, sig3, sig_len3, key, md)) { + printf("PASS\n"); + } else { + printf("FAIL\n"); + success = 0; + } + + /* Test 4: EVP_DigestSign with explicit PKEY_CTX */ + printf("4. EVP_DigestSign with explicit PKEY_CTX: "); + if (sign_using_digestsign_with_ctx(message, message_len, &sig4, &sig_len4, + key, md, param_setter) && + verify_using_digestverify_with_ctx(message, message_len, sig4, sig_len4, + key, md, param_setter)) { + printf("PASS\n"); + } else { + printf("FAIL\n"); + success = 0; + } + + /* Test 6: EVP_PKEY_sign_message API */ + printf("6. EVP_PKEY_sign_message API: "); + if (sign_using_evp_pkey_sign_message(message, message_len, &sig6, &sig_len6, key, md, algo_name) && + verify_using_evp_pkey_verify_message(message, message_len, sig6, sig_len6, key, md, algo_name)) { + printf("PASS\n"); + } else { + printf("FAIL\n"); + success = 0; + } + + /* Cleanup */ + OPENSSL_free(sig1); + OPENSSL_free(sig2); + OPENSSL_free(sig3); + OPENSSL_free(sig4); + OPENSSL_free(sig6); + + return success; +} + +/** + * Test RSA-specific signature APIs including low-level RSA functions + */ +int test_signature_apis_rsa(void) { + EVP_PKEY *key = NULL; + RSA *rsa_key = NULL; + const EVP_MD *md = EVP_sha256(); + const unsigned char message[] = "Test message for OpenSSL signature APIs"; + const size_t message_len = strlen((char *)message); + unsigned char *sig5 = NULL; + size_t sig_len5 = 0; + int success = 1; + + printf("\nGenerating RSA key pair...\n"); + key = generate_rsa_key(); + if (!key) return 0; + + rsa_key = get_rsa_from_pkey(key); + if (!rsa_key) { + EVP_PKEY_free(key); + return 0; + } + + /* Test generic APIs */ + if (!test_signature_apis(key, md, set_rsa_pss_padding, "RSA-SHA256")) { + success = 0; + } + + /* Test 5: Low-level RSA API */ + printf("5. Low-level RSA API: "); + if (sign_using_rsa_sign(message, message_len, &sig5, &sig_len5, + rsa_key, NID_sha256, md) && + verify_using_rsa_verify(message, message_len, sig5, sig_len5, + rsa_key, NID_sha256, md)) { + printf("PASS\n"); + } else { + printf("FAIL\n"); + success = 0; + } + + printf("\nRSA API Summary:\n"); + printf("1. EVP_Sign API: Legacy, simple\n"); + printf("2. EVP_DigestSign API: Modern, recommended\n"); + printf("3. EVP_PKEY_sign API: Lower-level, pre-hashed input\n"); + printf("4. EVP_DigestSign with PKEY_CTX: Fine-grained control\n"); + printf("5. Low-level RSA API: Deprecated, algorithm-specific\n"); + printf("6. EVP_PKEY_sign_message API: Streamlined message signing\n"); + + /* Cleanup */ + OPENSSL_free(sig5); + RSA_free(rsa_key); + EVP_PKEY_free(key); + + return success; +} + +/** + * Test DSA-specific signature APIs including low-level DSA functions + */ +int test_signature_apis_dsa(void) { + EVP_PKEY *key = NULL; + DSA *dsa_key = NULL; + const EVP_MD *md = EVP_sha256(); + const unsigned char message[] = "Test message for OpenSSL signature APIs"; + const size_t message_len = strlen((char *)message); + unsigned char *sig5 = NULL; + size_t sig_len5 = 0; + int success = 1; + + printf("\nGenerating DSA key pair...\n"); + key = generate_dsa_key(); + if (!key) return 0; + + dsa_key = get_dsa_from_pkey(key); + if (!dsa_key) { + EVP_PKEY_free(key); + return 0; + } + + /* Test generic APIs */ + if (!test_signature_apis(key, md, no_parameter_setter, "dsa")) { + success = 0; + } + + /* Test 5: Low-level DSA API */ + printf("5. Low-level DSA API: "); + if (sign_using_dsa_sign(message, message_len, &sig5, &sig_len5, dsa_key, md) && + verify_using_dsa_verify(message, message_len, sig5, sig_len5, dsa_key, md)) { + printf("PASS\n"); + } else { + printf("FAIL\n"); + success = 0; + } + + printf("\nDSA API Summary:\n"); + printf("1. EVP_Sign API: Legacy, simple\n"); + printf("2. EVP_DigestSign API: Modern, recommended\n"); + printf("3. EVP_PKEY_sign API: Lower-level, pre-hashed input\n"); + printf("4. EVP_DigestSign with PKEY_CTX: Fine-grained control\n"); + printf("5. Low-level DSA API: Deprecated, algorithm-specific\n"); + printf("6. EVP_PKEY_sign_message API: Streamlined message signing\n"); + + /* Cleanup */ + OPENSSL_free(sig5); + EVP_PKEY_free(key); + + return success; +} + +/* ============================================================================= + * MAIN FUNCTION - Entry point for testing all signature APIs + * ============================================================================= + */ + +// /** +// * Main function demonstrating all OpenSSL signature APIs +// * Tests both RSA and DSA algorithms with all 6 API approaches +// */ +// int main(void) { +// /* Initialize OpenSSL */ +// OpenSSL_add_all_algorithms(); +// ERR_load_crypto_strings(); + +// printf("=================================================================\n"); +// printf("OpenSSL Signature API Demonstration\n"); +// printf("=================================================================\n"); + +// printf("\n-------- TESTING RSA SIGNATURES --------\n"); +// int rsa_result = test_signature_apis_rsa(); + +// printf("\n-------- TESTING DSA SIGNATURES --------\n"); +// int dsa_result = test_signature_apis_dsa(); + +// printf("\n=================================================================\n"); +// if (rsa_result && dsa_result) { +// printf("All tests completed successfully.\n"); +// return 0; +// } else { +// printf("Some tests failed.\n"); +// return 1; +// } +// } \ No newline at end of file diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/signature_algorithms.ql b/cpp/ql/test/experimental/library-tests/quantum/openssl/signature_algorithms.ql new file mode 100644 index 00000000000..113fba415c9 --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/openssl/signature_algorithms.ql @@ -0,0 +1,6 @@ +import cpp +import experimental.quantum.Language +import experimental.quantum.OpenSSL.AlgorithmInstances.SignatureAlgorithmInstance + +from KnownOpenSSLSignatureConstantAlgorithmInstance algoInstance +select algoInstance, algoInstance.getAlgorithmType(), algoInstance.getAVC() diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/signature_key_sources.ql b/cpp/ql/test/experimental/library-tests/quantum/openssl/signature_key_sources.ql new file mode 100644 index 00000000000..e622ad8d84a --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/openssl/signature_key_sources.ql @@ -0,0 +1,6 @@ +import cpp +import experimental.quantum.Language + +from Crypto::SignatureOperationNode op, Crypto::KeyArtifactNode key +where op.getAKey() = key +select op, key diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/signature_message_sources.ql b/cpp/ql/test/experimental/library-tests/quantum/openssl/signature_message_sources.ql new file mode 100644 index 00000000000..904cfdf1d9b --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/openssl/signature_message_sources.ql @@ -0,0 +1,6 @@ +import cpp +import experimental.quantum.Language + +from Crypto::SignatureOperationNode n, Crypto::MessageArtifactNode m +where n.getAnInputArtifact() = m +select n, m, m.getSourceNode() diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/signature_operations.ql b/cpp/ql/test/experimental/library-tests/quantum/openssl/signature_operations.ql new file mode 100644 index 00000000000..4cadbc03241 --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/openssl/signature_operations.ql @@ -0,0 +1,6 @@ +import cpp +import experimental.quantum.Language + +from Crypto::SignatureOperationNode n +select n, n.getAnInputArtifact(), n.getAnOutputArtifact(), n.getAKey(), + n.getAnAlgorithmOrGenericSource(), n.getKeyOperationSubtype() diff --git a/cpp/ql/test/experimental/stubs/openssl/dsa.h b/cpp/ql/test/experimental/stubs/openssl/dsa.h new file mode 100644 index 00000000000..ceda764a368 --- /dev/null +++ b/cpp/ql/test/experimental/stubs/openssl/dsa.h @@ -0,0 +1,78 @@ +/* + * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +# pragma once +# include "type_stubs.h" + +/* + * DSA Paramgen types + * Note, adding to this list requires adjustments to various checks + * in dsa_gen range validation checks + */ +#define DSA_PARAMGEN_TYPE_FIPS_186_4 0 /* Use FIPS186-4 standard */ +#define DSA_PARAMGEN_TYPE_FIPS_186_2 1 /* Use legacy FIPS186-2 standard */ +#define DSA_PARAMGEN_TYPE_FIPS_DEFAULT 2 + +DSA *ossl_dsa_new(OSSL_LIB_CTX *libctx); +void ossl_dsa_set0_libctx(DSA *d, OSSL_LIB_CTX *libctx); + +int ossl_dsa_generate_ffc_parameters(DSA *dsa, int type, int pbits, int qbits, + BN_GENCB *cb); + +int ossl_dsa_sign_int(int type, const unsigned char *dgst, int dlen, + unsigned char *sig, unsigned int *siglen, DSA *dsa, + unsigned int nonce_type, const char *digestname, + OSSL_LIB_CTX *libctx, const char *propq); + +FFC_PARAMS *ossl_dsa_get0_params(DSA *dsa); +int ossl_dsa_ffc_params_fromdata(DSA *dsa, const OSSL_PARAM params[]); +int ossl_dsa_key_fromdata(DSA *dsa, const OSSL_PARAM params[], + int include_private); +DSA *ossl_dsa_key_from_pkcs8(const PKCS8_PRIV_KEY_INFO *p8inf, + OSSL_LIB_CTX *libctx, const char *propq); + +int ossl_dsa_generate_public_key(BN_CTX *ctx, const DSA *dsa, + const BIGNUM *priv_key, BIGNUM *pub_key); +int ossl_dsa_check_params(const DSA *dsa, int checktype, int *ret); +int ossl_dsa_check_pub_key(const DSA *dsa, const BIGNUM *pub_key, int *ret); +int ossl_dsa_check_pub_key_partial(const DSA *dsa, const BIGNUM *pub_key, + int *ret); +int ossl_dsa_check_priv_key(const DSA *dsa, const BIGNUM *priv_key, int *ret); +int ossl_dsa_check_pairwise(const DSA *dsa); +int ossl_dsa_is_foreign(const DSA *dsa); +DSA *ossl_dsa_dup(const DSA *dsa, int selection); + + +int EVP_PKEY_CTX_set_dsa_paramgen_bits(EVP_PKEY_CTX *ctx, int nbits); +int EVP_PKEY_CTX_set_dsa_paramgen_q_bits(EVP_PKEY_CTX *ctx, int qbits); +int EVP_PKEY_CTX_set_dsa_paramgen_md_props(EVP_PKEY_CTX *ctx, + const char *md_name, + const char *md_properties); +int EVP_PKEY_CTX_set_dsa_paramgen_gindex(EVP_PKEY_CTX *ctx, int gindex); +int EVP_PKEY_CTX_set_dsa_paramgen_type(EVP_PKEY_CTX *ctx, const char *name); +int EVP_PKEY_CTX_set_dsa_paramgen_seed(EVP_PKEY_CTX *ctx, + const unsigned char *seed, + size_t seedlen); +int EVP_PKEY_CTX_set_dsa_paramgen_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); + +# define EVP_PKEY_CTRL_DSA_PARAMGEN_BITS (EVP_PKEY_ALG_CTRL + 1) +# define EVP_PKEY_CTRL_DSA_PARAMGEN_Q_BITS (EVP_PKEY_ALG_CTRL + 2) +# define EVP_PKEY_CTRL_DSA_PARAMGEN_MD (EVP_PKEY_ALG_CTRL + 3) + + +# define OPENSSL_DSA_MAX_MODULUS_BITS 10000 + +# define OPENSSL_DSA_FIPS_MIN_MODULUS_BITS 1024 + +typedef int DSA_SIG; +DSA_SIG *DSA_SIG_new(void); +void DSA_SIG_free(DSA_SIG *a); + +void DSA_SIG_get0(const DSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps); +int DSA_SIG_set0(DSA_SIG *sig, BIGNUM *r, BIGNUM *s); diff --git a/cpp/ql/test/experimental/stubs/openssl/evp_stubs.h b/cpp/ql/test/experimental/stubs/openssl/evp.h similarity index 88% rename from cpp/ql/test/experimental/stubs/openssl/evp_stubs.h rename to cpp/ql/test/experimental/stubs/openssl/evp.h index 4bc1af0b15d..cd519434374 100644 --- a/cpp/ql/test/experimental/stubs/openssl/evp_stubs.h +++ b/cpp/ql/test/experimental/stubs/openssl/evp.h @@ -1,9 +1,22 @@ +#include "type_stubs.h" #ifndef OSSL_EVP_H #define OSSL_EVP_H -// Common defines and integer types. -#define NULL 0 +# define EVP_MAX_MD_SIZE 64/* longest known is SHA512 */ +# define EVP_MAX_KEY_LENGTH 64 +# define EVP_MAX_IV_LENGTH 16 +# define EVP_MAX_BLOCK_LENGTH 32 +# define EVP_MAX_AEAD_TAG_LENGTH 16 + +/* Maximum pipes in cipher pipelining */ +# define EVP_MAX_PIPES 32 + +# define PKCS5_SALT_LEN 8 +/* Default PKCS#5 iteration count */ +# define PKCS5_DEFAULT_ITER 2048 + +// Common defines and integer types. # define EVP_CTRL_INIT 0x0 # define EVP_CTRL_SET_KEY_LENGTH 0x1 # define EVP_CTRL_GET_RC2_KEY_BITS 0x2 @@ -29,645 +42,6 @@ # define EVP_CTRL_CCM_SET_L 0x14 # define EVP_CTRL_CCM_SET_MSGLEN 0x15 -typedef unsigned long size_t; - -typedef unsigned char uint8_t; -typedef unsigned int uint32_t; -typedef unsigned long long uint64_t; - -// Type aliases. -typedef int OSSL_PROVIDER; - -typedef int OSSL_FUNC_keymgmt_import_fn; - -typedef int OSSL_FUNC_digest_get_ctx_params_fn; - -typedef int OSSL_FUNC_cipher_settable_ctx_params_fn; - -typedef int ASN1_STRING; - -typedef int OSSL_FUNC_mac_set_ctx_params_fn; - -typedef int OSSL_FUNC_signature_digest_verify_update_fn; - -typedef int OSSL_FUNC_provider_get_reason_strings_fn; - -typedef int OSSL_FUNC_core_get_params_fn; - -typedef int OSSL_FUNC_rand_get_seed_fn; - -typedef int OSSL_FUNC_rand_instantiate_fn; - -typedef int OSSL_FUNC_keymgmt_gen_get_params_fn; - -typedef int EVP_PKEY_gen_cb; - -typedef int OSSL_FUNC_provider_unquery_operation_fn; - -typedef int OSSL_FUNC_cleanup_user_entropy_fn; - -typedef int OSSL_FUNC_asym_cipher_decrypt_fn; - -typedef int OSSL_FUNC_cipher_pipeline_decrypt_init_fn; - -typedef int X509_PUBKEY; - -typedef int OSSL_FUNC_BIO_puts_fn; - -typedef int OSSL_FUNC_signature_verify_fn; - -typedef int OSSL_FUNC_encoder_gettable_params_fn; - -typedef int OSSL_FUNC_keymgmt_validate_fn; - -typedef int EVP_PBE_KEYGEN_EX; - -typedef int OSSL_FUNC_keyexch_dupctx_fn; - -typedef int OSSL_FUNC_kdf_newctx_fn; - -typedef int OSSL_FUNC_signature_digest_verify_final_fn; - -typedef int OSSL_FUNC_signature_set_ctx_params_fn; - -typedef int OSSL_FUNC_rand_reseed_fn; - -typedef int OSSL_FUNC_SSL_QUIC_TLS_crypto_release_rcd_fn; - -typedef int OSSL_FUNC_store_open_fn; - -typedef int OSSL_FUNC_encoder_newctx_fn; - -typedef int EVP_KEYMGMT; - -typedef int OSSL_FUNC_core_vset_error_fn; - -typedef int EVP_KEYEXCH; - -typedef int OSSL_FUNC_signature_gettable_ctx_md_params_fn; - -typedef int OSSL_FUNC_CRYPTO_secure_free_fn; - -typedef int OSSL_FUNC_keymgmt_import_types_fn; - -typedef int OSSL_FUNC_signature_sign_message_update_fn; - -typedef int OSSL_FUNC_keymgmt_gen_gettable_params_fn; - -typedef int OSSL_FUNC_cipher_update_fn; - -typedef int OSSL_FUNC_mac_newctx_fn; - -typedef int OSSL_FUNC_keymgmt_set_params_fn; - -typedef int X509_ALGOR; - -typedef int OSSL_FUNC_signature_get_ctx_params_fn; - -typedef int ASN1_ITEM; - -typedef int EVP_SIGNATURE; - -typedef int OSSL_FUNC_CRYPTO_realloc_fn; - -typedef int OSSL_FUNC_BIO_new_file_fn; - -typedef int OSSL_FUNC_signature_sign_message_final_fn; - -typedef int OSSL_FUNC_cipher_newctx_fn; - -typedef int OSSL_FUNC_rand_nonce_fn; - -typedef int EVP_MD; - -typedef int OSSL_FUNC_kdf_reset_fn; - -typedef int OSSL_FUNC_keyexch_settable_ctx_params_fn; - -typedef int OSSL_FUNC_store_export_object_fn; - -typedef int OSSL_FUNC_CRYPTO_secure_allocated_fn; - -typedef int OSSL_FUNC_cipher_pipeline_update_fn; - -typedef int OSSL_FUNC_keyexch_freectx_fn; - -typedef int OSSL_FUNC_kdf_gettable_params_fn; - -typedef int OSSL_FUNC_rand_set_ctx_params_fn; - -typedef int OSSL_FUNC_signature_verify_message_init_fn; - -typedef int OSSL_FUNC_keymgmt_free_fn; - -typedef int OSSL_FUNC_rand_gettable_ctx_params_fn; - -typedef int OSSL_FUNC_signature_digest_sign_update_fn; - -typedef int OSSL_FUNC_keymgmt_has_fn; - -typedef int OSSL_FUNC_kdf_get_ctx_params_fn; - -typedef int OSSL_FUNC_provider_get0_dispatch_fn; - -typedef int OSSL_FUNC_signature_verify_message_update_fn; - -typedef int OSSL_FUNC_rand_lock_fn; - -typedef int EVP_KEM; - -typedef int OSSL_FUNC_BIO_read_ex_fn; - -typedef int X509_SIG_INFO; - -typedef int OSSL_FUNC_keymgmt_import_types_ex_fn; - -typedef int OSSL_FUNC_encoder_free_object_fn; - -typedef int OSSL_FUNC_asym_cipher_decrypt_init_fn; - -typedef int OSSL_FUNC_SSL_QUIC_TLS_alert_fn; - -typedef int OSSL_FUNC_cipher_get_params_fn; - -typedef int OSSL_FUNC_get_nonce_fn; - -typedef int ASN1_OBJECT; - -typedef int OSSL_LIB_CTX; - -typedef int OSSL_FUNC_keymgmt_gen_set_params_fn; - -typedef int OSSL_FUNC_provider_deregister_child_cb_fn; - -typedef int OSSL_PARAM; - -typedef int OSSL_FUNC_decoder_gettable_params_fn; - -typedef int OSSL_FUNC_cipher_pipeline_final_fn; - -typedef int OSSL_FUNC_signature_freectx_fn; - -typedef int EVP_PKEY_METHOD; - -typedef int OSSL_FUNC_CRYPTO_zalloc_fn; - -typedef int OSSL_FUNC_keymgmt_query_operation_name_fn; - -typedef int OSSL_FUNC_core_set_error_mark_fn; - -typedef int OSSL_FUNC_asym_cipher_gettable_ctx_params_fn; - -typedef int OSSL_FUNC_CRYPTO_free_fn; - -typedef int OSSL_FUNC_indicator_cb_fn; - -typedef int OSSL_FUNC_kdf_freectx_fn; - -typedef int ENGINE; - -typedef int EVP_PKEY; - -typedef int PKCS8_PRIV_KEY_INFO; - -typedef int OSSL_FUNC_signature_digest_verify_fn; - -typedef int OSSL_FUNC_mac_final_fn; - -typedef int OSSL_FUNC_core_pop_error_to_mark_fn; - -typedef int OSSL_FUNC_signature_verify_recover_fn; - -typedef int OSSL_FUNC_keymgmt_gen_settable_params_fn; - -typedef int OSSL_FUNC_provider_self_test_fn; - -typedef int OSSL_FUNC_digest_gettable_params_fn; - -typedef int OSSL_FUNC_CRYPTO_secure_malloc_fn; - -typedef int OSSL_FUNC_keymgmt_get_params_fn; - -typedef int OSSL_FUNC_mac_freectx_fn; - -typedef int OSSL_FUNC_cleanup_user_nonce_fn; - -typedef int EVP_SKEYMGMT; - -typedef int OSSL_FUNC_core_set_error_debug_fn; - -typedef int OSSL_FUNC_cipher_decrypt_skey_init_fn; - -typedef int OSSL_FUNC_BIO_new_membuf_fn; - -typedef int OSSL_FUNC_provider_query_operation_fn; - -typedef int OSSL_FUNC_signature_set_ctx_md_params_fn; - -typedef int OSSL_FUNC_encoder_does_selection_fn; - -typedef int OSSL_FUNC_kem_get_ctx_params_fn; - -typedef int OSSL_FUNC_cipher_gettable_params_fn; - -typedef int OSSL_FUNC_digest_final_fn; - -typedef int OSSL_FUNC_rand_generate_fn; - -typedef int EVP_PKEY_CTX; - -typedef int OSSL_FUNC_kem_decapsulate_fn; - -typedef int OSSL_FUNC_skeymgmt_generate_fn; - -typedef int OSSL_FUNC_asym_cipher_encrypt_init_fn; - -typedef int OSSL_FUNC_kdf_get_params_fn; - -typedef int OSSL_FUNC_cipher_encrypt_skey_init_fn; - -typedef int OSSL_FUNC_encoder_get_params_fn; - -typedef int OSSL_FUNC_asym_cipher_freectx_fn; - -typedef int OSSL_FUNC_CRYPTO_secure_clear_free_fn; - -typedef int OSSL_FUNC_store_load_fn; - -typedef int OSSL_FUNC_digest_update_fn; - -typedef int OSSL_FUNC_provider_up_ref_fn; - -typedef int OSSL_FUNC_SSL_QUIC_TLS_crypto_recv_rcd_fn; - -typedef int OSSL_FUNC_signature_digest_sign_init_fn; - -typedef int OSSL_FUNC_keymgmt_load_fn; - -typedef int OSSL_FUNC_keyexch_gettable_ctx_params_fn; - -typedef int OSSL_FUNC_rand_get_params_fn; - -typedef int OSSL_FUNC_rand_verify_zeroization_fn; - -typedef int OSSL_FUNC_skeymgmt_export_fn; - -typedef int OSSL_FUNC_BIO_free_fn; - -typedef int OSSL_FUNC_rand_settable_ctx_params_fn; - -typedef int OSSL_FUNC_cleanup_entropy_fn; - -typedef int OSSL_FUNC_encoder_settable_ctx_params_fn; - -typedef int OSSL_DISPATCH; - -typedef int OSSL_FUNC_OPENSSL_cleanse_fn; - -typedef int OSSL_FUNC_digest_dupctx_fn; - -typedef int OSSL_FUNC_kem_decapsulate_init_fn; - -typedef int EVP_MAC_CTX; - -typedef int OSSL_FUNC_digest_squeeze_fn; - -typedef int OSSL_FUNC_keyexch_set_ctx_params_fn; - -typedef int EVP_ENCODE_CTX; - -typedef int OSSL_FUNC_BIO_vsnprintf_fn; - -typedef int OSSL_FUNC_mac_dupctx_fn; - -typedef int OSSL_FUNC_kdf_derive_fn; - -typedef int OSSL_FUNC_encoder_set_ctx_params_fn; - -typedef int OSSL_FUNC_rand_freectx_fn; - -typedef int OSSL_FUNC_BIO_ctrl_fn; - -typedef int EVP_CIPHER; - -typedef int OSSL_FUNC_cipher_set_ctx_params_fn; - -typedef int OSSL_FUNC_rand_enable_locking_fn; - -typedef int OSSL_FUNC_keyexch_newctx_fn; - -typedef int OSSL_FUNC_signature_settable_ctx_params_fn; - -typedef int OSSL_FUNC_provider_gettable_params_fn; - -typedef int OSSL_FUNC_keymgmt_gen_set_template_fn; - -typedef int OSSL_FUNC_keymgmt_settable_params_fn; - -typedef int OSSL_FUNC_keymgmt_gen_cleanup_fn; - -typedef int OSSL_FUNC_kdf_set_ctx_params_fn; - -typedef int OSSL_FUNC_rand_unlock_fn; - -typedef int OSSL_FUNC_SSL_QUIC_TLS_yield_secret_fn; - -typedef int OSSL_FUNC_signature_digest_sign_fn; - -typedef int OSSL_FUNC_keymgmt_gettable_params_fn; - -typedef int OSSL_FUNC_kem_auth_encapsulate_init_fn; - -typedef int OSSL_FUNC_kem_encapsulate_fn; - -typedef int OSSL_FUNC_CRYPTO_secure_zalloc_fn; - -typedef int OSSL_FUNC_rand_get_ctx_params_fn; - -typedef int OSSL_FUNC_store_delete_fn; - -typedef int OSSL_FUNC_cipher_pipeline_encrypt_init_fn; - -typedef int OSSL_FUNC_cipher_dupctx_fn; - -typedef int OSSL_FUNC_store_settable_ctx_params_fn; - -typedef int FILE; - -typedef int OSSL_FUNC_provider_teardown_fn; - -typedef int OSSL_FUNC_kdf_dupctx_fn; - -typedef int OSSL_FUNC_decoder_newctx_fn; - -typedef int ASN1_BIT_STRING; - -typedef int OSSL_FUNC_core_clear_last_error_mark_fn; - -typedef int OSSL_FUNC_core_obj_create_fn; - -typedef int OSSL_FUNC_keyexch_init_fn; - -typedef int OSSL_FUNC_kem_gettable_ctx_params_fn; - -typedef int EVP_MD_CTX; - -typedef int OSSL_FUNC_decoder_decode_fn; - -typedef int OSSL_FUNC_mac_gettable_params_fn; - -typedef int OSSL_FUNC_kem_set_ctx_params_fn; - -typedef int OSSL_FUNC_encoder_encode_fn; - -typedef int OSSL_FUNC_core_gettable_params_fn; - -typedef int OSSL_FUNC_mac_gettable_ctx_params_fn; - -typedef int OSSL_FUNC_get_user_entropy_fn; - -typedef int OSSL_FUNC_kdf_gettable_ctx_params_fn; - -typedef int OSSL_FUNC_keymgmt_gen_fn; - -typedef int OSSL_FUNC_keyexch_set_peer_fn; - -typedef int OSSL_FUNC_core_obj_add_sigid_fn; - -typedef int OSSL_FUNC_keymgmt_export_types_ex_fn; - -typedef int OSSL_FUNC_kem_newctx_fn; - -typedef int OSSL_FUNC_signature_sign_init_fn; - -typedef int OSSL_FUNC_asym_cipher_get_ctx_params_fn; - -typedef int OSSL_FUNC_CRYPTO_clear_free_fn; - -typedef int OSSL_FUNC_encoder_freectx_fn; - -typedef int OSSL_FUNC_kem_freectx_fn; - -typedef int OSSL_FUNC_provider_get0_provider_ctx_fn; - -typedef int OSSL_FUNC_digest_copyctx_fn; - -typedef int OSSL_FUNC_provider_name_fn; - -typedef int OSSL_FUNC_cipher_decrypt_init_fn; - -typedef int EVP_PKEY_ASN1_METHOD; - -typedef int OSSL_FUNC_keyexch_get_ctx_params_fn; - -typedef int OSSL_FUNC_store_set_ctx_params_fn; - -typedef int ASN1_TYPE; - -typedef int OSSL_FUNC_skeymgmt_imp_settable_params_fn; - -typedef int OSSL_FUNC_cipher_get_ctx_params_fn; - -typedef int EVP_MAC; - -typedef int OSSL_FUNC_store_attach_fn; - -typedef int OSSL_FUNC_signature_get_ctx_md_params_fn; - -typedef int OSSL_FUNC_encoder_import_object_fn; - -typedef int OSSL_FUNC_cleanup_nonce_fn; - -typedef int OSSL_FUNC_kem_auth_decapsulate_init_fn; - -typedef int OSSL_CALLBACK; - -typedef int OSSL_FUNC_skeymgmt_import_fn; - -typedef int OSSL_FUNC_cipher_freectx_fn; - -typedef int OSSL_FUNC_asym_cipher_dupctx_fn; - -typedef int OSSL_FUNC_SSL_QUIC_TLS_crypto_send_fn; - -typedef int OSSL_FUNC_CRYPTO_clear_realloc_fn; - -typedef int OSSL_FUNC_signature_verify_recover_init_fn; - -typedef int OSSL_FUNC_provider_free_fn; - -typedef int EVP_RAND; - -typedef int OSSL_FUNC_digest_newctx_fn; - -typedef int OSSL_FUNC_cipher_final_fn; - -typedef int OSSL_FUNC_keymgmt_new_fn; - -typedef int EVP_CIPHER_CTX; - -typedef int OSSL_FUNC_decoder_does_selection_fn; - -typedef int OSSL_FUNC_signature_digest_verify_init_fn; - -typedef int OSSL_FUNC_digest_set_ctx_params_fn; - -typedef int OSSL_FUNC_rand_newctx_fn; - -typedef int OSSL_FUNC_BIO_vprintf_fn; - -typedef int OSSL_FUNC_keymgmt_gen_init_fn; - -typedef int EVP_RAND_CTX; - -typedef int OSSL_FUNC_store_close_fn; - -typedef int OSSL_FUNC_asym_cipher_encrypt_fn; - -typedef int OSSL_FUNC_mac_get_params_fn; - -typedef int OSSL_FUNC_get_entropy_fn; - -typedef int OSSL_FUNC_digest_gettable_ctx_params_fn; - -typedef int OSSL_FUNC_SSL_QUIC_TLS_got_transport_params_fn; - -typedef int OSSL_FUNC_skeymgmt_free_fn; - -typedef int OSSL_FUNC_mac_settable_ctx_params_fn; - -typedef int OSSL_FUNC_decoder_export_object_fn; - -typedef int OSSL_FUNC_rand_clear_seed_fn; - -typedef int OSSL_FUNC_mac_get_ctx_params_fn; - -typedef int OSSL_FUNC_digest_digest_fn; - -typedef int EVP_SKEY; - -typedef int OSSL_FUNC_cipher_gettable_ctx_params_fn; - -typedef int OSSL_FUNC_CRYPTO_malloc_fn; - -typedef int OSSL_FUNC_asym_cipher_settable_ctx_params_fn; - -typedef int OSSL_FUNC_signature_dupctx_fn; - -typedef int OSSL_FUNC_BIO_write_ex_fn; - -typedef int OSSL_FUNC_rand_set_callbacks_fn; - -typedef int OSSL_FUNC_keymgmt_match_fn; - -typedef int OSSL_FUNC_signature_digest_sign_final_fn; - -typedef int OSSL_FUNC_provider_get_params_fn; - -typedef int OSSL_FUNC_BIO_gets_fn; - -typedef int OSSL_FUNC_cipher_encrypt_init_fn; - -typedef int OSSL_FUNC_signature_verify_message_final_fn; - -typedef int BIGNUM; - -typedef int OSSL_FUNC_digest_freectx_fn; - -typedef int OSSL_FUNC_asym_cipher_set_ctx_params_fn; - -typedef int OSSL_FUNC_signature_gettable_ctx_params_fn; - -typedef int BIO; - -typedef int OSSL_FUNC_digest_get_params_fn; - -typedef int OSSL_FUNC_skeymgmt_get_key_id_fn; - -typedef int OSSL_FUNC_rand_uninstantiate_fn; - -typedef int OSSL_FUNC_decoder_get_params_fn; - -typedef int OSSL_FUNC_signature_newctx_fn; - -typedef int OSSL_FUNC_signature_sign_fn; - -typedef int OSSL_FUNC_decoder_set_ctx_params_fn; - -typedef int OSSL_FUNC_kem_dupctx_fn; - -typedef int OSSL_FUNC_get_user_nonce_fn; - -typedef int OSSL_FUNC_mac_init_skey_fn; - -typedef int ASN1_PCTX; - -typedef int OSSL_FUNC_provider_get_capabilities_fn; - -typedef int OSSL_FUNC_provider_register_child_cb_fn; - -typedef int OSSL_FUNC_kem_settable_ctx_params_fn; - -typedef int OSSL_FUNC_signature_query_key_types_fn; - -typedef int OSSL_FUNC_signature_settable_ctx_md_params_fn; - -typedef int OSSL_FUNC_asym_cipher_newctx_fn; - -typedef int OSSL_FUNC_store_open_ex_fn; - -typedef int OSSL_FUNC_keyexch_derive_fn; - -typedef int OSSL_FUNC_kdf_settable_ctx_params_fn; - -typedef int OSSL_FUNC_skeymgmt_gen_settable_params_fn; - -typedef int OSSL_FUNC_digest_settable_ctx_params_fn; - -typedef int OSSL_FUNC_kem_encapsulate_init_fn; - -typedef int OSSL_FUNC_core_new_error_fn; - -typedef int OSSL_FUNC_BIO_up_ref_fn; - -typedef int OSSL_FUNC_self_test_cb_fn; - -typedef int OSSL_FUNC_keymgmt_export_types_fn; - -typedef int OSSL_FUNC_core_get_libctx_fn; - -typedef int OSSL_FUNC_digest_init_fn; - -typedef int EVP_ASYM_CIPHER; - -typedef int OSSL_FUNC_decoder_settable_ctx_params_fn; - -typedef int OSSL_FUNC_signature_sign_message_init_fn; - -typedef int OSSL_FUNC_rand_gettable_params_fn; - -typedef int OSSL_FUNC_mac_update_fn; - -typedef int OSSL_FUNC_keymgmt_export_fn; - -typedef int OSSL_FUNC_provider_random_bytes_fn; - -typedef int OSSL_FUNC_decoder_freectx_fn; - -typedef int OSSL_FUNC_mac_init_fn; - -typedef int OSSL_FUNC_store_eof_fn; - -typedef int OSSL_FUNC_signature_verify_init_fn; - -typedef int EVP_PBE_KEYGEN; - -typedef int OSSL_FUNC_core_thread_start_fn; - -typedef int OSSL_FUNC_cipher_cipher_fn; - -typedef int OSSL_FUNC_keymgmt_dup_fn; - // Function stubs. OSSL_FUNC_core_gettable_params_fn * OSSL_FUNC_core_gettable_params(const OSSL_DISPATCH * opf) { return NULL; diff --git a/cpp/ql/test/experimental/stubs/openssl/alg_macro_stubs.h b/cpp/ql/test/experimental/stubs/openssl/obj_mac.h similarity index 99% rename from cpp/ql/test/experimental/stubs/openssl/alg_macro_stubs.h rename to cpp/ql/test/experimental/stubs/openssl/obj_mac.h index 3058681d71d..8737d21e63e 100644 --- a/cpp/ql/test/experimental/stubs/openssl/alg_macro_stubs.h +++ b/cpp/ql/test/experimental/stubs/openssl/obj_mac.h @@ -1,3 +1,13 @@ +/* + * Generated by crypto/objects/objects.pl + * + * Copyright 2000-2025 The OpenSSL Project Authors. All Rights Reserved. + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + # define EVP_PKEY_NONE NID_undef # define EVP_PKEY_RSA NID_rsaEncryption # define EVP_PKEY_RSA2 NID_rsa diff --git a/cpp/ql/test/experimental/stubs/openssl/pem.h b/cpp/ql/test/experimental/stubs/openssl/pem.h new file mode 100644 index 00000000000..48b785e8f9a --- /dev/null +++ b/cpp/ql/test/experimental/stubs/openssl/pem.h @@ -0,0 +1,527 @@ +/* + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ +#include "type_stubs.h" + +#ifndef OPENSSL_PEM_H +# define OPENSSL_PEM_H +#ifdef __cplusplus +extern "C" { +#endif + +# define PEM_BUFSIZE 1024 + +# define PEM_STRING_X509_OLD "X509 CERTIFICATE" +# define PEM_STRING_X509 "CERTIFICATE" +# define PEM_STRING_X509_TRUSTED "TRUSTED CERTIFICATE" +# define PEM_STRING_X509_REQ_OLD "NEW CERTIFICATE REQUEST" +# define PEM_STRING_X509_REQ "CERTIFICATE REQUEST" +# define PEM_STRING_X509_CRL "X509 CRL" +# define PEM_STRING_EVP_PKEY "ANY PRIVATE KEY" +# define PEM_STRING_PUBLIC "PUBLIC KEY" +# define PEM_STRING_RSA "RSA PRIVATE KEY" +# define PEM_STRING_RSA_PUBLIC "RSA PUBLIC KEY" +# define PEM_STRING_DSA "DSA PRIVATE KEY" +# define PEM_STRING_DSA_PUBLIC "DSA PUBLIC KEY" +# define PEM_STRING_PKCS7 "PKCS7" +# define PEM_STRING_PKCS7_SIGNED "PKCS #7 SIGNED DATA" +# define PEM_STRING_PKCS8 "ENCRYPTED PRIVATE KEY" +# define PEM_STRING_PKCS8INF "PRIVATE KEY" +# define PEM_STRING_DHPARAMS "DH PARAMETERS" +# define PEM_STRING_DHXPARAMS "X9.42 DH PARAMETERS" +# define PEM_STRING_SSL_SESSION "SSL SESSION PARAMETERS" +# define PEM_STRING_DSAPARAMS "DSA PARAMETERS" +# define PEM_STRING_ECDSA_PUBLIC "ECDSA PUBLIC KEY" +# define PEM_STRING_ECPARAMETERS "EC PARAMETERS" +# define PEM_STRING_ECPRIVATEKEY "EC PRIVATE KEY" +# define PEM_STRING_PARAMETERS "PARAMETERS" +# define PEM_STRING_CMS "CMS" +# define PEM_STRING_SM2PARAMETERS "SM2 PARAMETERS" +# define PEM_STRING_ACERT "ATTRIBUTE CERTIFICATE" + +# define PEM_TYPE_ENCRYPTED 10 +# define PEM_TYPE_MIC_ONLY 20 +# define PEM_TYPE_MIC_CLEAR 30 +# define PEM_TYPE_CLEAR 40 + +/* + * These macros make the PEM_read/PEM_write functions easier to maintain and + * write. Now they are all implemented with either: IMPLEMENT_PEM_rw(...) or + * IMPLEMENT_PEM_rw_cb(...) + */ + +# define PEM_read_cb_fnsig(name, type, INTYPE, readname) \ + type *PEM_##readname##_##name(INTYPE *out, type **x, \ + pem_password_cb *cb, void *u) +# define PEM_read_cb_ex_fnsig(name, type, INTYPE, readname) \ + type *PEM_##readname##_##name##_ex(INTYPE *out, type **x, \ + pem_password_cb *cb, void *u, \ + OSSL_LIB_CTX *libctx, \ + const char *propq) + +# define PEM_write_fnsig(name, type, OUTTYPE, writename) \ + int PEM_##writename##_##name(OUTTYPE *out, const type *x) +# define PEM_write_cb_fnsig(name, type, OUTTYPE, writename) \ + int PEM_##writename##_##name(OUTTYPE *out, const type *x, \ + const EVP_CIPHER *enc, \ + const unsigned char *kstr, int klen, \ + pem_password_cb *cb, void *u) +# define PEM_write_ex_fnsig(name, type, OUTTYPE, writename) \ + int PEM_##writename##_##name##_ex(OUTTYPE *out, const type *x, \ + OSSL_LIB_CTX *libctx, \ + const char *propq) +# define PEM_write_cb_ex_fnsig(name, type, OUTTYPE, writename) \ + int PEM_##writename##_##name##_ex(OUTTYPE *out, const type *x, \ + const EVP_CIPHER *enc, \ + const unsigned char *kstr, int klen, \ + pem_password_cb *cb, void *u, \ + OSSL_LIB_CTX *libctx, \ + const char *propq) + +# ifdef OPENSSL_NO_STDIO + +# define IMPLEMENT_PEM_read_fp(name, type, str, asn1) /**/ +# define IMPLEMENT_PEM_write_fp(name, type, str, asn1) /**/ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) /**/ +# endif +# define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) /**/ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) /**/ +# endif +# else + +# define IMPLEMENT_PEM_read_fp(name, type, str, asn1) \ + type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u) \ + { \ + return PEM_ASN1_read((d2i_of_void *)d2i_##asn1, str, fp, \ + (void **)x, cb, u); \ + } + +# define IMPLEMENT_PEM_write_fp(name, type, str, asn1) \ + PEM_write_fnsig(name, type, FILE, write) \ + { \ + return PEM_ASN1_write((i2d_of_void *)i2d_##asn1, str, out, \ + x, NULL, NULL, 0, NULL, NULL); \ + } + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_fp(name, type, str, asn1) +# endif + +# define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) \ + PEM_write_cb_fnsig(name, type, FILE, write) \ + { \ + return PEM_ASN1_write((i2d_of_void *)i2d_##asn1, str, out, \ + x, enc, kstr, klen, cb, u); \ + } + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) +# endif +# endif + +# define IMPLEMENT_PEM_read_bio(name, type, str, asn1) \ + type *PEM_read_bio_##name(BIO *bp, type **x, \ + pem_password_cb *cb, void *u) \ + { \ + return PEM_ASN1_read_bio((d2i_of_void *)d2i_##asn1, str, bp, \ + (void **)x, cb, u); \ + } + +# define IMPLEMENT_PEM_write_bio(name, type, str, asn1) \ + PEM_write_fnsig(name, type, BIO, write_bio) \ + { \ + return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1, str, out, \ + x, NULL,NULL,0,NULL,NULL); \ + } + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_bio(name, type, str, asn1) +# endif + +# define IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \ + PEM_write_cb_fnsig(name, type, BIO, write_bio) \ + { \ + return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1, str, out, \ + x, enc, kstr, klen, cb, u); \ + } + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) +# endif + +# define IMPLEMENT_PEM_write(name, type, str, asn1) \ + IMPLEMENT_PEM_write_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_write_fp(name, type, str, asn1) + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define IMPLEMENT_PEM_write_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) +# endif + +# define IMPLEMENT_PEM_write_cb(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define IMPLEMENT_PEM_write_cb_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) +# endif + +# define IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_read_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_read_fp(name, type, str, asn1) + +# define IMPLEMENT_PEM_rw(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write(name, type, str, asn1) + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define IMPLEMENT_PEM_rw_const(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write_const(name, type, str, asn1) +# endif + +# define IMPLEMENT_PEM_rw_cb(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb(name, type, str, asn1) + +/* These are the same except they are for the declarations */ + +/* + * The mysterious 'extern' that's passed to some macros is innocuous, + * and is there to quiet pre-C99 compilers that may complain about empty + * arguments in macro calls. + */ +# if defined(OPENSSL_NO_STDIO) + +# define DECLARE_PEM_read_fp_attr(attr, name, type) /**/ +# define DECLARE_PEM_read_fp_ex_attr(attr, name, type) /**/ +# define DECLARE_PEM_write_fp_attr(attr, name, type) /**/ +# define DECLARE_PEM_write_fp_ex_attr(attr, name, type) /**/ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define DECLARE_PEM_write_fp_const_attr(attr, name, type) /**/ +# endif +# define DECLARE_PEM_write_cb_fp_attr(attr, name, type) /**/ +# define DECLARE_PEM_write_cb_fp_ex_attr(attr, name, type) /**/ + +# else + +# define DECLARE_PEM_read_fp_attr(attr, name, type) \ + attr PEM_read_cb_fnsig(name, type, FILE, read); +# define DECLARE_PEM_read_fp_ex_attr(attr, name, type) \ + attr PEM_read_cb_fnsig(name, type, FILE, read); \ + attr PEM_read_cb_ex_fnsig(name, type, FILE, read); + +# define DECLARE_PEM_write_fp_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, FILE, write); +# define DECLARE_PEM_write_fp_ex_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, FILE, write); \ + attr PEM_write_ex_fnsig(name, type, FILE, write); +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define DECLARE_PEM_write_fp_const_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, FILE, write); +# endif +# define DECLARE_PEM_write_cb_fp_attr(attr, name, type) \ + attr PEM_write_cb_fnsig(name, type, FILE, write); +# define DECLARE_PEM_write_cb_fp_ex_attr(attr, name, type) \ + attr PEM_write_cb_fnsig(name, type, FILE, write); \ + attr PEM_write_cb_ex_fnsig(name, type, FILE, write); + +# endif + +# define DECLARE_PEM_read_fp(name, type) \ + DECLARE_PEM_read_fp_attr(extern, name, type) +# define DECLARE_PEM_write_fp(name, type) \ + DECLARE_PEM_write_fp_attr(extern, name, type) +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define DECLARE_PEM_write_fp_const(name, type) \ + DECLARE_PEM_write_fp_const_attr(extern, name, type) +# endif +# define DECLARE_PEM_write_cb_fp(name, type) \ + DECLARE_PEM_write_cb_fp_attr(extern, name, type) + +# define DECLARE_PEM_read_bio_attr(attr, name, type) \ + attr PEM_read_cb_fnsig(name, type, BIO, read_bio); +# define DECLARE_PEM_read_bio_ex_attr(attr, name, type) \ + attr PEM_read_cb_fnsig(name, type, BIO, read_bio); \ + attr PEM_read_cb_ex_fnsig(name, type, BIO, read_bio); +# define DECLARE_PEM_read_bio(name, type) \ + DECLARE_PEM_read_bio_attr(extern, name, type) +# define DECLARE_PEM_read_bio_ex(name, type) \ + DECLARE_PEM_read_bio_ex_attr(extern, name, type) + +# define DECLARE_PEM_write_bio_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, BIO, write_bio); +# define DECLARE_PEM_write_bio_ex_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, BIO, write_bio); \ + attr PEM_write_ex_fnsig(name, type, BIO, write_bio); +# define DECLARE_PEM_write_bio(name, type) \ + DECLARE_PEM_write_bio_attr(extern, name, type) +# define DECLARE_PEM_write_bio_ex(name, type) \ + DECLARE_PEM_write_bio_ex_attr(extern, name, type) + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define DECLARE_PEM_write_bio_const_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, BIO, write_bio); +# define DECLARE_PEM_write_bio_const(name, type) \ + DECLARE_PEM_write_bio_const_attr(extern, name, type) +# endif + +# define DECLARE_PEM_write_cb_bio_attr(attr, name, type) \ + attr PEM_write_cb_fnsig(name, type, BIO, write_bio); +# define DECLARE_PEM_write_cb_bio_ex_attr(attr, name, type) \ + attr PEM_write_cb_fnsig(name, type, BIO, write_bio); \ + attr PEM_write_cb_ex_fnsig(name, type, BIO, write_bio); +# define DECLARE_PEM_write_cb_bio(name, type) \ + DECLARE_PEM_write_cb_bio_attr(extern, name, type) +# define DECLARE_PEM_write_cb_ex_bio(name, type) \ + DECLARE_PEM_write_cb_bio_ex_attr(extern, name, type) + +# define DECLARE_PEM_write_attr(attr, name, type) \ + DECLARE_PEM_write_bio_attr(attr, name, type) \ + DECLARE_PEM_write_fp_attr(attr, name, type) +# define DECLARE_PEM_write_ex_attr(attr, name, type) \ + DECLARE_PEM_write_bio_ex_attr(attr, name, type) \ + DECLARE_PEM_write_fp_ex_attr(attr, name, type) +# define DECLARE_PEM_write(name, type) \ + DECLARE_PEM_write_attr(extern, name, type) +# define DECLARE_PEM_write_ex(name, type) \ + DECLARE_PEM_write_ex_attr(extern, name, type) +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define DECLARE_PEM_write_const_attr(attr, name, type) \ + DECLARE_PEM_write_bio_const_attr(attr, name, type) \ + DECLARE_PEM_write_fp_const_attr(attr, name, type) +# define DECLARE_PEM_write_const(name, type) \ + DECLARE_PEM_write_const_attr(extern, name, type) +# endif +# define DECLARE_PEM_write_cb_attr(attr, name, type) \ + DECLARE_PEM_write_cb_bio_attr(attr, name, type) \ + DECLARE_PEM_write_cb_fp_attr(attr, name, type) +# define DECLARE_PEM_write_cb_ex_attr(attr, name, type) \ + DECLARE_PEM_write_cb_bio_ex_attr(attr, name, type) \ + DECLARE_PEM_write_cb_fp_ex_attr(attr, name, type) +# define DECLARE_PEM_write_cb(name, type) \ + DECLARE_PEM_write_cb_attr(extern, name, type) +# define DECLARE_PEM_write_cb_ex(name, type) \ + DECLARE_PEM_write_cb_ex_attr(extern, name, type) +# define DECLARE_PEM_read_attr(attr, name, type) \ + DECLARE_PEM_read_bio_attr(attr, name, type) \ + DECLARE_PEM_read_fp_attr(attr, name, type) +# define DECLARE_PEM_read_ex_attr(attr, name, type) \ + DECLARE_PEM_read_bio_ex_attr(attr, name, type) \ + DECLARE_PEM_read_fp_ex_attr(attr, name, type) +# define DECLARE_PEM_read(name, type) \ + DECLARE_PEM_read_attr(extern, name, type) +# define DECLARE_PEM_read_ex(name, type) \ + DECLARE_PEM_read_ex_attr(extern, name, type) +# define DECLARE_PEM_rw_attr(attr, name, type) \ + DECLARE_PEM_read_attr(attr, name, type) \ + DECLARE_PEM_write_attr(attr, name, type) +# define DECLARE_PEM_rw_ex_attr(attr, name, type) \ + DECLARE_PEM_read_ex_attr(attr, name, type) \ + DECLARE_PEM_write_ex_attr(attr, name, type) +# define DECLARE_PEM_rw(name, type) \ + DECLARE_PEM_rw_attr(extern, name, type) +# define DECLARE_PEM_rw_ex(name, type) \ + DECLARE_PEM_rw_ex_attr(extern, name, type) +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define DECLARE_PEM_rw_const_attr(attr, name, type) \ + DECLARE_PEM_read_attr(attr, name, type) \ + DECLARE_PEM_write_const_attr(attr, name, type) +# define DECLARE_PEM_rw_const(name, type) \ + DECLARE_PEM_rw_const_attr(extern, name, type) +# endif +# define DECLARE_PEM_rw_cb_attr(attr, name, type) \ + DECLARE_PEM_read_attr(attr, name, type) \ + DECLARE_PEM_write_cb_attr(attr, name, type) +# define DECLARE_PEM_rw_cb_ex_attr(attr, name, type) \ + DECLARE_PEM_read_ex_attr(attr, name, type) \ + DECLARE_PEM_write_cb_ex_attr(attr, name, type) +# define DECLARE_PEM_rw_cb(name, type) \ + DECLARE_PEM_rw_cb_attr(extern, name, type) +# define DECLARE_PEM_rw_cb_ex(name, type) \ + DECLARE_PEM_rw_cb_ex_attr(extern, name, type) + +int PEM_get_EVP_CIPHER_INFO(char *header, EVP_CIPHER_INFO *cipher); +int PEM_do_header(EVP_CIPHER_INFO *cipher, unsigned char *data, long *len, + pem_password_cb *callback, void *u); + +int PEM_read_bio(BIO *bp, char **name, char **header, + unsigned char **data, long *len); +# define PEM_FLAG_SECURE 0x1 +# define PEM_FLAG_EAY_COMPATIBLE 0x2 +# define PEM_FLAG_ONLY_B64 0x4 +int PEM_read_bio_ex(BIO *bp, char **name, char **header, + unsigned char **data, long *len, unsigned int flags); +int PEM_bytes_read_bio_secmem(unsigned char **pdata, long *plen, char **pnm, + const char *name, BIO *bp, pem_password_cb *cb, + void *u); +int PEM_write_bio(BIO *bp, const char *name, const char *hdr, + const unsigned char *data, long len); +int PEM_bytes_read_bio(unsigned char **pdata, long *plen, char **pnm, + const char *name, BIO *bp, pem_password_cb *cb, + void *u); +void *PEM_ASN1_read_bio(d2i_of_void *d2i, const char *name, BIO *bp, void **x, + pem_password_cb *cb, void *u); +int PEM_ASN1_write_bio(i2d_of_void *i2d, const char *name, BIO *bp, + const void *x, const EVP_CIPHER *enc, + const unsigned char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_ASN1_write_bio_ctx(OSSL_i2d_of_void_ctx *i2d, void *vctx, + const char *name, BIO *bp, const void *x, + const EVP_CIPHER *enc, const unsigned char *kstr, + int klen, pem_password_cb *cb, void *u); + +X509_INFO *PEM_X509_INFO_read_bio(BIO *bp, X509_INFO *sk, + pem_password_cb *cb, void *u); +X509_INFO +*PEM_X509_INFO_read_bio_ex(BIO *bp, X509_INFO *sk, + pem_password_cb *cb, void *u, OSSL_LIB_CTX *libctx, + const char *propq); + +int PEM_X509_INFO_write_bio(BIO *bp, const X509_INFO *xi, EVP_CIPHER *enc, + const unsigned char *kstr, int klen, + pem_password_cb *cd, void *u); + +int PEM_read(FILE *fp, char **name, char **header, + unsigned char **data, long *len); +int PEM_write(FILE *fp, const char *name, const char *hdr, + const unsigned char *data, long len); +void *PEM_ASN1_read(d2i_of_void *d2i, const char *name, FILE *fp, void **x, + pem_password_cb *cb, void *u); +int PEM_ASN1_write(i2d_of_void *i2d, const char *name, FILE *fp, + const void *x, const EVP_CIPHER *enc, + const unsigned char *kstr, int klen, + pem_password_cb *callback, void *u); +X509_INFO *PEM_X509_INFO_read(FILE *fp, X509_INFO *sk, + pem_password_cb *cb, void *u); +X509_INFO +*PEM_X509_INFO_read_ex(FILE *fp, X509_INFO *sk, pem_password_cb *cb, + void *u, OSSL_LIB_CTX *libctx, const char *propq); + +int PEM_SignInit(EVP_MD_CTX *ctx, EVP_MD *type); +int PEM_SignUpdate(EVP_MD_CTX *ctx, const unsigned char *d, unsigned int cnt); +int PEM_SignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, + unsigned int *siglen, EVP_PKEY *pkey); + +/* The default pem_password_cb that's used internally */ +int PEM_def_callback(char *buf, int num, int rwflag, void *userdata); +void PEM_proc_type(char *buf, int type); +void PEM_dek_info(char *buf, const char *type, int len, const char *str); + + + +// DECLARE_PEM_rw(X509, X509) +// DECLARE_PEM_rw(X509_AUX, X509) +// DECLARE_PEM_rw(X509_REQ, X509_REQ) +// DECLARE_PEM_write(X509_REQ_NEW, X509_REQ) +// DECLARE_PEM_rw(X509_CRL, X509_CRL) +// DECLARE_PEM_rw(X509_PUBKEY, X509_PUBKEY) +// DECLARE_PEM_rw(PKCS7, PKCS7) +// DECLARE_PEM_rw(NETSCAPE_CERT_SEQUENCE, NETSCAPE_CERT_SEQUENCE) +// DECLARE_PEM_rw(PKCS8, X509_SIG) +DECLARE_PEM_rw(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO) +// # ifndef OPENSSL_NO_DEPRECATED_3_0 +// DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, RSAPrivateKey, RSA) +// DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, RSAPublicKey, RSA) +// DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, RSA_PUBKEY, RSA) +// # endif +// # ifndef OPENSSL_NO_DEPRECATED_3_0 +// # ifndef OPENSSL_NO_DSA +// DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, DSAPrivateKey, DSA) +// DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, DSA_PUBKEY, DSA) +// DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, DSAparams, DSA) +// # endif +// # endif + +// # ifndef OPENSSL_NO_DEPRECATED_3_0 +// # ifndef OPENSSL_NO_EC +// DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, ECPKParameters, EC_GROUP) +// DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, ECPrivateKey, EC_KEY) +// DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, EC_PUBKEY, EC_KEY) +// # endif +// # endif + +// # ifndef OPENSSL_NO_DH +// # ifndef OPENSSL_NO_DEPRECATED_3_0 +// DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, DHparams, DH) +// DECLARE_PEM_write_attr(OSSL_DEPRECATEDIN_3_0, DHxparams, DH) +// # endif +// # endif +DECLARE_PEM_rw_cb_ex(PrivateKey, EVP_PKEY) +DECLARE_PEM_rw_ex(PUBKEY, EVP_PKEY) + +int PEM_write_bio_PrivateKey_traditional(BIO *bp, const EVP_PKEY *x, + const EVP_CIPHER *enc, + const unsigned char *kstr, int klen, + pem_password_cb *cb, void *u); + +/* Why do these take a signed char *kstr? */ +int PEM_write_bio_PKCS8PrivateKey_nid(BIO *bp, const EVP_PKEY *x, int nid, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_write_bio_PKCS8PrivateKey(BIO *, const EVP_PKEY *, const EVP_CIPHER *, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_bio(BIO *bp, const EVP_PKEY *x, const EVP_CIPHER *enc, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_nid_bio(BIO *bp, const EVP_PKEY *x, int nid, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +EVP_PKEY *d2i_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, + void *u); + +int i2d_PKCS8PrivateKey_fp(FILE *fp, const EVP_PKEY *x, const EVP_CIPHER *enc, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_nid_fp(FILE *fp, const EVP_PKEY *x, int nid, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_write_PKCS8PrivateKey_nid(FILE *fp, const EVP_PKEY *x, int nid, + const char *kstr, int klen, + pem_password_cb *cb, void *u); + +EVP_PKEY *d2i_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, + void *u); + +int PEM_write_PKCS8PrivateKey(FILE *fp, const EVP_PKEY *x, const EVP_CIPHER *enc, + const char *kstr, int klen, + pem_password_cb *cd, void *u); +EVP_PKEY *PEM_read_bio_Parameters_ex(BIO *bp, EVP_PKEY **x, + OSSL_LIB_CTX *libctx, const char *propq); +EVP_PKEY *PEM_read_bio_Parameters(BIO *bp, EVP_PKEY **x); +int PEM_write_bio_Parameters(BIO *bp, const EVP_PKEY *x); + +EVP_PKEY *b2i_PrivateKey(const unsigned char **in, long length); +EVP_PKEY *b2i_PublicKey(const unsigned char **in, long length); +EVP_PKEY *b2i_PrivateKey_bio(BIO *in); +EVP_PKEY *b2i_PublicKey_bio(BIO *in); +int i2b_PrivateKey_bio(BIO *out, const EVP_PKEY *pk); +int i2b_PublicKey_bio(BIO *out, const EVP_PKEY *pk); +EVP_PKEY *b2i_PVK_bio(BIO *in, pem_password_cb *cb, void *u); +EVP_PKEY *b2i_PVK_bio_ex(BIO *in, pem_password_cb *cb, void *u, + OSSL_LIB_CTX *libctx, const char *propq); +int i2b_PVK_bio(BIO *out, const EVP_PKEY *pk, int enclevel, + pem_password_cb *cb, void *u); +int i2b_PVK_bio_ex(BIO *out, const EVP_PKEY *pk, int enclevel, + pem_password_cb *cb, void *u, + OSSL_LIB_CTX *libctx, const char *propq); + +# ifdef __cplusplus +} +# endif +#endif \ No newline at end of file diff --git a/cpp/ql/test/experimental/stubs/openssl/rand.h b/cpp/ql/test/experimental/stubs/openssl/rand.h new file mode 100644 index 00000000000..9b632725b9d --- /dev/null +++ b/cpp/ql/test/experimental/stubs/openssl/rand.h @@ -0,0 +1,20 @@ +/* + * Copyright 2016-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* + * Licensed under the Apache License 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * https://www.openssl.org/source/license.html + * or in the file LICENSE in the source distribution. + */ + +int RAND_bytes(unsigned char *buf, int num); + +int RAND_pseudo_bytes(unsigned char *buf, int num); \ No newline at end of file diff --git a/cpp/ql/test/experimental/stubs/openssl/rand_stubs.h b/cpp/ql/test/experimental/stubs/openssl/rand_stubs.h deleted file mode 100644 index 8d9b5c53c9f..00000000000 --- a/cpp/ql/test/experimental/stubs/openssl/rand_stubs.h +++ /dev/null @@ -1,3 +0,0 @@ -int RAND_bytes(unsigned char *buf, int num); - -int RAND_pseudo_bytes(unsigned char *buf, int num); \ No newline at end of file diff --git a/cpp/ql/test/experimental/stubs/openssl/rsa.h b/cpp/ql/test/experimental/stubs/openssl/rsa.h new file mode 100644 index 00000000000..4bacb17f9c6 --- /dev/null +++ b/cpp/ql/test/experimental/stubs/openssl/rsa.h @@ -0,0 +1,585 @@ +/* + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ +# include "type_stubs.h" + +#ifndef OPENSSL_RSA_H +# define OPENSSL_RSA_H +# pragma once + + +# ifdef __cplusplus +extern "C" { +# endif + +# ifndef OPENSSL_RSA_MAX_MODULUS_BITS +# define OPENSSL_RSA_MAX_MODULUS_BITS 16384 +# endif + +# define RSA_3 0x3L +# define RSA_F4 0x10001L + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +/* The types RSA and RSA_METHOD are defined in ossl_typ.h */ + +# define OPENSSL_RSA_FIPS_MIN_MODULUS_BITS 2048 + +# ifndef OPENSSL_RSA_SMALL_MODULUS_BITS +# define OPENSSL_RSA_SMALL_MODULUS_BITS 3072 +# endif + +/* exponent limit enforced for "large" modulus only */ +# ifndef OPENSSL_RSA_MAX_PUBEXP_BITS +# define OPENSSL_RSA_MAX_PUBEXP_BITS 64 +# endif +/* based on RFC 8017 appendix A.1.2 */ +# define RSA_ASN1_VERSION_DEFAULT 0 +# define RSA_ASN1_VERSION_MULTI 1 + +# define RSA_DEFAULT_PRIME_NUM 2 + +# define RSA_METHOD_FLAG_NO_CHECK 0x0001 +# define RSA_FLAG_CACHE_PUBLIC 0x0002 +# define RSA_FLAG_CACHE_PRIVATE 0x0004 +# define RSA_FLAG_BLINDING 0x0008 +# define RSA_FLAG_THREAD_SAFE 0x0010 +/* + * This flag means the private key operations will be handled by rsa_mod_exp + * and that they do not depend on the private key components being present: + * for example a key stored in external hardware. Without this flag + * bn_mod_exp gets called when private key components are absent. + */ +# define RSA_FLAG_EXT_PKEY 0x0020 + +/* + * new with 0.9.6j and 0.9.7b; the built-in + * RSA implementation now uses blinding by + * default (ignoring RSA_FLAG_BLINDING), + * but other engines might not need it + */ +# define RSA_FLAG_NO_BLINDING 0x0080 +# endif /* OPENSSL_NO_DEPRECATED_3_0 */ +/* + * Does nothing. Previously this switched off constant time behaviour. + */ +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define RSA_FLAG_NO_CONSTTIME 0x0000 +# endif +/* deprecated name for the flag*/ +/* + * new with 0.9.7h; the built-in RSA + * implementation now uses constant time + * modular exponentiation for secret exponents + * by default. This flag causes the + * faster variable sliding window method to + * be used for all exponents. + */ +# ifndef OPENSSL_NO_DEPRECATED_0_9_8 +# define RSA_FLAG_NO_EXP_CONSTTIME RSA_FLAG_NO_CONSTTIME +# endif + +/*- + * New with 3.0: use part of the flags to denote exact type of RSA key, + * some of which are limited to specific signature and encryption schemes. + * These different types share the same RSA structure, but indicate the + * use of certain fields in that structure. + * Currently known are: + * RSA - this is the "normal" unlimited RSA structure (typenum 0) + * RSASSA-PSS - indicates that the PSS parameters are used. + * RSAES-OAEP - no specific field used for the moment, but OAEP padding + * is expected. (currently unused) + * + * 4 bits allow for 16 types + */ +# define RSA_FLAG_TYPE_MASK 0xF000 +# define RSA_FLAG_TYPE_RSA 0x0000 +# define RSA_FLAG_TYPE_RSASSAPSS 0x1000 +# define RSA_FLAG_TYPE_RSAESOAEP 0x2000 + +int EVP_PKEY_CTX_set_rsa_padding(EVP_PKEY_CTX *ctx, int pad_mode); +int EVP_PKEY_CTX_get_rsa_padding(EVP_PKEY_CTX *ctx, int *pad_mode); + +int EVP_PKEY_CTX_set_rsa_pss_saltlen(EVP_PKEY_CTX *ctx, int saltlen); +int EVP_PKEY_CTX_get_rsa_pss_saltlen(EVP_PKEY_CTX *ctx, int *saltlen); + +int EVP_PKEY_CTX_set_rsa_keygen_bits(EVP_PKEY_CTX *ctx, int bits); +int EVP_PKEY_CTX_set1_rsa_keygen_pubexp(EVP_PKEY_CTX *ctx, BIGNUM *pubexp); +int EVP_PKEY_CTX_set_rsa_keygen_primes(EVP_PKEY_CTX *ctx, int primes); +int EVP_PKEY_CTX_set_rsa_pss_keygen_saltlen(EVP_PKEY_CTX *ctx, int saltlen); +int EVP_PKEY_CTX_set_rsa_keygen_pubexp(EVP_PKEY_CTX *ctx, BIGNUM *pubexp); + +/* Salt length matches digest */ +# define RSA_PSS_SALTLEN_DIGEST -1 +/* Verify only: auto detect salt length */ +# define RSA_PSS_SALTLEN_AUTO -2 +/* Set salt length to maximum possible */ +# define RSA_PSS_SALTLEN_MAX -3 +/* Auto-detect on verify, set salt length to min(maximum possible, digest + * length) on sign */ +# define RSA_PSS_SALTLEN_AUTO_DIGEST_MAX -4 +/* Old compatible max salt length for sign only */ +# define RSA_PSS_SALTLEN_MAX_SIGN -2 + +int EVP_PKEY_CTX_set_rsa_mgf1_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); +int EVP_PKEY_CTX_set_rsa_mgf1_md_name(EVP_PKEY_CTX *ctx, const char *mdname, + const char *mdprops); +int EVP_PKEY_CTX_get_rsa_mgf1_md(EVP_PKEY_CTX *ctx, const EVP_MD **md); +int EVP_PKEY_CTX_get_rsa_mgf1_md_name(EVP_PKEY_CTX *ctx, char *name, + size_t namelen); +int EVP_PKEY_CTX_set_rsa_pss_keygen_mgf1_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); +int EVP_PKEY_CTX_set_rsa_pss_keygen_mgf1_md_name(EVP_PKEY_CTX *ctx, + const char *mdname); + +int EVP_PKEY_CTX_set_rsa_pss_keygen_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); +int EVP_PKEY_CTX_set_rsa_pss_keygen_md_name(EVP_PKEY_CTX *ctx, + const char *mdname, + const char *mdprops); + +int EVP_PKEY_CTX_set_rsa_oaep_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); +int EVP_PKEY_CTX_set_rsa_oaep_md_name(EVP_PKEY_CTX *ctx, const char *mdname, + const char *mdprops); +int EVP_PKEY_CTX_get_rsa_oaep_md(EVP_PKEY_CTX *ctx, const EVP_MD **md); +int EVP_PKEY_CTX_get_rsa_oaep_md_name(EVP_PKEY_CTX *ctx, char *name, + size_t namelen); +int EVP_PKEY_CTX_set0_rsa_oaep_label(EVP_PKEY_CTX *ctx, void *label, int llen); +int EVP_PKEY_CTX_get0_rsa_oaep_label(EVP_PKEY_CTX *ctx, unsigned char **label); + +# define EVP_PKEY_CTRL_RSA_PADDING (EVP_PKEY_ALG_CTRL + 1) +# define EVP_PKEY_CTRL_RSA_PSS_SALTLEN (EVP_PKEY_ALG_CTRL + 2) + +# define EVP_PKEY_CTRL_RSA_KEYGEN_BITS (EVP_PKEY_ALG_CTRL + 3) +# define EVP_PKEY_CTRL_RSA_KEYGEN_PUBEXP (EVP_PKEY_ALG_CTRL + 4) +# define EVP_PKEY_CTRL_RSA_MGF1_MD (EVP_PKEY_ALG_CTRL + 5) + +# define EVP_PKEY_CTRL_GET_RSA_PADDING (EVP_PKEY_ALG_CTRL + 6) +# define EVP_PKEY_CTRL_GET_RSA_PSS_SALTLEN (EVP_PKEY_ALG_CTRL + 7) +# define EVP_PKEY_CTRL_GET_RSA_MGF1_MD (EVP_PKEY_ALG_CTRL + 8) + +# define EVP_PKEY_CTRL_RSA_OAEP_MD (EVP_PKEY_ALG_CTRL + 9) +# define EVP_PKEY_CTRL_RSA_OAEP_LABEL (EVP_PKEY_ALG_CTRL + 10) + +# define EVP_PKEY_CTRL_GET_RSA_OAEP_MD (EVP_PKEY_ALG_CTRL + 11) +# define EVP_PKEY_CTRL_GET_RSA_OAEP_LABEL (EVP_PKEY_ALG_CTRL + 12) + +# define EVP_PKEY_CTRL_RSA_KEYGEN_PRIMES (EVP_PKEY_ALG_CTRL + 13) + +# define EVP_PKEY_CTRL_RSA_IMPLICIT_REJECTION (EVP_PKEY_ALG_CTRL + 14) + + +# define RSA_PKCS1_PADDING 1 +# define RSA_NO_PADDING 3 +# define RSA_PKCS1_OAEP_PADDING 4 +# define RSA_X931_PADDING 5 + +/* EVP_PKEY_ only */ +# define RSA_PKCS1_PSS_PADDING 6 +# define RSA_PKCS1_WITH_TLS_PADDING 7 + +/* internal RSA_ only */ +# define RSA_PKCS1_NO_IMPLICIT_REJECT_PADDING 8 + +# define RSA_PKCS1_PADDING_SIZE 11 + +# define RSA_set_app_data(s,arg) RSA_set_ex_data(s,0,arg) +# define RSA_get_app_data(s) RSA_get_ex_data(s,0) + +RSA *RSA_new(void); +RSA *RSA_new_method(ENGINE *engine); +int RSA_bits(const RSA *rsa); +int RSA_size(const RSA *rsa); +int RSA_security_bits(const RSA *rsa); + +int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d); +int RSA_set0_factors(RSA *r, BIGNUM *p, BIGNUM *q); +int RSA_set0_crt_params(RSA *r, + BIGNUM *dmp1, BIGNUM *dmq1, + BIGNUM *iqmp); +int RSA_set0_multi_prime_params(RSA *r, + BIGNUM *primes[], + BIGNUM *exps[], + BIGNUM *coeffs[], + int pnum); +void RSA_get0_key(const RSA *r, + const BIGNUM **n, const BIGNUM **e, + const BIGNUM **d); +void RSA_get0_factors(const RSA *r, + const BIGNUM **p, const BIGNUM **q); +int RSA_get_multi_prime_extra_count(const RSA *r); +int RSA_get0_multi_prime_factors(const RSA *r, + const BIGNUM *primes[]); +void RSA_get0_crt_params(const RSA *r, + const BIGNUM **dmp1, + const BIGNUM **dmq1, + const BIGNUM **iqmp); + +int RSA_get0_multi_prime_crt_params(const RSA *r, const BIGNUM *exps[], + const BIGNUM *coeffs[]); +const BIGNUM *RSA_get0_n(const RSA *d); +const BIGNUM *RSA_get0_e(const RSA *d); +const BIGNUM *RSA_get0_d(const RSA *d); +const BIGNUM *RSA_get0_p(const RSA *d); +const BIGNUM *RSA_get0_q(const RSA *d); +const BIGNUM *RSA_get0_dmp1(const RSA *r); +const BIGNUM *RSA_get0_dmq1(const RSA *r); +const BIGNUM *RSA_get0_iqmp(const RSA *r); +const RSA_PSS_PARAMS *RSA_get0_pss_params(const RSA *r); +void RSA_clear_flags(RSA *r, int flags); +int RSA_test_flags(const RSA *r, int flags); +void RSA_set_flags(RSA *r, int flags); +int RSA_get_version(RSA *r); +ENGINE *RSA_get0_engine(const RSA *r); + +# define EVP_RSA_gen(bits) \ + EVP_PKEY_Q_keygen(NULL, NULL, "RSA", (size_t)(0 + (bits))) + +/* Deprecated version */ +RSA *RSA_generate_key(int bits, unsigned long e, void + (*callback) (int, int, void *), + void *cb_arg); + +/* New version */ +int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e, + BN_GENCB *cb); +/* Multi-prime version */ +int RSA_generate_multi_prime_key(RSA *rsa, int bits, + int primes, BIGNUM *e, + BN_GENCB *cb); + + +int RSA_X931_derive_ex(RSA *rsa, BIGNUM *p1, BIGNUM *p2, + BIGNUM *q1, BIGNUM *q2, + const BIGNUM *Xp1, const BIGNUM *Xp2, + const BIGNUM *Xp, const BIGNUM *Xq1, + const BIGNUM *Xq2, const BIGNUM *Xq, + const BIGNUM *e, BN_GENCB *cb); +int RSA_X931_generate_key_ex(RSA *rsa, int bits, + const BIGNUM *e, + BN_GENCB *cb); + +int RSA_check_key(const RSA *); +int RSA_check_key_ex(const RSA *, BN_GENCB *cb); + /* next 4 return -1 on error */ + +int RSA_public_encrypt(int flen, const unsigned char *from, unsigned char *to, + RSA *rsa, int padding); + +int RSA_private_encrypt(int flen, const unsigned char *from, unsigned char *to, + RSA *rsa, int padding); + +int RSA_public_decrypt(int flen, const unsigned char *from, unsigned char *to, + RSA *rsa, int padding); + +int RSA_private_decrypt(int flen, const unsigned char *from, unsigned char *to, + RSA *rsa, int padding); +void RSA_free(RSA *r); +/* "up" the RSA object's reference count */ +int RSA_up_ref(RSA *r); +int RSA_flags(const RSA *r); + +void RSA_set_default_method(const RSA_METHOD *meth); +const RSA_METHOD *RSA_get_default_method(void); +const RSA_METHOD *RSA_null_method(void); +const RSA_METHOD *RSA_get_method(const RSA *rsa); +int RSA_set_method(RSA *rsa, const RSA_METHOD *meth); + +/* these are the actual RSA functions */ +const RSA_METHOD *RSA_PKCS1_OpenSSL(void); + + +int RSA_pkey_ctx_ctrl(EVP_PKEY_CTX *ctx, int optype, int cmd, int p1, void *p2); + +struct rsa_pss_params_st { + X509_ALGOR *hashAlgorithm; + X509_ALGOR *maskGenAlgorithm; + ASN1_INTEGER *saltLength; + ASN1_INTEGER *trailerField; + /* Decoded hash algorithm from maskGenAlgorithm */ + X509_ALGOR *maskHash; +}; + +// DECLARE_ASN1_FUNCTIONS(RSA_PSS_PARAMS) +// DECLARE_ASN1_DUP_FUNCTION(RSA_PSS_PARAMS) + +typedef struct rsa_oaep_params_st { + X509_ALGOR *hashFunc; + X509_ALGOR *maskGenFunc; + X509_ALGOR *pSourceFunc; + /* Decoded hash algorithm from maskGenFunc */ + X509_ALGOR *maskHash; +} RSA_OAEP_PARAMS; + +// DECLARE_ASN1_FUNCTIONS(RSA_OAEP_PARAMS) + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# ifndef OPENSSL_NO_STDIO +int RSA_print_fp(FILE *fp, const RSA *r, int offset); +# endif + +int RSA_print(BIO *bp, const RSA *r, int offset); + +/* + * The following 2 functions sign and verify a X509_SIG ASN1 object inside + * PKCS#1 padded RSA encryption + */ +int RSA_sign(int type, const unsigned char *m, + unsigned int m_length, unsigned char *sigret, + unsigned int *siglen, RSA *rsa); +int RSA_verify(int type, const unsigned char *m, + unsigned int m_length, + const unsigned char *sigbuf, + unsigned int siglen, RSA *rsa); + +/* + * The following 2 function sign and verify a ASN1_OCTET_STRING object inside + * PKCS#1 padded RSA encryption + */ + +int RSA_sign_ASN1_OCTET_STRING(int type, + const unsigned char *m, unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, + RSA *rsa); + +int RSA_verify_ASN1_OCTET_STRING(int type, + const unsigned char *m, unsigned int m_length, + unsigned char *sigbuf, unsigned int siglen, + RSA *rsa); + +int RSA_blinding_on(RSA *rsa, BN_CTX *ctx); +void RSA_blinding_off(RSA *rsa); +BN_BLINDING *RSA_setup_blinding(RSA *rsa, BN_CTX *ctx); + + +int RSA_padding_add_PKCS1_type_1(unsigned char *to, int tlen, + const unsigned char *f, int fl); + +int RSA_padding_check_PKCS1_type_1(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); + +int RSA_padding_add_PKCS1_type_2(unsigned char *to, int tlen, + const unsigned char *f, int fl); + +int RSA_padding_check_PKCS1_type_2(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +int PKCS1_MGF1(unsigned char *mask, long len, + const unsigned char *seed, long seedlen, + const EVP_MD *dgst); + +int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen, + const unsigned char *f, int fl, + const unsigned char *p, int pl); + +int RSA_padding_check_PKCS1_OAEP(unsigned char *to, int tlen, + const unsigned char *f, int fl, int rsa_len, + const unsigned char *p, int pl); + +int RSA_padding_add_PKCS1_OAEP_mgf1(unsigned char *to, int tlen, + const unsigned char *from, int flen, + const unsigned char *param, int plen, + const EVP_MD *md, const EVP_MD *mgf1md); + +int RSA_padding_check_PKCS1_OAEP_mgf1(unsigned char *to, int tlen, + const unsigned char *from, int flen, + int num, + const unsigned char *param, int plen, + const EVP_MD *md, const EVP_MD *mgf1md); +int RSA_padding_add_none(unsigned char *to, int tlen, + const unsigned char *f, int fl); +int RSA_padding_check_none(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +int RSA_padding_add_X931(unsigned char *to, int tlen, + const unsigned char *f, int fl); +int RSA_padding_check_X931(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +int RSA_X931_hash_id(int nid); + + +int RSA_verify_PKCS1_PSS(RSA *rsa, const unsigned char *mHash, + const EVP_MD *Hash, const unsigned char *EM, + int sLen); + +int RSA_padding_add_PKCS1_PSS(RSA *rsa, unsigned char *EM, + const unsigned char *mHash, const EVP_MD *Hash, + int sLen); + + +int RSA_verify_PKCS1_PSS_mgf1(RSA *rsa, const unsigned char *mHash, + const EVP_MD *Hash, const EVP_MD *mgf1Hash, + const unsigned char *EM, int sLen); + + +int RSA_padding_add_PKCS1_PSS_mgf1(RSA *rsa, unsigned char *EM, + const unsigned char *mHash, + const EVP_MD *Hash, const EVP_MD *mgf1Hash, + int sLen); + +# define RSA_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_RSA, l, p, newf, dupf, freef) +int RSA_set_ex_data(RSA *r, int idx, void *arg); +void *RSA_get_ex_data(const RSA *r, int idx); + +// DECLARE_ASN1_DUP_FUNCTION_name_attr(, RSA, RSAPublicKey) +// DECLARE_ASN1_DUP_FUNCTION_name_attr(, RSA, RSAPrivateKey) + +/* + * If this flag is set the RSA method is FIPS compliant and can be used in + * FIPS mode. This is set in the validated module method. If an application + * sets this flag in its own methods it is its responsibility to ensure the + * result is compliant. + */ + +# define RSA_FLAG_FIPS_METHOD 0x0400 + +/* + * If this flag is set the operations normally disabled in FIPS mode are + * permitted it is then the applications responsibility to ensure that the + * usage is compliant. + */ + +# define RSA_FLAG_NON_FIPS_ALLOW 0x0400 +/* + * Application has decided PRNG is good enough to generate a key: don't + * check. + */ +# define RSA_FLAG_CHECKED 0x0800 + +RSA_METHOD *RSA_meth_new(const char *name, int flags); +void RSA_meth_free(RSA_METHOD *meth); +RSA_METHOD *RSA_meth_dup(const RSA_METHOD *meth); +const char *RSA_meth_get0_name(const RSA_METHOD *meth); +int RSA_meth_set1_name(RSA_METHOD *meth, + const char *name); +int RSA_meth_get_flags(const RSA_METHOD *meth); +int RSA_meth_set_flags(RSA_METHOD *meth, int flags); +void *RSA_meth_get0_app_data(const RSA_METHOD *meth); +int RSA_meth_set0_app_data(RSA_METHOD *meth, + void *app_data); + +int (*RSA_meth_get_pub_enc(const RSA_METHOD *meth)) (int flen, + const unsigned char *from, + unsigned char *to, + RSA *rsa, int padding); + +int RSA_meth_set_pub_enc(RSA_METHOD *rsa, + int (*pub_enc) (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); + +int (*RSA_meth_get_pub_dec(const RSA_METHOD *meth)) (int flen, + const unsigned char *from, + unsigned char *to, + RSA *rsa, int padding); + +int RSA_meth_set_pub_dec(RSA_METHOD *rsa, + int (*pub_dec) (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); + +int (*RSA_meth_get_priv_enc(const RSA_METHOD *meth)) (int flen, + const unsigned char *from, + unsigned char *to, + RSA *rsa, int padding); + +int RSA_meth_set_priv_enc(RSA_METHOD *rsa, + int (*priv_enc) (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); + +int (*RSA_meth_get_priv_dec(const RSA_METHOD *meth)) (int flen, + const unsigned char *from, + unsigned char *to, + RSA *rsa, int padding); + +int RSA_meth_set_priv_dec(RSA_METHOD *rsa, + int (*priv_dec) (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); + +int (*RSA_meth_get_mod_exp(const RSA_METHOD *meth)) (BIGNUM *r0, + const BIGNUM *i, + RSA *rsa, BN_CTX *ctx); + +int RSA_meth_set_mod_exp(RSA_METHOD *rsa, + int (*mod_exp) (BIGNUM *r0, const BIGNUM *i, RSA *rsa, + BN_CTX *ctx)); + +int (*RSA_meth_get_bn_mod_exp(const RSA_METHOD *meth)) (BIGNUM *r, + const BIGNUM *a, + const BIGNUM *p, + const BIGNUM *m, + BN_CTX *ctx, + BN_MONT_CTX *m_ctx); + +int RSA_meth_set_bn_mod_exp(RSA_METHOD *rsa, + int (*bn_mod_exp) (BIGNUM *r, + const BIGNUM *a, + const BIGNUM *p, + const BIGNUM *m, + BN_CTX *ctx, + BN_MONT_CTX *m_ctx)); + +int (*RSA_meth_get_init(const RSA_METHOD *meth)) (RSA *rsa); + +int RSA_meth_set_init(RSA_METHOD *rsa, int (*init) (RSA *rsa)); + +int (*RSA_meth_get_finish(const RSA_METHOD *meth)) (RSA *rsa); + +int RSA_meth_set_finish(RSA_METHOD *rsa, int (*finish) (RSA *rsa)); + +int (*RSA_meth_get_sign(const RSA_METHOD *meth)) (int type, + const unsigned char *m, + unsigned int m_length, + unsigned char *sigret, + unsigned int *siglen, + const RSA *rsa); + +int RSA_meth_set_sign(RSA_METHOD *rsa, + int (*sign) (int type, const unsigned char *m, + unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, + const RSA *rsa)); + +int (*RSA_meth_get_verify(const RSA_METHOD *meth)) (int dtype, + const unsigned char *m, + unsigned int m_length, + const unsigned char *sigbuf, + unsigned int siglen, + const RSA *rsa); + +int RSA_meth_set_verify(RSA_METHOD *rsa, + int (*verify) (int dtype, const unsigned char *m, + unsigned int m_length, + const unsigned char *sigbuf, + unsigned int siglen, const RSA *rsa)); + +int (*RSA_meth_get_keygen(const RSA_METHOD *meth)) (RSA *rsa, int bits, + BIGNUM *e, BN_GENCB *cb); + +int RSA_meth_set_keygen(RSA_METHOD *rsa, + int (*keygen) (RSA *rsa, int bits, BIGNUM *e, + BN_GENCB *cb)); + +int (*RSA_meth_get_multi_prime_keygen(const RSA_METHOD *meth)) (RSA *rsa, + int bits, + int primes, + BIGNUM *e, + BN_GENCB *cb); + +int RSA_meth_set_multi_prime_keygen(RSA_METHOD *meth, + int (*keygen) (RSA *rsa, int bits, + int primes, BIGNUM *e, + BN_GENCB *cb)); +#endif /* !OPENSSL_NO_DEPRECATED_3_0 */ + +# ifdef __cplusplus +} +# endif +#endif \ No newline at end of file diff --git a/cpp/ql/test/experimental/stubs/openssl/type_stubs.h b/cpp/ql/test/experimental/stubs/openssl/type_stubs.h new file mode 100644 index 00000000000..f14e3923447 --- /dev/null +++ b/cpp/ql/test/experimental/stubs/openssl/type_stubs.h @@ -0,0 +1,702 @@ +#pragma once + +#define NULL 0 + +typedef unsigned long size_t; + +typedef unsigned char uint8_t; +typedef unsigned int uint32_t; +typedef unsigned long long uint64_t; + +typedef int OSSL_PROVIDER; + +typedef int OSSL_FUNC_keymgmt_import_fn; + +typedef int OSSL_FUNC_digest_get_ctx_params_fn; + +typedef int OSSL_FUNC_cipher_settable_ctx_params_fn; + +typedef int OSSL_FUNC_mac_set_ctx_params_fn; + +typedef int OSSL_FUNC_signature_digest_verify_update_fn; + +typedef int OSSL_FUNC_provider_get_reason_strings_fn; + +typedef int OSSL_FUNC_core_get_params_fn; + +typedef int OSSL_FUNC_rand_get_seed_fn; + +typedef int OSSL_FUNC_rand_instantiate_fn; + +typedef int OSSL_FUNC_keymgmt_gen_get_params_fn; + +typedef int EVP_PKEY_gen_cb; + +typedef int OSSL_FUNC_provider_unquery_operation_fn; + +typedef int OSSL_FUNC_cleanup_user_entropy_fn; + +typedef int OSSL_FUNC_asym_cipher_decrypt_fn; + +typedef int OSSL_FUNC_cipher_pipeline_decrypt_init_fn; + +typedef int X509_PUBKEY; + +typedef int OSSL_FUNC_BIO_puts_fn; + +typedef int OSSL_FUNC_signature_verify_fn; + +typedef int OSSL_FUNC_encoder_gettable_params_fn; + +typedef int OSSL_FUNC_keymgmt_validate_fn; + +typedef int EVP_PBE_KEYGEN_EX; + +typedef int OSSL_FUNC_keyexch_dupctx_fn; + +typedef int OSSL_FUNC_kdf_newctx_fn; + +typedef int OSSL_FUNC_signature_digest_verify_final_fn; + +typedef int OSSL_FUNC_signature_set_ctx_params_fn; + +typedef int OSSL_FUNC_rand_reseed_fn; + +typedef int OSSL_FUNC_SSL_QUIC_TLS_crypto_release_rcd_fn; + +typedef int OSSL_FUNC_store_open_fn; + +typedef int OSSL_FUNC_encoder_newctx_fn; + +typedef int EVP_KEYMGMT; + +typedef int OSSL_FUNC_core_vset_error_fn; + +typedef int EVP_KEYEXCH; + +typedef int OSSL_FUNC_signature_gettable_ctx_md_params_fn; + +typedef int OSSL_FUNC_CRYPTO_secure_free_fn; + +typedef int OSSL_FUNC_keymgmt_import_types_fn; + +typedef int OSSL_FUNC_signature_sign_message_update_fn; + +typedef int OSSL_FUNC_keymgmt_gen_gettable_params_fn; + +typedef int OSSL_FUNC_cipher_update_fn; + +typedef int OSSL_FUNC_mac_newctx_fn; + +typedef int OSSL_FUNC_keymgmt_set_params_fn; + +typedef int X509_ALGOR; + +typedef int OSSL_FUNC_signature_get_ctx_params_fn; + +typedef int ASN1_ITEM; + +typedef int EVP_SIGNATURE; + +typedef int OSSL_FUNC_CRYPTO_realloc_fn; + +typedef int OSSL_FUNC_BIO_new_file_fn; + +typedef int OSSL_FUNC_signature_sign_message_final_fn; + +typedef int OSSL_FUNC_cipher_newctx_fn; + +typedef int OSSL_FUNC_rand_nonce_fn; + +typedef int EVP_MD; + +typedef int OSSL_FUNC_kdf_reset_fn; + +typedef int OSSL_FUNC_keyexch_settable_ctx_params_fn; + +typedef int OSSL_FUNC_store_export_object_fn; + +typedef int OSSL_FUNC_CRYPTO_secure_allocated_fn; + +typedef int OSSL_FUNC_cipher_pipeline_update_fn; + +typedef int OSSL_FUNC_keyexch_freectx_fn; + +typedef int OSSL_FUNC_kdf_gettable_params_fn; + +typedef int OSSL_FUNC_rand_set_ctx_params_fn; + +typedef int OSSL_FUNC_signature_verify_message_init_fn; + +typedef int OSSL_FUNC_keymgmt_free_fn; + +typedef int OSSL_FUNC_rand_gettable_ctx_params_fn; + +typedef int OSSL_FUNC_signature_digest_sign_update_fn; + +typedef int OSSL_FUNC_keymgmt_has_fn; + +typedef int OSSL_FUNC_kdf_get_ctx_params_fn; + +typedef int OSSL_FUNC_provider_get0_dispatch_fn; + +typedef int OSSL_FUNC_signature_verify_message_update_fn; + +typedef int OSSL_FUNC_rand_lock_fn; + +typedef int EVP_KEM; + +typedef int OSSL_FUNC_BIO_read_ex_fn; + +typedef int X509_SIG_INFO; + +typedef int OSSL_FUNC_keymgmt_import_types_ex_fn; + +typedef int OSSL_FUNC_encoder_free_object_fn; + +typedef int OSSL_FUNC_asym_cipher_decrypt_init_fn; + +typedef int OSSL_FUNC_SSL_QUIC_TLS_alert_fn; + +typedef int OSSL_FUNC_cipher_get_params_fn; + +typedef int OSSL_FUNC_get_nonce_fn; + +typedef int ASN1_OBJECT; + +typedef int OSSL_LIB_CTX; + +typedef int OSSL_FUNC_keymgmt_gen_set_params_fn; + +typedef int OSSL_FUNC_provider_deregister_child_cb_fn; + +typedef int OSSL_PARAM; + +typedef int OSSL_FUNC_decoder_gettable_params_fn; + +typedef int OSSL_FUNC_cipher_pipeline_final_fn; + +typedef int OSSL_FUNC_signature_freectx_fn; + +typedef int EVP_PKEY_METHOD; + +typedef int OSSL_FUNC_CRYPTO_zalloc_fn; + +typedef int OSSL_FUNC_keymgmt_query_operation_name_fn; + +typedef int OSSL_FUNC_core_set_error_mark_fn; + +typedef int OSSL_FUNC_asym_cipher_gettable_ctx_params_fn; + +typedef int OSSL_FUNC_CRYPTO_free_fn; + +typedef int OSSL_FUNC_indicator_cb_fn; + +typedef int OSSL_FUNC_kdf_freectx_fn; + +typedef int ENGINE; + +typedef int EVP_PKEY; + +typedef int PKCS8_PRIV_KEY_INFO; + +typedef int OSSL_FUNC_signature_digest_verify_fn; + +typedef int OSSL_FUNC_mac_final_fn; + +typedef int OSSL_FUNC_core_pop_error_to_mark_fn; + +typedef int OSSL_FUNC_signature_verify_recover_fn; + +typedef int OSSL_FUNC_keymgmt_gen_settable_params_fn; + +typedef int OSSL_FUNC_provider_self_test_fn; + +typedef int OSSL_FUNC_digest_gettable_params_fn; + +typedef int OSSL_FUNC_CRYPTO_secure_malloc_fn; + +typedef int OSSL_FUNC_keymgmt_get_params_fn; + +typedef int OSSL_FUNC_mac_freectx_fn; + +typedef int OSSL_FUNC_cleanup_user_nonce_fn; + +typedef int EVP_SKEYMGMT; + +typedef int OSSL_FUNC_core_set_error_debug_fn; + +typedef int OSSL_FUNC_cipher_decrypt_skey_init_fn; + +typedef int OSSL_FUNC_BIO_new_membuf_fn; + +typedef int OSSL_FUNC_provider_query_operation_fn; + +typedef int OSSL_FUNC_signature_set_ctx_md_params_fn; + +typedef int OSSL_FUNC_encoder_does_selection_fn; + +typedef int OSSL_FUNC_kem_get_ctx_params_fn; + +typedef int OSSL_FUNC_cipher_gettable_params_fn; + +typedef int OSSL_FUNC_digest_final_fn; + +typedef int OSSL_FUNC_rand_generate_fn; + +typedef int EVP_PKEY_CTX; + +typedef int OSSL_FUNC_kem_decapsulate_fn; + +typedef int OSSL_FUNC_skeymgmt_generate_fn; + +typedef int OSSL_FUNC_asym_cipher_encrypt_init_fn; + +typedef int OSSL_FUNC_kdf_get_params_fn; + +typedef int OSSL_FUNC_cipher_encrypt_skey_init_fn; + +typedef int OSSL_FUNC_encoder_get_params_fn; + +typedef int OSSL_FUNC_asym_cipher_freectx_fn; + +typedef int OSSL_FUNC_CRYPTO_secure_clear_free_fn; + +typedef int OSSL_FUNC_store_load_fn; + +typedef int OSSL_FUNC_digest_update_fn; + +typedef int OSSL_FUNC_provider_up_ref_fn; + +typedef int OSSL_FUNC_SSL_QUIC_TLS_crypto_recv_rcd_fn; + +typedef int OSSL_FUNC_signature_digest_sign_init_fn; + +typedef int OSSL_FUNC_keymgmt_load_fn; + +typedef int OSSL_FUNC_keyexch_gettable_ctx_params_fn; + +typedef int OSSL_FUNC_rand_get_params_fn; + +typedef int OSSL_FUNC_rand_verify_zeroization_fn; + +typedef int OSSL_FUNC_skeymgmt_export_fn; + +typedef int OSSL_FUNC_BIO_free_fn; + +typedef int OSSL_FUNC_rand_settable_ctx_params_fn; + +typedef int OSSL_FUNC_cleanup_entropy_fn; + +typedef int OSSL_FUNC_encoder_settable_ctx_params_fn; + +typedef int OSSL_DISPATCH; + +typedef int OSSL_FUNC_OPENSSL_cleanse_fn; + +typedef int OSSL_FUNC_digest_dupctx_fn; + +typedef int OSSL_FUNC_kem_decapsulate_init_fn; + +typedef int EVP_MAC_CTX; + +typedef int OSSL_FUNC_digest_squeeze_fn; + +typedef int OSSL_FUNC_keyexch_set_ctx_params_fn; + +typedef int EVP_ENCODE_CTX; + +typedef int OSSL_FUNC_BIO_vsnprintf_fn; + +typedef int OSSL_FUNC_mac_dupctx_fn; + +typedef int OSSL_FUNC_kdf_derive_fn; + +typedef int OSSL_FUNC_encoder_set_ctx_params_fn; + +typedef int OSSL_FUNC_rand_freectx_fn; + +typedef int OSSL_FUNC_BIO_ctrl_fn; + +typedef int EVP_CIPHER; + +typedef int OSSL_FUNC_cipher_set_ctx_params_fn; + +typedef int OSSL_FUNC_rand_enable_locking_fn; + +typedef int OSSL_FUNC_keyexch_newctx_fn; + +typedef int OSSL_FUNC_signature_settable_ctx_params_fn; + +typedef int OSSL_FUNC_provider_gettable_params_fn; + +typedef int OSSL_FUNC_keymgmt_gen_set_template_fn; + +typedef int OSSL_FUNC_keymgmt_settable_params_fn; + +typedef int OSSL_FUNC_keymgmt_gen_cleanup_fn; + +typedef int OSSL_FUNC_kdf_set_ctx_params_fn; + +typedef int OSSL_FUNC_rand_unlock_fn; + +typedef int OSSL_FUNC_SSL_QUIC_TLS_yield_secret_fn; + +typedef int OSSL_FUNC_signature_digest_sign_fn; + +typedef int OSSL_FUNC_keymgmt_gettable_params_fn; + +typedef int OSSL_FUNC_kem_auth_encapsulate_init_fn; + +typedef int OSSL_FUNC_kem_encapsulate_fn; + +typedef int OSSL_FUNC_CRYPTO_secure_zalloc_fn; + +typedef int OSSL_FUNC_rand_get_ctx_params_fn; + +typedef int OSSL_FUNC_store_delete_fn; + +typedef int OSSL_FUNC_cipher_pipeline_encrypt_init_fn; + +typedef int OSSL_FUNC_cipher_dupctx_fn; + +typedef int OSSL_FUNC_store_settable_ctx_params_fn; + +typedef int FILE; + +typedef int OSSL_FUNC_provider_teardown_fn; + +typedef int OSSL_FUNC_kdf_dupctx_fn; + +typedef int OSSL_FUNC_decoder_newctx_fn; + +typedef int OSSL_FUNC_core_clear_last_error_mark_fn; + +typedef int OSSL_FUNC_core_obj_create_fn; + +typedef int OSSL_FUNC_keyexch_init_fn; + +typedef int OSSL_FUNC_kem_gettable_ctx_params_fn; + +typedef int EVP_MD_CTX; + +typedef int OSSL_FUNC_decoder_decode_fn; + +typedef int OSSL_FUNC_mac_gettable_params_fn; + +typedef int OSSL_FUNC_kem_set_ctx_params_fn; + +typedef int OSSL_FUNC_encoder_encode_fn; + +typedef int OSSL_FUNC_core_gettable_params_fn; + +typedef int OSSL_FUNC_mac_gettable_ctx_params_fn; + +typedef int OSSL_FUNC_get_user_entropy_fn; + +typedef int OSSL_FUNC_kdf_gettable_ctx_params_fn; + +typedef int OSSL_FUNC_keymgmt_gen_fn; + +typedef int OSSL_FUNC_keyexch_set_peer_fn; + +typedef int OSSL_FUNC_core_obj_add_sigid_fn; + +typedef int OSSL_FUNC_keymgmt_export_types_ex_fn; + +typedef int OSSL_FUNC_kem_newctx_fn; + +typedef int OSSL_FUNC_signature_sign_init_fn; + +typedef int OSSL_FUNC_asym_cipher_get_ctx_params_fn; + +typedef int OSSL_FUNC_CRYPTO_clear_free_fn; + +typedef int OSSL_FUNC_encoder_freectx_fn; + +typedef int OSSL_FUNC_kem_freectx_fn; + +typedef int OSSL_FUNC_provider_get0_provider_ctx_fn; + +typedef int OSSL_FUNC_digest_copyctx_fn; + +typedef int OSSL_FUNC_provider_name_fn; + +typedef int OSSL_FUNC_cipher_decrypt_init_fn; + +typedef int EVP_PKEY_ASN1_METHOD; + +typedef int OSSL_FUNC_keyexch_get_ctx_params_fn; + +typedef int OSSL_FUNC_store_set_ctx_params_fn; + +typedef int ASN1_TYPE; + +typedef int OSSL_FUNC_skeymgmt_imp_settable_params_fn; + +typedef int OSSL_FUNC_cipher_get_ctx_params_fn; + +typedef int EVP_MAC; + +typedef int OSSL_FUNC_store_attach_fn; + +typedef int OSSL_FUNC_signature_get_ctx_md_params_fn; + +typedef int OSSL_FUNC_encoder_import_object_fn; + +typedef int OSSL_FUNC_cleanup_nonce_fn; + +typedef int OSSL_FUNC_kem_auth_decapsulate_init_fn; + +typedef int OSSL_CALLBACK; + +typedef int OSSL_FUNC_skeymgmt_import_fn; + +typedef int OSSL_FUNC_cipher_freectx_fn; + +typedef int OSSL_FUNC_asym_cipher_dupctx_fn; + +typedef int OSSL_FUNC_SSL_QUIC_TLS_crypto_send_fn; + +typedef int OSSL_FUNC_CRYPTO_clear_realloc_fn; + +typedef int OSSL_FUNC_signature_verify_recover_init_fn; + +typedef int OSSL_FUNC_provider_free_fn; + +typedef int EVP_RAND; + +typedef int OSSL_FUNC_digest_newctx_fn; + +typedef int OSSL_FUNC_cipher_final_fn; + +typedef int OSSL_FUNC_keymgmt_new_fn; + +typedef int EVP_CIPHER_CTX; + +typedef int OSSL_FUNC_decoder_does_selection_fn; + +typedef int OSSL_FUNC_signature_digest_verify_init_fn; + +typedef int OSSL_FUNC_digest_set_ctx_params_fn; + +typedef int OSSL_FUNC_rand_newctx_fn; + +typedef int OSSL_FUNC_BIO_vprintf_fn; + +typedef int OSSL_FUNC_keymgmt_gen_init_fn; + +typedef int EVP_RAND_CTX; + +typedef int OSSL_FUNC_store_close_fn; + +typedef int OSSL_FUNC_asym_cipher_encrypt_fn; + +typedef int OSSL_FUNC_mac_get_params_fn; + +typedef int OSSL_FUNC_get_entropy_fn; + +typedef int OSSL_FUNC_digest_gettable_ctx_params_fn; + +typedef int OSSL_FUNC_SSL_QUIC_TLS_got_transport_params_fn; + +typedef int OSSL_FUNC_skeymgmt_free_fn; + +typedef int OSSL_FUNC_mac_settable_ctx_params_fn; + +typedef int OSSL_FUNC_decoder_export_object_fn; + +typedef int OSSL_FUNC_rand_clear_seed_fn; + +typedef int OSSL_FUNC_mac_get_ctx_params_fn; + +typedef int OSSL_FUNC_digest_digest_fn; + +typedef int EVP_SKEY; + +typedef int OSSL_FUNC_cipher_gettable_ctx_params_fn; + +typedef int OSSL_FUNC_CRYPTO_malloc_fn; + +typedef int OSSL_FUNC_asym_cipher_settable_ctx_params_fn; + +typedef int OSSL_FUNC_signature_dupctx_fn; + +typedef int OSSL_FUNC_BIO_write_ex_fn; + +typedef int OSSL_FUNC_rand_set_callbacks_fn; + +typedef int OSSL_FUNC_keymgmt_match_fn; + +typedef int OSSL_FUNC_signature_digest_sign_final_fn; + +typedef int OSSL_FUNC_provider_get_params_fn; + +typedef int OSSL_FUNC_BIO_gets_fn; + +typedef int OSSL_FUNC_cipher_encrypt_init_fn; + +typedef int OSSL_FUNC_signature_verify_message_final_fn; + +typedef int BIGNUM; + +typedef int OSSL_FUNC_digest_freectx_fn; + +typedef int OSSL_FUNC_asym_cipher_set_ctx_params_fn; + +typedef int OSSL_FUNC_signature_gettable_ctx_params_fn; + +typedef int BIO; + +typedef int OSSL_FUNC_digest_get_params_fn; + +typedef int OSSL_FUNC_skeymgmt_get_key_id_fn; + +typedef int OSSL_FUNC_rand_uninstantiate_fn; + +typedef int OSSL_FUNC_decoder_get_params_fn; + +typedef int OSSL_FUNC_signature_newctx_fn; + +typedef int OSSL_FUNC_signature_sign_fn; + +typedef int OSSL_FUNC_decoder_set_ctx_params_fn; + +typedef int OSSL_FUNC_kem_dupctx_fn; + +typedef int OSSL_FUNC_get_user_nonce_fn; + +typedef int OSSL_FUNC_mac_init_skey_fn; + +typedef int ASN1_PCTX; + +typedef int OSSL_FUNC_provider_get_capabilities_fn; + +typedef int OSSL_FUNC_provider_register_child_cb_fn; + +typedef int OSSL_FUNC_kem_settable_ctx_params_fn; + +typedef int OSSL_FUNC_signature_query_key_types_fn; + +typedef int OSSL_FUNC_signature_settable_ctx_md_params_fn; + +typedef int OSSL_FUNC_asym_cipher_newctx_fn; + +typedef int OSSL_FUNC_store_open_ex_fn; + +typedef int OSSL_FUNC_keyexch_derive_fn; + +typedef int OSSL_FUNC_kdf_settable_ctx_params_fn; + +typedef int OSSL_FUNC_skeymgmt_gen_settable_params_fn; + +typedef int OSSL_FUNC_digest_settable_ctx_params_fn; + +typedef int OSSL_FUNC_kem_encapsulate_init_fn; + +typedef int OSSL_FUNC_core_new_error_fn; + +typedef int OSSL_FUNC_BIO_up_ref_fn; + +typedef int OSSL_FUNC_self_test_cb_fn; + +typedef int OSSL_FUNC_keymgmt_export_types_fn; + +typedef int OSSL_FUNC_core_get_libctx_fn; + +typedef int OSSL_FUNC_digest_init_fn; + +typedef int EVP_ASYM_CIPHER; + +typedef int OSSL_FUNC_decoder_settable_ctx_params_fn; + +typedef int OSSL_FUNC_signature_sign_message_init_fn; + +typedef int OSSL_FUNC_rand_gettable_params_fn; + +typedef int OSSL_FUNC_mac_update_fn; + +typedef int OSSL_FUNC_keymgmt_export_fn; + +typedef int OSSL_FUNC_provider_random_bytes_fn; + +typedef int OSSL_FUNC_decoder_freectx_fn; + +typedef int OSSL_FUNC_mac_init_fn; + +typedef int OSSL_FUNC_store_eof_fn; + +typedef int OSSL_FUNC_signature_verify_init_fn; + +typedef int EVP_PBE_KEYGEN; + +typedef int OSSL_FUNC_core_thread_start_fn; + +typedef int OSSL_FUNC_cipher_cipher_fn; + +typedef int OSSL_FUNC_keymgmt_dup_fn; + +typedef int RSA; + +typedef int BIGNUM; + +typedef int ENGINE; + +typedef int RSA_METHOD; + +struct asn1_string_st { + int length; + int type; + unsigned char *data; + /* + * The value of the following field depends on the type being held. It + * is mostly being used for BIT_STRING so if the input data has a + * non-zero 'unused bits' value, it will be handled correctly + */ + long flags; +}; + +typedef struct asn1_string_st ASN1_INTEGER; +typedef struct asn1_string_st ASN1_ENUMERATED; +typedef struct asn1_string_st ASN1_BIT_STRING; +typedef struct asn1_string_st ASN1_OCTET_STRING; +typedef struct asn1_string_st ASN1_PRINTABLESTRING; +typedef struct asn1_string_st ASN1_T61STRING; +typedef struct asn1_string_st ASN1_IA5STRING; +typedef struct asn1_string_st ASN1_GENERALSTRING; +typedef struct asn1_string_st ASN1_UNIVERSALSTRING; +typedef struct asn1_string_st ASN1_BMPSTRING; +typedef struct asn1_string_st ASN1_UTCTIME; +typedef struct asn1_string_st ASN1_TIME; +typedef struct asn1_string_st ASN1_GENERALIZEDTIME; +typedef struct asn1_string_st ASN1_VISIBLESTRING; +typedef struct asn1_string_st ASN1_UTF8STRING; +typedef struct asn1_string_st ASN1_STRING; +typedef int ASN1_BOOLEAN; +typedef int ASN1_NULL; + +typedef int EVP_CIPHER_INFO; + +typedef int pem_password_cb; + +typedef int X509_INFO; + +typedef int RSA_PSS_PARAMS; + +typedef int BN_GENCB; + +typedef int BN_CTX; + +typedef int BN_BLINDING; + +typedef int BN_MONT_CTX; + +typedef int d2i_of_void; + +typedef int i2d_of_void; + +typedef int OSSL_i2d_of_void_ctx; + +typedef int DSA; + +typedef int FFC_PARAMS; \ No newline at end of file From 4f2045bbdd17ded9cc660fcef511c3b508430a07 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Mon, 9 Jun 2025 15:07:00 -0400 Subject: [PATCH 020/150] Crypto: CtxFlow now uses an interface for additional steps. Add CTX step to handle paramgen. Remove redundant test. Overhaul of EVP update/initializer/final mechanics. Misc. updates for new API and refactoring EVPKeyGenOperation. Clean up of keygen_operaitons.ql. --- cpp/ql/lib/experimental/quantum/Language.qll | 4 +- .../PKeyAlgorithmValueConsumer.qll | 3 +- .../experimental/quantum/OpenSSL/CtxFlow.qll | 113 ++++++++++++---- .../OpenSSL/Operations/EVPCipherOperation.qll | 38 ++++-- .../OpenSSL/Operations/EVPHashOperation.qll | 32 +++-- .../OpenSSL/Operations/EVPKeyGenOperation.qll | 124 +++++++++++------- .../Operations/OpenSSLOperationBase.qll | 82 +++++++----- .../quantum/openssl/keygen_key_sources.ql | 7 - .../quantum/openssl/keygen_operations.ql | 6 +- 9 files changed, 266 insertions(+), 143 deletions(-) delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/openssl/keygen_key_sources.ql diff --git a/cpp/ql/lib/experimental/quantum/Language.qll b/cpp/ql/lib/experimental/quantum/Language.qll index ebc246291a3..c9058ab9f77 100644 --- a/cpp/ql/lib/experimental/quantum/Language.qll +++ b/cpp/ql/lib/experimental/quantum/Language.qll @@ -13,7 +13,9 @@ module CryptoInput implements InputSig { LocatableElement dfn_to_element(DataFlow::Node node) { result = node.asExpr() or result = node.asParameter() or - result = node.asVariable() + result = node.asVariable() or + result = node.asDefiningArgument() + // TODO: do we need asIndirectExpr()? } string locationToFileBaseNameAndLineNumberString(Location location) { diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/PKeyAlgorithmValueConsumer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/PKeyAlgorithmValueConsumer.qll index 0d40ceeb68a..3321dcbcb1b 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/PKeyAlgorithmValueConsumer.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/PKeyAlgorithmValueConsumer.qll @@ -23,7 +23,8 @@ class EVPPKeyAlgorithmConsumer extends PKeyValueConsumer { or this.(Call).getTarget().getName() in [ "EVP_PKEY_CTX_new_from_name", "EVP_PKEY_new_raw_private_key_ex", - "EVP_PKEY_new_raw_public_key_ex", "EVP_PKEY_CTX_ctrl", "EVP_PKEY_CTX_set_group_name" + "EVP_PKEY_new_raw_public_key_ex", "EVP_PKEY_CTX_ctrl", "EVP_PKEY_CTX_ctrl_uint64", + "EVP_PKEY_CTX_ctrl_str", "EVP_PKEY_CTX_set_group_name" ] and valueArgNode.asExpr() = this.(Call).getArgument(1) or diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/CtxFlow.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/CtxFlow.qll index d1adbcc35c8..9d31f4701e6 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/CtxFlow.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/CtxFlow.qll @@ -28,7 +28,7 @@ import semmle.code.cpp.dataflow.new.DataFlow * - EVP_MD_CTX * - EVP_PKEY_CTX */ -private class CtxType extends Type { +class CtxType extends Type { CtxType() { // It is possible for users to use the underlying type of the CTX variables // these have a name matching 'evp_%ctx_%st @@ -47,7 +47,7 @@ private class CtxType extends Type { /** * A pointer to a CtxType */ -private class CtxPointerExpr extends Expr { +class CtxPointerExpr extends Expr { CtxPointerExpr() { this.getType() instanceof CtxType and this.getType() instanceof PointerType @@ -57,7 +57,7 @@ private class CtxPointerExpr extends Expr { /** * A call argument of type CtxPointerExpr. */ -private class CtxPointerArgument extends CtxPointerExpr { +class CtxPointerArgument extends CtxPointerExpr { CtxPointerArgument() { exists(Call c | c.getAnArgument() = this) } Call getCall() { result.getAnArgument() = this } @@ -83,32 +83,103 @@ private class CtxClearCall extends Call { } } +abstract private class CtxPassThroughCall extends Call { + abstract DataFlow::Node getNode1(); + + abstract DataFlow::Node getNode2(); +} + /** * A call whose target contains 'copy' and has an argument of type * CtxPointerArgument. */ -private class CtxCopyOutArgCall extends Call { +private class CtxCopyOutArgCall extends CtxPassThroughCall { + DataFlow::Node n1; + DataFlow::Node n2; + CtxCopyOutArgCall() { this.getTarget().getName().toLowerCase().matches("%copy%") and - this.getAnArgument() instanceof CtxPointerArgument + n1.asExpr() = this.getAnArgument() and + n1.getType() instanceof CtxType and + n2.asDefiningArgument() = this.getAnArgument() and + n2.getType() instanceof CtxType and + n1.asDefiningArgument() != n2.asExpr() } + + override DataFlow::Node getNode1() { result = n1 } + + override DataFlow::Node getNode2() { result = n2 } } /** * A call whose target contains 'dup' and has an argument of type * CtxPointerArgument. */ -private class CtxCopyReturnCall extends Call, CtxPointerExpr { +private class CtxCopyReturnCall extends CtxPassThroughCall, CtxPointerExpr { + DataFlow::Node n1; + CtxCopyReturnCall() { this.getTarget().getName().toLowerCase().matches("%dup%") and - this.getAnArgument() instanceof CtxPointerArgument + n1.asExpr() = this.getAnArgument() and + n1.getType() instanceof CtxType } + + override DataFlow::Node getNode1() { result = n1 } + + override DataFlow::Node getNode2() { result.asExpr() = this } +} + +/** + * A call to `EVP_PKEY_paramgen` acts as a kind of pass through. + * It's output pkey is eventually used in a new operation generating + * a fresh context pointer (e.g., `EVP_PKEY_CTX_new`). + * It is easier to model this as a pass through + * than to model the flow from the paramgen to the new key generation. + */ +private class CtxParamGenCall extends CtxPassThroughCall { + DataFlow::Node n1; + DataFlow::Node n2; + + CtxParamGenCall() { + this.getTarget().getName() = "EVP_PKEY_paramgen" and + n1.asExpr() = this.getArgument(0) and + ( + n2.asExpr() = this.getArgument(1) + or + n2.asDefiningArgument() = this.getArgument(1) + ) + } + + override DataFlow::Node getNode1() { result = n1 } + + override DataFlow::Node getNode2() { result = n2 } +} + +/** + * If the current node gets is an argument to a function + * that returns a pointer type, immediately flow through. + * NOTE: this passthrough is required if we allow + * intermediate steps to go into variables that are not a CTX type. + * See for example `CtxParamGenCall`. + */ +private class CallArgToCtxRet extends CtxPassThroughCall, CtxPointerExpr { + DataFlow::Node n1; + DataFlow::Node n2; + + CallArgToCtxRet() { + this.getAnArgument() = n1.asExpr() and + n2.asExpr() = this + } + + override DataFlow::Node getNode1() { result = n1 } + + override DataFlow::Node getNode2() { result = n2 } } /** * A source Ctx of interest is any argument or return of type CtxPointerExpr. */ -private class CtxPointerSource extends CtxPointerExpr { +class CtxPointerSource extends CtxPointerExpr { CtxPointerSource() { this instanceof CtxPointerReturn or this instanceof CtxPointerArgument @@ -122,43 +193,31 @@ private class CtxPointerSource extends CtxPointerExpr { } /** - * Flow from any CtxPointerSource to any CtxPointerArgument. + * Flow from any CtxPointerSource to other CtxPointerSource. */ -module OpenSSLCtxSourceToArgumentFlowConfig implements DataFlow::ConfigSig { +module OpenSSLCtxSourceToSourceFlowConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { exists(CtxPointerSource s | s.asNode() = source) } - predicate isSink(DataFlow::Node sink) { sink.asExpr() instanceof CtxPointerArgument } + predicate isSink(DataFlow::Node sink) { exists(CtxPointerSource s | s.asNode() = sink) } predicate isBarrier(DataFlow::Node node) { exists(CtxClearCall c | c.getAnArgument() = node.asExpr()) } predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { - exists(CtxCopyOutArgCall c | - c.getAnArgument() = node1.asExpr() and - c.getAnArgument() = node2.asExpr() and - node1.asExpr() != node2.asExpr() and - node2.asExpr().getType() instanceof CtxType - ) - or - exists(CtxCopyReturnCall c | - c.getAnArgument() = node1.asExpr() and - c = node2.asExpr() and - node1.asExpr() != node2.asExpr() and - node2.asExpr().getType() instanceof CtxType - ) + exists(CtxPassThroughCall c | c.getNode1() = node1 and c.getNode2() = node2) } } -module OpenSSLCtxSourceToArgumentFlow = DataFlow::Global; +module OpenSSLCtxSourceToArgumentFlow = DataFlow::Global; /** * Holds if there is a context flow from the source to the sink. */ -predicate ctxArgOrRetFlowsToCtxArg(CtxPointerSource source, CtxPointerArgument sink) { +predicate ctxSrcToSrcFlow(CtxPointerSource source, CtxPointerSource sink) { exists(DataFlow::Node a, DataFlow::Node b | OpenSSLCtxSourceToArgumentFlow::flow(a, b) and a = source.asNode() and - b.asExpr() = sink + b = sink.asNode() ) } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherOperation.qll index 6ebacd315d0..33ba83a8073 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherOperation.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherOperation.qll @@ -1,5 +1,5 @@ private import experimental.quantum.Language -private import experimental.quantum.OpenSSL.CtxFlow as CTXFlow +private import experimental.quantum.OpenSSL.CtxFlow private import OpenSSLOperationBase private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers @@ -31,7 +31,11 @@ Crypto::KeyOperationSubtype intToCipherOperationSubtype(int i) { } // TODO: need to add key consumer -abstract class EVP_Cipher_Initializer extends EVPInitialize { +abstract class EVP_Cipher_Initializer extends EvpKeyOperationSubtypeInitializer, + EvpAlgorithmInitializer, EvpKeyInitializer, EvpIVInitializer +{ + override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } + override Expr getAlgorithmArg() { result = this.(Call).getArgument(1) } abstract Expr getOperationSubtypeArg(); @@ -94,13 +98,15 @@ class EVP_CipherInit_SKEY_Call extends EVP_EX2_Initializer { override Expr getOperationSubtypeArg() { result = this.(Call).getArgument(5) } } -class EVP_Cipher_Update_Call extends EVPUpdate { +class EVP_Cipher_Update_Call extends EvpUpdate { EVP_Cipher_Update_Call() { this.(Call).getTarget().getName() in [ "EVP_EncryptUpdate", "EVP_DecryptUpdate", "EVP_CipherUpdate" ] } + override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } + override Expr getInputArg() { result = this.(Call).getArgument(3) } override Expr getOutputArg() { result = this.(Call).getArgument(1) } @@ -110,7 +116,7 @@ class EVP_Cipher_Update_Call extends EVPUpdate { * see: https://docs.openssl.org/master/man3/EVP_EncryptInit/#synopsis * Base configuration for all EVP cipher operations. */ -abstract class EVP_Cipher_Operation extends EVPOperation, Crypto::KeyOperationInstance { +abstract class EVP_Cipher_Operation extends EvpOperation, Crypto::KeyOperationInstance { override Expr getOutputArg() { result = this.(Call).getArgument(1) } override Crypto::KeyOperationSubtype getKeyOperationSubtype() { @@ -120,34 +126,38 @@ abstract class EVP_Cipher_Operation extends EVPOperation, Crypto::KeyOperationIn result instanceof Crypto::TDecryptMode and this.(Call).getTarget().getName().toLowerCase().matches("%decrypt%") or - result = this.getInitCall().getKeyOperationSubtype() and + result = this.getInitCall().(EvpKeyOperationSubtypeInitializer).getKeyOperationSubtype() and this.(Call).getTarget().getName().toLowerCase().matches("%cipher%") } override Crypto::ConsumerInputDataFlowNode getNonceConsumer() { - this.getInitCall().getIVArg() = result.asExpr() + this.getInitCall().(EvpIVInitializer).getIVArg() = result.asExpr() } override Crypto::ConsumerInputDataFlowNode getKeyConsumer() { - this.getInitCall().getKeyArg() = result.asExpr() + this.getInitCall().(EvpKeyInitializer).getKeyArg() = result.asExpr() // todo: or track to the EVP_PKEY_CTX_new } override Crypto::ArtifactOutputDataFlowNode getOutputArtifact() { - result = EVPOperation.super.getOutputArtifact() + result = EvpOperation.super.getOutputArtifact() } override Crypto::ConsumerInputDataFlowNode getInputConsumer() { - result = EVPOperation.super.getInputConsumer() + result = EvpOperation.super.getInputConsumer() } } -class EVP_Cipher_Call extends EVPOperation, EVP_Cipher_Operation { +class EVP_Cipher_Call extends EvpOperation, EVP_Cipher_Operation { EVP_Cipher_Call() { this.(Call).getTarget().getName() = "EVP_Cipher" } override Expr getInputArg() { result = this.(Call).getArgument(2) } - override Expr getAlgorithmArg() { result = this.getInitCall().getAlgorithmArg() } + override Expr getAlgorithmArg() { + result = this.getInitCall().(EvpAlgorithmInitializer).getAlgorithmArg() + } + + override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } } class EVP_Cipher_Final_Call extends EVPFinal, EVP_Cipher_Operation { @@ -167,5 +177,9 @@ class EVP_Cipher_Final_Call extends EVPFinal, EVP_Cipher_Operation { result = EVP_Cipher_Operation.super.getOutputArg() } - override Expr getAlgorithmArg() { result = this.getInitCall().getAlgorithmArg() } + override Expr getAlgorithmArg() { + result = this.getInitCall().(EvpAlgorithmInitializer).getAlgorithmArg() + } + + override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashOperation.qll index 40b3e863b60..cfa6ad02bc9 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashOperation.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashOperation.qll @@ -3,11 +3,11 @@ */ private import experimental.quantum.Language -private import experimental.quantum.OpenSSL.CtxFlow as CTXFlow +private import experimental.quantum.OpenSSL.CtxFlow private import OpenSSLOperationBase private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers -abstract class EVP_Hash_Initializer extends EVPInitialize { } +abstract class EVP_Hash_Initializer extends EvpAlgorithmInitializer { } class EVP_DigestInit_Variant_Calls extends EVP_Hash_Initializer { EVP_DigestInit_Variant_Calls() { @@ -17,16 +17,20 @@ class EVP_DigestInit_Variant_Calls extends EVP_Hash_Initializer { } override Expr getAlgorithmArg() { result = this.(Call).getArgument(1) } + + override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } } -class EVP_Digest_Update_Call extends EVPUpdate { +class EVP_Digest_Update_Call extends EvpUpdate { EVP_Digest_Update_Call() { this.(Call).getTarget().getName() = "EVP_DigestUpdate" } override Expr getInputArg() { result = this.(Call).getArgument(1) } + + override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } } //https://docs.openssl.org/3.0/man3/EVP_DigestInit/#synopsis -class EVP_Q_Digest_Operation extends EVPOperation, Crypto::HashOperationInstance { +class EVP_Q_Digest_Operation extends EvpOperation, Crypto::HashOperationInstance { EVP_Q_Digest_Operation() { this.(Call).getTarget().getName() = "EVP_Q_digest" } override Expr getAlgorithmArg() { result = this.(Call).getArgument(1) } @@ -42,19 +46,21 @@ class EVP_Q_Digest_Operation extends EVPOperation, Crypto::HashOperationInstance override Expr getOutputArg() { result = this.(Call).getArgument(5) } override Crypto::ArtifactOutputDataFlowNode getOutputArtifact() { - result = EVPOperation.super.getOutputArtifact() + result = EvpOperation.super.getOutputArtifact() } override Crypto::ConsumerInputDataFlowNode getInputConsumer() { - result = EVPOperation.super.getInputConsumer() + result = EvpOperation.super.getInputConsumer() } + + override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } } -class EVP_Digest_Operation extends EVPOperation, Crypto::HashOperationInstance { +class EVP_Digest_Operation extends EvpOperation, Crypto::HashOperationInstance { EVP_Digest_Operation() { this.(Call).getTarget().getName() = "EVP_Digest" } // There is no context argument for this function - override Expr getContextArg() { none() } + override CtxPointerSource getContextArg() { none() } override Expr getAlgorithmArg() { result = this.(Call).getArgument(4) } @@ -69,11 +75,11 @@ class EVP_Digest_Operation extends EVPOperation, Crypto::HashOperationInstance { override Expr getOutputArg() { result = this.(Call).getArgument(2) } override Crypto::ArtifactOutputDataFlowNode getOutputArtifact() { - result = EVPOperation.super.getOutputArtifact() + result = EvpOperation.super.getOutputArtifact() } override Crypto::ConsumerInputDataFlowNode getInputConsumer() { - result = EVPOperation.super.getInputConsumer() + result = EvpOperation.super.getInputConsumer() } } @@ -84,6 +90,8 @@ class EVP_Digest_Final_Call extends EVPFinal, Crypto::HashOperationInstance { ] } + override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } + override Expr getOutputArg() { result = this.(Call).getArgument(1) } override Crypto::ArtifactOutputDataFlowNode getOutputArtifact() { @@ -94,5 +102,7 @@ class EVP_Digest_Final_Call extends EVPFinal, Crypto::HashOperationInstance { result = EVPFinal.super.getInputConsumer() } - override Expr getAlgorithmArg() { result = this.getInitCall().getAlgorithmArg() } + override Expr getAlgorithmArg() { + result = this.getInitCall().(EvpAlgorithmInitializer).getAlgorithmArg() + } } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPKeyGenOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPKeyGenOperation.qll index 1acf15226a8..877a0d67d7c 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPKeyGenOperation.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPKeyGenOperation.qll @@ -4,7 +4,7 @@ private import OpenSSLOperationBase private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers private import semmle.code.cpp.dataflow.new.DataFlow -class EVPKeyGenInitialize extends EVPInitialize { +class EVPKeyGenInitialize extends EvpAlgorithmInitializer { EVPKeyGenInitialize() { this.(Call).getTarget().getName() in [ "EVP_PKEY_keygen_init", @@ -12,54 +12,88 @@ class EVPKeyGenInitialize extends EVPInitialize { ] } - override Expr getAlgorithmArg() { - // The context argument encodes the algorithm - result = this.getContextArg() - } + /** + * The algorithm is encoded through the context argument. + */ + override Expr getAlgorithmArg() { result = this.getContextArg() } + + override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } } -// /** -// * All calls that can be tracked via ctx. -// * For example calls used to set parameters like a key size. -// */ -// class EVPKeyGenUpdate extends Call { -// EVPKeyGenUpdate() { -// this.(Call).getTarget().getName() in [ -// "EVP_PKEY_CTX_set_rsa_keygen_bits", -// // TODO: "EVP_PKEY_CTX_set_params" -// ] -// } -// /** -// * No input in our meaning. -// */ -// override Expr getInputArg() { none() } -// /** -// * No output in our meaning. -// */ -// override Expr getOutputArg() { none() } -// Expr getKeySizeArg() { -// this.(Call).getTarget().getName() = "EVP_PKEY_CTX_set_rsa_keygen_bits" and -// result = this.(Call).getArgument(1) -// } -// } -class EVPKeyGenOperation extends EVPOperation, Crypto::KeyGenerationOperationInstance { +/** + * A call to `EVP_PKEY_CTX_new` or `EVP_PKEY_CTX_new_from_pkey`. + * These calls initialize the context from a prior key. + * The key may be generated previously, or merely had it's + * parameters set (e.g., `EVP_PKEY_paramgen`). + * NOTE: for the case of `EVP_PKEY_paramgen`, these calls + * are encoded as context passthroughs, and any operation + * will get all associated initializers for teh paramgen + * at the final keygen operation automatically. + */ +class EVPNewKeyCtx extends EvpKeyInitializer { + Expr keyArg; + + EVPNewKeyCtx() { + this.(Call).getTarget().getName() = "EVP_PKEY_CTX_new" and + keyArg = this.(Call).getArgument(0) + or + this.(Call).getTarget().getName() = "EVP_PKEY_CTX_new_from_pkey" and + keyArg = this.(Call).getArgument(1) + } + + /** + * Context is returned + */ + override CtxPointerSource getContextArg() { result = this } + + override Expr getKeyArg() { result = keyArg } + //TODO: do we specify the algorithm from the key as well? +} + +/** + * A call to `EVP_PKEY_CTX_set_rsa_keygen_bits`. + * This sets the key size for RSA key generation. + */ +class EVPSetRSAKeyKeyBits extends EvpKeySizeInitializer { + EVPSetRSAKeyKeyBits() { this.(Call).getTarget().getName() = "EVP_PKEY_CTX_set_rsa_keygen_bits" } + + override Expr getKeySizeArg() { result = this.(Call).getArgument(1) } + + override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } +} + +/** + * A call to `EVP_PKEY_CTX_set_dsa_paramgen_bits`. + * This sets the key size for DSA key generation. + */ +class EVPSetDSAKeyParamGenBits extends EvpKeySizeInitializer { + EVPSetDSAKeyParamGenBits() { + this.(Call).getTarget().getName() = "EVP_PKEY_CTX_set_dsa_paramgen_bits" + } + + override Expr getKeySizeArg() { result = this.(Call).getArgument(1) } + + override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } +} + +class EVPKeyGenOperation extends EVPFinal, Crypto::KeyGenerationOperationInstance { DataFlow::Node keyResultNode; EVPKeyGenOperation() { this.(Call).getTarget().getName() in ["EVP_RSA_gen", "EVP_PKEY_Q_keygen"] and keyResultNode.asExpr() = this or - this.(Call).getTarget().getName() in [ - "EVP_PKEY_generate", "EVP_PKEY_keygen", "EVP_PKEY_paramgen" - ] and + this.(Call).getTarget().getName() in ["EVP_PKEY_generate", "EVP_PKEY_keygen"] and keyResultNode.asDefiningArgument() = this.(Call).getArgument(1) } + override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } + override Expr getAlgorithmArg() { this.(Call).getTarget().getName() = "EVP_PKEY_Q_keygen" and result = this.(Call).getArgument(0) or - result = this.getInitCall().getAlgorithmArg() + result = this.getInitCall().(EvpAlgorithmInitializer).getAlgorithmArg() } override Crypto::KeyArtifactType getOutputKeyType() { result = Crypto::TAsymmetricKeyType() } @@ -71,16 +105,16 @@ class EVPKeyGenOperation extends EVPOperation, Crypto::KeyGenerationOperationIns override Crypto::ArtifactOutputDataFlowNode getOutputKeyArtifact() { result = keyResultNode } override Crypto::ConsumerInputDataFlowNode getKeySizeConsumer() { - none() - // if this.(Call).getTarget().getName() = "EVP_PKEY_Q_keygen" - // then result = DataFlow::exprNode(this.(Call).getArgument(3)) // TODO: may be wrong for EC keys - // else - // if this.(Call).getTarget().getName() = "EVP_RSA_gen" - // then result = DataFlow::exprNode(this.(Call).getArgument(0)) - // else result = DataFlow::exprNode(this.getUpdateCalls().(EVPKeyGenUpdate).getKeySizeArg()) - } - - override int getKeySizeFixed() { - none() // TODO + this.(Call).getTarget().getName() = "EVP_PKEY_Q_keygen" and + result = DataFlow::exprNode(this.(Call).getArgument(3)) and + // Arg 3 (0 based) is only a key size if the 'type' parameter is RSA, however, + // as a crude approximation, assume that if the type of the argument is not a derived type + // the argument must specify a key size (this is to avoid tracing if "rsa" is in the type parameter) + not this.(Call).getArgument(3).getType().getUnderlyingType() instanceof DerivedType + or + this.(Call).getTarget().getName() = "EVP_RSA_gen" and + result = DataFlow::exprNode(this.(Call).getArgument(0)) + or + result = DataFlow::exprNode(this.getInitCall().(EvpKeySizeInitializer).getKeySizeArg()) } } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll index 5c29646b031..37b50aae371 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll @@ -1,5 +1,5 @@ private import experimental.quantum.Language -private import experimental.quantum.OpenSSL.CtxFlow as CTXFlow +private import experimental.quantum.OpenSSL.CtxFlow private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers /** @@ -25,48 +25,59 @@ abstract class OpenSSLOperation extends Crypto::OperationInstance instanceof Cal } /** - * A Call to initialization functions from the EVP API. + * A Call to an initialization function for an operation. * These are not operations in the sense of Crypto::OperationInstance, * but they are used to initialize the context for the operation. + * There may be multiple initialization calls for the same operation. + * Intended for use with EvPOperation. */ -abstract class EVPInitialize extends Call { +abstract class EvpInitializer extends Call { /** * Gets the context argument that ties together initialization, updates and/or final calls. + * The context argument is the context coming into the initializer and is the output as well. + * This is assumed to be the same argument. */ - Expr getContextArg() { result = this.(Call).getArgument(0) } + abstract CtxPointerSource getContextArg(); +} - /** - * Gets the type of key operation, none if not applicable. - */ - Crypto::KeyOperationSubtype getKeyOperationSubtype() { none() } +abstract class EvpKeySizeInitializer extends EvpInitializer { + abstract Expr getKeySizeArg(); +} - /** - * Explicitly specified algorithm or none if implicit (e.g., established by the key). - * None if not applicable. - */ - Expr getAlgorithmArg() { none() } +abstract class EvpKeyOperationSubtypeInitializer extends EvpInitializer { + abstract Crypto::KeyOperationSubtype getKeyOperationSubtype(); +} - /** - * Gets the key for the operation, none if not applicable. - */ - Expr getKeyArg() { none() } +abstract class EvpAlgorithmInitializer extends EvpInitializer { + abstract Expr getAlgorithmArg(); +} - /** - * Gets the IV/nonce, none if not applicable. - */ - Expr getIVArg() { none() } +abstract class EvpKeyInitializer extends EvpInitializer { + //, EvpAlgorithmInitializer { + abstract Expr getKeyArg(); + // /** + // * Any key arg can potentially be traced to find the algorithm used to generate the key. + // */ + // override Expr getAlgorithmArg(){ + // } +} + +abstract class EvpIVInitializer extends EvpInitializer { + abstract Expr getIVArg(); } /** - * A Call to update functions from the EVP API. + * A Call to an "update" function. * These are not operations in the sense of Crypto::OperationInstance, - * but they are used to update the context for the operation. + * but produce intermediate results for the operation that are later finalized + * (see EvpFinal). + * Intended for use with EvPOperation. */ -abstract class EVPUpdate extends Call { +abstract class EvpUpdate extends Call { /** * Gets the context argument that ties together initialization, updates and/or final calls. */ - Expr getContextArg() { result = this.(Call).getArgument(0) } + abstract CtxPointerSource getContextArg(); /** * Update calls always have some input data like plaintext or message digest. @@ -99,13 +110,13 @@ module AlgGetterToArgFlow = DataFlow::Global; /** * The base class for all operations of the EVP API. * This captures one-shot APIs (with and without an initilizer call) and final calls. - * Provides some default methods for Crypto::KeyOperationInstance class + * Provides some default methods for Crypto::KeyOperationInstance class. */ -abstract class EVPOperation extends OpenSSLOperation { +abstract class EvpOperation extends OpenSSLOperation { /** * Gets the context argument that ties together initialization, updates and/or final calls. */ - Expr getContextArg() { result = this.(Call).getArgument(0) } + abstract CtxPointerSource getContextArg(); /** * Some input data like plaintext or message digest. @@ -121,9 +132,7 @@ abstract class EVPOperation extends OpenSSLOperation { /** * Finds the initialization call, may be none. */ - EVPInitialize getInitCall() { - CTXFlow::ctxArgOrRetFlowsToCtxArg(result.getContextArg(), this.getContextArg()) - } + EvpInitializer getInitCall() { ctxSrcToSrcFlow(result.getContextArg(), this.getContextArg()) } Crypto::ArtifactOutputDataFlowNode getOutputArtifact() { result = DataFlow::exprNode(this.getOutputArg()) @@ -139,15 +148,16 @@ abstract class EVPOperation extends OpenSSLOperation { /** * An EVP final call, - * which is typicall usesed in an update/final pattern. + * which is typicall used in an update/final pattern. + * Final operations are typically identified by "final" in the name, + * e.g., "EVP_DigestFinal", "EVP_EncryptFinal", etc. + * however, this is not a strict rule. */ -abstract class EVPFinal extends EVPOperation { +abstract class EVPFinal extends EvpOperation { /** * All update calls that were executed before this final call. */ - EVPUpdate getUpdateCalls() { - CTXFlow::ctxArgOrRetFlowsToCtxArg(result.getContextArg(), this.getContextArg()) - } + EvpUpdate getUpdateCalls() { ctxSrcToSrcFlow(result.getContextArg(), this.getContextArg()) } /** * Gets the input data provided to all update calls. diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/keygen_key_sources.ql b/cpp/ql/test/experimental/library-tests/quantum/openssl/keygen_key_sources.ql deleted file mode 100644 index 76c0ebf817f..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/openssl/keygen_key_sources.ql +++ /dev/null @@ -1,7 +0,0 @@ -import cpp -import experimental.quantum.Language -import experimental.quantum.OpenSSL.Operations.EVPKeyGenOperation - -from EVPKeyGenOperation keyGen, Crypto::KeyArtifactNode key -where keyGen = key.asElement().(Crypto::KeyArtifactOutputInstance).getCreator() -select keyGen, key, key.getAKnownAlgorithm() diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/keygen_operations.ql b/cpp/ql/test/experimental/library-tests/quantum/openssl/keygen_operations.ql index f7cbce152be..b4ce6043d28 100644 --- a/cpp/ql/test/experimental/library-tests/quantum/openssl/keygen_operations.ql +++ b/cpp/ql/test/experimental/library-tests/quantum/openssl/keygen_operations.ql @@ -1,6 +1,6 @@ import cpp import experimental.quantum.Language -import experimental.quantum.OpenSSL.Operations.EVPKeyGenOperation +import experimental.quantum.OpenSSL.OpenSSL -from Crypto::KeyGenerationOperationInstance n //KeyGenerationOperationNode n -select n, n.getOutputKeyArtifact(), n.getKeyArtifactOutputInstance() // , n.getAnAlgorithmOrGenericSource() +from Crypto::KeyGenerationOperationNode n +select n, n.getOutputKeyArtifact(), n.getAnAlgorithmOrGenericSource() From 729467ccd6ec60a09f7ae5b4d6ea145eab118717 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Mon, 9 Jun 2025 16:49:54 -0400 Subject: [PATCH 021/150] Crypto: Separate out CTX parameter initialization, and add additional initializer subclasses. --- .../HashAlgorithmValueConsumer.qll | 33 ++++++++- .../OpenSSL/Operations/EVPKeyGenOperation.qll | 26 ------- .../Operations/EVPPKeyCtxInitializer.qll | 69 +++++++++++++++++++ .../Operations/OpenSSLOperationBase.qll | 26 +++++++ .../OpenSSL/Operations/OpenSSLOperations.qll | 1 + 5 files changed, 128 insertions(+), 27 deletions(-) create mode 100644 cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPPKeyCtxInitializer.qll diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/HashAlgorithmValueConsumer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/HashAlgorithmValueConsumer.qll index 6c4a9c9bd6c..98e3d974006 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/HashAlgorithmValueConsumer.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/HashAlgorithmValueConsumer.qll @@ -27,9 +27,37 @@ class EVP_Q_Digest_Algorithm_Consumer extends HashAlgorithmValueConsumer { } } +/** + * Instances from https://docs.openssl.org/3.0/man3/EVP_PKEY_CTX_ctrl/ + * where the digest is directly consumed by name. + * In these cases, the operation is not yet performed, but there is + * these functions are treated as 'initializers' and track the algorithm through + * `EvpInitializer` mechanics, i.e., the resultNode is considered 'none' + */ +class EvpPkeySetCtxALgorithmConsumer extends HashAlgorithmValueConsumer { + DataFlow::Node valueArgNode; + + EvpPkeySetCtxALgorithmConsumer() { + this.(Call).getTarget().getName() in [ + "EVP_PKEY_CTX_set_rsa_mgf1_md_name", "EVP_PKEY_CTX_set_rsa_oaep_md_name", + "EVP_PKEY_CTX_set_dsa_paramgen_md_props" + ] and + valueArgNode.asExpr() = this.(Call).getArgument(1) + } + + override DataFlow::Node getResultNode() { none() } + + override Crypto::ConsumerInputDataFlowNode getInputNode() { result = valueArgNode } + + override Crypto::AlgorithmInstance getAKnownAlgorithmSource() { + exists(OpenSSLAlgorithmInstance i | i.getAVC() = this and result = i) + } +} + /** * The EVP digest algorithm getters * https://docs.openssl.org/3.0/man3/EVP_DigestInit/#synopsis + * https://docs.openssl.org/3.0/man3/EVP_DigestSignInit/#name */ class EVPDigestAlgorithmValueConsumer extends HashAlgorithmValueConsumer { DataFlow::Node valueArgNode; @@ -43,8 +71,11 @@ class EVPDigestAlgorithmValueConsumer extends HashAlgorithmValueConsumer { ] and valueArgNode.asExpr() = this.(Call).getArgument(0) or - this.(Call).getTarget().getName() = "EVP_MD_fetch" and + this.(Call).getTarget().getName() in ["EVP_MD_fetch"] and valueArgNode.asExpr() = this.(Call).getArgument(1) + or + this.(Call).getTarget().getName() = "EVP_DigestSignInit_ex" and + valueArgNode.asExpr() = this.(Call).getArgument(2) ) } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPKeyGenOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPKeyGenOperation.qll index 877a0d67d7c..7922b555c51 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPKeyGenOperation.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPKeyGenOperation.qll @@ -50,32 +50,6 @@ class EVPNewKeyCtx extends EvpKeyInitializer { //TODO: do we specify the algorithm from the key as well? } -/** - * A call to `EVP_PKEY_CTX_set_rsa_keygen_bits`. - * This sets the key size for RSA key generation. - */ -class EVPSetRSAKeyKeyBits extends EvpKeySizeInitializer { - EVPSetRSAKeyKeyBits() { this.(Call).getTarget().getName() = "EVP_PKEY_CTX_set_rsa_keygen_bits" } - - override Expr getKeySizeArg() { result = this.(Call).getArgument(1) } - - override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } -} - -/** - * A call to `EVP_PKEY_CTX_set_dsa_paramgen_bits`. - * This sets the key size for DSA key generation. - */ -class EVPSetDSAKeyParamGenBits extends EvpKeySizeInitializer { - EVPSetDSAKeyParamGenBits() { - this.(Call).getTarget().getName() = "EVP_PKEY_CTX_set_dsa_paramgen_bits" - } - - override Expr getKeySizeArg() { result = this.(Call).getArgument(1) } - - override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } -} - class EVPKeyGenOperation extends EVPFinal, Crypto::KeyGenerationOperationInstance { DataFlow::Node keyResultNode; diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPPKeyCtxInitializer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPPKeyCtxInitializer.qll new file mode 100644 index 00000000000..0229627a62b --- /dev/null +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPPKeyCtxInitializer.qll @@ -0,0 +1,69 @@ +/** + * Initializers from https://docs.openssl.org/3.0/man3/EVP_PKEY_CTX_ctrl/ + */ + +import cpp +private import experimental.quantum.OpenSSL.CtxFlow +private import OpenSSLOperationBase + +class EvpCtxSetAlgorithmInitializer extends EvpAlgorithmInitializer { + EvpCtxSetAlgorithmInitializer() { + this.(Call).getTarget().getName() in [ + "EVP_PKEY_CTX_set_signature_md", "EVP_PKEY_CTX_set_rsa_mgf1_md_name", + "EVP_PKEY_CTX_set_rsa_mgf1_md", "EVP_PKEY_CTX_set_rsa_oaep_md_name", + "EVP_PKEY_CTX_set_rsa_oaep_md", "EVP_PKEY_CTX_set_dsa_paramgen_md", + "EVP_PKEY_CTX_set_dsa_paramgen_md_props", "EVP_PKEY_CTX_set_dh_kdf_md", + "EVP_PKEY_CTX_set_ec_paramgen_curve_nid", "EVP_PKEY_CTX_set_ecdh_kdf_md" + ] + } + + override Expr getAlgorithmArg() { result = this.(Call).getArgument(1) } + + override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } +} + +class EvpCtxSetKeySizeInitializer extends EvpKeySizeInitializer { + Expr arg; + + EvpCtxSetKeySizeInitializer() { + this.(Call).getTarget().getName() in [ + "EVP_PKEY_CTX_set_rsa_keygen_bits", "EVP_PKEY_CTX_set_dsa_paramgen_bits" + ] and + arg = this.(Call).getArgument(1) + or + this.(Call).getTarget().getName() = "EVP_PKEY_CTX_set_mac_key" and + arg = this.(Call).getArgument(2) + } + + override Expr getKeySizeArg() { result = arg } + + override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } +} + +class EvpCtxSetKeyInitializer extends EvpKeyInitializer { + EvpCtxSetKeyInitializer() { this.(Call).getTarget().getName() = "EVP_PKEY_CTX_set_mac_key" } + + override Expr getKeyArg() { result = this.(Call).getArgument(1) } + + override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } +} + +class EvpCtxSetPaddingInitializer extends EvpPaddingInitializer { + EvpCtxSetPaddingInitializer() { + this.(Call).getTarget().getName() = "EVP_PKEY_CTX_set_rsa_padding" + } + + override Expr getPaddingArg() { result = this.(Call).getArgument(1) } + + override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } +} + +class EvpCtxSetSaltLengthInitializer extends EvpSaltLengthInitializer { + EvpCtxSetSaltLengthInitializer() { + this.(Call).getTarget().getName() = "EVP_PKEY_CTX_set_rsa_pss_saltlen" + } + + override Expr getSaltLengthArg() { result = this.(Call).getArgument(1) } + + override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } +} diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll index 37b50aae371..ad10b767055 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll @@ -1,6 +1,10 @@ private import experimental.quantum.Language private import experimental.quantum.OpenSSL.CtxFlow private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers +// Importing these intializers here to ensure the are part of any model that is +// using OpenSSLOperationBase. This futher ensures that initializers are tied to opeartions +// even if only importing the operation by itself. +import EVPPKeyCtxInitializer /** * A class for all OpenSSL operations. @@ -44,6 +48,12 @@ abstract class EvpKeySizeInitializer extends EvpInitializer { abstract Expr getKeySizeArg(); } +/** + * Unlike many initializers, this returns the key operation subtype immediately, not the arg. + * This is a design choice in the overall model, in that the model will not do any tracking + * for the subtype argument in any automated fashion. Users are currently expected to find the + * subtype argument manually and associate a type directly. + */ abstract class EvpKeyOperationSubtypeInitializer extends EvpInitializer { abstract Crypto::KeyOperationSubtype getKeyOperationSubtype(); } @@ -66,6 +76,22 @@ abstract class EvpIVInitializer extends EvpInitializer { abstract Expr getIVArg(); } +abstract class EvpPaddingInitializer extends EvpInitializer { + /** + * Gets the padding mode argument. + * e.g., `EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_PADDING)` argument 1 (0-based) + */ + abstract Expr getPaddingArg(); +} + +abstract class EvpSaltLengthInitializer extends EvpInitializer { + /** + * Gets the salt length argument. + * e.g., `EVP_PKEY_CTX_set_scrypt_salt_len(ctx, 16)` argument 1 (0-based) + */ + abstract Expr getSaltLengthArg(); +} + /** * A Call to an "update" function. * These are not operations in the sense of Crypto::OperationInstance, diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperations.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperations.qll index 78b8f8ce080..efaf71e7e36 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperations.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperations.qll @@ -4,3 +4,4 @@ import EVPHashOperation import ECKeyGenOperation import EVPSignatureOperation import EVPKeyGenOperation +import EVPPKeyCtxInitializer From 23e789b421d5ceca2149cd66ed7ca2cd784b8d64 Mon Sep 17 00:00:00 2001 From: Kasper Svendsen Date: Tue, 10 Jun 2025 14:18:05 +0200 Subject: [PATCH 022/150] QL: Improve toString for overlay annotations --- ql/ql/src/codeql_ql/ast/Ast.qll | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ql/ql/src/codeql_ql/ast/Ast.qll b/ql/ql/src/codeql_ql/ast/Ast.qll index b3bbf41aaef..1e3ac4e8c82 100644 --- a/ql/ql/src/codeql_ql/ast/Ast.qll +++ b/ql/ql/src/codeql_ql/ast/Ast.qll @@ -2613,21 +2613,21 @@ class NoOpt extends Annotation { class OverlayCaller extends Annotation { OverlayCaller() { this.getName() = "overlay" and this.getArgs(0) instanceof CallerArg } - override string toString() { result = "caller" } + override string toString() { result = "overlay[caller]" } } /** An `overlay[local]` annotation. */ class OverlayLocal extends Annotation { OverlayLocal() { this.getName() = "overlay" and this.getArgs(0) instanceof LocalArg } - override string toString() { result = "local" } + override string toString() { result = "overlay[local]" } } /** An `overlay[local?]` annotation. */ class OverlayLocalQ extends Annotation { OverlayLocalQ() { this.getName() = "overlay" and this.getArgs(0) instanceof LocalQArg } - override string toString() { result = "local?" } + override string toString() { result = "overlay[local?]" } } /** A `language[monotonicAggregates]` annotation. */ From 99dc923f1f4220ef2e24c6e975829f6102ed0068 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Tue, 10 Jun 2025 15:45:41 +0200 Subject: [PATCH 023/150] C#: Add cs/gethashcode-is-not-defined to the Code Quality suite. --- .../posix/query-suite/csharp-code-quality.qls.expected | 1 + csharp/ql/src/Likely Bugs/HashedButNoHash.ql | 1 + 2 files changed, 2 insertions(+) diff --git a/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality.qls.expected b/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality.qls.expected index 35a390da406..ce4e307c706 100644 --- a/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality.qls.expected +++ b/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality.qls.expected @@ -8,6 +8,7 @@ ql/csharp/ql/src/Likely Bugs/Collections/ContainerLengthCmpOffByOne.ql ql/csharp/ql/src/Likely Bugs/Collections/ContainerSizeCmpZero.ql ql/csharp/ql/src/Likely Bugs/DangerousNonShortCircuitLogic.ql ql/csharp/ql/src/Likely Bugs/EqualityCheckOnFloats.ql +ql/csharp/ql/src/Likely Bugs/HashedButNoHash.ql ql/csharp/ql/src/Likely Bugs/ReferenceEqualsOnValueTypes.ql ql/csharp/ql/src/Likely Bugs/SelfAssignment.ql ql/csharp/ql/src/Likely Bugs/UncheckedCastInEquals.ql diff --git a/csharp/ql/src/Likely Bugs/HashedButNoHash.ql b/csharp/ql/src/Likely Bugs/HashedButNoHash.ql index 9948def013c..ae457dc2b78 100644 --- a/csharp/ql/src/Likely Bugs/HashedButNoHash.ql +++ b/csharp/ql/src/Likely Bugs/HashedButNoHash.ql @@ -7,6 +7,7 @@ * @id cs/gethashcode-is-not-defined * @tags reliability * maintainability + * quality */ import csharp From 7d479940e52fedf7ef8f1493a836e593e25312a8 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Tue, 10 Jun 2025 13:37:17 -0400 Subject: [PATCH 024/150] Crypto: Nop out signature operations for now until complete. Minor model update. Remove setting RSA bits as an RSA algorithm. Fix bug in hash algorithm. Add missing PKey encryption to cipher ops. Consolidate ctx initializers. Add unit tests, and alter unit test directory structure to allow for application to other APIs. Update expected files for unit tests (not all updated yet, a work in progress). --- .../HashAlgorithmInstance.qll | 2 +- .../KnownAlgorithmConstants.qll | 4 +-- .../OpenSSL/Operations/EVPCipherOperation.qll | 18 ++++++++++ .../OpenSSL/Operations/EVPKeyGenOperation.qll | 30 ----------------- .../Operations/EVPPKeyCtxInitializer.qll | 33 ++++++++++++++++++- .../OpenSSL/Operations/OpenSSLOperations.qll | 2 +- .../quantum/algorithm_names.expected | 17 ++++++++++ .../library-tests/quantum/algorithm_names.ql | 5 +++ .../library-tests/quantum/algorithms.expected | 17 ++++++++++ .../library-tests/quantum/algorithms.ql | 5 +++ .../{openssl => }/hash_input_sources.expected | 0 .../{openssl => }/hash_input_sources.ql | 0 .../hash_operation_input_output.expected | 3 ++ ...ions.ql => hash_operation_input_output.ql} | 2 +- ...ycreation_operations_input_output.expected | 3 ++ .../keycreation_operations_input_output.ql | 6 ++++ .../quantum/keyop_input_output.expected | 5 +++ .../quantum/keyop_input_output.ql | 5 +++ ....expected => keyop_input_sources.expected} | 1 + ...text_sources.ql => keyop_input_sources.ql} | 2 +- .../quantum/keyop_key_args.expected | 5 +++ .../library-tests/quantum/keyop_key_args.ql | 6 ++++ ...es.expected => keyop_key_sources.expected} | 1 + ...er_key_sources.ql => keyop_key_sources.ql} | 2 +- .../quantum/keyop_nonce_args.expected | 4 +++ .../library-tests/quantum/keyop_nonce_args.ql | 6 ++++ ....expected => keyop_nonce_sources.expected} | 0 ...once_sources.ql => keyop_nonce_sources.ql} | 2 +- .../quantum/keyop_subtype.expected | 3 ++ .../library-tests/quantum/keyop_subtype.ql | 5 +++ .../quantum/openssl/cipher_operations.ql | 6 ---- .../quantum/openssl/hash_operations.expected | 4 --- .../quantum/openssl/keygen_operations.ql | 6 ---- .../library-tests/quantum/openssl/options | 1 - .../quantum/{openssl => }/openssl_basic.c | 0 .../quantum/{openssl => }/openssl_pkey.c | 0 .../quantum/{openssl => }/openssl_signature.c | 0 .../quantum/operation_algorithms.expected | 0 .../quantum/operation_algorithms.ql | 5 +++ ...perations.expected => operations.expected} | 0 .../library-tests/quantum/operations.ql | 5 +++ .../library-tests/quantum/options | 1 + .../quantum/signature_algorithms.expected | 5 +++ .../{openssl => }/signature_algorithms.ql | 0 .../quantum/signature_key_sources.expected | 5 +++ .../{openssl => }/signature_key_sources.ql | 0 .../signature_message_sources.expected | 4 +++ .../signature_message_sources.ql | 0 .../quantum/signature_operations.expected | 12 +++++++ .../{openssl => }/signature_operations.ql | 0 .../codeql/quantum/experimental/Model.qll | 9 +++-- 51 files changed, 198 insertions(+), 59 deletions(-) create mode 100644 cpp/ql/test/experimental/library-tests/quantum/algorithm_names.expected create mode 100644 cpp/ql/test/experimental/library-tests/quantum/algorithm_names.ql create mode 100644 cpp/ql/test/experimental/library-tests/quantum/algorithms.expected create mode 100644 cpp/ql/test/experimental/library-tests/quantum/algorithms.ql rename cpp/ql/test/experimental/library-tests/quantum/{openssl => }/hash_input_sources.expected (100%) rename cpp/ql/test/experimental/library-tests/quantum/{openssl => }/hash_input_sources.ql (100%) create mode 100644 cpp/ql/test/experimental/library-tests/quantum/hash_operation_input_output.expected rename cpp/ql/test/experimental/library-tests/quantum/{openssl/hash_operations.ql => hash_operation_input_output.ql} (50%) create mode 100644 cpp/ql/test/experimental/library-tests/quantum/keycreation_operations_input_output.expected create mode 100644 cpp/ql/test/experimental/library-tests/quantum/keycreation_operations_input_output.ql create mode 100644 cpp/ql/test/experimental/library-tests/quantum/keyop_input_output.expected create mode 100644 cpp/ql/test/experimental/library-tests/quantum/keyop_input_output.ql rename cpp/ql/test/experimental/library-tests/quantum/{openssl/cipher_plaintext_sources.expected => keyop_input_sources.expected} (51%) rename cpp/ql/test/experimental/library-tests/quantum/{openssl/cipher_plaintext_sources.ql => keyop_input_sources.ql} (63%) create mode 100644 cpp/ql/test/experimental/library-tests/quantum/keyop_key_args.expected create mode 100644 cpp/ql/test/experimental/library-tests/quantum/keyop_key_args.ql rename cpp/ql/test/experimental/library-tests/quantum/{openssl/cipher_key_sources.expected => keyop_key_sources.expected} (68%) rename cpp/ql/test/experimental/library-tests/quantum/{openssl/cipher_key_sources.ql => keyop_key_sources.ql} (62%) create mode 100644 cpp/ql/test/experimental/library-tests/quantum/keyop_nonce_args.expected create mode 100644 cpp/ql/test/experimental/library-tests/quantum/keyop_nonce_args.ql rename cpp/ql/test/experimental/library-tests/quantum/{openssl/cipher_nonce_sources.expected => keyop_nonce_sources.expected} (100%) rename cpp/ql/test/experimental/library-tests/quantum/{openssl/cipher_nonce_sources.ql => keyop_nonce_sources.ql} (61%) create mode 100644 cpp/ql/test/experimental/library-tests/quantum/keyop_subtype.expected create mode 100644 cpp/ql/test/experimental/library-tests/quantum/keyop_subtype.ql delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_operations.ql delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/openssl/hash_operations.expected delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/openssl/keygen_operations.ql delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/openssl/options rename cpp/ql/test/experimental/library-tests/quantum/{openssl => }/openssl_basic.c (100%) rename cpp/ql/test/experimental/library-tests/quantum/{openssl => }/openssl_pkey.c (100%) rename cpp/ql/test/experimental/library-tests/quantum/{openssl => }/openssl_signature.c (100%) create mode 100644 cpp/ql/test/experimental/library-tests/quantum/operation_algorithms.expected create mode 100644 cpp/ql/test/experimental/library-tests/quantum/operation_algorithms.ql rename cpp/ql/test/experimental/library-tests/quantum/{openssl/cipher_operations.expected => operations.expected} (100%) create mode 100644 cpp/ql/test/experimental/library-tests/quantum/operations.ql create mode 100644 cpp/ql/test/experimental/library-tests/quantum/options create mode 100644 cpp/ql/test/experimental/library-tests/quantum/signature_algorithms.expected rename cpp/ql/test/experimental/library-tests/quantum/{openssl => }/signature_algorithms.ql (100%) create mode 100644 cpp/ql/test/experimental/library-tests/quantum/signature_key_sources.expected rename cpp/ql/test/experimental/library-tests/quantum/{openssl => }/signature_key_sources.ql (100%) create mode 100644 cpp/ql/test/experimental/library-tests/quantum/signature_message_sources.expected rename cpp/ql/test/experimental/library-tests/quantum/{openssl => }/signature_message_sources.ql (100%) create mode 100644 cpp/ql/test/experimental/library-tests/quantum/signature_operations.expected rename cpp/ql/test/experimental/library-tests/quantum/{openssl => }/signature_operations.ql (100%) diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/HashAlgorithmInstance.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/HashAlgorithmInstance.qll index c0281130fef..672fb5d06e1 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/HashAlgorithmInstance.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/HashAlgorithmInstance.qll @@ -29,7 +29,7 @@ predicate knownOpenSSLConstantToHashFamilyType( or name.matches(["SHA", "SHA1"]) and type instanceof Crypto::SHA1 or - name.matches("SHA+%") and not name.matches(["SHA1", "SHA3-"]) and type instanceof Crypto::SHA2 + name.matches("SHA_%") and not name.matches(["SHA1", "SHA3-"]) and type instanceof Crypto::SHA2 or name.matches("SHA3-%") and type instanceof Crypto::SHA3 or diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KnownAlgorithmConstants.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KnownAlgorithmConstants.qll index f88be562ace..6e1bfe83eac 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KnownAlgorithmConstants.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KnownAlgorithmConstants.qll @@ -147,9 +147,7 @@ class KnownOpenSSLKeyAgreementAlgorithmExpr extends Expr instanceof KnownOpenSSL } predicate knownOpenSSLAlgorithmOperationCall(Call c, string normalized, string algType) { - c.getTarget().getName() in [ - "EVP_RSA_gen", "RSA_generate_key_ex", "RSA_generate_key", "EVP_PKEY_CTX_set_rsa_keygen_bits" - ] and + c.getTarget().getName() in ["EVP_RSA_gen", "RSA_generate_key_ex", "RSA_generate_key", "RSA_new"] and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherOperation.qll index 33ba83a8073..89fcc1ccda6 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherOperation.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherOperation.qll @@ -183,3 +183,21 @@ class EVP_Cipher_Final_Call extends EVPFinal, EVP_Cipher_Operation { override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } } + +/** + * https://docs.openssl.org/3.2/man3/EVP_PKEY_decrypt/ + * https://docs.openssl.org/3.2/man3/EVP_PKEY_encrypt + */ +class Evp_PKey_Cipher_Operation extends EVP_Cipher_Operation { + Evp_PKey_Cipher_Operation() { + this.(Call).getTarget().getName() in ["EVP_PKEY_encrypt", "EVP_PKEY_decrypt"] + } + + override Expr getInputArg() { result = this.(Call).getArgument(3) } + + override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } + + override Expr getAlgorithmArg() { + result = this.getInitCall().(EvpAlgorithmInitializer).getAlgorithmArg() + } +} diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPKeyGenOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPKeyGenOperation.qll index 7922b555c51..7dfb4c68db7 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPKeyGenOperation.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPKeyGenOperation.qll @@ -20,36 +20,6 @@ class EVPKeyGenInitialize extends EvpAlgorithmInitializer { override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } } -/** - * A call to `EVP_PKEY_CTX_new` or `EVP_PKEY_CTX_new_from_pkey`. - * These calls initialize the context from a prior key. - * The key may be generated previously, or merely had it's - * parameters set (e.g., `EVP_PKEY_paramgen`). - * NOTE: for the case of `EVP_PKEY_paramgen`, these calls - * are encoded as context passthroughs, and any operation - * will get all associated initializers for teh paramgen - * at the final keygen operation automatically. - */ -class EVPNewKeyCtx extends EvpKeyInitializer { - Expr keyArg; - - EVPNewKeyCtx() { - this.(Call).getTarget().getName() = "EVP_PKEY_CTX_new" and - keyArg = this.(Call).getArgument(0) - or - this.(Call).getTarget().getName() = "EVP_PKEY_CTX_new_from_pkey" and - keyArg = this.(Call).getArgument(1) - } - - /** - * Context is returned - */ - override CtxPointerSource getContextArg() { result = this } - - override Expr getKeyArg() { result = keyArg } - //TODO: do we specify the algorithm from the key as well? -} - class EVPKeyGenOperation extends EVPFinal, Crypto::KeyGenerationOperationInstance { DataFlow::Node keyResultNode; diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPPKeyCtxInitializer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPPKeyCtxInitializer.qll index 0229627a62b..8a263db5b49 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPPKeyCtxInitializer.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPPKeyCtxInitializer.qll @@ -1,11 +1,42 @@ /** - * Initializers from https://docs.openssl.org/3.0/man3/EVP_PKEY_CTX_ctrl/ + * Initializers for EVP PKey + * including https://docs.openssl.org/3.0/man3/EVP_PKEY_CTX_ctrl/ */ import cpp private import experimental.quantum.OpenSSL.CtxFlow private import OpenSSLOperationBase +/** + * A call to `EVP_PKEY_CTX_new` or `EVP_PKEY_CTX_new_from_pkey`. + * These calls initialize the context from a prior key. + * The key may be generated previously, or merely had it's + * parameters set (e.g., `EVP_PKEY_paramgen`). + * NOTE: for the case of `EVP_PKEY_paramgen`, these calls + * are encoded as context passthroughs, and any operation + * will get all associated initializers for teh paramgen + * at the final keygen operation automatically. + */ +class EVPNewKeyCtx extends EvpKeyInitializer { + Expr keyArg; + + EVPNewKeyCtx() { + this.(Call).getTarget().getName() = "EVP_PKEY_CTX_new" and + keyArg = this.(Call).getArgument(0) + or + this.(Call).getTarget().getName() = "EVP_PKEY_CTX_new_from_pkey" and + keyArg = this.(Call).getArgument(1) + } + + /** + * Context is returned + */ + override CtxPointerSource getContextArg() { result = this } + + override Expr getKeyArg() { result = keyArg } + //TODO: do we specify the algorithm from the key as well? +} + class EvpCtxSetAlgorithmInitializer extends EvpAlgorithmInitializer { EvpCtxSetAlgorithmInitializer() { this.(Call).getTarget().getName() in [ diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperations.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperations.qll index efaf71e7e36..1f1cae28668 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperations.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperations.qll @@ -2,6 +2,6 @@ import OpenSSLOperationBase import EVPCipherOperation import EVPHashOperation import ECKeyGenOperation -import EVPSignatureOperation +//import EVPSignatureOperation import EVPKeyGenOperation import EVPPKeyCtxInitializer diff --git a/cpp/ql/test/experimental/library-tests/quantum/algorithm_names.expected b/cpp/ql/test/experimental/library-tests/quantum/algorithm_names.expected new file mode 100644 index 00000000000..b05c0da8303 --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/algorithm_names.expected @@ -0,0 +1,17 @@ +| openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | AES | +| openssl_basic.c:23:37:23:51 | ModeOfOperation | GCM | +| openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | AES | +| openssl_basic.c:69:33:69:47 | ModeOfOperation | GCM | +| openssl_basic.c:116:38:116:47 | HashAlgorithm | SHA2 | +| openssl_basic.c:144:67:144:73 | HashAlgorithm | MD5 | +| openssl_basic.c:160:39:160:48 | HashAlgorithm | SHA2 | +| openssl_pkey.c:21:10:21:28 | KeyOperationAlgorithm | RSA | +| openssl_pkey.c:50:31:50:42 | KeyOperationAlgorithm | RSA | +| openssl_signature.c:521:46:521:66 | PaddingAlgorithm | PSS | +| openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | RSA | +| openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm | DSA | +| openssl_signature.c:684:24:684:33 | HashAlgorithm | SHA2 | +| openssl_signature.c:702:60:702:71 | HashAlgorithm | SHA2 | +| openssl_signature.c:702:60:702:71 | KeyOperationAlgorithm | RSA | +| openssl_signature.c:740:24:740:33 | HashAlgorithm | SHA2 | +| openssl_signature.c:758:60:758:64 | KeyOperationAlgorithm | DSA | diff --git a/cpp/ql/test/experimental/library-tests/quantum/algorithm_names.ql b/cpp/ql/test/experimental/library-tests/quantum/algorithm_names.ql new file mode 100644 index 00000000000..72566620799 --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/algorithm_names.ql @@ -0,0 +1,5 @@ +import cpp +import experimental.quantum.Language + +from Crypto::AlgorithmNode n +select n, n.getAlgorithmName() diff --git a/cpp/ql/test/experimental/library-tests/quantum/algorithms.expected b/cpp/ql/test/experimental/library-tests/quantum/algorithms.expected new file mode 100644 index 00000000000..4b821bae44e --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/algorithms.expected @@ -0,0 +1,17 @@ +| openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | +| openssl_basic.c:23:37:23:51 | ModeOfOperation | +| openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | +| openssl_basic.c:69:33:69:47 | ModeOfOperation | +| openssl_basic.c:116:38:116:47 | HashAlgorithm | +| openssl_basic.c:144:67:144:73 | HashAlgorithm | +| openssl_basic.c:160:39:160:48 | HashAlgorithm | +| openssl_pkey.c:21:10:21:28 | KeyOperationAlgorithm | +| openssl_pkey.c:50:31:50:42 | KeyOperationAlgorithm | +| openssl_signature.c:521:46:521:66 | PaddingAlgorithm | +| openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | +| openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm | +| openssl_signature.c:684:24:684:33 | HashAlgorithm | +| openssl_signature.c:702:60:702:71 | HashAlgorithm | +| openssl_signature.c:702:60:702:71 | KeyOperationAlgorithm | +| openssl_signature.c:740:24:740:33 | HashAlgorithm | +| openssl_signature.c:758:60:758:64 | KeyOperationAlgorithm | diff --git a/cpp/ql/test/experimental/library-tests/quantum/algorithms.ql b/cpp/ql/test/experimental/library-tests/quantum/algorithms.ql new file mode 100644 index 00000000000..1144f481344 --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/algorithms.ql @@ -0,0 +1,5 @@ +import cpp +import experimental.quantum.Language + +from Crypto::AlgorithmNode n +select n diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/hash_input_sources.expected b/cpp/ql/test/experimental/library-tests/quantum/hash_input_sources.expected similarity index 100% rename from cpp/ql/test/experimental/library-tests/quantum/openssl/hash_input_sources.expected rename to cpp/ql/test/experimental/library-tests/quantum/hash_input_sources.expected diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/hash_input_sources.ql b/cpp/ql/test/experimental/library-tests/quantum/hash_input_sources.ql similarity index 100% rename from cpp/ql/test/experimental/library-tests/quantum/openssl/hash_input_sources.ql rename to cpp/ql/test/experimental/library-tests/quantum/hash_input_sources.ql diff --git a/cpp/ql/test/experimental/library-tests/quantum/hash_operation_input_output.expected b/cpp/ql/test/experimental/library-tests/quantum/hash_operation_input_output.expected new file mode 100644 index 00000000000..066288409be --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/hash_operation_input_output.expected @@ -0,0 +1,3 @@ +| openssl_basic.c:124:13:124:30 | HashOperation | openssl_basic.c:124:39:124:44 | Digest | openssl_basic.c:120:37:120:43 | Message | +| openssl_basic.c:144:13:144:22 | HashOperation | openssl_basic.c:144:46:144:51 | Digest | openssl_basic.c:144:24:144:30 | Message | +| openssl_signature.c:23:9:23:26 | HashOperation | openssl_signature.c:23:36:23:41 | Digest | openssl_signature.c:22:34:22:40 | Message | diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/hash_operations.ql b/cpp/ql/test/experimental/library-tests/quantum/hash_operation_input_output.ql similarity index 50% rename from cpp/ql/test/experimental/library-tests/quantum/openssl/hash_operations.ql rename to cpp/ql/test/experimental/library-tests/quantum/hash_operation_input_output.ql index 50d831230e8..6728fed9f2a 100644 --- a/cpp/ql/test/experimental/library-tests/quantum/openssl/hash_operations.ql +++ b/cpp/ql/test/experimental/library-tests/quantum/hash_operation_input_output.ql @@ -2,4 +2,4 @@ import cpp import experimental.quantum.Language from Crypto::HashOperationNode n -select n, n.getDigest(), n.getAnAlgorithmOrGenericSource(), n.getInputArtifact() +select n, n.getDigest(), n.getInputArtifact() diff --git a/cpp/ql/test/experimental/library-tests/quantum/keycreation_operations_input_output.expected b/cpp/ql/test/experimental/library-tests/quantum/keycreation_operations_input_output.expected new file mode 100644 index 00000000000..9855b149c73 --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/keycreation_operations_input_output.expected @@ -0,0 +1,3 @@ +| openssl_pkey.c:55:9:55:23 | KeyGeneration | openssl_pkey.c:55:30:55:34 | Key | +| openssl_signature.c:548:9:548:23 | KeyGeneration | openssl_signature.c:548:34:548:37 | Key | +| openssl_signature.c:578:9:578:23 | KeyGeneration | openssl_signature.c:578:34:578:37 | Key | diff --git a/cpp/ql/test/experimental/library-tests/quantum/keycreation_operations_input_output.ql b/cpp/ql/test/experimental/library-tests/quantum/keycreation_operations_input_output.ql new file mode 100644 index 00000000000..5505c239957 --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/keycreation_operations_input_output.ql @@ -0,0 +1,6 @@ +import cpp +import experimental.quantum.Language +import experimental.quantum.OpenSSL.OpenSSL + +from Crypto::KeyCreationOperationNode n +select n, n.getOutputKeyArtifact() diff --git a/cpp/ql/test/experimental/library-tests/quantum/keyop_input_output.expected b/cpp/ql/test/experimental/library-tests/quantum/keyop_input_output.expected new file mode 100644 index 00000000000..0176af8b657 --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/keyop_input_output.expected @@ -0,0 +1,5 @@ +| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:35:54:35:62 | Message | openssl_basic.c:35:36:35:45 | KeyOperationOutput | +| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:35:54:35:62 | Message | openssl_basic.c:40:38:40:53 | KeyOperationOutput | +| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:81:49:81:58 | Message | openssl_basic.c:81:32:81:40 | KeyOperationOutput | +| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:81:49:81:58 | Message | openssl_basic.c:90:36:90:50 | KeyOperationOutput | +| openssl_pkey.c:64:9:64:24 | EncryptOperation | openssl_pkey.c:64:58:64:66 | Message | openssl_pkey.c:64:31:64:39 | KeyOperationOutput | diff --git a/cpp/ql/test/experimental/library-tests/quantum/keyop_input_output.ql b/cpp/ql/test/experimental/library-tests/quantum/keyop_input_output.ql new file mode 100644 index 00000000000..6f1ffad622e --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/keyop_input_output.ql @@ -0,0 +1,5 @@ +import cpp +import experimental.quantum.Language + +from Crypto::KeyOperationNode n +select n, n.getAnInputArtifact(), n.getAnOutputArtifact() diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_plaintext_sources.expected b/cpp/ql/test/experimental/library-tests/quantum/keyop_input_sources.expected similarity index 51% rename from cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_plaintext_sources.expected rename to cpp/ql/test/experimental/library-tests/quantum/keyop_input_sources.expected index 1bea7895a34..cf9966150dd 100644 --- a/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_plaintext_sources.expected +++ b/cpp/ql/test/experimental/library-tests/quantum/keyop_input_sources.expected @@ -1 +1,2 @@ | openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:35:54:35:62 | Message | openssl_basic.c:181:49:181:87 | Constant | +| openssl_pkey.c:64:9:64:24 | EncryptOperation | openssl_pkey.c:64:58:64:66 | Message | openssl_pkey.c:45:49:45:65 | Constant | diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_plaintext_sources.ql b/cpp/ql/test/experimental/library-tests/quantum/keyop_input_sources.ql similarity index 63% rename from cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_plaintext_sources.ql rename to cpp/ql/test/experimental/library-tests/quantum/keyop_input_sources.ql index 762dfb0c02b..b4e1393275e 100644 --- a/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_plaintext_sources.ql +++ b/cpp/ql/test/experimental/library-tests/quantum/keyop_input_sources.ql @@ -1,6 +1,6 @@ import cpp import experimental.quantum.Language -from Crypto::CipherOperationNode n, Crypto::MessageArtifactNode m +from Crypto::KeyOperationNode n, Crypto::MessageArtifactNode m where n.getAnInputArtifact() = m select n, m, m.getSourceNode() diff --git a/cpp/ql/test/experimental/library-tests/quantum/keyop_key_args.expected b/cpp/ql/test/experimental/library-tests/quantum/keyop_key_args.expected new file mode 100644 index 00000000000..eb74124f7d7 --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/keyop_key_args.expected @@ -0,0 +1,5 @@ +| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:23:62:23:65 | Key | +| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:31:49:31:51 | Key | +| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:69:58:69:61 | Key | +| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:77:45:77:47 | Key | +| openssl_pkey.c:64:9:64:24 | EncryptOperation | openssl_pkey.c:60:28:60:31 | Key | diff --git a/cpp/ql/test/experimental/library-tests/quantum/keyop_key_args.ql b/cpp/ql/test/experimental/library-tests/quantum/keyop_key_args.ql new file mode 100644 index 00000000000..5057ed6d555 --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/keyop_key_args.ql @@ -0,0 +1,6 @@ +import cpp +import experimental.quantum.Language + +from Crypto::KeyOperationNode op, Crypto::KeyArtifactNode k +where op.getAKey() = k +select op, k diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_key_sources.expected b/cpp/ql/test/experimental/library-tests/quantum/keyop_key_sources.expected similarity index 68% rename from cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_key_sources.expected rename to cpp/ql/test/experimental/library-tests/quantum/keyop_key_sources.expected index 749e7ee0fc6..a6bc55288dd 100644 --- a/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_key_sources.expected +++ b/cpp/ql/test/experimental/library-tests/quantum/keyop_key_sources.expected @@ -1,2 +1,3 @@ | openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:31:49:31:51 | Key | openssl_basic.c:179:43:179:76 | Constant | | openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:77:45:77:47 | Key | openssl_basic.c:179:43:179:76 | Constant | +| openssl_pkey.c:64:9:64:24 | EncryptOperation | openssl_pkey.c:60:28:60:31 | Key | openssl_pkey.c:55:30:55:34 | Key | diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_key_sources.ql b/cpp/ql/test/experimental/library-tests/quantum/keyop_key_sources.ql similarity index 62% rename from cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_key_sources.ql rename to cpp/ql/test/experimental/library-tests/quantum/keyop_key_sources.ql index 039477ebc6a..1591307a16a 100644 --- a/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_key_sources.ql +++ b/cpp/ql/test/experimental/library-tests/quantum/keyop_key_sources.ql @@ -1,6 +1,6 @@ import cpp import experimental.quantum.Language -from Crypto::CipherOperationNode op, Crypto::KeyArtifactNode k +from Crypto::KeyOperationNode op, Crypto::KeyArtifactNode k where op.getAKey() = k select op, k, k.getSourceNode() diff --git a/cpp/ql/test/experimental/library-tests/quantum/keyop_nonce_args.expected b/cpp/ql/test/experimental/library-tests/quantum/keyop_nonce_args.expected new file mode 100644 index 00000000000..ef537ff0836 --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/keyop_nonce_args.expected @@ -0,0 +1,4 @@ +| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:23:68:23:71 | Nonce | +| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:31:54:31:55 | Nonce | +| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:69:64:69:67 | Nonce | +| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:77:50:77:51 | Nonce | diff --git a/cpp/ql/test/experimental/library-tests/quantum/keyop_nonce_args.ql b/cpp/ql/test/experimental/library-tests/quantum/keyop_nonce_args.ql new file mode 100644 index 00000000000..6c386ec67ee --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/keyop_nonce_args.ql @@ -0,0 +1,6 @@ +import cpp +import experimental.quantum.Language + +from Crypto::KeyOperationNode op, Crypto::NonceArtifactNode n +where op.getANonce() = n +select op, n diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_nonce_sources.expected b/cpp/ql/test/experimental/library-tests/quantum/keyop_nonce_sources.expected similarity index 100% rename from cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_nonce_sources.expected rename to cpp/ql/test/experimental/library-tests/quantum/keyop_nonce_sources.expected diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_nonce_sources.ql b/cpp/ql/test/experimental/library-tests/quantum/keyop_nonce_sources.ql similarity index 61% rename from cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_nonce_sources.ql rename to cpp/ql/test/experimental/library-tests/quantum/keyop_nonce_sources.ql index d37ccf3762d..76a69e301cb 100644 --- a/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_nonce_sources.ql +++ b/cpp/ql/test/experimental/library-tests/quantum/keyop_nonce_sources.ql @@ -1,6 +1,6 @@ import cpp import experimental.quantum.Language -from Crypto::CipherOperationNode op, Crypto::NonceArtifactNode n +from Crypto::KeyOperationNode op, Crypto::NonceArtifactNode n where op.getANonce() = n select op, n, n.getSourceNode() diff --git a/cpp/ql/test/experimental/library-tests/quantum/keyop_subtype.expected b/cpp/ql/test/experimental/library-tests/quantum/keyop_subtype.expected new file mode 100644 index 00000000000..84224b93bf8 --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/keyop_subtype.expected @@ -0,0 +1,3 @@ +| openssl_basic.c:40:13:40:31 | EncryptOperation | Encrypt | +| openssl_basic.c:90:11:90:29 | DecryptOperation | Decrypt | +| openssl_pkey.c:64:9:64:24 | EncryptOperation | Encrypt | diff --git a/cpp/ql/test/experimental/library-tests/quantum/keyop_subtype.ql b/cpp/ql/test/experimental/library-tests/quantum/keyop_subtype.ql new file mode 100644 index 00000000000..9ec75c362ae --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/keyop_subtype.ql @@ -0,0 +1,5 @@ +import cpp +import experimental.quantum.Language + +from Crypto::KeyOperationNode n +select n, n.getKeyOperationSubtype() diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_operations.ql b/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_operations.ql deleted file mode 100644 index 9ce06567195..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_operations.ql +++ /dev/null @@ -1,6 +0,0 @@ -import cpp -import experimental.quantum.Language - -from Crypto::CipherOperationNode n -select n, n.getAnInputArtifact(), n.getAnOutputArtifact(), n.getAKey(), n.getANonce(), - n.getAnAlgorithmOrGenericSource(), n.getKeyOperationSubtype() diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/hash_operations.expected b/cpp/ql/test/experimental/library-tests/quantum/openssl/hash_operations.expected deleted file mode 100644 index 89884b6c405..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/openssl/hash_operations.expected +++ /dev/null @@ -1,4 +0,0 @@ -| openssl_basic.c:124:13:124:30 | HashOperation | openssl_basic.c:124:39:124:44 | Digest | openssl_basic.c:116:38:116:47 | HashAlgorithm | openssl_basic.c:120:37:120:43 | Message | -| openssl_basic.c:144:13:144:22 | HashOperation | openssl_basic.c:144:46:144:51 | Digest | openssl_basic.c:144:67:144:73 | HashAlgorithm | openssl_basic.c:144:24:144:30 | Message | -| openssl_signature.c:23:9:23:26 | HashOperation | openssl_signature.c:23:36:23:41 | Digest | openssl_signature.c:684:24:684:33 | HashAlgorithm | openssl_signature.c:22:34:22:40 | Message | -| openssl_signature.c:23:9:23:26 | HashOperation | openssl_signature.c:23:36:23:41 | Digest | openssl_signature.c:740:24:740:33 | HashAlgorithm | openssl_signature.c:22:34:22:40 | Message | diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/keygen_operations.ql b/cpp/ql/test/experimental/library-tests/quantum/openssl/keygen_operations.ql deleted file mode 100644 index b4ce6043d28..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/openssl/keygen_operations.ql +++ /dev/null @@ -1,6 +0,0 @@ -import cpp -import experimental.quantum.Language -import experimental.quantum.OpenSSL.OpenSSL - -from Crypto::KeyGenerationOperationNode n -select n, n.getOutputKeyArtifact(), n.getAnAlgorithmOrGenericSource() diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/options b/cpp/ql/test/experimental/library-tests/quantum/openssl/options deleted file mode 100644 index eb3abc42d12..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/openssl/options +++ /dev/null @@ -1 +0,0 @@ -semmle-extractor-options: -I ../../../stubs \ No newline at end of file diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/openssl_basic.c b/cpp/ql/test/experimental/library-tests/quantum/openssl_basic.c similarity index 100% rename from cpp/ql/test/experimental/library-tests/quantum/openssl/openssl_basic.c rename to cpp/ql/test/experimental/library-tests/quantum/openssl_basic.c diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/openssl_pkey.c b/cpp/ql/test/experimental/library-tests/quantum/openssl_pkey.c similarity index 100% rename from cpp/ql/test/experimental/library-tests/quantum/openssl/openssl_pkey.c rename to cpp/ql/test/experimental/library-tests/quantum/openssl_pkey.c diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/openssl_signature.c b/cpp/ql/test/experimental/library-tests/quantum/openssl_signature.c similarity index 100% rename from cpp/ql/test/experimental/library-tests/quantum/openssl/openssl_signature.c rename to cpp/ql/test/experimental/library-tests/quantum/openssl_signature.c diff --git a/cpp/ql/test/experimental/library-tests/quantum/operation_algorithms.expected b/cpp/ql/test/experimental/library-tests/quantum/operation_algorithms.expected new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cpp/ql/test/experimental/library-tests/quantum/operation_algorithms.ql b/cpp/ql/test/experimental/library-tests/quantum/operation_algorithms.ql new file mode 100644 index 00000000000..5635f3ab316 --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/operation_algorithms.ql @@ -0,0 +1,5 @@ +import cpp +import experimental.quantum.Language + +from Crypto::OperationNode n +select n, n.getAnAlgorithmOrGenericSource() diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_operations.expected b/cpp/ql/test/experimental/library-tests/quantum/operations.expected similarity index 100% rename from cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_operations.expected rename to cpp/ql/test/experimental/library-tests/quantum/operations.expected diff --git a/cpp/ql/test/experimental/library-tests/quantum/operations.ql b/cpp/ql/test/experimental/library-tests/quantum/operations.ql new file mode 100644 index 00000000000..171387e4e6d --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/operations.ql @@ -0,0 +1,5 @@ +import cpp +import experimental.quantum.Language + +from Crypto::OperationNode n +select n diff --git a/cpp/ql/test/experimental/library-tests/quantum/options b/cpp/ql/test/experimental/library-tests/quantum/options new file mode 100644 index 00000000000..41ee5b35e27 --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/options @@ -0,0 +1 @@ +semmle-extractor-options: -I ../../stubs \ No newline at end of file diff --git a/cpp/ql/test/experimental/library-tests/quantum/signature_algorithms.expected b/cpp/ql/test/experimental/library-tests/quantum/signature_algorithms.expected new file mode 100644 index 00000000000..ffb0ac4ad87 --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/signature_algorithms.expected @@ -0,0 +1,5 @@ +| openssl_signature.c:565:50:565:54 | dsa | DSA | openssl_signature.c:565:17:565:42 | call to EVP_PKEY_CTX_new_from_name | +| openssl_signature.c:702:60:702:71 | RSA-SHA256 | RSA | openssl_signature.c:323:11:323:29 | call to EVP_SIGNATURE_fetch | +| openssl_signature.c:702:60:702:71 | RSA-SHA256 | RSA | openssl_signature.c:359:11:359:29 | call to EVP_SIGNATURE_fetch | +| openssl_signature.c:758:60:758:64 | dsa | DSA | openssl_signature.c:323:11:323:29 | call to EVP_SIGNATURE_fetch | +| openssl_signature.c:758:60:758:64 | dsa | DSA | openssl_signature.c:359:11:359:29 | call to EVP_SIGNATURE_fetch | diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/signature_algorithms.ql b/cpp/ql/test/experimental/library-tests/quantum/signature_algorithms.ql similarity index 100% rename from cpp/ql/test/experimental/library-tests/quantum/openssl/signature_algorithms.ql rename to cpp/ql/test/experimental/library-tests/quantum/signature_algorithms.ql diff --git a/cpp/ql/test/experimental/library-tests/quantum/signature_key_sources.expected b/cpp/ql/test/experimental/library-tests/quantum/signature_key_sources.expected new file mode 100644 index 00000000000..43b25361cd3 --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/signature_key_sources.expected @@ -0,0 +1,5 @@ +| openssl_signature.c:89:9:89:21 | SignOperation | openssl_signature.c:89:53:89:56 | Key | +| openssl_signature.c:151:9:151:27 | SignOperation | openssl_signature.c:142:52:142:55 | Key | +| openssl_signature.c:213:9:213:27 | SignOperation | openssl_signature.c:199:57:199:60 | Key | +| openssl_signature.c:279:9:279:21 | SignOperation | openssl_signature.c:269:39:269:42 | Key | +| openssl_signature.c:343:9:343:35 | SignOperation | openssl_signature.c:330:39:330:42 | Key | \ No newline at end of file diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/signature_key_sources.ql b/cpp/ql/test/experimental/library-tests/quantum/signature_key_sources.ql similarity index 100% rename from cpp/ql/test/experimental/library-tests/quantum/openssl/signature_key_sources.ql rename to cpp/ql/test/experimental/library-tests/quantum/signature_key_sources.ql diff --git a/cpp/ql/test/experimental/library-tests/quantum/signature_message_sources.expected b/cpp/ql/test/experimental/library-tests/quantum/signature_message_sources.expected new file mode 100644 index 00000000000..091715de297 --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/signature_message_sources.expected @@ -0,0 +1,4 @@ +| openssl_signature.c:89:9:89:21 | SignOperation | openssl_signature.c:79:32:79:38 | Message | openssl_signature.c:611:37:611:77 | Constant | +| openssl_signature.c:151:9:151:27 | SignOperation | openssl_signature.c:143:38:143:44 | Message | openssl_signature.c:611:37:611:77 | Constant | +| openssl_signature.c:213:9:213:27 | SignOperation | openssl_signature.c:205:38:205:44 | Message | openssl_signature.c:611:37:611:77 | Constant | +| openssl_signature.c:343:9:343:35 | SignOperation | openssl_signature.c:335:48:335:54 | Message | openssl_signature.c:611:37:611:77 | Constant | \ No newline at end of file diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/signature_message_sources.ql b/cpp/ql/test/experimental/library-tests/quantum/signature_message_sources.ql similarity index 100% rename from cpp/ql/test/experimental/library-tests/quantum/openssl/signature_message_sources.ql rename to cpp/ql/test/experimental/library-tests/quantum/signature_message_sources.ql diff --git a/cpp/ql/test/experimental/library-tests/quantum/signature_operations.expected b/cpp/ql/test/experimental/library-tests/quantum/signature_operations.expected new file mode 100644 index 00000000000..165c200bdc7 --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/signature_operations.expected @@ -0,0 +1,12 @@ +| openssl_signature.c:89:9:89:21 | SignOperation | openssl_signature.c:79:32:79:38 | Message | openssl_signature.c:89:31:89:40 | SignatureOutput | openssl_signature.c:89:53:89:56 | Key | openssl_signature.c:552:35:552:46 | KeyOperationAlgorithm | Sign | +| openssl_signature.c:89:9:89:21 | SignOperation | openssl_signature.c:79:32:79:38 | Message | openssl_signature.c:89:31:89:40 | SignatureOutput | openssl_signature.c:89:53:89:56 | Key | openssl_signature.c:574:50:574:54 | KeyOperationAlgorithm | Sign | +| openssl_signature.c:89:9:89:21 | SignOperation | openssl_signature.c:84:28:84:36 | Message | openssl_signature.c:89:31:89:40 | SignatureOutput | openssl_signature.c:89:53:89:56 | Key | openssl_signature.c:552:35:552:46 | KeyOperationAlgorithm | Sign | +| openssl_signature.c:89:9:89:21 | SignOperation | openssl_signature.c:84:28:84:36 | Message | openssl_signature.c:89:31:89:40 | SignatureOutput | openssl_signature.c:89:53:89:56 | Key | openssl_signature.c:574:50:574:54 | KeyOperationAlgorithm | Sign | +| openssl_signature.c:151:9:151:27 | SignOperation | openssl_signature.c:143:38:143:44 | Message | openssl_signature.c:151:37:151:46 | SignatureOutput | openssl_signature.c:142:52:142:55 | Key | openssl_signature.c:552:35:552:46 | KeyOperationAlgorithm | Sign | +| openssl_signature.c:151:9:151:27 | SignOperation | openssl_signature.c:143:38:143:44 | Message | openssl_signature.c:151:37:151:46 | SignatureOutput | openssl_signature.c:142:52:142:55 | Key | openssl_signature.c:574:50:574:54 | KeyOperationAlgorithm | Sign | +| openssl_signature.c:213:9:213:27 | SignOperation | openssl_signature.c:205:38:205:44 | Message | openssl_signature.c:213:37:213:46 | SignatureOutput | openssl_signature.c:199:57:199:60 | Key | openssl_signature.c:552:35:552:46 | KeyOperationAlgorithm | Sign | +| openssl_signature.c:213:9:213:27 | SignOperation | openssl_signature.c:205:38:205:44 | Message | openssl_signature.c:213:37:213:46 | SignatureOutput | openssl_signature.c:199:57:199:60 | Key | openssl_signature.c:574:50:574:54 | KeyOperationAlgorithm | Sign | +| openssl_signature.c:279:9:279:21 | SignOperation | openssl_signature.c:279:60:279:65 | Message | openssl_signature.c:279:33:279:42 | SignatureOutput | openssl_signature.c:269:39:269:42 | Key | openssl_signature.c:552:35:552:46 | KeyOperationAlgorithm | Sign | +| openssl_signature.c:279:9:279:21 | SignOperation | openssl_signature.c:279:60:279:65 | Message | openssl_signature.c:279:33:279:42 | SignatureOutput | openssl_signature.c:269:39:269:42 | Key | openssl_signature.c:574:50:574:54 | KeyOperationAlgorithm | Sign | +| openssl_signature.c:343:9:343:35 | SignOperation | openssl_signature.c:335:48:335:54 | Message | openssl_signature.c:343:47:343:56 | SignatureOutput | openssl_signature.c:330:39:330:42 | Key | openssl_signature.c:711:60:711:71 | KeyOperationAlgorithm | Sign | +| openssl_signature.c:343:9:343:35 | SignOperation | openssl_signature.c:335:48:335:54 | Message | openssl_signature.c:343:47:343:56 | SignatureOutput | openssl_signature.c:330:39:330:42 | Key | openssl_signature.c:767:60:767:64 | KeyOperationAlgorithm | Sign | \ No newline at end of file diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/signature_operations.ql b/cpp/ql/test/experimental/library-tests/quantum/signature_operations.ql similarity index 100% rename from cpp/ql/test/experimental/library-tests/quantum/openssl/signature_operations.ql rename to cpp/ql/test/experimental/library-tests/quantum/signature_operations.ql diff --git a/shared/quantum/codeql/quantum/experimental/Model.qll b/shared/quantum/codeql/quantum/experimental/Model.qll index 603dae127b5..bbe71398f03 100644 --- a/shared/quantum/codeql/quantum/experimental/Model.qll +++ b/shared/quantum/codeql/quantum/experimental/Model.qll @@ -1654,14 +1654,19 @@ module CryptographyBase Input> { result = this.getAKnownAlgorithm() or result = instance - .(KeyCreationOperationInstance) + .(KeyArtifactOutputInstance) + .getCreator() .getAnAlgorithmValueConsumer() .getAGenericSourceNode() } KeyCreationCandidateAlgorithmNode getAKnownAlgorithm() { result = - instance.(KeyCreationOperationInstance).getAnAlgorithmValueConsumer().getAKnownSourceNode() + instance + .(KeyArtifactOutputInstance) + .getCreator() + .getAnAlgorithmValueConsumer() + .getAKnownSourceNode() } override NodeBase getChild(string edgeName) { From 92084dd74f5a6b69c3d4ce8b41d434eaec2993fb Mon Sep 17 00:00:00 2001 From: Napalys Klicius Date: Wed, 11 Jun 2025 11:43:58 +0200 Subject: [PATCH 025/150] JS: add `js/template-syntax-in-string-literal` to the Code Quality suite. --- .../query-suite/javascript-code-quality.qls.expected | 1 + .../ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/javascript/ql/integration-tests/query-suite/javascript-code-quality.qls.expected b/javascript/ql/integration-tests/query-suite/javascript-code-quality.qls.expected index 451a8b4bf27..b6b9b038277 100644 --- a/javascript/ql/integration-tests/query-suite/javascript-code-quality.qls.expected +++ b/javascript/ql/integration-tests/query-suite/javascript-code-quality.qls.expected @@ -2,6 +2,7 @@ ql/javascript/ql/src/Declarations/IneffectiveParameterType.ql ql/javascript/ql/src/Expressions/ExprHasNoEffect.ql ql/javascript/ql/src/Expressions/MissingAwait.ql ql/javascript/ql/src/LanguageFeatures/SpuriousArguments.ql +ql/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql ql/javascript/ql/src/Quality/UnhandledErrorInStreamPipeline.ql ql/javascript/ql/src/RegExp/DuplicateCharacterInCharacterClass.ql ql/javascript/ql/src/RegExp/RegExpAlwaysMatches.ql diff --git a/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql b/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql index f22b9779560..6e0150656e6 100644 --- a/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql +++ b/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql @@ -5,7 +5,10 @@ * @problem.severity warning * @id js/template-syntax-in-string-literal * @precision high - * @tags correctness + * @tags quality + * reliability + * correctness + * language-features */ import javascript From b3bb71f2e2952267c12c3b3d87bed9522c9cc5af Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Wed, 11 Jun 2025 15:38:29 +0200 Subject: [PATCH 026/150] Java: Update the CFG for assert statements to make them proper guards. --- .../lib/semmle/code/java/ControlFlowGraph.qll | 49 ++++++++++++++----- 1 file changed, 38 insertions(+), 11 deletions(-) diff --git a/java/ql/lib/semmle/code/java/ControlFlowGraph.qll b/java/ql/lib/semmle/code/java/ControlFlowGraph.qll index e3c7ed6e5d9..476c72bc0e0 100644 --- a/java/ql/lib/semmle/code/java/ControlFlowGraph.qll +++ b/java/ql/lib/semmle/code/java/ControlFlowGraph.qll @@ -327,12 +327,18 @@ private module ControlFlowGraphImpl { ) } + private ThrowableType assertionError() { result.hasQualifiedName("java.lang", "AssertionError") } + /** * Gets an exception type that may be thrown during execution of the * body or the resources (if any) of `try`. */ private ThrowableType thrownInBody(TryStmt try) { - exists(AstNode n | mayThrow(n, result) | + exists(AstNode n | + mayThrow(n, result) + or + n instanceof AssertStmt and result = assertionError() + | n.getEnclosingStmt().getEnclosingStmt+() = try.getBlock() or n.(Expr).getParent*() = try.getAResource() ) @@ -394,10 +400,7 @@ private module ControlFlowGraphImpl { exists(LogicExpr logexpr | logexpr.(BinaryExpr).getLeftOperand() = b or - // Cannot use LogicExpr.getAnOperand or BinaryExpr.getAnOperand as they remove parentheses. - logexpr.(BinaryExpr).getRightOperand() = b and inBooleanContext(logexpr) - or - logexpr.(UnaryExpr).getExpr() = b and inBooleanContext(logexpr) + logexpr.getAnOperand() = b and inBooleanContext(logexpr) ) or exists(ConditionalExpr condexpr | @@ -407,6 +410,8 @@ private module ControlFlowGraphImpl { inBooleanContext(condexpr) ) or + exists(AssertStmt assertstmt | assertstmt.getExpr() = b) + or exists(SwitchExpr switch | inBooleanContext(switch) and switch.getAResult() = b @@ -672,8 +677,6 @@ private module ControlFlowGraphImpl { this instanceof EmptyStmt or this instanceof LocalTypeDeclStmt - or - this instanceof AssertStmt } /** Gets child nodes in their order of execution. Indexing starts at either -1 or 0. */ @@ -744,8 +747,6 @@ private module ControlFlowGraphImpl { or index = 0 and result = this.(ThrowStmt).getExpr() or - index = 0 and result = this.(AssertStmt).getExpr() - or result = this.(RecordPatternExpr).getSubPattern(index) } @@ -807,9 +808,12 @@ private module ControlFlowGraphImpl { or result = first(n.(SynchronizedStmt).getExpr()) or + result = first(n.(AssertStmt).getExpr()) + or result.asStmt() = n and not n instanceof PostOrderNode and - not n instanceof SynchronizedStmt + not n instanceof SynchronizedStmt and + not n instanceof AssertStmt or result.asExpr() = n and n instanceof SwitchExpr } @@ -1112,7 +1116,19 @@ private module ControlFlowGraphImpl { // `return` statements give rise to a `Return` completion last.asStmt() = n.(ReturnStmt) and completion = ReturnCompletion() or - // `throw` statements or throwing calls give rise to ` Throw` completion + exists(AssertStmt assertstmt | assertstmt = n | + // `assert` statements may complete normally - we use the `AssertStmt` itself + // to represent this outcome + last.asStmt() = assertstmt and completion = NormalCompletion() + or + // `assert` statements may throw + completion = ThrowCompletion(assertionError()) and + if exists(assertstmt.getMessage()) + then last(assertstmt.getMessage(), last, NormalCompletion()) + else last(assertstmt.getExpr(), last, BooleanCompletion(false, _)) + ) + or + // `throw` statements or throwing calls give rise to `Throw` completion exists(ThrowableType tt | mayThrow(n, tt) | last = n.getCfgNode() and completion = ThrowCompletion(tt) ) @@ -1520,6 +1536,17 @@ private module ControlFlowGraphImpl { exists(int i | last(s.getVariable(i), n, completion) and result = first(s.getVariable(i + 1))) ) or + // Assert statements: + exists(AssertStmt assertstmt | + last(assertstmt.getExpr(), n, completion) and + completion = BooleanCompletion(true, _) and + result.asStmt() = assertstmt + or + last(assertstmt.getExpr(), n, completion) and + completion = BooleanCompletion(false, _) and + result = first(assertstmt.getMessage()) + ) + or // When expressions: exists(WhenExpr whenexpr | n.asExpr() = whenexpr and From f27e310ba3f4b58c17e904928f2a5ee7aaeb3eee Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Wed, 11 Jun 2025 15:53:02 +0200 Subject: [PATCH 027/150] Java: Adjust references. --- java/ql/lib/semmle/code/java/dataflow/Nullness.qll | 2 -- .../lib/semmle/code/java/frameworks/Assertions.qll | 14 ++++++++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/java/ql/lib/semmle/code/java/dataflow/Nullness.qll b/java/ql/lib/semmle/code/java/dataflow/Nullness.qll index 786207d3486..36ad96c497f 100644 --- a/java/ql/lib/semmle/code/java/dataflow/Nullness.qll +++ b/java/ql/lib/semmle/code/java/dataflow/Nullness.qll @@ -141,8 +141,6 @@ private ControlFlowNode varDereference(SsaVariable v, VarAccess va) { private ControlFlowNode ensureNotNull(SsaVariable v) { result = varDereference(v, _) or - result.asStmt().(AssertStmt).getExpr() = nullGuard(v, true, false) - or exists(AssertTrueMethod m | result.asCall() = m.getACheck(nullGuard(v, true, false))) or exists(AssertFalseMethod m | result.asCall() = m.getACheck(nullGuard(v, false, false))) diff --git a/java/ql/lib/semmle/code/java/frameworks/Assertions.qll b/java/ql/lib/semmle/code/java/frameworks/Assertions.qll index e7f86b9bfd8..e1601c854e4 100644 --- a/java/ql/lib/semmle/code/java/frameworks/Assertions.qll +++ b/java/ql/lib/semmle/code/java/frameworks/Assertions.qll @@ -110,11 +110,17 @@ predicate assertFail(BasicBlock bb, ControlFlowNode n) { ( exists(AssertTrueMethod m | n.asExpr() = m.getACheck(any(BooleanLiteral b | b.getBooleanValue() = false)) - ) or + ) + or exists(AssertFalseMethod m | n.asExpr() = m.getACheck(any(BooleanLiteral b | b.getBooleanValue() = true)) - ) or - exists(AssertFailMethod m | n.asExpr() = m.getACheck()) or - n.asStmt().(AssertStmt).getExpr().(BooleanLiteral).getBooleanValue() = false + ) + or + exists(AssertFailMethod m | n.asExpr() = m.getACheck()) + or + exists(AssertStmt a | + n.asExpr() = a.getExpr() and + a.getExpr().(BooleanLiteral).getBooleanValue() = false + ) ) } From afec8b3153c7b564c1e73a971ba3121ecd1c3688 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Tue, 3 Jun 2025 20:29:58 +0200 Subject: [PATCH 028/150] Swift: mass enable diff-informed data flow An auto-generated patch that enables diff-informed data flow in the obvious cases. Builds on https://github.com/github/codeql/pull/18343 and https://github.com/github/codeql-patch/pull/88 --- swift/ql/lib/codeql/swift/security/CleartextLoggingQuery.qll | 2 ++ .../ql/lib/codeql/swift/security/CleartextTransmissionQuery.qll | 2 ++ swift/ql/lib/codeql/swift/security/CommandInjectionQuery.qll | 2 ++ swift/ql/lib/codeql/swift/security/ConstantPasswordQuery.qll | 2 ++ swift/ql/lib/codeql/swift/security/ConstantSaltQuery.qll | 2 ++ swift/ql/lib/codeql/swift/security/ECBEncryptionQuery.qll | 2 ++ .../lib/codeql/swift/security/HardcodedEncryptionKeyQuery.qll | 2 ++ swift/ql/lib/codeql/swift/security/InsecureTLSQuery.qll | 2 ++ .../codeql/swift/security/InsufficientHashIterationsQuery.qll | 2 ++ swift/ql/lib/codeql/swift/security/PathInjectionQuery.qll | 2 ++ swift/ql/lib/codeql/swift/security/PredicateInjectionQuery.qll | 2 ++ swift/ql/lib/codeql/swift/security/SqlInjectionQuery.qll | 2 ++ .../codeql/swift/security/StaticInitializationVectorQuery.qll | 2 ++ .../lib/codeql/swift/security/StringLengthConflationQuery.qll | 2 ++ .../lib/codeql/swift/security/UncontrolledFormatStringQuery.qll | 2 ++ swift/ql/lib/codeql/swift/security/UnsafeJsEvalQuery.qll | 2 ++ swift/ql/lib/codeql/swift/security/UnsafeUnpackQuery.qll | 2 ++ swift/ql/lib/codeql/swift/security/WeakPasswordHashingQuery.qll | 2 ++ .../lib/codeql/swift/security/WeakSensitiveDataHashingQuery.qll | 2 ++ swift/ql/lib/codeql/swift/security/XXEQuery.qll | 2 ++ .../ql/lib/codeql/swift/security/regex/RegexInjectionQuery.qll | 2 ++ 21 files changed, 42 insertions(+) diff --git a/swift/ql/lib/codeql/swift/security/CleartextLoggingQuery.qll b/swift/ql/lib/codeql/swift/security/CleartextLoggingQuery.qll index 740fccefe97..40010eba649 100644 --- a/swift/ql/lib/codeql/swift/security/CleartextLoggingQuery.qll +++ b/swift/ql/lib/codeql/swift/security/CleartextLoggingQuery.qll @@ -25,6 +25,8 @@ module CleartextLoggingConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node n1, DataFlow::Node n2) { any(CleartextLoggingAdditionalFlowStep s).step(n1, n2) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/swift/ql/lib/codeql/swift/security/CleartextTransmissionQuery.qll b/swift/ql/lib/codeql/swift/security/CleartextTransmissionQuery.qll index 3952d7a89b1..42e9b68328f 100644 --- a/swift/ql/lib/codeql/swift/security/CleartextTransmissionQuery.qll +++ b/swift/ql/lib/codeql/swift/security/CleartextTransmissionQuery.qll @@ -28,6 +28,8 @@ module CleartextTransmissionConfig implements DataFlow::ConfigSig { // make sources barriers so that we only report the closest instance isSource(node) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/swift/ql/lib/codeql/swift/security/CommandInjectionQuery.qll b/swift/ql/lib/codeql/swift/security/CommandInjectionQuery.qll index 10dbc137726..ebeb9c4b6f4 100644 --- a/swift/ql/lib/codeql/swift/security/CommandInjectionQuery.qll +++ b/swift/ql/lib/codeql/swift/security/CommandInjectionQuery.qll @@ -23,6 +23,8 @@ module CommandInjectionConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { any(CommandInjectionAdditionalFlowStep s).step(nodeFrom, nodeTo) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/swift/ql/lib/codeql/swift/security/ConstantPasswordQuery.qll b/swift/ql/lib/codeql/swift/security/ConstantPasswordQuery.qll index 7f6475a6ee4..91d46b764df 100644 --- a/swift/ql/lib/codeql/swift/security/ConstantPasswordQuery.qll +++ b/swift/ql/lib/codeql/swift/security/ConstantPasswordQuery.qll @@ -38,6 +38,8 @@ module ConstantPasswordConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { any(ConstantPasswordAdditionalFlowStep s).step(nodeFrom, nodeTo) } + + predicate observeDiffInformedIncrementalMode() { any() } } module ConstantPasswordFlow = TaintTracking::Global; diff --git a/swift/ql/lib/codeql/swift/security/ConstantSaltQuery.qll b/swift/ql/lib/codeql/swift/security/ConstantSaltQuery.qll index e9b91d23570..68c1e6ef17a 100644 --- a/swift/ql/lib/codeql/swift/security/ConstantSaltQuery.qll +++ b/swift/ql/lib/codeql/swift/security/ConstantSaltQuery.qll @@ -39,6 +39,8 @@ module ConstantSaltConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { any(ConstantSaltAdditionalFlowStep s).step(nodeFrom, nodeTo) } + + predicate observeDiffInformedIncrementalMode() { any() } } module ConstantSaltFlow = TaintTracking::Global; diff --git a/swift/ql/lib/codeql/swift/security/ECBEncryptionQuery.qll b/swift/ql/lib/codeql/swift/security/ECBEncryptionQuery.qll index 133e7d6c2cd..a9463937555 100644 --- a/swift/ql/lib/codeql/swift/security/ECBEncryptionQuery.qll +++ b/swift/ql/lib/codeql/swift/security/ECBEncryptionQuery.qll @@ -22,6 +22,8 @@ module EcbEncryptionConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { any(EcbEncryptionAdditionalFlowStep s).step(nodeFrom, nodeTo) } + + predicate observeDiffInformedIncrementalMode() { any() } } module EcbEncryptionFlow = DataFlow::Global; diff --git a/swift/ql/lib/codeql/swift/security/HardcodedEncryptionKeyQuery.qll b/swift/ql/lib/codeql/swift/security/HardcodedEncryptionKeyQuery.qll index 9e0cb16b7c6..5eb379f248a 100644 --- a/swift/ql/lib/codeql/swift/security/HardcodedEncryptionKeyQuery.qll +++ b/swift/ql/lib/codeql/swift/security/HardcodedEncryptionKeyQuery.qll @@ -46,6 +46,8 @@ module HardcodedKeyConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { any(HardcodedEncryptionKeyAdditionalFlowStep s).step(nodeFrom, nodeTo) } + + predicate observeDiffInformedIncrementalMode() { any() } } module HardcodedKeyFlow = TaintTracking::Global; diff --git a/swift/ql/lib/codeql/swift/security/InsecureTLSQuery.qll b/swift/ql/lib/codeql/swift/security/InsecureTLSQuery.qll index 769c385d4d6..a5c857e573b 100644 --- a/swift/ql/lib/codeql/swift/security/InsecureTLSQuery.qll +++ b/swift/ql/lib/codeql/swift/security/InsecureTLSQuery.qll @@ -21,6 +21,8 @@ module InsecureTlsConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { any(InsecureTlsExtensionsAdditionalFlowStep s).step(nodeFrom, nodeTo) } + + predicate observeDiffInformedIncrementalMode() { any() } } module InsecureTlsFlow = TaintTracking::Global; diff --git a/swift/ql/lib/codeql/swift/security/InsufficientHashIterationsQuery.qll b/swift/ql/lib/codeql/swift/security/InsufficientHashIterationsQuery.qll index 122d5b2b0d8..0a7fea3d3c5 100644 --- a/swift/ql/lib/codeql/swift/security/InsufficientHashIterationsQuery.qll +++ b/swift/ql/lib/codeql/swift/security/InsufficientHashIterationsQuery.qll @@ -34,6 +34,8 @@ module InsufficientHashIterationsConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { any(InsufficientHashIterationsAdditionalFlowStep s).step(nodeFrom, nodeTo) } + + predicate observeDiffInformedIncrementalMode() { any() } } module InsufficientHashIterationsFlow = TaintTracking::Global; diff --git a/swift/ql/lib/codeql/swift/security/PathInjectionQuery.qll b/swift/ql/lib/codeql/swift/security/PathInjectionQuery.qll index c74dae787ed..64cf208b878 100644 --- a/swift/ql/lib/codeql/swift/security/PathInjectionQuery.qll +++ b/swift/ql/lib/codeql/swift/security/PathInjectionQuery.qll @@ -23,6 +23,8 @@ module PathInjectionConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { any(PathInjectionAdditionalFlowStep s).step(node1, node2) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/swift/ql/lib/codeql/swift/security/PredicateInjectionQuery.qll b/swift/ql/lib/codeql/swift/security/PredicateInjectionQuery.qll index 86d04364774..97acbc074bd 100644 --- a/swift/ql/lib/codeql/swift/security/PredicateInjectionQuery.qll +++ b/swift/ql/lib/codeql/swift/security/PredicateInjectionQuery.qll @@ -22,6 +22,8 @@ module PredicateInjectionConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node n1, DataFlow::Node n2) { any(PredicateInjectionAdditionalFlowStep s).step(n1, n2) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/swift/ql/lib/codeql/swift/security/SqlInjectionQuery.qll b/swift/ql/lib/codeql/swift/security/SqlInjectionQuery.qll index 5b5a2c920fe..8ee164a4c23 100644 --- a/swift/ql/lib/codeql/swift/security/SqlInjectionQuery.qll +++ b/swift/ql/lib/codeql/swift/security/SqlInjectionQuery.qll @@ -23,6 +23,8 @@ module SqlInjectionConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { any(SqlInjectionAdditionalFlowStep s).step(nodeFrom, nodeTo) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/swift/ql/lib/codeql/swift/security/StaticInitializationVectorQuery.qll b/swift/ql/lib/codeql/swift/security/StaticInitializationVectorQuery.qll index 5f281191d99..3c4359e02db 100644 --- a/swift/ql/lib/codeql/swift/security/StaticInitializationVectorQuery.qll +++ b/swift/ql/lib/codeql/swift/security/StaticInitializationVectorQuery.qll @@ -40,6 +40,8 @@ module StaticInitializationVectorConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { any(StaticInitializationVectorAdditionalFlowStep s).step(nodeFrom, nodeTo) } + + predicate observeDiffInformedIncrementalMode() { any() } } module StaticInitializationVectorFlow = TaintTracking::Global; diff --git a/swift/ql/lib/codeql/swift/security/StringLengthConflationQuery.qll b/swift/ql/lib/codeql/swift/security/StringLengthConflationQuery.qll index 8e608776a20..eb17306f22f 100644 --- a/swift/ql/lib/codeql/swift/security/StringLengthConflationQuery.qll +++ b/swift/ql/lib/codeql/swift/security/StringLengthConflationQuery.qll @@ -39,6 +39,8 @@ module StringLengthConflationConfig implements DataFlow::StateConfigSig { predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { any(StringLengthConflationAdditionalFlowStep s).step(nodeFrom, nodeTo) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/swift/ql/lib/codeql/swift/security/UncontrolledFormatStringQuery.qll b/swift/ql/lib/codeql/swift/security/UncontrolledFormatStringQuery.qll index 37e40774bf9..baee65773d6 100644 --- a/swift/ql/lib/codeql/swift/security/UncontrolledFormatStringQuery.qll +++ b/swift/ql/lib/codeql/swift/security/UncontrolledFormatStringQuery.qll @@ -23,6 +23,8 @@ module TaintedFormatConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { any(UncontrolledFormatStringAdditionalFlowStep s).step(nodeFrom, nodeTo) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/swift/ql/lib/codeql/swift/security/UnsafeJsEvalQuery.qll b/swift/ql/lib/codeql/swift/security/UnsafeJsEvalQuery.qll index b79219ab633..92b061b2af4 100644 --- a/swift/ql/lib/codeql/swift/security/UnsafeJsEvalQuery.qll +++ b/swift/ql/lib/codeql/swift/security/UnsafeJsEvalQuery.qll @@ -22,6 +22,8 @@ module UnsafeJsEvalConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { any(UnsafeJsEvalAdditionalFlowStep s).step(nodeFrom, nodeTo) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/swift/ql/lib/codeql/swift/security/UnsafeUnpackQuery.qll b/swift/ql/lib/codeql/swift/security/UnsafeUnpackQuery.qll index 59be3a7eb31..e79bce5ba14 100644 --- a/swift/ql/lib/codeql/swift/security/UnsafeUnpackQuery.qll +++ b/swift/ql/lib/codeql/swift/security/UnsafeUnpackQuery.qll @@ -24,6 +24,8 @@ module UnsafeUnpackConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { any(UnsafeUnpackAdditionalFlowStep s).step(nodeFrom, nodeTo) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/swift/ql/lib/codeql/swift/security/WeakPasswordHashingQuery.qll b/swift/ql/lib/codeql/swift/security/WeakPasswordHashingQuery.qll index b2ad35c2bf8..6532d8a6a7f 100644 --- a/swift/ql/lib/codeql/swift/security/WeakPasswordHashingQuery.qll +++ b/swift/ql/lib/codeql/swift/security/WeakPasswordHashingQuery.qll @@ -37,6 +37,8 @@ module WeakPasswordHashingConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { any(WeakPasswordHashingAdditionalFlowStep s).step(nodeFrom, nodeTo) } + + predicate observeDiffInformedIncrementalMode() { any() } } module WeakPasswordHashingFlow = TaintTracking::Global; diff --git a/swift/ql/lib/codeql/swift/security/WeakSensitiveDataHashingQuery.qll b/swift/ql/lib/codeql/swift/security/WeakSensitiveDataHashingQuery.qll index ade9d9f1437..d38e78a1ded 100755 --- a/swift/ql/lib/codeql/swift/security/WeakSensitiveDataHashingQuery.qll +++ b/swift/ql/lib/codeql/swift/security/WeakSensitiveDataHashingQuery.qll @@ -38,6 +38,8 @@ module WeakSensitiveDataHashingConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { any(WeakSensitiveDataHashingAdditionalFlowStep s).step(nodeFrom, nodeTo) } + + predicate observeDiffInformedIncrementalMode() { any() } } module WeakSensitiveDataHashingFlow = TaintTracking::Global; diff --git a/swift/ql/lib/codeql/swift/security/XXEQuery.qll b/swift/ql/lib/codeql/swift/security/XXEQuery.qll index 0a16417bd72..afd6c068452 100644 --- a/swift/ql/lib/codeql/swift/security/XXEQuery.qll +++ b/swift/ql/lib/codeql/swift/security/XXEQuery.qll @@ -22,6 +22,8 @@ module XxeConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node n1, DataFlow::Node n2) { any(XxeAdditionalFlowStep s).step(n1, n2) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/swift/ql/lib/codeql/swift/security/regex/RegexInjectionQuery.qll b/swift/ql/lib/codeql/swift/security/regex/RegexInjectionQuery.qll index 8fee12442d3..8b5929c4064 100644 --- a/swift/ql/lib/codeql/swift/security/regex/RegexInjectionQuery.qll +++ b/swift/ql/lib/codeql/swift/security/regex/RegexInjectionQuery.qll @@ -22,6 +22,8 @@ module RegexInjectionConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { any(RegexInjectionAdditionalFlowStep s).step(nodeFrom, nodeTo) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** From 2078a34763d2d6f5c518eb04336d6d4bec662edc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 4 Jun 2025 13:38:01 +0200 Subject: [PATCH 029/150] Disable diff-informed on InsecureTLSQuery due to DIFF-INFORMED test failures --- swift/ql/lib/codeql/swift/security/InsecureTLSQuery.qll | 2 -- 1 file changed, 2 deletions(-) diff --git a/swift/ql/lib/codeql/swift/security/InsecureTLSQuery.qll b/swift/ql/lib/codeql/swift/security/InsecureTLSQuery.qll index a5c857e573b..769c385d4d6 100644 --- a/swift/ql/lib/codeql/swift/security/InsecureTLSQuery.qll +++ b/swift/ql/lib/codeql/swift/security/InsecureTLSQuery.qll @@ -21,8 +21,6 @@ module InsecureTlsConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { any(InsecureTlsExtensionsAdditionalFlowStep s).step(nodeFrom, nodeTo) } - - predicate observeDiffInformedIncrementalMode() { any() } } module InsecureTlsFlow = TaintTracking::Global; From e23350114425ec9a369964c10a8069b93d58eabb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Tue, 3 Jun 2025 20:09:40 +0200 Subject: [PATCH 030/150] Go: mass enable diff-informed data flow An auto-generated patch that enables diff-informed data flow in the obvious cases. Builds on https://github.com/github/codeql/pull/18345 and https://github.com/github/codeql-patch/pull/88 --- go/ql/lib/semmle/go/security/CleartextLogging.qll | 2 ++ go/ql/lib/semmle/go/security/ExternalAPIs.qll | 2 ++ go/ql/lib/semmle/go/security/LogInjection.qll | 2 ++ go/ql/lib/semmle/go/security/MissingJwtSignatureCheck.qll | 2 ++ go/ql/lib/semmle/go/security/OpenUrlRedirect.qll | 2 ++ go/ql/lib/semmle/go/security/SqlInjection.qll | 2 ++ go/ql/lib/semmle/go/security/StoredCommand.qll | 2 ++ go/ql/lib/semmle/go/security/StoredXss.qll | 2 ++ go/ql/lib/semmle/go/security/StringBreak.qll | 2 ++ go/ql/lib/semmle/go/security/TaintedPath.qll | 2 ++ go/ql/lib/semmle/go/security/UncontrolledAllocationSize.qll | 2 ++ go/ql/lib/semmle/go/security/UnsafeUnzipSymlink.qll | 2 ++ go/ql/lib/semmle/go/security/XPathInjection.qll | 2 ++ go/ql/lib/semmle/go/security/ZipSlip.qll | 2 ++ go/ql/src/Security/CWE-020/IncompleteHostnameRegexp.ql | 2 ++ go/ql/src/Security/CWE-020/MissingRegexpAnchor.ql | 2 ++ go/ql/src/Security/CWE-020/SuspiciousCharacterInRegexp.ql | 2 ++ go/ql/src/Security/CWE-209/StackTraceExposure.ql | 2 ++ go/ql/src/Security/CWE-326/InsufficientKeySize.ql | 2 ++ go/ql/src/Security/CWE-352/ConstantOauth2State.ql | 2 ++ go/ql/src/Security/CWE-640/EmailInjection.qll | 2 ++ go/ql/src/experimental/CWE-090/LDAPInjection.qll | 2 ++ go/ql/src/experimental/CWE-203/Timing.ql | 2 ++ go/ql/src/experimental/CWE-285/PamAuthBypass.ql | 4 ++++ .../experimental/CWE-287/ImproperLdapAuthCustomizations.qll | 2 ++ go/ql/src/experimental/CWE-321-V2/HardCodedKeys.ql | 2 ++ .../CWE-327/WeakCryptoAlgorithmCustomizations.qll | 2 ++ go/ql/src/experimental/CWE-369/DivideByZero.ql | 2 ++ go/ql/src/experimental/CWE-74/DsnInjectionCustomizations.qll | 2 ++ go/ql/src/experimental/frameworks/DecompressionBombs.qll | 2 ++ 30 files changed, 62 insertions(+) diff --git a/go/ql/lib/semmle/go/security/CleartextLogging.qll b/go/ql/lib/semmle/go/security/CleartextLogging.qll index 2e0c9665c4b..5218d03d908 100644 --- a/go/ql/lib/semmle/go/security/CleartextLogging.qll +++ b/go/ql/lib/semmle/go/security/CleartextLogging.qll @@ -46,6 +46,8 @@ module CleartextLogging { // Also exclude protobuf field fetches, since they amount to single field reads. not any(Protobuf::GetMethod gm).taintStep(src, trg) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/go/ql/lib/semmle/go/security/ExternalAPIs.qll b/go/ql/lib/semmle/go/security/ExternalAPIs.qll index 6799099b999..4a561c17136 100644 --- a/go/ql/lib/semmle/go/security/ExternalAPIs.qll +++ b/go/ql/lib/semmle/go/security/ExternalAPIs.qll @@ -197,6 +197,8 @@ private module UntrustedDataToUnknownExternalApiConfig implements DataFlow::Conf predicate isSource(DataFlow::Node source) { source instanceof ActiveThreatModelSource } predicate isSink(DataFlow::Node sink) { sink instanceof UnknownExternalApiDataNode } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/go/ql/lib/semmle/go/security/LogInjection.qll b/go/ql/lib/semmle/go/security/LogInjection.qll index d8bc586ed91..3db7e27c781 100644 --- a/go/ql/lib/semmle/go/security/LogInjection.qll +++ b/go/ql/lib/semmle/go/security/LogInjection.qll @@ -21,6 +21,8 @@ module LogInjection { predicate isSink(DataFlow::Node sink) { sink instanceof Sink } predicate isBarrier(DataFlow::Node sanitizer) { sanitizer instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** Tracks taint flow for reasoning about log injection vulnerabilities. */ diff --git a/go/ql/lib/semmle/go/security/MissingJwtSignatureCheck.qll b/go/ql/lib/semmle/go/security/MissingJwtSignatureCheck.qll index 73605d65b02..15afe81944f 100644 --- a/go/ql/lib/semmle/go/security/MissingJwtSignatureCheck.qll +++ b/go/ql/lib/semmle/go/security/MissingJwtSignatureCheck.qll @@ -23,6 +23,8 @@ module MissingJwtSignatureCheck { predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { any(AdditionalFlowStep s).step(nodeFrom, nodeTo) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** Tracks taint flow for reasoning about JWT vulnerabilities. */ diff --git a/go/ql/lib/semmle/go/security/OpenUrlRedirect.qll b/go/ql/lib/semmle/go/security/OpenUrlRedirect.qll index bfe47f260cd..1d2d7a1c60b 100644 --- a/go/ql/lib/semmle/go/security/OpenUrlRedirect.qll +++ b/go/ql/lib/semmle/go/security/OpenUrlRedirect.qll @@ -54,6 +54,8 @@ module OpenUrlRedirect { or hostnameSanitizingPrefixEdge(node, _) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** Tracks taint flow from unvalidated, untrusted data to URL redirections. */ diff --git a/go/ql/lib/semmle/go/security/SqlInjection.qll b/go/ql/lib/semmle/go/security/SqlInjection.qll index e24b30f40d3..5b751309025 100644 --- a/go/ql/lib/semmle/go/security/SqlInjection.qll +++ b/go/ql/lib/semmle/go/security/SqlInjection.qll @@ -23,6 +23,8 @@ module SqlInjection { } predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** Tracks taint flow for reasoning about SQL-injection vulnerabilities. */ diff --git a/go/ql/lib/semmle/go/security/StoredCommand.qll b/go/ql/lib/semmle/go/security/StoredCommand.qll index 38555370cfc..983f739bdab 100644 --- a/go/ql/lib/semmle/go/security/StoredCommand.qll +++ b/go/ql/lib/semmle/go/security/StoredCommand.qll @@ -26,6 +26,8 @@ module StoredCommand { predicate isSink(DataFlow::Node sink) { sink instanceof CommandInjection::Sink } predicate isBarrier(DataFlow::Node node) { node instanceof CommandInjection::Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** Tracks taint flow for reasoning about command-injection vulnerabilities. */ diff --git a/go/ql/lib/semmle/go/security/StoredXss.qll b/go/ql/lib/semmle/go/security/StoredXss.qll index 2bf6bf24804..3bea8e8c1e0 100644 --- a/go/ql/lib/semmle/go/security/StoredXss.qll +++ b/go/ql/lib/semmle/go/security/StoredXss.qll @@ -22,6 +22,8 @@ module StoredXss { predicate isSink(DataFlow::Node sink) { sink instanceof Sink } predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** Tracks taint flow for reasoning about XSS. */ diff --git a/go/ql/lib/semmle/go/security/StringBreak.qll b/go/ql/lib/semmle/go/security/StringBreak.qll index 02b4c5b3313..87a676b6f97 100644 --- a/go/ql/lib/semmle/go/security/StringBreak.qll +++ b/go/ql/lib/semmle/go/security/StringBreak.qll @@ -26,6 +26,8 @@ module StringBreak { predicate isBarrier(DataFlow::Node node, FlowState state) { state = node.(Sanitizer).getQuote() } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/go/ql/lib/semmle/go/security/TaintedPath.qll b/go/ql/lib/semmle/go/security/TaintedPath.qll index 674cda1157c..b814ad5d4ac 100644 --- a/go/ql/lib/semmle/go/security/TaintedPath.qll +++ b/go/ql/lib/semmle/go/security/TaintedPath.qll @@ -17,6 +17,8 @@ module TaintedPath { predicate isSink(DataFlow::Node sink) { sink instanceof Sink } predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** Tracks taint flow for reasoning about path-traversal vulnerabilities. */ diff --git a/go/ql/lib/semmle/go/security/UncontrolledAllocationSize.qll b/go/ql/lib/semmle/go/security/UncontrolledAllocationSize.qll index 885aa7a7053..91bbcfaa1ed 100644 --- a/go/ql/lib/semmle/go/security/UncontrolledAllocationSize.qll +++ b/go/ql/lib/semmle/go/security/UncontrolledAllocationSize.qll @@ -27,6 +27,8 @@ module UncontrolledAllocationSize { node2 = cn.getResult(0) ) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** Tracks taint flow for reasoning about uncontrolled allocation size issues. */ diff --git a/go/ql/lib/semmle/go/security/UnsafeUnzipSymlink.qll b/go/ql/lib/semmle/go/security/UnsafeUnzipSymlink.qll index 1d18ac5f639..19047b12b78 100644 --- a/go/ql/lib/semmle/go/security/UnsafeUnzipSymlink.qll +++ b/go/ql/lib/semmle/go/security/UnsafeUnzipSymlink.qll @@ -44,6 +44,8 @@ module UnsafeUnzipSymlink { predicate isSink(DataFlow::Node sink) { sink instanceof SymlinkSink } predicate isBarrier(DataFlow::Node node) { node instanceof SymlinkSanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/go/ql/lib/semmle/go/security/XPathInjection.qll b/go/ql/lib/semmle/go/security/XPathInjection.qll index 61bd00977da..900b8105337 100644 --- a/go/ql/lib/semmle/go/security/XPathInjection.qll +++ b/go/ql/lib/semmle/go/security/XPathInjection.qll @@ -19,6 +19,8 @@ module XPathInjection { predicate isSink(DataFlow::Node sink) { sink instanceof Sink } predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/go/ql/lib/semmle/go/security/ZipSlip.qll b/go/ql/lib/semmle/go/security/ZipSlip.qll index f16daf84c3d..6de2be91509 100644 --- a/go/ql/lib/semmle/go/security/ZipSlip.qll +++ b/go/ql/lib/semmle/go/security/ZipSlip.qll @@ -17,6 +17,8 @@ module ZipSlip { predicate isSink(DataFlow::Node sink) { sink instanceof Sink } predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** Tracks taint flow for reasoning about zip-slip vulnerabilities. */ diff --git a/go/ql/src/Security/CWE-020/IncompleteHostnameRegexp.ql b/go/ql/src/Security/CWE-020/IncompleteHostnameRegexp.ql index 89954b08f99..f6e3df7d1d9 100644 --- a/go/ql/src/Security/CWE-020/IncompleteHostnameRegexp.ql +++ b/go/ql/src/Security/CWE-020/IncompleteHostnameRegexp.ql @@ -103,6 +103,8 @@ module IncompleteHostNameRegexpConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { StringOps::Concatenation::taintStep(node1, node2) } + + predicate observeDiffInformedIncrementalMode() { any() } } module Flow = DataFlow::Global; diff --git a/go/ql/src/Security/CWE-020/MissingRegexpAnchor.ql b/go/ql/src/Security/CWE-020/MissingRegexpAnchor.ql index a478968e58b..d1c501b37ec 100644 --- a/go/ql/src/Security/CWE-020/MissingRegexpAnchor.ql +++ b/go/ql/src/Security/CWE-020/MissingRegexpAnchor.ql @@ -72,6 +72,8 @@ module Config implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { isSourceString(source, _) } predicate isSink(DataFlow::Node sink) { sink instanceof RegexpPattern } + + predicate observeDiffInformedIncrementalMode() { any() } } module Flow = DataFlow::Global; diff --git a/go/ql/src/Security/CWE-020/SuspiciousCharacterInRegexp.ql b/go/ql/src/Security/CWE-020/SuspiciousCharacterInRegexp.ql index e58cf864490..96688298ec3 100644 --- a/go/ql/src/Security/CWE-020/SuspiciousCharacterInRegexp.ql +++ b/go/ql/src/Security/CWE-020/SuspiciousCharacterInRegexp.ql @@ -40,6 +40,8 @@ module SuspiciousCharacterInRegexpConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { isSourceString(source, _) } predicate isSink(DataFlow::Node sink) { sink instanceof RegexpPattern } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/go/ql/src/Security/CWE-209/StackTraceExposure.ql b/go/ql/src/Security/CWE-209/StackTraceExposure.ql index 3440fdba314..408e12b3c15 100644 --- a/go/ql/src/Security/CWE-209/StackTraceExposure.ql +++ b/go/ql/src/Security/CWE-209/StackTraceExposure.ql @@ -62,6 +62,8 @@ module StackTraceExposureConfig implements DataFlow::ConfigSig { cgn.dominates(node.getBasicBlock()) ) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/go/ql/src/Security/CWE-326/InsufficientKeySize.ql b/go/ql/src/Security/CWE-326/InsufficientKeySize.ql index 19db3ef63ae..6fa421baaeb 100644 --- a/go/ql/src/Security/CWE-326/InsufficientKeySize.ql +++ b/go/ql/src/Security/CWE-326/InsufficientKeySize.ql @@ -25,6 +25,8 @@ module Config implements DataFlow::ConfigSig { predicate isBarrier(DataFlow::Node node) { node = DataFlow::BarrierGuard::getABarrierNode() } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/go/ql/src/Security/CWE-352/ConstantOauth2State.ql b/go/ql/src/Security/CWE-352/ConstantOauth2State.ql index 31b6907ffdd..8898a6bb101 100644 --- a/go/ql/src/Security/CWE-352/ConstantOauth2State.ql +++ b/go/ql/src/Security/CWE-352/ConstantOauth2State.ql @@ -40,6 +40,8 @@ module ConstantStateFlowConfig implements DataFlow::ConfigSig { } predicate isSink(DataFlow::Node sink) { isSinkCall(sink, _) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/go/ql/src/Security/CWE-640/EmailInjection.qll b/go/ql/src/Security/CWE-640/EmailInjection.qll index 35b7795ad55..e3016b44aa1 100644 --- a/go/ql/src/Security/CWE-640/EmailInjection.qll +++ b/go/ql/src/Security/CWE-640/EmailInjection.qll @@ -20,6 +20,8 @@ module EmailInjection { predicate isSource(DataFlow::Node source) { source instanceof Source } predicate isSink(DataFlow::Node sink) { sink instanceof Sink } + + predicate observeDiffInformedIncrementalMode() { any() } } /** Tracks taint flow for reasoning about email-injection vulnerabilities. */ diff --git a/go/ql/src/experimental/CWE-090/LDAPInjection.qll b/go/ql/src/experimental/CWE-090/LDAPInjection.qll index fd138fa0645..a770666fe93 100644 --- a/go/ql/src/experimental/CWE-090/LDAPInjection.qll +++ b/go/ql/src/experimental/CWE-090/LDAPInjection.qll @@ -101,6 +101,8 @@ private module LdapInjectionConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { sink instanceof LdapSink } predicate isBarrier(DataFlow::Node node) { node instanceof LdapSanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/go/ql/src/experimental/CWE-203/Timing.ql b/go/ql/src/experimental/CWE-203/Timing.ql index ab0b50a657a..e488adf2f97 100644 --- a/go/ql/src/experimental/CWE-203/Timing.ql +++ b/go/ql/src/experimental/CWE-203/Timing.ql @@ -102,6 +102,8 @@ module Config implements DataFlow::ConfigSig { } predicate isSink(DataFlow::Node sink) { sink instanceof Sink and not isBadResult(sink) } + + predicate observeDiffInformedIncrementalMode() { any() } } module Flow = TaintTracking::Global; diff --git a/go/ql/src/experimental/CWE-285/PamAuthBypass.ql b/go/ql/src/experimental/CWE-285/PamAuthBypass.ql index 02f47ba2b73..db2dc94f8f0 100644 --- a/go/ql/src/experimental/CWE-285/PamAuthBypass.ql +++ b/go/ql/src/experimental/CWE-285/PamAuthBypass.ql @@ -42,6 +42,8 @@ module PamStartToAcctMgmtConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { exists(PamAcctMgmt p | p.getACall().getReceiver() = sink) } + + predicate observeDiffInformedIncrementalMode() { any() } } module PamStartToAcctMgmtFlow = TaintTracking::Global; @@ -55,6 +57,8 @@ module PamStartToAuthenticateConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { exists(PamAuthenticate p | p.getACall().getReceiver() = sink) } + + predicate observeDiffInformedIncrementalMode() { any() } } module PamStartToAuthenticateFlow = TaintTracking::Global; diff --git a/go/ql/src/experimental/CWE-287/ImproperLdapAuthCustomizations.qll b/go/ql/src/experimental/CWE-287/ImproperLdapAuthCustomizations.qll index 7a62041a774..0a2739eabc7 100644 --- a/go/ql/src/experimental/CWE-287/ImproperLdapAuthCustomizations.qll +++ b/go/ql/src/experimental/CWE-287/ImproperLdapAuthCustomizations.qll @@ -74,6 +74,8 @@ module ImproperLdapAuth { predicate isSink(DataFlow::Node sink) { sink instanceof LdapAuthSink } predicate isBarrier(DataFlow::Node node) { node instanceof LdapSanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/go/ql/src/experimental/CWE-321-V2/HardCodedKeys.ql b/go/ql/src/experimental/CWE-321-V2/HardCodedKeys.ql index 39cc2ca9917..0cd5246519b 100644 --- a/go/ql/src/experimental/CWE-321-V2/HardCodedKeys.ql +++ b/go/ql/src/experimental/CWE-321-V2/HardCodedKeys.ql @@ -33,6 +33,8 @@ module JwtParseWithConstantKeyConfig implements DataFlow::ConfigSig { // second part is the JWT Parsing Functions that get a string or byte as an argument sink = any(JwtParse jp).getKeyArg() } + + predicate observeDiffInformedIncrementalMode() { any() } } module GolangJwtKeyFuncConfig implements DataFlow::ConfigSig { diff --git a/go/ql/src/experimental/CWE-327/WeakCryptoAlgorithmCustomizations.qll b/go/ql/src/experimental/CWE-327/WeakCryptoAlgorithmCustomizations.qll index 1d64d731f50..b9104f1fe09 100644 --- a/go/ql/src/experimental/CWE-327/WeakCryptoAlgorithmCustomizations.qll +++ b/go/ql/src/experimental/CWE-327/WeakCryptoAlgorithmCustomizations.qll @@ -54,6 +54,8 @@ module WeakCryptoAlgorithm { predicate isSink(DataFlow::Node sink) { sink instanceof Sink } predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/go/ql/src/experimental/CWE-369/DivideByZero.ql b/go/ql/src/experimental/CWE-369/DivideByZero.ql index b6709b97d71..99cd120dbf8 100644 --- a/go/ql/src/experimental/CWE-369/DivideByZero.ql +++ b/go/ql/src/experimental/CWE-369/DivideByZero.ql @@ -45,6 +45,8 @@ module Config implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { sink = DataFlow::exprNode(any(QuoExpr e).getRightOperand()) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/go/ql/src/experimental/CWE-74/DsnInjectionCustomizations.qll b/go/ql/src/experimental/CWE-74/DsnInjectionCustomizations.qll index 2c320855072..88a45d70ba5 100644 --- a/go/ql/src/experimental/CWE-74/DsnInjectionCustomizations.qll +++ b/go/ql/src/experimental/CWE-74/DsnInjectionCustomizations.qll @@ -19,6 +19,8 @@ private module DsnInjectionConfig implements DataFlow::ConfigSig { } predicate isBarrier(DataFlow::Node node) { node instanceof RegexpCheckBarrier } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/go/ql/src/experimental/frameworks/DecompressionBombs.qll b/go/ql/src/experimental/frameworks/DecompressionBombs.qll index 5828cd60e52..170104ebd43 100644 --- a/go/ql/src/experimental/frameworks/DecompressionBombs.qll +++ b/go/ql/src/experimental/frameworks/DecompressionBombs.qll @@ -56,6 +56,8 @@ module DecompressionBomb { addStep.isAdditionalFlowStep(fromNode, fromState, toNode, toState) ) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** Tracks taint flow for reasoning about decompression bomb vulnerabilities. */ From 4dd07f475b7c7ecfba42ea4d7f3a1003f166b69f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Tue, 3 Jun 2025 20:39:31 +0200 Subject: [PATCH 031/150] C++: mass enable diff-informed data flow An auto-generated patch that enables diff-informed data flow in the obvious cases. Builds on https://github.com/github/codeql/pull/18342 and https://github.com/github/codeql-patch/pull/88 --- .../semmle/code/cpp/security/PrivateCleartextWrite.qll | 2 ++ cpp/ql/src/Likely Bugs/Conversion/CastArrayPointerArithmetic.ql | 2 ++ cpp/ql/src/Likely Bugs/Memory Management/NtohlArrayNoBound.qll | 2 ++ cpp/ql/src/Security/CWE/CWE-114/UncontrolledProcessOperation.ql | 2 ++ cpp/ql/src/Security/CWE/CWE-129/ImproperArrayIndexValidation.ql | 2 ++ cpp/ql/src/Security/CWE/CWE-134/UncontrolledFormatString.ql | 2 ++ cpp/ql/src/Security/CWE/CWE-190/IntegerOverflowTainted.ql | 2 ++ cpp/ql/src/Security/CWE/CWE-497/ExposedSystemData.ql | 2 ++ cpp/ql/src/Security/CWE/CWE-497/PotentiallyExposedSystemData.ql | 2 ++ cpp/ql/src/Security/CWE/CWE-611/XXE.ql | 2 ++ cpp/ql/src/experimental/Security/CWE/CWE-078/WordexpTainted.ql | 2 ++ .../Security/CWE/CWE-190/AllocMultiplicationOverflow.ql | 2 ++ 12 files changed, 24 insertions(+) diff --git a/cpp/ql/lib/experimental/semmle/code/cpp/security/PrivateCleartextWrite.qll b/cpp/ql/lib/experimental/semmle/code/cpp/security/PrivateCleartextWrite.qll index 99cd8bfb7fd..e6495f9a2aa 100644 --- a/cpp/ql/lib/experimental/semmle/code/cpp/security/PrivateCleartextWrite.qll +++ b/cpp/ql/lib/experimental/semmle/code/cpp/security/PrivateCleartextWrite.qll @@ -42,6 +42,8 @@ module PrivateCleartextWrite { predicate isSink(DataFlow::Node sink) { sink instanceof Sink } predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } module WriteFlow = TaintTracking::Global; diff --git a/cpp/ql/src/Likely Bugs/Conversion/CastArrayPointerArithmetic.ql b/cpp/ql/src/Likely Bugs/Conversion/CastArrayPointerArithmetic.ql index d1645007a32..23240d385ad 100644 --- a/cpp/ql/src/Likely Bugs/Conversion/CastArrayPointerArithmetic.ql +++ b/cpp/ql/src/Likely Bugs/Conversion/CastArrayPointerArithmetic.ql @@ -48,6 +48,8 @@ module CastToPointerArithFlowConfig implements DataFlow::StateConfigSig { predicate isBarrierIn(DataFlow::Node node) { isSource(node, _) } predicate isBarrierOut(DataFlow::Node node) { isSink(node, _) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/cpp/ql/src/Likely Bugs/Memory Management/NtohlArrayNoBound.qll b/cpp/ql/src/Likely Bugs/Memory Management/NtohlArrayNoBound.qll index ecb60d113d8..40c0f2173d9 100644 --- a/cpp/ql/src/Likely Bugs/Memory Management/NtohlArrayNoBound.qll +++ b/cpp/ql/src/Likely Bugs/Memory Management/NtohlArrayNoBound.qll @@ -141,6 +141,8 @@ private module NetworkToBufferSizeConfig implements DataFlow::ConfigSig { gc.controls(node.asExpr().getBasicBlock(), _) ) } + + predicate observeDiffInformedIncrementalMode() { any() } } module NetworkToBufferSizeFlow = DataFlow::Global; diff --git a/cpp/ql/src/Security/CWE/CWE-114/UncontrolledProcessOperation.ql b/cpp/ql/src/Security/CWE/CWE-114/UncontrolledProcessOperation.ql index e5fd1a94f18..aedb21da516 100644 --- a/cpp/ql/src/Security/CWE/CWE-114/UncontrolledProcessOperation.ql +++ b/cpp/ql/src/Security/CWE/CWE-114/UncontrolledProcessOperation.ql @@ -39,6 +39,8 @@ module Config implements DataFlow::ConfigSig { or node.asCertainDefinition().getUnspecifiedType() instanceof ArithmeticType } + + predicate observeDiffInformedIncrementalMode() { any() } } module Flow = TaintTracking::Global; diff --git a/cpp/ql/src/Security/CWE/CWE-129/ImproperArrayIndexValidation.ql b/cpp/ql/src/Security/CWE/CWE-129/ImproperArrayIndexValidation.ql index b5dc4d893b2..17c1b09c3e6 100644 --- a/cpp/ql/src/Security/CWE/CWE-129/ImproperArrayIndexValidation.ql +++ b/cpp/ql/src/Security/CWE/CWE-129/ImproperArrayIndexValidation.ql @@ -66,6 +66,8 @@ module ImproperArrayIndexValidationConfig implements DataFlow::ConfigSig { not offsetIsAlwaysInBounds(arrayExpr, offsetExpr) ) } + + predicate observeDiffInformedIncrementalMode() { any() } } module ImproperArrayIndexValidation = TaintTracking::Global; diff --git a/cpp/ql/src/Security/CWE/CWE-134/UncontrolledFormatString.ql b/cpp/ql/src/Security/CWE/CWE-134/UncontrolledFormatString.ql index 04b4fe45fcf..37e3fa0c49f 100644 --- a/cpp/ql/src/Security/CWE/CWE-134/UncontrolledFormatString.ql +++ b/cpp/ql/src/Security/CWE/CWE-134/UncontrolledFormatString.ql @@ -44,6 +44,8 @@ module Config implements DataFlow::ConfigSig { or isArithmeticNonCharType(node.asCertainDefinition().getUnspecifiedType()) } + + predicate observeDiffInformedIncrementalMode() { any() } } module Flow = TaintTracking::Global; diff --git a/cpp/ql/src/Security/CWE/CWE-190/IntegerOverflowTainted.ql b/cpp/ql/src/Security/CWE/CWE-190/IntegerOverflowTainted.ql index 8e6bbefbaac..6ff06d355b9 100644 --- a/cpp/ql/src/Security/CWE/CWE-190/IntegerOverflowTainted.ql +++ b/cpp/ql/src/Security/CWE/CWE-190/IntegerOverflowTainted.ql @@ -94,6 +94,8 @@ module Config implements DataFlow::ConfigSig { not iTo instanceof PointerArithmeticInstruction ) } + + predicate observeDiffInformedIncrementalMode() { any() } } module Flow = TaintTracking::Global; diff --git a/cpp/ql/src/Security/CWE/CWE-497/ExposedSystemData.ql b/cpp/ql/src/Security/CWE/CWE-497/ExposedSystemData.ql index 5a6b50675e8..121595e61b0 100644 --- a/cpp/ql/src/Security/CWE/CWE-497/ExposedSystemData.ql +++ b/cpp/ql/src/Security/CWE/CWE-497/ExposedSystemData.ql @@ -34,6 +34,8 @@ module ExposedSystemDataConfig implements DataFlow::ConfigSig { predicate isBarrier(DataFlow::Node node) { node.asIndirectArgument() = any(MemsetFunction func).getACallToThisFunction().getAnArgument() } + + predicate observeDiffInformedIncrementalMode() { any() } } module ExposedSystemData = TaintTracking::Global; diff --git a/cpp/ql/src/Security/CWE/CWE-497/PotentiallyExposedSystemData.ql b/cpp/ql/src/Security/CWE/CWE-497/PotentiallyExposedSystemData.ql index f3c9ca189b9..2a22f122ca5 100644 --- a/cpp/ql/src/Security/CWE/CWE-497/PotentiallyExposedSystemData.ql +++ b/cpp/ql/src/Security/CWE/CWE-497/PotentiallyExposedSystemData.ql @@ -54,6 +54,8 @@ module PotentiallyExposedSystemDataConfig implements DataFlow::ConfigSig { predicate isBarrier(DataFlow::Node node) { node.asIndirectArgument() = any(MemsetFunction func).getACallToThisFunction().getAnArgument() } + + predicate observeDiffInformedIncrementalMode() { any() } } module PotentiallyExposedSystemData = TaintTracking::Global; diff --git a/cpp/ql/src/Security/CWE/CWE-611/XXE.ql b/cpp/ql/src/Security/CWE/CWE-611/XXE.ql index 56a74d2f70b..ba09e797491 100644 --- a/cpp/ql/src/Security/CWE/CWE-611/XXE.ql +++ b/cpp/ql/src/Security/CWE/CWE-611/XXE.ql @@ -45,6 +45,8 @@ module XxeConfig implements DataFlow::StateConfigSig { } predicate neverSkip(DataFlow::Node node) { none() } + + predicate observeDiffInformedIncrementalMode() { any() } } module XxeFlow = DataFlow::GlobalWithState; diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-078/WordexpTainted.ql b/cpp/ql/src/experimental/Security/CWE/CWE-078/WordexpTainted.ql index d5b7b97c136..cfe04ba23bf 100644 --- a/cpp/ql/src/experimental/Security/CWE/CWE-078/WordexpTainted.ql +++ b/cpp/ql/src/experimental/Security/CWE/CWE-078/WordexpTainted.ql @@ -48,6 +48,8 @@ module WordexpTaintConfig implements DataFlow::ConfigSig { predicate isBarrier(DataFlow::Node node) { node.asExpr().getUnspecifiedType() instanceof IntegralType } + + predicate observeDiffInformedIncrementalMode() { any() } } module WordexpTaint = TaintTracking::Global; diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-190/AllocMultiplicationOverflow.ql b/cpp/ql/src/experimental/Security/CWE/CWE-190/AllocMultiplicationOverflow.ql index 00cf017297f..397a0325d77 100644 --- a/cpp/ql/src/experimental/Security/CWE/CWE-190/AllocMultiplicationOverflow.ql +++ b/cpp/ql/src/experimental/Security/CWE/CWE-190/AllocMultiplicationOverflow.ql @@ -30,6 +30,8 @@ module MultToAllocConfig implements DataFlow::ConfigSig { // something that affects an allocation size node.asExpr() = any(HeuristicAllocationExpr ae).getSizeExpr().getAChild*() } + + predicate observeDiffInformedIncrementalMode() { any() } } module MultToAlloc = DataFlow::Global; From f2085c22930f08b9145e631e893628e0ad6381a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Tue, 3 Jun 2025 20:25:28 +0200 Subject: [PATCH 032/150] C#: mass enable diff-informed data flow An auto-generated patch that enables diff-informed data flow in the obvious cases. Builds on https://github.com/github/codeql/pull/18344 and https://github.com/github/codeql-patch/pull/88 --- .../csharp/security/cryptography/EncryptionKeyDataFlowQuery.qll | 2 ++ .../security/cryptography/HardcodedSymmetricEncryptionKey.qll | 2 ++ .../code/csharp/security/dataflow/CleartextStorageQuery.qll | 2 ++ .../semmle/code/csharp/security/dataflow/CodeInjectionQuery.qll | 2 ++ .../code/csharp/security/dataflow/CommandInjectionQuery.qll | 2 ++ .../security/dataflow/ExposureOfPrivateInformationQuery.qll | 2 ++ .../semmle/code/csharp/security/dataflow/LDAPInjectionQuery.qll | 2 ++ .../semmle/code/csharp/security/dataflow/LogForgingQuery.qll | 2 ++ .../code/csharp/security/dataflow/MissingXMLValidationQuery.qll | 2 ++ .../ql/lib/semmle/code/csharp/security/dataflow/ReDoSQuery.qll | 2 ++ .../code/csharp/security/dataflow/RegexInjectionQuery.qll | 2 ++ .../code/csharp/security/dataflow/ResourceInjectionQuery.qll | 2 ++ .../semmle/code/csharp/security/dataflow/SqlInjectionQuery.qll | 2 ++ .../semmle/code/csharp/security/dataflow/TaintedPathQuery.qll | 2 ++ .../semmle/code/csharp/security/dataflow/UrlRedirectQuery.qll | 2 ++ .../code/csharp/security/dataflow/XPathInjectionQuery.qll | 2 ++ .../lib/semmle/code/csharp/security/dataflow/ZipSlipQuery.qll | 2 ++ csharp/ql/src/Likely Bugs/LeapYear/UnsafeYearConstruction.ql | 2 ++ csharp/ql/src/Security Features/CWE-091/XMLInjection.ql | 2 ++ .../ql/src/Security Features/CWE-114/AssemblyPathInjection.ql | 2 ++ .../src/Security Features/CWE-134/UncontrolledFormatString.ql | 2 ++ .../src/Security Features/CWE-201/ExposureInTransmittedData.ql | 2 ++ .../Security Features/CWE-209/ExceptionInformationExposure.ql | 2 ++ csharp/ql/src/Security Features/CWE-327/DontInstallRootCert.ql | 2 ++ .../ql/src/Security Features/CWE-327/InsecureSQLConnection.ql | 2 ++ csharp/ql/src/Security Features/InsecureRandomness.ql | 2 ++ 26 files changed, 52 insertions(+) diff --git a/csharp/ql/lib/semmle/code/csharp/security/cryptography/EncryptionKeyDataFlowQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/cryptography/EncryptionKeyDataFlowQuery.qll index 82bd0d30cab..61c036f031b 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/cryptography/EncryptionKeyDataFlowQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/cryptography/EncryptionKeyDataFlowQuery.qll @@ -70,6 +70,8 @@ private module SymmetricKeyConfig implements DataFlow::ConfigSig { /** Holds if the node is a key sanitizer. */ predicate isBarrier(DataFlow::Node sanitizer) { sanitizer instanceof KeySanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/cryptography/HardcodedSymmetricEncryptionKey.qll b/csharp/ql/lib/semmle/code/csharp/security/cryptography/HardcodedSymmetricEncryptionKey.qll index 2e387cc2da6..37690c169c0 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/cryptography/HardcodedSymmetricEncryptionKey.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/cryptography/HardcodedSymmetricEncryptionKey.qll @@ -82,6 +82,8 @@ module HardcodedSymmetricEncryptionKey { succ.asExpr() = mc ) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/CleartextStorageQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/CleartextStorageQuery.qll index cbb10146a6a..3e4642411f0 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/CleartextStorageQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/CleartextStorageQuery.qll @@ -32,6 +32,8 @@ private module ClearTextStorageConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { sink instanceof Sink } predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/CodeInjectionQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/CodeInjectionQuery.qll index 8ec9122864f..20d5bbe10ca 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/CodeInjectionQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/CodeInjectionQuery.qll @@ -33,6 +33,8 @@ private module CodeInjectionConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { sink instanceof Sink } predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/CommandInjectionQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/CommandInjectionQuery.qll index 84352389c41..9528676af8e 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/CommandInjectionQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/CommandInjectionQuery.qll @@ -42,6 +42,8 @@ module CommandInjectionConfig implements DataFlow::ConfigSig { * `node` from the data flow graph. */ predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ExposureOfPrivateInformationQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ExposureOfPrivateInformationQuery.qll index 0726acb05ed..85782fe4936 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ExposureOfPrivateInformationQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ExposureOfPrivateInformationQuery.qll @@ -32,6 +32,8 @@ private module ExposureOfPrivateInformationConfig implements DataFlow::ConfigSig predicate isSink(DataFlow::Node sink) { sink instanceof Sink } predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/LDAPInjectionQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/LDAPInjectionQuery.qll index e2e96034c41..c2e25f0e522 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/LDAPInjectionQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/LDAPInjectionQuery.qll @@ -45,6 +45,8 @@ module LdapInjectionConfig implements DataFlow::ConfigSig { * `node` from the data flow graph. */ predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/LogForgingQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/LogForgingQuery.qll index 422b5dc717a..e06e728514d 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/LogForgingQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/LogForgingQuery.qll @@ -35,6 +35,8 @@ private module LogForgingConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { sink instanceof Sink } predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/MissingXMLValidationQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/MissingXMLValidationQuery.qll index 3401dab7ea2..3fcdc2b88ca 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/MissingXMLValidationQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/MissingXMLValidationQuery.qll @@ -39,6 +39,8 @@ private module MissingXmlValidationConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { exists(sink.(Sink).getReason()) } predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ReDoSQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ReDoSQuery.qll index 94dbf1d4cdc..c3fdbc2dc3e 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ReDoSQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ReDoSQuery.qll @@ -33,6 +33,8 @@ private module ReDoSConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { sink instanceof Sink } predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/RegexInjectionQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/RegexInjectionQuery.qll index 620c07a9ea2..5cd23258829 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/RegexInjectionQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/RegexInjectionQuery.qll @@ -33,6 +33,8 @@ private module RegexInjectionConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { sink instanceof Sink } predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ResourceInjectionQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ResourceInjectionQuery.qll index 40814729e55..e1542986411 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ResourceInjectionQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ResourceInjectionQuery.qll @@ -32,6 +32,8 @@ private module ResourceInjectionConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { sink instanceof Sink } predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/SqlInjectionQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/SqlInjectionQuery.qll index cc7b61c31f2..510b0381143 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/SqlInjectionQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/SqlInjectionQuery.qll @@ -43,6 +43,8 @@ module SqlInjectionConfig implements DataFlow::ConfigSig { * `node` from the data flow graph. */ predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/TaintedPathQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/TaintedPathQuery.qll index bdc7245aeb2..2f20eb6e342 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/TaintedPathQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/TaintedPathQuery.qll @@ -35,6 +35,8 @@ private module TaintedPathConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { sink instanceof Sink } predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/UrlRedirectQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/UrlRedirectQuery.qll index 0838fe7be4b..b095305742d 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/UrlRedirectQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/UrlRedirectQuery.qll @@ -37,6 +37,8 @@ private module UrlRedirectConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { sink instanceof Sink } predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/XPathInjectionQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/XPathInjectionQuery.qll index 140870c70fa..5cf934ef43e 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/XPathInjectionQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/XPathInjectionQuery.qll @@ -43,6 +43,8 @@ module XpathInjectionConfig implements DataFlow::ConfigSig { * `node` from the data flow graph. */ predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ZipSlipQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ZipSlipQuery.qll index fad3917553d..1639563e964 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ZipSlipQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ZipSlipQuery.qll @@ -30,6 +30,8 @@ private module ZipSlipConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { sink instanceof Sink } predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/src/Likely Bugs/LeapYear/UnsafeYearConstruction.ql b/csharp/ql/src/Likely Bugs/LeapYear/UnsafeYearConstruction.ql index c98f2bef8a2..8da3a910b0d 100644 --- a/csharp/ql/src/Likely Bugs/LeapYear/UnsafeYearConstruction.ql +++ b/csharp/ql/src/Likely Bugs/LeapYear/UnsafeYearConstruction.ql @@ -26,6 +26,8 @@ module UnsafeYearCreationFromArithmeticConfig implements DataFlow::ConfigSig { oc.getObjectType().getABaseType*().hasFullyQualifiedName("System", "DateTime") ) } + + predicate observeDiffInformedIncrementalMode() { any() } } module UnsafeYearCreationFromArithmetic = diff --git a/csharp/ql/src/Security Features/CWE-091/XMLInjection.ql b/csharp/ql/src/Security Features/CWE-091/XMLInjection.ql index 16eca675e6a..2276b660f9f 100644 --- a/csharp/ql/src/Security Features/CWE-091/XMLInjection.ql +++ b/csharp/ql/src/Security Features/CWE-091/XMLInjection.ql @@ -45,6 +45,8 @@ module XmlInjectionConfig implements DataFlow::ConfigSig { mc = node.asExpr() ) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/src/Security Features/CWE-114/AssemblyPathInjection.ql b/csharp/ql/src/Security Features/CWE-114/AssemblyPathInjection.ql index 118591f3f9e..9cd6fc68b4c 100644 --- a/csharp/ql/src/Security Features/CWE-114/AssemblyPathInjection.ql +++ b/csharp/ql/src/Security Features/CWE-114/AssemblyPathInjection.ql @@ -41,6 +41,8 @@ module AssemblyPathInjectionConfig implements DataFlow::ConfigSig { name = "UnsafeLoadFrom" and arg = 0 ) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/src/Security Features/CWE-134/UncontrolledFormatString.ql b/csharp/ql/src/Security Features/CWE-134/UncontrolledFormatString.ql index b99839226c5..8a699abfba8 100644 --- a/csharp/ql/src/Security Features/CWE-134/UncontrolledFormatString.ql +++ b/csharp/ql/src/Security Features/CWE-134/UncontrolledFormatString.ql @@ -22,6 +22,8 @@ module FormatStringConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { sink.asExpr() = any(FormatStringParseCall call).getFormatExpr() } + + predicate observeDiffInformedIncrementalMode() { any() } } module FormatString = TaintTracking::Global; diff --git a/csharp/ql/src/Security Features/CWE-201/ExposureInTransmittedData.ql b/csharp/ql/src/Security Features/CWE-201/ExposureInTransmittedData.ql index 0d71a08fe97..a29919fc09d 100644 --- a/csharp/ql/src/Security Features/CWE-201/ExposureInTransmittedData.ql +++ b/csharp/ql/src/Security Features/CWE-201/ExposureInTransmittedData.ql @@ -41,6 +41,8 @@ module ExposureInTransmittedDataConfig implements DataFlow::ConfigSig { } predicate isSink(DataFlow::Node sink) { sink instanceof RemoteFlowSink } + + predicate observeDiffInformedIncrementalMode() { any() } } module ExposureInTransmittedData = TaintTracking::Global; diff --git a/csharp/ql/src/Security Features/CWE-209/ExceptionInformationExposure.ql b/csharp/ql/src/Security Features/CWE-209/ExceptionInformationExposure.ql index 114bdf7ccea..7ec34b7c3cc 100644 --- a/csharp/ql/src/Security Features/CWE-209/ExceptionInformationExposure.ql +++ b/csharp/ql/src/Security Features/CWE-209/ExceptionInformationExposure.ql @@ -59,6 +59,8 @@ module ExceptionInformationExposureConfig implements DataFlow::ConfigSig { // Do not flow through Message sanitizer.asExpr().getType().(RefType).getABaseType*() instanceof SystemExceptionClass } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/src/Security Features/CWE-327/DontInstallRootCert.ql b/csharp/ql/src/Security Features/CWE-327/DontInstallRootCert.ql index 15da9c2d824..b48ddbf0f35 100644 --- a/csharp/ql/src/Security Features/CWE-327/DontInstallRootCert.ql +++ b/csharp/ql/src/Security Features/CWE-327/DontInstallRootCert.ql @@ -37,6 +37,8 @@ module AddCertToRootStoreConfig implements DataFlow::ConfigSig { sink.asExpr() = mc.getQualifier() ) } + + predicate observeDiffInformedIncrementalMode() { any() } } module AddCertToRootStore = DataFlow::Global; diff --git a/csharp/ql/src/Security Features/CWE-327/InsecureSQLConnection.ql b/csharp/ql/src/Security Features/CWE-327/InsecureSQLConnection.ql index adde1b948e4..330ad1c1c32 100644 --- a/csharp/ql/src/Security Features/CWE-327/InsecureSQLConnection.ql +++ b/csharp/ql/src/Security Features/CWE-327/InsecureSQLConnection.ql @@ -40,6 +40,8 @@ module InsecureSqlConnectionConfig implements DataFlow::ConfigSig { ) ) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/csharp/ql/src/Security Features/InsecureRandomness.ql b/csharp/ql/src/Security Features/InsecureRandomness.ql index 504756e1db5..2c2df7010c6 100644 --- a/csharp/ql/src/Security Features/InsecureRandomness.ql +++ b/csharp/ql/src/Security Features/InsecureRandomness.ql @@ -49,6 +49,8 @@ module Random { // succ = array_or_indexer[pred] - use of random numbers in an index succ.asExpr().(ElementAccess).getAnIndex() = pred.asExpr() } + + predicate observeDiffInformedIncrementalMode() { any() } } /** From f2bd454e99af38e6b232e631aeb4754c5c969b14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Tue, 3 Jun 2025 20:04:05 +0200 Subject: [PATCH 033/150] Actions: mass enable diff-informed data flow An auto-generated patch that enables diff-informed data flow in the obvious cases. Builds on https://github.com/github/codeql/pull/18346 and https://github.com/github/codeql-patch/pull/88 --- .../ql/lib/codeql/actions/security/OutputClobberingQuery.qll | 2 ++ actions/ql/lib/codeql/actions/security/RequestForgeryQuery.qll | 2 ++ .../ql/lib/codeql/actions/security/SecretExfiltrationQuery.qll | 2 ++ actions/ql/src/Models/CompositeActionsSinks.ql | 2 ++ actions/ql/src/Models/CompositeActionsSources.ql | 2 ++ actions/ql/src/Models/CompositeActionsSummaries.ql | 2 ++ actions/ql/src/Models/ReusableWorkflowsSinks.ql | 2 ++ actions/ql/src/Models/ReusableWorkflowsSources.ql | 2 ++ actions/ql/src/Models/ReusableWorkflowsSummaries.ql | 2 ++ 9 files changed, 18 insertions(+) diff --git a/actions/ql/lib/codeql/actions/security/OutputClobberingQuery.qll b/actions/ql/lib/codeql/actions/security/OutputClobberingQuery.qll index 1d0de83afa3..485d2762798 100644 --- a/actions/ql/lib/codeql/actions/security/OutputClobberingQuery.qll +++ b/actions/ql/lib/codeql/actions/security/OutputClobberingQuery.qll @@ -214,6 +214,8 @@ private module OutputClobberingConfig implements DataFlow::ConfigSig { ) ) } + + predicate observeDiffInformedIncrementalMode() { any() } } /** Tracks flow of unsafe user input that is used to construct and evaluate an environment variable. */ diff --git a/actions/ql/lib/codeql/actions/security/RequestForgeryQuery.qll b/actions/ql/lib/codeql/actions/security/RequestForgeryQuery.qll index ca0ac267131..fb89ebdc8ba 100644 --- a/actions/ql/lib/codeql/actions/security/RequestForgeryQuery.qll +++ b/actions/ql/lib/codeql/actions/security/RequestForgeryQuery.qll @@ -16,6 +16,8 @@ private module RequestForgeryConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } predicate isSink(DataFlow::Node sink) { sink instanceof RequestForgerySink } + + predicate observeDiffInformedIncrementalMode() { any() } } /** Tracks flow of unsafe user input that is used to construct and evaluate a system command. */ diff --git a/actions/ql/lib/codeql/actions/security/SecretExfiltrationQuery.qll b/actions/ql/lib/codeql/actions/security/SecretExfiltrationQuery.qll index 18a480b1cec..b3d59210053 100644 --- a/actions/ql/lib/codeql/actions/security/SecretExfiltrationQuery.qll +++ b/actions/ql/lib/codeql/actions/security/SecretExfiltrationQuery.qll @@ -15,6 +15,8 @@ private module SecretExfiltrationConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } predicate isSink(DataFlow::Node sink) { sink instanceof SecretExfiltrationSink } + + predicate observeDiffInformedIncrementalMode() { any() } } /** Tracks flow of unsafe user input that is used in a context where it may lead to a secret exfiltration. */ diff --git a/actions/ql/src/Models/CompositeActionsSinks.ql b/actions/ql/src/Models/CompositeActionsSinks.ql index b5ce78fe062..82f0754f03e 100644 --- a/actions/ql/src/Models/CompositeActionsSinks.ql +++ b/actions/ql/src/Models/CompositeActionsSinks.ql @@ -24,6 +24,8 @@ private module MyConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { sink instanceof CodeInjectionSink and not madSink(sink, "code-injection") } + + predicate observeDiffInformedIncrementalMode() { any() } } module MyFlow = TaintTracking::Global; diff --git a/actions/ql/src/Models/CompositeActionsSources.ql b/actions/ql/src/Models/CompositeActionsSources.ql index 8e4275f27c7..c9974cd7361 100644 --- a/actions/ql/src/Models/CompositeActionsSources.ql +++ b/actions/ql/src/Models/CompositeActionsSources.ql @@ -34,6 +34,8 @@ private module MyConfig implements DataFlow::ConfigSig { isSink(node) and set instanceof DataFlow::FieldContent } + + predicate observeDiffInformedIncrementalMode() { any() } } module MyFlow = TaintTracking::Global; diff --git a/actions/ql/src/Models/CompositeActionsSummaries.ql b/actions/ql/src/Models/CompositeActionsSummaries.ql index 8b8b5af3c45..814498f639e 100644 --- a/actions/ql/src/Models/CompositeActionsSummaries.ql +++ b/actions/ql/src/Models/CompositeActionsSummaries.ql @@ -25,6 +25,8 @@ private module MyConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { exists(CompositeAction c | c.getAnOutputExpr() = sink.asExpr()) } + + predicate observeDiffInformedIncrementalMode() { any() } } module MyFlow = TaintTracking::Global; diff --git a/actions/ql/src/Models/ReusableWorkflowsSinks.ql b/actions/ql/src/Models/ReusableWorkflowsSinks.ql index 05334a533dd..8d02debbdb4 100644 --- a/actions/ql/src/Models/ReusableWorkflowsSinks.ql +++ b/actions/ql/src/Models/ReusableWorkflowsSinks.ql @@ -24,6 +24,8 @@ private module MyConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { sink instanceof CodeInjectionSink and not madSink(sink, "code-injection") } + + predicate observeDiffInformedIncrementalMode() { any() } } module MyFlow = TaintTracking::Global; diff --git a/actions/ql/src/Models/ReusableWorkflowsSources.ql b/actions/ql/src/Models/ReusableWorkflowsSources.ql index e5612d06343..a7112bf3758 100644 --- a/actions/ql/src/Models/ReusableWorkflowsSources.ql +++ b/actions/ql/src/Models/ReusableWorkflowsSources.ql @@ -34,6 +34,8 @@ private module MyConfig implements DataFlow::ConfigSig { isSink(node) and set instanceof DataFlow::FieldContent } + + predicate observeDiffInformedIncrementalMode() { any() } } module MyFlow = TaintTracking::Global; diff --git a/actions/ql/src/Models/ReusableWorkflowsSummaries.ql b/actions/ql/src/Models/ReusableWorkflowsSummaries.ql index 444ce028954..a05bec744f8 100644 --- a/actions/ql/src/Models/ReusableWorkflowsSummaries.ql +++ b/actions/ql/src/Models/ReusableWorkflowsSummaries.ql @@ -25,6 +25,8 @@ private module MyConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { exists(ReusableWorkflow w | w.getAnOutputExpr() = sink.asExpr()) } + + predicate observeDiffInformedIncrementalMode() { any() } } module MyFlow = TaintTracking::Global; From d3cff2dff1f665fcdab2b5762b9f8279f47d56be Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Wed, 11 Jun 2025 13:58:56 -0400 Subject: [PATCH 034/150] Crypto: Add support to trace keys, add support to find prior key gen properties that configure downstream operations. Add key size tests --- .../experimental/quantum/OpenSSL/KeyFlow.qll | 29 +++++++++++++++++++ .../Operations/OpenSSLOperationBase.qll | 29 +++++++++++++++---- .../quantum/key_creation_key_size.expected | 3 ++ .../quantum/key_creation_key_size.ql | 6 ++++ .../codeql/quantum/experimental/Model.qll | 12 +++++++- 5 files changed, 72 insertions(+), 7 deletions(-) create mode 100644 cpp/ql/lib/experimental/quantum/OpenSSL/KeyFlow.qll create mode 100644 cpp/ql/test/experimental/library-tests/quantum/key_creation_key_size.expected create mode 100644 cpp/ql/test/experimental/library-tests/quantum/key_creation_key_size.ql diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/KeyFlow.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/KeyFlow.qll new file mode 100644 index 00000000000..bd6d4f6b295 --- /dev/null +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/KeyFlow.qll @@ -0,0 +1,29 @@ +import semmle.code.cpp.dataflow.new.DataFlow +private import Operations.OpenSSLOperations +private import experimental.quantum.Language + +/** + * Flow from key creation to key used in a call + */ +module OpenSSLKeyFlowConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + // NOTE/ASSUMPTION: it is assumed the operation is also an OpenSSLOperation. + // All operations modeled for openssl should be modeled as OpenSSLOperation. + exists(Crypto::KeyCreationOperationInstance keygen | keygen.getOutputKeyArtifact() = source) + } + + predicate isSink(DataFlow::Node sink) { + exists(Call call | call.(Call).getAnArgument() = sink.asExpr()) + } + //TODO: consideration for additional flow steps? Can a key be copied for example? +} + +module OpenSSLKeyFlow = TaintTracking::Global; + +Crypto::KeyCreationOperationInstance getSourceKeyCreationInstanceFromArg(Expr arg) { + exists(DataFlow::Node src, DataFlow::Node sink | + OpenSSLKeyFlow::flow(src, sink) and + result.getOutputKeyArtifact() = src and + sink.asExpr() = arg + ) +} diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll index ad10b767055..ecec99586a5 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll @@ -1,5 +1,6 @@ private import experimental.quantum.Language private import experimental.quantum.OpenSSL.CtxFlow +private import experimental.quantum.OpenSSL.KeyFlow private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers // Importing these intializers here to ensure the are part of any model that is // using OpenSSLOperationBase. This futher ensures that initializers are tied to opeartions @@ -63,13 +64,29 @@ abstract class EvpAlgorithmInitializer extends EvpInitializer { } abstract class EvpKeyInitializer extends EvpInitializer { - //, EvpAlgorithmInitializer { abstract Expr getKeyArg(); - // /** - // * Any key arg can potentially be traced to find the algorithm used to generate the key. - // */ - // override Expr getAlgorithmArg(){ - // } +} + +/** + * Any key initializer may initialize the algorithm and the key size through + * the key. Extend any instance of key initializer provide initialization + * of the algorithm and key size from the key. + */ +class EvpInitializerThroughKey extends EvpAlgorithmInitializer, EvpKeySizeInitializer instanceof EvpKeyInitializer +{ + //TODO: charpred that traces from creation to key arg, grab creator + override CtxPointerSource getContextArg() { result = EvpKeyInitializer.super.getContextArg() } + + override Expr getAlgorithmArg() { + result = + getSourceKeyCreationInstanceFromArg(this.getKeyArg()).(OpenSSLOperation).getAlgorithmArg() + } + + override Expr getKeySizeArg() { + result = getSourceKeyCreationInstanceFromArg(this.getKeyArg()).getKeySizeConsumer().asExpr() + } + + Expr getKeyArg() { result = EvpKeyInitializer.super.getKeyArg() } } abstract class EvpIVInitializer extends EvpInitializer { diff --git a/cpp/ql/test/experimental/library-tests/quantum/key_creation_key_size.expected b/cpp/ql/test/experimental/library-tests/quantum/key_creation_key_size.expected new file mode 100644 index 00000000000..8de39995089 --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/key_creation_key_size.expected @@ -0,0 +1,3 @@ +| openssl_pkey.c:55:9:55:23 | KeyGeneration | openssl_pkey.c:54:47:54:50 | Constant | openssl_pkey.c:54:47:54:50 | 2048 | +| openssl_signature.c:548:9:548:23 | KeyGeneration | openssl_signature.c:547:51:547:54 | Constant | openssl_signature.c:547:51:547:54 | 2048 | +| openssl_signature.c:578:9:578:23 | KeyGeneration | openssl_signature.c:569:55:569:58 | Constant | openssl_signature.c:569:55:569:58 | 2048 | diff --git a/cpp/ql/test/experimental/library-tests/quantum/key_creation_key_size.ql b/cpp/ql/test/experimental/library-tests/quantum/key_creation_key_size.ql new file mode 100644 index 00000000000..e5bc0dfd28b --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/key_creation_key_size.ql @@ -0,0 +1,6 @@ +import cpp +import experimental.quantum.Language + +from Crypto::KeyCreationOperationNode n, Crypto::NodeBase src +where n.getAKeySizeSource() = src +select n, src, src.asElement() diff --git a/shared/quantum/codeql/quantum/experimental/Model.qll b/shared/quantum/codeql/quantum/experimental/Model.qll index bbe71398f03..8ee89702d76 100644 --- a/shared/quantum/codeql/quantum/experimental/Model.qll +++ b/shared/quantum/codeql/quantum/experimental/Model.qll @@ -1051,7 +1051,11 @@ module CryptographyBase Input> { digestLength = 512 // TODO: verify } - abstract private class KeyCreationOperationInstance extends OperationInstance { + /** + * Users should not extend this class directly, but instead use + * `KeyCreationOperationInstance` or `KeyDerivationOperationInstance`. + */ + abstract class KeyCreationOperationInstance extends OperationInstance { abstract string getKeyCreationTypeDescription(); /** @@ -1732,6 +1736,12 @@ module CryptographyBase Input> { override string getInternalType() { result = instance.getKeyCreationTypeDescription() } + NodeBase getAKeySizeSource() { + result = instance.getKeySizeConsumer().getConsumer().getAGenericSourceNode() + or + result = instance.getKeySizeConsumer().getConsumer().getAKnownSourceNode() + } + /** * Gets the key artifact produced by this operation. */ From 8f253806559705dba3fd4c518f65b555e21e4f98 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Wed, 11 Jun 2025 15:15:22 -0400 Subject: [PATCH 035/150] Crypto: Consolidate tests to use node, edges, and properties. --- .../quantum/algorithm_names.expected | 17 ----- .../library-tests/quantum/algorithm_names.ql | 5 -- .../library-tests/quantum/algorithms.expected | 17 ----- .../library-tests/quantum/algorithms.ql | 5 -- .../hash_operation_input_output.expected | 3 - .../quantum/hash_operation_input_output.ql | 5 -- ...=> key_creation_key_size_sources.expected} | 0 ...ze.ql => key_creation_key_size_sources.ql} | 0 ...ycreation_operations_input_output.expected | 3 - .../keycreation_operations_input_output.ql | 6 -- .../quantum/keyop_input_output.expected | 5 -- .../quantum/keyop_input_output.ql | 5 -- .../quantum/keyop_key_args.expected | 5 -- .../library-tests/quantum/keyop_key_args.ql | 6 -- .../quantum/keyop_nonce_args.expected | 4 -- .../library-tests/quantum/keyop_nonce_args.ql | 6 -- .../quantum/keyop_subtype.expected | 3 - .../library-tests/quantum/keyop_subtype.ql | 5 -- .../library-tests/quantum/node_edges.expected | 71 +++++++++++++++++++ .../library-tests/quantum/node_edges.ql | 5 ++ .../quantum/node_properties.expected | 66 +++++++++++++++++ .../library-tests/quantum/node_properties.ql | 6 ++ .../library-tests/quantum/nodes.expected | 63 ++++++++++++++++ .../quantum/{operations.ql => nodes.ql} | 2 +- .../quantum/operation_algorithms.expected | 0 .../quantum/operation_algorithms.ql | 5 -- .../library-tests/quantum/operations.expected | 16 ----- .../quantum/signature_operations.expected | 12 ---- .../quantum/signature_operations.ql | 6 -- .../codeql/quantum/experimental/Model.qll | 8 +++ 30 files changed, 220 insertions(+), 140 deletions(-) delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/algorithm_names.expected delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/algorithm_names.ql delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/algorithms.expected delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/algorithms.ql delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/hash_operation_input_output.expected delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/hash_operation_input_output.ql rename cpp/ql/test/experimental/library-tests/quantum/{key_creation_key_size.expected => key_creation_key_size_sources.expected} (100%) rename cpp/ql/test/experimental/library-tests/quantum/{key_creation_key_size.ql => key_creation_key_size_sources.ql} (100%) delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/keycreation_operations_input_output.expected delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/keycreation_operations_input_output.ql delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/keyop_input_output.expected delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/keyop_input_output.ql delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/keyop_key_args.expected delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/keyop_key_args.ql delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/keyop_nonce_args.expected delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/keyop_nonce_args.ql delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/keyop_subtype.expected delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/keyop_subtype.ql create mode 100644 cpp/ql/test/experimental/library-tests/quantum/node_edges.expected create mode 100644 cpp/ql/test/experimental/library-tests/quantum/node_edges.ql create mode 100644 cpp/ql/test/experimental/library-tests/quantum/node_properties.expected create mode 100644 cpp/ql/test/experimental/library-tests/quantum/node_properties.ql create mode 100644 cpp/ql/test/experimental/library-tests/quantum/nodes.expected rename cpp/ql/test/experimental/library-tests/quantum/{operations.ql => nodes.ql} (66%) delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/operation_algorithms.expected delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/operation_algorithms.ql delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/operations.expected delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/signature_operations.expected delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/signature_operations.ql diff --git a/cpp/ql/test/experimental/library-tests/quantum/algorithm_names.expected b/cpp/ql/test/experimental/library-tests/quantum/algorithm_names.expected deleted file mode 100644 index b05c0da8303..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/algorithm_names.expected +++ /dev/null @@ -1,17 +0,0 @@ -| openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | AES | -| openssl_basic.c:23:37:23:51 | ModeOfOperation | GCM | -| openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | AES | -| openssl_basic.c:69:33:69:47 | ModeOfOperation | GCM | -| openssl_basic.c:116:38:116:47 | HashAlgorithm | SHA2 | -| openssl_basic.c:144:67:144:73 | HashAlgorithm | MD5 | -| openssl_basic.c:160:39:160:48 | HashAlgorithm | SHA2 | -| openssl_pkey.c:21:10:21:28 | KeyOperationAlgorithm | RSA | -| openssl_pkey.c:50:31:50:42 | KeyOperationAlgorithm | RSA | -| openssl_signature.c:521:46:521:66 | PaddingAlgorithm | PSS | -| openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | RSA | -| openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm | DSA | -| openssl_signature.c:684:24:684:33 | HashAlgorithm | SHA2 | -| openssl_signature.c:702:60:702:71 | HashAlgorithm | SHA2 | -| openssl_signature.c:702:60:702:71 | KeyOperationAlgorithm | RSA | -| openssl_signature.c:740:24:740:33 | HashAlgorithm | SHA2 | -| openssl_signature.c:758:60:758:64 | KeyOperationAlgorithm | DSA | diff --git a/cpp/ql/test/experimental/library-tests/quantum/algorithm_names.ql b/cpp/ql/test/experimental/library-tests/quantum/algorithm_names.ql deleted file mode 100644 index 72566620799..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/algorithm_names.ql +++ /dev/null @@ -1,5 +0,0 @@ -import cpp -import experimental.quantum.Language - -from Crypto::AlgorithmNode n -select n, n.getAlgorithmName() diff --git a/cpp/ql/test/experimental/library-tests/quantum/algorithms.expected b/cpp/ql/test/experimental/library-tests/quantum/algorithms.expected deleted file mode 100644 index 4b821bae44e..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/algorithms.expected +++ /dev/null @@ -1,17 +0,0 @@ -| openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | -| openssl_basic.c:23:37:23:51 | ModeOfOperation | -| openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | -| openssl_basic.c:69:33:69:47 | ModeOfOperation | -| openssl_basic.c:116:38:116:47 | HashAlgorithm | -| openssl_basic.c:144:67:144:73 | HashAlgorithm | -| openssl_basic.c:160:39:160:48 | HashAlgorithm | -| openssl_pkey.c:21:10:21:28 | KeyOperationAlgorithm | -| openssl_pkey.c:50:31:50:42 | KeyOperationAlgorithm | -| openssl_signature.c:521:46:521:66 | PaddingAlgorithm | -| openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | -| openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm | -| openssl_signature.c:684:24:684:33 | HashAlgorithm | -| openssl_signature.c:702:60:702:71 | HashAlgorithm | -| openssl_signature.c:702:60:702:71 | KeyOperationAlgorithm | -| openssl_signature.c:740:24:740:33 | HashAlgorithm | -| openssl_signature.c:758:60:758:64 | KeyOperationAlgorithm | diff --git a/cpp/ql/test/experimental/library-tests/quantum/algorithms.ql b/cpp/ql/test/experimental/library-tests/quantum/algorithms.ql deleted file mode 100644 index 1144f481344..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/algorithms.ql +++ /dev/null @@ -1,5 +0,0 @@ -import cpp -import experimental.quantum.Language - -from Crypto::AlgorithmNode n -select n diff --git a/cpp/ql/test/experimental/library-tests/quantum/hash_operation_input_output.expected b/cpp/ql/test/experimental/library-tests/quantum/hash_operation_input_output.expected deleted file mode 100644 index 066288409be..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/hash_operation_input_output.expected +++ /dev/null @@ -1,3 +0,0 @@ -| openssl_basic.c:124:13:124:30 | HashOperation | openssl_basic.c:124:39:124:44 | Digest | openssl_basic.c:120:37:120:43 | Message | -| openssl_basic.c:144:13:144:22 | HashOperation | openssl_basic.c:144:46:144:51 | Digest | openssl_basic.c:144:24:144:30 | Message | -| openssl_signature.c:23:9:23:26 | HashOperation | openssl_signature.c:23:36:23:41 | Digest | openssl_signature.c:22:34:22:40 | Message | diff --git a/cpp/ql/test/experimental/library-tests/quantum/hash_operation_input_output.ql b/cpp/ql/test/experimental/library-tests/quantum/hash_operation_input_output.ql deleted file mode 100644 index 6728fed9f2a..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/hash_operation_input_output.ql +++ /dev/null @@ -1,5 +0,0 @@ -import cpp -import experimental.quantum.Language - -from Crypto::HashOperationNode n -select n, n.getDigest(), n.getInputArtifact() diff --git a/cpp/ql/test/experimental/library-tests/quantum/key_creation_key_size.expected b/cpp/ql/test/experimental/library-tests/quantum/key_creation_key_size_sources.expected similarity index 100% rename from cpp/ql/test/experimental/library-tests/quantum/key_creation_key_size.expected rename to cpp/ql/test/experimental/library-tests/quantum/key_creation_key_size_sources.expected diff --git a/cpp/ql/test/experimental/library-tests/quantum/key_creation_key_size.ql b/cpp/ql/test/experimental/library-tests/quantum/key_creation_key_size_sources.ql similarity index 100% rename from cpp/ql/test/experimental/library-tests/quantum/key_creation_key_size.ql rename to cpp/ql/test/experimental/library-tests/quantum/key_creation_key_size_sources.ql diff --git a/cpp/ql/test/experimental/library-tests/quantum/keycreation_operations_input_output.expected b/cpp/ql/test/experimental/library-tests/quantum/keycreation_operations_input_output.expected deleted file mode 100644 index 9855b149c73..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/keycreation_operations_input_output.expected +++ /dev/null @@ -1,3 +0,0 @@ -| openssl_pkey.c:55:9:55:23 | KeyGeneration | openssl_pkey.c:55:30:55:34 | Key | -| openssl_signature.c:548:9:548:23 | KeyGeneration | openssl_signature.c:548:34:548:37 | Key | -| openssl_signature.c:578:9:578:23 | KeyGeneration | openssl_signature.c:578:34:578:37 | Key | diff --git a/cpp/ql/test/experimental/library-tests/quantum/keycreation_operations_input_output.ql b/cpp/ql/test/experimental/library-tests/quantum/keycreation_operations_input_output.ql deleted file mode 100644 index 5505c239957..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/keycreation_operations_input_output.ql +++ /dev/null @@ -1,6 +0,0 @@ -import cpp -import experimental.quantum.Language -import experimental.quantum.OpenSSL.OpenSSL - -from Crypto::KeyCreationOperationNode n -select n, n.getOutputKeyArtifact() diff --git a/cpp/ql/test/experimental/library-tests/quantum/keyop_input_output.expected b/cpp/ql/test/experimental/library-tests/quantum/keyop_input_output.expected deleted file mode 100644 index 0176af8b657..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/keyop_input_output.expected +++ /dev/null @@ -1,5 +0,0 @@ -| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:35:54:35:62 | Message | openssl_basic.c:35:36:35:45 | KeyOperationOutput | -| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:35:54:35:62 | Message | openssl_basic.c:40:38:40:53 | KeyOperationOutput | -| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:81:49:81:58 | Message | openssl_basic.c:81:32:81:40 | KeyOperationOutput | -| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:81:49:81:58 | Message | openssl_basic.c:90:36:90:50 | KeyOperationOutput | -| openssl_pkey.c:64:9:64:24 | EncryptOperation | openssl_pkey.c:64:58:64:66 | Message | openssl_pkey.c:64:31:64:39 | KeyOperationOutput | diff --git a/cpp/ql/test/experimental/library-tests/quantum/keyop_input_output.ql b/cpp/ql/test/experimental/library-tests/quantum/keyop_input_output.ql deleted file mode 100644 index 6f1ffad622e..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/keyop_input_output.ql +++ /dev/null @@ -1,5 +0,0 @@ -import cpp -import experimental.quantum.Language - -from Crypto::KeyOperationNode n -select n, n.getAnInputArtifact(), n.getAnOutputArtifact() diff --git a/cpp/ql/test/experimental/library-tests/quantum/keyop_key_args.expected b/cpp/ql/test/experimental/library-tests/quantum/keyop_key_args.expected deleted file mode 100644 index eb74124f7d7..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/keyop_key_args.expected +++ /dev/null @@ -1,5 +0,0 @@ -| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:23:62:23:65 | Key | -| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:31:49:31:51 | Key | -| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:69:58:69:61 | Key | -| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:77:45:77:47 | Key | -| openssl_pkey.c:64:9:64:24 | EncryptOperation | openssl_pkey.c:60:28:60:31 | Key | diff --git a/cpp/ql/test/experimental/library-tests/quantum/keyop_key_args.ql b/cpp/ql/test/experimental/library-tests/quantum/keyop_key_args.ql deleted file mode 100644 index 5057ed6d555..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/keyop_key_args.ql +++ /dev/null @@ -1,6 +0,0 @@ -import cpp -import experimental.quantum.Language - -from Crypto::KeyOperationNode op, Crypto::KeyArtifactNode k -where op.getAKey() = k -select op, k diff --git a/cpp/ql/test/experimental/library-tests/quantum/keyop_nonce_args.expected b/cpp/ql/test/experimental/library-tests/quantum/keyop_nonce_args.expected deleted file mode 100644 index ef537ff0836..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/keyop_nonce_args.expected +++ /dev/null @@ -1,4 +0,0 @@ -| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:23:68:23:71 | Nonce | -| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:31:54:31:55 | Nonce | -| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:69:64:69:67 | Nonce | -| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:77:50:77:51 | Nonce | diff --git a/cpp/ql/test/experimental/library-tests/quantum/keyop_nonce_args.ql b/cpp/ql/test/experimental/library-tests/quantum/keyop_nonce_args.ql deleted file mode 100644 index 6c386ec67ee..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/keyop_nonce_args.ql +++ /dev/null @@ -1,6 +0,0 @@ -import cpp -import experimental.quantum.Language - -from Crypto::KeyOperationNode op, Crypto::NonceArtifactNode n -where op.getANonce() = n -select op, n diff --git a/cpp/ql/test/experimental/library-tests/quantum/keyop_subtype.expected b/cpp/ql/test/experimental/library-tests/quantum/keyop_subtype.expected deleted file mode 100644 index 84224b93bf8..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/keyop_subtype.expected +++ /dev/null @@ -1,3 +0,0 @@ -| openssl_basic.c:40:13:40:31 | EncryptOperation | Encrypt | -| openssl_basic.c:90:11:90:29 | DecryptOperation | Decrypt | -| openssl_pkey.c:64:9:64:24 | EncryptOperation | Encrypt | diff --git a/cpp/ql/test/experimental/library-tests/quantum/keyop_subtype.ql b/cpp/ql/test/experimental/library-tests/quantum/keyop_subtype.ql deleted file mode 100644 index 9ec75c362ae..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/keyop_subtype.ql +++ /dev/null @@ -1,5 +0,0 @@ -import cpp -import experimental.quantum.Language - -from Crypto::KeyOperationNode n -select n, n.getKeyOperationSubtype() diff --git a/cpp/ql/test/experimental/library-tests/quantum/node_edges.expected b/cpp/ql/test/experimental/library-tests/quantum/node_edges.expected new file mode 100644 index 00000000000..08f5653722c --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/node_edges.expected @@ -0,0 +1,71 @@ +| openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | Mode | openssl_basic.c:23:37:23:51 | ModeOfOperation | +| openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | Padding | openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | +| openssl_basic.c:23:62:23:65 | Key | Source | openssl_basic.c:23:62:23:65 | Key | +| openssl_basic.c:23:68:23:71 | Nonce | Source | openssl_basic.c:23:68:23:71 | Nonce | +| openssl_basic.c:31:49:31:51 | Key | Source | openssl_basic.c:179:43:179:76 | Constant | +| openssl_basic.c:31:54:31:55 | Nonce | Source | openssl_basic.c:180:42:180:59 | Constant | +| openssl_basic.c:35:54:35:62 | Message | Source | openssl_basic.c:181:49:181:87 | Constant | +| openssl_basic.c:40:13:40:31 | EncryptOperation | Algorithm | openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | +| openssl_basic.c:40:13:40:31 | EncryptOperation | Input | openssl_basic.c:35:54:35:62 | Message | +| openssl_basic.c:40:13:40:31 | EncryptOperation | Key | openssl_basic.c:23:62:23:65 | Key | +| openssl_basic.c:40:13:40:31 | EncryptOperation | Key | openssl_basic.c:31:49:31:51 | Key | +| openssl_basic.c:40:13:40:31 | EncryptOperation | Nonce | openssl_basic.c:23:68:23:71 | Nonce | +| openssl_basic.c:40:13:40:31 | EncryptOperation | Nonce | openssl_basic.c:31:54:31:55 | Nonce | +| openssl_basic.c:40:13:40:31 | EncryptOperation | Output | openssl_basic.c:35:36:35:45 | KeyOperationOutput | +| openssl_basic.c:40:13:40:31 | EncryptOperation | Output | openssl_basic.c:40:38:40:53 | KeyOperationOutput | +| openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | Mode | openssl_basic.c:69:33:69:47 | ModeOfOperation | +| openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | Padding | openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | +| openssl_basic.c:69:58:69:61 | Key | Source | openssl_basic.c:69:58:69:61 | Key | +| openssl_basic.c:69:64:69:67 | Nonce | Source | openssl_basic.c:69:64:69:67 | Nonce | +| openssl_basic.c:77:45:77:47 | Key | Source | openssl_basic.c:179:43:179:76 | Constant | +| openssl_basic.c:77:50:77:51 | Nonce | Source | openssl_basic.c:180:42:180:59 | Constant | +| openssl_basic.c:81:49:81:58 | Message | Source | openssl_basic.c:81:49:81:58 | Message | +| openssl_basic.c:90:11:90:29 | DecryptOperation | Algorithm | openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | +| openssl_basic.c:90:11:90:29 | DecryptOperation | Input | openssl_basic.c:81:49:81:58 | Message | +| openssl_basic.c:90:11:90:29 | DecryptOperation | Key | openssl_basic.c:69:58:69:61 | Key | +| openssl_basic.c:90:11:90:29 | DecryptOperation | Key | openssl_basic.c:77:45:77:47 | Key | +| openssl_basic.c:90:11:90:29 | DecryptOperation | Nonce | openssl_basic.c:69:64:69:67 | Nonce | +| openssl_basic.c:90:11:90:29 | DecryptOperation | Nonce | openssl_basic.c:77:50:77:51 | Nonce | +| openssl_basic.c:90:11:90:29 | DecryptOperation | Output | openssl_basic.c:81:32:81:40 | KeyOperationOutput | +| openssl_basic.c:90:11:90:29 | DecryptOperation | Output | openssl_basic.c:90:36:90:50 | KeyOperationOutput | +| openssl_basic.c:120:37:120:43 | Message | Source | openssl_basic.c:181:49:181:87 | Constant | +| openssl_basic.c:124:13:124:30 | HashOperation | Algorithm | openssl_basic.c:116:38:116:47 | HashAlgorithm | +| openssl_basic.c:124:13:124:30 | HashOperation | Digest | openssl_basic.c:124:39:124:44 | Digest | +| openssl_basic.c:124:13:124:30 | HashOperation | Message | openssl_basic.c:120:37:120:43 | Message | +| openssl_basic.c:124:39:124:44 | Digest | Source | openssl_basic.c:124:39:124:44 | Digest | +| openssl_basic.c:144:13:144:22 | HashOperation | Algorithm | openssl_basic.c:144:67:144:73 | HashAlgorithm | +| openssl_basic.c:144:13:144:22 | HashOperation | Digest | openssl_basic.c:144:46:144:51 | Digest | +| openssl_basic.c:144:13:144:22 | HashOperation | Message | openssl_basic.c:144:24:144:30 | Message | +| openssl_basic.c:144:24:144:30 | Message | Source | openssl_basic.c:181:49:181:87 | Constant | +| openssl_basic.c:144:46:144:51 | Digest | Source | openssl_basic.c:144:46:144:51 | Digest | +| openssl_pkey.c:21:10:21:28 | KeyOperationAlgorithm | Mode | openssl_pkey.c:21:10:21:28 | KeyOperationAlgorithm | +| openssl_pkey.c:21:10:21:28 | KeyOperationAlgorithm | Padding | openssl_pkey.c:21:10:21:28 | KeyOperationAlgorithm | +| openssl_pkey.c:50:31:50:42 | KeyOperationAlgorithm | Mode | openssl_pkey.c:50:31:50:42 | KeyOperationAlgorithm | +| openssl_pkey.c:50:31:50:42 | KeyOperationAlgorithm | Padding | openssl_pkey.c:50:31:50:42 | KeyOperationAlgorithm | +| openssl_pkey.c:55:9:55:23 | KeyGeneration | Algorithm | openssl_pkey.c:50:31:50:42 | KeyOperationAlgorithm | +| openssl_pkey.c:55:9:55:23 | KeyGeneration | Output | openssl_pkey.c:55:30:55:34 | Key | +| openssl_pkey.c:55:30:55:34 | Key | Algorithm | openssl_pkey.c:50:31:50:42 | KeyOperationAlgorithm | +| openssl_pkey.c:60:28:60:31 | Key | Source | openssl_pkey.c:55:30:55:34 | Key | +| openssl_pkey.c:64:9:64:24 | EncryptOperation | Algorithm | openssl_pkey.c:50:31:50:42 | KeyOperationAlgorithm | +| openssl_pkey.c:64:9:64:24 | EncryptOperation | Input | openssl_pkey.c:64:58:64:66 | Message | +| openssl_pkey.c:64:9:64:24 | EncryptOperation | Key | openssl_pkey.c:60:28:60:31 | Key | +| openssl_pkey.c:64:9:64:24 | EncryptOperation | Nonce | openssl_pkey.c:64:9:64:24 | EncryptOperation | +| openssl_pkey.c:64:9:64:24 | EncryptOperation | Output | openssl_pkey.c:64:31:64:39 | KeyOperationOutput | +| openssl_pkey.c:64:58:64:66 | Message | Source | openssl_pkey.c:45:49:45:65 | Constant | +| openssl_signature.c:22:34:22:40 | Message | Source | openssl_signature.c:602:37:602:77 | Constant | +| openssl_signature.c:22:34:22:40 | Message | Source | openssl_signature.c:685:37:685:77 | Constant | +| openssl_signature.c:22:34:22:40 | Message | Source | openssl_signature.c:741:37:741:77 | Constant | +| openssl_signature.c:23:9:23:26 | HashOperation | Algorithm | openssl_signature.c:684:24:684:33 | HashAlgorithm | +| openssl_signature.c:23:9:23:26 | HashOperation | Algorithm | openssl_signature.c:740:24:740:33 | HashAlgorithm | +| openssl_signature.c:23:9:23:26 | HashOperation | Digest | openssl_signature.c:23:36:23:41 | Digest | +| openssl_signature.c:23:9:23:26 | HashOperation | Message | openssl_signature.c:22:34:22:40 | Message | +| openssl_signature.c:23:36:23:41 | Digest | Source | openssl_signature.c:23:36:23:41 | Digest | +| openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | Mode | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | +| openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | Padding | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | +| openssl_signature.c:548:9:548:23 | KeyGeneration | Algorithm | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | +| openssl_signature.c:548:9:548:23 | KeyGeneration | Output | openssl_signature.c:548:34:548:37 | Key | +| openssl_signature.c:548:34:548:37 | Key | Algorithm | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | +| openssl_signature.c:578:9:578:23 | KeyGeneration | Algorithm | openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm | +| openssl_signature.c:578:9:578:23 | KeyGeneration | Output | openssl_signature.c:578:34:578:37 | Key | +| openssl_signature.c:578:34:578:37 | Key | Algorithm | openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm | +| openssl_signature.c:702:60:702:71 | KeyOperationAlgorithm | Padding | openssl_signature.c:702:60:702:71 | KeyOperationAlgorithm | diff --git a/cpp/ql/test/experimental/library-tests/quantum/node_edges.ql b/cpp/ql/test/experimental/library-tests/quantum/node_edges.ql new file mode 100644 index 00000000000..6d6507a91bf --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/node_edges.ql @@ -0,0 +1,5 @@ +import cpp +import experimental.quantum.Language + +from Crypto::NodeBase n, string key +select n, key, n.getChild(key) diff --git a/cpp/ql/test/experimental/library-tests/quantum/node_properties.expected b/cpp/ql/test/experimental/library-tests/quantum/node_properties.expected new file mode 100644 index 00000000000..4f6f2b43660 --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/node_properties.expected @@ -0,0 +1,66 @@ +| openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | KeySize | 256 | openssl_basic.c:23:37:23:51 | openssl_basic.c:23:37:23:51 | +| openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | Name | AES | openssl_basic.c:23:37:23:51 | openssl_basic.c:23:37:23:51 | +| openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | RawName | EVP_aes_256_gcm | openssl_basic.c:23:37:23:51 | openssl_basic.c:23:37:23:51 | +| openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | Structure | Block | openssl_basic.c:23:37:23:51 | openssl_basic.c:23:37:23:51 | +| openssl_basic.c:23:37:23:51 | ModeOfOperation | Name | GCM | openssl_basic.c:23:37:23:51 | openssl_basic.c:23:37:23:51 | +| openssl_basic.c:23:37:23:51 | ModeOfOperation | RawName | EVP_aes_256_gcm | openssl_basic.c:23:37:23:51 | openssl_basic.c:23:37:23:51 | +| openssl_basic.c:23:62:23:65 | Key | KeyType | Unknown | openssl_basic.c:23:62:23:65 | openssl_basic.c:23:62:23:65 | +| openssl_basic.c:31:49:31:51 | Key | KeyType | Unknown | openssl_basic.c:31:49:31:51 | openssl_basic.c:31:49:31:51 | +| openssl_basic.c:40:13:40:31 | EncryptOperation | KeyOperationSubtype | Encrypt | openssl_basic.c:40:13:40:31 | openssl_basic.c:40:13:40:31 | +| openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | KeySize | 256 | openssl_basic.c:69:33:69:47 | openssl_basic.c:69:33:69:47 | +| openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | Name | AES | openssl_basic.c:69:33:69:47 | openssl_basic.c:69:33:69:47 | +| openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | RawName | EVP_aes_256_gcm | openssl_basic.c:69:33:69:47 | openssl_basic.c:69:33:69:47 | +| openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | Structure | Block | openssl_basic.c:69:33:69:47 | openssl_basic.c:69:33:69:47 | +| openssl_basic.c:69:33:69:47 | ModeOfOperation | Name | GCM | openssl_basic.c:69:33:69:47 | openssl_basic.c:69:33:69:47 | +| openssl_basic.c:69:33:69:47 | ModeOfOperation | RawName | EVP_aes_256_gcm | openssl_basic.c:69:33:69:47 | openssl_basic.c:69:33:69:47 | +| openssl_basic.c:69:58:69:61 | Key | KeyType | Unknown | openssl_basic.c:69:58:69:61 | openssl_basic.c:69:58:69:61 | +| openssl_basic.c:77:45:77:47 | Key | KeyType | Unknown | openssl_basic.c:77:45:77:47 | openssl_basic.c:77:45:77:47 | +| openssl_basic.c:90:11:90:29 | DecryptOperation | KeyOperationSubtype | Decrypt | openssl_basic.c:90:11:90:29 | openssl_basic.c:90:11:90:29 | +| openssl_basic.c:116:38:116:47 | HashAlgorithm | DigestSize | 256 | openssl_basic.c:116:38:116:47 | openssl_basic.c:116:38:116:47 | +| openssl_basic.c:116:38:116:47 | HashAlgorithm | Name | SHA2 | openssl_basic.c:116:38:116:47 | openssl_basic.c:116:38:116:47 | +| openssl_basic.c:116:38:116:47 | HashAlgorithm | RawName | EVP_sha256 | openssl_basic.c:116:38:116:47 | openssl_basic.c:116:38:116:47 | +| openssl_basic.c:144:67:144:73 | HashAlgorithm | DigestSize | 128 | openssl_basic.c:144:67:144:73 | openssl_basic.c:144:67:144:73 | +| openssl_basic.c:144:67:144:73 | HashAlgorithm | Name | MD5 | openssl_basic.c:144:67:144:73 | openssl_basic.c:144:67:144:73 | +| openssl_basic.c:144:67:144:73 | HashAlgorithm | RawName | EVP_md5 | openssl_basic.c:144:67:144:73 | openssl_basic.c:144:67:144:73 | +| openssl_basic.c:155:43:155:55 | Constant | Description | 855 | openssl_basic.c:155:43:155:55 | openssl_basic.c:155:43:155:55 | +| openssl_basic.c:160:39:160:48 | HashAlgorithm | DigestSize | 256 | openssl_basic.c:160:39:160:48 | openssl_basic.c:160:39:160:48 | +| openssl_basic.c:160:39:160:48 | HashAlgorithm | Name | SHA2 | openssl_basic.c:160:39:160:48 | openssl_basic.c:160:39:160:48 | +| openssl_basic.c:160:39:160:48 | HashAlgorithm | RawName | EVP_sha256 | openssl_basic.c:160:39:160:48 | openssl_basic.c:160:39:160:48 | +| openssl_basic.c:179:43:179:76 | Constant | Description | 01234567890123456789012345678901 | openssl_basic.c:179:43:179:76 | openssl_basic.c:179:43:179:76 | +| openssl_basic.c:180:42:180:59 | Constant | Description | 0123456789012345 | openssl_basic.c:180:42:180:59 | openssl_basic.c:180:42:180:59 | +| openssl_basic.c:181:49:181:87 | Constant | Description | This is a test message for encryption | openssl_basic.c:181:49:181:87 | openssl_basic.c:181:49:181:87 | +| openssl_pkey.c:21:10:21:28 | KeyOperationAlgorithm | Name | RSA | openssl_pkey.c:21:10:21:28 | openssl_pkey.c:21:10:21:28 | +| openssl_pkey.c:21:10:21:28 | KeyOperationAlgorithm | RawName | RSA_generate_key_ex | openssl_pkey.c:21:10:21:28 | openssl_pkey.c:21:10:21:28 | +| openssl_pkey.c:45:49:45:65 | Constant | Description | Hello, OpenSSL! | openssl_pkey.c:45:49:45:65 | openssl_pkey.c:45:49:45:65 | +| openssl_pkey.c:50:31:50:42 | KeyOperationAlgorithm | Name | RSA | openssl_pkey.c:50:31:50:42 | openssl_pkey.c:50:31:50:42 | +| openssl_pkey.c:50:31:50:42 | KeyOperationAlgorithm | RawName | 6 | openssl_pkey.c:50:31:50:42 | openssl_pkey.c:50:31:50:42 | +| openssl_pkey.c:54:47:54:50 | Constant | Description | 2048 | openssl_pkey.c:54:47:54:50 | openssl_pkey.c:54:47:54:50 | +| openssl_pkey.c:55:30:55:34 | Key | KeyType | Asymmetric | openssl_pkey.c:55:30:55:34 | openssl_pkey.c:55:30:55:34 | +| openssl_pkey.c:60:28:60:31 | Key | KeyType | Unknown | openssl_pkey.c:60:28:60:31 | openssl_pkey.c:60:28:60:31 | +| openssl_pkey.c:64:9:64:24 | EncryptOperation | KeyOperationSubtype | Encrypt | openssl_pkey.c:64:9:64:24 | openssl_pkey.c:64:9:64:24 | +| openssl_signature.c:521:46:521:66 | PaddingAlgorithm | Name | PSS | openssl_signature.c:521:46:521:66 | openssl_signature.c:521:46:521:66 | +| openssl_signature.c:521:46:521:66 | PaddingAlgorithm | RawName | 6 | openssl_signature.c:521:46:521:66 | openssl_signature.c:521:46:521:66 | +| openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | Name | RSA | openssl_signature.c:543:35:543:46 | openssl_signature.c:543:35:543:46 | +| openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | RawName | 6 | openssl_signature.c:543:35:543:46 | openssl_signature.c:543:35:543:46 | +| openssl_signature.c:547:51:547:54 | Constant | Description | 2048 | openssl_signature.c:547:51:547:54 | openssl_signature.c:547:51:547:54 | +| openssl_signature.c:548:34:548:37 | Key | KeyType | Asymmetric | openssl_signature.c:548:34:548:37 | openssl_signature.c:548:34:548:37 | +| openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm | Name | DSA | openssl_signature.c:565:50:565:54 | openssl_signature.c:565:50:565:54 | +| openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm | RawName | dsa | openssl_signature.c:565:50:565:54 | openssl_signature.c:565:50:565:54 | +| openssl_signature.c:569:55:569:58 | Constant | Description | 2048 | openssl_signature.c:569:55:569:58 | openssl_signature.c:569:55:569:58 | +| openssl_signature.c:578:34:578:37 | Key | KeyType | Asymmetric | openssl_signature.c:578:34:578:37 | openssl_signature.c:578:34:578:37 | +| openssl_signature.c:602:37:602:77 | Constant | Description | Test message for OpenSSL signature APIs | openssl_signature.c:602:37:602:77 | openssl_signature.c:602:37:602:77 | +| openssl_signature.c:684:24:684:33 | HashAlgorithm | DigestSize | 256 | openssl_signature.c:684:24:684:33 | openssl_signature.c:684:24:684:33 | +| openssl_signature.c:684:24:684:33 | HashAlgorithm | Name | SHA2 | openssl_signature.c:684:24:684:33 | openssl_signature.c:684:24:684:33 | +| openssl_signature.c:684:24:684:33 | HashAlgorithm | RawName | EVP_sha256 | openssl_signature.c:684:24:684:33 | openssl_signature.c:684:24:684:33 | +| openssl_signature.c:685:37:685:77 | Constant | Description | Test message for OpenSSL signature APIs | openssl_signature.c:685:37:685:77 | openssl_signature.c:685:37:685:77 | +| openssl_signature.c:702:60:702:71 | HashAlgorithm | DigestSize | 256 | openssl_signature.c:702:60:702:71 | openssl_signature.c:702:60:702:71 | +| openssl_signature.c:702:60:702:71 | HashAlgorithm | Name | SHA2 | openssl_signature.c:702:60:702:71 | openssl_signature.c:702:60:702:71 | +| openssl_signature.c:702:60:702:71 | HashAlgorithm | RawName | RSA-SHA256 | openssl_signature.c:702:60:702:71 | openssl_signature.c:702:60:702:71 | +| openssl_signature.c:702:60:702:71 | KeyOperationAlgorithm | Name | RSA | openssl_signature.c:702:60:702:71 | openssl_signature.c:702:60:702:71 | +| openssl_signature.c:702:60:702:71 | KeyOperationAlgorithm | RawName | RSA-SHA256 | openssl_signature.c:702:60:702:71 | openssl_signature.c:702:60:702:71 | +| openssl_signature.c:740:24:740:33 | HashAlgorithm | DigestSize | 256 | openssl_signature.c:740:24:740:33 | openssl_signature.c:740:24:740:33 | +| openssl_signature.c:740:24:740:33 | HashAlgorithm | Name | SHA2 | openssl_signature.c:740:24:740:33 | openssl_signature.c:740:24:740:33 | +| openssl_signature.c:740:24:740:33 | HashAlgorithm | RawName | EVP_sha256 | openssl_signature.c:740:24:740:33 | openssl_signature.c:740:24:740:33 | +| openssl_signature.c:741:37:741:77 | Constant | Description | Test message for OpenSSL signature APIs | openssl_signature.c:741:37:741:77 | openssl_signature.c:741:37:741:77 | +| openssl_signature.c:758:60:758:64 | KeyOperationAlgorithm | Name | DSA | openssl_signature.c:758:60:758:64 | openssl_signature.c:758:60:758:64 | +| openssl_signature.c:758:60:758:64 | KeyOperationAlgorithm | RawName | dsa | openssl_signature.c:758:60:758:64 | openssl_signature.c:758:60:758:64 | diff --git a/cpp/ql/test/experimental/library-tests/quantum/node_properties.ql b/cpp/ql/test/experimental/library-tests/quantum/node_properties.ql new file mode 100644 index 00000000000..38d3a59b31f --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/node_properties.ql @@ -0,0 +1,6 @@ +import cpp +import experimental.quantum.Language + +from Crypto::NodeBase n, string key, string value, Location location +where n.properties(key, value, location) +select n, key, value, location diff --git a/cpp/ql/test/experimental/library-tests/quantum/nodes.expected b/cpp/ql/test/experimental/library-tests/quantum/nodes.expected new file mode 100644 index 00000000000..ad2216b1d24 --- /dev/null +++ b/cpp/ql/test/experimental/library-tests/quantum/nodes.expected @@ -0,0 +1,63 @@ +| openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | +| openssl_basic.c:23:37:23:51 | ModeOfOperation | +| openssl_basic.c:23:62:23:65 | Key | +| openssl_basic.c:23:68:23:71 | Nonce | +| openssl_basic.c:31:49:31:51 | Key | +| openssl_basic.c:31:54:31:55 | Nonce | +| openssl_basic.c:35:36:35:45 | KeyOperationOutput | +| openssl_basic.c:35:54:35:62 | Message | +| openssl_basic.c:40:13:40:31 | EncryptOperation | +| openssl_basic.c:40:38:40:53 | KeyOperationOutput | +| openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | +| openssl_basic.c:69:33:69:47 | ModeOfOperation | +| openssl_basic.c:69:58:69:61 | Key | +| openssl_basic.c:69:64:69:67 | Nonce | +| openssl_basic.c:77:45:77:47 | Key | +| openssl_basic.c:77:50:77:51 | Nonce | +| openssl_basic.c:81:32:81:40 | KeyOperationOutput | +| openssl_basic.c:81:49:81:58 | Message | +| openssl_basic.c:90:11:90:29 | DecryptOperation | +| openssl_basic.c:90:36:90:50 | KeyOperationOutput | +| openssl_basic.c:116:38:116:47 | HashAlgorithm | +| openssl_basic.c:120:37:120:43 | Message | +| openssl_basic.c:124:13:124:30 | HashOperation | +| openssl_basic.c:124:39:124:44 | Digest | +| openssl_basic.c:144:13:144:22 | HashOperation | +| openssl_basic.c:144:24:144:30 | Message | +| openssl_basic.c:144:46:144:51 | Digest | +| openssl_basic.c:144:67:144:73 | HashAlgorithm | +| openssl_basic.c:155:43:155:55 | Constant | +| openssl_basic.c:160:39:160:48 | HashAlgorithm | +| openssl_basic.c:179:43:179:76 | Constant | +| openssl_basic.c:180:42:180:59 | Constant | +| openssl_basic.c:181:49:181:87 | Constant | +| openssl_pkey.c:21:10:21:28 | KeyOperationAlgorithm | +| openssl_pkey.c:45:49:45:65 | Constant | +| openssl_pkey.c:50:31:50:42 | KeyOperationAlgorithm | +| openssl_pkey.c:54:47:54:50 | Constant | +| openssl_pkey.c:55:9:55:23 | KeyGeneration | +| openssl_pkey.c:55:30:55:34 | Key | +| openssl_pkey.c:60:28:60:31 | Key | +| openssl_pkey.c:64:9:64:24 | EncryptOperation | +| openssl_pkey.c:64:31:64:39 | KeyOperationOutput | +| openssl_pkey.c:64:58:64:66 | Message | +| openssl_signature.c:22:34:22:40 | Message | +| openssl_signature.c:23:9:23:26 | HashOperation | +| openssl_signature.c:23:36:23:41 | Digest | +| openssl_signature.c:521:46:521:66 | PaddingAlgorithm | +| openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | +| openssl_signature.c:547:51:547:54 | Constant | +| openssl_signature.c:548:9:548:23 | KeyGeneration | +| openssl_signature.c:548:34:548:37 | Key | +| openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm | +| openssl_signature.c:569:55:569:58 | Constant | +| openssl_signature.c:578:9:578:23 | KeyGeneration | +| openssl_signature.c:578:34:578:37 | Key | +| openssl_signature.c:602:37:602:77 | Constant | +| openssl_signature.c:684:24:684:33 | HashAlgorithm | +| openssl_signature.c:685:37:685:77 | Constant | +| openssl_signature.c:702:60:702:71 | HashAlgorithm | +| openssl_signature.c:702:60:702:71 | KeyOperationAlgorithm | +| openssl_signature.c:740:24:740:33 | HashAlgorithm | +| openssl_signature.c:741:37:741:77 | Constant | +| openssl_signature.c:758:60:758:64 | KeyOperationAlgorithm | diff --git a/cpp/ql/test/experimental/library-tests/quantum/operations.ql b/cpp/ql/test/experimental/library-tests/quantum/nodes.ql similarity index 66% rename from cpp/ql/test/experimental/library-tests/quantum/operations.ql rename to cpp/ql/test/experimental/library-tests/quantum/nodes.ql index 171387e4e6d..83858a7d60d 100644 --- a/cpp/ql/test/experimental/library-tests/quantum/operations.ql +++ b/cpp/ql/test/experimental/library-tests/quantum/nodes.ql @@ -1,5 +1,5 @@ import cpp import experimental.quantum.Language -from Crypto::OperationNode n +from Crypto::NodeBase n select n diff --git a/cpp/ql/test/experimental/library-tests/quantum/operation_algorithms.expected b/cpp/ql/test/experimental/library-tests/quantum/operation_algorithms.expected deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/cpp/ql/test/experimental/library-tests/quantum/operation_algorithms.ql b/cpp/ql/test/experimental/library-tests/quantum/operation_algorithms.ql deleted file mode 100644 index 5635f3ab316..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/operation_algorithms.ql +++ /dev/null @@ -1,5 +0,0 @@ -import cpp -import experimental.quantum.Language - -from Crypto::OperationNode n -select n, n.getAnAlgorithmOrGenericSource() diff --git a/cpp/ql/test/experimental/library-tests/quantum/operations.expected b/cpp/ql/test/experimental/library-tests/quantum/operations.expected deleted file mode 100644 index 73b0af3ad5f..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/operations.expected +++ /dev/null @@ -1,16 +0,0 @@ -| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:35:54:35:62 | Message | openssl_basic.c:35:36:35:45 | KeyOperationOutput | openssl_basic.c:23:62:23:65 | Key | openssl_basic.c:23:68:23:71 | Nonce | openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | Encrypt | -| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:35:54:35:62 | Message | openssl_basic.c:35:36:35:45 | KeyOperationOutput | openssl_basic.c:23:62:23:65 | Key | openssl_basic.c:31:54:31:55 | Nonce | openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | Encrypt | -| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:35:54:35:62 | Message | openssl_basic.c:35:36:35:45 | KeyOperationOutput | openssl_basic.c:31:49:31:51 | Key | openssl_basic.c:23:68:23:71 | Nonce | openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | Encrypt | -| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:35:54:35:62 | Message | openssl_basic.c:35:36:35:45 | KeyOperationOutput | openssl_basic.c:31:49:31:51 | Key | openssl_basic.c:31:54:31:55 | Nonce | openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | Encrypt | -| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:35:54:35:62 | Message | openssl_basic.c:40:38:40:53 | KeyOperationOutput | openssl_basic.c:23:62:23:65 | Key | openssl_basic.c:23:68:23:71 | Nonce | openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | Encrypt | -| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:35:54:35:62 | Message | openssl_basic.c:40:38:40:53 | KeyOperationOutput | openssl_basic.c:23:62:23:65 | Key | openssl_basic.c:31:54:31:55 | Nonce | openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | Encrypt | -| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:35:54:35:62 | Message | openssl_basic.c:40:38:40:53 | KeyOperationOutput | openssl_basic.c:31:49:31:51 | Key | openssl_basic.c:23:68:23:71 | Nonce | openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | Encrypt | -| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:35:54:35:62 | Message | openssl_basic.c:40:38:40:53 | KeyOperationOutput | openssl_basic.c:31:49:31:51 | Key | openssl_basic.c:31:54:31:55 | Nonce | openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | Encrypt | -| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:81:49:81:58 | Message | openssl_basic.c:81:32:81:40 | KeyOperationOutput | openssl_basic.c:69:58:69:61 | Key | openssl_basic.c:69:64:69:67 | Nonce | openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | Decrypt | -| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:81:49:81:58 | Message | openssl_basic.c:81:32:81:40 | KeyOperationOutput | openssl_basic.c:69:58:69:61 | Key | openssl_basic.c:77:50:77:51 | Nonce | openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | Decrypt | -| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:81:49:81:58 | Message | openssl_basic.c:81:32:81:40 | KeyOperationOutput | openssl_basic.c:77:45:77:47 | Key | openssl_basic.c:69:64:69:67 | Nonce | openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | Decrypt | -| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:81:49:81:58 | Message | openssl_basic.c:81:32:81:40 | KeyOperationOutput | openssl_basic.c:77:45:77:47 | Key | openssl_basic.c:77:50:77:51 | Nonce | openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | Decrypt | -| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:81:49:81:58 | Message | openssl_basic.c:90:36:90:50 | KeyOperationOutput | openssl_basic.c:69:58:69:61 | Key | openssl_basic.c:69:64:69:67 | Nonce | openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | Decrypt | -| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:81:49:81:58 | Message | openssl_basic.c:90:36:90:50 | KeyOperationOutput | openssl_basic.c:69:58:69:61 | Key | openssl_basic.c:77:50:77:51 | Nonce | openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | Decrypt | -| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:81:49:81:58 | Message | openssl_basic.c:90:36:90:50 | KeyOperationOutput | openssl_basic.c:77:45:77:47 | Key | openssl_basic.c:69:64:69:67 | Nonce | openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | Decrypt | -| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:81:49:81:58 | Message | openssl_basic.c:90:36:90:50 | KeyOperationOutput | openssl_basic.c:77:45:77:47 | Key | openssl_basic.c:77:50:77:51 | Nonce | openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | Decrypt | diff --git a/cpp/ql/test/experimental/library-tests/quantum/signature_operations.expected b/cpp/ql/test/experimental/library-tests/quantum/signature_operations.expected deleted file mode 100644 index 165c200bdc7..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/signature_operations.expected +++ /dev/null @@ -1,12 +0,0 @@ -| openssl_signature.c:89:9:89:21 | SignOperation | openssl_signature.c:79:32:79:38 | Message | openssl_signature.c:89:31:89:40 | SignatureOutput | openssl_signature.c:89:53:89:56 | Key | openssl_signature.c:552:35:552:46 | KeyOperationAlgorithm | Sign | -| openssl_signature.c:89:9:89:21 | SignOperation | openssl_signature.c:79:32:79:38 | Message | openssl_signature.c:89:31:89:40 | SignatureOutput | openssl_signature.c:89:53:89:56 | Key | openssl_signature.c:574:50:574:54 | KeyOperationAlgorithm | Sign | -| openssl_signature.c:89:9:89:21 | SignOperation | openssl_signature.c:84:28:84:36 | Message | openssl_signature.c:89:31:89:40 | SignatureOutput | openssl_signature.c:89:53:89:56 | Key | openssl_signature.c:552:35:552:46 | KeyOperationAlgorithm | Sign | -| openssl_signature.c:89:9:89:21 | SignOperation | openssl_signature.c:84:28:84:36 | Message | openssl_signature.c:89:31:89:40 | SignatureOutput | openssl_signature.c:89:53:89:56 | Key | openssl_signature.c:574:50:574:54 | KeyOperationAlgorithm | Sign | -| openssl_signature.c:151:9:151:27 | SignOperation | openssl_signature.c:143:38:143:44 | Message | openssl_signature.c:151:37:151:46 | SignatureOutput | openssl_signature.c:142:52:142:55 | Key | openssl_signature.c:552:35:552:46 | KeyOperationAlgorithm | Sign | -| openssl_signature.c:151:9:151:27 | SignOperation | openssl_signature.c:143:38:143:44 | Message | openssl_signature.c:151:37:151:46 | SignatureOutput | openssl_signature.c:142:52:142:55 | Key | openssl_signature.c:574:50:574:54 | KeyOperationAlgorithm | Sign | -| openssl_signature.c:213:9:213:27 | SignOperation | openssl_signature.c:205:38:205:44 | Message | openssl_signature.c:213:37:213:46 | SignatureOutput | openssl_signature.c:199:57:199:60 | Key | openssl_signature.c:552:35:552:46 | KeyOperationAlgorithm | Sign | -| openssl_signature.c:213:9:213:27 | SignOperation | openssl_signature.c:205:38:205:44 | Message | openssl_signature.c:213:37:213:46 | SignatureOutput | openssl_signature.c:199:57:199:60 | Key | openssl_signature.c:574:50:574:54 | KeyOperationAlgorithm | Sign | -| openssl_signature.c:279:9:279:21 | SignOperation | openssl_signature.c:279:60:279:65 | Message | openssl_signature.c:279:33:279:42 | SignatureOutput | openssl_signature.c:269:39:269:42 | Key | openssl_signature.c:552:35:552:46 | KeyOperationAlgorithm | Sign | -| openssl_signature.c:279:9:279:21 | SignOperation | openssl_signature.c:279:60:279:65 | Message | openssl_signature.c:279:33:279:42 | SignatureOutput | openssl_signature.c:269:39:269:42 | Key | openssl_signature.c:574:50:574:54 | KeyOperationAlgorithm | Sign | -| openssl_signature.c:343:9:343:35 | SignOperation | openssl_signature.c:335:48:335:54 | Message | openssl_signature.c:343:47:343:56 | SignatureOutput | openssl_signature.c:330:39:330:42 | Key | openssl_signature.c:711:60:711:71 | KeyOperationAlgorithm | Sign | -| openssl_signature.c:343:9:343:35 | SignOperation | openssl_signature.c:335:48:335:54 | Message | openssl_signature.c:343:47:343:56 | SignatureOutput | openssl_signature.c:330:39:330:42 | Key | openssl_signature.c:767:60:767:64 | KeyOperationAlgorithm | Sign | \ No newline at end of file diff --git a/cpp/ql/test/experimental/library-tests/quantum/signature_operations.ql b/cpp/ql/test/experimental/library-tests/quantum/signature_operations.ql deleted file mode 100644 index 4cadbc03241..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/signature_operations.ql +++ /dev/null @@ -1,6 +0,0 @@ -import cpp -import experimental.quantum.Language - -from Crypto::SignatureOperationNode n -select n, n.getAnInputArtifact(), n.getAnOutputArtifact(), n.getAKey(), - n.getAnAlgorithmOrGenericSource(), n.getKeyOperationSubtype() diff --git a/shared/quantum/codeql/quantum/experimental/Model.qll b/shared/quantum/codeql/quantum/experimental/Model.qll index 8ee89702d76..61540f55ea1 100644 --- a/shared/quantum/codeql/quantum/experimental/Model.qll +++ b/shared/quantum/codeql/quantum/experimental/Model.qll @@ -2142,6 +2142,14 @@ module CryptographyBase Input> { key = "Key" and if exists(this.getAKey()) then result = this.getAKey() else result = this } + + override predicate properties(string key, string value, Location location) { + super.properties(key, value, location) + or + key = "KeyOperationSubtype" and + value = this.getKeyOperationSubtype().toString() and + location = this.getLocation() + } } class CipherOperationNode extends KeyOperationNode { From 20e2c7cefd0139ce096e7accd4724de77e554197 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Thu, 12 Jun 2025 00:41:15 -0400 Subject: [PATCH 036/150] Crypto: Overhaul/refactor of EVPInitialzers. Update cipher operation to disallow null key and IV on initializers (typically do not represent an actual key or IV). --- .../experimental/quantum/OpenSSL/AvcFlow.qll | 19 +++ .../OpenSSL/Operations/EVPCipherOperation.qll | 92 ++++++-------- .../OpenSSL/Operations/EVPHashOperation.qll | 20 ++-- .../OpenSSL/Operations/EVPKeyGenOperation.qll | 13 +- .../Operations/EVPPKeyCtxInitializer.qll | 57 ++++++--- .../Operations/OpenSSLOperationBase.qll | 112 ++++++++++++------ .../library-tests/quantum/node_edges.expected | 8 -- .../quantum/node_properties.expected | 2 - .../library-tests/quantum/nodes.expected | 4 - 9 files changed, 186 insertions(+), 141 deletions(-) create mode 100644 cpp/ql/lib/experimental/quantum/OpenSSL/AvcFlow.qll diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AvcFlow.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AvcFlow.qll new file mode 100644 index 00000000000..204a92ab796 --- /dev/null +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AvcFlow.qll @@ -0,0 +1,19 @@ +import semmle.code.cpp.dataflow.new.DataFlow +import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers + +/** + * Flows from algorithm values to operations, specific to OpenSSL + */ +module AvcToCallArgConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + exists(OpenSSLAlgorithmValueConsumer c | c.getResultNode() = source) + } + + /** + * Trace to any call accepting the algorithm. + * NOTE: users must restrict this set to the operations they are interested in. + */ + predicate isSink(DataFlow::Node sink) { exists(Call c | c.getAnArgument() = sink.asExpr()) } +} + +module AvcToCallArgFlow = DataFlow::Global; diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherOperation.qll index 89fcc1ccda6..cedd2edc8c4 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherOperation.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherOperation.qll @@ -3,60 +3,31 @@ private import experimental.quantum.OpenSSL.CtxFlow private import OpenSSLOperationBase private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers -module EncValToInitEncArgConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source.asExpr().getValue().toInt() in [0, 1] } - - predicate isSink(DataFlow::Node sink) { - exists(EVP_Cipher_Initializer initCall | sink.asExpr() = initCall.getOperationSubtypeArg()) - } -} - -module EncValToInitEncArgFlow = DataFlow::Global; - -int getEncConfigValue(Expr e) { - exists(EVP_Cipher_Initializer initCall | e = initCall.getOperationSubtypeArg()) and - exists(DataFlow::Node a, DataFlow::Node b | - EncValToInitEncArgFlow::flow(a, b) and b.asExpr() = e and result = a.asExpr().getValue().toInt() - ) -} - -bindingset[i] -Crypto::KeyOperationSubtype intToCipherOperationSubtype(int i) { - if i = 0 - then result instanceof Crypto::TEncryptMode - else - if i = 1 - then result instanceof Crypto::TDecryptMode - else result instanceof Crypto::TUnknownKeyOperationMode -} - // TODO: need to add key consumer abstract class EVP_Cipher_Initializer extends EvpKeyOperationSubtypeInitializer, - EvpAlgorithmInitializer, EvpKeyInitializer, EvpIVInitializer + EvpPrimaryAlgorithmInitializer, EvpKeyInitializer, EvpIVInitializer { - override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } + override CtxPointerSource getContext() { result = this.(Call).getArgument(0) } override Expr getAlgorithmArg() { result = this.(Call).getArgument(1) } - - abstract Expr getOperationSubtypeArg(); - - override Crypto::KeyOperationSubtype getKeyOperationSubtype() { - if this.(Call).getTarget().getName().toLowerCase().matches("%encrypt%") - then result instanceof Crypto::TEncryptMode - else - if this.(Call).getTarget().getName().toLowerCase().matches("%decrypt%") - then result instanceof Crypto::TDecryptMode - else - if exists(getEncConfigValue(this.getOperationSubtypeArg())) - then result = intToCipherOperationSubtype(getEncConfigValue(this.getOperationSubtypeArg())) - else result instanceof Crypto::TUnknownKeyOperationMode - } } abstract class EVP_EX_Initializer extends EVP_Cipher_Initializer { - override Expr getKeyArg() { result = this.(Call).getArgument(3) } + override Expr getKeyArg() { + // Null key indicates the key is not actually set + // This pattern can occur during a multi-step initialization + // TODO/Note: not flowing 0 to the sink, assuming a direct use of NULL for now + result = this.(Call).getArgument(3) and + (exists(result.getValue()) implies result.getValue().toInt() != 0) + } - override Expr getIVArg() { result = this.(Call).getArgument(4) } + override Expr getIVArg() { + // Null IV indicates the IV is not actually set + // This occurs given that setting the IV sometimes requires first setting the IV size. + // TODO/Note: not flowing 0 to the sink, assuming a direct use of NULL for now + result = this.(Call).getArgument(4) and + (exists(result.getValue()) implies result.getValue().toInt() != 0) + } } abstract class EVP_EX2_Initializer extends EVP_Cipher_Initializer { @@ -65,19 +36,26 @@ abstract class EVP_EX2_Initializer extends EVP_Cipher_Initializer { override Expr getIVArg() { result = this.(Call).getArgument(3) } } -class EVP_Cipher_EX_Init_Call extends EVP_EX_Initializer { - EVP_Cipher_EX_Init_Call() { +class EvpCipherEXInitCall extends EVP_EX_Initializer { + EvpCipherEXInitCall() { this.(Call).getTarget().getName() in [ "EVP_EncryptInit_ex", "EVP_DecryptInit_ex", "EVP_CipherInit_ex" ] } - override Expr getOperationSubtypeArg() { + override Expr getKeyOperationSubtypeArg() { + // NOTE: for EncryptInit and DecryptInit there is no subtype arg + // the subtype is determined automatically by the initializer based on the operation name this.(Call).getTarget().getName().toLowerCase().matches("%cipherinit%") and result = this.(Call).getArgument(5) } } +// if this.(Call).getTarget().getName().toLowerCase().matches("%encrypt%") +// then result instanceof Crypto::TEncryptMode +// else +// if this.(Call).getTarget().getName().toLowerCase().matches("%decrypt%") +// then result instanceof Crypto::TDecryptMode class EVP_Cipher_EX2_or_Simple_Init_Call extends EVP_EX2_Initializer { EVP_Cipher_EX2_or_Simple_Init_Call() { this.(Call).getTarget().getName() in [ @@ -86,7 +64,7 @@ class EVP_Cipher_EX2_or_Simple_Init_Call extends EVP_EX2_Initializer { ] } - override Expr getOperationSubtypeArg() { + override Expr getKeyOperationSubtypeArg() { this.(Call).getTarget().getName().toLowerCase().matches("%cipherinit%") and result = this.(Call).getArgument(4) } @@ -95,7 +73,7 @@ class EVP_Cipher_EX2_or_Simple_Init_Call extends EVP_EX2_Initializer { class EVP_CipherInit_SKEY_Call extends EVP_EX2_Initializer { EVP_CipherInit_SKEY_Call() { this.(Call).getTarget().getName() in ["EVP_CipherInit_SKEY"] } - override Expr getOperationSubtypeArg() { result = this.(Call).getArgument(5) } + override Expr getKeyOperationSubtypeArg() { result = this.(Call).getArgument(5) } } class EVP_Cipher_Update_Call extends EvpUpdate { @@ -105,7 +83,7 @@ class EVP_Cipher_Update_Call extends EvpUpdate { ] } - override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } + override CtxPointerSource getContext() { result = this.(Call).getArgument(0) } override Expr getInputArg() { result = this.(Call).getArgument(3) } @@ -154,10 +132,10 @@ class EVP_Cipher_Call extends EvpOperation, EVP_Cipher_Operation { override Expr getInputArg() { result = this.(Call).getArgument(2) } override Expr getAlgorithmArg() { - result = this.getInitCall().(EvpAlgorithmInitializer).getAlgorithmArg() + result = this.getInitCall().(EvpPrimaryAlgorithmInitializer).getAlgorithmArg() } - override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } + override CtxPointerSource getContext() { result = this.(Call).getArgument(0) } } class EVP_Cipher_Final_Call extends EVPFinal, EVP_Cipher_Operation { @@ -178,10 +156,10 @@ class EVP_Cipher_Final_Call extends EVPFinal, EVP_Cipher_Operation { } override Expr getAlgorithmArg() { - result = this.getInitCall().(EvpAlgorithmInitializer).getAlgorithmArg() + result = this.getInitCall().(EvpPrimaryAlgorithmInitializer).getAlgorithmArg() } - override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } + override CtxPointerSource getContext() { result = this.(Call).getArgument(0) } } /** @@ -195,9 +173,9 @@ class Evp_PKey_Cipher_Operation extends EVP_Cipher_Operation { override Expr getInputArg() { result = this.(Call).getArgument(3) } - override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } + override CtxPointerSource getContext() { result = this.(Call).getArgument(0) } override Expr getAlgorithmArg() { - result = this.getInitCall().(EvpAlgorithmInitializer).getAlgorithmArg() + result = this.getInitCall().(EvpPrimaryAlgorithmInitializer).getAlgorithmArg() } } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashOperation.qll index cfa6ad02bc9..d1d8670cc7c 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashOperation.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashOperation.qll @@ -7,9 +7,7 @@ private import experimental.quantum.OpenSSL.CtxFlow private import OpenSSLOperationBase private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers -abstract class EVP_Hash_Initializer extends EvpAlgorithmInitializer { } - -class EVP_DigestInit_Variant_Calls extends EVP_Hash_Initializer { +class EVP_DigestInit_Variant_Calls extends EvpPrimaryAlgorithmInitializer { EVP_DigestInit_Variant_Calls() { this.(Call).getTarget().getName() in [ "EVP_DigestInit", "EVP_DigestInit_ex", "EVP_DigestInit_ex2" @@ -18,7 +16,7 @@ class EVP_DigestInit_Variant_Calls extends EVP_Hash_Initializer { override Expr getAlgorithmArg() { result = this.(Call).getArgument(1) } - override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } + override CtxPointerSource getContext() { result = this.(Call).getArgument(0) } } class EVP_Digest_Update_Call extends EvpUpdate { @@ -26,7 +24,7 @@ class EVP_Digest_Update_Call extends EvpUpdate { override Expr getInputArg() { result = this.(Call).getArgument(1) } - override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } + override CtxPointerSource getContext() { result = this.(Call).getArgument(0) } } //https://docs.openssl.org/3.0/man3/EVP_DigestInit/#synopsis @@ -35,7 +33,7 @@ class EVP_Q_Digest_Operation extends EvpOperation, Crypto::HashOperationInstance override Expr getAlgorithmArg() { result = this.(Call).getArgument(1) } - override EVP_Hash_Initializer getInitCall() { + override EvpInitializer getInitCall() { // This variant of digest does not use an init // and even if it were used, the init would be ignored/undefined none() @@ -53,18 +51,18 @@ class EVP_Q_Digest_Operation extends EvpOperation, Crypto::HashOperationInstance result = EvpOperation.super.getInputConsumer() } - override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } + override CtxPointerSource getContext() { result = this.(Call).getArgument(0) } } class EVP_Digest_Operation extends EvpOperation, Crypto::HashOperationInstance { EVP_Digest_Operation() { this.(Call).getTarget().getName() = "EVP_Digest" } // There is no context argument for this function - override CtxPointerSource getContextArg() { none() } + override CtxPointerSource getContext() { none() } override Expr getAlgorithmArg() { result = this.(Call).getArgument(4) } - override EVP_Hash_Initializer getInitCall() { + override EvpPrimaryAlgorithmInitializer getInitCall() { // This variant of digest does not use an init // and even if it were used, the init would be ignored/undefined none() @@ -90,7 +88,7 @@ class EVP_Digest_Final_Call extends EVPFinal, Crypto::HashOperationInstance { ] } - override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } + override CtxPointerSource getContext() { result = this.(Call).getArgument(0) } override Expr getOutputArg() { result = this.(Call).getArgument(1) } @@ -103,6 +101,6 @@ class EVP_Digest_Final_Call extends EVPFinal, Crypto::HashOperationInstance { } override Expr getAlgorithmArg() { - result = this.getInitCall().(EvpAlgorithmInitializer).getAlgorithmArg() + result = this.getInitCall().(EvpPrimaryAlgorithmInitializer).getAlgorithmArg() } } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPKeyGenOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPKeyGenOperation.qll index 7dfb4c68db7..69be86fad1e 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPKeyGenOperation.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPKeyGenOperation.qll @@ -4,7 +4,7 @@ private import OpenSSLOperationBase private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers private import semmle.code.cpp.dataflow.new.DataFlow -class EVPKeyGenInitialize extends EvpAlgorithmInitializer { +class EVPKeyGenInitialize extends EvpPrimaryAlgorithmInitializer { EVPKeyGenInitialize() { this.(Call).getTarget().getName() in [ "EVP_PKEY_keygen_init", @@ -14,10 +14,13 @@ class EVPKeyGenInitialize extends EvpAlgorithmInitializer { /** * The algorithm is encoded through the context argument. + * The context may be directly created from an algorithm consumer, + * or from a new operation off of a prior key. Either way, + * we will treat this argument as the algorithm argument. */ - override Expr getAlgorithmArg() { result = this.getContextArg() } + override Expr getAlgorithmArg() { result = this.getContext() } - override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } + override CtxPointerSource getContext() { result = this.(Call).getArgument(0) } } class EVPKeyGenOperation extends EVPFinal, Crypto::KeyGenerationOperationInstance { @@ -31,13 +34,13 @@ class EVPKeyGenOperation extends EVPFinal, Crypto::KeyGenerationOperationInstanc keyResultNode.asDefiningArgument() = this.(Call).getArgument(1) } - override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } + override CtxPointerSource getContext() { result = this.(Call).getArgument(0) } override Expr getAlgorithmArg() { this.(Call).getTarget().getName() = "EVP_PKEY_Q_keygen" and result = this.(Call).getArgument(0) or - result = this.getInitCall().(EvpAlgorithmInitializer).getAlgorithmArg() + result = this.getInitCall().(EvpPrimaryAlgorithmInitializer).getAlgorithmArg() } override Crypto::KeyArtifactType getOutputKeyType() { result = Crypto::TAsymmetricKeyType() } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPPKeyCtxInitializer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPPKeyCtxInitializer.qll index 8a263db5b49..1c48d6f8865 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPPKeyCtxInitializer.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPPKeyCtxInitializer.qll @@ -1,6 +1,8 @@ /** * Initializers for EVP PKey - * including https://docs.openssl.org/3.0/man3/EVP_PKEY_CTX_ctrl/ + * including: + * https://docs.openssl.org/3.0/man3/EVP_PKEY_CTX_ctrl/ + * https://docs.openssl.org/3.0/man3/EVP_EncryptInit/#synopsis */ import cpp @@ -31,26 +33,40 @@ class EVPNewKeyCtx extends EvpKeyInitializer { /** * Context is returned */ - override CtxPointerSource getContextArg() { result = this } + override CtxPointerSource getContext() { result = this } override Expr getKeyArg() { result = keyArg } - //TODO: do we specify the algorithm from the key as well? } -class EvpCtxSetAlgorithmInitializer extends EvpAlgorithmInitializer { - EvpCtxSetAlgorithmInitializer() { - this.(Call).getTarget().getName() in [ - "EVP_PKEY_CTX_set_signature_md", "EVP_PKEY_CTX_set_rsa_mgf1_md_name", - "EVP_PKEY_CTX_set_rsa_mgf1_md", "EVP_PKEY_CTX_set_rsa_oaep_md_name", - "EVP_PKEY_CTX_set_rsa_oaep_md", "EVP_PKEY_CTX_set_dsa_paramgen_md", - "EVP_PKEY_CTX_set_dsa_paramgen_md_props", "EVP_PKEY_CTX_set_dh_kdf_md", - "EVP_PKEY_CTX_set_ec_paramgen_curve_nid", "EVP_PKEY_CTX_set_ecdh_kdf_md" - ] +/** + * A call to "EVP_PKEY_CTX_set_ec_paramgen_curve_nid". + * Note that this is a primary algorithm as the pattenr is to specify an "EC" context, + * then set the specific curve later. Although the curve is set later, it is the primary + * algorithm intended for an operation. + */ +class EvpCtxSetPrimaryAlgorithmInitializer extends EvpPrimaryAlgorithmInitializer { + EvpCtxSetPrimaryAlgorithmInitializer() { + this.(Call).getTarget().getName() = "EVP_PKEY_CTX_set_ec_paramgen_curve_nid" } override Expr getAlgorithmArg() { result = this.(Call).getArgument(1) } - override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } + override CtxPointerSource getContext() { result = this.(Call).getArgument(0) } +} + +class EvpCtxSetHashAlgorithmInitializer extends EvpHashAlgorithmInitializer { + EvpCtxSetHashAlgorithmInitializer() { + this.(Call).getTarget().getName() in [ + "EVP_PKEY_CTX_set_signature_md", "EVP_PKEY_CTX_set_rsa_mgf1_md_name", + "EVP_PKEY_CTX_set_rsa_mgf1_md", "EVP_PKEY_CTX_set_rsa_oaep_md_name", + "EVP_PKEY_CTX_set_rsa_oaep_md", "EVP_PKEY_CTX_set_dsa_paramgen_md", + "EVP_PKEY_CTX_set_dh_kdf_md", "EVP_PKEY_CTX_set_ecdh_kdf_md" + ] + } + + override Expr getHashAlgorithmArg() { result = this.(Call).getArgument(1) } + + override CtxPointerSource getContext() { result = this.(Call).getArgument(0) } } class EvpCtxSetKeySizeInitializer extends EvpKeySizeInitializer { @@ -58,7 +74,8 @@ class EvpCtxSetKeySizeInitializer extends EvpKeySizeInitializer { EvpCtxSetKeySizeInitializer() { this.(Call).getTarget().getName() in [ - "EVP_PKEY_CTX_set_rsa_keygen_bits", "EVP_PKEY_CTX_set_dsa_paramgen_bits" + "EVP_PKEY_CTX_set_rsa_keygen_bits", "EVP_PKEY_CTX_set_dsa_paramgen_bits", + "EVP_CIPHER_CTX_set_key_length" ] and arg = this.(Call).getArgument(1) or @@ -68,7 +85,7 @@ class EvpCtxSetKeySizeInitializer extends EvpKeySizeInitializer { override Expr getKeySizeArg() { result = arg } - override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } + override CtxPointerSource getContext() { result = this.(Call).getArgument(0) } } class EvpCtxSetKeyInitializer extends EvpKeyInitializer { @@ -76,17 +93,19 @@ class EvpCtxSetKeyInitializer extends EvpKeyInitializer { override Expr getKeyArg() { result = this.(Call).getArgument(1) } - override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } + override CtxPointerSource getContext() { result = this.(Call).getArgument(0) } } class EvpCtxSetPaddingInitializer extends EvpPaddingInitializer { EvpCtxSetPaddingInitializer() { - this.(Call).getTarget().getName() = "EVP_PKEY_CTX_set_rsa_padding" + this.(Call).getTarget().getName() in [ + "EVP_PKEY_CTX_set_rsa_padding", "EVP_CIPHER_CTX_set_padding" + ] } override Expr getPaddingArg() { result = this.(Call).getArgument(1) } - override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } + override CtxPointerSource getContext() { result = this.(Call).getArgument(0) } } class EvpCtxSetSaltLengthInitializer extends EvpSaltLengthInitializer { @@ -96,5 +115,5 @@ class EvpCtxSetSaltLengthInitializer extends EvpSaltLengthInitializer { override Expr getSaltLengthArg() { result = this.(Call).getArgument(1) } - override CtxPointerSource getContextArg() { result = this.(Call).getArgument(0) } + override CtxPointerSource getContext() { result = this.(Call).getArgument(0) } } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll index ecec99586a5..70150e0b6be 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll @@ -1,4 +1,5 @@ private import experimental.quantum.Language +private import experimental.quantum.OpenSSL.AvcFlow private import experimental.quantum.OpenSSL.CtxFlow private import experimental.quantum.OpenSSL.KeyFlow private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers @@ -7,6 +8,18 @@ private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgor // even if only importing the operation by itself. import EVPPKeyCtxInitializer +module EncValToInitEncArgConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { source.asExpr().getValue().toInt() in [0, 1] } + + predicate isSink(DataFlow::Node sink) { + exists(EvpKeyOperationSubtypeInitializer initCall | + sink.asExpr() = initCall.getKeyOperationSubtypeArg() + ) + } +} + +module EncValToInitEncArgFlow = DataFlow::Global; + /** * A class for all OpenSSL operations. */ @@ -24,7 +37,7 @@ abstract class OpenSSLOperation extends Crypto::OperationInstance instanceof Cal * Algorithm is specified in initialization call or is implicitly established by the key. */ override Crypto::AlgorithmValueConsumer getAnAlgorithmValueConsumer() { - AlgGetterToArgFlow::flow(result.(OpenSSLAlgorithmValueConsumer).getResultNode(), + AvcToCallArgFlow::flow(result.(OpenSSLAlgorithmValueConsumer).getResultNode(), DataFlow::exprNode(this.getAlgorithmArg())) } } @@ -38,29 +51,58 @@ abstract class OpenSSLOperation extends Crypto::OperationInstance instanceof Cal */ abstract class EvpInitializer extends Call { /** - * Gets the context argument that ties together initialization, updates and/or final calls. - * The context argument is the context coming into the initializer and is the output as well. + * Gets the context argument or return that ties together initialization, updates and/or final calls. + * The context is the context coming into the initializer and is the output as well. * This is assumed to be the same argument. */ - abstract CtxPointerSource getContextArg(); + abstract CtxPointerSource getContext(); } abstract class EvpKeySizeInitializer extends EvpInitializer { abstract Expr getKeySizeArg(); } -/** - * Unlike many initializers, this returns the key operation subtype immediately, not the arg. - * This is a design choice in the overall model, in that the model will not do any tracking - * for the subtype argument in any automated fashion. Users are currently expected to find the - * subtype argument manually and associate a type directly. - */ abstract class EvpKeyOperationSubtypeInitializer extends EvpInitializer { - abstract Crypto::KeyOperationSubtype getKeyOperationSubtype(); + abstract Expr getKeyOperationSubtypeArg(); + + private Crypto::KeyOperationSubtype intToCipherOperationSubtype(int i) { + i = 0 and + result instanceof Crypto::TEncryptMode + or + i = 1 and result instanceof Crypto::TDecryptMode + } + + Crypto::KeyOperationSubtype getKeyOperationSubtype() { + exists(DataFlow::Node a, DataFlow::Node b | + EncValToInitEncArgFlow::flow(a, b) and + b.asExpr() = this.getKeyOperationSubtypeArg() and + result = this.intToCipherOperationSubtype(a.asExpr().getValue().toInt()) + ) + or + // Infer the subtype from the initialization call, and ignore the argument + this.(Call).getTarget().getName().toLowerCase().matches("%encrypt%") and + result instanceof Crypto::TEncryptMode + or + this.(Call).getTarget().getName().toLowerCase().matches("%decrypt%") and + result instanceof Crypto::TDecryptMode + } } -abstract class EvpAlgorithmInitializer extends EvpInitializer { +/** + * An primary algorithm initializer initializes the primary algorithm for a given operation. + * For example, for a signing operation, the algorithm initializer may initialize algorithms + * like RSA. Other algorithsm may be initialized on an operation, as part of a larger + * operation/protocol. For example, hashing operations on signing operations; however, + * these are not the primary algorithm. Any other algorithms initialized on an operation + * require a specialized initializer, such as EvpHashAlgorithmInitializer. + */ +abstract class EvpPrimaryAlgorithmInitializer extends EvpInitializer { abstract Expr getAlgorithmArg(); + + Crypto::AlgorithmValueConsumer getAlgorithmValueConsumer() { + AvcToCallArgFlow::flow(result.(OpenSSLAlgorithmValueConsumer).getResultNode(), + DataFlow::exprNode(this.getAlgorithmArg())) + } } abstract class EvpKeyInitializer extends EvpInitializer { @@ -72,10 +114,10 @@ abstract class EvpKeyInitializer extends EvpInitializer { * the key. Extend any instance of key initializer provide initialization * of the algorithm and key size from the key. */ -class EvpInitializerThroughKey extends EvpAlgorithmInitializer, EvpKeySizeInitializer instanceof EvpKeyInitializer +class EvpInitializerThroughKey extends EvpPrimaryAlgorithmInitializer, EvpKeySizeInitializer instanceof EvpKeyInitializer { //TODO: charpred that traces from creation to key arg, grab creator - override CtxPointerSource getContextArg() { result = EvpKeyInitializer.super.getContextArg() } + override CtxPointerSource getContext() { result = EvpKeyInitializer.super.getContext() } override Expr getAlgorithmArg() { result = @@ -109,6 +151,15 @@ abstract class EvpSaltLengthInitializer extends EvpInitializer { abstract Expr getSaltLengthArg(); } +abstract class EvpHashAlgorithmInitializer extends EvpInitializer { + abstract Expr getHashAlgorithmArg(); + + Crypto::AlgorithmValueConsumer getHashAlgorithmValueConsumer() { + AvcToCallArgFlow::flow(result.(OpenSSLAlgorithmValueConsumer).getResultNode(), + DataFlow::exprNode(this.getHashAlgorithmArg())) + } +} + /** * A Call to an "update" function. * These are not operations in the sense of Crypto::OperationInstance, @@ -120,7 +171,7 @@ abstract class EvpUpdate extends Call { /** * Gets the context argument that ties together initialization, updates and/or final calls. */ - abstract CtxPointerSource getContextArg(); + abstract CtxPointerSource getContext(); /** * Update calls always have some input data like plaintext or message digest. @@ -133,23 +184,6 @@ abstract class EvpUpdate extends Call { Expr getOutputArg() { none() } } -/** - * Flows from algorithm values to operations, specific to OpenSSL - */ -module AlgGetterToArgConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { - exists(OpenSSLAlgorithmValueConsumer c | c.getResultNode() = source) - } - - /** - * Trace to any call accepting the algorithm. - * NOTE: users must restrict this set to the operations they are interested in. - */ - predicate isSink(DataFlow::Node sink) { exists(Call c | c.getAnArgument() = sink.asExpr()) } -} - -module AlgGetterToArgFlow = DataFlow::Global; - /** * The base class for all operations of the EVP API. * This captures one-shot APIs (with and without an initilizer call) and final calls. @@ -159,7 +193,7 @@ abstract class EvpOperation extends OpenSSLOperation { /** * Gets the context argument that ties together initialization, updates and/or final calls. */ - abstract CtxPointerSource getContextArg(); + abstract CtxPointerSource getContext(); /** * Some input data like plaintext or message digest. @@ -175,7 +209,7 @@ abstract class EvpOperation extends OpenSSLOperation { /** * Finds the initialization call, may be none. */ - EvpInitializer getInitCall() { ctxSrcToSrcFlow(result.getContextArg(), this.getContextArg()) } + EvpInitializer getInitCall() { ctxSrcToSrcFlow(result.getContext(), this.getContext()) } Crypto::ArtifactOutputDataFlowNode getOutputArtifact() { result = DataFlow::exprNode(this.getOutputArg()) @@ -200,7 +234,7 @@ abstract class EVPFinal extends EvpOperation { /** * All update calls that were executed before this final call. */ - EvpUpdate getUpdateCalls() { ctxSrcToSrcFlow(result.getContextArg(), this.getContextArg()) } + EvpUpdate getUpdateCalls() { ctxSrcToSrcFlow(result.getContext(), this.getContext()) } /** * Gets the input data provided to all update calls. @@ -214,3 +248,11 @@ abstract class EVPFinal extends EvpOperation { */ override Expr getOutputArg() { result = this.getUpdateCalls().getOutputArg() } } +// Expr getAlgorithmArgFromContext(Expr contextArg) { +// exists(EVPPKeyAlgorithmConsumer source | +// result = source.getValueArgExpr() and +// ctxFlowsToCtxArg(source.getResultNode().asExpr(), ctx) +// ) +// or +// result = getAlgorithmFromKey(getKeyFromCtx(ctx)) +// } diff --git a/cpp/ql/test/experimental/library-tests/quantum/node_edges.expected b/cpp/ql/test/experimental/library-tests/quantum/node_edges.expected index 08f5653722c..daeb0bf1efb 100644 --- a/cpp/ql/test/experimental/library-tests/quantum/node_edges.expected +++ b/cpp/ql/test/experimental/library-tests/quantum/node_edges.expected @@ -1,30 +1,22 @@ | openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | Mode | openssl_basic.c:23:37:23:51 | ModeOfOperation | | openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | Padding | openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | -| openssl_basic.c:23:62:23:65 | Key | Source | openssl_basic.c:23:62:23:65 | Key | -| openssl_basic.c:23:68:23:71 | Nonce | Source | openssl_basic.c:23:68:23:71 | Nonce | | openssl_basic.c:31:49:31:51 | Key | Source | openssl_basic.c:179:43:179:76 | Constant | | openssl_basic.c:31:54:31:55 | Nonce | Source | openssl_basic.c:180:42:180:59 | Constant | | openssl_basic.c:35:54:35:62 | Message | Source | openssl_basic.c:181:49:181:87 | Constant | | openssl_basic.c:40:13:40:31 | EncryptOperation | Algorithm | openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | | openssl_basic.c:40:13:40:31 | EncryptOperation | Input | openssl_basic.c:35:54:35:62 | Message | -| openssl_basic.c:40:13:40:31 | EncryptOperation | Key | openssl_basic.c:23:62:23:65 | Key | | openssl_basic.c:40:13:40:31 | EncryptOperation | Key | openssl_basic.c:31:49:31:51 | Key | -| openssl_basic.c:40:13:40:31 | EncryptOperation | Nonce | openssl_basic.c:23:68:23:71 | Nonce | | openssl_basic.c:40:13:40:31 | EncryptOperation | Nonce | openssl_basic.c:31:54:31:55 | Nonce | | openssl_basic.c:40:13:40:31 | EncryptOperation | Output | openssl_basic.c:35:36:35:45 | KeyOperationOutput | | openssl_basic.c:40:13:40:31 | EncryptOperation | Output | openssl_basic.c:40:38:40:53 | KeyOperationOutput | | openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | Mode | openssl_basic.c:69:33:69:47 | ModeOfOperation | | openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | Padding | openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | -| openssl_basic.c:69:58:69:61 | Key | Source | openssl_basic.c:69:58:69:61 | Key | -| openssl_basic.c:69:64:69:67 | Nonce | Source | openssl_basic.c:69:64:69:67 | Nonce | | openssl_basic.c:77:45:77:47 | Key | Source | openssl_basic.c:179:43:179:76 | Constant | | openssl_basic.c:77:50:77:51 | Nonce | Source | openssl_basic.c:180:42:180:59 | Constant | | openssl_basic.c:81:49:81:58 | Message | Source | openssl_basic.c:81:49:81:58 | Message | | openssl_basic.c:90:11:90:29 | DecryptOperation | Algorithm | openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | | openssl_basic.c:90:11:90:29 | DecryptOperation | Input | openssl_basic.c:81:49:81:58 | Message | -| openssl_basic.c:90:11:90:29 | DecryptOperation | Key | openssl_basic.c:69:58:69:61 | Key | | openssl_basic.c:90:11:90:29 | DecryptOperation | Key | openssl_basic.c:77:45:77:47 | Key | -| openssl_basic.c:90:11:90:29 | DecryptOperation | Nonce | openssl_basic.c:69:64:69:67 | Nonce | | openssl_basic.c:90:11:90:29 | DecryptOperation | Nonce | openssl_basic.c:77:50:77:51 | Nonce | | openssl_basic.c:90:11:90:29 | DecryptOperation | Output | openssl_basic.c:81:32:81:40 | KeyOperationOutput | | openssl_basic.c:90:11:90:29 | DecryptOperation | Output | openssl_basic.c:90:36:90:50 | KeyOperationOutput | diff --git a/cpp/ql/test/experimental/library-tests/quantum/node_properties.expected b/cpp/ql/test/experimental/library-tests/quantum/node_properties.expected index 4f6f2b43660..58a95ec0469 100644 --- a/cpp/ql/test/experimental/library-tests/quantum/node_properties.expected +++ b/cpp/ql/test/experimental/library-tests/quantum/node_properties.expected @@ -4,7 +4,6 @@ | openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | Structure | Block | openssl_basic.c:23:37:23:51 | openssl_basic.c:23:37:23:51 | | openssl_basic.c:23:37:23:51 | ModeOfOperation | Name | GCM | openssl_basic.c:23:37:23:51 | openssl_basic.c:23:37:23:51 | | openssl_basic.c:23:37:23:51 | ModeOfOperation | RawName | EVP_aes_256_gcm | openssl_basic.c:23:37:23:51 | openssl_basic.c:23:37:23:51 | -| openssl_basic.c:23:62:23:65 | Key | KeyType | Unknown | openssl_basic.c:23:62:23:65 | openssl_basic.c:23:62:23:65 | | openssl_basic.c:31:49:31:51 | Key | KeyType | Unknown | openssl_basic.c:31:49:31:51 | openssl_basic.c:31:49:31:51 | | openssl_basic.c:40:13:40:31 | EncryptOperation | KeyOperationSubtype | Encrypt | openssl_basic.c:40:13:40:31 | openssl_basic.c:40:13:40:31 | | openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | KeySize | 256 | openssl_basic.c:69:33:69:47 | openssl_basic.c:69:33:69:47 | @@ -13,7 +12,6 @@ | openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | Structure | Block | openssl_basic.c:69:33:69:47 | openssl_basic.c:69:33:69:47 | | openssl_basic.c:69:33:69:47 | ModeOfOperation | Name | GCM | openssl_basic.c:69:33:69:47 | openssl_basic.c:69:33:69:47 | | openssl_basic.c:69:33:69:47 | ModeOfOperation | RawName | EVP_aes_256_gcm | openssl_basic.c:69:33:69:47 | openssl_basic.c:69:33:69:47 | -| openssl_basic.c:69:58:69:61 | Key | KeyType | Unknown | openssl_basic.c:69:58:69:61 | openssl_basic.c:69:58:69:61 | | openssl_basic.c:77:45:77:47 | Key | KeyType | Unknown | openssl_basic.c:77:45:77:47 | openssl_basic.c:77:45:77:47 | | openssl_basic.c:90:11:90:29 | DecryptOperation | KeyOperationSubtype | Decrypt | openssl_basic.c:90:11:90:29 | openssl_basic.c:90:11:90:29 | | openssl_basic.c:116:38:116:47 | HashAlgorithm | DigestSize | 256 | openssl_basic.c:116:38:116:47 | openssl_basic.c:116:38:116:47 | diff --git a/cpp/ql/test/experimental/library-tests/quantum/nodes.expected b/cpp/ql/test/experimental/library-tests/quantum/nodes.expected index ad2216b1d24..e5451874eb5 100644 --- a/cpp/ql/test/experimental/library-tests/quantum/nodes.expected +++ b/cpp/ql/test/experimental/library-tests/quantum/nodes.expected @@ -1,7 +1,5 @@ | openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | | openssl_basic.c:23:37:23:51 | ModeOfOperation | -| openssl_basic.c:23:62:23:65 | Key | -| openssl_basic.c:23:68:23:71 | Nonce | | openssl_basic.c:31:49:31:51 | Key | | openssl_basic.c:31:54:31:55 | Nonce | | openssl_basic.c:35:36:35:45 | KeyOperationOutput | @@ -10,8 +8,6 @@ | openssl_basic.c:40:38:40:53 | KeyOperationOutput | | openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | | openssl_basic.c:69:33:69:47 | ModeOfOperation | -| openssl_basic.c:69:58:69:61 | Key | -| openssl_basic.c:69:64:69:67 | Nonce | | openssl_basic.c:77:45:77:47 | Key | | openssl_basic.c:77:50:77:51 | Nonce | | openssl_basic.c:81:32:81:40 | KeyOperationOutput | From d0d47808e94fc404f254be1030a5004492b45180 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Thu, 12 Jun 2025 11:03:49 +0200 Subject: [PATCH 037/150] Java: Add change note. --- java/ql/lib/change-notes/2025-06-12-assert-cfg.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 java/ql/lib/change-notes/2025-06-12-assert-cfg.md diff --git a/java/ql/lib/change-notes/2025-06-12-assert-cfg.md b/java/ql/lib/change-notes/2025-06-12-assert-cfg.md new file mode 100644 index 00000000000..69219633166 --- /dev/null +++ b/java/ql/lib/change-notes/2025-06-12-assert-cfg.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Java `assert` statements are now assumed to be executed for the purpose of analysing control flow. This improves precision for a number of queries. From 861e4ee11eee33a1e2c41a5769c26606aa496dad Mon Sep 17 00:00:00 2001 From: Napalys Klicius Date: Thu, 12 Jun 2025 11:15:36 +0200 Subject: [PATCH 038/150] JS: Added test cases including manual interpolation and string concatination. --- .../TemplateSyntaxInStringLiteral.expected | 4 +++ .../TemplateSyntaxInStringLiteral.js | 28 ++++++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/javascript/ql/test/query-tests/LanguageFeatures/TemplateSyntaxInStringLiteral/TemplateSyntaxInStringLiteral.expected b/javascript/ql/test/query-tests/LanguageFeatures/TemplateSyntaxInStringLiteral/TemplateSyntaxInStringLiteral.expected index 8abd7dc0ace..f01015e878c 100644 --- a/javascript/ql/test/query-tests/LanguageFeatures/TemplateSyntaxInStringLiteral/TemplateSyntaxInStringLiteral.expected +++ b/javascript/ql/test/query-tests/LanguageFeatures/TemplateSyntaxInStringLiteral/TemplateSyntaxInStringLiteral.expected @@ -3,3 +3,7 @@ | TemplateSyntaxInStringLiteral.js:19:11:19:36 | 'global ... alVar}' | This string is not a template literal, but appears to reference the variable $@. | TemplateSyntaxInStringLiteral.js:14:5:14:13 | globalVar | globalVar | | TemplateSyntaxInStringLiteral.js:28:15:28:21 | "${x} " | This string is not a template literal, but appears to reference the variable $@. | TemplateSyntaxInStringLiteral.js:25:14:25:14 | x | x | | TemplateSyntaxInStringLiteral.js:42:17:42:57 | "Name: ... oobar}" | This string is not a template literal, but appears to reference the variable $@. | TemplateSyntaxInStringLiteral.js:37:11:37:16 | foobar | foobar | +| TemplateSyntaxInStringLiteral.js:47:27:47:51 | ") ${ex ... got (" | This string is not a template literal, but appears to reference the variable $@. | TemplateSyntaxInStringLiteral.js:45:20:45:27 | expected | expected | +| TemplateSyntaxInStringLiteral.js:47:71:47:83 | ") ${actual}" | This string is not a template literal, but appears to reference the variable $@. | TemplateSyntaxInStringLiteral.js:45:12:45:17 | actual | actual | +| TemplateSyntaxInStringLiteral.js:62:15:62:29 | "Name: ${name}" | This string is not a template literal, but appears to reference the variable $@. | TemplateSyntaxInStringLiteral.js:61:30:61:33 | name | name | +| TemplateSyntaxInStringLiteral.js:66:11:66:44 | "Name: ... {name}" | This string is not a template literal, but appears to reference the variable $@. | TemplateSyntaxInStringLiteral.js:61:30:61:33 | name | name | diff --git a/javascript/ql/test/query-tests/LanguageFeatures/TemplateSyntaxInStringLiteral/TemplateSyntaxInStringLiteral.js b/javascript/ql/test/query-tests/LanguageFeatures/TemplateSyntaxInStringLiteral/TemplateSyntaxInStringLiteral.js index d21a662dc5e..75d9475494a 100644 --- a/javascript/ql/test/query-tests/LanguageFeatures/TemplateSyntaxInStringLiteral/TemplateSyntaxInStringLiteral.js +++ b/javascript/ql/test/query-tests/LanguageFeatures/TemplateSyntaxInStringLiteral/TemplateSyntaxInStringLiteral.js @@ -40,4 +40,30 @@ function foo1() { writer.emit("Name: ${name}, Date: ${date}.", data); writer.emit("Name: ${name}, Date: ${date}, ${foobar}", data); // $ Alert - `foobar` is not in `data`. -} \ No newline at end of file +} + +function a(actual, expected, description) { + assert(false, "a", description, "expected (" + + typeof expected + ") ${expected} but got (" + typeof actual + ") ${actual}", { // $SPURIOUS:Alert + expected: expected, + actual: actual + }); +} + +function replacer(str, name) { + return str.replace("${name}", name); +} + +function replacerAll(str, name) { + return str.replaceAll("${name}", name); +} + +function manualInterpolation(name) { + let str = "Name: ${name}"; // $SPURIOUS:Alert + let result1 = replacer(str, name); + console.log(result1); + + str = "Name: ${name} and again: ${name}"; // $SPURIOUS:Alert + let result2 = replacerAll(str, name); + console.log(result2); +} From bafe7e66ad7d7948517cac60b4f3ea43c5617d7e Mon Sep 17 00:00:00 2001 From: Napalys Klicius Date: Thu, 12 Jun 2025 11:18:20 +0200 Subject: [PATCH 039/150] JS: Fix template literal detection in string concatination --- .../src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql | 7 ++++--- .../TemplateSyntaxInStringLiteral.expected | 2 -- .../TemplateSyntaxInStringLiteral.js | 2 +- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql b/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql index 6e0150656e6..b55d3c0d12e 100644 --- a/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql +++ b/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql @@ -76,9 +76,10 @@ class CandidateStringLiteral extends StringLiteral { * ``` */ predicate hasObjectProvidingTemplateVariables(CandidateStringLiteral lit) { - exists(DataFlow::CallNode call, DataFlow::ObjectLiteralNode obj | - call.getAnArgument().getALocalSource() = obj and - call.getAnArgument().asExpr() = lit and + exists(DataFlow::CallNode call, DataFlow::ObjectLiteralNode obj, DataFlow::Node stringArg | + stringArg = [StringConcatenation::getRoot(lit.flow()), lit.flow()] and + stringArg = call.getAnArgument() and + obj.flowsTo(call.getAnArgument()) and forex(string name | name = lit.getAReferencedVariable() | exists(obj.getAPropertyWrite(name))) ) } diff --git a/javascript/ql/test/query-tests/LanguageFeatures/TemplateSyntaxInStringLiteral/TemplateSyntaxInStringLiteral.expected b/javascript/ql/test/query-tests/LanguageFeatures/TemplateSyntaxInStringLiteral/TemplateSyntaxInStringLiteral.expected index f01015e878c..14e18888c32 100644 --- a/javascript/ql/test/query-tests/LanguageFeatures/TemplateSyntaxInStringLiteral/TemplateSyntaxInStringLiteral.expected +++ b/javascript/ql/test/query-tests/LanguageFeatures/TemplateSyntaxInStringLiteral/TemplateSyntaxInStringLiteral.expected @@ -3,7 +3,5 @@ | TemplateSyntaxInStringLiteral.js:19:11:19:36 | 'global ... alVar}' | This string is not a template literal, but appears to reference the variable $@. | TemplateSyntaxInStringLiteral.js:14:5:14:13 | globalVar | globalVar | | TemplateSyntaxInStringLiteral.js:28:15:28:21 | "${x} " | This string is not a template literal, but appears to reference the variable $@. | TemplateSyntaxInStringLiteral.js:25:14:25:14 | x | x | | TemplateSyntaxInStringLiteral.js:42:17:42:57 | "Name: ... oobar}" | This string is not a template literal, but appears to reference the variable $@. | TemplateSyntaxInStringLiteral.js:37:11:37:16 | foobar | foobar | -| TemplateSyntaxInStringLiteral.js:47:27:47:51 | ") ${ex ... got (" | This string is not a template literal, but appears to reference the variable $@. | TemplateSyntaxInStringLiteral.js:45:20:45:27 | expected | expected | -| TemplateSyntaxInStringLiteral.js:47:71:47:83 | ") ${actual}" | This string is not a template literal, but appears to reference the variable $@. | TemplateSyntaxInStringLiteral.js:45:12:45:17 | actual | actual | | TemplateSyntaxInStringLiteral.js:62:15:62:29 | "Name: ${name}" | This string is not a template literal, but appears to reference the variable $@. | TemplateSyntaxInStringLiteral.js:61:30:61:33 | name | name | | TemplateSyntaxInStringLiteral.js:66:11:66:44 | "Name: ... {name}" | This string is not a template literal, but appears to reference the variable $@. | TemplateSyntaxInStringLiteral.js:61:30:61:33 | name | name | diff --git a/javascript/ql/test/query-tests/LanguageFeatures/TemplateSyntaxInStringLiteral/TemplateSyntaxInStringLiteral.js b/javascript/ql/test/query-tests/LanguageFeatures/TemplateSyntaxInStringLiteral/TemplateSyntaxInStringLiteral.js index 75d9475494a..709ca34d85f 100644 --- a/javascript/ql/test/query-tests/LanguageFeatures/TemplateSyntaxInStringLiteral/TemplateSyntaxInStringLiteral.js +++ b/javascript/ql/test/query-tests/LanguageFeatures/TemplateSyntaxInStringLiteral/TemplateSyntaxInStringLiteral.js @@ -44,7 +44,7 @@ function foo1() { function a(actual, expected, description) { assert(false, "a", description, "expected (" + - typeof expected + ") ${expected} but got (" + typeof actual + ") ${actual}", { // $SPURIOUS:Alert + typeof expected + ") ${expected} but got (" + typeof actual + ") ${actual}", { expected: expected, actual: actual }); From 923aff2439831c32d9a3aa9e1e1547c5bd6d1b8a Mon Sep 17 00:00:00 2001 From: Napalys Klicius Date: Thu, 12 Jun 2025 11:35:33 +0200 Subject: [PATCH 040/150] JS: Fixed false positive on manual string interpolation. --- .../TemplateSyntaxInStringLiteral.ql | 26 ++++++++++++++++++- .../TemplateSyntaxInStringLiteral.expected | 2 -- .../TemplateSyntaxInStringLiteral.js | 4 +-- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql b/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql index b55d3c0d12e..566a513bca0 100644 --- a/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql +++ b/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql @@ -95,12 +95,36 @@ VarDecl getDeclIn(Variable v, Scope scope, string name, CandidateTopLevel tl) { result.getTopLevel() = tl } +/** + * Tracks data flow from a string literal that may flow to a replace operation. + */ +DataFlow::SourceNode trackString(CandidateStringLiteral lit, DataFlow::TypeTracker t) { + t.start() and result = lit.flow() + or + exists(DataFlow::TypeTracker t2 | result = trackString(lit, t2).track(t2, t)) +} + +/** + * Gets a string literal that flows to a replace operation. + */ +DataFlow::SourceNode trackString(CandidateStringLiteral lit) { + result = trackString(lit, DataFlow::TypeTracker::end()) +} + +/** + * Holds if the string literal flows to a replace method call. + */ +predicate hasReplaceMethodCall(CandidateStringLiteral lit) { + trackString(lit).getAMethodCall() instanceof StringReplaceCall +} + from CandidateStringLiteral lit, Variable v, Scope s, string name, VarDecl decl where decl = getDeclIn(v, s, name, lit.getTopLevel()) and lit.getAReferencedVariable() = name and lit.isInScope(s) and not hasObjectProvidingTemplateVariables(lit) and - not lit.getStringValue() = "${" + name + "}" + not lit.getStringValue() = "${" + name + "}" and + not hasReplaceMethodCall(lit) select lit, "This string is not a template literal, but appears to reference the variable $@.", decl, v.getName() diff --git a/javascript/ql/test/query-tests/LanguageFeatures/TemplateSyntaxInStringLiteral/TemplateSyntaxInStringLiteral.expected b/javascript/ql/test/query-tests/LanguageFeatures/TemplateSyntaxInStringLiteral/TemplateSyntaxInStringLiteral.expected index 14e18888c32..8abd7dc0ace 100644 --- a/javascript/ql/test/query-tests/LanguageFeatures/TemplateSyntaxInStringLiteral/TemplateSyntaxInStringLiteral.expected +++ b/javascript/ql/test/query-tests/LanguageFeatures/TemplateSyntaxInStringLiteral/TemplateSyntaxInStringLiteral.expected @@ -3,5 +3,3 @@ | TemplateSyntaxInStringLiteral.js:19:11:19:36 | 'global ... alVar}' | This string is not a template literal, but appears to reference the variable $@. | TemplateSyntaxInStringLiteral.js:14:5:14:13 | globalVar | globalVar | | TemplateSyntaxInStringLiteral.js:28:15:28:21 | "${x} " | This string is not a template literal, but appears to reference the variable $@. | TemplateSyntaxInStringLiteral.js:25:14:25:14 | x | x | | TemplateSyntaxInStringLiteral.js:42:17:42:57 | "Name: ... oobar}" | This string is not a template literal, but appears to reference the variable $@. | TemplateSyntaxInStringLiteral.js:37:11:37:16 | foobar | foobar | -| TemplateSyntaxInStringLiteral.js:62:15:62:29 | "Name: ${name}" | This string is not a template literal, but appears to reference the variable $@. | TemplateSyntaxInStringLiteral.js:61:30:61:33 | name | name | -| TemplateSyntaxInStringLiteral.js:66:11:66:44 | "Name: ... {name}" | This string is not a template literal, but appears to reference the variable $@. | TemplateSyntaxInStringLiteral.js:61:30:61:33 | name | name | diff --git a/javascript/ql/test/query-tests/LanguageFeatures/TemplateSyntaxInStringLiteral/TemplateSyntaxInStringLiteral.js b/javascript/ql/test/query-tests/LanguageFeatures/TemplateSyntaxInStringLiteral/TemplateSyntaxInStringLiteral.js index 709ca34d85f..9e0993278c1 100644 --- a/javascript/ql/test/query-tests/LanguageFeatures/TemplateSyntaxInStringLiteral/TemplateSyntaxInStringLiteral.js +++ b/javascript/ql/test/query-tests/LanguageFeatures/TemplateSyntaxInStringLiteral/TemplateSyntaxInStringLiteral.js @@ -59,11 +59,11 @@ function replacerAll(str, name) { } function manualInterpolation(name) { - let str = "Name: ${name}"; // $SPURIOUS:Alert + let str = "Name: ${name}"; let result1 = replacer(str, name); console.log(result1); - str = "Name: ${name} and again: ${name}"; // $SPURIOUS:Alert + str = "Name: ${name} and again: ${name}"; let result2 = replacerAll(str, name); console.log(result2); } From 75ee649362392a4a1ed1a5f04b15403308e1f923 Mon Sep 17 00:00:00 2001 From: Napalys Klicius Date: Thu, 12 Jun 2025 12:11:35 +0200 Subject: [PATCH 041/150] JS: add change note --- .../ql/src/change-notes/2025-06-12-string-interpolation.md | 4 ++++ .../src/change-notes/2025-06-12-template-syntax-metadata.md | 4 ++++ 2 files changed, 8 insertions(+) create mode 100644 javascript/ql/src/change-notes/2025-06-12-string-interpolation.md create mode 100644 javascript/ql/src/change-notes/2025-06-12-template-syntax-metadata.md diff --git a/javascript/ql/src/change-notes/2025-06-12-string-interpolation.md b/javascript/ql/src/change-notes/2025-06-12-string-interpolation.md new file mode 100644 index 00000000000..446ecf0fcb2 --- /dev/null +++ b/javascript/ql/src/change-notes/2025-06-12-string-interpolation.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Fixed false positives in the `js/template-syntax-in-string-literal` query where template syntax in string concatenation and "manual string interpolation" patterns were incorrectly flagged. diff --git a/javascript/ql/src/change-notes/2025-06-12-template-syntax-metadata.md b/javascript/ql/src/change-notes/2025-06-12-template-syntax-metadata.md new file mode 100644 index 00000000000..f29f602095d --- /dev/null +++ b/javascript/ql/src/change-notes/2025-06-12-template-syntax-metadata.md @@ -0,0 +1,4 @@ +--- +category: queryMetadata +--- +* Added `reliability` and `language-features` tags to the `js/template-syntax-in-string-literal` query. From da5cd251bef4cf82ec9df5fbaba5e8b9e2b9c625 Mon Sep 17 00:00:00 2001 From: Napalys Klicius Date: Thu, 12 Jun 2025 14:25:00 +0200 Subject: [PATCH 042/150] Update javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql Co-Authored-By: Asger F <316427+asgerf@users.noreply.github.com> --- .../ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql b/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql index 566a513bca0..4dd91b143dc 100644 --- a/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql +++ b/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql @@ -76,9 +76,8 @@ class CandidateStringLiteral extends StringLiteral { * ``` */ predicate hasObjectProvidingTemplateVariables(CandidateStringLiteral lit) { - exists(DataFlow::CallNode call, DataFlow::ObjectLiteralNode obj, DataFlow::Node stringArg | - stringArg = [StringConcatenation::getRoot(lit.flow()), lit.flow()] and - stringArg = call.getAnArgument() and + exists(DataFlow::CallNode call, DataFlow::ObjectLiteralNode obj | + call.getAnArgument() = [lit.flow(), StringConcatenation::getRoot(lit.flow())] and obj.flowsTo(call.getAnArgument()) and forex(string name | name = lit.getAReferencedVariable() | exists(obj.getAPropertyWrite(name))) ) From d7ad625de3453e1e86da82b22394732c8737cf5e Mon Sep 17 00:00:00 2001 From: Napalys Klicius Date: Thu, 12 Jun 2025 14:28:00 +0200 Subject: [PATCH 043/150] JS: restrict type tracking to strings of interest. --- .../TemplateSyntaxInStringLiteral.ql | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql b/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql index 4dd91b143dc..f6824cfd958 100644 --- a/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql +++ b/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql @@ -97,24 +97,26 @@ VarDecl getDeclIn(Variable v, Scope scope, string name, CandidateTopLevel tl) { /** * Tracks data flow from a string literal that may flow to a replace operation. */ -DataFlow::SourceNode trackString(CandidateStringLiteral lit, DataFlow::TypeTracker t) { - t.start() and result = lit.flow() +DataFlow::SourceNode trackStringWithTemplateSyntax( + CandidateStringLiteral lit, DataFlow::TypeTracker t +) { + t.start() and result = lit.flow() and exists(lit.getAReferencedVariable()) or - exists(DataFlow::TypeTracker t2 | result = trackString(lit, t2).track(t2, t)) + exists(DataFlow::TypeTracker t2 | result = trackStringWithTemplateSyntax(lit, t2).track(t2, t)) } /** * Gets a string literal that flows to a replace operation. */ -DataFlow::SourceNode trackString(CandidateStringLiteral lit) { - result = trackString(lit, DataFlow::TypeTracker::end()) +DataFlow::SourceNode trackStringWithTemplateSyntax(CandidateStringLiteral lit) { + result = trackStringWithTemplateSyntax(lit, DataFlow::TypeTracker::end()) } /** * Holds if the string literal flows to a replace method call. */ predicate hasReplaceMethodCall(CandidateStringLiteral lit) { - trackString(lit).getAMethodCall() instanceof StringReplaceCall + trackStringWithTemplateSyntax(lit).getAMethodCall() instanceof StringReplaceCall } from CandidateStringLiteral lit, Variable v, Scope s, string name, VarDecl decl From eb20955a545440d37b15570b241e8ff92b688e8a Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Thu, 12 Jun 2025 15:36:59 -0400 Subject: [PATCH 044/150] Crypto: Further simplify test caes to only use edges/nodes/properties. Update model to account for MAC algorithms. --- .../KnownAlgorithmConstants.qll | 135 +++++++++++++++++- .../MACAlgorithmInstance.qll | 66 +++++++++ .../OpenSSL/Operations/EVPKeyGenOperation.qll | 33 ++++- .../Operations/OpenSSLOperationBase.qll | 25 +++- .../quantum/hash_input_sources.expected | 5 - .../quantum/hash_input_sources.ql | 6 - .../key_creation_key_size_sources.expected | 3 - .../quantum/key_creation_key_size_sources.ql | 6 - .../quantum/keyop_input_sources.expected | 2 - .../quantum/keyop_input_sources.ql | 6 - .../quantum/keyop_key_sources.expected | 3 - .../quantum/keyop_key_sources.ql | 6 - .../quantum/keyop_nonce_sources.expected | 2 - .../quantum/keyop_nonce_sources.ql | 6 - .../codeql/quantum/experimental/Model.qll | 24 +++- 15 files changed, 268 insertions(+), 60 deletions(-) create mode 100644 cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/MACAlgorithmInstance.qll delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/hash_input_sources.expected delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/hash_input_sources.ql delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/key_creation_key_size_sources.expected delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/key_creation_key_size_sources.ql delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/keyop_input_sources.expected delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/keyop_input_sources.ql delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/keyop_key_sources.expected delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/keyop_key_sources.ql delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/keyop_nonce_sources.expected delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/keyop_nonce_sources.ql diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KnownAlgorithmConstants.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KnownAlgorithmConstants.qll index 6e1bfe83eac..436f1dca380 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KnownAlgorithmConstants.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KnownAlgorithmConstants.qll @@ -134,6 +134,30 @@ class KnownOpenSSLHashAlgorithmExpr extends Expr instanceof KnownOpenSSLAlgorith } } +class KnownOpenSSLMACAlgorithmExpr extends Expr instanceof KnownOpenSSLAlgorithmExpr { + KnownOpenSSLMACAlgorithmExpr() { resolveAlgorithmFromExpr(this, _, "MAC") } +} + +class KnownOpenSSLHMACAlgorithmExpr extends Expr instanceof KnownOpenSSLMACAlgorithmExpr { + KnownOpenSSLHMACAlgorithmExpr() { resolveAlgorithmFromExpr(this, "HMAC", "MAC") } + + /** + * Gets an explicit cipher algorithm for this MAC algorithm. + * This occurs when the MAC specifies the algorithm at the same time "HMAC-SHA-256" + */ + KnownOpenSSLHashAlgorithmExpr getExplicitHashAlgorithm() { result = this } +} + +class KnownOpenSSLCMACAlgorithmExpr extends Expr instanceof KnownOpenSSLMACAlgorithmExpr { + KnownOpenSSLCMACAlgorithmExpr() { resolveAlgorithmFromExpr(this, "CMAC", "MAC") } + + /** + * Gets an explicit cipher algorithm for this MAC algorithm. + * This occurs when the MAC specifies the algorithm at the same time "HMAC-SHA-256" + */ + KnownOpenSSLCipherAlgorithmExpr getExplicitCipherAlgorithm() { result = this } +} + class KnownOpenSSLEllipticCurveAlgorithmExpr extends Expr instanceof KnownOpenSSLAlgorithmExpr { KnownOpenSSLEllipticCurveAlgorithmExpr() { resolveAlgorithmFromExpr(this, _, "ELLIPTIC_CURVE") } } @@ -946,6 +970,8 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, or name = "id-alg-dh-sig-hmac-sha1" and nid = 325 and normalized = "DH" and algType = "KEY_AGREEMENT" or + name = "id-alg-dh-sig-hmac-sha1" and nid = 325 and normalized = "HMAC" and algType = "MAC" + or name = "aes-128-ofb" and nid = 420 and normalized = "AES-128" and algType = "SYMMETRIC_ENCRYPTION" or name = "aes-128-ofb" and nid = 420 and normalized = "OFB" and algType = "BLOCK_MODE" @@ -1124,8 +1150,12 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, or name = "hmac-md5" and nid = 780 and normalized = "MD5" and algType = "HASH" or + name = "hmac-md5" and nid = 780 and normalized = "HMAC" and algType = "HASH" + or name = "hmac-sha1" and nid = 781 and normalized = "SHA1" and algType = "HASH" or + name = "hmac-sha1" and nid = 781 and normalized = "HMAC" and algType = "MAC" + or name = "md_gost94" and nid = 809 and normalized = "GOST94" and algType = "HASH" or name = "gost94" and nid = 812 and normalized = "GOST94" and algType = "HASH" @@ -1200,10 +1230,14 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, or name = "rc4-hmac-md5" and nid = 915 and normalized = "MD5" and algType = "HASH" or + name = "rc4-hmac-md5" and nid = 915 and normalized = "HMAC" and algType = "MAC" + or name = "rc4-hmac-md5" and nid = 915 and normalized = "RC4" and algType = "SYMMETRIC_ENCRYPTION" or name = "aes-128-cbc-hmac-sha1" and nid = 916 and normalized = "SHA1" and algType = "HASH" or + name = "aes-128-cbc-hmac-sha1" and nid = 916 and normalized = "HMAC" and algType = "MAC" + or name = "aes-128-cbc-hmac-sha1" and nid = 916 and normalized = "AES-128" and @@ -1213,6 +1247,8 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, or name = "aes-192-cbc-hmac-sha1" and nid = 917 and normalized = "SHA1" and algType = "HASH" or + name = "aes-192-cbc-hmac-sha1" and nid = 917 and normalized = "HMAC" and algType = "MAC" + or name = "aes-192-cbc-hmac-sha1" and nid = 917 and normalized = "AES-192" and @@ -1227,6 +1263,8 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, or name = "aes-256-cbc-hmac-sha1" and nid = 918 and normalized = "CBC" and algType = "BLOCK_MODE" or + name = "aes-256-cbc-hmac-sha1" and nid = 918 and normalized = "HMAC" and algType = "MAC" + or name = "aes-128-cbc-hmac-sha256" and nid = 948 and normalized = "SHA-256" and algType = "HASH" or name = "aes-128-cbc-hmac-sha256" and @@ -1238,6 +1276,8 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, or name = "aes-192-cbc-hmac-sha256" and nid = 949 and normalized = "SHA-256" and algType = "HASH" or + name = "aes-192-cbc-hmac-sha256" and nid = 949 and normalized = "HMAC" and algType = "MAC" + or name = "aes-192-cbc-hmac-sha256" and nid = 949 and normalized = "AES-192" and @@ -1247,6 +1287,8 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, or name = "aes-256-cbc-hmac-sha256" and nid = 950 and normalized = "SHA-256" and algType = "HASH" or + name = "aes-256-cbc-hmac-sha256" and nid = 950 and normalized = "HMAC" and algType = "MAC" + or name = "aes-256-cbc-hmac-sha256" and nid = 950 and normalized = "AES-256" and @@ -1286,6 +1328,11 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, normalized = "CAMELLIA-128" and algType = "SYMMETRIC_ENCRYPTION" or + name = "camellia-128-cmac" and + nid = 964 and + normalized = "CMAC" and + algType = "MAC" + or name = "camellia-192-gcm" and nid = 965 and normalized = "CAMELLIA-192" and @@ -1338,6 +1385,11 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, normalized = "CAMELLIA-256" and algType = "SYMMETRIC_ENCRYPTION" or + name = "camellia-256-cmac" and + nid = 972 and + normalized = "CMAC" and + algType = "MAC" + or name = "id-scrypt" and nid = 973 and normalized = "SCRYPT" and algType = "KEY_DERIVATION" or name = "gost89-cnt-12" and @@ -1351,11 +1403,13 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, or name = "md_gost12_512" and nid = 983 and normalized = "GOST" and algType = "HASH" or + // TODO: re-evaluate: this is a signing algorithm using hashing and curves name = "id-tc26-signwithdigest-gost3410-2012-256" and nid = 985 and normalized = "GOST34102012" and algType = "SYMMETRIC_ENCRYPTION" or + // TODO: re-evaluate: this is a signing algorithm using hashing and curves name = "id-tc26-signwithdigest-gost3410-2012-512" and nid = 986 and normalized = "GOST34102012" and @@ -1364,22 +1418,42 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, name = "id-tc26-hmac-gost-3411-2012-256" and nid = 988 and normalized = "GOST34112012" and - algType = "SYMMETRIC_ENCRYPTION" + algType = "HASH" + or + name = "id-tc26-hmac-gost-3411-2012-256" and + nid = 988 and + normalized = "HMAC" and + algType = "MAC" or name = "id-tc26-hmac-gost-3411-2012-512" and nid = 989 and normalized = "GOST34112012" and - algType = "SYMMETRIC_ENCRYPTION" + algType = "HASH" + or + name = "id-tc26-hmac-gost-3411-2012-512" and + nid = 989 and + normalized = "HMAC" and + algType = "MAC" or name = "id-tc26-agreement-gost-3410-2012-256" and nid = 992 and normalized = "GOST34102012" and - algType = "SYMMETRIC_ENCRYPTION" + algType = "ELLIPTIC_CURVE" + or + name = "id-tc26-agreement-gost-3410-2012-256" and + nid = 992 and + normalized = "GOST34102012" and + algType = "KEY_AGREEMENT" or name = "id-tc26-agreement-gost-3410-2012-512" and nid = 993 and normalized = "GOST34102012" and - algType = "SYMMETRIC_ENCRYPTION" + algType = "ELLIPTIC_CURVE" + or + name = "id-tc26-agreement-gost-3410-2012-512" and + nid = 993 and + normalized = "GOST34102012" and + algType = "KEY_AGREEMENT" or name = "id-tc26-gost-3410-2012-512-constants" and nid = 996 and @@ -1467,12 +1541,20 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, or name = "hmac-sha3-224" and nid = 1102 and normalized = "SHA3-224" and algType = "HASH" or + name = "hmac-sha3-224" and nid = 1102 and normalized = "HMAC" and algType = "MAC" + or name = "hmac-sha3-256" and nid = 1103 and normalized = "SHA3-256" and algType = "HASH" or + name = "hmac-sha3-256" and nid = 1103 and normalized = "HMAC" and algType = "MAC" + or name = "hmac-sha3-384" and nid = 1104 and normalized = "SHA3-384" and algType = "HASH" or + name = "hmac-sha3-384" and nid = 1104 and normalized = "HMAC" and algType = "MAC" + or name = "hmac-sha3-512" and nid = 1105 and normalized = "SHA3-512" and algType = "HASH" or + name = "hmac-sha3-512" and nid = 1105 and normalized = "HMAC" and algType = "MAC" + or name = "id-dsa-with-sha384" and nid = 1106 and normalized = "DSA" and algType = "SIGNATURE" or name = "id-dsa-with-sha384" and nid = 1106 and normalized = "SHA-384" and algType = "HASH" @@ -2240,34 +2322,67 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, normalized = "GOST" and algType = "SYMMETRIC_ENCRYPTION" or + name = "hmac gost 34.11-2012 256 bit" and + nid = 988 and + normalized = "HMAC" and + algType = "MAC" + or name = "hmac gost 34.11-2012 512 bit" and nid = 989 and normalized = "GOST" and algType = "SYMMETRIC_ENCRYPTION" or + name = "hmac gost 34.11-2012 512 bit" and + nid = 989 and + normalized = "HMAC" and + algType = "MAC" + or name = "hmac gost 34.11-94" and nid = 810 and normalized = "GOST" and algType = "SYMMETRIC_ENCRYPTION" or + name = "hmac gost 34.11-94" and + nid = 810 and + normalized = "HMAC" and + algType = "MAC" + or name = "hmacwithmd5" and nid = 797 and normalized = "MD5" and algType = "HASH" or + name = "hmacwithmd5" and nid = 797 and normalized = "HMAC" and algType = "MAC" + or name = "hmacwithsha1" and nid = 163 and normalized = "SHA1" and algType = "HASH" or + name = "hmacwithsha1" and nid = 163 and normalized = "HMAC" and algType = "MAC" + or name = "hmacwithsha224" and nid = 798 and normalized = "SHA-224" and algType = "HASH" or + name = "hmacwithsha224" and nid = 798 and normalized = "HMAC" and algType = "MAC" + or name = "hmacwithsha256" and nid = 799 and normalized = "SHA-256" and algType = "HASH" or + name = "hmacwithsha256" and nid = 799 and normalized = "HMAC" and algType = "MAC" + or name = "hmacwithsha384" and nid = 800 and normalized = "SHA-384" and algType = "HASH" or + name = "hmacwithsha384" and nid = 800 and normalized = "HMAC" and algType = "MAC" + or name = "hmacwithsha512" and nid = 801 and normalized = "SHA-512" and algType = "HASH" or + name = "hmacwithsha512" and nid = 801 and normalized = "HMAC" and algType = "MAC" + or name = "hmacwithsha512-224" and nid = 1193 and normalized = "SHA-512-224" and algType = "HASH" or + name = "hmacwithsha512-224" and nid = 1193 and normalized = "HMAC" and algType = "MAC" + or name = "hmacwithsha512-256" and nid = 1194 and normalized = "SHA-512-256" and algType = "HASH" or + name = "hmacwithsha512-256" and nid = 1194 and normalized = "HMAC" and algType = "MAC" + or name = "hmacwithsm3" and nid = 1281 and normalized = "SM3" and algType = "HASH" or + name = "hmacwithsm3" and nid = 1281 and normalized = "HMAC" and algType = "MAC" + or name = "id-aes128-ccm" and nid = 896 and normalized = "AES-128" and @@ -2517,12 +2632,20 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, or name = "id-hmacwithsha3-224" and nid = 1102 and normalized = "SHA3-224" and algType = "HASH" or + name = "id-hmacwithsha3-224" and nid = 1102 and normalized = "HMAC" and algType = "MAC" + or name = "id-hmacwithsha3-256" and nid = 1103 and normalized = "SHA3-256" and algType = "HASH" or + name = "id-hmacwithsha3-256" and nid = 1103 and normalized = "HMAC" and algType = "MAC" + or name = "id-hmacwithsha3-384" and nid = 1104 and normalized = "SHA3-384" and algType = "HASH" or + name = "id-hmacwithsha3-384" and nid = 1104 and normalized = "HMAC" and algType = "MAC" + or name = "id-hmacwithsha3-512" and nid = 1105 and normalized = "SHA3-512" and algType = "HASH" or + name = "id-hmacwithsha3-512" and nid = 1105 and normalized = "HMAC" and algType = "MAC" + or name = "id-regctrl" and nid = 313 and normalized = "CTR" and algType = "BLOCK_MODE" or name = "id-smime-alg-3deswrap" and @@ -3080,4 +3203,8 @@ predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, algType = "SIGNATURE" or name = "sm3withrsaencryption" and nid = 1144 and normalized = "SM3" and algType = "HASH" + or + name = "hmac" and nid = 855 and normalized = "HMAC" and algType = "MAC" + or + name = "cmac" and nid = 894 and normalized = "CMAC" and algType = "MAC" } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/MACAlgorithmInstance.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/MACAlgorithmInstance.qll new file mode 100644 index 00000000000..2158956c9a2 --- /dev/null +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/MACAlgorithmInstance.qll @@ -0,0 +1,66 @@ +import cpp +private import experimental.quantum.Language +private import KnownAlgorithmConstants +private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers +private import experimental.quantum.OpenSSL.AlgorithmInstances.OpenSSLAlgorithmInstanceBase +private import experimental.quantum.OpenSSL.Operations.OpenSSLOperations +private import AlgToAVCFlow + +class KnownOpenSSLMACConstantAlgorithmInstance extends OpenSSLAlgorithmInstance, + Crypto::MACAlgorithmInstance instanceof KnownOpenSSLMACAlgorithmExpr +{ + OpenSSLAlgorithmValueConsumer getterCall; + + KnownOpenSSLMACConstantAlgorithmInstance() { + // Two possibilities: + // 1) The source is a literal and flows to a getter, then we know we have an instance + // 2) The source is a KnownOpenSSLAlgorithm is call, and we know we have an instance immediately from that + // Possibility 1: + this instanceof OpenSSLAlgorithmLiteral and + exists(DataFlow::Node src, DataFlow::Node sink | + // Sink is an argument to a CipherGetterCall + sink = getterCall.(OpenSSLAlgorithmValueConsumer).getInputNode() and + // Source is `this` + src.asExpr() = this and + // This traces to a getter + KnownOpenSSLAlgorithmToAlgorithmValueConsumerFlow::flow(src, sink) + ) + or + // Possibility 2: + this instanceof OpenSSLAlgorithmCall and + getterCall = this + } + + override OpenSSLAlgorithmValueConsumer getAVC() { result = getterCall } + + override string getRawMACAlgorithmName() { + result = this.(Literal).getValue().toString() + or + result = this.(Call).getTarget().getName() + } + + override Crypto::TMACType getMACType() { + this instanceof KnownOpenSSLHMACAlgorithmExpr and result instanceof Crypto::THMAC + or + this instanceof KnownOpenSSLCMACAlgorithmExpr and result instanceof Crypto::TCMAC + } +} + +class KnownOpenSSLHMACConstantAlgorithmInstance extends Crypto::HMACAlgorithmInstance, + KnownOpenSSLMACConstantAlgorithmInstance +{ + override Crypto::AlgorithmValueConsumer getHashAlgorithmValueConsumer() { + if exists(this.(KnownOpenSSLHMACAlgorithmExpr).getExplicitHashAlgorithm()) + then + // ASSUMPTION: if there is an explicit hash algorithm, it is already modeled + // and we can simply grab that model's AVC + exists(OpenSSLAlgorithmInstance inst | inst.getAVC() = result and inst = this) + else + // ASSUMPTION: If no explicit algorithm is given, then it is assumed to be configured by + // a signature operation + exists(Crypto::SignatureOperationInstance s | + s.getHashAlgorithmValueConsumer() = result and + s.getAnAlgorithmValueConsumer() = this.getAVC() + ) + } +} diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPKeyGenOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPKeyGenOperation.qll index 69be86fad1e..f42f3f7e289 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPKeyGenOperation.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPKeyGenOperation.qll @@ -23,7 +23,7 @@ class EVPKeyGenInitialize extends EvpPrimaryAlgorithmInitializer { override CtxPointerSource getContext() { result = this.(Call).getArgument(0) } } -class EVPKeyGenOperation extends EVPFinal, Crypto::KeyGenerationOperationInstance { +class EVPKeyGenOperation extends EvpOperation, Crypto::KeyGenerationOperationInstance { DataFlow::Node keyResultNode; EVPKeyGenOperation() { @@ -47,7 +47,7 @@ class EVPKeyGenOperation extends EVPFinal, Crypto::KeyGenerationOperationInstanc override Expr getInputArg() { none() } - override Expr getOutputArg() { result = this.(Call).getArgument(1) } + override Expr getOutputArg() { result = keyResultNode.asExpr() } override Crypto::ArtifactOutputDataFlowNode getOutputKeyArtifact() { result = keyResultNode } @@ -65,3 +65,32 @@ class EVPKeyGenOperation extends EVPFinal, Crypto::KeyGenerationOperationInstanc result = DataFlow::exprNode(this.getInitCall().(EvpKeySizeInitializer).getKeySizeArg()) } } + +/** + * Calls to `EVP_PKEY_new_mac_key` create a new MAC key. + * EVP_PKEY *EVP_PKEY_new_mac_key(int type, ENGINE *e, const unsigned char *key, int keylen); + */ +class EvpNewMacKey extends EvpOperation, Crypto::KeyGenerationOperationInstance { + DataFlow::Node keyResultNode; + + EvpNewMacKey() { + this.(Call).getTarget().getName() = "EVP_PKEY_new_mac_key" and keyResultNode.asExpr() = this + } + + override CtxPointerSource getContext() { none() } + + override Crypto::KeyArtifactType getOutputKeyType() { result = Crypto::TSymmetricKeyType() } + + override Expr getOutputArg() { result = keyResultNode.asExpr() } + + override Crypto::ArtifactOutputDataFlowNode getOutputKeyArtifact() { result = keyResultNode } + + override Expr getInputArg() { none() } + + override Expr getAlgorithmArg() { result = this.(Call).getArgument(0) } + + override Crypto::ConsumerInputDataFlowNode getKeySizeConsumer() { + result = DataFlow::exprNode(this.(Call).getArgument(3)) + } +} +/// TODO: https://docs.openssl.org/3.0/man3/EVP_PKEY_new/#synopsis diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll index 70150e0b6be..cc0b79b8dcc 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll @@ -20,6 +20,22 @@ module EncValToInitEncArgConfig implements DataFlow::ConfigSig { module EncValToInitEncArgFlow = DataFlow::Global; +private predicate argToAVC(Expr arg, Crypto::AlgorithmValueConsumer avc) { + // NOTE: because we trace through keys to their sources we must consider that the arg is an avc + // Consider this example: + // EVP_PKEY *pkey = EVP_PKEY_new_mac_key(EVP_PKEY_HMAC, NULL, key, key_len); + // The key may trace into a signing operation. Tracing through the key we will get the arg taking `EVP_PKEY_HMAC` + // as the algorithm value consumer (the input node of the AVC). The output node of this AVC + // is the call return of `EVP_PKEY_new_mac_key`. If we trace from the AVC result to + // the input argument this will not be possible (from the return to the call argument is a backwards flow). + // Therefore, we must consider the input node of the AVC as the argument. + // This should only occur due to tracing through keys to find configuration data. + avc.getInputNode().asExpr() = arg + or + AvcToCallArgFlow::flow(avc.(OpenSSLAlgorithmValueConsumer).getResultNode(), + DataFlow::exprNode(arg)) +} + /** * A class for all OpenSSL operations. */ @@ -37,8 +53,7 @@ abstract class OpenSSLOperation extends Crypto::OperationInstance instanceof Cal * Algorithm is specified in initialization call or is implicitly established by the key. */ override Crypto::AlgorithmValueConsumer getAnAlgorithmValueConsumer() { - AvcToCallArgFlow::flow(result.(OpenSSLAlgorithmValueConsumer).getResultNode(), - DataFlow::exprNode(this.getAlgorithmArg())) + argToAVC(this.getAlgorithmArg(), result) } } @@ -100,8 +115,7 @@ abstract class EvpPrimaryAlgorithmInitializer extends EvpInitializer { abstract Expr getAlgorithmArg(); Crypto::AlgorithmValueConsumer getAlgorithmValueConsumer() { - AvcToCallArgFlow::flow(result.(OpenSSLAlgorithmValueConsumer).getResultNode(), - DataFlow::exprNode(this.getAlgorithmArg())) + argToAVC(this.getAlgorithmArg(), result) } } @@ -155,8 +169,7 @@ abstract class EvpHashAlgorithmInitializer extends EvpInitializer { abstract Expr getHashAlgorithmArg(); Crypto::AlgorithmValueConsumer getHashAlgorithmValueConsumer() { - AvcToCallArgFlow::flow(result.(OpenSSLAlgorithmValueConsumer).getResultNode(), - DataFlow::exprNode(this.getHashAlgorithmArg())) + argToAVC(this.getHashAlgorithmArg(), result) } } diff --git a/cpp/ql/test/experimental/library-tests/quantum/hash_input_sources.expected b/cpp/ql/test/experimental/library-tests/quantum/hash_input_sources.expected deleted file mode 100644 index 2112252a3e2..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/hash_input_sources.expected +++ /dev/null @@ -1,5 +0,0 @@ -| openssl_basic.c:124:13:124:30 | HashOperation | openssl_basic.c:120:37:120:43 | Message | openssl_basic.c:181:49:181:87 | Constant | -| openssl_basic.c:144:13:144:22 | HashOperation | openssl_basic.c:144:24:144:30 | Message | openssl_basic.c:181:49:181:87 | Constant | -| openssl_signature.c:23:9:23:26 | HashOperation | openssl_signature.c:22:34:22:40 | Message | openssl_signature.c:602:37:602:77 | Constant | -| openssl_signature.c:23:9:23:26 | HashOperation | openssl_signature.c:22:34:22:40 | Message | openssl_signature.c:685:37:685:77 | Constant | -| openssl_signature.c:23:9:23:26 | HashOperation | openssl_signature.c:22:34:22:40 | Message | openssl_signature.c:741:37:741:77 | Constant | diff --git a/cpp/ql/test/experimental/library-tests/quantum/hash_input_sources.ql b/cpp/ql/test/experimental/library-tests/quantum/hash_input_sources.ql deleted file mode 100644 index fff38028b64..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/hash_input_sources.ql +++ /dev/null @@ -1,6 +0,0 @@ -import cpp -import experimental.quantum.Language - -from Crypto::HashOperationNode n, Crypto::MessageArtifactNode m -where n.getInputArtifact() = m -select n, m, m.getSourceNode() diff --git a/cpp/ql/test/experimental/library-tests/quantum/key_creation_key_size_sources.expected b/cpp/ql/test/experimental/library-tests/quantum/key_creation_key_size_sources.expected deleted file mode 100644 index 8de39995089..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/key_creation_key_size_sources.expected +++ /dev/null @@ -1,3 +0,0 @@ -| openssl_pkey.c:55:9:55:23 | KeyGeneration | openssl_pkey.c:54:47:54:50 | Constant | openssl_pkey.c:54:47:54:50 | 2048 | -| openssl_signature.c:548:9:548:23 | KeyGeneration | openssl_signature.c:547:51:547:54 | Constant | openssl_signature.c:547:51:547:54 | 2048 | -| openssl_signature.c:578:9:578:23 | KeyGeneration | openssl_signature.c:569:55:569:58 | Constant | openssl_signature.c:569:55:569:58 | 2048 | diff --git a/cpp/ql/test/experimental/library-tests/quantum/key_creation_key_size_sources.ql b/cpp/ql/test/experimental/library-tests/quantum/key_creation_key_size_sources.ql deleted file mode 100644 index e5bc0dfd28b..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/key_creation_key_size_sources.ql +++ /dev/null @@ -1,6 +0,0 @@ -import cpp -import experimental.quantum.Language - -from Crypto::KeyCreationOperationNode n, Crypto::NodeBase src -where n.getAKeySizeSource() = src -select n, src, src.asElement() diff --git a/cpp/ql/test/experimental/library-tests/quantum/keyop_input_sources.expected b/cpp/ql/test/experimental/library-tests/quantum/keyop_input_sources.expected deleted file mode 100644 index cf9966150dd..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/keyop_input_sources.expected +++ /dev/null @@ -1,2 +0,0 @@ -| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:35:54:35:62 | Message | openssl_basic.c:181:49:181:87 | Constant | -| openssl_pkey.c:64:9:64:24 | EncryptOperation | openssl_pkey.c:64:58:64:66 | Message | openssl_pkey.c:45:49:45:65 | Constant | diff --git a/cpp/ql/test/experimental/library-tests/quantum/keyop_input_sources.ql b/cpp/ql/test/experimental/library-tests/quantum/keyop_input_sources.ql deleted file mode 100644 index b4e1393275e..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/keyop_input_sources.ql +++ /dev/null @@ -1,6 +0,0 @@ -import cpp -import experimental.quantum.Language - -from Crypto::KeyOperationNode n, Crypto::MessageArtifactNode m -where n.getAnInputArtifact() = m -select n, m, m.getSourceNode() diff --git a/cpp/ql/test/experimental/library-tests/quantum/keyop_key_sources.expected b/cpp/ql/test/experimental/library-tests/quantum/keyop_key_sources.expected deleted file mode 100644 index a6bc55288dd..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/keyop_key_sources.expected +++ /dev/null @@ -1,3 +0,0 @@ -| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:31:49:31:51 | Key | openssl_basic.c:179:43:179:76 | Constant | -| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:77:45:77:47 | Key | openssl_basic.c:179:43:179:76 | Constant | -| openssl_pkey.c:64:9:64:24 | EncryptOperation | openssl_pkey.c:60:28:60:31 | Key | openssl_pkey.c:55:30:55:34 | Key | diff --git a/cpp/ql/test/experimental/library-tests/quantum/keyop_key_sources.ql b/cpp/ql/test/experimental/library-tests/quantum/keyop_key_sources.ql deleted file mode 100644 index 1591307a16a..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/keyop_key_sources.ql +++ /dev/null @@ -1,6 +0,0 @@ -import cpp -import experimental.quantum.Language - -from Crypto::KeyOperationNode op, Crypto::KeyArtifactNode k -where op.getAKey() = k -select op, k, k.getSourceNode() diff --git a/cpp/ql/test/experimental/library-tests/quantum/keyop_nonce_sources.expected b/cpp/ql/test/experimental/library-tests/quantum/keyop_nonce_sources.expected deleted file mode 100644 index 76cce244943..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/keyop_nonce_sources.expected +++ /dev/null @@ -1,2 +0,0 @@ -| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:31:54:31:55 | Nonce | openssl_basic.c:180:42:180:59 | Constant | -| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:77:50:77:51 | Nonce | openssl_basic.c:180:42:180:59 | Constant | diff --git a/cpp/ql/test/experimental/library-tests/quantum/keyop_nonce_sources.ql b/cpp/ql/test/experimental/library-tests/quantum/keyop_nonce_sources.ql deleted file mode 100644 index 76a69e301cb..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/keyop_nonce_sources.ql +++ /dev/null @@ -1,6 +0,0 @@ -import cpp -import experimental.quantum.Language - -from Crypto::KeyOperationNode op, Crypto::NonceArtifactNode n -where op.getANonce() = n -select op, n, n.getSourceNode() diff --git a/shared/quantum/codeql/quantum/experimental/Model.qll b/shared/quantum/codeql/quantum/experimental/Model.qll index 61540f55ea1..68b839cf637 100644 --- a/shared/quantum/codeql/quantum/experimental/Model.qll +++ b/shared/quantum/codeql/quantum/experimental/Model.qll @@ -801,6 +801,14 @@ module CryptographyBase Input> { * verification operation. */ abstract ConsumerInputDataFlowNode getSignatureConsumer(); + + /** + * Gets the consumer of a hash algorithm. + * This is intended for signature operations they are explicitly configured + * with a hash algorithm. If a signature is not configured with an explicit + * hash algorithm, users do not need to provide a consumer (set none()). + */ + abstract AlgorithmValueConsumer getHashAlgorithmValueConsumer(); } /** @@ -2192,15 +2200,25 @@ module CryptographyBase Input> { result.asElement() = instance.getSignatureConsumer().getConsumer() } + HashAlgorithmNode getHashAlgorithm() { + result = instance.getHashAlgorithmValueConsumer().getAKnownSourceNode() + } + override NodeBase getChild(string key) { result = super.getChild(key) or // [KNOWN_OR_UNKNOWN] - only if we know the type is verify this.getKeyOperationSubtype() = TVerifyMode() and key = "Signature" and - if exists(this.getASignatureArtifact()) - then result = this.getASignatureArtifact() - else result = this + ( + if exists(this.getASignatureArtifact()) + then result = this.getASignatureArtifact() + else result = this + ) + or + // [KNOWN_OR_UNKNOWN] + key = "HashAlgorithm" and + (if exists(this.getHashAlgorithm()) then result = this.getHashAlgorithm() else result = this) } } From 5b5074e9228fc51a2513c3361bea3c464364977d Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 12 Jun 2025 09:10:12 +0200 Subject: [PATCH 045/150] Rust: Add another type inference test --- .../test/library-tests/type-inference/main.rs | 5 + .../type-inference/type-inference.expected | 2454 +++++++++-------- 2 files changed, 1234 insertions(+), 1225 deletions(-) diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index 1b72e15afc9..dd741ded5d1 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -1107,6 +1107,11 @@ mod method_call_type_conversion { // implicit dereference handling doesn't affect nested borrows. let t = x7.m1(); // $ method=m1 type=t:& type=t:&T.S2 println!("{:?}", x7); + + let x9 : String = "Hello".to_string(); // $ type=x9:String + // Implicit `String` -> `str` conversion happense via the `Deref` trait: + // https://doc.rust-lang.org/std/string/struct.String.html#deref. + let u = x9.parse::(); // $ MISSING: method=parse type=u:T.u32 } } diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index bb45bea016a..f5e0989d6fa 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -1410,1233 +1410,1237 @@ inferType | main.rs:1109:26:1109:27 | x7 | | main.rs:1057:5:1058:19 | S | | main.rs:1109:26:1109:27 | x7 | T | file://:0:0:0:0 | & | | main.rs:1109:26:1109:27 | x7 | T.&T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1116:16:1116:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1116:16:1116:20 | SelfParam | &T | main.rs:1114:5:1122:5 | Self [trait MyTrait] | -| main.rs:1119:16:1119:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1119:16:1119:20 | SelfParam | &T | main.rs:1114:5:1122:5 | Self [trait MyTrait] | -| main.rs:1119:32:1121:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1119:32:1121:9 | { ... } | &T | main.rs:1114:5:1122:5 | Self [trait MyTrait] | -| main.rs:1120:13:1120:16 | self | | file://:0:0:0:0 | & | -| main.rs:1120:13:1120:16 | self | &T | main.rs:1114:5:1122:5 | Self [trait MyTrait] | -| main.rs:1120:13:1120:22 | self.foo() | | file://:0:0:0:0 | & | -| main.rs:1120:13:1120:22 | self.foo() | &T | main.rs:1114:5:1122:5 | Self [trait MyTrait] | -| main.rs:1128:16:1128:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1128:16:1128:20 | SelfParam | &T | main.rs:1124:5:1124:20 | MyStruct | -| main.rs:1128:36:1130:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1128:36:1130:9 | { ... } | &T | main.rs:1124:5:1124:20 | MyStruct | -| main.rs:1129:13:1129:16 | self | | file://:0:0:0:0 | & | -| main.rs:1129:13:1129:16 | self | &T | main.rs:1124:5:1124:20 | MyStruct | -| main.rs:1134:13:1134:13 | x | | main.rs:1124:5:1124:20 | MyStruct | -| main.rs:1134:17:1134:24 | MyStruct | | main.rs:1124:5:1124:20 | MyStruct | -| main.rs:1135:9:1135:9 | x | | main.rs:1124:5:1124:20 | MyStruct | -| main.rs:1135:9:1135:15 | x.bar() | | file://:0:0:0:0 | & | -| main.rs:1135:9:1135:15 | x.bar() | &T | main.rs:1124:5:1124:20 | MyStruct | -| main.rs:1145:16:1145:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1145:16:1145:20 | SelfParam | &T | main.rs:1142:5:1142:26 | MyStruct | -| main.rs:1145:16:1145:20 | SelfParam | &T.T | main.rs:1144:10:1144:10 | T | -| main.rs:1145:32:1147:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1145:32:1147:9 | { ... } | &T | main.rs:1142:5:1142:26 | MyStruct | -| main.rs:1145:32:1147:9 | { ... } | &T.T | main.rs:1144:10:1144:10 | T | -| main.rs:1146:13:1146:16 | self | | file://:0:0:0:0 | & | -| main.rs:1146:13:1146:16 | self | &T | main.rs:1142:5:1142:26 | MyStruct | -| main.rs:1146:13:1146:16 | self | &T.T | main.rs:1144:10:1144:10 | T | -| main.rs:1151:13:1151:13 | x | | main.rs:1142:5:1142:26 | MyStruct | -| main.rs:1151:13:1151:13 | x | T | main.rs:1140:5:1140:13 | S | -| main.rs:1151:17:1151:27 | MyStruct(...) | | main.rs:1142:5:1142:26 | MyStruct | -| main.rs:1151:17:1151:27 | MyStruct(...) | T | main.rs:1140:5:1140:13 | S | -| main.rs:1151:26:1151:26 | S | | main.rs:1140:5:1140:13 | S | -| main.rs:1152:9:1152:9 | x | | main.rs:1142:5:1142:26 | MyStruct | -| main.rs:1152:9:1152:9 | x | T | main.rs:1140:5:1140:13 | S | -| main.rs:1152:9:1152:15 | x.foo() | | file://:0:0:0:0 | & | -| main.rs:1152:9:1152:15 | x.foo() | &T | main.rs:1142:5:1142:26 | MyStruct | -| main.rs:1152:9:1152:15 | x.foo() | &T.T | main.rs:1140:5:1140:13 | S | -| main.rs:1163:17:1163:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1163:17:1163:25 | SelfParam | &T | main.rs:1157:5:1160:5 | MyFlag | -| main.rs:1164:13:1164:16 | self | | file://:0:0:0:0 | & | -| main.rs:1164:13:1164:16 | self | &T | main.rs:1157:5:1160:5 | MyFlag | -| main.rs:1164:13:1164:21 | self.bool | | {EXTERNAL LOCATION} | bool | -| main.rs:1164:13:1164:34 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1164:25:1164:34 | ! ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1164:26:1164:29 | self | | file://:0:0:0:0 | & | -| main.rs:1164:26:1164:29 | self | &T | main.rs:1157:5:1160:5 | MyFlag | -| main.rs:1164:26:1164:34 | self.bool | | {EXTERNAL LOCATION} | bool | -| main.rs:1171:15:1171:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1171:15:1171:19 | SelfParam | &T | main.rs:1168:5:1168:13 | S | -| main.rs:1171:31:1173:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1171:31:1173:9 | { ... } | &T | file://:0:0:0:0 | & | -| main.rs:1171:31:1173:9 | { ... } | &T | main.rs:1168:5:1168:13 | S | -| main.rs:1171:31:1173:9 | { ... } | &T.&T | file://:0:0:0:0 | & | -| main.rs:1171:31:1173:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1171:31:1173:9 | { ... } | &T.&T.&T.&T | main.rs:1168:5:1168:13 | S | -| main.rs:1172:13:1172:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1172:13:1172:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1172:13:1172:19 | &... | &T | main.rs:1168:5:1168:13 | S | -| main.rs:1172:13:1172:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1172:13:1172:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1172:13:1172:19 | &... | &T.&T.&T.&T | main.rs:1168:5:1168:13 | S | -| main.rs:1172:14:1172:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1172:14:1172:19 | &... | | main.rs:1168:5:1168:13 | S | -| main.rs:1172:14:1172:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1172:14:1172:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1172:14:1172:19 | &... | &T.&T.&T | main.rs:1168:5:1168:13 | S | -| main.rs:1172:15:1172:19 | &self | | file://:0:0:0:0 | & | -| main.rs:1172:15:1172:19 | &self | &T | file://:0:0:0:0 | & | -| main.rs:1172:15:1172:19 | &self | &T.&T | main.rs:1168:5:1168:13 | S | -| main.rs:1172:16:1172:19 | self | | file://:0:0:0:0 | & | -| main.rs:1172:16:1172:19 | self | &T | main.rs:1168:5:1168:13 | S | -| main.rs:1175:15:1175:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1175:15:1175:25 | SelfParam | &T | main.rs:1168:5:1168:13 | S | -| main.rs:1175:37:1177:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1175:37:1177:9 | { ... } | &T | file://:0:0:0:0 | & | -| main.rs:1175:37:1177:9 | { ... } | &T | main.rs:1168:5:1168:13 | S | -| main.rs:1175:37:1177:9 | { ... } | &T.&T | file://:0:0:0:0 | & | -| main.rs:1175:37:1177:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1175:37:1177:9 | { ... } | &T.&T.&T.&T | main.rs:1168:5:1168:13 | S | -| main.rs:1176:13:1176:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1176:13:1176:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1176:13:1176:19 | &... | &T | main.rs:1168:5:1168:13 | S | -| main.rs:1176:13:1176:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1176:13:1176:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1176:13:1176:19 | &... | &T.&T.&T.&T | main.rs:1168:5:1168:13 | S | -| main.rs:1176:14:1176:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1176:14:1176:19 | &... | | main.rs:1168:5:1168:13 | S | -| main.rs:1176:14:1176:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1176:14:1176:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1176:14:1176:19 | &... | &T.&T.&T | main.rs:1168:5:1168:13 | S | -| main.rs:1176:15:1176:19 | &self | | file://:0:0:0:0 | & | -| main.rs:1176:15:1176:19 | &self | &T | file://:0:0:0:0 | & | -| main.rs:1176:15:1176:19 | &self | &T.&T | main.rs:1168:5:1168:13 | S | -| main.rs:1176:16:1176:19 | self | | file://:0:0:0:0 | & | -| main.rs:1176:16:1176:19 | self | &T | main.rs:1168:5:1168:13 | S | -| main.rs:1179:15:1179:15 | x | | file://:0:0:0:0 | & | -| main.rs:1179:15:1179:15 | x | &T | main.rs:1168:5:1168:13 | S | -| main.rs:1179:34:1181:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1179:34:1181:9 | { ... } | &T | main.rs:1168:5:1168:13 | S | -| main.rs:1180:13:1180:13 | x | | file://:0:0:0:0 | & | -| main.rs:1180:13:1180:13 | x | &T | main.rs:1168:5:1168:13 | S | -| main.rs:1183:15:1183:15 | x | | file://:0:0:0:0 | & | -| main.rs:1183:15:1183:15 | x | &T | main.rs:1168:5:1168:13 | S | -| main.rs:1183:34:1185:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1183:34:1185:9 | { ... } | &T | file://:0:0:0:0 | & | -| main.rs:1183:34:1185:9 | { ... } | &T | main.rs:1168:5:1168:13 | S | -| main.rs:1183:34:1185:9 | { ... } | &T.&T | file://:0:0:0:0 | & | -| main.rs:1183:34:1185:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1183:34:1185:9 | { ... } | &T.&T.&T.&T | main.rs:1168:5:1168:13 | S | -| main.rs:1184:13:1184:16 | &... | | file://:0:0:0:0 | & | -| main.rs:1184:13:1184:16 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1184:13:1184:16 | &... | &T | main.rs:1168:5:1168:13 | S | -| main.rs:1184:13:1184:16 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1184:13:1184:16 | &... | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1184:13:1184:16 | &... | &T.&T.&T.&T | main.rs:1168:5:1168:13 | S | -| main.rs:1184:14:1184:16 | &... | | file://:0:0:0:0 | & | -| main.rs:1184:14:1184:16 | &... | | main.rs:1168:5:1168:13 | S | -| main.rs:1184:14:1184:16 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1184:14:1184:16 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1184:14:1184:16 | &... | &T.&T.&T | main.rs:1168:5:1168:13 | S | -| main.rs:1184:15:1184:16 | &x | | file://:0:0:0:0 | & | -| main.rs:1184:15:1184:16 | &x | &T | file://:0:0:0:0 | & | -| main.rs:1184:15:1184:16 | &x | &T.&T | main.rs:1168:5:1168:13 | S | -| main.rs:1184:16:1184:16 | x | | file://:0:0:0:0 | & | -| main.rs:1184:16:1184:16 | x | &T | main.rs:1168:5:1168:13 | S | -| main.rs:1189:13:1189:13 | x | | main.rs:1168:5:1168:13 | S | -| main.rs:1189:17:1189:20 | S {...} | | main.rs:1168:5:1168:13 | S | -| main.rs:1190:9:1190:9 | x | | main.rs:1168:5:1168:13 | S | -| main.rs:1190:9:1190:14 | x.f1() | | file://:0:0:0:0 | & | -| main.rs:1190:9:1190:14 | x.f1() | &T | main.rs:1168:5:1168:13 | S | -| main.rs:1191:9:1191:9 | x | | main.rs:1168:5:1168:13 | S | -| main.rs:1191:9:1191:14 | x.f2() | | file://:0:0:0:0 | & | -| main.rs:1191:9:1191:14 | x.f2() | &T | main.rs:1168:5:1168:13 | S | -| main.rs:1192:9:1192:17 | ...::f3(...) | | file://:0:0:0:0 | & | -| main.rs:1192:9:1192:17 | ...::f3(...) | &T | main.rs:1168:5:1168:13 | S | -| main.rs:1192:15:1192:16 | &x | | file://:0:0:0:0 | & | -| main.rs:1192:15:1192:16 | &x | &T | main.rs:1168:5:1168:13 | S | -| main.rs:1192:16:1192:16 | x | | main.rs:1168:5:1168:13 | S | -| main.rs:1194:13:1194:13 | n | | {EXTERNAL LOCATION} | bool | -| main.rs:1194:13:1194:13 | n | | file://:0:0:0:0 | & | -| main.rs:1194:17:1194:24 | * ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1194:17:1194:24 | * ... | | file://:0:0:0:0 | & | -| main.rs:1194:18:1194:24 | * ... | | file://:0:0:0:0 | & | -| main.rs:1194:18:1194:24 | * ... | &T | {EXTERNAL LOCATION} | bool | -| main.rs:1194:18:1194:24 | * ... | &T | file://:0:0:0:0 | & | -| main.rs:1194:19:1194:24 | &... | | file://:0:0:0:0 | & | -| main.rs:1194:19:1194:24 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1194:19:1194:24 | &... | &T.&T | {EXTERNAL LOCATION} | bool | -| main.rs:1194:19:1194:24 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1194:20:1194:24 | &true | | file://:0:0:0:0 | & | -| main.rs:1194:20:1194:24 | &true | &T | {EXTERNAL LOCATION} | bool | -| main.rs:1194:20:1194:24 | &true | &T | file://:0:0:0:0 | & | -| main.rs:1194:21:1194:24 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1194:21:1194:24 | true | | file://:0:0:0:0 | & | -| main.rs:1198:13:1198:20 | mut flag | | main.rs:1157:5:1160:5 | MyFlag | -| main.rs:1198:24:1198:41 | ...::default(...) | | main.rs:1157:5:1160:5 | MyFlag | -| main.rs:1199:22:1199:30 | &mut flag | | file://:0:0:0:0 | & | -| main.rs:1199:22:1199:30 | &mut flag | &T | main.rs:1157:5:1160:5 | MyFlag | -| main.rs:1199:27:1199:30 | flag | | main.rs:1157:5:1160:5 | MyFlag | -| main.rs:1200:18:1200:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1200:26:1200:29 | flag | | main.rs:1157:5:1160:5 | MyFlag | -| main.rs:1214:43:1217:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1214:43:1217:5 | { ... } | E | main.rs:1207:5:1208:14 | S1 | -| main.rs:1214:43:1217:5 | { ... } | T | main.rs:1207:5:1208:14 | S1 | -| main.rs:1215:13:1215:13 | x | | main.rs:1207:5:1208:14 | S1 | -| main.rs:1215:17:1215:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1215:17:1215:30 | ...::Ok(...) | T | main.rs:1207:5:1208:14 | S1 | -| main.rs:1215:17:1215:31 | TryExpr | | main.rs:1207:5:1208:14 | S1 | -| main.rs:1215:28:1215:29 | S1 | | main.rs:1207:5:1208:14 | S1 | -| main.rs:1216:9:1216:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1216:9:1216:22 | ...::Ok(...) | E | main.rs:1207:5:1208:14 | S1 | -| main.rs:1216:9:1216:22 | ...::Ok(...) | T | main.rs:1207:5:1208:14 | S1 | -| main.rs:1216:20:1216:21 | S1 | | main.rs:1207:5:1208:14 | S1 | -| main.rs:1220:46:1224:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1220:46:1224:5 | { ... } | E | main.rs:1210:5:1211:14 | S2 | -| main.rs:1220:46:1224:5 | { ... } | T | main.rs:1207:5:1208:14 | S1 | -| main.rs:1221:13:1221:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1221:13:1221:13 | x | T | main.rs:1207:5:1208:14 | S1 | -| main.rs:1221:17:1221:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1221:17:1221:30 | ...::Ok(...) | T | main.rs:1207:5:1208:14 | S1 | -| main.rs:1221:28:1221:29 | S1 | | main.rs:1207:5:1208:14 | S1 | -| main.rs:1222:13:1222:13 | y | | main.rs:1207:5:1208:14 | S1 | -| main.rs:1222:17:1222:17 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1222:17:1222:17 | x | T | main.rs:1207:5:1208:14 | S1 | -| main.rs:1222:17:1222:18 | TryExpr | | main.rs:1207:5:1208:14 | S1 | -| main.rs:1223:9:1223:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1223:9:1223:22 | ...::Ok(...) | E | main.rs:1210:5:1211:14 | S2 | -| main.rs:1223:9:1223:22 | ...::Ok(...) | T | main.rs:1207:5:1208:14 | S1 | -| main.rs:1223:20:1223:21 | S1 | | main.rs:1207:5:1208:14 | S1 | -| main.rs:1227:40:1232:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1227:40:1232:5 | { ... } | E | main.rs:1210:5:1211:14 | S2 | -| main.rs:1227:40:1232:5 | { ... } | T | main.rs:1207:5:1208:14 | S1 | -| main.rs:1228:13:1228:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1228:13:1228:13 | x | T | {EXTERNAL LOCATION} | Result | -| main.rs:1228:13:1228:13 | x | T.T | main.rs:1207:5:1208:14 | S1 | -| main.rs:1228:17:1228:42 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1228:17:1228:42 | ...::Ok(...) | T | {EXTERNAL LOCATION} | Result | -| main.rs:1228:17:1228:42 | ...::Ok(...) | T.T | main.rs:1207:5:1208:14 | S1 | -| main.rs:1228:28:1228:41 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1228:28:1228:41 | ...::Ok(...) | T | main.rs:1207:5:1208:14 | S1 | -| main.rs:1228:39:1228:40 | S1 | | main.rs:1207:5:1208:14 | S1 | -| main.rs:1230:17:1230:17 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1230:17:1230:17 | x | T | {EXTERNAL LOCATION} | Result | -| main.rs:1230:17:1230:17 | x | T.T | main.rs:1207:5:1208:14 | S1 | -| main.rs:1230:17:1230:18 | TryExpr | | {EXTERNAL LOCATION} | Result | -| main.rs:1230:17:1230:18 | TryExpr | T | main.rs:1207:5:1208:14 | S1 | -| main.rs:1230:17:1230:29 | ... .map(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1231:9:1231:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1231:9:1231:22 | ...::Ok(...) | E | main.rs:1210:5:1211:14 | S2 | -| main.rs:1231:9:1231:22 | ...::Ok(...) | T | main.rs:1207:5:1208:14 | S1 | -| main.rs:1231:20:1231:21 | S1 | | main.rs:1207:5:1208:14 | S1 | -| main.rs:1235:30:1235:34 | input | | {EXTERNAL LOCATION} | Result | -| main.rs:1235:30:1235:34 | input | E | main.rs:1207:5:1208:14 | S1 | -| main.rs:1235:30:1235:34 | input | T | main.rs:1235:20:1235:27 | T | -| main.rs:1235:69:1242:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1235:69:1242:5 | { ... } | E | main.rs:1207:5:1208:14 | S1 | -| main.rs:1235:69:1242:5 | { ... } | T | main.rs:1235:20:1235:27 | T | -| main.rs:1236:13:1236:17 | value | | main.rs:1235:20:1235:27 | T | -| main.rs:1236:21:1236:25 | input | | {EXTERNAL LOCATION} | Result | -| main.rs:1236:21:1236:25 | input | E | main.rs:1207:5:1208:14 | S1 | -| main.rs:1236:21:1236:25 | input | T | main.rs:1235:20:1235:27 | T | -| main.rs:1236:21:1236:26 | TryExpr | | main.rs:1235:20:1235:27 | T | -| main.rs:1237:22:1237:38 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1237:22:1237:38 | ...::Ok(...) | T | main.rs:1235:20:1235:27 | T | -| main.rs:1237:22:1240:10 | ... .and_then(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1237:33:1237:37 | value | | main.rs:1235:20:1235:27 | T | -| main.rs:1237:53:1240:9 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1237:53:1240:9 | { ... } | E | main.rs:1207:5:1208:14 | S1 | -| main.rs:1238:22:1238:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1239:13:1239:34 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1239:13:1239:34 | ...::Ok::<...>(...) | E | main.rs:1207:5:1208:14 | S1 | -| main.rs:1241:9:1241:23 | ...::Err(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1241:9:1241:23 | ...::Err(...) | E | main.rs:1207:5:1208:14 | S1 | -| main.rs:1241:9:1241:23 | ...::Err(...) | T | main.rs:1235:20:1235:27 | T | -| main.rs:1241:21:1241:22 | S1 | | main.rs:1207:5:1208:14 | S1 | -| main.rs:1245:37:1245:52 | try_same_error(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1245:37:1245:52 | try_same_error(...) | E | main.rs:1207:5:1208:14 | S1 | -| main.rs:1245:37:1245:52 | try_same_error(...) | T | main.rs:1207:5:1208:14 | S1 | -| main.rs:1246:22:1246:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1249:37:1249:55 | try_convert_error(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1249:37:1249:55 | try_convert_error(...) | E | main.rs:1210:5:1211:14 | S2 | -| main.rs:1249:37:1249:55 | try_convert_error(...) | T | main.rs:1207:5:1208:14 | S1 | -| main.rs:1250:22:1250:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1253:37:1253:49 | try_chained(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1253:37:1253:49 | try_chained(...) | E | main.rs:1210:5:1211:14 | S2 | -| main.rs:1253:37:1253:49 | try_chained(...) | T | main.rs:1207:5:1208:14 | S1 | -| main.rs:1254:22:1254:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1257:37:1257:63 | try_complex(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1257:37:1257:63 | try_complex(...) | E | main.rs:1207:5:1208:14 | S1 | -| main.rs:1257:37:1257:63 | try_complex(...) | T | main.rs:1207:5:1208:14 | S1 | -| main.rs:1257:49:1257:62 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1257:49:1257:62 | ...::Ok(...) | E | main.rs:1207:5:1208:14 | S1 | -| main.rs:1257:49:1257:62 | ...::Ok(...) | T | main.rs:1207:5:1208:14 | S1 | -| main.rs:1257:60:1257:61 | S1 | | main.rs:1207:5:1208:14 | S1 | -| main.rs:1258:22:1258:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1265:13:1265:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1265:22:1265:22 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1266:13:1266:13 | y | | {EXTERNAL LOCATION} | i32 | -| main.rs:1266:17:1266:17 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1267:13:1267:13 | z | | {EXTERNAL LOCATION} | i32 | -| main.rs:1267:17:1267:17 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1267:17:1267:21 | ... + ... | | {EXTERNAL LOCATION} | i32 | -| main.rs:1267:21:1267:21 | y | | {EXTERNAL LOCATION} | i32 | -| main.rs:1268:13:1268:13 | z | | {EXTERNAL LOCATION} | i32 | -| main.rs:1268:17:1268:17 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1268:17:1268:23 | x.abs() | | {EXTERNAL LOCATION} | i32 | -| main.rs:1269:13:1269:13 | c | | {EXTERNAL LOCATION} | char | -| main.rs:1269:17:1269:19 | 'c' | | {EXTERNAL LOCATION} | char | -| main.rs:1270:13:1270:17 | hello | | {EXTERNAL LOCATION} | str | -| main.rs:1270:21:1270:27 | "Hello" | | {EXTERNAL LOCATION} | str | -| main.rs:1271:13:1271:13 | f | | {EXTERNAL LOCATION} | f64 | -| main.rs:1271:17:1271:24 | 123.0f64 | | {EXTERNAL LOCATION} | f64 | -| main.rs:1272:13:1272:13 | t | | {EXTERNAL LOCATION} | bool | -| main.rs:1272:17:1272:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1273:13:1273:13 | f | | {EXTERNAL LOCATION} | bool | -| main.rs:1273:17:1273:21 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1280:13:1280:13 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:1280:17:1280:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1280:17:1280:29 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1280:25:1280:29 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1281:13:1281:13 | y | | {EXTERNAL LOCATION} | bool | -| main.rs:1281:17:1281:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1281:17:1281:29 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1281:25:1281:29 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1283:13:1283:17 | mut a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1284:13:1284:16 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:1284:20:1284:21 | 34 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1284:20:1284:27 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1284:26:1284:27 | 33 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1285:12:1285:15 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:1286:17:1286:17 | z | | file://:0:0:0:0 | () | -| main.rs:1286:21:1286:27 | (...) | | file://:0:0:0:0 | () | -| main.rs:1286:22:1286:22 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1286:22:1286:26 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1286:26:1286:26 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1288:13:1288:13 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1288:13:1288:17 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1288:17:1288:17 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1290:9:1290:9 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1307:16:1307:19 | SelfParam | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1307:22:1307:24 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1307:41:1312:9 | { ... } | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1308:13:1311:13 | Vec2 {...} | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1309:20:1309:23 | self | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1309:20:1309:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1309:20:1309:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1309:29:1309:31 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1309:29:1309:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1310:20:1310:23 | self | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1310:20:1310:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1310:20:1310:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1310:29:1310:31 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1310:29:1310:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1317:23:1317:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1317:23:1317:31 | SelfParam | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1317:34:1317:36 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1318:13:1318:16 | self | | file://:0:0:0:0 | & | -| main.rs:1318:13:1318:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1318:13:1318:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1318:13:1318:27 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1318:23:1318:25 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1318:23:1318:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1319:13:1319:16 | self | | file://:0:0:0:0 | & | -| main.rs:1319:13:1319:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1319:13:1319:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1319:13:1319:27 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1319:23:1319:25 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1319:23:1319:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1325:16:1325:19 | SelfParam | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1325:22:1325:24 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1325:41:1330:9 | { ... } | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1326:13:1329:13 | Vec2 {...} | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1327:20:1327:23 | self | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1327:20:1327:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1327:20:1327:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1327:29:1327:31 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1327:29:1327:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1328:20:1328:23 | self | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1328:20:1328:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1328:20:1328:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1328:29:1328:31 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1328:29:1328:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1335:23:1335:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1335:23:1335:31 | SelfParam | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1335:34:1335:36 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1336:13:1336:16 | self | | file://:0:0:0:0 | & | -| main.rs:1336:13:1336:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1336:13:1336:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1336:13:1336:27 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1336:23:1336:25 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1336:23:1336:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1337:13:1337:16 | self | | file://:0:0:0:0 | & | -| main.rs:1337:13:1337:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1337:13:1337:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1337:13:1337:27 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1337:23:1337:25 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1337:23:1337:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1343:16:1343:19 | SelfParam | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1343:22:1343:24 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1343:41:1348:9 | { ... } | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1344:13:1347:13 | Vec2 {...} | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1345:20:1345:23 | self | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1345:20:1345:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1345:20:1345:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1345:29:1345:31 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1345:29:1345:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1346:20:1346:23 | self | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1346:20:1346:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1346:20:1346:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1346:29:1346:31 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1346:29:1346:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1352:23:1352:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1352:23:1352:31 | SelfParam | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1352:34:1352:36 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1353:13:1353:16 | self | | file://:0:0:0:0 | & | -| main.rs:1353:13:1353:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1353:13:1353:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1353:13:1353:27 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1353:23:1353:25 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1353:23:1353:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1354:13:1354:16 | self | | file://:0:0:0:0 | & | -| main.rs:1354:13:1354:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1354:13:1354:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1354:13:1354:27 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1354:23:1354:25 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1354:23:1354:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1360:16:1360:19 | SelfParam | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1360:22:1360:24 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1360:41:1365:9 | { ... } | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1361:13:1364:13 | Vec2 {...} | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1362:20:1362:23 | self | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1362:20:1362:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1362:20:1362:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1362:29:1362:31 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1362:29:1362:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1363:20:1363:23 | self | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1363:20:1363:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1363:20:1363:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1363:29:1363:31 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1363:29:1363:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1369:23:1369:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1369:23:1369:31 | SelfParam | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1369:34:1369:36 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1370:13:1370:16 | self | | file://:0:0:0:0 | & | -| main.rs:1370:13:1370:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1370:13:1370:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1370:13:1370:27 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1370:23:1370:25 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1370:23:1370:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1371:13:1371:16 | self | | file://:0:0:0:0 | & | -| main.rs:1371:13:1371:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1371:13:1371:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1371:13:1371:27 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1371:23:1371:25 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1371:23:1371:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1377:16:1377:19 | SelfParam | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1377:22:1377:24 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1377:41:1382:9 | { ... } | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1378:13:1381:13 | Vec2 {...} | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1379:20:1379:23 | self | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1379:20:1379:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1379:20:1379:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1379:29:1379:31 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1379:29:1379:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1380:20:1380:23 | self | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1380:20:1380:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1380:20:1380:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1380:29:1380:31 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1380:29:1380:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1386:23:1386:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1386:23:1386:31 | SelfParam | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1386:34:1386:36 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1387:13:1387:16 | self | | file://:0:0:0:0 | & | -| main.rs:1387:13:1387:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1387:13:1387:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1387:13:1387:27 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1387:23:1387:25 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1387:23:1387:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1388:13:1388:16 | self | | file://:0:0:0:0 | & | -| main.rs:1388:13:1388:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1388:13:1388:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1388:13:1388:27 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1388:23:1388:25 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1388:23:1388:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1394:19:1394:22 | SelfParam | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1394:25:1394:27 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1394:44:1399:9 | { ... } | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1395:13:1398:13 | Vec2 {...} | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1396:20:1396:23 | self | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1396:20:1396:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1396:20:1396:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1396:29:1396:31 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1396:29:1396:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1397:20:1397:23 | self | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1397:20:1397:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1397:20:1397:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1397:29:1397:31 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1397:29:1397:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1403:26:1403:34 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1403:26:1403:34 | SelfParam | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1403:37:1403:39 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1404:13:1404:16 | self | | file://:0:0:0:0 | & | -| main.rs:1404:13:1404:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1404:13:1404:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1404:13:1404:27 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1404:23:1404:25 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1404:23:1404:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1405:13:1405:16 | self | | file://:0:0:0:0 | & | -| main.rs:1405:13:1405:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1405:13:1405:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1405:13:1405:27 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1405:23:1405:25 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1405:23:1405:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1411:18:1411:21 | SelfParam | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1411:24:1411:26 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1411:43:1416:9 | { ... } | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1412:13:1415:13 | Vec2 {...} | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1413:20:1413:23 | self | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1413:20:1413:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1413:20:1413:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1413:29:1413:31 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1413:29:1413:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1414:20:1414:23 | self | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1414:20:1414:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1414:20:1414:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1414:29:1414:31 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1414:29:1414:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1420:25:1420:33 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1420:25:1420:33 | SelfParam | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1420:36:1420:38 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1421:13:1421:16 | self | | file://:0:0:0:0 | & | -| main.rs:1421:13:1421:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1421:13:1421:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1421:13:1421:27 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1421:23:1421:25 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1421:23:1421:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1422:13:1422:16 | self | | file://:0:0:0:0 | & | -| main.rs:1422:13:1422:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1422:13:1422:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1422:13:1422:27 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1422:23:1422:25 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1422:23:1422:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1428:19:1428:22 | SelfParam | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1428:25:1428:27 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1428:44:1433:9 | { ... } | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1429:13:1432:13 | Vec2 {...} | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1430:20:1430:23 | self | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1430:20:1430:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1430:20:1430:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1430:29:1430:31 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1430:29:1430:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1431:20:1431:23 | self | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1431:20:1431:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1431:20:1431:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1431:29:1431:31 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1431:29:1431:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1437:26:1437:34 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1437:26:1437:34 | SelfParam | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1437:37:1437:39 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1438:13:1438:16 | self | | file://:0:0:0:0 | & | -| main.rs:1438:13:1438:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1438:13:1438:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1438:13:1438:27 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1438:23:1438:25 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1438:23:1438:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1439:13:1439:16 | self | | file://:0:0:0:0 | & | -| main.rs:1439:13:1439:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1439:13:1439:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1439:13:1439:27 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1439:23:1439:25 | rhs | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1439:23:1439:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1445:16:1445:19 | SelfParam | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1445:22:1445:24 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1445:40:1450:9 | { ... } | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1446:13:1449:13 | Vec2 {...} | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1447:20:1447:23 | self | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1447:20:1447:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1447:20:1447:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1447:30:1447:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1448:20:1448:23 | self | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1448:20:1448:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1448:20:1448:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1448:30:1448:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1454:23:1454:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1454:23:1454:31 | SelfParam | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1454:34:1454:36 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1455:13:1455:16 | self | | file://:0:0:0:0 | & | -| main.rs:1455:13:1455:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1455:13:1455:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1455:13:1455:26 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1455:24:1455:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1456:13:1456:16 | self | | file://:0:0:0:0 | & | -| main.rs:1456:13:1456:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1456:13:1456:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1456:13:1456:26 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1456:24:1456:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1462:16:1462:19 | SelfParam | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1462:22:1462:24 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1462:40:1467:9 | { ... } | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1463:13:1466:13 | Vec2 {...} | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1464:20:1464:23 | self | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1464:20:1464:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1464:20:1464:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1464:30:1464:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1465:20:1465:23 | self | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1465:20:1465:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1465:20:1465:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1465:30:1465:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1471:23:1471:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1471:23:1471:31 | SelfParam | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1471:34:1471:36 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1472:13:1472:16 | self | | file://:0:0:0:0 | & | -| main.rs:1472:13:1472:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1472:13:1472:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1472:13:1472:26 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1472:24:1472:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1473:13:1473:16 | self | | file://:0:0:0:0 | & | -| main.rs:1473:13:1473:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1473:13:1473:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1473:13:1473:26 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1473:24:1473:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1479:16:1479:19 | SelfParam | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1479:30:1484:9 | { ... } | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1480:13:1483:13 | Vec2 {...} | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1481:20:1481:26 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1481:21:1481:24 | self | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1481:21:1481:26 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1482:20:1482:26 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1482:21:1482:24 | self | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1482:21:1482:26 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1489:16:1489:19 | SelfParam | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1489:30:1494:9 | { ... } | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1490:13:1493:13 | Vec2 {...} | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1491:20:1491:26 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1491:21:1491:24 | self | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1491:21:1491:26 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1492:20:1492:26 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1492:21:1492:24 | self | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1492:21:1492:26 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1498:15:1498:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1498:15:1498:19 | SelfParam | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1498:22:1498:26 | other | | file://:0:0:0:0 | & | -| main.rs:1498:22:1498:26 | other | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1498:44:1500:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1499:13:1499:16 | self | | file://:0:0:0:0 | & | -| main.rs:1499:13:1499:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1499:13:1499:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1499:13:1499:29 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1499:13:1499:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1499:23:1499:27 | other | | file://:0:0:0:0 | & | -| main.rs:1499:23:1499:27 | other | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1499:23:1499:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1499:34:1499:37 | self | | file://:0:0:0:0 | & | -| main.rs:1499:34:1499:37 | self | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1499:34:1499:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1499:34:1499:50 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1499:44:1499:48 | other | | file://:0:0:0:0 | & | -| main.rs:1499:44:1499:48 | other | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1499:44:1499:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1502:15:1502:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1502:15:1502:19 | SelfParam | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1502:22:1502:26 | other | | file://:0:0:0:0 | & | -| main.rs:1502:22:1502:26 | other | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1502:44:1504:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1503:13:1503:16 | self | | file://:0:0:0:0 | & | -| main.rs:1503:13:1503:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1503:13:1503:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1503:13:1503:29 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1503:13:1503:50 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1503:23:1503:27 | other | | file://:0:0:0:0 | & | -| main.rs:1503:23:1503:27 | other | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1503:23:1503:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1503:34:1503:37 | self | | file://:0:0:0:0 | & | -| main.rs:1503:34:1503:37 | self | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1503:34:1503:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1503:34:1503:50 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1503:44:1503:48 | other | | file://:0:0:0:0 | & | -| main.rs:1503:44:1503:48 | other | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1503:44:1503:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1508:24:1508:28 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1508:24:1508:28 | SelfParam | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1508:31:1508:35 | other | | file://:0:0:0:0 | & | -| main.rs:1508:31:1508:35 | other | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1508:75:1510:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:1508:75:1510:9 | { ... } | T | {EXTERNAL LOCATION} | Ordering | -| main.rs:1509:13:1509:29 | (...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1509:13:1509:63 | ... .partial_cmp(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:1509:13:1509:63 | ... .partial_cmp(...) | T | {EXTERNAL LOCATION} | Ordering | -| main.rs:1509:14:1509:17 | self | | file://:0:0:0:0 | & | -| main.rs:1509:14:1509:17 | self | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1509:14:1509:19 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1509:14:1509:28 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1509:23:1509:26 | self | | file://:0:0:0:0 | & | -| main.rs:1509:23:1509:26 | self | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1509:23:1509:28 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1509:43:1509:62 | &... | | file://:0:0:0:0 | & | -| main.rs:1509:43:1509:62 | &... | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:1509:44:1509:62 | (...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1509:45:1509:49 | other | | file://:0:0:0:0 | & | -| main.rs:1509:45:1509:49 | other | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1509:45:1509:51 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1509:45:1509:61 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1509:55:1509:59 | other | | file://:0:0:0:0 | & | -| main.rs:1509:55:1509:59 | other | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1509:55:1509:61 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1512:15:1512:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1512:15:1512:19 | SelfParam | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1512:22:1512:26 | other | | file://:0:0:0:0 | & | -| main.rs:1512:22:1512:26 | other | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1512:44:1514:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1513:13:1513:16 | self | | file://:0:0:0:0 | & | -| main.rs:1513:13:1513:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1513:13:1513:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1513:13:1513:28 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1513:13:1513:48 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1513:22:1513:26 | other | | file://:0:0:0:0 | & | -| main.rs:1513:22:1513:26 | other | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1513:22:1513:28 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1513:33:1513:36 | self | | file://:0:0:0:0 | & | -| main.rs:1513:33:1513:36 | self | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1513:33:1513:38 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1513:33:1513:48 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1513:42:1513:46 | other | | file://:0:0:0:0 | & | -| main.rs:1513:42:1513:46 | other | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1513:42:1513:48 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1516:15:1516:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1516:15:1516:19 | SelfParam | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1516:22:1516:26 | other | | file://:0:0:0:0 | & | -| main.rs:1516:22:1516:26 | other | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1516:44:1518:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1517:13:1517:16 | self | | file://:0:0:0:0 | & | -| main.rs:1517:13:1517:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1517:13:1517:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1517:13:1517:29 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1517:13:1517:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1517:23:1517:27 | other | | file://:0:0:0:0 | & | -| main.rs:1517:23:1517:27 | other | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1517:23:1517:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1517:34:1517:37 | self | | file://:0:0:0:0 | & | -| main.rs:1517:34:1517:37 | self | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1517:34:1517:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1517:34:1517:50 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1517:44:1517:48 | other | | file://:0:0:0:0 | & | -| main.rs:1517:44:1517:48 | other | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1517:44:1517:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1520:15:1520:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1520:15:1520:19 | SelfParam | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1520:22:1520:26 | other | | file://:0:0:0:0 | & | -| main.rs:1520:22:1520:26 | other | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1520:44:1522:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1521:13:1521:16 | self | | file://:0:0:0:0 | & | -| main.rs:1521:13:1521:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1521:13:1521:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1521:13:1521:28 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1521:13:1521:48 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1111:13:1111:14 | x9 | | {EXTERNAL LOCATION} | String | +| main.rs:1111:27:1111:33 | "Hello" | | {EXTERNAL LOCATION} | str | +| main.rs:1111:27:1111:45 | "Hello".to_string() | | {EXTERNAL LOCATION} | String | +| main.rs:1114:17:1114:18 | x9 | | {EXTERNAL LOCATION} | String | +| main.rs:1121:16:1121:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1121:16:1121:20 | SelfParam | &T | main.rs:1119:5:1127:5 | Self [trait MyTrait] | +| main.rs:1124:16:1124:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1124:16:1124:20 | SelfParam | &T | main.rs:1119:5:1127:5 | Self [trait MyTrait] | +| main.rs:1124:32:1126:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1124:32:1126:9 | { ... } | &T | main.rs:1119:5:1127:5 | Self [trait MyTrait] | +| main.rs:1125:13:1125:16 | self | | file://:0:0:0:0 | & | +| main.rs:1125:13:1125:16 | self | &T | main.rs:1119:5:1127:5 | Self [trait MyTrait] | +| main.rs:1125:13:1125:22 | self.foo() | | file://:0:0:0:0 | & | +| main.rs:1125:13:1125:22 | self.foo() | &T | main.rs:1119:5:1127:5 | Self [trait MyTrait] | +| main.rs:1133:16:1133:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1133:16:1133:20 | SelfParam | &T | main.rs:1129:5:1129:20 | MyStruct | +| main.rs:1133:36:1135:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1133:36:1135:9 | { ... } | &T | main.rs:1129:5:1129:20 | MyStruct | +| main.rs:1134:13:1134:16 | self | | file://:0:0:0:0 | & | +| main.rs:1134:13:1134:16 | self | &T | main.rs:1129:5:1129:20 | MyStruct | +| main.rs:1139:13:1139:13 | x | | main.rs:1129:5:1129:20 | MyStruct | +| main.rs:1139:17:1139:24 | MyStruct | | main.rs:1129:5:1129:20 | MyStruct | +| main.rs:1140:9:1140:9 | x | | main.rs:1129:5:1129:20 | MyStruct | +| main.rs:1140:9:1140:15 | x.bar() | | file://:0:0:0:0 | & | +| main.rs:1140:9:1140:15 | x.bar() | &T | main.rs:1129:5:1129:20 | MyStruct | +| main.rs:1150:16:1150:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1150:16:1150:20 | SelfParam | &T | main.rs:1147:5:1147:26 | MyStruct | +| main.rs:1150:16:1150:20 | SelfParam | &T.T | main.rs:1149:10:1149:10 | T | +| main.rs:1150:32:1152:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1150:32:1152:9 | { ... } | &T | main.rs:1147:5:1147:26 | MyStruct | +| main.rs:1150:32:1152:9 | { ... } | &T.T | main.rs:1149:10:1149:10 | T | +| main.rs:1151:13:1151:16 | self | | file://:0:0:0:0 | & | +| main.rs:1151:13:1151:16 | self | &T | main.rs:1147:5:1147:26 | MyStruct | +| main.rs:1151:13:1151:16 | self | &T.T | main.rs:1149:10:1149:10 | T | +| main.rs:1156:13:1156:13 | x | | main.rs:1147:5:1147:26 | MyStruct | +| main.rs:1156:13:1156:13 | x | T | main.rs:1145:5:1145:13 | S | +| main.rs:1156:17:1156:27 | MyStruct(...) | | main.rs:1147:5:1147:26 | MyStruct | +| main.rs:1156:17:1156:27 | MyStruct(...) | T | main.rs:1145:5:1145:13 | S | +| main.rs:1156:26:1156:26 | S | | main.rs:1145:5:1145:13 | S | +| main.rs:1157:9:1157:9 | x | | main.rs:1147:5:1147:26 | MyStruct | +| main.rs:1157:9:1157:9 | x | T | main.rs:1145:5:1145:13 | S | +| main.rs:1157:9:1157:15 | x.foo() | | file://:0:0:0:0 | & | +| main.rs:1157:9:1157:15 | x.foo() | &T | main.rs:1147:5:1147:26 | MyStruct | +| main.rs:1157:9:1157:15 | x.foo() | &T.T | main.rs:1145:5:1145:13 | S | +| main.rs:1168:17:1168:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1168:17:1168:25 | SelfParam | &T | main.rs:1162:5:1165:5 | MyFlag | +| main.rs:1169:13:1169:16 | self | | file://:0:0:0:0 | & | +| main.rs:1169:13:1169:16 | self | &T | main.rs:1162:5:1165:5 | MyFlag | +| main.rs:1169:13:1169:21 | self.bool | | {EXTERNAL LOCATION} | bool | +| main.rs:1169:13:1169:34 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1169:25:1169:34 | ! ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1169:26:1169:29 | self | | file://:0:0:0:0 | & | +| main.rs:1169:26:1169:29 | self | &T | main.rs:1162:5:1165:5 | MyFlag | +| main.rs:1169:26:1169:34 | self.bool | | {EXTERNAL LOCATION} | bool | +| main.rs:1176:15:1176:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1176:15:1176:19 | SelfParam | &T | main.rs:1173:5:1173:13 | S | +| main.rs:1176:31:1178:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1176:31:1178:9 | { ... } | &T | file://:0:0:0:0 | & | +| main.rs:1176:31:1178:9 | { ... } | &T | main.rs:1173:5:1173:13 | S | +| main.rs:1176:31:1178:9 | { ... } | &T.&T | file://:0:0:0:0 | & | +| main.rs:1176:31:1178:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1176:31:1178:9 | { ... } | &T.&T.&T.&T | main.rs:1173:5:1173:13 | S | +| main.rs:1177:13:1177:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1177:13:1177:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1177:13:1177:19 | &... | &T | main.rs:1173:5:1173:13 | S | +| main.rs:1177:13:1177:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1177:13:1177:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1177:13:1177:19 | &... | &T.&T.&T.&T | main.rs:1173:5:1173:13 | S | +| main.rs:1177:14:1177:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1177:14:1177:19 | &... | | main.rs:1173:5:1173:13 | S | +| main.rs:1177:14:1177:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1177:14:1177:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1177:14:1177:19 | &... | &T.&T.&T | main.rs:1173:5:1173:13 | S | +| main.rs:1177:15:1177:19 | &self | | file://:0:0:0:0 | & | +| main.rs:1177:15:1177:19 | &self | &T | file://:0:0:0:0 | & | +| main.rs:1177:15:1177:19 | &self | &T.&T | main.rs:1173:5:1173:13 | S | +| main.rs:1177:16:1177:19 | self | | file://:0:0:0:0 | & | +| main.rs:1177:16:1177:19 | self | &T | main.rs:1173:5:1173:13 | S | +| main.rs:1180:15:1180:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1180:15:1180:25 | SelfParam | &T | main.rs:1173:5:1173:13 | S | +| main.rs:1180:37:1182:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1180:37:1182:9 | { ... } | &T | file://:0:0:0:0 | & | +| main.rs:1180:37:1182:9 | { ... } | &T | main.rs:1173:5:1173:13 | S | +| main.rs:1180:37:1182:9 | { ... } | &T.&T | file://:0:0:0:0 | & | +| main.rs:1180:37:1182:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1180:37:1182:9 | { ... } | &T.&T.&T.&T | main.rs:1173:5:1173:13 | S | +| main.rs:1181:13:1181:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1181:13:1181:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1181:13:1181:19 | &... | &T | main.rs:1173:5:1173:13 | S | +| main.rs:1181:13:1181:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1181:13:1181:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1181:13:1181:19 | &... | &T.&T.&T.&T | main.rs:1173:5:1173:13 | S | +| main.rs:1181:14:1181:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1181:14:1181:19 | &... | | main.rs:1173:5:1173:13 | S | +| main.rs:1181:14:1181:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1181:14:1181:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1181:14:1181:19 | &... | &T.&T.&T | main.rs:1173:5:1173:13 | S | +| main.rs:1181:15:1181:19 | &self | | file://:0:0:0:0 | & | +| main.rs:1181:15:1181:19 | &self | &T | file://:0:0:0:0 | & | +| main.rs:1181:15:1181:19 | &self | &T.&T | main.rs:1173:5:1173:13 | S | +| main.rs:1181:16:1181:19 | self | | file://:0:0:0:0 | & | +| main.rs:1181:16:1181:19 | self | &T | main.rs:1173:5:1173:13 | S | +| main.rs:1184:15:1184:15 | x | | file://:0:0:0:0 | & | +| main.rs:1184:15:1184:15 | x | &T | main.rs:1173:5:1173:13 | S | +| main.rs:1184:34:1186:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1184:34:1186:9 | { ... } | &T | main.rs:1173:5:1173:13 | S | +| main.rs:1185:13:1185:13 | x | | file://:0:0:0:0 | & | +| main.rs:1185:13:1185:13 | x | &T | main.rs:1173:5:1173:13 | S | +| main.rs:1188:15:1188:15 | x | | file://:0:0:0:0 | & | +| main.rs:1188:15:1188:15 | x | &T | main.rs:1173:5:1173:13 | S | +| main.rs:1188:34:1190:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1188:34:1190:9 | { ... } | &T | file://:0:0:0:0 | & | +| main.rs:1188:34:1190:9 | { ... } | &T | main.rs:1173:5:1173:13 | S | +| main.rs:1188:34:1190:9 | { ... } | &T.&T | file://:0:0:0:0 | & | +| main.rs:1188:34:1190:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1188:34:1190:9 | { ... } | &T.&T.&T.&T | main.rs:1173:5:1173:13 | S | +| main.rs:1189:13:1189:16 | &... | | file://:0:0:0:0 | & | +| main.rs:1189:13:1189:16 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1189:13:1189:16 | &... | &T | main.rs:1173:5:1173:13 | S | +| main.rs:1189:13:1189:16 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1189:13:1189:16 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1189:13:1189:16 | &... | &T.&T.&T.&T | main.rs:1173:5:1173:13 | S | +| main.rs:1189:14:1189:16 | &... | | file://:0:0:0:0 | & | +| main.rs:1189:14:1189:16 | &... | | main.rs:1173:5:1173:13 | S | +| main.rs:1189:14:1189:16 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1189:14:1189:16 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1189:14:1189:16 | &... | &T.&T.&T | main.rs:1173:5:1173:13 | S | +| main.rs:1189:15:1189:16 | &x | | file://:0:0:0:0 | & | +| main.rs:1189:15:1189:16 | &x | &T | file://:0:0:0:0 | & | +| main.rs:1189:15:1189:16 | &x | &T.&T | main.rs:1173:5:1173:13 | S | +| main.rs:1189:16:1189:16 | x | | file://:0:0:0:0 | & | +| main.rs:1189:16:1189:16 | x | &T | main.rs:1173:5:1173:13 | S | +| main.rs:1194:13:1194:13 | x | | main.rs:1173:5:1173:13 | S | +| main.rs:1194:17:1194:20 | S {...} | | main.rs:1173:5:1173:13 | S | +| main.rs:1195:9:1195:9 | x | | main.rs:1173:5:1173:13 | S | +| main.rs:1195:9:1195:14 | x.f1() | | file://:0:0:0:0 | & | +| main.rs:1195:9:1195:14 | x.f1() | &T | main.rs:1173:5:1173:13 | S | +| main.rs:1196:9:1196:9 | x | | main.rs:1173:5:1173:13 | S | +| main.rs:1196:9:1196:14 | x.f2() | | file://:0:0:0:0 | & | +| main.rs:1196:9:1196:14 | x.f2() | &T | main.rs:1173:5:1173:13 | S | +| main.rs:1197:9:1197:17 | ...::f3(...) | | file://:0:0:0:0 | & | +| main.rs:1197:9:1197:17 | ...::f3(...) | &T | main.rs:1173:5:1173:13 | S | +| main.rs:1197:15:1197:16 | &x | | file://:0:0:0:0 | & | +| main.rs:1197:15:1197:16 | &x | &T | main.rs:1173:5:1173:13 | S | +| main.rs:1197:16:1197:16 | x | | main.rs:1173:5:1173:13 | S | +| main.rs:1199:13:1199:13 | n | | {EXTERNAL LOCATION} | bool | +| main.rs:1199:13:1199:13 | n | | file://:0:0:0:0 | & | +| main.rs:1199:17:1199:24 | * ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1199:17:1199:24 | * ... | | file://:0:0:0:0 | & | +| main.rs:1199:18:1199:24 | * ... | | file://:0:0:0:0 | & | +| main.rs:1199:18:1199:24 | * ... | &T | {EXTERNAL LOCATION} | bool | +| main.rs:1199:18:1199:24 | * ... | &T | file://:0:0:0:0 | & | +| main.rs:1199:19:1199:24 | &... | | file://:0:0:0:0 | & | +| main.rs:1199:19:1199:24 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1199:19:1199:24 | &... | &T.&T | {EXTERNAL LOCATION} | bool | +| main.rs:1199:19:1199:24 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1199:20:1199:24 | &true | | file://:0:0:0:0 | & | +| main.rs:1199:20:1199:24 | &true | &T | {EXTERNAL LOCATION} | bool | +| main.rs:1199:20:1199:24 | &true | &T | file://:0:0:0:0 | & | +| main.rs:1199:21:1199:24 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1199:21:1199:24 | true | | file://:0:0:0:0 | & | +| main.rs:1203:13:1203:20 | mut flag | | main.rs:1162:5:1165:5 | MyFlag | +| main.rs:1203:24:1203:41 | ...::default(...) | | main.rs:1162:5:1165:5 | MyFlag | +| main.rs:1204:22:1204:30 | &mut flag | | file://:0:0:0:0 | & | +| main.rs:1204:22:1204:30 | &mut flag | &T | main.rs:1162:5:1165:5 | MyFlag | +| main.rs:1204:27:1204:30 | flag | | main.rs:1162:5:1165:5 | MyFlag | +| main.rs:1205:18:1205:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1205:26:1205:29 | flag | | main.rs:1162:5:1165:5 | MyFlag | +| main.rs:1219:43:1222:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1219:43:1222:5 | { ... } | E | main.rs:1212:5:1213:14 | S1 | +| main.rs:1219:43:1222:5 | { ... } | T | main.rs:1212:5:1213:14 | S1 | +| main.rs:1220:13:1220:13 | x | | main.rs:1212:5:1213:14 | S1 | +| main.rs:1220:17:1220:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1220:17:1220:30 | ...::Ok(...) | T | main.rs:1212:5:1213:14 | S1 | +| main.rs:1220:17:1220:31 | TryExpr | | main.rs:1212:5:1213:14 | S1 | +| main.rs:1220:28:1220:29 | S1 | | main.rs:1212:5:1213:14 | S1 | +| main.rs:1221:9:1221:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1221:9:1221:22 | ...::Ok(...) | E | main.rs:1212:5:1213:14 | S1 | +| main.rs:1221:9:1221:22 | ...::Ok(...) | T | main.rs:1212:5:1213:14 | S1 | +| main.rs:1221:20:1221:21 | S1 | | main.rs:1212:5:1213:14 | S1 | +| main.rs:1225:46:1229:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1225:46:1229:5 | { ... } | E | main.rs:1215:5:1216:14 | S2 | +| main.rs:1225:46:1229:5 | { ... } | T | main.rs:1212:5:1213:14 | S1 | +| main.rs:1226:13:1226:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1226:13:1226:13 | x | T | main.rs:1212:5:1213:14 | S1 | +| main.rs:1226:17:1226:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1226:17:1226:30 | ...::Ok(...) | T | main.rs:1212:5:1213:14 | S1 | +| main.rs:1226:28:1226:29 | S1 | | main.rs:1212:5:1213:14 | S1 | +| main.rs:1227:13:1227:13 | y | | main.rs:1212:5:1213:14 | S1 | +| main.rs:1227:17:1227:17 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1227:17:1227:17 | x | T | main.rs:1212:5:1213:14 | S1 | +| main.rs:1227:17:1227:18 | TryExpr | | main.rs:1212:5:1213:14 | S1 | +| main.rs:1228:9:1228:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1228:9:1228:22 | ...::Ok(...) | E | main.rs:1215:5:1216:14 | S2 | +| main.rs:1228:9:1228:22 | ...::Ok(...) | T | main.rs:1212:5:1213:14 | S1 | +| main.rs:1228:20:1228:21 | S1 | | main.rs:1212:5:1213:14 | S1 | +| main.rs:1232:40:1237:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1232:40:1237:5 | { ... } | E | main.rs:1215:5:1216:14 | S2 | +| main.rs:1232:40:1237:5 | { ... } | T | main.rs:1212:5:1213:14 | S1 | +| main.rs:1233:13:1233:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1233:13:1233:13 | x | T | {EXTERNAL LOCATION} | Result | +| main.rs:1233:13:1233:13 | x | T.T | main.rs:1212:5:1213:14 | S1 | +| main.rs:1233:17:1233:42 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1233:17:1233:42 | ...::Ok(...) | T | {EXTERNAL LOCATION} | Result | +| main.rs:1233:17:1233:42 | ...::Ok(...) | T.T | main.rs:1212:5:1213:14 | S1 | +| main.rs:1233:28:1233:41 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1233:28:1233:41 | ...::Ok(...) | T | main.rs:1212:5:1213:14 | S1 | +| main.rs:1233:39:1233:40 | S1 | | main.rs:1212:5:1213:14 | S1 | +| main.rs:1235:17:1235:17 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1235:17:1235:17 | x | T | {EXTERNAL LOCATION} | Result | +| main.rs:1235:17:1235:17 | x | T.T | main.rs:1212:5:1213:14 | S1 | +| main.rs:1235:17:1235:18 | TryExpr | | {EXTERNAL LOCATION} | Result | +| main.rs:1235:17:1235:18 | TryExpr | T | main.rs:1212:5:1213:14 | S1 | +| main.rs:1235:17:1235:29 | ... .map(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1236:9:1236:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1236:9:1236:22 | ...::Ok(...) | E | main.rs:1215:5:1216:14 | S2 | +| main.rs:1236:9:1236:22 | ...::Ok(...) | T | main.rs:1212:5:1213:14 | S1 | +| main.rs:1236:20:1236:21 | S1 | | main.rs:1212:5:1213:14 | S1 | +| main.rs:1240:30:1240:34 | input | | {EXTERNAL LOCATION} | Result | +| main.rs:1240:30:1240:34 | input | E | main.rs:1212:5:1213:14 | S1 | +| main.rs:1240:30:1240:34 | input | T | main.rs:1240:20:1240:27 | T | +| main.rs:1240:69:1247:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1240:69:1247:5 | { ... } | E | main.rs:1212:5:1213:14 | S1 | +| main.rs:1240:69:1247:5 | { ... } | T | main.rs:1240:20:1240:27 | T | +| main.rs:1241:13:1241:17 | value | | main.rs:1240:20:1240:27 | T | +| main.rs:1241:21:1241:25 | input | | {EXTERNAL LOCATION} | Result | +| main.rs:1241:21:1241:25 | input | E | main.rs:1212:5:1213:14 | S1 | +| main.rs:1241:21:1241:25 | input | T | main.rs:1240:20:1240:27 | T | +| main.rs:1241:21:1241:26 | TryExpr | | main.rs:1240:20:1240:27 | T | +| main.rs:1242:22:1242:38 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1242:22:1242:38 | ...::Ok(...) | T | main.rs:1240:20:1240:27 | T | +| main.rs:1242:22:1245:10 | ... .and_then(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1242:33:1242:37 | value | | main.rs:1240:20:1240:27 | T | +| main.rs:1242:53:1245:9 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1242:53:1245:9 | { ... } | E | main.rs:1212:5:1213:14 | S1 | +| main.rs:1243:22:1243:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1244:13:1244:34 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1244:13:1244:34 | ...::Ok::<...>(...) | E | main.rs:1212:5:1213:14 | S1 | +| main.rs:1246:9:1246:23 | ...::Err(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1246:9:1246:23 | ...::Err(...) | E | main.rs:1212:5:1213:14 | S1 | +| main.rs:1246:9:1246:23 | ...::Err(...) | T | main.rs:1240:20:1240:27 | T | +| main.rs:1246:21:1246:22 | S1 | | main.rs:1212:5:1213:14 | S1 | +| main.rs:1250:37:1250:52 | try_same_error(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1250:37:1250:52 | try_same_error(...) | E | main.rs:1212:5:1213:14 | S1 | +| main.rs:1250:37:1250:52 | try_same_error(...) | T | main.rs:1212:5:1213:14 | S1 | +| main.rs:1251:22:1251:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1254:37:1254:55 | try_convert_error(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1254:37:1254:55 | try_convert_error(...) | E | main.rs:1215:5:1216:14 | S2 | +| main.rs:1254:37:1254:55 | try_convert_error(...) | T | main.rs:1212:5:1213:14 | S1 | +| main.rs:1255:22:1255:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1258:37:1258:49 | try_chained(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1258:37:1258:49 | try_chained(...) | E | main.rs:1215:5:1216:14 | S2 | +| main.rs:1258:37:1258:49 | try_chained(...) | T | main.rs:1212:5:1213:14 | S1 | +| main.rs:1259:22:1259:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1262:37:1262:63 | try_complex(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1262:37:1262:63 | try_complex(...) | E | main.rs:1212:5:1213:14 | S1 | +| main.rs:1262:37:1262:63 | try_complex(...) | T | main.rs:1212:5:1213:14 | S1 | +| main.rs:1262:49:1262:62 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1262:49:1262:62 | ...::Ok(...) | E | main.rs:1212:5:1213:14 | S1 | +| main.rs:1262:49:1262:62 | ...::Ok(...) | T | main.rs:1212:5:1213:14 | S1 | +| main.rs:1262:60:1262:61 | S1 | | main.rs:1212:5:1213:14 | S1 | +| main.rs:1263:22:1263:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1270:13:1270:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1270:22:1270:22 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1271:13:1271:13 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:1271:17:1271:17 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1272:13:1272:13 | z | | {EXTERNAL LOCATION} | i32 | +| main.rs:1272:17:1272:17 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1272:17:1272:21 | ... + ... | | {EXTERNAL LOCATION} | i32 | +| main.rs:1272:21:1272:21 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:1273:13:1273:13 | z | | {EXTERNAL LOCATION} | i32 | +| main.rs:1273:17:1273:17 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1273:17:1273:23 | x.abs() | | {EXTERNAL LOCATION} | i32 | +| main.rs:1274:13:1274:13 | c | | {EXTERNAL LOCATION} | char | +| main.rs:1274:17:1274:19 | 'c' | | {EXTERNAL LOCATION} | char | +| main.rs:1275:13:1275:17 | hello | | {EXTERNAL LOCATION} | str | +| main.rs:1275:21:1275:27 | "Hello" | | {EXTERNAL LOCATION} | str | +| main.rs:1276:13:1276:13 | f | | {EXTERNAL LOCATION} | f64 | +| main.rs:1276:17:1276:24 | 123.0f64 | | {EXTERNAL LOCATION} | f64 | +| main.rs:1277:13:1277:13 | t | | {EXTERNAL LOCATION} | bool | +| main.rs:1277:17:1277:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1278:13:1278:13 | f | | {EXTERNAL LOCATION} | bool | +| main.rs:1278:17:1278:21 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1285:13:1285:13 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:1285:17:1285:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1285:17:1285:29 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1285:25:1285:29 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1286:13:1286:13 | y | | {EXTERNAL LOCATION} | bool | +| main.rs:1286:17:1286:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1286:17:1286:29 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1286:25:1286:29 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1288:13:1288:17 | mut a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1289:13:1289:16 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:1289:20:1289:21 | 34 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1289:20:1289:27 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1289:26:1289:27 | 33 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1290:12:1290:15 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:1291:17:1291:17 | z | | file://:0:0:0:0 | () | +| main.rs:1291:21:1291:27 | (...) | | file://:0:0:0:0 | () | +| main.rs:1291:22:1291:22 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1291:22:1291:26 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1291:26:1291:26 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1293:13:1293:13 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1293:13:1293:17 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1293:17:1293:17 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1295:9:1295:9 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1312:16:1312:19 | SelfParam | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1312:22:1312:24 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1312:41:1317:9 | { ... } | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1313:13:1316:13 | Vec2 {...} | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1314:20:1314:23 | self | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1314:20:1314:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1314:20:1314:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1314:29:1314:31 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1314:29:1314:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1315:20:1315:23 | self | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1315:20:1315:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1315:20:1315:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1315:29:1315:31 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1315:29:1315:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1322:23:1322:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1322:23:1322:31 | SelfParam | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1322:34:1322:36 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1323:13:1323:16 | self | | file://:0:0:0:0 | & | +| main.rs:1323:13:1323:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1323:13:1323:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1323:13:1323:27 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1323:23:1323:25 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1323:23:1323:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1324:13:1324:16 | self | | file://:0:0:0:0 | & | +| main.rs:1324:13:1324:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1324:13:1324:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1324:13:1324:27 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1324:23:1324:25 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1324:23:1324:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1330:16:1330:19 | SelfParam | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1330:22:1330:24 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1330:41:1335:9 | { ... } | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1331:13:1334:13 | Vec2 {...} | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1332:20:1332:23 | self | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1332:20:1332:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1332:20:1332:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1332:29:1332:31 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1332:29:1332:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1333:20:1333:23 | self | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1333:20:1333:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1333:20:1333:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1333:29:1333:31 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1333:29:1333:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1340:23:1340:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1340:23:1340:31 | SelfParam | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1340:34:1340:36 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1341:13:1341:16 | self | | file://:0:0:0:0 | & | +| main.rs:1341:13:1341:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1341:13:1341:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1341:13:1341:27 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1341:23:1341:25 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1341:23:1341:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1342:13:1342:16 | self | | file://:0:0:0:0 | & | +| main.rs:1342:13:1342:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1342:13:1342:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1342:13:1342:27 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1342:23:1342:25 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1342:23:1342:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1348:16:1348:19 | SelfParam | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1348:22:1348:24 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1348:41:1353:9 | { ... } | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1349:13:1352:13 | Vec2 {...} | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1350:20:1350:23 | self | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1350:20:1350:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1350:20:1350:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1350:29:1350:31 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1350:29:1350:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1351:20:1351:23 | self | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1351:20:1351:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1351:20:1351:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1351:29:1351:31 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1351:29:1351:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1357:23:1357:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1357:23:1357:31 | SelfParam | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1357:34:1357:36 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1358:13:1358:16 | self | | file://:0:0:0:0 | & | +| main.rs:1358:13:1358:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1358:13:1358:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1358:13:1358:27 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1358:23:1358:25 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1358:23:1358:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1359:13:1359:16 | self | | file://:0:0:0:0 | & | +| main.rs:1359:13:1359:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1359:13:1359:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1359:13:1359:27 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1359:23:1359:25 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1359:23:1359:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1365:16:1365:19 | SelfParam | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1365:22:1365:24 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1365:41:1370:9 | { ... } | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1366:13:1369:13 | Vec2 {...} | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1367:20:1367:23 | self | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1367:20:1367:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1367:20:1367:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1367:29:1367:31 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1367:29:1367:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1368:20:1368:23 | self | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1368:20:1368:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1368:20:1368:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1368:29:1368:31 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1368:29:1368:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1374:23:1374:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1374:23:1374:31 | SelfParam | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1374:34:1374:36 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1375:13:1375:16 | self | | file://:0:0:0:0 | & | +| main.rs:1375:13:1375:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1375:13:1375:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1375:13:1375:27 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1375:23:1375:25 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1375:23:1375:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1376:13:1376:16 | self | | file://:0:0:0:0 | & | +| main.rs:1376:13:1376:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1376:13:1376:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1376:13:1376:27 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1376:23:1376:25 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1376:23:1376:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1382:16:1382:19 | SelfParam | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1382:22:1382:24 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1382:41:1387:9 | { ... } | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1383:13:1386:13 | Vec2 {...} | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1384:20:1384:23 | self | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1384:20:1384:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1384:20:1384:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1384:29:1384:31 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1384:29:1384:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1385:20:1385:23 | self | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1385:20:1385:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1385:20:1385:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1385:29:1385:31 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1385:29:1385:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1391:23:1391:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1391:23:1391:31 | SelfParam | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1391:34:1391:36 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1392:13:1392:16 | self | | file://:0:0:0:0 | & | +| main.rs:1392:13:1392:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1392:13:1392:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1392:13:1392:27 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1392:23:1392:25 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1392:23:1392:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1393:13:1393:16 | self | | file://:0:0:0:0 | & | +| main.rs:1393:13:1393:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1393:13:1393:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1393:13:1393:27 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1393:23:1393:25 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1393:23:1393:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1399:19:1399:22 | SelfParam | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1399:25:1399:27 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1399:44:1404:9 | { ... } | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1400:13:1403:13 | Vec2 {...} | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1401:20:1401:23 | self | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1401:20:1401:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1401:20:1401:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1401:29:1401:31 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1401:29:1401:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1402:20:1402:23 | self | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1402:20:1402:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1402:20:1402:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1402:29:1402:31 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1402:29:1402:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1408:26:1408:34 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1408:26:1408:34 | SelfParam | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1408:37:1408:39 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1409:13:1409:16 | self | | file://:0:0:0:0 | & | +| main.rs:1409:13:1409:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1409:13:1409:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1409:13:1409:27 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1409:23:1409:25 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1409:23:1409:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1410:13:1410:16 | self | | file://:0:0:0:0 | & | +| main.rs:1410:13:1410:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1410:13:1410:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1410:13:1410:27 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1410:23:1410:25 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1410:23:1410:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1416:18:1416:21 | SelfParam | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1416:24:1416:26 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1416:43:1421:9 | { ... } | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1417:13:1420:13 | Vec2 {...} | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1418:20:1418:23 | self | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1418:20:1418:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1418:20:1418:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1418:29:1418:31 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1418:29:1418:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1419:20:1419:23 | self | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1419:20:1419:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1419:20:1419:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1419:29:1419:31 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1419:29:1419:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1425:25:1425:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1425:25:1425:33 | SelfParam | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1425:36:1425:38 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1426:13:1426:16 | self | | file://:0:0:0:0 | & | +| main.rs:1426:13:1426:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1426:13:1426:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1426:13:1426:27 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1426:23:1426:25 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1426:23:1426:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1427:13:1427:16 | self | | file://:0:0:0:0 | & | +| main.rs:1427:13:1427:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1427:13:1427:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1427:13:1427:27 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1427:23:1427:25 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1427:23:1427:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1433:19:1433:22 | SelfParam | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1433:25:1433:27 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1433:44:1438:9 | { ... } | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1434:13:1437:13 | Vec2 {...} | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1435:20:1435:23 | self | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1435:20:1435:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1435:20:1435:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1435:29:1435:31 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1435:29:1435:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1436:20:1436:23 | self | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1436:20:1436:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1436:20:1436:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1436:29:1436:31 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1436:29:1436:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1442:26:1442:34 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1442:26:1442:34 | SelfParam | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1442:37:1442:39 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1443:13:1443:16 | self | | file://:0:0:0:0 | & | +| main.rs:1443:13:1443:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1443:13:1443:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1443:13:1443:27 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1443:23:1443:25 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1443:23:1443:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1444:13:1444:16 | self | | file://:0:0:0:0 | & | +| main.rs:1444:13:1444:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1444:13:1444:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1444:13:1444:27 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1444:23:1444:25 | rhs | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1444:23:1444:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1450:16:1450:19 | SelfParam | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1450:22:1450:24 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1450:40:1455:9 | { ... } | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1451:13:1454:13 | Vec2 {...} | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1452:20:1452:23 | self | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1452:20:1452:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1452:20:1452:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1452:30:1452:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1453:20:1453:23 | self | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1453:20:1453:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1453:20:1453:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1453:30:1453:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1459:23:1459:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1459:23:1459:31 | SelfParam | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1459:34:1459:36 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1460:13:1460:16 | self | | file://:0:0:0:0 | & | +| main.rs:1460:13:1460:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1460:13:1460:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1460:13:1460:26 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:1460:24:1460:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1461:13:1461:16 | self | | file://:0:0:0:0 | & | +| main.rs:1461:13:1461:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1461:13:1461:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1461:13:1461:26 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:1461:24:1461:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1467:16:1467:19 | SelfParam | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1467:22:1467:24 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1467:40:1472:9 | { ... } | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1468:13:1471:13 | Vec2 {...} | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1469:20:1469:23 | self | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1469:20:1469:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1469:20:1469:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1469:30:1469:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1470:20:1470:23 | self | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1470:20:1470:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1470:20:1470:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1470:30:1470:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1476:23:1476:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1476:23:1476:31 | SelfParam | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1476:34:1476:36 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1477:13:1477:16 | self | | file://:0:0:0:0 | & | +| main.rs:1477:13:1477:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1477:13:1477:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1477:13:1477:26 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:1477:24:1477:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1478:13:1478:16 | self | | file://:0:0:0:0 | & | +| main.rs:1478:13:1478:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1478:13:1478:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1478:13:1478:26 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:1478:24:1478:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1484:16:1484:19 | SelfParam | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1484:30:1489:9 | { ... } | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1485:13:1488:13 | Vec2 {...} | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1486:20:1486:26 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1486:21:1486:24 | self | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1486:21:1486:26 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1487:20:1487:26 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1487:21:1487:24 | self | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1487:21:1487:26 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1494:16:1494:19 | SelfParam | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1494:30:1499:9 | { ... } | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1495:13:1498:13 | Vec2 {...} | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1496:20:1496:26 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1496:21:1496:24 | self | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1496:21:1496:26 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1497:20:1497:26 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1497:21:1497:24 | self | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1497:21:1497:26 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1503:15:1503:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1503:15:1503:19 | SelfParam | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1503:22:1503:26 | other | | file://:0:0:0:0 | & | +| main.rs:1503:22:1503:26 | other | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1503:44:1505:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1504:13:1504:16 | self | | file://:0:0:0:0 | & | +| main.rs:1504:13:1504:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1504:13:1504:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1504:13:1504:29 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1504:13:1504:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1504:23:1504:27 | other | | file://:0:0:0:0 | & | +| main.rs:1504:23:1504:27 | other | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1504:23:1504:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1504:34:1504:37 | self | | file://:0:0:0:0 | & | +| main.rs:1504:34:1504:37 | self | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1504:34:1504:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1504:34:1504:50 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1504:44:1504:48 | other | | file://:0:0:0:0 | & | +| main.rs:1504:44:1504:48 | other | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1504:44:1504:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1507:15:1507:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1507:15:1507:19 | SelfParam | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1507:22:1507:26 | other | | file://:0:0:0:0 | & | +| main.rs:1507:22:1507:26 | other | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1507:44:1509:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1508:13:1508:16 | self | | file://:0:0:0:0 | & | +| main.rs:1508:13:1508:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1508:13:1508:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1508:13:1508:29 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1508:13:1508:50 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1508:23:1508:27 | other | | file://:0:0:0:0 | & | +| main.rs:1508:23:1508:27 | other | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1508:23:1508:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1508:34:1508:37 | self | | file://:0:0:0:0 | & | +| main.rs:1508:34:1508:37 | self | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1508:34:1508:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1508:34:1508:50 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1508:44:1508:48 | other | | file://:0:0:0:0 | & | +| main.rs:1508:44:1508:48 | other | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1508:44:1508:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1513:24:1513:28 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1513:24:1513:28 | SelfParam | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1513:31:1513:35 | other | | file://:0:0:0:0 | & | +| main.rs:1513:31:1513:35 | other | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1513:75:1515:9 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:1513:75:1515:9 | { ... } | T | {EXTERNAL LOCATION} | Ordering | +| main.rs:1514:13:1514:29 | (...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1514:13:1514:63 | ... .partial_cmp(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:1514:13:1514:63 | ... .partial_cmp(...) | T | {EXTERNAL LOCATION} | Ordering | +| main.rs:1514:14:1514:17 | self | | file://:0:0:0:0 | & | +| main.rs:1514:14:1514:17 | self | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1514:14:1514:19 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1514:14:1514:28 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1514:23:1514:26 | self | | file://:0:0:0:0 | & | +| main.rs:1514:23:1514:26 | self | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1514:23:1514:28 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1514:43:1514:62 | &... | | file://:0:0:0:0 | & | +| main.rs:1514:43:1514:62 | &... | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1514:44:1514:62 | (...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1514:45:1514:49 | other | | file://:0:0:0:0 | & | +| main.rs:1514:45:1514:49 | other | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1514:45:1514:51 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1514:45:1514:61 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1514:55:1514:59 | other | | file://:0:0:0:0 | & | +| main.rs:1514:55:1514:59 | other | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1514:55:1514:61 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1517:15:1517:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1517:15:1517:19 | SelfParam | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1517:22:1517:26 | other | | file://:0:0:0:0 | & | +| main.rs:1517:22:1517:26 | other | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1517:44:1519:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1518:13:1518:16 | self | | file://:0:0:0:0 | & | +| main.rs:1518:13:1518:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1518:13:1518:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1518:13:1518:28 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1518:13:1518:48 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1518:22:1518:26 | other | | file://:0:0:0:0 | & | +| main.rs:1518:22:1518:26 | other | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1518:22:1518:28 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1518:33:1518:36 | self | | file://:0:0:0:0 | & | +| main.rs:1518:33:1518:36 | self | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1518:33:1518:38 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1518:33:1518:48 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1518:42:1518:46 | other | | file://:0:0:0:0 | & | +| main.rs:1518:42:1518:46 | other | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1518:42:1518:48 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1521:15:1521:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1521:15:1521:19 | SelfParam | &T | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1521:22:1521:26 | other | | file://:0:0:0:0 | & | -| main.rs:1521:22:1521:26 | other | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1521:22:1521:28 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1521:33:1521:36 | self | | file://:0:0:0:0 | & | -| main.rs:1521:33:1521:36 | self | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1521:33:1521:38 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1521:33:1521:48 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1521:42:1521:46 | other | | file://:0:0:0:0 | & | -| main.rs:1521:42:1521:46 | other | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1521:42:1521:48 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1524:15:1524:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1524:15:1524:19 | SelfParam | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1524:22:1524:26 | other | | file://:0:0:0:0 | & | -| main.rs:1524:22:1524:26 | other | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1524:44:1526:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1525:13:1525:16 | self | | file://:0:0:0:0 | & | -| main.rs:1525:13:1525:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1525:13:1525:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1525:13:1525:29 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1525:13:1525:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1525:23:1525:27 | other | | file://:0:0:0:0 | & | -| main.rs:1525:23:1525:27 | other | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1525:23:1525:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1525:34:1525:37 | self | | file://:0:0:0:0 | & | -| main.rs:1525:34:1525:37 | self | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1525:34:1525:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1525:34:1525:50 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1525:44:1525:48 | other | | file://:0:0:0:0 | & | -| main.rs:1525:44:1525:48 | other | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1525:44:1525:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1532:13:1532:18 | i64_eq | | {EXTERNAL LOCATION} | bool | -| main.rs:1532:22:1532:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1532:23:1532:26 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1532:23:1532:34 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1532:31:1532:34 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1533:13:1533:18 | i64_ne | | {EXTERNAL LOCATION} | bool | -| main.rs:1533:22:1533:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1533:23:1533:26 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1533:23:1533:34 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1533:31:1533:34 | 4i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1534:13:1534:18 | i64_lt | | {EXTERNAL LOCATION} | bool | -| main.rs:1534:22:1534:34 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1534:23:1534:26 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1534:23:1534:33 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1534:30:1534:33 | 6i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1535:13:1535:18 | i64_le | | {EXTERNAL LOCATION} | bool | -| main.rs:1535:22:1535:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1535:23:1535:26 | 7i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1535:23:1535:34 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1535:31:1535:34 | 8i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1536:13:1536:18 | i64_gt | | {EXTERNAL LOCATION} | bool | -| main.rs:1536:22:1536:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1536:23:1536:26 | 9i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1536:23:1536:34 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1536:30:1536:34 | 10i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1537:13:1537:18 | i64_ge | | {EXTERNAL LOCATION} | bool | -| main.rs:1537:22:1537:37 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1537:23:1537:27 | 11i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1537:23:1537:36 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1537:32:1537:36 | 12i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1540:13:1540:19 | i64_add | | {EXTERNAL LOCATION} | i64 | -| main.rs:1540:23:1540:27 | 13i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1540:23:1540:35 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1540:31:1540:35 | 14i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1541:13:1541:19 | i64_sub | | {EXTERNAL LOCATION} | i64 | -| main.rs:1541:23:1541:27 | 15i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1541:23:1541:35 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1541:31:1541:35 | 16i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1542:13:1542:19 | i64_mul | | {EXTERNAL LOCATION} | i64 | -| main.rs:1542:23:1542:27 | 17i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1542:23:1542:35 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1542:31:1542:35 | 18i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1543:13:1543:19 | i64_div | | {EXTERNAL LOCATION} | i64 | -| main.rs:1543:23:1543:27 | 19i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1543:23:1543:35 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1543:31:1543:35 | 20i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1544:13:1544:19 | i64_rem | | {EXTERNAL LOCATION} | i64 | -| main.rs:1544:23:1544:27 | 21i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1544:23:1544:35 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1544:31:1544:35 | 22i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1547:13:1547:30 | mut i64_add_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1547:34:1547:38 | 23i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1548:9:1548:22 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1548:9:1548:31 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1548:27:1548:31 | 24i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1550:13:1550:30 | mut i64_sub_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1550:34:1550:38 | 25i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1551:9:1551:22 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1551:9:1551:31 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1551:27:1551:31 | 26i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1553:13:1553:30 | mut i64_mul_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1553:34:1553:38 | 27i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1554:9:1554:22 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1554:9:1554:31 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1554:27:1554:31 | 28i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1556:13:1556:30 | mut i64_div_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1556:34:1556:38 | 29i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1557:9:1557:22 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1557:9:1557:31 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1557:27:1557:31 | 30i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1559:13:1559:30 | mut i64_rem_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1559:34:1559:38 | 31i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1560:9:1560:22 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1560:9:1560:31 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1560:27:1560:31 | 32i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1563:13:1563:22 | i64_bitand | | {EXTERNAL LOCATION} | i64 | -| main.rs:1563:26:1563:30 | 33i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1563:26:1563:38 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1563:34:1563:38 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1564:13:1564:21 | i64_bitor | | {EXTERNAL LOCATION} | i64 | -| main.rs:1564:25:1564:29 | 35i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1564:25:1564:37 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1564:33:1564:37 | 36i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1565:13:1565:22 | i64_bitxor | | {EXTERNAL LOCATION} | i64 | -| main.rs:1565:26:1565:30 | 37i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1565:26:1565:38 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1565:34:1565:38 | 38i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1566:13:1566:19 | i64_shl | | {EXTERNAL LOCATION} | i64 | -| main.rs:1566:23:1566:27 | 39i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1566:23:1566:36 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1566:32:1566:36 | 40i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1567:13:1567:19 | i64_shr | | {EXTERNAL LOCATION} | i64 | -| main.rs:1567:23:1567:27 | 41i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1567:23:1567:36 | ... >> ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1567:32:1567:36 | 42i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1570:13:1570:33 | mut i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1570:37:1570:41 | 43i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1571:9:1571:25 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1571:9:1571:34 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1571:30:1571:34 | 44i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1573:13:1573:32 | mut i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1573:36:1573:40 | 45i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1574:9:1574:24 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1574:9:1574:33 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1574:29:1574:33 | 46i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1576:13:1576:33 | mut i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1576:37:1576:41 | 47i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1577:9:1577:25 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1577:9:1577:34 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1577:30:1577:34 | 48i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1579:13:1579:30 | mut i64_shl_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1579:34:1579:38 | 49i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1580:9:1580:22 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1580:9:1580:32 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1580:28:1580:32 | 50i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1582:13:1582:30 | mut i64_shr_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1582:34:1582:38 | 51i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1583:9:1583:22 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1583:9:1583:32 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1583:28:1583:32 | 52i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1585:13:1585:19 | i64_neg | | {EXTERNAL LOCATION} | i64 | -| main.rs:1585:23:1585:28 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1585:24:1585:28 | 53i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1586:13:1586:19 | i64_not | | {EXTERNAL LOCATION} | i64 | -| main.rs:1586:23:1586:28 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1586:24:1586:28 | 54i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1589:13:1589:14 | v1 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1589:18:1589:36 | Vec2 {...} | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1589:28:1589:28 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1589:28:1589:28 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1589:34:1589:34 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1589:34:1589:34 | 2 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1590:13:1590:14 | v2 | | file://:0:0:0:0 | & | -| main.rs:1590:13:1590:14 | v2 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1590:13:1590:14 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1590:18:1590:36 | Vec2 {...} | | file://:0:0:0:0 | & | -| main.rs:1590:18:1590:36 | Vec2 {...} | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1590:18:1590:36 | Vec2 {...} | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1590:28:1590:28 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1590:28:1590:28 | 3 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1590:34:1590:34 | 4 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1590:34:1590:34 | 4 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1593:13:1593:19 | vec2_eq | | {EXTERNAL LOCATION} | bool | -| main.rs:1593:23:1593:24 | v1 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1593:23:1593:30 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1593:29:1593:30 | v2 | | file://:0:0:0:0 | & | -| main.rs:1593:29:1593:30 | v2 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1593:29:1593:30 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1594:13:1594:19 | vec2_ne | | {EXTERNAL LOCATION} | bool | -| main.rs:1594:23:1594:24 | v1 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1594:23:1594:30 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1594:29:1594:30 | v2 | | file://:0:0:0:0 | & | -| main.rs:1594:29:1594:30 | v2 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1594:29:1594:30 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1595:13:1595:19 | vec2_lt | | {EXTERNAL LOCATION} | bool | -| main.rs:1595:23:1595:24 | v1 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1595:23:1595:29 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1595:28:1595:29 | v2 | | file://:0:0:0:0 | & | -| main.rs:1595:28:1595:29 | v2 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1595:28:1595:29 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1596:13:1596:19 | vec2_le | | {EXTERNAL LOCATION} | bool | -| main.rs:1596:23:1596:24 | v1 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1596:23:1596:30 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1596:29:1596:30 | v2 | | file://:0:0:0:0 | & | -| main.rs:1596:29:1596:30 | v2 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1596:29:1596:30 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1597:13:1597:19 | vec2_gt | | {EXTERNAL LOCATION} | bool | -| main.rs:1597:23:1597:24 | v1 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1597:23:1597:29 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1597:28:1597:29 | v2 | | file://:0:0:0:0 | & | -| main.rs:1597:28:1597:29 | v2 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1597:28:1597:29 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1598:13:1598:19 | vec2_ge | | {EXTERNAL LOCATION} | bool | -| main.rs:1598:23:1598:24 | v1 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1598:23:1598:30 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1521:22:1521:26 | other | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1521:44:1523:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1522:13:1522:16 | self | | file://:0:0:0:0 | & | +| main.rs:1522:13:1522:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1522:13:1522:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1522:13:1522:29 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1522:13:1522:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1522:23:1522:27 | other | | file://:0:0:0:0 | & | +| main.rs:1522:23:1522:27 | other | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1522:23:1522:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1522:34:1522:37 | self | | file://:0:0:0:0 | & | +| main.rs:1522:34:1522:37 | self | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1522:34:1522:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1522:34:1522:50 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1522:44:1522:48 | other | | file://:0:0:0:0 | & | +| main.rs:1522:44:1522:48 | other | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1522:44:1522:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1525:15:1525:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1525:15:1525:19 | SelfParam | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1525:22:1525:26 | other | | file://:0:0:0:0 | & | +| main.rs:1525:22:1525:26 | other | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1525:44:1527:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1526:13:1526:16 | self | | file://:0:0:0:0 | & | +| main.rs:1526:13:1526:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1526:13:1526:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1526:13:1526:28 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1526:13:1526:48 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1526:22:1526:26 | other | | file://:0:0:0:0 | & | +| main.rs:1526:22:1526:26 | other | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1526:22:1526:28 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1526:33:1526:36 | self | | file://:0:0:0:0 | & | +| main.rs:1526:33:1526:36 | self | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1526:33:1526:38 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1526:33:1526:48 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1526:42:1526:46 | other | | file://:0:0:0:0 | & | +| main.rs:1526:42:1526:46 | other | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1526:42:1526:48 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1529:15:1529:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1529:15:1529:19 | SelfParam | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1529:22:1529:26 | other | | file://:0:0:0:0 | & | +| main.rs:1529:22:1529:26 | other | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1529:44:1531:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1530:13:1530:16 | self | | file://:0:0:0:0 | & | +| main.rs:1530:13:1530:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1530:13:1530:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1530:13:1530:29 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1530:13:1530:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1530:23:1530:27 | other | | file://:0:0:0:0 | & | +| main.rs:1530:23:1530:27 | other | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1530:23:1530:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1530:34:1530:37 | self | | file://:0:0:0:0 | & | +| main.rs:1530:34:1530:37 | self | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1530:34:1530:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1530:34:1530:50 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1530:44:1530:48 | other | | file://:0:0:0:0 | & | +| main.rs:1530:44:1530:48 | other | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1530:44:1530:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1537:13:1537:18 | i64_eq | | {EXTERNAL LOCATION} | bool | +| main.rs:1537:22:1537:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1537:23:1537:26 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1537:23:1537:34 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1537:31:1537:34 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1538:13:1538:18 | i64_ne | | {EXTERNAL LOCATION} | bool | +| main.rs:1538:22:1538:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1538:23:1538:26 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1538:23:1538:34 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1538:31:1538:34 | 4i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1539:13:1539:18 | i64_lt | | {EXTERNAL LOCATION} | bool | +| main.rs:1539:22:1539:34 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1539:23:1539:26 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1539:23:1539:33 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1539:30:1539:33 | 6i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1540:13:1540:18 | i64_le | | {EXTERNAL LOCATION} | bool | +| main.rs:1540:22:1540:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1540:23:1540:26 | 7i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1540:23:1540:34 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1540:31:1540:34 | 8i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1541:13:1541:18 | i64_gt | | {EXTERNAL LOCATION} | bool | +| main.rs:1541:22:1541:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1541:23:1541:26 | 9i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1541:23:1541:34 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1541:30:1541:34 | 10i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1542:13:1542:18 | i64_ge | | {EXTERNAL LOCATION} | bool | +| main.rs:1542:22:1542:37 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1542:23:1542:27 | 11i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1542:23:1542:36 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1542:32:1542:36 | 12i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1545:13:1545:19 | i64_add | | {EXTERNAL LOCATION} | i64 | +| main.rs:1545:23:1545:27 | 13i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1545:23:1545:35 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1545:31:1545:35 | 14i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1546:13:1546:19 | i64_sub | | {EXTERNAL LOCATION} | i64 | +| main.rs:1546:23:1546:27 | 15i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1546:23:1546:35 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1546:31:1546:35 | 16i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1547:13:1547:19 | i64_mul | | {EXTERNAL LOCATION} | i64 | +| main.rs:1547:23:1547:27 | 17i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1547:23:1547:35 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1547:31:1547:35 | 18i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1548:13:1548:19 | i64_div | | {EXTERNAL LOCATION} | i64 | +| main.rs:1548:23:1548:27 | 19i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1548:23:1548:35 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1548:31:1548:35 | 20i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1549:13:1549:19 | i64_rem | | {EXTERNAL LOCATION} | i64 | +| main.rs:1549:23:1549:27 | 21i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1549:23:1549:35 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1549:31:1549:35 | 22i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1552:13:1552:30 | mut i64_add_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1552:34:1552:38 | 23i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1553:9:1553:22 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1553:9:1553:31 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1553:27:1553:31 | 24i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1555:13:1555:30 | mut i64_sub_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1555:34:1555:38 | 25i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1556:9:1556:22 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1556:9:1556:31 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1556:27:1556:31 | 26i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1558:13:1558:30 | mut i64_mul_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1558:34:1558:38 | 27i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1559:9:1559:22 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1559:9:1559:31 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1559:27:1559:31 | 28i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1561:13:1561:30 | mut i64_div_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1561:34:1561:38 | 29i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1562:9:1562:22 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1562:9:1562:31 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1562:27:1562:31 | 30i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1564:13:1564:30 | mut i64_rem_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1564:34:1564:38 | 31i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1565:9:1565:22 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1565:9:1565:31 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1565:27:1565:31 | 32i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1568:13:1568:22 | i64_bitand | | {EXTERNAL LOCATION} | i64 | +| main.rs:1568:26:1568:30 | 33i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1568:26:1568:38 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1568:34:1568:38 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1569:13:1569:21 | i64_bitor | | {EXTERNAL LOCATION} | i64 | +| main.rs:1569:25:1569:29 | 35i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1569:25:1569:37 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1569:33:1569:37 | 36i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1570:13:1570:22 | i64_bitxor | | {EXTERNAL LOCATION} | i64 | +| main.rs:1570:26:1570:30 | 37i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1570:26:1570:38 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1570:34:1570:38 | 38i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1571:13:1571:19 | i64_shl | | {EXTERNAL LOCATION} | i64 | +| main.rs:1571:23:1571:27 | 39i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1571:23:1571:36 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1571:32:1571:36 | 40i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1572:13:1572:19 | i64_shr | | {EXTERNAL LOCATION} | i64 | +| main.rs:1572:23:1572:27 | 41i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1572:23:1572:36 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1572:32:1572:36 | 42i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1575:13:1575:33 | mut i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1575:37:1575:41 | 43i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1576:9:1576:25 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1576:9:1576:34 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1576:30:1576:34 | 44i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1578:13:1578:32 | mut i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1578:36:1578:40 | 45i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1579:9:1579:24 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1579:9:1579:33 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1579:29:1579:33 | 46i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1581:13:1581:33 | mut i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1581:37:1581:41 | 47i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1582:9:1582:25 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1582:9:1582:34 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1582:30:1582:34 | 48i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1584:13:1584:30 | mut i64_shl_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1584:34:1584:38 | 49i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1585:9:1585:22 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1585:9:1585:32 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:1585:28:1585:32 | 50i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1587:13:1587:30 | mut i64_shr_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1587:34:1587:38 | 51i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1588:9:1588:22 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1588:9:1588:32 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:1588:28:1588:32 | 52i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1590:13:1590:19 | i64_neg | | {EXTERNAL LOCATION} | i64 | +| main.rs:1590:23:1590:28 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1590:24:1590:28 | 53i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1591:13:1591:19 | i64_not | | {EXTERNAL LOCATION} | i64 | +| main.rs:1591:23:1591:28 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1591:24:1591:28 | 54i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1594:13:1594:14 | v1 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1594:18:1594:36 | Vec2 {...} | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1594:28:1594:28 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1594:28:1594:28 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1594:34:1594:34 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1594:34:1594:34 | 2 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1595:13:1595:14 | v2 | | file://:0:0:0:0 | & | +| main.rs:1595:13:1595:14 | v2 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1595:13:1595:14 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1595:18:1595:36 | Vec2 {...} | | file://:0:0:0:0 | & | +| main.rs:1595:18:1595:36 | Vec2 {...} | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1595:18:1595:36 | Vec2 {...} | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1595:28:1595:28 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1595:28:1595:28 | 3 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1595:34:1595:34 | 4 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1595:34:1595:34 | 4 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1598:13:1598:19 | vec2_eq | | {EXTERNAL LOCATION} | bool | +| main.rs:1598:23:1598:24 | v1 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1598:23:1598:30 | ... == ... | | {EXTERNAL LOCATION} | bool | | main.rs:1598:29:1598:30 | v2 | | file://:0:0:0:0 | & | -| main.rs:1598:29:1598:30 | v2 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1598:29:1598:30 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1601:13:1601:20 | vec2_add | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1601:24:1601:25 | v1 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1601:24:1601:30 | ... + ... | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1598:29:1598:30 | v2 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1598:29:1598:30 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1599:13:1599:19 | vec2_ne | | {EXTERNAL LOCATION} | bool | +| main.rs:1599:23:1599:24 | v1 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1599:23:1599:30 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1599:29:1599:30 | v2 | | file://:0:0:0:0 | & | +| main.rs:1599:29:1599:30 | v2 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1599:29:1599:30 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1600:13:1600:19 | vec2_lt | | {EXTERNAL LOCATION} | bool | +| main.rs:1600:23:1600:24 | v1 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1600:23:1600:29 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1600:28:1600:29 | v2 | | file://:0:0:0:0 | & | +| main.rs:1600:28:1600:29 | v2 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1600:28:1600:29 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1601:13:1601:19 | vec2_le | | {EXTERNAL LOCATION} | bool | +| main.rs:1601:23:1601:24 | v1 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1601:23:1601:30 | ... <= ... | | {EXTERNAL LOCATION} | bool | | main.rs:1601:29:1601:30 | v2 | | file://:0:0:0:0 | & | -| main.rs:1601:29:1601:30 | v2 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1601:29:1601:30 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1602:13:1602:20 | vec2_sub | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1602:24:1602:25 | v1 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1602:24:1602:30 | ... - ... | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1602:29:1602:30 | v2 | | file://:0:0:0:0 | & | -| main.rs:1602:29:1602:30 | v2 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1602:29:1602:30 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1603:13:1603:20 | vec2_mul | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1603:24:1603:25 | v1 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1603:24:1603:30 | ... * ... | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1601:29:1601:30 | v2 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1601:29:1601:30 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1602:13:1602:19 | vec2_gt | | {EXTERNAL LOCATION} | bool | +| main.rs:1602:23:1602:24 | v1 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1602:23:1602:29 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1602:28:1602:29 | v2 | | file://:0:0:0:0 | & | +| main.rs:1602:28:1602:29 | v2 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1602:28:1602:29 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1603:13:1603:19 | vec2_ge | | {EXTERNAL LOCATION} | bool | +| main.rs:1603:23:1603:24 | v1 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1603:23:1603:30 | ... >= ... | | {EXTERNAL LOCATION} | bool | | main.rs:1603:29:1603:30 | v2 | | file://:0:0:0:0 | & | -| main.rs:1603:29:1603:30 | v2 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1603:29:1603:30 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1604:13:1604:20 | vec2_div | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1604:24:1604:25 | v1 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1604:24:1604:30 | ... / ... | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1604:29:1604:30 | v2 | | file://:0:0:0:0 | & | -| main.rs:1604:29:1604:30 | v2 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1604:29:1604:30 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1605:13:1605:20 | vec2_rem | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1605:24:1605:25 | v1 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1605:24:1605:30 | ... % ... | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1605:29:1605:30 | v2 | | file://:0:0:0:0 | & | -| main.rs:1605:29:1605:30 | v2 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1605:29:1605:30 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1608:13:1608:31 | mut vec2_add_assign | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1608:35:1608:36 | v1 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1609:9:1609:23 | vec2_add_assign | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1609:9:1609:29 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1609:28:1609:29 | v2 | | file://:0:0:0:0 | & | -| main.rs:1609:28:1609:29 | v2 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1609:28:1609:29 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1611:13:1611:31 | mut vec2_sub_assign | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1611:35:1611:36 | v1 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1612:9:1612:23 | vec2_sub_assign | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1612:9:1612:29 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1612:28:1612:29 | v2 | | file://:0:0:0:0 | & | -| main.rs:1612:28:1612:29 | v2 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1612:28:1612:29 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1614:13:1614:31 | mut vec2_mul_assign | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1614:35:1614:36 | v1 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1615:9:1615:23 | vec2_mul_assign | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1615:9:1615:29 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1615:28:1615:29 | v2 | | file://:0:0:0:0 | & | -| main.rs:1615:28:1615:29 | v2 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1615:28:1615:29 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1617:13:1617:31 | mut vec2_div_assign | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1617:35:1617:36 | v1 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1618:9:1618:23 | vec2_div_assign | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1618:9:1618:29 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1618:28:1618:29 | v2 | | file://:0:0:0:0 | & | -| main.rs:1618:28:1618:29 | v2 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1618:28:1618:29 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1620:13:1620:31 | mut vec2_rem_assign | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1620:35:1620:36 | v1 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1621:9:1621:23 | vec2_rem_assign | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1621:9:1621:29 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1621:28:1621:29 | v2 | | file://:0:0:0:0 | & | -| main.rs:1621:28:1621:29 | v2 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1621:28:1621:29 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1624:13:1624:23 | vec2_bitand | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1624:27:1624:28 | v1 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1624:27:1624:33 | ... & ... | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1624:32:1624:33 | v2 | | file://:0:0:0:0 | & | -| main.rs:1624:32:1624:33 | v2 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1624:32:1624:33 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1625:13:1625:22 | vec2_bitor | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1625:26:1625:27 | v1 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1625:26:1625:32 | ... \| ... | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1625:31:1625:32 | v2 | | file://:0:0:0:0 | & | -| main.rs:1625:31:1625:32 | v2 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1625:31:1625:32 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1626:13:1626:23 | vec2_bitxor | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1626:27:1626:28 | v1 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1626:27:1626:33 | ... ^ ... | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1626:32:1626:33 | v2 | | file://:0:0:0:0 | & | -| main.rs:1626:32:1626:33 | v2 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1626:32:1626:33 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1627:13:1627:20 | vec2_shl | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1627:24:1627:25 | v1 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1627:24:1627:33 | ... << ... | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1627:30:1627:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:1628:13:1628:20 | vec2_shr | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1628:24:1628:25 | v1 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1628:24:1628:33 | ... >> ... | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1628:30:1628:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:1631:13:1631:34 | mut vec2_bitand_assign | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1631:38:1631:39 | v1 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1632:9:1632:26 | vec2_bitand_assign | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1632:9:1632:32 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1632:31:1632:32 | v2 | | file://:0:0:0:0 | & | -| main.rs:1632:31:1632:32 | v2 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1632:31:1632:32 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1634:13:1634:33 | mut vec2_bitor_assign | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1634:37:1634:38 | v1 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1635:9:1635:25 | vec2_bitor_assign | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1635:9:1635:31 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1635:30:1635:31 | v2 | | file://:0:0:0:0 | & | -| main.rs:1635:30:1635:31 | v2 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1635:30:1635:31 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1637:13:1637:34 | mut vec2_bitxor_assign | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1637:38:1637:39 | v1 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1638:9:1638:26 | vec2_bitxor_assign | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1638:9:1638:32 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1638:31:1638:32 | v2 | | file://:0:0:0:0 | & | -| main.rs:1638:31:1638:32 | v2 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1638:31:1638:32 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1640:13:1640:31 | mut vec2_shl_assign | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1640:35:1640:36 | v1 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1641:9:1641:23 | vec2_shl_assign | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1641:9:1641:32 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1641:29:1641:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:1643:13:1643:31 | mut vec2_shr_assign | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1643:35:1643:36 | v1 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1644:9:1644:23 | vec2_shr_assign | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1644:9:1644:32 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1644:29:1644:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:1647:13:1647:20 | vec2_neg | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1647:24:1647:26 | - ... | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1647:25:1647:26 | v1 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1648:13:1648:20 | vec2_not | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1648:24:1648:26 | ! ... | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1648:25:1648:26 | v1 | | main.rs:1297:5:1302:5 | Vec2 | -| main.rs:1658:18:1658:21 | SelfParam | | main.rs:1655:5:1655:14 | S1 | -| main.rs:1661:25:1663:5 | { ... } | | main.rs:1655:5:1655:14 | S1 | -| main.rs:1662:9:1662:10 | S1 | | main.rs:1655:5:1655:14 | S1 | -| main.rs:1665:41:1669:5 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:1665:41:1669:5 | { ... } | | main.rs:1665:16:1665:39 | ImplTraitTypeRepr | -| main.rs:1665:41:1669:5 | { ... } | Output | main.rs:1655:5:1655:14 | S1 | -| main.rs:1666:9:1668:9 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:1666:9:1668:9 | { ... } | | main.rs:1665:16:1665:39 | ImplTraitTypeRepr | -| main.rs:1666:9:1668:9 | { ... } | Output | main.rs:1655:5:1655:14 | S1 | -| main.rs:1667:13:1667:14 | S1 | | main.rs:1655:5:1655:14 | S1 | -| main.rs:1676:17:1676:46 | SelfParam | | {EXTERNAL LOCATION} | Pin | -| main.rs:1676:17:1676:46 | SelfParam | Ptr | file://:0:0:0:0 | & | -| main.rs:1676:17:1676:46 | SelfParam | Ptr.&T | main.rs:1671:5:1671:14 | S2 | -| main.rs:1676:49:1676:51 | _cx | | file://:0:0:0:0 | & | -| main.rs:1676:49:1676:51 | _cx | &T | {EXTERNAL LOCATION} | Context | -| main.rs:1676:116:1678:9 | { ... } | | {EXTERNAL LOCATION} | Poll | -| main.rs:1676:116:1678:9 | { ... } | T | main.rs:1655:5:1655:14 | S1 | -| main.rs:1677:13:1677:38 | ...::Ready(...) | | {EXTERNAL LOCATION} | Poll | -| main.rs:1677:13:1677:38 | ...::Ready(...) | T | main.rs:1655:5:1655:14 | S1 | -| main.rs:1677:36:1677:37 | S1 | | main.rs:1655:5:1655:14 | S1 | -| main.rs:1681:41:1683:5 | { ... } | | main.rs:1671:5:1671:14 | S2 | -| main.rs:1681:41:1683:5 | { ... } | | main.rs:1681:16:1681:39 | ImplTraitTypeRepr | -| main.rs:1682:9:1682:10 | S2 | | main.rs:1671:5:1671:14 | S2 | -| main.rs:1682:9:1682:10 | S2 | | main.rs:1681:16:1681:39 | ImplTraitTypeRepr | -| main.rs:1686:9:1686:12 | f1(...) | | {EXTERNAL LOCATION} | trait Future | -| main.rs:1686:9:1686:12 | f1(...) | Output | main.rs:1655:5:1655:14 | S1 | -| main.rs:1686:9:1686:18 | await ... | | main.rs:1655:5:1655:14 | S1 | -| main.rs:1687:9:1687:12 | f2(...) | | main.rs:1665:16:1665:39 | ImplTraitTypeRepr | -| main.rs:1687:9:1687:18 | await ... | | main.rs:1655:5:1655:14 | S1 | -| main.rs:1688:9:1688:12 | f3(...) | | main.rs:1681:16:1681:39 | ImplTraitTypeRepr | -| main.rs:1688:9:1688:18 | await ... | | main.rs:1655:5:1655:14 | S1 | -| main.rs:1689:9:1689:10 | S2 | | main.rs:1671:5:1671:14 | S2 | -| main.rs:1689:9:1689:16 | await S2 | | main.rs:1655:5:1655:14 | S1 | -| main.rs:1690:13:1690:13 | b | | {EXTERNAL LOCATION} | trait Future | -| main.rs:1690:13:1690:13 | b | Output | main.rs:1655:5:1655:14 | S1 | -| main.rs:1690:17:1692:9 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:1690:17:1692:9 | { ... } | Output | main.rs:1655:5:1655:14 | S1 | -| main.rs:1691:13:1691:14 | S1 | | main.rs:1655:5:1655:14 | S1 | -| main.rs:1693:9:1693:9 | b | | {EXTERNAL LOCATION} | trait Future | -| main.rs:1693:9:1693:9 | b | Output | main.rs:1655:5:1655:14 | S1 | -| main.rs:1693:9:1693:15 | await b | | main.rs:1655:5:1655:14 | S1 | -| main.rs:1703:15:1703:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1703:15:1703:19 | SelfParam | &T | main.rs:1702:5:1704:5 | Self [trait Trait1] | -| main.rs:1707:15:1707:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1707:15:1707:19 | SelfParam | &T | main.rs:1706:5:1708:5 | Self [trait Trait2] | -| main.rs:1711:15:1711:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1711:15:1711:19 | SelfParam | &T | main.rs:1699:5:1699:14 | S1 | -| main.rs:1715:15:1715:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1715:15:1715:19 | SelfParam | &T | main.rs:1699:5:1699:14 | S1 | -| main.rs:1718:37:1720:5 | { ... } | | main.rs:1699:5:1699:14 | S1 | -| main.rs:1718:37:1720:5 | { ... } | | main.rs:1718:16:1718:35 | ImplTraitTypeRepr | -| main.rs:1719:9:1719:10 | S1 | | main.rs:1699:5:1699:14 | S1 | -| main.rs:1719:9:1719:10 | S1 | | main.rs:1718:16:1718:35 | ImplTraitTypeRepr | -| main.rs:1723:18:1723:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1723:18:1723:22 | SelfParam | &T | main.rs:1722:5:1724:5 | Self [trait MyTrait] | -| main.rs:1727:18:1727:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1727:18:1727:22 | SelfParam | &T | main.rs:1699:5:1699:14 | S1 | -| main.rs:1727:31:1729:9 | { ... } | | main.rs:1700:5:1700:14 | S2 | -| main.rs:1728:13:1728:14 | S2 | | main.rs:1700:5:1700:14 | S2 | -| main.rs:1732:45:1734:5 | { ... } | | main.rs:1699:5:1699:14 | S1 | -| main.rs:1732:45:1734:5 | { ... } | | main.rs:1732:28:1732:43 | ImplTraitTypeRepr | -| main.rs:1733:9:1733:10 | S1 | | main.rs:1699:5:1699:14 | S1 | -| main.rs:1733:9:1733:10 | S1 | | main.rs:1732:28:1732:43 | ImplTraitTypeRepr | -| main.rs:1736:41:1736:41 | t | | main.rs:1736:26:1736:38 | B | -| main.rs:1736:52:1738:5 | { ... } | | main.rs:1736:23:1736:23 | A | -| main.rs:1737:9:1737:9 | t | | main.rs:1736:26:1736:38 | B | -| main.rs:1737:9:1737:17 | t.get_a() | | main.rs:1736:23:1736:23 | A | -| main.rs:1740:26:1740:26 | t | | main.rs:1740:29:1740:43 | ImplTraitTypeRepr | -| main.rs:1740:51:1742:5 | { ... } | | main.rs:1740:23:1740:23 | A | -| main.rs:1741:9:1741:9 | t | | main.rs:1740:29:1740:43 | ImplTraitTypeRepr | -| main.rs:1741:9:1741:17 | t.get_a() | | main.rs:1740:23:1740:23 | A | -| main.rs:1745:13:1745:13 | x | | main.rs:1718:16:1718:35 | ImplTraitTypeRepr | -| main.rs:1745:17:1745:20 | f1(...) | | main.rs:1718:16:1718:35 | ImplTraitTypeRepr | -| main.rs:1746:9:1746:9 | x | | main.rs:1718:16:1718:35 | ImplTraitTypeRepr | -| main.rs:1747:9:1747:9 | x | | main.rs:1718:16:1718:35 | ImplTraitTypeRepr | -| main.rs:1748:13:1748:13 | a | | main.rs:1732:28:1732:43 | ImplTraitTypeRepr | -| main.rs:1748:17:1748:32 | get_a_my_trait(...) | | main.rs:1732:28:1732:43 | ImplTraitTypeRepr | -| main.rs:1749:13:1749:13 | b | | main.rs:1700:5:1700:14 | S2 | -| main.rs:1749:17:1749:33 | uses_my_trait1(...) | | main.rs:1700:5:1700:14 | S2 | -| main.rs:1749:32:1749:32 | a | | main.rs:1732:28:1732:43 | ImplTraitTypeRepr | -| main.rs:1750:13:1750:13 | a | | main.rs:1732:28:1732:43 | ImplTraitTypeRepr | -| main.rs:1750:17:1750:32 | get_a_my_trait(...) | | main.rs:1732:28:1732:43 | ImplTraitTypeRepr | -| main.rs:1751:13:1751:13 | c | | main.rs:1700:5:1700:14 | S2 | -| main.rs:1751:17:1751:33 | uses_my_trait2(...) | | main.rs:1700:5:1700:14 | S2 | -| main.rs:1751:32:1751:32 | a | | main.rs:1732:28:1732:43 | ImplTraitTypeRepr | -| main.rs:1752:13:1752:13 | d | | main.rs:1700:5:1700:14 | S2 | -| main.rs:1752:17:1752:34 | uses_my_trait2(...) | | main.rs:1700:5:1700:14 | S2 | -| main.rs:1752:32:1752:33 | S1 | | main.rs:1699:5:1699:14 | S1 | -| main.rs:1763:16:1763:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1763:16:1763:20 | SelfParam | &T | main.rs:1759:5:1760:13 | S | -| main.rs:1763:31:1765:9 | { ... } | | main.rs:1759:5:1760:13 | S | -| main.rs:1764:13:1764:13 | S | | main.rs:1759:5:1760:13 | S | -| main.rs:1774:26:1776:9 | { ... } | | main.rs:1768:5:1771:5 | MyVec | -| main.rs:1774:26:1776:9 | { ... } | T | main.rs:1773:10:1773:10 | T | -| main.rs:1775:13:1775:38 | MyVec {...} | | main.rs:1768:5:1771:5 | MyVec | -| main.rs:1775:13:1775:38 | MyVec {...} | T | main.rs:1773:10:1773:10 | T | -| main.rs:1775:27:1775:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:1775:27:1775:36 | ...::new(...) | T | main.rs:1773:10:1773:10 | T | -| main.rs:1778:17:1778:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1778:17:1778:25 | SelfParam | &T | main.rs:1768:5:1771:5 | MyVec | -| main.rs:1778:17:1778:25 | SelfParam | &T.T | main.rs:1773:10:1773:10 | T | -| main.rs:1778:28:1778:32 | value | | main.rs:1773:10:1773:10 | T | -| main.rs:1779:13:1779:16 | self | | file://:0:0:0:0 | & | -| main.rs:1779:13:1779:16 | self | &T | main.rs:1768:5:1771:5 | MyVec | -| main.rs:1779:13:1779:16 | self | &T.T | main.rs:1773:10:1773:10 | T | -| main.rs:1779:13:1779:21 | self.data | | {EXTERNAL LOCATION} | Vec | -| main.rs:1779:13:1779:21 | self.data | T | main.rs:1773:10:1773:10 | T | -| main.rs:1779:28:1779:32 | value | | main.rs:1773:10:1773:10 | T | -| main.rs:1787:18:1787:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1787:18:1787:22 | SelfParam | &T | main.rs:1768:5:1771:5 | MyVec | -| main.rs:1787:18:1787:22 | SelfParam | &T.T | main.rs:1783:10:1783:10 | T | -| main.rs:1787:25:1787:29 | index | | {EXTERNAL LOCATION} | usize | -| main.rs:1787:56:1789:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1787:56:1789:9 | { ... } | &T | main.rs:1783:10:1783:10 | T | -| main.rs:1788:13:1788:29 | &... | | file://:0:0:0:0 | & | -| main.rs:1788:13:1788:29 | &... | &T | main.rs:1783:10:1783:10 | T | -| main.rs:1788:14:1788:17 | self | | file://:0:0:0:0 | & | -| main.rs:1788:14:1788:17 | self | &T | main.rs:1768:5:1771:5 | MyVec | -| main.rs:1788:14:1788:17 | self | &T.T | main.rs:1783:10:1783:10 | T | -| main.rs:1788:14:1788:22 | self.data | | {EXTERNAL LOCATION} | Vec | -| main.rs:1788:14:1788:22 | self.data | T | main.rs:1783:10:1783:10 | T | -| main.rs:1788:14:1788:29 | ...[index] | | main.rs:1783:10:1783:10 | T | -| main.rs:1788:24:1788:28 | index | | {EXTERNAL LOCATION} | usize | -| main.rs:1792:22:1792:26 | slice | | file://:0:0:0:0 | & | -| main.rs:1792:22:1792:26 | slice | &T | file://:0:0:0:0 | [] | -| main.rs:1792:22:1792:26 | slice | &T.[T] | main.rs:1759:5:1760:13 | S | -| main.rs:1793:13:1793:13 | x | | main.rs:1759:5:1760:13 | S | -| main.rs:1793:17:1793:21 | slice | | file://:0:0:0:0 | & | -| main.rs:1793:17:1793:21 | slice | &T | file://:0:0:0:0 | [] | -| main.rs:1793:17:1793:21 | slice | &T.[T] | main.rs:1759:5:1760:13 | S | -| main.rs:1793:17:1793:24 | slice[0] | | main.rs:1759:5:1760:13 | S | -| main.rs:1793:17:1793:30 | ... .foo() | | main.rs:1759:5:1760:13 | S | -| main.rs:1793:23:1793:23 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1797:13:1797:19 | mut vec | | main.rs:1768:5:1771:5 | MyVec | -| main.rs:1797:13:1797:19 | mut vec | T | main.rs:1759:5:1760:13 | S | -| main.rs:1797:23:1797:34 | ...::new(...) | | main.rs:1768:5:1771:5 | MyVec | -| main.rs:1797:23:1797:34 | ...::new(...) | T | main.rs:1759:5:1760:13 | S | -| main.rs:1798:9:1798:11 | vec | | main.rs:1768:5:1771:5 | MyVec | -| main.rs:1798:9:1798:11 | vec | T | main.rs:1759:5:1760:13 | S | -| main.rs:1798:18:1798:18 | S | | main.rs:1759:5:1760:13 | S | -| main.rs:1799:9:1799:11 | vec | | main.rs:1768:5:1771:5 | MyVec | -| main.rs:1799:9:1799:11 | vec | T | main.rs:1759:5:1760:13 | S | -| main.rs:1799:13:1799:13 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1801:13:1801:14 | xs | | file://:0:0:0:0 | [] | -| main.rs:1801:13:1801:14 | xs | | file://:0:0:0:0 | [] | -| main.rs:1801:13:1801:14 | xs | [T;...] | main.rs:1759:5:1760:13 | S | -| main.rs:1801:13:1801:14 | xs | [T] | main.rs:1759:5:1760:13 | S | -| main.rs:1801:21:1801:21 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1801:26:1801:28 | [...] | | file://:0:0:0:0 | [] | -| main.rs:1801:26:1801:28 | [...] | | file://:0:0:0:0 | [] | -| main.rs:1801:26:1801:28 | [...] | [T;...] | main.rs:1759:5:1760:13 | S | -| main.rs:1801:26:1801:28 | [...] | [T] | main.rs:1759:5:1760:13 | S | -| main.rs:1801:27:1801:27 | S | | main.rs:1759:5:1760:13 | S | -| main.rs:1802:13:1802:13 | x | | main.rs:1759:5:1760:13 | S | -| main.rs:1802:17:1802:18 | xs | | file://:0:0:0:0 | [] | -| main.rs:1802:17:1802:18 | xs | | file://:0:0:0:0 | [] | -| main.rs:1802:17:1802:18 | xs | [T;...] | main.rs:1759:5:1760:13 | S | -| main.rs:1802:17:1802:18 | xs | [T] | main.rs:1759:5:1760:13 | S | -| main.rs:1802:17:1802:21 | xs[0] | | main.rs:1759:5:1760:13 | S | -| main.rs:1802:17:1802:27 | ... .foo() | | main.rs:1759:5:1760:13 | S | -| main.rs:1802:20:1802:20 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1804:23:1804:25 | &xs | | file://:0:0:0:0 | & | -| main.rs:1804:23:1804:25 | &xs | &T | file://:0:0:0:0 | [] | -| main.rs:1804:23:1804:25 | &xs | &T | file://:0:0:0:0 | [] | -| main.rs:1804:23:1804:25 | &xs | &T.[T;...] | main.rs:1759:5:1760:13 | S | -| main.rs:1804:23:1804:25 | &xs | &T.[T] | main.rs:1759:5:1760:13 | S | -| main.rs:1804:24:1804:25 | xs | | file://:0:0:0:0 | [] | -| main.rs:1804:24:1804:25 | xs | | file://:0:0:0:0 | [] | -| main.rs:1804:24:1804:25 | xs | [T;...] | main.rs:1759:5:1760:13 | S | -| main.rs:1804:24:1804:25 | xs | [T] | main.rs:1759:5:1760:13 | S | -| main.rs:1810:5:1810:20 | ...::f(...) | | main.rs:67:5:67:21 | Foo | -| main.rs:1811:5:1811:60 | ...::g(...) | | main.rs:67:5:67:21 | Foo | -| main.rs:1811:20:1811:38 | ...::Foo {...} | | main.rs:67:5:67:21 | Foo | -| main.rs:1811:41:1811:59 | ...::Foo {...} | | main.rs:67:5:67:21 | Foo | -| main.rs:1827:5:1827:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1603:29:1603:30 | v2 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1603:29:1603:30 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1606:13:1606:20 | vec2_add | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1606:24:1606:25 | v1 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1606:24:1606:30 | ... + ... | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1606:29:1606:30 | v2 | | file://:0:0:0:0 | & | +| main.rs:1606:29:1606:30 | v2 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1606:29:1606:30 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1607:13:1607:20 | vec2_sub | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1607:24:1607:25 | v1 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1607:24:1607:30 | ... - ... | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1607:29:1607:30 | v2 | | file://:0:0:0:0 | & | +| main.rs:1607:29:1607:30 | v2 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1607:29:1607:30 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1608:13:1608:20 | vec2_mul | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1608:24:1608:25 | v1 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1608:24:1608:30 | ... * ... | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1608:29:1608:30 | v2 | | file://:0:0:0:0 | & | +| main.rs:1608:29:1608:30 | v2 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1608:29:1608:30 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1609:13:1609:20 | vec2_div | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1609:24:1609:25 | v1 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1609:24:1609:30 | ... / ... | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1609:29:1609:30 | v2 | | file://:0:0:0:0 | & | +| main.rs:1609:29:1609:30 | v2 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1609:29:1609:30 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1610:13:1610:20 | vec2_rem | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1610:24:1610:25 | v1 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1610:24:1610:30 | ... % ... | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1610:29:1610:30 | v2 | | file://:0:0:0:0 | & | +| main.rs:1610:29:1610:30 | v2 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1610:29:1610:30 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1613:13:1613:31 | mut vec2_add_assign | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1613:35:1613:36 | v1 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1614:9:1614:23 | vec2_add_assign | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1614:9:1614:29 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1614:28:1614:29 | v2 | | file://:0:0:0:0 | & | +| main.rs:1614:28:1614:29 | v2 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1614:28:1614:29 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1616:13:1616:31 | mut vec2_sub_assign | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1616:35:1616:36 | v1 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1617:9:1617:23 | vec2_sub_assign | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1617:9:1617:29 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1617:28:1617:29 | v2 | | file://:0:0:0:0 | & | +| main.rs:1617:28:1617:29 | v2 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1617:28:1617:29 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1619:13:1619:31 | mut vec2_mul_assign | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1619:35:1619:36 | v1 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1620:9:1620:23 | vec2_mul_assign | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1620:9:1620:29 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1620:28:1620:29 | v2 | | file://:0:0:0:0 | & | +| main.rs:1620:28:1620:29 | v2 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1620:28:1620:29 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1622:13:1622:31 | mut vec2_div_assign | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1622:35:1622:36 | v1 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1623:9:1623:23 | vec2_div_assign | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1623:9:1623:29 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1623:28:1623:29 | v2 | | file://:0:0:0:0 | & | +| main.rs:1623:28:1623:29 | v2 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1623:28:1623:29 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1625:13:1625:31 | mut vec2_rem_assign | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1625:35:1625:36 | v1 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1626:9:1626:23 | vec2_rem_assign | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1626:9:1626:29 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1626:28:1626:29 | v2 | | file://:0:0:0:0 | & | +| main.rs:1626:28:1626:29 | v2 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1626:28:1626:29 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1629:13:1629:23 | vec2_bitand | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1629:27:1629:28 | v1 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1629:27:1629:33 | ... & ... | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1629:32:1629:33 | v2 | | file://:0:0:0:0 | & | +| main.rs:1629:32:1629:33 | v2 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1629:32:1629:33 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1630:13:1630:22 | vec2_bitor | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1630:26:1630:27 | v1 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1630:26:1630:32 | ... \| ... | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1630:31:1630:32 | v2 | | file://:0:0:0:0 | & | +| main.rs:1630:31:1630:32 | v2 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1630:31:1630:32 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1631:13:1631:23 | vec2_bitxor | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1631:27:1631:28 | v1 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1631:27:1631:33 | ... ^ ... | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1631:32:1631:33 | v2 | | file://:0:0:0:0 | & | +| main.rs:1631:32:1631:33 | v2 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1631:32:1631:33 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1632:13:1632:20 | vec2_shl | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1632:24:1632:25 | v1 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1632:24:1632:33 | ... << ... | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1632:30:1632:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:1633:13:1633:20 | vec2_shr | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1633:24:1633:25 | v1 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1633:24:1633:33 | ... >> ... | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1633:30:1633:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:1636:13:1636:34 | mut vec2_bitand_assign | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1636:38:1636:39 | v1 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1637:9:1637:26 | vec2_bitand_assign | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1637:9:1637:32 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1637:31:1637:32 | v2 | | file://:0:0:0:0 | & | +| main.rs:1637:31:1637:32 | v2 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1637:31:1637:32 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1639:13:1639:33 | mut vec2_bitor_assign | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1639:37:1639:38 | v1 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1640:9:1640:25 | vec2_bitor_assign | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1640:9:1640:31 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1640:30:1640:31 | v2 | | file://:0:0:0:0 | & | +| main.rs:1640:30:1640:31 | v2 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1640:30:1640:31 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1642:13:1642:34 | mut vec2_bitxor_assign | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1642:38:1642:39 | v1 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1643:9:1643:26 | vec2_bitxor_assign | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1643:9:1643:32 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1643:31:1643:32 | v2 | | file://:0:0:0:0 | & | +| main.rs:1643:31:1643:32 | v2 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1643:31:1643:32 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1645:13:1645:31 | mut vec2_shl_assign | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1645:35:1645:36 | v1 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1646:9:1646:23 | vec2_shl_assign | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1646:9:1646:32 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:1646:29:1646:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:1648:13:1648:31 | mut vec2_shr_assign | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1648:35:1648:36 | v1 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1649:9:1649:23 | vec2_shr_assign | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1649:9:1649:32 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:1649:29:1649:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:1652:13:1652:20 | vec2_neg | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1652:24:1652:26 | - ... | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1652:25:1652:26 | v1 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1653:13:1653:20 | vec2_not | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1653:24:1653:26 | ! ... | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1653:25:1653:26 | v1 | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1663:18:1663:21 | SelfParam | | main.rs:1660:5:1660:14 | S1 | +| main.rs:1666:25:1668:5 | { ... } | | main.rs:1660:5:1660:14 | S1 | +| main.rs:1667:9:1667:10 | S1 | | main.rs:1660:5:1660:14 | S1 | +| main.rs:1670:41:1674:5 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1670:41:1674:5 | { ... } | | main.rs:1670:16:1670:39 | ImplTraitTypeRepr | +| main.rs:1670:41:1674:5 | { ... } | Output | main.rs:1660:5:1660:14 | S1 | +| main.rs:1671:9:1673:9 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1671:9:1673:9 | { ... } | | main.rs:1670:16:1670:39 | ImplTraitTypeRepr | +| main.rs:1671:9:1673:9 | { ... } | Output | main.rs:1660:5:1660:14 | S1 | +| main.rs:1672:13:1672:14 | S1 | | main.rs:1660:5:1660:14 | S1 | +| main.rs:1681:17:1681:46 | SelfParam | | {EXTERNAL LOCATION} | Pin | +| main.rs:1681:17:1681:46 | SelfParam | Ptr | file://:0:0:0:0 | & | +| main.rs:1681:17:1681:46 | SelfParam | Ptr.&T | main.rs:1676:5:1676:14 | S2 | +| main.rs:1681:49:1681:51 | _cx | | file://:0:0:0:0 | & | +| main.rs:1681:49:1681:51 | _cx | &T | {EXTERNAL LOCATION} | Context | +| main.rs:1681:116:1683:9 | { ... } | | {EXTERNAL LOCATION} | Poll | +| main.rs:1681:116:1683:9 | { ... } | T | main.rs:1660:5:1660:14 | S1 | +| main.rs:1682:13:1682:38 | ...::Ready(...) | | {EXTERNAL LOCATION} | Poll | +| main.rs:1682:13:1682:38 | ...::Ready(...) | T | main.rs:1660:5:1660:14 | S1 | +| main.rs:1682:36:1682:37 | S1 | | main.rs:1660:5:1660:14 | S1 | +| main.rs:1686:41:1688:5 | { ... } | | main.rs:1676:5:1676:14 | S2 | +| main.rs:1686:41:1688:5 | { ... } | | main.rs:1686:16:1686:39 | ImplTraitTypeRepr | +| main.rs:1687:9:1687:10 | S2 | | main.rs:1676:5:1676:14 | S2 | +| main.rs:1687:9:1687:10 | S2 | | main.rs:1686:16:1686:39 | ImplTraitTypeRepr | +| main.rs:1691:9:1691:12 | f1(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1691:9:1691:12 | f1(...) | Output | main.rs:1660:5:1660:14 | S1 | +| main.rs:1691:9:1691:18 | await ... | | main.rs:1660:5:1660:14 | S1 | +| main.rs:1692:9:1692:12 | f2(...) | | main.rs:1670:16:1670:39 | ImplTraitTypeRepr | +| main.rs:1692:9:1692:18 | await ... | | main.rs:1660:5:1660:14 | S1 | +| main.rs:1693:9:1693:12 | f3(...) | | main.rs:1686:16:1686:39 | ImplTraitTypeRepr | +| main.rs:1693:9:1693:18 | await ... | | main.rs:1660:5:1660:14 | S1 | +| main.rs:1694:9:1694:10 | S2 | | main.rs:1676:5:1676:14 | S2 | +| main.rs:1694:9:1694:16 | await S2 | | main.rs:1660:5:1660:14 | S1 | +| main.rs:1695:13:1695:13 | b | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1695:13:1695:13 | b | Output | main.rs:1660:5:1660:14 | S1 | +| main.rs:1695:17:1697:9 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1695:17:1697:9 | { ... } | Output | main.rs:1660:5:1660:14 | S1 | +| main.rs:1696:13:1696:14 | S1 | | main.rs:1660:5:1660:14 | S1 | +| main.rs:1698:9:1698:9 | b | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1698:9:1698:9 | b | Output | main.rs:1660:5:1660:14 | S1 | +| main.rs:1698:9:1698:15 | await b | | main.rs:1660:5:1660:14 | S1 | +| main.rs:1708:15:1708:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1708:15:1708:19 | SelfParam | &T | main.rs:1707:5:1709:5 | Self [trait Trait1] | +| main.rs:1712:15:1712:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1712:15:1712:19 | SelfParam | &T | main.rs:1711:5:1713:5 | Self [trait Trait2] | +| main.rs:1716:15:1716:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1716:15:1716:19 | SelfParam | &T | main.rs:1704:5:1704:14 | S1 | +| main.rs:1720:15:1720:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1720:15:1720:19 | SelfParam | &T | main.rs:1704:5:1704:14 | S1 | +| main.rs:1723:37:1725:5 | { ... } | | main.rs:1704:5:1704:14 | S1 | +| main.rs:1723:37:1725:5 | { ... } | | main.rs:1723:16:1723:35 | ImplTraitTypeRepr | +| main.rs:1724:9:1724:10 | S1 | | main.rs:1704:5:1704:14 | S1 | +| main.rs:1724:9:1724:10 | S1 | | main.rs:1723:16:1723:35 | ImplTraitTypeRepr | +| main.rs:1728:18:1728:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1728:18:1728:22 | SelfParam | &T | main.rs:1727:5:1729:5 | Self [trait MyTrait] | +| main.rs:1732:18:1732:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1732:18:1732:22 | SelfParam | &T | main.rs:1704:5:1704:14 | S1 | +| main.rs:1732:31:1734:9 | { ... } | | main.rs:1705:5:1705:14 | S2 | +| main.rs:1733:13:1733:14 | S2 | | main.rs:1705:5:1705:14 | S2 | +| main.rs:1737:45:1739:5 | { ... } | | main.rs:1704:5:1704:14 | S1 | +| main.rs:1737:45:1739:5 | { ... } | | main.rs:1737:28:1737:43 | ImplTraitTypeRepr | +| main.rs:1738:9:1738:10 | S1 | | main.rs:1704:5:1704:14 | S1 | +| main.rs:1738:9:1738:10 | S1 | | main.rs:1737:28:1737:43 | ImplTraitTypeRepr | +| main.rs:1741:41:1741:41 | t | | main.rs:1741:26:1741:38 | B | +| main.rs:1741:52:1743:5 | { ... } | | main.rs:1741:23:1741:23 | A | +| main.rs:1742:9:1742:9 | t | | main.rs:1741:26:1741:38 | B | +| main.rs:1742:9:1742:17 | t.get_a() | | main.rs:1741:23:1741:23 | A | +| main.rs:1745:26:1745:26 | t | | main.rs:1745:29:1745:43 | ImplTraitTypeRepr | +| main.rs:1745:51:1747:5 | { ... } | | main.rs:1745:23:1745:23 | A | +| main.rs:1746:9:1746:9 | t | | main.rs:1745:29:1745:43 | ImplTraitTypeRepr | +| main.rs:1746:9:1746:17 | t.get_a() | | main.rs:1745:23:1745:23 | A | +| main.rs:1750:13:1750:13 | x | | main.rs:1723:16:1723:35 | ImplTraitTypeRepr | +| main.rs:1750:17:1750:20 | f1(...) | | main.rs:1723:16:1723:35 | ImplTraitTypeRepr | +| main.rs:1751:9:1751:9 | x | | main.rs:1723:16:1723:35 | ImplTraitTypeRepr | +| main.rs:1752:9:1752:9 | x | | main.rs:1723:16:1723:35 | ImplTraitTypeRepr | +| main.rs:1753:13:1753:13 | a | | main.rs:1737:28:1737:43 | ImplTraitTypeRepr | +| main.rs:1753:17:1753:32 | get_a_my_trait(...) | | main.rs:1737:28:1737:43 | ImplTraitTypeRepr | +| main.rs:1754:13:1754:13 | b | | main.rs:1705:5:1705:14 | S2 | +| main.rs:1754:17:1754:33 | uses_my_trait1(...) | | main.rs:1705:5:1705:14 | S2 | +| main.rs:1754:32:1754:32 | a | | main.rs:1737:28:1737:43 | ImplTraitTypeRepr | +| main.rs:1755:13:1755:13 | a | | main.rs:1737:28:1737:43 | ImplTraitTypeRepr | +| main.rs:1755:17:1755:32 | get_a_my_trait(...) | | main.rs:1737:28:1737:43 | ImplTraitTypeRepr | +| main.rs:1756:13:1756:13 | c | | main.rs:1705:5:1705:14 | S2 | +| main.rs:1756:17:1756:33 | uses_my_trait2(...) | | main.rs:1705:5:1705:14 | S2 | +| main.rs:1756:32:1756:32 | a | | main.rs:1737:28:1737:43 | ImplTraitTypeRepr | +| main.rs:1757:13:1757:13 | d | | main.rs:1705:5:1705:14 | S2 | +| main.rs:1757:17:1757:34 | uses_my_trait2(...) | | main.rs:1705:5:1705:14 | S2 | +| main.rs:1757:32:1757:33 | S1 | | main.rs:1704:5:1704:14 | S1 | +| main.rs:1768:16:1768:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1768:16:1768:20 | SelfParam | &T | main.rs:1764:5:1765:13 | S | +| main.rs:1768:31:1770:9 | { ... } | | main.rs:1764:5:1765:13 | S | +| main.rs:1769:13:1769:13 | S | | main.rs:1764:5:1765:13 | S | +| main.rs:1779:26:1781:9 | { ... } | | main.rs:1773:5:1776:5 | MyVec | +| main.rs:1779:26:1781:9 | { ... } | T | main.rs:1778:10:1778:10 | T | +| main.rs:1780:13:1780:38 | MyVec {...} | | main.rs:1773:5:1776:5 | MyVec | +| main.rs:1780:13:1780:38 | MyVec {...} | T | main.rs:1778:10:1778:10 | T | +| main.rs:1780:27:1780:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:1780:27:1780:36 | ...::new(...) | T | main.rs:1778:10:1778:10 | T | +| main.rs:1783:17:1783:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1783:17:1783:25 | SelfParam | &T | main.rs:1773:5:1776:5 | MyVec | +| main.rs:1783:17:1783:25 | SelfParam | &T.T | main.rs:1778:10:1778:10 | T | +| main.rs:1783:28:1783:32 | value | | main.rs:1778:10:1778:10 | T | +| main.rs:1784:13:1784:16 | self | | file://:0:0:0:0 | & | +| main.rs:1784:13:1784:16 | self | &T | main.rs:1773:5:1776:5 | MyVec | +| main.rs:1784:13:1784:16 | self | &T.T | main.rs:1778:10:1778:10 | T | +| main.rs:1784:13:1784:21 | self.data | | {EXTERNAL LOCATION} | Vec | +| main.rs:1784:13:1784:21 | self.data | T | main.rs:1778:10:1778:10 | T | +| main.rs:1784:28:1784:32 | value | | main.rs:1778:10:1778:10 | T | +| main.rs:1792:18:1792:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1792:18:1792:22 | SelfParam | &T | main.rs:1773:5:1776:5 | MyVec | +| main.rs:1792:18:1792:22 | SelfParam | &T.T | main.rs:1788:10:1788:10 | T | +| main.rs:1792:25:1792:29 | index | | {EXTERNAL LOCATION} | usize | +| main.rs:1792:56:1794:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1792:56:1794:9 | { ... } | &T | main.rs:1788:10:1788:10 | T | +| main.rs:1793:13:1793:29 | &... | | file://:0:0:0:0 | & | +| main.rs:1793:13:1793:29 | &... | &T | main.rs:1788:10:1788:10 | T | +| main.rs:1793:14:1793:17 | self | | file://:0:0:0:0 | & | +| main.rs:1793:14:1793:17 | self | &T | main.rs:1773:5:1776:5 | MyVec | +| main.rs:1793:14:1793:17 | self | &T.T | main.rs:1788:10:1788:10 | T | +| main.rs:1793:14:1793:22 | self.data | | {EXTERNAL LOCATION} | Vec | +| main.rs:1793:14:1793:22 | self.data | T | main.rs:1788:10:1788:10 | T | +| main.rs:1793:14:1793:29 | ...[index] | | main.rs:1788:10:1788:10 | T | +| main.rs:1793:24:1793:28 | index | | {EXTERNAL LOCATION} | usize | +| main.rs:1797:22:1797:26 | slice | | file://:0:0:0:0 | & | +| main.rs:1797:22:1797:26 | slice | &T | file://:0:0:0:0 | [] | +| main.rs:1797:22:1797:26 | slice | &T.[T] | main.rs:1764:5:1765:13 | S | +| main.rs:1798:13:1798:13 | x | | main.rs:1764:5:1765:13 | S | +| main.rs:1798:17:1798:21 | slice | | file://:0:0:0:0 | & | +| main.rs:1798:17:1798:21 | slice | &T | file://:0:0:0:0 | [] | +| main.rs:1798:17:1798:21 | slice | &T.[T] | main.rs:1764:5:1765:13 | S | +| main.rs:1798:17:1798:24 | slice[0] | | main.rs:1764:5:1765:13 | S | +| main.rs:1798:17:1798:30 | ... .foo() | | main.rs:1764:5:1765:13 | S | +| main.rs:1798:23:1798:23 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1802:13:1802:19 | mut vec | | main.rs:1773:5:1776:5 | MyVec | +| main.rs:1802:13:1802:19 | mut vec | T | main.rs:1764:5:1765:13 | S | +| main.rs:1802:23:1802:34 | ...::new(...) | | main.rs:1773:5:1776:5 | MyVec | +| main.rs:1802:23:1802:34 | ...::new(...) | T | main.rs:1764:5:1765:13 | S | +| main.rs:1803:9:1803:11 | vec | | main.rs:1773:5:1776:5 | MyVec | +| main.rs:1803:9:1803:11 | vec | T | main.rs:1764:5:1765:13 | S | +| main.rs:1803:18:1803:18 | S | | main.rs:1764:5:1765:13 | S | +| main.rs:1804:9:1804:11 | vec | | main.rs:1773:5:1776:5 | MyVec | +| main.rs:1804:9:1804:11 | vec | T | main.rs:1764:5:1765:13 | S | +| main.rs:1804:13:1804:13 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1806:13:1806:14 | xs | | file://:0:0:0:0 | [] | +| main.rs:1806:13:1806:14 | xs | | file://:0:0:0:0 | [] | +| main.rs:1806:13:1806:14 | xs | [T;...] | main.rs:1764:5:1765:13 | S | +| main.rs:1806:13:1806:14 | xs | [T] | main.rs:1764:5:1765:13 | S | +| main.rs:1806:21:1806:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1806:26:1806:28 | [...] | | file://:0:0:0:0 | [] | +| main.rs:1806:26:1806:28 | [...] | | file://:0:0:0:0 | [] | +| main.rs:1806:26:1806:28 | [...] | [T;...] | main.rs:1764:5:1765:13 | S | +| main.rs:1806:26:1806:28 | [...] | [T] | main.rs:1764:5:1765:13 | S | +| main.rs:1806:27:1806:27 | S | | main.rs:1764:5:1765:13 | S | +| main.rs:1807:13:1807:13 | x | | main.rs:1764:5:1765:13 | S | +| main.rs:1807:17:1807:18 | xs | | file://:0:0:0:0 | [] | +| main.rs:1807:17:1807:18 | xs | | file://:0:0:0:0 | [] | +| main.rs:1807:17:1807:18 | xs | [T;...] | main.rs:1764:5:1765:13 | S | +| main.rs:1807:17:1807:18 | xs | [T] | main.rs:1764:5:1765:13 | S | +| main.rs:1807:17:1807:21 | xs[0] | | main.rs:1764:5:1765:13 | S | +| main.rs:1807:17:1807:27 | ... .foo() | | main.rs:1764:5:1765:13 | S | +| main.rs:1807:20:1807:20 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1809:23:1809:25 | &xs | | file://:0:0:0:0 | & | +| main.rs:1809:23:1809:25 | &xs | &T | file://:0:0:0:0 | [] | +| main.rs:1809:23:1809:25 | &xs | &T | file://:0:0:0:0 | [] | +| main.rs:1809:23:1809:25 | &xs | &T.[T;...] | main.rs:1764:5:1765:13 | S | +| main.rs:1809:23:1809:25 | &xs | &T.[T] | main.rs:1764:5:1765:13 | S | +| main.rs:1809:24:1809:25 | xs | | file://:0:0:0:0 | [] | +| main.rs:1809:24:1809:25 | xs | | file://:0:0:0:0 | [] | +| main.rs:1809:24:1809:25 | xs | [T;...] | main.rs:1764:5:1765:13 | S | +| main.rs:1809:24:1809:25 | xs | [T] | main.rs:1764:5:1765:13 | S | +| main.rs:1815:5:1815:20 | ...::f(...) | | main.rs:67:5:67:21 | Foo | +| main.rs:1816:5:1816:60 | ...::g(...) | | main.rs:67:5:67:21 | Foo | +| main.rs:1816:20:1816:38 | ...::Foo {...} | | main.rs:67:5:67:21 | Foo | +| main.rs:1816:41:1816:59 | ...::Foo {...} | | main.rs:67:5:67:21 | Foo | +| main.rs:1832:5:1832:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | testFailures From 3d18e3ea8fdd3d618c12a99fd4af2fc1c601fc15 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 12 Jun 2025 21:47:27 +0200 Subject: [PATCH 046/150] Rust: Use `hasImplementation` in path resolution --- .../codeql/rust/internal/PathResolution.qll | 18 ++---------------- .../PathResolutionConsistency.expected | 2 -- 2 files changed, 2 insertions(+), 18 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll index 748fa0fa45d..dcbda16fcbf 100644 --- a/rust/ql/lib/codeql/rust/internal/PathResolution.qll +++ b/rust/ql/lib/codeql/rust/internal/PathResolution.qll @@ -425,14 +425,7 @@ abstract private class AssocItemNode extends ItemNode, AssocItem { private class ConstItemNode extends AssocItemNode instanceof Const { override string getName() { result = Const.super.getName().getText() } - override predicate hasImplementation() { - super.hasBody() - or - // for trait items from library code, we do not currently know if they - // have default implementations or not, so we assume they do - not this.fromSource() and - this = any(TraitItemNode t).getAnAssocItem() - } + override predicate hasImplementation() { Const.super.hasImplementation() } override Namespace getNamespace() { result.isValue() } @@ -508,14 +501,7 @@ private class VariantItemNode extends ItemNode instanceof Variant { class FunctionItemNode extends AssocItemNode instanceof Function { override string getName() { result = Function.super.getName().getText() } - override predicate hasImplementation() { - super.hasBody() - or - // for trait items from library code, we do not currently know if they - // have default implementations or not, so we assume they do - not this.fromSource() and - this = any(TraitItemNode t).getAnAssocItem() - } + override predicate hasImplementation() { Function.super.hasImplementation() } override Namespace getNamespace() { result.isValue() } diff --git a/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected index 7345aedbab9..4105369917f 100644 --- a/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected @@ -21,5 +21,3 @@ multiplePathResolutions | deallocation.rs:261:11:261:22 | ...::from | file://:0:0:0:0 | fn from | | deallocation.rs:261:11:261:22 | ...::from | file://:0:0:0:0 | fn from | | deallocation.rs:261:11:261:22 | ...::from | file://:0:0:0:0 | fn from | -| lifetime.rs:415:32:415:49 | ...::clone | file://:0:0:0:0 | fn clone | -| lifetime.rs:415:32:415:49 | ...::clone | file://:0:0:0:0 | fn clone | From 118456d127a355a89945e2613e939c3b5200921a Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Fri, 13 Jun 2025 09:06:15 +0200 Subject: [PATCH 047/150] Rust: regenerate models Models are regenerated with the fix from https://github.com/github/codeql/pull/19744 which corrects the order of generation. --- ...-github.com-hyperium-hyper-hyper.model.yml | 66 +++ ...hub.com-rust-lang-libc-libc-test.model.yml | 3 +- ...tps-github.com-rust-lang-log-log.model.yml | 19 + ...github.com-rust-random-rand-rand.model.yml | 1 + ...ps-github.com-rwf2-Rocket-rocket.model.yml | 1 + .../ext/generated/rust/lang-alloc.model.yml | 29 +- .../ext/generated/rust/lang-core.model.yml | 85 +++- .../generated/rust/lang-proc_macro.model.yml | 3 +- .../lib/ext/generated/rust/lang-std.model.yml | 38 +- ...rust-lang-backtrace-rs-backtrace.model.yml | 4 +- .../rust/repo-stdarch-gen-arm.model.yml | 2 +- ...-github.com-serde-rs-serde-serde.model.yml | 17 +- ....com-serde-rs-serde-serde_derive.model.yml | 23 + .../serde/repo-serde_test_suite.model.yml | 1 + ....com-tokio-rs-tokio-tokio-stream.model.yml | 107 +++++ ...ub.com-tokio-rs-tokio-tokio-test.model.yml | 11 + ...ub.com-tokio-rs-tokio-tokio-util.model.yml | 61 +++ ...-github.com-tokio-rs-tokio-tokio.model.yml | 438 ++++++++++++++++++ 18 files changed, 855 insertions(+), 54 deletions(-) diff --git a/rust/ql/lib/ext/generated/hyper/repo-https-github.com-hyperium-hyper-hyper.model.yml b/rust/ql/lib/ext/generated/hyper/repo-https-github.com-hyperium-hyper-hyper.model.yml index 691b65724e6..b2611218ec5 100644 --- a/rust/ql/lib/ext/generated/hyper/repo-https-github.com-hyperium-hyper-hyper.model.yml +++ b/rust/ql/lib/ext/generated/hyper/repo-https-github.com-hyperium-hyper-hyper.model.yml @@ -81,13 +81,19 @@ extensions: - ["repo:https://github.com/hyperium/hyper:hyper", "::clone", "Argument[self].Field[hyper::client::conn::http2::SendRequest::dispatch].Field[hyper::client::dispatch::UnboundedSender::inner]", "ReturnValue.Field[hyper::client::conn::http2::SendRequest::dispatch].Field[hyper::client::dispatch::UnboundedSender::inner]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::clone", "Argument[self].Field[hyper::client::conn::http2::SendRequest::dispatch].Reference", "ReturnValue.Field[hyper::client::conn::http2::SendRequest::dispatch]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::clone", "Argument[self].Field[hyper::client::conn::http2::SendRequest::dispatch]", "ReturnValue.Field[hyper::client::conn::http2::SendRequest::dispatch]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::client::dispatch::SendWhen::call_back]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::client::dispatch::SendWhen::when]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::client::dispatch::SendWhen::call_back]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::client::dispatch::SendWhen::when]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::send", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::try_send", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::unbound", "Argument[self].Field[hyper::client::dispatch::Sender::inner]", "ReturnValue.Field[hyper::client::dispatch::UnboundedSender::inner]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::into_error", "Argument[self].Field[hyper::client::dispatch::TrySendError::error]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::bufs_cnt", "Argument[self].Field[hyper::common::buf::BufList::bufs].Field[alloc::collections::vec_deque::VecDeque::len]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[0]", "ReturnValue.Field[hyper::common::io::compat::Compat(0)]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::into_inner", "Argument[self].Field[hyper::common::io::rewind::Rewind::inner]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::into_inner", "Argument[self].Field[hyper::common::io::rewind::Rewind::pre].Field[core::option::Option::Some(0)]", "ReturnValue.Field[1]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[0]", "ReturnValue.Field[hyper::common::io::rewind::Rewind::inner]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::new_buffered", "Argument[0]", "ReturnValue.Field[hyper::common::io::rewind::Rewind::inner]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::new_buffered", "Argument[1]", "ReturnValue.Field[hyper::common::io::rewind::Rewind::pre].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] @@ -103,6 +109,8 @@ extensions: - ["repo:https://github.com/hyperium/hyper:hyper", "::as_bytes", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::as_bytes", "Argument[self].Field[hyper::ext::h1_reason_phrase::ReasonPhrase(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::wrap", "Argument[0]", "ReturnValue.Field[hyper::ffi::http_types::hyper_response(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::downgrade", "Argument[0].Field[alloc::sync::Arc::alloc].Reference", "ReturnValue.Field[hyper::ffi::task::WeakExec(0)].Field[alloc::sync::Weak::alloc]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::downgrade", "Argument[0].Field[alloc::sync::Arc::ptr]", "ReturnValue.Field[hyper::ffi::task::WeakExec(0)].Field[alloc::sync::Weak::ptr]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::boxed", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::into_inner", "Argument[self].Field[hyper::proto::h1::conn::Conn::io].Field[hyper::proto::h1::io::Buffered::io]", "ReturnValue.Field[0]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[0]", "ReturnValue.Field[hyper::proto::h1::conn::Conn::io].Field[hyper::proto::h1::io::Buffered::io]", "value", "dfc-generated"] @@ -117,6 +125,12 @@ extensions: - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[2]", "ReturnValue.Field[hyper::proto::h1::decode::Decoder::kind].Field[hyper::proto::h1::decode::Kind::Chunked::h1_max_header_size]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::recv_msg", "Argument[0].Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[0]", "ReturnValue.Field[hyper::proto::h1::dispatch::Client::rx]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h1::dispatch::Client::callback]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h1::dispatch::Client::rx]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h1::dispatch::Client::rx_closed]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h1::dispatch::Client::callback]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h1::dispatch::Client::rx]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h1::dispatch::Client::rx_closed]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::into_inner", "Argument[self].Field[hyper::proto::h1::dispatch::Dispatcher::dispatch]", "ReturnValue.Field[2]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[0]", "ReturnValue.Field[hyper::proto::h1::dispatch::Dispatcher::dispatch]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[1]", "ReturnValue.Field[hyper::proto::h1::dispatch::Dispatcher::conn]", "value", "dfc-generated"] @@ -151,12 +165,44 @@ extensions: - ["repo:https://github.com/hyperium/hyper:hyper", "::remaining", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[0]", "ReturnValue.Field[hyper::proto::h1::io::Cursor::bytes]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::remaining", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::PipeToSendStream::body_tx]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::PipeToSendStream::data_done]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::PipeToSendStream::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::PipeToSendStream::body_tx]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::PipeToSendStream::data_done]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::PipeToSendStream::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::is_terminated", "Argument[self].Field[hyper::proto::h2::client::ConnMapErr::is_terminated]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::ConnTask::cancel_tx]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::ConnTask::conn]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::ConnTask::drop_rx]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::ConnTask::cancel_tx]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::ConnTask::conn]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::ConnTask::drop_rx]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::PipeMap::conn_drop_ref]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::PipeMap::ping]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::PipeMap::pipe]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::PipeMap::conn_drop_ref]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::PipeMap::ping]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::PipeMap::pipe]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::ResponseFutMap::fut]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::ResponseFutMap::ping]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::ResponseFutMap::send_stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::ResponseFutMap::fut]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::ResponseFutMap::ping]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::client::ResponseFutMap::send_stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::for_stream", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::server::H2Stream::date_header]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::server::H2Stream::reply]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::server::H2Stream::state]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::server::H2Stream::date_header]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::server::H2Stream::reply]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::proto::h2::server::H2Stream::state]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[1]", "ReturnValue.Field[hyper::proto::h2::server::Server::service]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[2].Field[hyper::proto::h2::server::Config::date_header]", "ReturnValue.Field[hyper::proto::h2::server::Server::date_header]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[3]", "ReturnValue.Field[hyper::proto::h2::server::Server::exec]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[4]", "ReturnValue.Field[hyper::proto::h2::server::Server::timer]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::into_dyn_task_type", "Argument[self].Field[core::result::Result::Err(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::init_len", "Argument[self].Field[hyper::rt::io::ReadBuf::init]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::len", "Argument[self].Field[hyper::rt::io::ReadBuf::filled]", "ReturnValue", "value", "dfc-generated"] @@ -194,6 +240,8 @@ extensions: - ["repo:https://github.com/hyperium/hyper:hyper", "::writev", "Argument[0]", "Argument[self].Field[hyper::server::conn::http1::Builder::h1_writev].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::writev", "Argument[0]", "ReturnValue.Field[hyper::server::conn::http1::Builder::h1_writev].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::writev", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::server::conn::http1::Connection::conn]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::server::conn::http1::Connection::conn]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::with_upgrades", "Argument[self]", "ReturnValue.Field[hyper::server::conn::http1::UpgradeableConnection::inner].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::adaptive_window", "Argument[0]", "Argument[self].Field[hyper::server::conn::http2::Builder::h2_builder].Field[hyper::proto::h2::server::Config::adaptive_window]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::adaptive_window", "Argument[0]", "ReturnValue.Field[hyper::server::conn::http2::Builder::h2_builder].Field[hyper::proto::h2::server::Config::adaptive_window]", "value", "dfc-generated"] @@ -221,32 +269,50 @@ extensions: - ["repo:https://github.com/hyperium/hyper:hyper", "::serve_connection", "Argument[self].Field[hyper::server::conn::http2::Builder::exec].Reference", "ReturnValue.Field[hyper::server::conn::http2::Connection::conn].Field[hyper::proto::h2::server::Server::exec]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::serve_connection", "Argument[self].Field[hyper::server::conn::http2::Builder::timer].Reference", "ReturnValue.Field[hyper::server::conn::http2::Connection::conn].Field[hyper::proto::h2::server::Server::timer]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::timer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::server::conn::http2::Connection::conn]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[hyper::server::conn::http2::Connection::conn]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::clone", "Argument[self].Field[hyper::service::util::ServiceFn::f].Reference", "ReturnValue.Field[hyper::service::util::ServiceFn::f]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::clone", "Argument[self].Field[hyper::service::util::ServiceFn::f]", "ReturnValue.Field[hyper::service::util::ServiceFn::f]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::call", "Argument[0]", "Argument[self]", "taint", "df-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::call", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::inner", "Argument[self].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[0]", "ReturnValue.Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioIo::inner].Field[client_json::support::tokiort::TokioIo::inner].Field[echo::support::tokiort::TokioIo::inner].Field[end_to_end::support::tokiort::TokioIo::inner].Field[gateway::support::tokiort::TokioIo::inner].Field[graceful_shutdown::support::tokiort::TokioIo::inner].Field[hello-http2::support::tokiort::TokioIo::inner].Field[hello::support::tokiort::TokioIo::inner].Field[http_proxy::support::tokiort::TokioIo::inner].Field[multi_server::support::tokiort::TokioIo::inner].Field[params::support::tokiort::TokioIo::inner].Field[pipeline::support::tokiort::TokioIo::inner].Field[send_file::support::tokiort::TokioIo::inner].Field[server::support::tokiort::TokioIo::inner].Field[service_struct_impl::support::tokiort::TokioIo::inner].Field[single_threaded::support::tokiort::TokioIo::inner].Field[state::support::tokiort::TokioIo::inner].Field[upgrades::support::tokiort::TokioIo::inner].Field[web_api::support::tokiort::TokioIo::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::tokiort::TokioSleep::inner].Field[client_json::support::tokiort::TokioSleep::inner].Field[echo::support::tokiort::TokioSleep::inner].Field[end_to_end::support::tokiort::TokioSleep::inner].Field[gateway::support::tokiort::TokioSleep::inner].Field[graceful_shutdown::support::tokiort::TokioSleep::inner].Field[hello-http2::support::tokiort::TokioSleep::inner].Field[hello::support::tokiort::TokioSleep::inner].Field[http_proxy::support::tokiort::TokioSleep::inner].Field[multi_server::support::tokiort::TokioSleep::inner].Field[params::support::tokiort::TokioSleep::inner].Field[pipeline::support::tokiort::TokioSleep::inner].Field[send_file::support::tokiort::TokioSleep::inner].Field[server::support::tokiort::TokioSleep::inner].Field[service_struct_impl::support::tokiort::TokioSleep::inner].Field[single_threaded::support::tokiort::TokioSleep::inner].Field[state::support::tokiort::TokioSleep::inner].Field[upgrades::support::tokiort::TokioSleep::inner].Field[web_api::support::tokiort::TokioSleep::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[0]", "ReturnValue.Field[client::support::trailers::StreamBodyWithTrailers::stream].Field[integration::support::trailers::StreamBodyWithTrailers::stream].Field[server::support::trailers::StreamBodyWithTrailers::stream]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::trailers::StreamBodyWithTrailers::stream].Field[integration::support::trailers::StreamBodyWithTrailers::stream].Field[server::support::trailers::StreamBodyWithTrailers::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::trailers::StreamBodyWithTrailers::trailers].Field[integration::support::trailers::StreamBodyWithTrailers::trailers].Field[server::support::trailers::StreamBodyWithTrailers::trailers]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::trailers::StreamBodyWithTrailers::stream].Field[integration::support::trailers::StreamBodyWithTrailers::stream].Field[server::support::trailers::StreamBodyWithTrailers::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[client::support::trailers::StreamBodyWithTrailers::trailers].Field[integration::support::trailers::StreamBodyWithTrailers::trailers].Field[server::support::trailers::StreamBodyWithTrailers::trailers]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::set_trailers", "Argument[0]", "Argument[self].Field[client::support::trailers::StreamBodyWithTrailers::trailers].Field[integration::support::trailers::StreamBodyWithTrailers::trailers].Field[server::support::trailers::StreamBodyWithTrailers::trailers].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::with_trailers", "Argument[0]", "ReturnValue.Field[client::support::trailers::StreamBodyWithTrailers::stream].Field[integration::support::trailers::StreamBodyWithTrailers::stream].Field[server::support::trailers::StreamBodyWithTrailers::stream]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::with_trailers", "Argument[1]", "ReturnValue.Field[client::support::trailers::StreamBodyWithTrailers::trailers].Field[integration::support::trailers::StreamBodyWithTrailers::trailers].Field[server::support::trailers::StreamBodyWithTrailers::trailers].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "crate::proto::h2::client::handshake", "Argument[1]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[hyper::proto::h2::client::ClientTask::req_rx]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "crate::proto::h2::client::handshake", "Argument[3]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[hyper::proto::h2::client::ClientTask::executor]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "crate::proto::h2::ping::channel", "Argument[1]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "crate::service::util::service_fn", "Argument[0]", "ReturnValue.Field[hyper::service::util::ServiceFn::f]", "value", "dfc-generated"] - addsTo: pack: codeql/rust-all extensible: sinkModel data: + - ["repo:https://github.com/hyperium/hyper:hyper", "::push", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::check", "Argument[1]", "log-injection", "df-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::end_body", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::poll_drain_or_close_read", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::poll_read_body", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::write_body", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::write_body_and_end", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::write_trailers", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::encode_and_end", "Argument[1]", "log-injection", "df-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::buffer", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::buffer", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::encode", "Argument[0]", "log-injection", "df-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::encode", "Argument[0]", "log-injection", "df-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "crate::proto::h2::client::handshake", "Argument[2]", "pointer-access", "df-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "crate::proto::h2::ping::channel", "Argument[1]", "pointer-access", "df-generated"] - addsTo: pack: codeql/rust-all extensible: sourceModel diff --git a/rust/ql/lib/ext/generated/libc/repo-https-github.com-rust-lang-libc-libc-test.model.yml b/rust/ql/lib/ext/generated/libc/repo-https-github.com-rust-lang-libc-libc-test.model.yml index 5fc2777e7d7..69a5e7acf60 100644 --- a/rust/ql/lib/ext/generated/libc/repo-https-github.com-rust-lang-libc-libc-test.model.yml +++ b/rust/ql/lib/ext/generated/libc/repo-https-github.com-rust-lang-libc-libc-test.model.yml @@ -4,7 +4,8 @@ extensions: pack: codeql/rust-all extensible: summaryModel data: - - ["repo:https://github.com/rust-lang/libc:libc-test", "::check_file", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc-test", "::check_file", "Argument[0].Field[alloc::borrow::Cow::Owned(0)]", "Argument[self].Field[style::style::StyleChecker::path].Field[style_tests::style::StyleChecker::path]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/libc:libc-test", "::check_file", "Argument[0]", "Argument[self].Field[style::style::StyleChecker::path].Field[style_tests::style::StyleChecker::path].Field[std::path::PathBuf::inner]", "value", "dfc-generated"] - addsTo: pack: codeql/rust-all extensible: sinkModel diff --git a/rust/ql/lib/ext/generated/log/repo-https-github.com-rust-lang-log-log.model.yml b/rust/ql/lib/ext/generated/log/repo-https-github.com-rust-lang-log-log.model.yml index 3cc6c6deebf..95ec87d32e5 100644 --- a/rust/ql/lib/ext/generated/log/repo-https-github.com-rust-lang-log-log.model.yml +++ b/rust/ql/lib/ext/generated/log/repo-https-github.com-rust-lang-log-log.model.yml @@ -4,6 +4,8 @@ extensions: pack: codeql/rust-all extensible: summaryModel data: + - ["repo:https://github.com/rust-lang/log:log", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/log:log", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rust-lang/log:log", "::level", "Argument[self].Field[log::Metadata::level]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::target", "Argument[self].Field[log::Metadata::target]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::build", "Argument[self].Field[log::MetadataBuilder::metadata].Reference", "ReturnValue", "value", "dfc-generated"] @@ -14,11 +16,13 @@ extensions: - ["repo:https://github.com/rust-lang/log:log", "::target", "Argument[0]", "ReturnValue.Field[log::MetadataBuilder::metadata].Field[log::Metadata::target]", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::target", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::args", "Argument[self].Field[log::Record::args]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/log:log", "::file", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rust-lang/log:log", "::key_values", "Argument[self].Field[log::Record::key_values].Field[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::key_values", "Argument[self].Field[log::Record::key_values].Field[log::KeyValues(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::level", "Argument[self].Field[log::Record::metadata].Field[log::Metadata::level]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::line", "Argument[self].Field[log::Record::line]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::metadata", "Argument[self].Field[log::Record::metadata]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/log:log", "::module_path", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rust-lang/log:log", "::target", "Argument[self].Field[log::Record::metadata].Field[log::Metadata::target]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::to_builder", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rust-lang/log:log", "::args", "Argument[0]", "Argument[self].Field[log::RecordBuilder::record].Field[log::Record::args]", "value", "dfc-generated"] @@ -39,12 +43,16 @@ extensions: - ["repo:https://github.com/rust-lang/log:log", "::module_path_static", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::target", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::to_key", "Argument[self]", "ReturnValue.Field[log::kv::key::Key::key]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/log:log", "::count", "Argument[self].Field[alloc::collections::btree::map::BTreeMap::length]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/log:log", "::get", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/log:log", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rust-lang/log:log", "::from_value", "Argument[0]", "ReturnValue.Field[log::kv::error::Error::inner].Field[log::kv::error::Inner::Value(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::into_value", "Argument[self].Field[log::kv::error::Error::inner].Field[log::kv::error::Inner::Value(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::msg", "Argument[0]", "ReturnValue.Field[log::kv::error::Error::inner].Field[log::kv::error::Inner::Msg(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::borrow", "Argument[self].Field[log::kv::key::Key::key]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::as_ref", "Argument[self].Field[log::kv::key::Key::key]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::from", "Argument[0]", "ReturnValue.Field[log::kv::key::Key::key]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/log:log", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rust-lang/log:log", "::to_key", "Argument[self].Field[log::kv::key::Key::key]", "ReturnValue.Field[log::kv::key::Key::key]", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::as_str", "Argument[self].Field[log::kv::key::Key::key]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::from_str", "Argument[0]", "ReturnValue.Field[log::kv::key::Key::key]", "value", "dfc-generated"] @@ -52,3 +60,14 @@ extensions: - ["repo:https://github.com/rust-lang/log:log", "::to_value", "Argument[self].Field[log::kv::value::Value::inner].Reference", "ReturnValue.Field[log::kv::value::Value::inner]", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::to_key", "Argument[self]", "ReturnValue.Field[log::kv::key::Key::key]", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::to_key", "Argument[self]", "ReturnValue.Field[log::kv::key::Key::key]", "value", "dfc-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["repo:https://github.com/rust-lang/log:log", "::file", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/log:log", "::module_path", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/log:log", "::file", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/log:log", "::file_static", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/log:log", "::module_path", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/log:log", "::module_path_static", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/log:log", "::get", "Argument[self]", "pointer-access", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rand/repo-https-github.com-rust-random-rand-rand.model.yml b/rust/ql/lib/ext/generated/rand/repo-https-github.com-rust-random-rand-rand.model.yml index 67b6a8959c6..a446f65bfc6 100644 --- a/rust/ql/lib/ext/generated/rand/repo-https-github.com-rust-random-rand-rand.model.yml +++ b/rust/ql/lib/ext/generated/rand/repo-https-github.com-rust-random-rand-rand.model.yml @@ -20,6 +20,7 @@ extensions: - ["repo:https://github.com/rust-random/rand:rand", "::total_weight", "Argument[self].Field[rand::distr::weighted::weighted_index::WeightedIndex::total_weight].Reference", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rust-random/rand:rand", "::total_weight", "Argument[self].Field[rand::distr::weighted::weighted_index::WeightedIndex::total_weight]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rust-random/rand:rand", "::update_weights", "Argument[self].Field[rand::distr::weighted::weighted_index::WeightedIndex::total_weight].Reference", "Argument[self].Field[rand::distr::weighted::weighted_index::WeightedIndex::total_weight]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-random/rand:rand", "::weight", "Argument[self].Field[rand::distr::weighted::weighted_index::WeightedIndex::cumulative_weights].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rust-random/rand:rand", "::weight", "Argument[self].Field[rand::distr::weighted::weighted_index::WeightedIndex::total_weight].Reference", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rust-random/rand:rand", "::weight", "Argument[self].Field[rand::distr::weighted::weighted_index::WeightedIndex::total_weight]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rust-random/rand:rand", "::weights", "Argument[self]", "ReturnValue.Field[rand::distr::weighted::weighted_index::WeightedIndexIter::weighted_index]", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-rocket.model.yml b/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-rocket.model.yml index 77086aa2509..87873634e1d 100644 --- a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-rocket.model.yml +++ b/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-rocket.model.yml @@ -642,6 +642,7 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket", "::append", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::into_owned", "Argument[self]", "pointer-access", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::log", "Argument[0]", "pointer-access", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::expect", "Argument[0]", "log-injection", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::client_ip", "Argument[self]", "pointer-access", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::poll_read", "Argument[1]", "log-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rust/lang-alloc.model.yml b/rust/ql/lib/ext/generated/rust/lang-alloc.model.yml index 07666f3a45c..8d51b23787c 100644 --- a/rust/ql/lib/ext/generated/rust/lang-alloc.model.yml +++ b/rust/ql/lib/ext/generated/rust/lang-alloc.model.yml @@ -49,9 +49,15 @@ extensions: - ["lang:alloc", "::downcast", "Argument[self]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] - ["lang:alloc", "::from_non_null_in", "Argument[1]", "ReturnValue.Field[alloc::boxed::Box(1)]", "value", "dfc-generated"] - ["lang:alloc", "::from_raw_in", "Argument[1]", "ReturnValue.Field[alloc::boxed::Box(1)]", "value", "dfc-generated"] + - ["lang:alloc", "::into_inner", "Argument[0].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:alloc", "::into_inner", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] + - ["lang:alloc", "::into_non_null", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:alloc", "::into_pin", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::into_pin", "Argument[0]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["lang:alloc", "::into_raw", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:alloc", "::into_raw_with_allocator", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:alloc", "::into_unique", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:alloc", "::leak", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:alloc", "::new_uninit_in", "Argument[0]", "ReturnValue.Field[alloc::boxed::Box(1)]", "value", "dfc-generated"] - ["lang:alloc", "::new_zeroed_in", "Argument[0]", "ReturnValue.Field[alloc::boxed::Box(1)]", "value", "dfc-generated"] - ["lang:alloc", "::try_new_in", "Argument[1]", "ReturnValue.Field[alloc::boxed::Box(1)]", "value", "dfc-generated"] @@ -93,19 +99,24 @@ extensions: - ["lang:alloc", "::new", "Argument[0].Field[core::ptr::unique::Unique::pointer]", "ReturnValue.Field[1].Field[alloc::collections::btree::borrow::DormantMutRef::ptr]", "value", "dfc-generated"] - ["lang:alloc", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:alloc", "::new", "Argument[0]", "ReturnValue.Field[alloc::collections::btree::dedup_sorted_iter::DedupSortedIter::iter].Field[core::iter::adapters::peekable::Peekable::iter]", "value", "dfc-generated"] + - ["lang:alloc", "::clone", "Argument[self].Field[alloc::collections::btree::map::BTreeMap::alloc].Field[core::mem::manually_drop::ManuallyDrop::value]", "ReturnValue.Field[alloc::collections::btree::map::BTreeMap::alloc].Field[core::mem::manually_drop::ManuallyDrop::value]", "value", "dfc-generated"] + - ["lang:alloc", "::clone", "Argument[self].Field[alloc::collections::btree::map::BTreeMap::alloc].Reference", "ReturnValue.Field[alloc::collections::btree::map::BTreeMap::alloc].Field[core::mem::manually_drop::ManuallyDrop::value]", "value", "dfc-generated"] - ["lang:alloc", "::bulk_build_from_sorted_iter", "Argument[1]", "ReturnValue.Field[alloc::collections::btree::map::BTreeMap::alloc].Field[core::mem::manually_drop::ManuallyDrop::value]", "value", "dfc-generated"] - ["lang:alloc", "::entry", "Argument[0]", "ReturnValue.Field[alloc::collections::btree::map::entry::Entry::Vacant(0)].Field[alloc::collections::btree::map::entry::VacantEntry::key]", "value", "dfc-generated"] - ["lang:alloc", "::extract_if", "Argument[0]", "ReturnValue.Field[alloc::collections::btree::map::ExtractIf::pred]", "value", "dfc-generated"] - - ["lang:alloc", "::extract_if_inner", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:alloc", "::first_key_value", "Argument[self].Field[alloc::collections::btree::map::BTreeMap::root].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:alloc", "::get", "Argument[self].Field[alloc::collections::btree::map::BTreeMap::root].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:alloc", "::get_key_value", "Argument[self].Field[alloc::collections::btree::map::BTreeMap::root].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:alloc", "::get_mut", "Argument[self].Field[alloc::collections::btree::map::BTreeMap::root].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:alloc", "::extract_if", "Argument[self].Field[alloc::collections::btree::map::BTreeMap::alloc].Field[core::mem::manually_drop::ManuallyDrop::value]", "ReturnValue.Field[alloc::collections::btree::map::ExtractIf::alloc]", "value", "dfc-generated"] + - ["lang:alloc", "::extract_if", "Argument[self].Field[alloc::collections::btree::map::BTreeMap::alloc].Reference", "ReturnValue.Field[alloc::collections::btree::map::ExtractIf::alloc]", "value", "dfc-generated"] + - ["lang:alloc", "::extract_if_inner", "Argument[self].Field[alloc::collections::btree::map::BTreeMap::alloc].Field[core::mem::manually_drop::ManuallyDrop::value]", "ReturnValue.Field[1]", "value", "dfc-generated"] + - ["lang:alloc", "::extract_if_inner", "Argument[self].Field[alloc::collections::btree::map::BTreeMap::alloc].Reference", "ReturnValue.Field[1]", "value", "dfc-generated"] + - ["lang:alloc", "::first_key_value", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:alloc", "::get", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:alloc", "::get_key_value", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:alloc", "::get_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:alloc", "::get_or_insert_with", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] - ["lang:alloc", "::iter", "Argument[self].Field[alloc::collections::btree::map::BTreeMap::length]", "ReturnValue.Field[alloc::collections::btree::map::Iter::length]", "value", "dfc-generated"] - ["lang:alloc", "::iter_mut", "Argument[self].Field[alloc::collections::btree::map::BTreeMap::length]", "ReturnValue.Field[alloc::collections::btree::map::IterMut::length]", "value", "dfc-generated"] - ["lang:alloc", "::keys", "Argument[self].Field[alloc::collections::btree::map::BTreeMap::length]", "ReturnValue.Field[alloc::collections::btree::map::Keys::inner].Field[alloc::collections::btree::map::Iter::length]", "value", "dfc-generated"] - - ["lang:alloc", "::last_key_value", "Argument[self].Field[alloc::collections::btree::map::BTreeMap::root].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:alloc", "::last_key_value", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:alloc", "::len", "Argument[self].Field[alloc::collections::btree::map::BTreeMap::length]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::lower_bound", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:alloc", "::lower_bound_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] @@ -119,9 +130,9 @@ extensions: - ["lang:alloc", "::clone", "Argument[self].Reference.Field[alloc::collections::btree::map::Cursor::current]", "ReturnValue.Field[alloc::collections::btree::map::Cursor::current]", "value", "dfc-generated"] - ["lang:alloc", "::clone", "Argument[self].Reference.Field[alloc::collections::btree::map::Cursor::root]", "ReturnValue.Field[alloc::collections::btree::map::Cursor::root]", "value", "dfc-generated"] - ["lang:alloc", "::with_mutable_key", "Argument[self].Field[alloc::collections::btree::map::CursorMut::inner]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::peek_next", "Argument[self].Field[alloc::collections::btree::map::CursorMutKey::current].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:alloc", "::peek_prev", "Argument[self].Field[alloc::collections::btree::map::CursorMutKey::current].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:alloc", "::peek", "Argument[self].Field[alloc::collections::btree::map::ExtractIfInner::cur_leaf_edge].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:alloc", "::peek_next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:alloc", "::peek_prev", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:alloc", "::peek", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:alloc", "::size_hint", "Argument[self].Field[alloc::collections::btree::map::ExtractIfInner::length].Reference", "ReturnValue.Field[1].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:alloc", "::len", "Argument[self].Field[alloc::collections::btree::map::IntoIter::length]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::size_hint", "Argument[self].Field[alloc::collections::btree::map::IntoIter::length]", "ReturnValue.Field[0]", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rust/lang-core.model.yml b/rust/ql/lib/ext/generated/rust/lang-core.model.yml index c4dcf9b5e28..207ad64f963 100644 --- a/rust/ql/lib/ext/generated/rust/lang-core.model.yml +++ b/rust/ql/lib/ext/generated/rust/lang-core.model.yml @@ -16,10 +16,12 @@ extensions: - ["lang:core", "<&bool as crate::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "<&crate::net::ip_addr::Ipv4Addr as crate::ops::bit::BitAnd>::bitand", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "<&crate::net::ip_addr::Ipv4Addr as crate::ops::bit::BitOr>::bitor", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "<&crate::net::ip_addr::Ipv4Addr as crate::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&crate::net::ip_addr::Ipv4Addr as crate::ops::bit::Not>::not", "Argument[self].Reference.Reference", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "<&crate::net::ip_addr::Ipv4Addr as crate::ops::bit::Not>::not", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "<&crate::net::ip_addr::Ipv6Addr as crate::ops::bit::BitAnd>::bitand", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "<&crate::net::ip_addr::Ipv6Addr as crate::ops::bit::BitOr>::bitor", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "<&crate::net::ip_addr::Ipv6Addr as crate::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&crate::net::ip_addr::Ipv6Addr as crate::ops::bit::Not>::not", "Argument[self].Reference.Reference", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "<&crate::net::ip_addr::Ipv6Addr as crate::ops::bit::Not>::not", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "<&crate::num::saturating::Saturating as crate::ops::arith::Rem>::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "<&crate::num::saturating::Saturating as crate::ops::arith::Rem>::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "<&crate::num::saturating::Saturating as crate::ops::bit::BitAnd>::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] @@ -349,8 +351,13 @@ extensions: - ["lang:core", "<[_] as crate::slice::SlicePattern>::as_slice", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "<[_]>::align_to", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] - ["lang:core", "<[_]>::align_to_mut", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["lang:core", "<[_]>::array_windows", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<[_]>::as_array", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<[_]>::as_mut_array", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "<[_]>::as_mut_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "<[_]>::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<[_]>::as_simd", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["lang:core", "<[_]>::as_simd_mut", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] - ["lang:core", "<[_]>::chunk_by", "Argument[0]", "ReturnValue.Field[core::slice::iter::ChunkBy::predicate]", "value", "dfc-generated"] - ["lang:core", "<[_]>::chunk_by", "Argument[self]", "ReturnValue.Field[core::slice::iter::ChunkBy::slice]", "value", "dfc-generated"] - ["lang:core", "<[_]>::chunk_by_mut", "Argument[0]", "ReturnValue.Field[core::slice::iter::ChunkByMut::predicate]", "value", "dfc-generated"] @@ -361,7 +368,9 @@ extensions: - ["lang:core", "<[_]>::chunks_exact_mut", "Argument[0]", "ReturnValue.Field[core::slice::iter::ChunksExactMut::chunk_size]", "value", "dfc-generated"] - ["lang:core", "<[_]>::chunks_mut", "Argument[0]", "ReturnValue.Field[core::slice::iter::ChunksMut::chunk_size]", "value", "dfc-generated"] - ["lang:core", "<[_]>::chunks_mut", "Argument[self]", "ReturnValue.Field[core::slice::iter::ChunksMut::v]", "value", "dfc-generated"] + - ["lang:core", "<[_]>::partition_dedup", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] - ["lang:core", "<[_]>::partition_dedup_by", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["lang:core", "<[_]>::partition_dedup_by_key", "Argument[self]", "ReturnValue.Field[0]", "value", "dfc-generated"] - ["lang:core", "<[_]>::rchunks", "Argument[0]", "ReturnValue.Field[core::slice::iter::RChunks::chunk_size]", "value", "dfc-generated"] - ["lang:core", "<[_]>::rchunks", "Argument[self]", "ReturnValue.Field[core::slice::iter::RChunks::v]", "value", "dfc-generated"] - ["lang:core", "<[_]>::rchunks_exact", "Argument[0]", "ReturnValue.Field[core::slice::iter::RChunksExact::chunk_size]", "value", "dfc-generated"] @@ -387,11 +396,18 @@ extensions: - ["lang:core", "<[_]>::splitn", "Argument[0]", "ReturnValue.Field[core::slice::iter::SplitN::inner].Field[core::slice::iter::GenericSplitN::count]", "value", "dfc-generated"] - ["lang:core", "<[_]>::splitn_mut", "Argument[0]", "ReturnValue.Field[core::slice::iter::SplitNMut::inner].Field[core::slice::iter::GenericSplitN::count]", "value", "dfc-generated"] - ["lang:core", "<[_]>::windows", "Argument[self]", "ReturnValue.Field[core::slice::iter::Windows::v]", "value", "dfc-generated"] + - ["lang:core", "<[crate::ascii::ascii_char::AsciiChar]>::as_bytes", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "<[crate::ascii::ascii_char::AsciiChar]>::as_str", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "<[crate::mem::maybe_uninit::MaybeUninit]>::assume_init_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "<[crate::mem::maybe_uninit::MaybeUninit]>::assume_init_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<[crate::mem::maybe_uninit::MaybeUninit]>::write_clone_of_slice", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<[crate::mem::maybe_uninit::MaybeUninit]>::write_copy_of_slice", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<[crate::mem::maybe_uninit::MaybeUninit]>::write_filled", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<[crate::mem::maybe_uninit::MaybeUninit]>::write_with", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "<[u8] as crate::num::dec2flt::common::ByteSlice>::parse_digits", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "<[u8]>::as_ascii", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "<[u8]>::as_ascii_unchecked", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<[u8]>::trim_ascii", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "<[u8]>::trim_ascii_end", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "<[u8]>::trim_ascii_start", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "<[u8]>::utf8_chunks", "Argument[self]", "ReturnValue.Field[core::str::lossy::Utf8Chunks::source]", "value", "dfc-generated"] @@ -405,6 +421,8 @@ extensions: - ["lang:core", "<_ as crate::iter::adapters::step_by::SpecRangeSetup>::setup", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "<_ as crate::iter::traits::collect::IntoIterator>::into_iter", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "<_ as crate::ops::bit::BitOr>::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<_ as crate::slice::sort::shared::smallsort::StableSmallSortTypeImpl>::small_sort", "Argument[0]", "Argument[2]", "taint", "df-generated"] + - ["lang:core", "<_ as crate::slice::sort::shared::smallsort::UnstableSmallSortFreezeTypeImpl>::small_sort", "Argument[0]", "Argument[1]", "taint", "df-generated"] - ["lang:core", "<_ as crate::str::pattern::MultiCharEq>::matches", "Argument[0]", "Argument[self].Reference.Parameter[0]", "value", "dfc-generated"] - ["lang:core", "<_ as crate::str::pattern::MultiCharEq>::matches", "Argument[self].Reference.ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] @@ -568,6 +586,7 @@ extensions: - ["lang:core", "::next", "Argument[self].Field[core::escape::EscapeIterInner::alive].Field[core::ops::range::Range::start]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::next_back", "Argument[self].Field[core::escape::EscapeIterInner::alive].Field[core::ops::range::Range::end]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::as_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::deref", "Argument[self].Field[core::ffi::va_list::VaList::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::deref_mut", "Argument[self].Field[core::ffi::va_list::VaList::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::as_va_list", "Argument[self]", "ReturnValue.Field[core::ffi::va_list::VaList::inner]", "value", "dfc-generated"] @@ -706,19 +725,15 @@ extensions: - ["lang:core", "::nth", "Argument[self].Field[0].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::nth", "Argument[self].Field[core::iter::adapters::by_ref_sized::ByRefSized(0)].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::next_back", "Argument[self].Field[core::iter::adapters::chain::Chain::a].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::next_back", "Argument[self].Field[core::iter::adapters::chain::Chain::b].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::nth_back", "Argument[self].Field[core::iter::adapters::chain::Chain::a].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::rfind", "Argument[self].Field[core::iter::adapters::chain::Chain::a].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::rfind", "Argument[self].Field[core::iter::adapters::chain::Chain::b].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:core", "::next_back", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::nth_back", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::rfind", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::find", "Argument[self].Field[core::iter::adapters::chain::Chain::a].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::find", "Argument[self].Field[core::iter::adapters::chain::Chain::b].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:core", "::find", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::next", "Argument[self].Field[core::iter::adapters::chain::Chain::a].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::next", "Argument[self].Field[core::iter::adapters::chain::Chain::b].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::nth", "Argument[self].Field[core::iter::adapters::chain::Chain::b].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:core", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::nth", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[core::iter::adapters::chain::Chain::a].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[core::iter::adapters::chain::Chain::b].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] @@ -727,6 +742,7 @@ extensions: - ["lang:core", "::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::next_unchecked", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[core::iter::adapters::cloned::Cloned::it]", "value", "dfc-generated"] @@ -737,6 +753,8 @@ extensions: - ["lang:core", "::advance_by", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::nth", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[core::iter::adapters::copied::Copied::it]", "value", "dfc-generated"] - ["lang:core", "::advance_by", "Argument[self].Field[core::iter::adapters::cycle::Cycle::orig].Reference", "Argument[self].Field[core::iter::adapters::cycle::Cycle::iter]", "value", "dfc-generated"] @@ -793,18 +811,18 @@ extensions: - ["lang:core", "::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::next_back", "Argument[self].Field[core::iter::adapters::flatten::FlattenCompat::frontiter].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:core", "::next_back", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::next", "Argument[self].Field[core::iter::adapters::flatten::FlattenCompat::backiter].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:core", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::find", "Argument[self].Field[core::iter::adapters::fuse::Fuse::iter].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::next", "Argument[self].Field[core::iter::adapters::fuse::Fuse::iter].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::next_back", "Argument[self].Field[core::iter::adapters::fuse::Fuse::iter].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::nth", "Argument[self].Field[core::iter::adapters::fuse::Fuse::iter].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::nth_back", "Argument[self].Field[core::iter::adapters::fuse::Fuse::iter].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:core", "::rfind", "Argument[self].Field[core::iter::adapters::fuse::Fuse::iter].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:core", "::find", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::next_back", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::nth", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::nth_back", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::rfind", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] @@ -1007,6 +1025,14 @@ extensions: - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::as_mut_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::clone_from_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::copy_from_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fill", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fill_with", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::slice_as_mut_ptr", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::slice_as_ptr", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::slice_assume_init_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::slice_assume_init_ref", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from", "Argument[0]", "ReturnValue.Field[core::net::ip_addr::IpAddr::V4(0)].Field[core::net::ip_addr::Ipv4Addr::octets]", "value", "dfc-generated"] - ["lang:core", "::from", "Argument[0]", "ReturnValue.Field[core::net::ip_addr::IpAddr::V4(0)]", "value", "dfc-generated"] - ["lang:core", "::from", "Argument[0]", "ReturnValue.Field[core::net::ip_addr::IpAddr::V6(0)].Field[core::net::ip_addr::Ipv6Addr::octets]", "value", "dfc-generated"] @@ -1289,14 +1315,18 @@ extensions: - ["lang:core", "::spec_next_back", "Argument[self].Field[core::ops::range::RangeInclusive::end].Reference", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::spec_next_back", "Argument[self].Field[core::ops::range::RangeInclusive::end]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::spec_try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::spec_try_fold", "Argument[self].Field[core::ops::range::RangeInclusive::start].Reference", "Argument[1].Parameter[1]", "value", "dfc-generated"] - ["lang:core", "::spec_try_fold", "Argument[self].Field[core::ops::range::RangeInclusive::start]", "Argument[1].Parameter[1]", "value", "dfc-generated"] - ["lang:core", "::spec_try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::spec_try_rfold", "Argument[self].Field[core::ops::range::RangeInclusive::start].Reference", "Argument[1].Parameter[1]", "value", "dfc-generated"] - ["lang:core", "::spec_try_rfold", "Argument[self].Field[core::ops::range::RangeInclusive::start]", "Argument[1].Parameter[1]", "value", "dfc-generated"] - ["lang:core", "::next_back", "Argument[self].Field[core::ops::range::RangeInclusive::end].Reference", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::next_back", "Argument[self].Field[core::ops::range::RangeInclusive::end]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::nth_back", "Argument[self].Field[core::ops::range::RangeInclusive::start].Reference", "Argument[self].Field[core::ops::range::RangeInclusive::end]", "value", "dfc-generated"] - ["lang:core", "::nth_back", "Argument[self].Field[core::ops::range::RangeInclusive::start]", "Argument[self].Field[core::ops::range::RangeInclusive::end]", "value", "dfc-generated"] - ["lang:core", "::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::try_rfold", "Argument[self].Field[core::ops::range::RangeInclusive::start].Reference", "Argument[1].Parameter[1]", "value", "dfc-generated"] + - ["lang:core", "::try_rfold", "Argument[self].Field[core::ops::range::RangeInclusive::start]", "Argument[1].Parameter[1]", "value", "dfc-generated"] - ["lang:core", "::last", "Argument[self].Field[core::ops::range::RangeInclusive::end].Reference", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::last", "Argument[self].Field[core::ops::range::RangeInclusive::end]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::max", "Argument[self].Field[core::ops::range::RangeInclusive::end].Reference", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] @@ -1308,6 +1338,8 @@ extensions: - ["lang:core", "::nth", "Argument[self].Field[core::ops::range::RangeInclusive::end].Reference", "Argument[self].Field[core::ops::range::RangeInclusive::start]", "value", "dfc-generated"] - ["lang:core", "::nth", "Argument[self].Field[core::ops::range::RangeInclusive::end]", "Argument[self].Field[core::ops::range::RangeInclusive::start]", "value", "dfc-generated"] - ["lang:core", "::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::try_fold", "Argument[self].Field[core::ops::range::RangeInclusive::start].Reference", "Argument[1].Parameter[1]", "value", "dfc-generated"] + - ["lang:core", "::try_fold", "Argument[self].Field[core::ops::range::RangeInclusive::start]", "Argument[1].Parameter[1]", "value", "dfc-generated"] - ["lang:core", "::into_bounds", "Argument[self].Field[core::ops::range::RangeInclusive::end]", "ReturnValue.Field[1].Field[core::ops::range::Bound::Excluded(0)]", "value", "dfc-generated"] - ["lang:core", "::into_bounds", "Argument[self].Field[core::ops::range::RangeInclusive::end]", "ReturnValue.Field[1].Field[core::ops::range::Bound::Included(0)]", "value", "dfc-generated"] - ["lang:core", "::into_bounds", "Argument[self].Field[core::ops::range::RangeInclusive::start]", "ReturnValue.Field[0].Field[core::ops::range::Bound::Included(0)]", "value", "dfc-generated"] @@ -1346,9 +1378,6 @@ extensions: - ["lang:core", "::from_output", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::and", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::and_then", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::and_then", "Argument[self].Field[core::option::Option::Some(0)].Field[0]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::and_then", "Argument[self].Field[core::option::Option::Some(0)].Field[std::path::Component::Normal(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::and_then", "Argument[self].Field[core::option::Option::Some(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] - ["lang:core", "::as_mut", "Argument[self].Reference.Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] - ["lang:core", "::as_ref", "Argument[self].Reference.Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] - ["lang:core", "::cloned", "Argument[self].Field[core::option::Option::Some(0)].Reference", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] @@ -1356,12 +1385,12 @@ extensions: - ["lang:core", "::expect", "Argument[self].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::flatten", "Argument[self].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::get_or_insert", "Argument[0]", "Argument[self].Reference.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::get_or_insert", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::get_or_insert", "Argument[self].Reference.Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::get_or_insert_default", "Argument[self].Reference.Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:core", "::get_or_insert_with", "Argument[0].ReturnValue", "Argument[self].Reference.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::get_or_insert_with", "Argument[0]", "Argument[self].Reference.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::get_or_insert_with", "Argument[self].Reference.Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::insert", "Argument[0]", "Argument[self].Reference.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::insert", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::insert", "Argument[self].Reference.Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::inspect", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::is_none_or", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] @@ -1595,6 +1624,7 @@ extensions: - ["lang:core", "::count", "Argument[self].Field[core::slice::iter::ArrayWindows::num]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::size_hint", "Argument[self].Field[core::slice::iter::ArrayWindows::num]", "ReturnValue.Field[0]", "value", "dfc-generated"] - ["lang:core", "::size_hint", "Argument[self].Field[core::slice::iter::ArrayWindows::num]", "ReturnValue.Field[1].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[core::slice::iter::ChunkBy::slice]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[core::slice::iter::ChunkBy::predicate]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[core::slice::iter::ChunkByMut::slice]", "value", "dfc-generated"] @@ -2481,6 +2511,7 @@ extensions: - ["lang:core", "::as_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::as_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::as_ascii", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::as_bytes_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::as_mut_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] @@ -3118,10 +3149,14 @@ extensions: - ["lang:core", "crate::slice::index::range", "Argument[1].Field[core::ops::range::RangeTo::end]", "ReturnValue.Field[core::ops::range::Range::end]", "value", "dfc-generated"] - ["lang:core", "crate::slice::index::try_range", "Argument[1].Field[core::ops::range::RangeTo::end]", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::ops::range::Range::end]", "value", "dfc-generated"] - ["lang:core", "crate::slice::sort::shared::find_existing_run", "Argument[1].ReturnValue", "ReturnValue.Field[1]", "value", "dfc-generated"] + - ["lang:core", "crate::slice::sort::shared::pivot::choose_pivot", "Argument[0]", "Argument[1]", "taint", "df-generated"] - ["lang:core", "crate::slice::sort::shared::smallsort::sort4_stable", "Argument[0].Reference", "Argument[2].Parameter[1].Reference", "value", "dfc-generated"] - ["lang:core", "crate::slice::sort::stable::drift::sort", "Argument[0].Element", "Argument[3].Parameter[1].Reference", "value", "dfc-generated"] + - ["lang:core", "crate::slice::sort::stable::merge::merge", "Argument[1]", "Argument[3]", "taint", "df-generated"] - ["lang:core", "crate::slice::sort::stable::quicksort::quicksort", "Argument[0].Element", "Argument[4].Parameter[1].Reference", "value", "dfc-generated"] - ["lang:core", "crate::slice::sort::stable::sort", "Argument[0].Element", "Argument[1].Parameter[1].Reference", "value", "dfc-generated"] + - ["lang:core", "crate::slice::sort::unstable::quicksort::quicksort", "Argument[0]", "Argument[3]", "taint", "df-generated"] + - ["lang:core", "crate::slice::sort::unstable::sort", "Argument[0]", "Argument[1]", "taint", "df-generated"] - ["lang:core", "crate::str::converts::from_utf8_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "crate::str::converts::from_utf8_unchecked_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "crate::str::validations::next_code_point", "Argument[0].Element", "ReturnValue", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rust/lang-proc_macro.model.yml b/rust/ql/lib/ext/generated/rust/lang-proc_macro.model.yml index 4fc08151a34..6dd0043d3f7 100644 --- a/rust/ql/lib/ext/generated/rust/lang-proc_macro.model.yml +++ b/rust/ql/lib/ext/generated/rust/lang-proc_macro.model.yml @@ -49,8 +49,7 @@ extensions: - ["lang:proc_macro", "::mark", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:proc_macro", "::unmark", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:proc_macro", "::into_token_stream", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:proc_macro", "::expand_expr", "Argument[self].Field[0].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:proc_macro", "::expand_expr", "Argument[self].Field[proc_macro::TokenStream(0)].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:proc_macro", "::expand_expr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:proc_macro", "::from", "Argument[0]", "ReturnValue.Field[proc_macro::TokenTree::Group(0)]", "value", "dfc-generated"] - ["lang:proc_macro", "::from", "Argument[0]", "ReturnValue.Field[proc_macro::TokenTree::Ident(0)]", "value", "dfc-generated"] - ["lang:proc_macro", "::from", "Argument[0]", "ReturnValue.Field[proc_macro::TokenTree::Literal(0)]", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rust/lang-std.model.yml b/rust/ql/lib/ext/generated/rust/lang-std.model.yml index 24c00cf2478..8d1c891f932 100644 --- a/rust/ql/lib/ext/generated/rust/lang-std.model.yml +++ b/rust/ql/lib/ext/generated/rust/lang-std.model.yml @@ -112,6 +112,11 @@ extensions: - ["lang:std", "::recursive", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::as_inner", "Argument[self].Field[std::fs::DirEntry(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:std", "::read", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["lang:std", "::read_to_end", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::read_to_end", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["lang:std", "::read_to_string", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::read_to_string", "Argument[self]", "Argument[0]", "taint", "df-generated"] - ["lang:std", "::as_inner", "Argument[self].Field[std::fs::File::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::from_inner", "Argument[0]", "ReturnValue.Field[std::fs::File::inner]", "value", "dfc-generated"] - ["lang:std", "::into_inner", "Argument[self].Field[std::fs::File::inner]", "ReturnValue", "value", "dfc-generated"] @@ -230,6 +235,7 @@ extensions: - ["lang:std", "::set_position", "Argument[0]", "Argument[self].Field[std::io::cursor::Cursor::pos]", "value", "dfc-generated"] - ["lang:std", "::from", "Argument[0].Field[1]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::from", "Argument[0].Field[std::io::buffered::IntoInnerError(1)]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::read_to_end", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::read_to_end", "Argument[self]", "Argument[0]", "taint", "df-generated"] - ["lang:std", "::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::into_inner", "Argument[self].Field[std::io::pipe::PipeReader(0)]", "ReturnValue", "value", "dfc-generated"] @@ -342,6 +348,7 @@ extensions: - ["lang:std", "::from_inner", "Argument[0].Field[0]", "ReturnValue.Field[std::process::Child::handle]", "value", "dfc-generated"] - ["lang:std", "::into_inner", "Argument[self].Field[std::process::Child::handle]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::id", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::read_to_end", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::read_to_end", "Argument[self]", "Argument[0]", "taint", "df-generated"] - ["lang:std", "::as_inner", "Argument[self].Field[std::process::ChildStderr::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::from_inner", "Argument[0]", "ReturnValue.Field[std::process::ChildStderr::inner]", "value", "dfc-generated"] @@ -349,6 +356,7 @@ extensions: - ["lang:std", "::as_inner", "Argument[self].Field[std::process::ChildStdin::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::from_inner", "Argument[0]", "ReturnValue.Field[std::process::ChildStdin::inner]", "value", "dfc-generated"] - ["lang:std", "::into_inner", "Argument[self].Field[std::process::ChildStdin::inner]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::read_to_end", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::read_to_end", "Argument[self]", "Argument[0]", "taint", "df-generated"] - ["lang:std", "::as_inner", "Argument[self].Field[std::process::ChildStdout::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::from_inner", "Argument[0]", "ReturnValue.Field[std::process::ChildStdout::inner]", "value", "dfc-generated"] @@ -377,13 +385,14 @@ extensions: - ["lang:std", "::as_inner", "Argument[self].Field[std::process::ExitCode(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::from_inner", "Argument[0]", "ReturnValue.Field[std::process::ExitCode(0)]", "value", "dfc-generated"] - ["lang:std", "::to_i32", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:std", "::signal", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:std", "::stopped_signal", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::as_inner", "Argument[self].Field[std::process::ExitStatus(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::from_inner", "Argument[0]", "ReturnValue.Field[std::process::ExitStatus(0)]", "value", "dfc-generated"] - - ["lang:std", "::code", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::from_inner", "Argument[0]", "ReturnValue.Field[std::process::Stdio(0)]", "value", "dfc-generated"] + - ["lang:std", "::as_ref", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:std", "::as_ref", "Argument[self].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:std", "::read_to_end", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::read_to_string", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::new", "Argument[0]", "ReturnValue.Field[std::sync::barrier::Barrier::num_threads]", "value", "dfc-generated"] - ["lang:std", "::is_leader", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::is_leader", "Argument[self].Field[std::sync::barrier::BarrierWaitResult(0)]", "ReturnValue", "value", "dfc-generated"] @@ -516,12 +525,16 @@ extensions: - ["lang:std", "::truncate", "Argument[0]", "Argument[self].Field[std::sys::fs::unix::OpenOptions::truncate]", "value", "dfc-generated"] - ["lang:std", "::write", "Argument[0]", "Argument[self].Field[std::sys::fs::unix::OpenOptions::write]", "value", "dfc-generated"] - ["lang:std", "::read", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["lang:std", "::read_to_end", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::read_to_end", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["lang:std", "::read_to_string", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::read_to_string", "Argument[self]", "Argument[0]", "taint", "df-generated"] - ["lang:std", "::properties", "Argument[self].Field[1].Reference", "ReturnValue.Field[std::sys::pal::unix::kernel_copy::CopyParams(0)].Field[std::sys::pal::unix::kernel_copy::FdMeta::Metadata(0)]", "value", "dfc-generated"] - ["lang:std", "::properties", "Argument[self].Field[std::sys::fs::unix::cfm::CachedFileMetadata(1)].Reference", "ReturnValue.Field[std::sys::pal::unix::kernel_copy::CopyParams(0)].Field[std::sys::pal::unix::kernel_copy::FdMeta::Metadata(0)]", "value", "dfc-generated"] - ["lang:std", "::properties", "Argument[self].Field[1].Reference", "ReturnValue.Field[std::sys::pal::unix::kernel_copy::CopyParams(0)].Field[std::sys::pal::unix::kernel_copy::FdMeta::Metadata(0)]", "value", "dfc-generated"] - ["lang:std", "::properties", "Argument[self].Field[std::sys::fs::unix::cfm::CachedFileMetadata(1)].Reference", "ReturnValue.Field[std::sys::pal::unix::kernel_copy::CopyParams(0)].Field[std::sys::pal::unix::kernel_copy::FdMeta::Metadata(0)]", "value", "dfc-generated"] + - ["lang:std", "::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::port", "Argument[self].Field[std::sys::net::connection::socket::LookupHost::port]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::from_inner", "Argument[0]", "ReturnValue.Field[std::sys::net::connection::socket::TcpListener::inner]", "value", "dfc-generated"] - ["lang:std", "::bind", "Argument[0].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] @@ -561,6 +574,7 @@ extensions: - ["lang:std", "::as_inner", "Argument[self].Field[std::sys::pal::unix::fd::FileDesc(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::into_inner", "Argument[self].Field[std::sys::pal::unix::fd::FileDesc(0)]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::read_to_end", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::read_to_end", "Argument[self]", "Argument[0]", "taint", "df-generated"] - ["lang:std", "::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::as_inner", "Argument[self].Field[std::sys::pal::unix::linux::pidfd::PidFd(0)]", "ReturnValue.Reference", "value", "dfc-generated"] @@ -570,6 +584,7 @@ extensions: - ["lang:std", "::into_inner", "Argument[self].Field[std::sys::pal::unix::pipe::AnonPipe(0)]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::as_file_desc", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::as_file_desc", "Argument[self].Field[std::sys::pal::unix::pipe::AnonPipe(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:std", "::read_to_end", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::read_to_end", "Argument[self]", "Argument[0]", "taint", "df-generated"] - ["lang:std", "::id", "Argument[self].Field[std::sys::pal::unix::thread::Thread::id]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::checked_sub_instant", "Argument[0]", "ReturnValue", "taint", "df-generated"] @@ -608,14 +623,12 @@ extensions: - ["lang:std", "::from", "Argument[0].Field[std::sys::pal::unix::pipe::AnonPipe(0)]", "ReturnValue.Field[std::sys::process::unix::common::Stdio::Fd(0)]", "value", "dfc-generated"] - ["lang:std", "::from", "Argument[0]", "ReturnValue.Field[std::sys::process::unix::common::Stdio::Fd(0)]", "value", "dfc-generated"] - ["lang:std", "::from", "Argument[0]", "ReturnValue.Field[std::sys::process::unix::unix::ExitStatus(0)]", "value", "dfc-generated"] - - ["lang:std", "::code", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::into_raw", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::into_raw", "Argument[self].Field[std::sys::process::unix::unix::ExitStatus(0)]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::new", "Argument[0]", "ReturnValue.Field[std::sys::process::unix::unix::ExitStatus(0)]", "value", "dfc-generated"] - - ["lang:std", "::signal", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:std", "::stopped_signal", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::id", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::is_poisoned", "Argument[self].Field[std::sys::sync::once::futex::OnceState::poisoned]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::get_or_init", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::new", "Argument[0]", "ReturnValue.Field[std::sys::thread_local::key::racy::LazyKey::dtor]", "value", "dfc-generated"] - ["lang:std", "::get", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::new", "Argument[0]", "ReturnValue.Field[std::sys::thread_local::native::eager::Storage::val].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] @@ -735,16 +748,16 @@ extensions: - ["lang:std", "<&crate::io::stdio::Stderr as crate::io::Write>::write_all", "Argument[0]", "log-injection", "df-generated"] - ["lang:std", "<&crate::io::stdio::Stdout as crate::io::Write>::write", "Argument[0]", "log-injection", "df-generated"] - ["lang:std", "<&crate::io::stdio::Stdout as crate::io::Write>::write_all", "Argument[0]", "log-injection", "df-generated"] - - ["lang:std", "::allocate", "Argument[self]", "alloc-layout", "df-generated"] - - ["lang:std", "::allocate_zeroed", "Argument[self]", "alloc-layout", "df-generated"] - - ["lang:std", "::grow", "Argument[self]", "alloc-layout", "df-generated"] - - ["lang:std", "::grow_zeroed", "Argument[self]", "alloc-layout", "df-generated"] - - ["lang:std", "::shrink", "Argument[self]", "alloc-layout", "df-generated"] + - ["lang:std", "::allocate", "Argument[0]", "alloc-layout", "df-generated"] + - ["lang:std", "::allocate_zeroed", "Argument[0]", "alloc-layout", "df-generated"] + - ["lang:std", "::grow", "Argument[2]", "alloc-layout", "df-generated"] + - ["lang:std", "::grow_zeroed", "Argument[2]", "alloc-layout", "df-generated"] + - ["lang:std", "::shrink", "Argument[2]", "alloc-layout", "df-generated"] - ["lang:std", "::alloc", "Argument[0]", "alloc-size", "df-generated"] - ["lang:std", "::alloc_zeroed", "Argument[0]", "alloc-layout", "df-generated"] - ["lang:std", "::alloc_zeroed", "Argument[0]", "alloc-size", "df-generated"] + - ["lang:std", "::realloc", "Argument[2]", "alloc-layout", "df-generated"] - ["lang:std", "::realloc", "Argument[2]", "alloc-size", "df-generated"] - - ["lang:std", "::realloc", "Argument[self]", "alloc-layout", "df-generated"] - ["lang:std", "::write", "Argument[self]", "log-injection", "df-generated"] - ["lang:std", "::write_all", "Argument[self]", "log-injection", "df-generated"] - ["lang:std", "::write_all_vectored", "Argument[self]", "log-injection", "df-generated"] @@ -778,6 +791,7 @@ extensions: - ["lang:std", "crate::alloc::__default_lib_allocator::__rdl_alloc", "Argument[0]", "alloc-size", "df-generated"] - ["lang:std", "crate::alloc::__default_lib_allocator::__rdl_alloc_zeroed", "Argument[0]", "alloc-layout", "df-generated"] - ["lang:std", "crate::alloc::__default_lib_allocator::__rdl_alloc_zeroed", "Argument[0]", "alloc-size", "df-generated"] + - ["lang:std", "crate::alloc::__default_lib_allocator::__rdl_realloc", "Argument[3]", "alloc-layout", "df-generated"] - ["lang:std", "crate::alloc::__default_lib_allocator::__rdl_realloc", "Argument[3]", "alloc-size", "df-generated"] - ["lang:std", "crate::sys::fs::common::copy", "Argument[0]", "path-injection", "df-generated"] - ["lang:std", "crate::sys::fs::common::copy", "Argument[1]", "path-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rust/repo-https-github.com-rust-lang-backtrace-rs-backtrace.model.yml b/rust/ql/lib/ext/generated/rust/repo-https-github.com-rust-lang-backtrace-rs-backtrace.model.yml index 723dc5af671..3be680a3b41 100644 --- a/rust/ql/lib/ext/generated/rust/repo-https-github.com-rust-lang-backtrace-rs-backtrace.model.yml +++ b/rust/ql/lib/ext/generated/rust/repo-https-github.com-rust-lang-backtrace-rs-backtrace.model.yml @@ -4,7 +4,7 @@ extensions: pack: codeql/rust-all extensible: summaryModel data: - - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::sp", "Argument[self].Field[as_if_std::the_backtrace_crate::backtrace::Frame::inner].Field[backtrace::backtrace::Frame::inner].Field[std::backtrace_rs::backtrace::Frame::inner].Field[as_if_std::the_backtrace_crate::backtrace::libunwind::Frame::Cloned::sp].Field[backtrace::backtrace::libunwind::Frame::Cloned::sp].Field[std::backtrace_rs::backtrace::libunwind::Frame::Cloned::sp]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::sp", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::clone", "Argument[self].Reference.Field[as_if_std::the_backtrace_crate::backtrace::libunwind::Frame::Cloned::sp].Field[backtrace::backtrace::libunwind::Frame::Cloned::sp].Field[std::backtrace_rs::backtrace::libunwind::Frame::Cloned::sp]", "ReturnValue.Field[as_if_std::the_backtrace_crate::backtrace::libunwind::Frame::Cloned::sp].Field[backtrace::backtrace::libunwind::Frame::Cloned::sp].Field[std::backtrace_rs::backtrace::libunwind::Frame::Cloned::sp]", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::sp", "Argument[self].Reference.Field[as_if_std::the_backtrace_crate::backtrace::libunwind::Frame::Cloned::sp].Field[backtrace::backtrace::libunwind::Frame::Cloned::sp].Field[std::backtrace_rs::backtrace::libunwind::Frame::Cloned::sp]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::from", "Argument[0]", "ReturnValue.Field[as_if_std::the_backtrace_crate::capture::Backtrace::frames].Field[backtrace::capture::Backtrace::frames].Field[std::backtrace_rs::capture::Backtrace::frames]", "value", "dfc-generated"] @@ -28,7 +28,7 @@ extensions: - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::map", "Argument[1]", "ReturnValue.Field[core::option::Option::Some(0)].Field[as_if_std::the_backtrace_crate::symbolize::gimli::mmap::Mmap::len].Field[backtrace::symbolize::gimli::mmap::Mmap::len].Field[std::backtrace_rs::symbolize::gimli::mmap::Mmap::len]", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::pathname", "Argument[self].Field[as_if_std::the_backtrace_crate::symbolize::gimli::parse_running_mmaps::MapsEntry::pathname].Field[backtrace::symbolize::gimli::parse_running_mmaps::MapsEntry::pathname].Field[std::backtrace_rs::symbolize::gimli::parse_running_mmaps::MapsEntry::pathname]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::allocate", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "crate::symbolize::gimli::elf::handle_split_dwarf", "Argument[2].Field[addr2line::lookup::SplitDwarfLoad::path].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "crate::symbolize::gimli::elf::handle_split_dwarf", "Argument[2]", "ReturnValue", "taint", "df-generated"] - addsTo: pack: codeql/rust-all extensible: sinkModel diff --git a/rust/ql/lib/ext/generated/rust/repo-stdarch-gen-arm.model.yml b/rust/ql/lib/ext/generated/rust/repo-stdarch-gen-arm.model.yml index 1e7470c87c6..6761c2a79bf 100644 --- a/rust/ql/lib/ext/generated/rust/repo-stdarch-gen-arm.model.yml +++ b/rust/ql/lib/ext/generated/rust/repo-stdarch-gen-arm.model.yml @@ -25,7 +25,7 @@ extensions: - ["repo::stdarch-gen-arm", "::generate_variant", "Argument[self].Reference.Reference", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] - ["repo::stdarch-gen-arm", "::generate_variant", "Argument[self].Reference", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] - ["repo::stdarch-gen-arm", "::apply_conversions_to_call", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[stdarch-gen-arm::expression::Expression::FnCall(0)]", "value", "dfc-generated"] - - ["repo::stdarch-gen-arm", "::make_fn_call", "Argument[self].Field[stdarch-gen-arm::intrinsic::LLVMLink::signature].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo::stdarch-gen-arm", "::make_fn_call", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo::stdarch-gen-arm", "::resolve", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo::stdarch-gen-arm", "::resolve", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo::stdarch-gen-arm", "::doc_name", "Argument[self]", "ReturnValue", "taint", "df-generated"] diff --git a/rust/ql/lib/ext/generated/serde/repo-https-github.com-serde-rs-serde-serde.model.yml b/rust/ql/lib/ext/generated/serde/repo-https-github.com-serde-rs-serde-serde.model.yml index 39b067cfbdf..e58b5f3f1a3 100644 --- a/rust/ql/lib/ext/generated/serde/repo-https-github.com-serde-rs-serde-serde.model.yml +++ b/rust/ql/lib/ext/generated/serde/repo-https-github.com-serde-rs-serde-serde.model.yml @@ -7,6 +7,7 @@ extensions: - ["repo:https://github.com/serde-rs/serde:serde", "<&[u8] as crate::__private::de::IdentifierDeserializer>::from", "Argument[self]", "ReturnValue.Field[serde::de::value::BytesDeserializer::value]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "<&[u8] as crate::de::IntoDeserializer>::into_deserializer", "Argument[self]", "ReturnValue.Field[serde::de::value::BytesDeserializer::value]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "<&crate::__private::de::content::Content as crate::de::IntoDeserializer>::into_deserializer", "Argument[self]", "ReturnValue.Field[serde::__private::de::content::ContentRefDeserializer::content]", "value", "dfc-generated"] + - ["repo:https://github.com/serde-rs/serde:serde", "<&mut crate::fmt::Formatter as crate::ser::Serializer>::serialize_unit_variant", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "<&str as crate::__private::de::IdentifierDeserializer>::from", "Argument[self]", "ReturnValue.Field[serde::__private::de::StrDeserializer::value]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "<&str as crate::de::IntoDeserializer>::into_deserializer", "Argument[self]", "ReturnValue.Field[serde::de::value::StrDeserializer::value]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue.Field[serde::de::value::BoolDeserializer::value]", "value", "dfc-generated"] @@ -98,11 +99,15 @@ extensions: - ["repo:https://github.com/serde-rs/serde:serde", "::visit_borrowed_bytes", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "::visit_borrowed_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "::visit_char", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::visit_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/serde-rs/serde:serde", "::visit_string", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/serde-rs/serde:serde", "::visit_str", "Argument[0].Field[alloc::borrow::Cow::Owned(0)]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/serde-rs/serde:serde", "::visit_str", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[std::path::PathBuf::inner]", "value", "dfc-generated"] + - ["repo:https://github.com/serde-rs/serde:serde", "::visit_string", "Argument[0].Field[alloc::borrow::Cow::Owned(0)]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/serde-rs/serde:serde", "::visit_string", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[std::path::PathBuf::inner]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "::visit_borrowed_str", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/serde-rs/serde:serde", "::visit_byte_buf", "Argument[0]", "Argument[self]", "taint", "df-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "::visit_string", "Argument[0]", "Argument[self].Field[0].Reference", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "::visit_string", "Argument[0]", "Argument[self].Field[serde::de::impls::StringInPlaceVisitor(0)].Reference", "value", "dfc-generated"] + - ["repo:https://github.com/serde-rs/serde:serde", "::visit_byte_buf", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[alloc::string::String::vec]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "::visit_string", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -119,6 +124,7 @@ extensions: - ["repo:https://github.com/serde-rs/serde:serde", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[serde::de::value::CharDeserializer::value]", "value", "dfc-generated"] + - ["repo:https://github.com/serde-rs/serde:serde", "::clone", "Argument[self].Field[serde::de::value::CowStrDeserializer::value].Field[alloc::borrow::Cow::Borrowed(0)]", "ReturnValue.Field[serde::de::value::CowStrDeserializer::value].Field[alloc::borrow::Cow::Borrowed(0)]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "::clone", "Argument[self].Field[serde::de::value::CowStrDeserializer::value].Reference", "ReturnValue.Field[serde::de::value::CowStrDeserializer::value]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "::clone", "Argument[self].Field[serde::de::value::CowStrDeserializer::value]", "ReturnValue.Field[serde::de::value::CowStrDeserializer::value]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -162,6 +168,7 @@ extensions: - ["repo:https://github.com/serde-rs/serde:serde", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "::new", "Argument[0]", "ReturnValue.Field[serde::de::value::StrDeserializer::value]", "value", "dfc-generated"] + - ["repo:https://github.com/serde-rs/serde:serde", "::clone", "Argument[self].Field[serde::de::value::StringDeserializer::value].Field[alloc::string::String::vec]", "ReturnValue.Field[serde::de::value::StringDeserializer::value].Field[alloc::string::String::vec]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "::clone", "Argument[self].Field[serde::de::value::StringDeserializer::value].Reference", "ReturnValue.Field[serde::de::value::StringDeserializer::value]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "::clone", "Argument[self].Field[serde::de::value::StringDeserializer::value]", "ReturnValue.Field[serde::de::value::StringDeserializer::value]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -204,5 +211,11 @@ extensions: - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue.Field[serde::de::value::U8Deserializer::value]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue.Field[serde::de::value::UsizeDeserializer::value]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "crate::__private::ser::constrain", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/serde-rs/serde:serde", "crate::de::size_hint::cautious", "Argument[0].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "crate::de::value::private::map_as_enum", "Argument[0]", "ReturnValue.Field[serde::de::value::private::MapAsEnum::map]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "crate::de::value::private::unit_only", "Argument[0]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["repo:https://github.com/serde-rs/serde:serde", "::serialize_map", "Argument[0]", "pointer-access", "df-generated"] diff --git a/rust/ql/lib/ext/generated/serde/repo-https-github.com-serde-rs-serde-serde_derive.model.yml b/rust/ql/lib/ext/generated/serde/repo-https-github.com-serde-rs-serde-serde_derive.model.yml index 1c4eb8b7e31..e17e342a26c 100644 --- a/rust/ql/lib/ext/generated/serde/repo-https-github.com-serde-rs-serde-serde_derive.model.yml +++ b/rust/ql/lib/ext/generated/serde/repo-https-github.com-serde-rs-serde-serde_derive.model.yml @@ -9,32 +9,51 @@ extensions: - ["repo:https://github.com/serde-rs/serde:serde_derive", "::from_ast", "Argument[1].Field[syn::derive::DeriveInput::ident].Reference", "ReturnValue.Field[core::option::Option::Some(0)].Field[serde_derive::internals::ast::Container::ident]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::from_ast", "Argument[1]", "ReturnValue.Field[core::option::Option::Some(0)].Field[serde_derive::internals::ast::Container::original]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::get", "Argument[self].Field[serde_derive::internals::attr::Attr::value]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/serde-rs/serde:serde_derive", "::custom_serde_path", "Argument[self].Field[serde_derive::internals::attr::Container::serde_path].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["repo:https://github.com/serde-rs/serde:serde_derive", "::de_bound", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::default", "Argument[self].Field[serde_derive::internals::attr::Container::default]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::deny_unknown_fields", "Argument[self].Field[serde_derive::internals::attr::Container::deny_unknown_fields]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/serde-rs/serde:serde_derive", "::expecting", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::identifier", "Argument[self].Field[serde_derive::internals::attr::Container::identifier]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::is_packed", "Argument[self].Field[serde_derive::internals::attr::Container::is_packed]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::name", "Argument[self].Field[serde_derive::internals::attr::Container::name]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::non_exhaustive", "Argument[self].Field[serde_derive::internals::attr::Container::non_exhaustive]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/serde-rs/serde:serde_derive", "::remote", "Argument[self].Field[serde_derive::internals::attr::Container::remote].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::rename_all_fields_rules", "Argument[self].Field[serde_derive::internals::attr::Container::rename_all_fields_rules]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::rename_all_rules", "Argument[self].Field[serde_derive::internals::attr::Container::rename_all_rules]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/serde-rs/serde:serde_derive", "::ser_bound", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/serde-rs/serde:serde_derive", "::serde_path", "Argument[self].Field[serde_derive::internals::attr::Container::serde_path].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::tag", "Argument[self].Field[serde_derive::internals::attr::Container::tag]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::transparent", "Argument[self].Field[serde_derive::internals::attr::Container::transparent]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/serde-rs/serde:serde_derive", "::type_from", "Argument[self].Field[serde_derive::internals::attr::Container::type_from].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["repo:https://github.com/serde-rs/serde:serde_derive", "::type_into", "Argument[self].Field[serde_derive::internals::attr::Container::type_into].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["repo:https://github.com/serde-rs/serde:serde_derive", "::type_try_from", "Argument[self].Field[serde_derive::internals::attr::Container::type_try_from].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::aliases", "Argument[self].Field[serde_derive::internals::attr::Field::name].Field[serde_derive::internals::name::MultiName::deserialize_aliases]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::borrowed_lifetimes", "Argument[self].Field[serde_derive::internals::attr::Field::borrowed_lifetimes]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/serde-rs/serde:serde_derive", "::de_bound", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::default", "Argument[self].Field[serde_derive::internals::attr::Field::default]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/serde-rs/serde:serde_derive", "::deserialize_with", "Argument[self].Field[serde_derive::internals::attr::Field::deserialize_with].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::flatten", "Argument[self].Field[serde_derive::internals::attr::Field::flatten]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/serde-rs/serde:serde_derive", "::getter", "Argument[self].Field[serde_derive::internals::attr::Field::getter].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::name", "Argument[self].Field[serde_derive::internals::attr::Field::name]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/serde-rs/serde:serde_derive", "::ser_bound", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/serde-rs/serde:serde_derive", "::serialize_with", "Argument[self].Field[serde_derive::internals::attr::Field::serialize_with].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::skip_deserializing", "Argument[self].Field[serde_derive::internals::attr::Field::skip_deserializing]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::skip_serializing", "Argument[self].Field[serde_derive::internals::attr::Field::skip_serializing]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/serde-rs/serde:serde_derive", "::skip_serializing_if", "Argument[self].Field[serde_derive::internals::attr::Field::skip_serializing_if].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::transparent", "Argument[self].Field[serde_derive::internals::attr::Field::transparent]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::or", "Argument[0].Field[serde_derive::internals::attr::RenameAllRules::deserialize]", "ReturnValue.Field[serde_derive::internals::attr::RenameAllRules::deserialize]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::or", "Argument[0].Field[serde_derive::internals::attr::RenameAllRules::serialize]", "ReturnValue.Field[serde_derive::internals::attr::RenameAllRules::serialize]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::or", "Argument[self].Field[serde_derive::internals::attr::RenameAllRules::deserialize]", "ReturnValue.Field[serde_derive::internals::attr::RenameAllRules::deserialize]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::or", "Argument[self].Field[serde_derive::internals::attr::RenameAllRules::serialize]", "ReturnValue.Field[serde_derive::internals::attr::RenameAllRules::serialize]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::aliases", "Argument[self].Field[serde_derive::internals::attr::Variant::name].Field[serde_derive::internals::name::MultiName::deserialize_aliases]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/serde-rs/serde:serde_derive", "::de_bound", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/serde-rs/serde:serde_derive", "::deserialize_with", "Argument[self].Field[serde_derive::internals::attr::Variant::deserialize_with].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::name", "Argument[self].Field[serde_derive::internals::attr::Variant::name]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::other", "Argument[self].Field[serde_derive::internals::attr::Variant::other]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::rename_all_rules", "Argument[self].Field[serde_derive::internals::attr::Variant::rename_all_rules]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/serde-rs/serde:serde_derive", "::ser_bound", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/serde-rs/serde:serde_derive", "::serialize_with", "Argument[self].Field[serde_derive::internals::attr::Variant::serialize_with].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::skip_deserializing", "Argument[self].Field[serde_derive::internals::attr::Variant::skip_deserializing]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::skip_serializing", "Argument[self].Field[serde_derive::internals::attr::Variant::skip_serializing]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::untagged", "Argument[self].Field[serde_derive::internals::attr::Variant::untagged]", "ReturnValue", "value", "dfc-generated"] @@ -45,6 +64,10 @@ extensions: - ["repo:https://github.com/serde-rs/serde:serde_derive", "::or", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::deserialize_aliases", "Argument[self].Field[serde_derive::internals::name::MultiName::deserialize_aliases]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::deserialize_name", "Argument[self].Field[serde_derive::internals::name::MultiName::deserialize]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/serde-rs/serde:serde_derive", "::from_attrs", "Argument[0].Reference", "ReturnValue.Field[serde_derive::internals::name::MultiName::serialize]", "value", "dfc-generated"] + - ["repo:https://github.com/serde-rs/serde:serde_derive", "::from_attrs", "Argument[0]", "ReturnValue.Field[serde_derive::internals::name::MultiName::deserialize]", "value", "dfc-generated"] + - ["repo:https://github.com/serde-rs/serde:serde_derive", "::from_attrs", "Argument[1].Field[serde_derive::internals::attr::Attr::value].Field[core::option::Option::Some(0)]", "ReturnValue.Field[serde_derive::internals::name::MultiName::serialize]", "value", "dfc-generated"] + - ["repo:https://github.com/serde-rs/serde:serde_derive", "::from_attrs", "Argument[2].Field[serde_derive::internals::attr::Attr::value].Field[core::option::Option::Some(0)]", "ReturnValue.Field[serde_derive::internals::name::MultiName::deserialize]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::serialize_name", "Argument[self].Field[serde_derive::internals::name::MultiName::serialize]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "crate::bound::with_bound", "Argument[1].Reference", "ReturnValue", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/serde/repo-serde_test_suite.model.yml b/rust/ql/lib/ext/generated/serde/repo-serde_test_suite.model.yml index 3b7abac4f70..a2ddcdc6bea 100644 --- a/rust/ql/lib/ext/generated/serde/repo-serde_test_suite.model.yml +++ b/rust/ql/lib/ext/generated/serde/repo-serde_test_suite.model.yml @@ -6,6 +6,7 @@ extensions: data: - ["repo::serde_test_suite", "::variant_seed", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[1]", "value", "dfc-generated"] - ["repo::serde_test_suite", "::visit_byte_buf", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["repo::serde_test_suite", "::visit_string", "Argument[0].Field[alloc::string::String::vec]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] - ["repo::serde_test_suite", "::from", "Argument[0].Field[0]", "ReturnValue.Field[test_remote::remote::NewtypePriv(0)]", "value", "dfc-generated"] - ["repo::serde_test_suite", "::from", "Argument[0].Field[test_remote::NewtypePrivDef(0)]", "ReturnValue.Field[test_remote::remote::NewtypePriv(0)]", "value", "dfc-generated"] - ["repo::serde_test_suite", "::get", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-stream.model.yml b/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-stream.model.yml index ce4e3b3377a..f9f600e7247 100644 --- a/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-stream.model.yml +++ b/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-stream.model.yml @@ -7,44 +7,140 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::extend", "Argument[2].Field[core::result::Result::Err(0)]", "Argument[1].Reference.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::into_inner", "Argument[self].Field[tokio_stream::stream_close::StreamNotifyClose::inner]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_close::StreamNotifyClose::inner].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_close::StreamNotifyClose::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_close::StreamNotifyClose::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_ext::all::AllFuture::stream]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[1]", "ReturnValue.Field[tokio_stream::stream_ext::all::AllFuture::f]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::all::AllFuture::f]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::all::AllFuture::stream]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::all::AllFuture::f]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::all::AllFuture::stream]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_ext::any::AnyFuture::stream]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[1]", "ReturnValue.Field[tokio_stream::stream_ext::any::AnyFuture::f]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::any::AnyFuture::f]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::any::AnyFuture::stream]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::any::AnyFuture::f]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::any::AnyFuture::stream]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[1]", "ReturnValue.Field[tokio_stream::stream_ext::chain::Chain::b]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::chain::Chain::a]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::chain::Chain::b]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::chain::Chain::a]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::chain::Chain::b]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[1]", "ReturnValue.Field[tokio_stream::stream_ext::chunks_timeout::ChunksTimeout::cap]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[2]", "ReturnValue.Field[tokio_stream::stream_ext::chunks_timeout::ChunksTimeout::duration]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_ext::collect::Collect::stream]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::collect::Collect::collection]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::collect::Collect::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::collect::Collect::collection]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::collect::Collect::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_ext::filter::Filter::stream]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[1]", "ReturnValue.Field[tokio_stream::stream_ext::filter::Filter::f]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::filter::Filter::f]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::filter::Filter::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::filter::Filter::f]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::filter::Filter::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_ext::filter_map::FilterMap::stream]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[1]", "ReturnValue.Field[tokio_stream::stream_ext::filter_map::FilterMap::f]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::filter_map::FilterMap::f]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::filter_map::FilterMap::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::filter_map::FilterMap::f]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::filter_map::FilterMap::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_ext::fold::FoldFuture::stream]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[1]", "ReturnValue.Field[tokio_stream::stream_ext::fold::FoldFuture::acc].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[2]", "ReturnValue.Field[tokio_stream::stream_ext::fold::FoldFuture::f]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::fold::FoldFuture::acc]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::fold::FoldFuture::f]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::fold::FoldFuture::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::fold::FoldFuture::acc]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::fold::FoldFuture::f]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::fold::FoldFuture::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_ext::fuse::Fuse::stream].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::fuse::Fuse::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::fuse::Fuse::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::poll_next", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_ext::map::Map::stream]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[1]", "ReturnValue.Field[tokio_stream::stream_ext::map::Map::f]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::map::Map::f]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::map::Map::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::map::Map::f]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::map::Map::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_ext::map_while::MapWhile::stream]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[1]", "ReturnValue.Field[tokio_stream::stream_ext::map_while::MapWhile::f]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::map_while::MapWhile::f]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::map_while::MapWhile::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::map_while::MapWhile::f]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::map_while::MapWhile::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::merge::Merge::a]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::merge::Merge::a_first]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::merge::Merge::b]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::merge::Merge::a]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::merge::Merge::a_first]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::merge::Merge::b]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_ext::next::Next::stream]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::next::Next::stream]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::next::Next::stream]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::peek", "Argument[self].Field[tokio_stream::stream_ext::peekable::Peekable::peek].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::peekable::Peekable::peek]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::peekable::Peekable::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::peekable::Peekable::peek]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::peekable::Peekable::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::size_hint", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_ext::skip::Skip::stream]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[1]", "ReturnValue.Field[tokio_stream::stream_ext::skip::Skip::remaining]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::skip::Skip::remaining]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::skip::Skip::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::skip::Skip::remaining]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::skip::Skip::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_ext::skip_while::SkipWhile::stream]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[1]", "ReturnValue.Field[tokio_stream::stream_ext::skip_while::SkipWhile::predicate].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::skip_while::SkipWhile::predicate]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::skip_while::SkipWhile::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::skip_while::SkipWhile::predicate]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::skip_while::SkipWhile::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::size_hint", "Argument[self].Field[tokio_stream::stream_ext::take::Take::remaining]", "ReturnValue.Field[0]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::size_hint", "Argument[self].Field[tokio_stream::stream_ext::take::Take::remaining]", "ReturnValue.Field[1].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_ext::take::Take::stream]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[1]", "ReturnValue.Field[tokio_stream::stream_ext::take::Take::remaining]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::take::Take::remaining]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::take::Take::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::take::Take::remaining]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::take::Take::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_ext::take_while::TakeWhile::stream]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[1]", "ReturnValue.Field[tokio_stream::stream_ext::take_while::TakeWhile::predicate]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::take_while::TakeWhile::done]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::take_while::TakeWhile::predicate]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::take_while::TakeWhile::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::take_while::TakeWhile::done]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::take_while::TakeWhile::predicate]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::take_while::TakeWhile::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_ext::then::Then::stream]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[1]", "ReturnValue.Field[tokio_stream::stream_ext::then::Then::f]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::then::Then::f]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::then::Then::future]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::then::Then::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::then::Then::f]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::then::Then::future]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::then::Then::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::get_mut", "Argument[self].Field[tokio_stream::stream_ext::throttle::Throttle::stream]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::get_ref", "Argument[self].Field[tokio_stream::stream_ext::throttle::Throttle::stream]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::into_inner", "Argument[self].Field[tokio_stream::stream_ext::throttle::Throttle::stream]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[1]", "ReturnValue.Field[tokio_stream::stream_ext::timeout::Timeout::duration]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[1]", "ReturnValue.Field[tokio_stream::stream_ext::timeout_repeating::TimeoutRepeating::interval]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::timeout_repeating::TimeoutRepeating::interval]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::timeout_repeating::TimeoutRepeating::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::timeout_repeating::TimeoutRepeating::interval]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::timeout_repeating::TimeoutRepeating::stream]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_ext::try_next::TryNext::inner].Field[tokio_stream::stream_ext::next::Next::stream]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::try_next::TryNext::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::stream_ext::try_next::TryNext::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::len", "Argument[self].Field[tokio_stream::stream_map::StreamMap::entries].Field[alloc::vec::Vec::len]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::as_mut", "Argument[self].Field[tokio_stream::wrappers::interval::IntervalStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::as_ref", "Argument[self].Field[tokio_stream::wrappers::interval::IntervalStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::into_inner", "Argument[self].Field[tokio_stream::wrappers::interval::IntervalStream::inner]", "ReturnValue", "value", "dfc-generated"] @@ -53,6 +149,8 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::as_ref", "Argument[self].Field[tokio_stream::wrappers::lines::LinesStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::into_inner", "Argument[self].Field[tokio_stream::wrappers::lines::LinesStream::inner]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[tokio_stream::wrappers::lines::LinesStream::inner]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::wrappers::lines::LinesStream::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::wrappers::lines::LinesStream::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::as_mut", "Argument[self].Field[tokio_stream::wrappers::mpsc_bounded::ReceiverStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::as_ref", "Argument[self].Field[tokio_stream::wrappers::mpsc_bounded::ReceiverStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::into_inner", "Argument[self].Field[tokio_stream::wrappers::mpsc_bounded::ReceiverStream::inner]", "ReturnValue", "value", "dfc-generated"] @@ -73,6 +171,8 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::as_ref", "Argument[self].Field[tokio_stream::wrappers::split::SplitStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::into_inner", "Argument[self].Field[tokio_stream::wrappers::split::SplitStream::inner]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[tokio_stream::wrappers::split::SplitStream::inner]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::wrappers::split::SplitStream::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_stream::wrappers::split::SplitStream::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::as_mut", "Argument[self].Field[tokio_stream::wrappers::tcp_listener::TcpListenerStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::as_ref", "Argument[self].Field[tokio_stream::wrappers::tcp_listener::TcpListenerStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::into_inner", "Argument[self].Field[tokio_stream::wrappers::tcp_listener::TcpListenerStream::inner]", "ReturnValue", "value", "dfc-generated"] @@ -83,3 +183,10 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[tokio_stream::wrappers::unix_listener::UnixListenerStream::inner]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "crate::stream_ext::throttle::throttle", "Argument[0]", "ReturnValue.Field[tokio_stream::stream_ext::throttle::Throttle::duration]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "crate::stream_ext::throttle::throttle", "Argument[1]", "ReturnValue.Field[tokio_stream::stream_ext::throttle::Throttle::stream]", "value", "dfc-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::insert", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::poll_next_many", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::remove", "Argument[self]", "log-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-test.model.yml b/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-test.model.yml index 53d3500c838..14735129fb2 100644 --- a/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-test.model.yml +++ b/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-test.model.yml @@ -23,3 +23,14 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio-test", "::enter", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-test", "::into_inner", "Argument[self].Field[tokio_test::task::Spawn::future].Reference", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-test", "crate::task::spawn", "Argument[0]", "ReturnValue.Field[tokio_test::task::Spawn::future].Reference", "value", "dfc-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["repo:https://github.com/tokio-rs/tokio:tokio-test", "::read", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-test", "::read_error", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-test", "::wait", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-test", "::write", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-test", "::write_error", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-test", "::next", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-test", "::wait", "Argument[self]", "log-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-util.model.yml b/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-util.model.yml index 98812169b52..ff79818fb17 100644 --- a/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-util.model.yml +++ b/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-util.model.yml @@ -24,10 +24,18 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::map_codec", "Argument[self].Field[tokio_util::codec::framed::Framed::inner].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "ReturnValue.Field[tokio_util::codec::framed::Framed::inner].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[0]", "ReturnValue.Field[tokio_util::codec::framed::Framed::inner].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[1]", "ReturnValue.Field[tokio_util::codec::framed::Framed::inner].Field[tokio_util::codec::framed_impl::FramedImpl::codec]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::codec::framed::Framed::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::codec::framed::Framed::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::with_capacity", "Argument[0]", "ReturnValue.Field[tokio_util::codec::framed::Framed::inner].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::with_capacity", "Argument[1]", "ReturnValue.Field[tokio_util::codec::framed::Framed::inner].Field[tokio_util::codec::framed_impl::FramedImpl::codec]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[0]", "ReturnValue.Field[tokio_util::codec::framed::FramedParts::io]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[1]", "ReturnValue.Field[tokio_util::codec::framed::FramedParts::codec]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::codec::framed_impl::FramedImpl::codec]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::codec::framed_impl::FramedImpl::state]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::codec::framed_impl::FramedImpl::codec]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::codec::framed_impl::FramedImpl::state]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::borrow", "Argument[self].Field[tokio_util::codec::framed_impl::RWFrames::read]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::borrow", "Argument[self].Field[tokio_util::codec::framed_impl::RWFrames::write]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::borrow_mut", "Argument[self].Field[tokio_util::codec::framed_impl::RWFrames::read]", "ReturnValue.Reference", "value", "dfc-generated"] @@ -45,6 +53,8 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::map_decoder", "Argument[self].Field[tokio_util::codec::framed_read::FramedRead::inner].Field[tokio_util::codec::framed_impl::FramedImpl::state]", "ReturnValue.Field[tokio_util::codec::framed_read::FramedRead::inner].Field[tokio_util::codec::framed_impl::FramedImpl::state]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[0]", "ReturnValue.Field[tokio_util::codec::framed_read::FramedRead::inner].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[1]", "ReturnValue.Field[tokio_util::codec::framed_read::FramedRead::inner].Field[tokio_util::codec::framed_impl::FramedImpl::codec]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::codec::framed_read::FramedRead::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::codec::framed_read::FramedRead::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::with_capacity", "Argument[0]", "ReturnValue.Field[tokio_util::codec::framed_read::FramedRead::inner].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::with_capacity", "Argument[1]", "ReturnValue.Field[tokio_util::codec::framed_read::FramedRead::inner].Field[tokio_util::codec::framed_impl::FramedImpl::codec]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::encoder", "Argument[self].Field[tokio_util::codec::framed_write::FramedWrite::inner].Field[tokio_util::codec::framed_impl::FramedImpl::codec]", "ReturnValue.Reference", "value", "dfc-generated"] @@ -58,6 +68,8 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::map_encoder", "Argument[self].Field[tokio_util::codec::framed_write::FramedWrite::inner].Field[tokio_util::codec::framed_impl::FramedImpl::state]", "ReturnValue.Field[tokio_util::codec::framed_write::FramedWrite::inner].Field[tokio_util::codec::framed_impl::FramedImpl::state]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[0]", "ReturnValue.Field[tokio_util::codec::framed_write::FramedWrite::inner].Field[tokio_util::codec::framed_impl::FramedImpl::inner]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[1]", "ReturnValue.Field[tokio_util::codec::framed_write::FramedWrite::inner].Field[tokio_util::codec::framed_impl::FramedImpl::codec]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::codec::framed_write::FramedWrite::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::codec::framed_write::FramedWrite::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::big_endian", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::length_adjustment", "Argument[0]", "Argument[self].Field[tokio_util::codec::length_delimited::Builder::length_adjustment]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::length_adjustment", "Argument[0]", "ReturnValue.Field[tokio_util::codec::length_delimited::Builder::length_adjustment]", "value", "dfc-generated"] @@ -89,27 +101,53 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::get_mut", "Argument[self].Field[tokio_util::compat::Compat::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::get_ref", "Argument[self].Field[tokio_util::compat::Compat::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::into_inner", "Argument[self].Field[tokio_util::compat::Compat::inner]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::compat::Compat::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::compat::Compat::seek_pos]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::compat::Compat::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::compat::Compat::seek_pos]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::handle", "Argument[self].Field[tokio_util::context::TokioContext::handle]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::into_inner", "Argument[self].Field[tokio_util::context::TokioContext::inner]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[0]", "ReturnValue.Field[tokio_util::context::TokioContext::inner]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[1]", "ReturnValue.Field[tokio_util::context::TokioContext::handle]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::context::TokioContext::handle]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::context::TokioContext::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::context::TokioContext::handle]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::context::TokioContext::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::get_mut", "Argument[self].Field[tokio_util::io::copy_to_bytes::CopyToBytes::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::get_ref", "Argument[self].Field[tokio_util::io::copy_to_bytes::CopyToBytes::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::into_inner", "Argument[self].Field[tokio_util::io::copy_to_bytes::CopyToBytes::inner]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[0]", "ReturnValue.Field[tokio_util::io::copy_to_bytes::CopyToBytes::inner]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::copy_to_bytes::CopyToBytes::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::copy_to_bytes::CopyToBytes::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::into_inner", "Argument[self].Field[tokio_util::io::inspect::InspectReader::reader]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[0]", "ReturnValue.Field[tokio_util::io::inspect::InspectReader::reader]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[1]", "ReturnValue.Field[tokio_util::io::inspect::InspectReader::f]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::inspect::InspectReader::f]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::inspect::InspectReader::reader]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::inspect::InspectReader::f]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::inspect::InspectReader::reader]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::into_inner", "Argument[self].Field[tokio_util::io::inspect::InspectWriter::writer]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[0]", "ReturnValue.Field[tokio_util::io::inspect::InspectWriter::writer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[1]", "ReturnValue.Field[tokio_util::io::inspect::InspectWriter::f]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::inspect::InspectWriter::f]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::inspect::InspectWriter::writer]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::inspect::InspectWriter::f]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::inspect::InspectWriter::writer]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[0]", "ReturnValue.Field[tokio_util::io::reader_stream::ReaderStream::reader].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::reader_stream::ReaderStream::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::reader_stream::ReaderStream::capacity]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::reader_stream::ReaderStream::reader]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::reader_stream::ReaderStream::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::reader_stream::ReaderStream::capacity]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::reader_stream::ReaderStream::reader]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::with_capacity", "Argument[0]", "ReturnValue.Field[tokio_util::io::reader_stream::ReaderStream::reader].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::with_capacity", "Argument[1]", "ReturnValue.Field[tokio_util::io::reader_stream::ReaderStream::capacity]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::get_mut", "Argument[self].Field[tokio_util::io::sink_writer::SinkWriter::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::get_ref", "Argument[self].Field[tokio_util::io::sink_writer::SinkWriter::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::into_inner", "Argument[self].Field[tokio_util::io::sink_writer::SinkWriter::inner]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[0]", "ReturnValue.Field[tokio_util::io::sink_writer::SinkWriter::inner]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::sink_writer::SinkWriter::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::io::sink_writer::SinkWriter::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::get_mut", "Argument[self].Field[tokio_util::io::stream_reader::StreamReader::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::get_ref", "Argument[self].Field[tokio_util::io::stream_reader::StreamReader::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::into_inner", "Argument[self].Field[tokio_util::io::stream_reader::StreamReader::inner]", "ReturnValue", "value", "dfc-generated"] @@ -135,6 +173,14 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::cancelled", "Argument[self]", "ReturnValue.Field[tokio_util::sync::cancellation_token::WaitForCancellationFuture::cancellation_token]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::cancelled_owned", "Argument[self]", "ReturnValue.Field[tokio_util::sync::cancellation_token::WaitForCancellationFutureOwned::cancellation_token]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::drop_guard", "Argument[self]", "ReturnValue.Field[tokio_util::sync::cancellation_token::guard::DropGuard::inner].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::sync::cancellation_token::WaitForCancellationFuture::cancellation_token]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::sync::cancellation_token::WaitForCancellationFuture::future]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::sync::cancellation_token::WaitForCancellationFuture::cancellation_token]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::sync::cancellation_token::WaitForCancellationFuture::future]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::sync::cancellation_token::WaitForCancellationFutureOwned::cancellation_token]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::sync::cancellation_token::WaitForCancellationFutureOwned::future]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::sync::cancellation_token::WaitForCancellationFutureOwned::cancellation_token]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::sync::cancellation_token::WaitForCancellationFutureOwned::future]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::notified", "Argument[self].Field[tokio_util::sync::cancellation_token::tree_node::TreeNode::waker]", "ReturnValue.Field[tokio::sync::notify::Notified::notify].Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::notified", "Argument[self].Field[tokio_util::sync::cancellation_token::tree_node::TreeNode::waker]", "ReturnValue.Field[tokio::sync::notify::Notified::notify]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] @@ -142,6 +188,7 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::clone", "Argument[self].Field[tokio_util::sync::mpsc::PollSender::sender].Field[core::option::Option::Some(0)]", "ReturnValue.Field[tokio_util::sync::mpsc::PollSender::sender].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::clone", "Argument[self].Field[tokio_util::sync::mpsc::PollSender::sender].Field[core::option::Option::Some(0)]", "ReturnValue.Field[tokio_util::sync::mpsc::PollSender::state].Field[tokio_util::sync::mpsc::State::Idle(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::abort_send", "Argument[self].Field[tokio_util::sync::mpsc::PollSender::sender].Field[core::option::Option::Some(0)]", "Argument[self].Field[tokio_util::sync::mpsc::PollSender::state].Field[tokio_util::sync::mpsc::State::Idle(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::get_ref", "Argument[self].Field[tokio_util::sync::mpsc::PollSender::sender].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[0].Reference", "ReturnValue.Field[tokio_util::sync::mpsc::PollSender::sender].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[0]", "ReturnValue.Field[tokio_util::sync::mpsc::PollSender::sender].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[0]", "ReturnValue.Field[tokio_util::sync::mpsc::PollSender::state].Field[tokio_util::sync::mpsc::State::Idle(0)]", "value", "dfc-generated"] @@ -170,7 +217,18 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::clone", "Argument[self].Field[tokio_util::task::task_tracker::TaskTrackerToken::task_tracker].Reference", "ReturnValue.Field[tokio_util::task::task_tracker::TaskTrackerToken::task_tracker]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::clone", "Argument[self].Field[tokio_util::task::task_tracker::TaskTrackerToken::task_tracker]", "ReturnValue.Field[tokio_util::task::task_tracker::TaskTrackerToken::task_tracker]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::task_tracker", "Argument[self].Field[tokio_util::task::task_tracker::TaskTrackerToken::task_tracker]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::task::task_tracker::TaskTrackerWaitFuture::future]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::task::task_tracker::TaskTrackerWaitFuture::inner]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::task::task_tracker::TaskTrackerWaitFuture::future]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::task::task_tracker::TaskTrackerWaitFuture::inner]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::task::task_tracker::TrackedFuture::future]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::task::task_tracker::TrackedFuture::token]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::task::task_tracker::TrackedFuture::future]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio_util::task::task_tracker::TrackedFuture::token]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::poll_next", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::deadline", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::peek", "Argument[self].Field[tokio_util::time::delay_queue::DelayQueue::expired].Field[tokio_util::time::delay_queue::Stack::head]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::poll_expired", "Argument[0].Field[core::task::wake::Context::waker]", "Argument[self].Field[tokio_util::time::delay_queue::DelayQueue::waker].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::remove", "Argument[0].Field[tokio_util::time::delay_queue::Key::index]", "ReturnValue.Field[tokio_util::time::delay_queue::Expired::key].Field[tokio_util::time::delay_queue::Key::index]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::try_remove", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::deadline", "Argument[self].Field[tokio_util::time::delay_queue::Expired::deadline]", "ReturnValue", "value", "dfc-generated"] @@ -209,6 +267,9 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::poll_write", "Argument[1]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::poll_read", "Argument[1]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::poll_read", "Argument[1]", "log-injection", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::drop", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::fmt", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::poll_next", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::poll_expired", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::remove", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::reset", "Argument[self]", "log-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio.model.yml b/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio.model.yml index dd75987634c..ed506488694 100644 --- a/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio.model.yml +++ b/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio.model.yml @@ -7,8 +7,11 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "<&[u8] as crate::io::async_buf_read::AsyncBufRead>::consume", "Argument[self].Element", "Argument[self].Reference.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "<&[u8] as crate::io::async_buf_read::AsyncBufRead>::poll_fill_buf", "Argument[self].Reference", "ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "<&crate::task::wake::Waker as crate::sync::task::atomic_waker::WakerRef>::into_waker", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "<&crate::util::linked_list::tests::Entry as crate::util::linked_list::Link>::as_raw", "Argument[0].Field[core::pin::Pin::__pointer].Field[core::ptr::unique::Unique::pointer]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "<&mut crate::runtime::scheduler::inject::synced::Synced as crate::runtime::scheduler::lock::Lock>::lock", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::is_write_vectored", "Argument[self].Field[io_buf_writer::MockWriter::vectored]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::as_ref", "Argument[self].Field[net_unix_pipe::TempFifo::path]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::as_ref", "Argument[self].Field[net_unix_pipe::TempFifo::path]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::mode", "Argument[0]", "Argument[self].Field[tokio::fs::dir_builder::DirBuilder::mode].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::mode", "Argument[0]", "ReturnValue.Field[tokio::fs::dir_builder::DirBuilder::mode].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::mode", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -16,6 +19,7 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::recursive", "Argument[0]", "ReturnValue.Field[tokio::fs::dir_builder::DirBuilder::recursive]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::recursive", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::set_max_buf_size", "Argument[0]", "Argument[self].Field[tokio::fs::file::File::max_buf_size]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_into_std", "Argument[self].Field[tokio::fs::file::File::std]", "ReturnValue.Field[core::result::Result::Err(0)].Field[tokio::fs::file::File::std]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_into_std", "Argument[self]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from", "Argument[0]", "ReturnValue.Field[tokio::fs::open_options::OpenOptions(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::append", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -29,6 +33,14 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::truncate", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::write", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::as_inner", "Argument[self].Field[tokio::fs::read_dir::DirEntry::std]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::future::try_join::TryJoin3::future1]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::future::try_join::TryJoin3::future2]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::future::try_join::TryJoin3::future3]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::future::try_join::TryJoin3::future1]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::future::try_join::TryJoin3::future2]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::future::try_join::TryJoin3::future3]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_mut", "Argument[self].Field[tokio::io::async_fd::AsyncFd::inner].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_ref", "Argument[self].Field[tokio::io::async_fd::AsyncFd::inner].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::ready", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::io::async_fd::AsyncFdReadyGuard::async_fd]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::ready_mut", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::io::async_fd::AsyncFdReadyMutGuard::async_fd]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_io", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] @@ -48,18 +60,28 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_parts", "Argument[self].Field[tokio::io::async_fd::AsyncFdTryNewError::inner]", "ReturnValue.Field[0]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::blocking::Blocking::inner].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::bytes", "Argument[self].Field[tokio::io::blocking::Buf::buf].Element", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::copy_from", "Argument[1]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::copy_from_bufs", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::copy_to", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::copy_to", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::len", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::poll_read", "Argument[1]", "Argument[self]", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::poll_complete", "Argument[self].Field[core::pin::Pin::__pointer].Field[std::io::cursor::Cursor::pos]", "ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from", "Argument[0].Field[tokio::io::async_fd::AsyncFdTryNewError::cause]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from", "Argument[0].Field[tokio::runtime::blocking::pool::SpawnError::NoThreads(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::bitor_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_inner", "Argument[self].Field[tokio::io::join::Join::reader]", "ReturnValue.Field[0]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_inner", "Argument[self].Field[tokio::io::join::Join::writer]", "ReturnValue.Field[1]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::join::Join::reader]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::join::Join::writer]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::join::Join::reader]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::join::Join::writer]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::reader", "Argument[self].Field[tokio::io::join::Join::reader]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::reader_mut", "Argument[self].Field[tokio::io::join::Join::reader]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::writer", "Argument[self].Field[tokio::io::join::Join::writer]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::writer_mut", "Argument[self].Field[tokio::io::join::Join::writer]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::deref", "Argument[self].Field[tokio::io::poll_evented::PollEvented::io].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new_with_interest_and_handle", "Argument[2]", "ReturnValue.Field[tokio::runtime::io::registration::Registration::handle]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::registration", "Argument[self].Field[tokio::io::poll_evented::PollEvented::registration]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::advance_mut", "Argument[0]", "Argument[self]", "taint", "df-generated"] @@ -83,21 +105,31 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::as_usize", "Argument[self].Field[tokio::io::ready::Ready(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from_usize", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::intersection", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::seek::Seek::pos]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::seek::Seek::seek]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::seek::Seek::pos]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::seek::Seek::seek]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::stdio_common::SplitByUtf8BoundaryIfWindows::inner]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::buffer", "Argument[self].Field[tokio::io::util::buf_reader::BufReader::buf].Element", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_mut", "Argument[self].Field[tokio::io::util::buf_reader::BufReader::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_ref", "Argument[self].Field[tokio::io::util::buf_reader::BufReader::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_inner", "Argument[self].Field[tokio::io::util::buf_reader::BufReader::inner]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::buf_reader::BufReader::inner]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::with_capacity", "Argument[1]", "ReturnValue.Field[tokio::io::util::buf_reader::BufReader::inner]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from", "Argument[0]", "ReturnValue.Field[tokio::io::util::buf_stream::BufStream::inner]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::buf_stream::BufStream::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::buf_stream::BufStream::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::buffer", "Argument[self].Field[tokio::io::util::buf_writer::BufWriter::buf]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_mut", "Argument[self].Field[tokio::io::util::buf_writer::BufWriter::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_ref", "Argument[self].Field[tokio::io::util::buf_writer::BufWriter::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_inner", "Argument[self].Field[tokio::io::util::buf_writer::BufWriter::inner]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::buf_writer::BufWriter::inner]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::with_capacity", "Argument[1]", "ReturnValue.Field[tokio::io::util::buf_writer::BufWriter::inner]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_mut", "Argument[self].Field[tokio::io::util::chain::Chain::first]", "ReturnValue.Field[0].Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_mut", "Argument[self].Field[tokio::io::util::chain::Chain::second]", "ReturnValue.Field[1].Reference", "value", "dfc-generated"] @@ -105,71 +137,404 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_ref", "Argument[self].Field[tokio::io::util::chain::Chain::second]", "ReturnValue.Field[1].Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_inner", "Argument[self].Field[tokio::io::util::chain::Chain::first]", "ReturnValue.Field[0]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_inner", "Argument[self].Field[tokio::io::util::chain::Chain::second]", "ReturnValue.Field[1]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::chain::Chain::done_first]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::chain::Chain::first]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::chain::Chain::second]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::chain::Chain::done_first]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::chain::Chain::first]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::chain::Chain::second]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::poll_copy", "Argument[self].Field[tokio::io::util::copy::CopyBuffer::amt]", "ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::fill_buf::FillBuf::reader]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::fill_buf::FillBuf::reader]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::flush::Flush::a]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::flush::Flush::a]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_mut", "Argument[self].Field[tokio::io::util::lines::Lines::reader]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_ref", "Argument[self].Field[tokio::io::util::lines::Lines::reader]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_inner", "Argument[self].Field[tokio::io::util::lines::Lines::reader]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new_unsplit", "Argument[0]", "ReturnValue.Field[tokio::io::util::mem::SimplexStream::max_buf_size]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read::Read::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read::Read::reader]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read::Read::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read::Read::reader]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_buf::ReadBuf::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_buf::ReadBuf::reader]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_buf::ReadBuf::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_buf::ReadBuf::reader]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_exact::ReadExact::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_exact::ReadExact::reader]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_exact::ReadExact::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_exact::ReadExact::reader]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadF32::src]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF32::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF32::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF32::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF32::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF32::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF32::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadF32Le::src]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF32Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF32Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF32Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF32Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF32Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF32Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadF64::src]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF64::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF64::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF64::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF64::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF64::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF64::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadF64Le::src]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF64Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF64Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF64Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF64Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF64Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadF64Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadI128::src]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI128::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI128::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI128::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI128::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI128::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI128::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadI128Le::src]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI128Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI128Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI128Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI128Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI128Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI128Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadI16::src]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI16::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI16::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI16::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI16::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI16::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI16::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadI16Le::src]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI16Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI16Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI16Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI16Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI16Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI16Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadI32::src]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI32::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI32::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI32::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI32::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI32::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI32::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadI32Le::src]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI32Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI32Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI32Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI32Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI32Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI32Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadI64::src]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI64::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI64::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI64::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI64::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI64::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI64::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadI64Le::src]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI64Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI64Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI64Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI64Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI64Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI64Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadI8::reader]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI8::reader]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadI8::reader]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadU128::src]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU128::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU128::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU128::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU128::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU128::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU128::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadU128Le::src]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU128Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU128Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU128Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU128Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU128Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU128Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadU16::src]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU16::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU16::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU16::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU16::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU16::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU16::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadU16Le::src]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU16Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU16Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU16Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU16Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU16Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU16Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadU32::src]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU32::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU32::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU32::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU32::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU32::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU32::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadU32Le::src]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU32Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU32Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU32Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU32Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU32Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU32Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadU64::src]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU64::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU64::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU64::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU64::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU64::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU64::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadU64Le::src]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU64Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU64Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU64Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU64Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU64Le::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU64Le::src]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_int::ReadU8::reader]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU8::reader]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_int::ReadU8::reader]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_to_end::ReadToEnd::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_to_end::ReadToEnd::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_to_end::ReadToEnd::reader]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_to_end::ReadToEnd::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_to_end::ReadToEnd::read]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::read_to_end::ReadToEnd::reader]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::shutdown::Shutdown::a]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::shutdown::Shutdown::a]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_mut", "Argument[self].Field[tokio::io::util::take::Take::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_ref", "Argument[self].Field[tokio::io::util::take::Take::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_inner", "Argument[self].Field[tokio::io::util::take::Take::inner]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::limit", "Argument[self].Field[tokio::io::util::take::Take::limit_]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::take::Take::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::take::Take::limit_]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::take::Take::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::take::Take::limit_]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::set_limit", "Argument[0]", "Argument[self].Field[tokio::io::util::take::Take::limit_]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::apply_read_buf", "Argument[0].Field[tokio::io::util::vec_with_initialized::ReadBufParts::initialized]", "Argument[self].Field[tokio::io::util::vec_with_initialized::VecWithInitialized::num_initialized]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_read_buf", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::vec_with_initialized::VecWithInitialized::vec]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write::Write::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write::Write::writer]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write::Write::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write::Write::writer]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_all::WriteAll::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_all::WriteAll::writer]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_all::WriteAll::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_all::WriteAll::writer]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_all_buf::WriteAllBuf::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_all_buf::WriteAllBuf::writer]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_all_buf::WriteAllBuf::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_all_buf::WriteAllBuf::writer]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_buf::WriteBuf::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_buf::WriteBuf::writer]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_buf::WriteBuf::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_buf::WriteBuf::writer]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteF32::dst]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF32::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF32::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF32::written]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF32::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF32::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF32::written]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteF32Le::dst]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF32Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF32Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF32Le::written]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF32Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF32Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF32Le::written]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteF64::dst]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF64::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF64::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF64::written]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF64::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF64::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF64::written]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteF64Le::dst]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF64Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF64Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF64Le::written]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF64Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF64Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteF64Le::written]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteI128::dst]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI128::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI128::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI128::written]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI128::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI128::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI128::written]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteI128Le::dst]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI128Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI128Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI128Le::written]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI128Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI128Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI128Le::written]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteI16::dst]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI16::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI16::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI16::written]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI16::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI16::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI16::written]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteI16Le::dst]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI16Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI16Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI16Le::written]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI16Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI16Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI16Le::written]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteI32::dst]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI32::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI32::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI32::written]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI32::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI32::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI32::written]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteI32Le::dst]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI32Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI32Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI32Le::written]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI32Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI32Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI32Le::written]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteI64::dst]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI64::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI64::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI64::written]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI64::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI64::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI64::written]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteI64Le::dst]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI64Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI64Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI64Le::written]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI64Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI64Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI64Le::written]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteI8::dst]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[1]", "ReturnValue.Field[tokio::io::util::write_int::WriteI8::byte]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI8::byte]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI8::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI8::byte]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteI8::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteU128::dst]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU128::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU128::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU128::written]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU128::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU128::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU128::written]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteU128Le::dst]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU128Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU128Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU128Le::written]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU128Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU128Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU128Le::written]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteU16::dst]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU16::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU16::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU16::written]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU16::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU16::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU16::written]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteU16Le::dst]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU16Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU16Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU16Le::written]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU16Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU16Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU16Le::written]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteU32::dst]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU32::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU32::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU32::written]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU32::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU32::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU32::written]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteU32Le::dst]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU32Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU32Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU32Le::written]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU32Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU32Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU32Le::written]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteU64::dst]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU64::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU64::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU64::written]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU64::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU64::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU64::written]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteU64Le::dst]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU64Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU64Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU64Le::written]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU64Le::buf]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU64Le::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU64Le::written]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::util::write_int::WriteU8::dst]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[1]", "ReturnValue.Field[tokio::io::util::write_int::WriteU8::byte]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU8::byte]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU8::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU8::byte]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_int::WriteU8::dst]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_vectored::WriteVectored::bufs]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_vectored::WriteVectored::writer]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_vectored::WriteVectored::bufs]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::io::util::write_vectored::WriteVectored::writer]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::deref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::unsync_load", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::deref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::unsync_load", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::deref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::deref_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::unsync_load", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::with_mut", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::loom::std::barrier::Barrier::num_threads]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::is_leader", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::is_leader", "Argument[self].Field[tokio::loom::std::barrier::BarrierWaitResult(0)]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::lock", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_lock", "Argument[self].Field[0]", "ReturnValue.Field[core::option::Option::Some(0)].Field[std::sync::poison::mutex::MutexGuard::lock]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_lock", "Argument[self].Field[tokio::loom::std::mutex::Mutex(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Field[std::sync::poison::mutex::MutexGuard::lock]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::wait", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::wait_timeout", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::read", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_write", "Argument[self].Field[0]", "ReturnValue.Field[core::option::Option::Some(0)].Field[std::sync::poison::rwlock::RwLockWriteGuard::lock]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_write", "Argument[self].Field[tokio::loom::std::rwlock::RwLock(0)]", "ReturnValue.Field[core::option::Option::Some(0)].Field[std::sync::poison::rwlock::RwLockWriteGuard::lock]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::write", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::loom::std::unsafe_cell::UnsafeCell(0)].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::with", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::with_mut", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::io::poll_evented::PollEvented::io].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] @@ -214,6 +579,7 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::uid", "Argument[self].Field[tokio::net::unix::ucred::UCred::uid]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from", "Argument[0].Field[tokio::net::unix::socketaddr::SocketAddr(0)]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::id", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from", "Argument[0]", "ReturnValue.Field[tokio::process::Command::std]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::arg0", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::arg", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -239,10 +605,13 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::uid", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[1]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[1]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::process::imp::pidfd_reaper::PidfdReaper::orphan_queue]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::deref", "Argument[self].Field[tokio::process::imp::reap::Reaper::inner].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::inner_mut", "Argument[self].Field[tokio::process::imp::reap::Reaper::inner].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::process::imp::reap::Reaper::inner].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[1]", "ReturnValue.Field[tokio::process::imp::reap::Reaper::orphan_queue]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[2]", "ReturnValue.Field[tokio::process::imp::reap::Reaper::signal]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_wait", "Argument[self].Field[tokio::process::imp::reap::test::MockWait::status]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::poll", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::process::test::Mock::poll_result]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::spawner", "Argument[self].Field[tokio::runtime::blocking::pool::BlockingPool::spawner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::runtime::blocking::pool::Task::task]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[1]", "ReturnValue.Field[tokio::runtime::blocking::pool::Task::mandatory]", "value", "dfc-generated"] @@ -284,6 +653,7 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::worker_threads", "Argument[0]", "Argument[self].Field[tokio::runtime::builder::Builder::worker_threads].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::worker_threads", "Argument[0]", "ReturnValue.Field[tokio::runtime::builder::Builder::worker_threads].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::worker_threads", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::set_current", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::set", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::with", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::as_ref", "Argument[self].Field[tokio::runtime::driver::IoHandle::Enabled(0)]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] @@ -322,6 +692,7 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::pop", "Argument[0].Field[tokio::runtime::scheduler::inject::synced::Synced::head].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::pop", "Argument[0].Field[tokio::runtime::scheduler::inject::synced::Synced::head].Field[core::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::pop_n", "Argument[0]", "ReturnValue.Field[tokio::runtime::scheduler::inject::pop::Pop::synced]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::pop_n", "Argument[1]", "ReturnValue.Field[tokio::runtime::scheduler::inject::pop::Pop::len]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::push", "Argument[1]", "Argument[0]", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::as_mut", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::pop", "Argument[self].Field[tokio::runtime::scheduler::inject::synced::Synced::head].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] @@ -333,6 +704,7 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::unpark", "Argument[self].Field[tokio::runtime::scheduler::multi_thread::park::Parker::inner].Reference", "ReturnValue.Field[tokio::runtime::scheduler::multi_thread::park::Unparker::inner]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::unpark", "Argument[self].Field[tokio::runtime::scheduler::multi_thread::park::Parker::inner]", "ReturnValue.Field[tokio::runtime::scheduler::multi_thread::park::Unparker::inner]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::handle", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::runtime::signal::Driver::io]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from_raw", "Argument[0]", "ReturnValue.Field[tokio::runtime::task::Notified(0)].Field[tokio::runtime::task::Task::raw]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_raw", "Argument[self].Field[0].Field[tokio::runtime::task::Task::raw]", "ReturnValue", "value", "dfc-generated"] @@ -367,15 +739,20 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[1]", "ReturnValue.Field[tokio::runtime::time::entry::TimerEntry::deadline]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::as_raw", "Argument[0].Field[tokio::runtime::time::entry::TimerHandle::inner]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from_raw", "Argument[0]", "ReturnValue.Field[tokio::runtime::time::entry::TimerHandle::inner]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::handle", "Argument[self].Field[core::ptr::unique::Unique::pointer]", "ReturnValue.Field[tokio::runtime::time::entry::TimerHandle::inner]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::time_source", "Argument[self].Field[tokio::runtime::time::handle::Handle::time_source]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::start_time", "Argument[self].Field[tokio::runtime::time::source::TimeSource::start_time]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::tick_to_duration", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::elapsed", "Argument[self].Field[tokio::runtime::time::wheel::Wheel::elapsed]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::insert", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[0]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::next_expiration_time", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::poll", "Argument[0]", "Argument[self].Field[tokio::runtime::time::wheel::Wheel::elapsed]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::poll_at", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::runtime::time::wheel::level::Level::level]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::next_expiration", "Argument[self].Field[tokio::runtime::time::wheel::level::Level::level]", "ReturnValue.Field[core::option::Option::Some(0)].Field[tokio::runtime::time::wheel::level::Expiration::level]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::deref", "Argument[self].Field[tokio::signal::registry::Globals::extra]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::storage", "Argument[self].Field[tokio::signal::registry::Globals::registry].Field[tokio::signal::registry::Registry::storage]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::set", "Argument[0]", "Argument[self]", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_set", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::as_raw_value", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::as_raw_value", "Argument[self].Field[tokio::signal::unix::SignalKind(0)]", "ReturnValue", "value", "dfc-generated"] @@ -388,6 +765,7 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::is_leader", "Argument[self].Field[tokio::sync::barrier::BarrierWaitResult(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::acquire", "Argument[0]", "ReturnValue.Field[tokio::sync::batch_semaphore::Acquire::num_permits]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::acquire", "Argument[self]", "ReturnValue.Field[tokio::sync::batch_semaphore::Acquire::semaphore]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::forget_permits", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::as_raw", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from_raw", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::len", "Argument[self]", "ReturnValue", "taint", "df-generated"] @@ -428,6 +806,7 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_send", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[tokio::sync::mpsc::error::TrySendError::Full(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::clone", "Argument[self].Field[tokio::sync::mpsc::bounded::WeakSender::chan].Reference", "ReturnValue.Field[tokio::sync::mpsc::bounded::WeakSender::chan]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::clone", "Argument[self].Field[tokio::sync::mpsc::bounded::WeakSender::chan]", "ReturnValue.Field[tokio::sync::mpsc::bounded::WeakSender::chan]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::upgrade", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::clone", "Argument[self].Field[tokio::sync::mpsc::chan::Tx::inner].Reference", "ReturnValue.Field[tokio::sync::mpsc::chan::Tx::inner]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::clone", "Argument[self].Field[tokio::sync::mpsc::chan::Tx::inner]", "ReturnValue.Field[tokio::sync::mpsc::chan::Tx::inner]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::downgrade", "Argument[self].Field[tokio::sync::mpsc::chan::Tx::inner].Reference", "ReturnValue", "value", "dfc-generated"] @@ -435,6 +814,7 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::upgrade", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)].Field[tokio::sync::mpsc::chan::Tx::inner]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_inner", "Argument[self].Field[tokio::sync::mpsc::error::SendTimeoutError::Closed(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_inner", "Argument[self].Field[tokio::sync::mpsc::error::SendTimeoutError::Timeout(0)]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from", "Argument[0].Field[0]", "ReturnValue.Field[tokio::sync::mpsc::error::TrySendError::Closed(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from", "Argument[0].Field[tokio::sync::mpsc::error::SendError(0)]", "ReturnValue.Field[tokio::sync::mpsc::error::TrySendError::Closed(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_inner", "Argument[self].Field[tokio::sync::mpsc::error::TrySendError::Closed(0)]", "ReturnValue", "value", "dfc-generated"] @@ -449,11 +829,16 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::send", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[tokio::sync::mpsc::error::SendError(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::clone", "Argument[self].Field[tokio::sync::mpsc::unbounded::WeakUnboundedSender::chan].Reference", "ReturnValue.Field[tokio::sync::mpsc::unbounded::WeakUnboundedSender::chan]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::clone", "Argument[self].Field[tokio::sync::mpsc::unbounded::WeakUnboundedSender::chan]", "ReturnValue.Field[tokio::sync::mpsc::unbounded::WeakUnboundedSender::chan]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::upgrade", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::deref", "Argument[self].Field[tokio::sync::mutex::MappedMutexGuard::data].Reference", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::deref_mut", "Argument[self].Field[tokio::sync::mutex::MappedMutexGuard::data].Reference", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_map", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::const_new", "Argument[0]", "ReturnValue.Field[tokio::sync::mutex::Mutex::c].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_inner", "Argument[self].Field[tokio::sync::mutex::Mutex::c].Field[core::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::sync::mutex::Mutex::c].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_lock", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::sync::mutex::MutexGuard::lock]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_lock_owned", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::sync::mutex::OwnedMutexGuard::lock]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] @@ -474,11 +859,17 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from_raw", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::set", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[tokio::sync::once_cell::SetError::AlreadyInitializedError(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::set", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[tokio::sync::once_cell::SetError::InitializingError(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::const_new", "Argument[0]", "ReturnValue.Field[tokio::sync::rwlock::RwLock::c].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::const_with_max_readers", "Argument[0]", "ReturnValue.Field[tokio::sync::rwlock::RwLock::c].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::const_with_max_readers", "Argument[1]", "ReturnValue.Field[tokio::sync::rwlock::RwLock::mr]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_inner", "Argument[self].Field[tokio::sync::rwlock::RwLock::c].Field[core::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::sync::rwlock::RwLock::c].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_read", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_read_owned", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::sync::rwlock::owned_read_guard::OwnedRwLockReadGuard::lock]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_write", "Argument[self].Field[tokio::sync::rwlock::RwLock::mr]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::sync::rwlock::write_guard::RwLockWriteGuard::permits_acquired]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_write_owned", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::sync::rwlock::owned_write_guard::OwnedRwLockWriteGuard::lock]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::with_max_readers", "Argument[0]", "ReturnValue.Field[tokio::sync::rwlock::RwLock::c].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::with_max_readers", "Argument[1]", "ReturnValue.Field[tokio::sync::rwlock::RwLock::mr]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::deref", "Argument[self].Field[tokio::sync::rwlock::owned_read_guard::OwnedRwLockReadGuard::data].Reference", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] @@ -529,6 +920,7 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::acquire_many_owned", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::sync::semaphore::OwnedSemaphorePermit::permits]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::acquire_many_owned", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::sync::semaphore::OwnedSemaphorePermit::sem]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::acquire_owned", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::sync::semaphore::OwnedSemaphorePermit::sem]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::forget_permits", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_acquire", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::sync::semaphore::SemaphorePermit::sem]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_acquire_many", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::sync::semaphore::SemaphorePermit::permits]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_acquire_many", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[tokio::sync::semaphore::SemaphorePermit::sem]", "value", "dfc-generated"] @@ -545,17 +937,32 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::subscribe", "Argument[self].Field[tokio::sync::watch::Sender::shared].Reference", "ReturnValue.Field[tokio::sync::watch::Receiver::shared]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::subscribe", "Argument[self].Field[tokio::sync::watch::Sender::shared]", "ReturnValue.Field[tokio::sync::watch::Receiver::shared]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::version", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::task::coop::Coop::fut]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::task::coop::Coop::fut]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::task::coop::unconstrained::Unconstrained::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::task::coop::unconstrained::Unconstrained::inner]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::len", "Argument[self].Field[tokio::task::join_set::JoinSet::inner].Field[tokio::util::idle_notified_set::IdleNotifiedSet::length]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_join_next", "Argument[self].Field[tokio::task::join_set::JoinSet::inner]", "ReturnValue.Field[tokio::util::idle_notified_set::EntryInOneOfTheLists::set].Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_join_next", "Argument[self].Field[tokio::task::join_set::JoinSet::inner]", "ReturnValue.Field[tokio::util::idle_notified_set::EntryInOneOfTheLists::set]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_join_next_with_id", "Argument[self].Field[tokio::task::join_set::JoinSet::inner]", "ReturnValue.Field[tokio::util::idle_notified_set::EntryInOneOfTheLists::set].Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_join_next_with_id", "Argument[self].Field[tokio::task::join_set::JoinSet::inner]", "ReturnValue.Field[tokio::util::idle_notified_set::EntryInOneOfTheLists::set]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::scope", "Argument[0]", "ReturnValue.Field[tokio::task::task_local::TaskLocalFuture::slot].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::scope", "Argument[1]", "ReturnValue.Field[tokio::task::task_local::TaskLocalFuture::future].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::scope", "Argument[self]", "ReturnValue.Field[tokio::task::task_local::TaskLocalFuture::local]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::sync_scope", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_with", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::with", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::task::task_local::TaskLocalFuture::future]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::task::task_local::TaskLocalFuture::local]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::task::task_local::TaskLocalFuture::slot]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::task::task_local::TaskLocalFuture::future]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::task::task_local::TaskLocalFuture::local]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::task::task_local::TaskLocalFuture::slot]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_waker", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from", "Argument[0].Field[tokio::time::instant::Instant::std]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from", "Argument[0]", "ReturnValue.Field[tokio::time::error::Error(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from", "Argument[0]", "ReturnValue.Field[tokio::time::instant::Instant::std]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] @@ -574,6 +981,10 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_inner", "Argument[self].Field[tokio::time::timeout::Timeout::value]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new_with_delay", "Argument[0]", "ReturnValue.Field[tokio::time::timeout::Timeout::value]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new_with_delay", "Argument[1]", "ReturnValue.Field[tokio::time::timeout::Timeout::delay]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::time::timeout::Timeout::delay]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::time::timeout::Timeout::value]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::time::timeout::Timeout::delay]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::project_ref", "Argument[self].Field[core::pin::Pin::__pointer].Field[tokio::time::timeout::Timeout::value]", "ReturnValue.Field[core::pin::Pin::__pointer]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::pack", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::pack", "Argument[1]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::pack", "Argument[self]", "ReturnValue", "taint", "df-generated"] @@ -589,6 +1000,7 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::drain_filter", "Argument[0]", "ReturnValue.Field[tokio::util::linked_list::DrainFilter::filter]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::drain_filter", "Argument[self].Field[tokio::util::linked_list::LinkedList::head]", "ReturnValue.Field[tokio::util::linked_list::DrainFilter::curr]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::drain_filter", "Argument[self]", "ReturnValue.Field[tokio::util::linked_list::DrainFilter::list]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::last", "Argument[self].Field[tokio::util::linked_list::LinkedList::tail].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::pop_back", "Argument[self].Field[tokio::util::linked_list::LinkedList::tail].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::pop_back", "Argument[self].Field[tokio::util::linked_list::LinkedList::tail].Field[core::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::pop_front", "Argument[self].Field[tokio::util::linked_list::LinkedList::head].Field[core::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] @@ -607,6 +1019,7 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::shard_size", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_inner", "Argument[self].Field[tokio::util::sync_wrapper::SyncWrapper::value]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::util::sync_wrapper::SyncWrapper::value]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[tokio::util::try_lock::TryLock::data].Field[core::cell::UnsafeCell::value]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_lock", "Argument[self]", "ReturnValue.Field[core::option::Option::Some(0)].Field[tokio::util::try_lock::LockGuard::lock]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::deref", "Argument[self].Field[tokio::util::wake::WakerRef::waker]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] @@ -627,9 +1040,11 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::read_exact::read_exact", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_exact::ReadExact::reader]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::read_line::finish_string_read", "Argument[0].Field[core::result::Result::Err(0)]", "ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Err(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::read_line::finish_string_read", "Argument[0].Field[core::result::Result::Ok(0)]", "ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::read_line::finish_string_read", "Argument[1].Field[core::result::Result::Err(0)].Field[alloc::string::FromUtf8Error::bytes]", "Argument[3].Reference.Field[alloc::string::String::vec]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::read_line::finish_string_read", "Argument[1].Field[core::result::Result::Ok(0)]", "Argument[3].Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::read_line::read_line", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_line::ReadLine::reader]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::read_line::read_line", "Argument[1]", "ReturnValue.Field[tokio::io::util::read_line::ReadLine::output]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::read_line::read_line_internal", "Argument[4]", "Argument[2]", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::read_to_end::read_to_end", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_to_end::ReadToEnd::reader]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::read_to_end::read_to_end", "Argument[1]", "ReturnValue.Field[tokio::io::util::read_to_end::ReadToEnd::buf].Field[tokio::io::util::vec_with_initialized::VecWithInitialized::vec]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::read_to_string::read_to_string", "Argument[0]", "ReturnValue.Field[tokio::io::util::read_to_string::ReadToString::reader]", "value", "dfc-generated"] @@ -660,9 +1075,12 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::net::unix::split::split", "Argument[0]", "ReturnValue.Field[1].Field[tokio::net::unix::split::WriteHalf(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::net::unix::split_owned::reunite", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)].Field[tokio::net::unix::split_owned::ReuniteError(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::net::unix::split_owned::reunite", "Argument[1]", "ReturnValue.Field[core::result::Result::Err(0)].Field[tokio::net::unix::split_owned::ReuniteError(1)]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::runtime::context::budget", "Argument[0].ReturnValue", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::runtime::context::current::with_current", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::runtime::context::runtime::enter_runtime", "Argument[2].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::runtime::context::runtime_mt::exit_runtime", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::runtime::context::runtime_mt::exit_runtime", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::runtime::metrics::batch::duration_as_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::runtime::scheduler::block_in_place::block_in_place", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::runtime::scheduler::block_in_place::block_in_place", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::runtime::scheduler::multi_thread::worker::block_in_place", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] @@ -681,6 +1099,7 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::util::bit::unpack", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::util::bit::unpack", "Argument[1]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::util::bit::unpack", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::util::memchr::memchr", "Argument[1]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::util::trace::blocking_task", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::util::trace::task", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::util::typeid::try_transmute", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] @@ -697,20 +1116,39 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::poll_read", "Argument[1]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::put_slice", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::poll_read", "Argument[1]", "log-injection", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::unsync_load", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::unsync_load", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::unsync_load", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::with", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::poll_recv", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::shutdown", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::pop", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::push", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::pop", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::pop_n", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::push", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::push_batch", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::push", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::push_batch", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::set_queue_next", "Argument[0]", "pointer-access", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::transition_to_terminal", "Argument[0]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::poll", "Argument[0]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::poll", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::remove", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::next_expiration", "Argument[0]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::next_expiration", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::register_listener", "Argument[0]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::drop", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::release", "Argument[0]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::drop", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::add_permits", "Argument[0]", "log-injection", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_inner", "Argument[self]", "pointer-access", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::drop", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::drop", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::add_permits", "Argument[0]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::drop", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::signal::unix::signal", "Argument[0]", "log-injection", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::signal::unix::signal_with_handle", "Argument[0]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::support::signal::send_signal", "Argument[0]", "log-injection", "df-generated"] - addsTo: pack: codeql/rust-all From 7a4de55ac239f94fce2f57f100de5ddf11645714 Mon Sep 17 00:00:00 2001 From: idrissrio Date: Wed, 11 Jun 2025 14:35:19 +0200 Subject: [PATCH 048/150] C++: Add leave statement to dbscheme --- cpp/ql/lib/semmlecode.cpp.dbscheme | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme b/cpp/ql/lib/semmlecode.cpp.dbscheme index 3c45f8b9e71..a8c2176e9a5 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme @@ -2213,6 +2213,7 @@ case @stmt.kind of | 37 = @stmt_co_return | 38 = @stmt_consteval_if | 39 = @stmt_not_consteval_if +| 40 = @stmt_leave ; type_vla( @@ -2349,7 +2350,7 @@ blockscope( int enclosing: @parameterized_element ref ); -@jump = @stmt_goto | @stmt_break | @stmt_continue; +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; @jumporlabel = @jump | @stmt_label | @literal; From f6fa707770cd30b5b4158d5416d3fa0b444e87e1 Mon Sep 17 00:00:00 2001 From: idrissrio Date: Wed, 11 Jun 2025 14:37:17 +0200 Subject: [PATCH 049/150] C++: Add `LeaveStmt` class --- cpp/ql/lib/semmle/code/cpp/stmts/Stmt.qll | 35 +++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/cpp/ql/lib/semmle/code/cpp/stmts/Stmt.qll b/cpp/ql/lib/semmle/code/cpp/stmts/Stmt.qll index aa6a585ea4b..5305c8ca58f 100644 --- a/cpp/ql/lib/semmle/code/cpp/stmts/Stmt.qll +++ b/cpp/ql/lib/semmle/code/cpp/stmts/Stmt.qll @@ -841,6 +841,41 @@ private Stmt getEnclosingBreakable(Stmt s) { else result = getEnclosingBreakable(s.getParent().getEnclosingStmt()) } +/** + * A Microsoft C/C++ `__leave` statement. + * + * For example, the `__leave` statement in the following code: + * ``` + * __try { + * if (err) __leave; + * ... + * } + * __finally { + * + * } + * ``` + */ +class LeaveStmt extends JumpStmt, @stmt_leave { + override string getAPrimaryQlClass() { result = "LeaveStmt" } + + override string toString() { result = "__leave;" } + + override predicate mayBeImpure() { none() } + + override predicate mayBeGloballyImpure() { none() } + + /** + * Gets the `__try` statement that this `__leave` exits. + */ + MicrosoftTryStmt getEnclosingTry() { result = getEnclosingTry(this) } +} + +private MicrosoftTryStmt getEnclosingTry(Stmt s) { + if s.getParent().getEnclosingStmt() instanceof MicrosoftTryStmt + then result = s.getParent().getEnclosingStmt() + else result = getEnclosingTry(s.getParent().getEnclosingStmt()) +} + /** * A C/C++ 'label' statement. * From a6b3310f77ed75dd2c6b0a3346ebf5c68650ac5a Mon Sep 17 00:00:00 2001 From: idrissrio Date: Wed, 11 Jun 2025 15:52:45 +0200 Subject: [PATCH 050/150] C++: test new class `LeaveStmt` --- .../test/library-tests/stmt/leave/leave.cpp | 28 +++++++++++++++++++ .../library-tests/stmt/leave/leave.expected | 3 ++ cpp/ql/test/library-tests/stmt/leave/leave.ql | 4 +++ 3 files changed, 35 insertions(+) create mode 100644 cpp/ql/test/library-tests/stmt/leave/leave.cpp create mode 100644 cpp/ql/test/library-tests/stmt/leave/leave.expected create mode 100644 cpp/ql/test/library-tests/stmt/leave/leave.ql diff --git a/cpp/ql/test/library-tests/stmt/leave/leave.cpp b/cpp/ql/test/library-tests/stmt/leave/leave.cpp new file mode 100644 index 00000000000..f81f63d4a92 --- /dev/null +++ b/cpp/ql/test/library-tests/stmt/leave/leave.cpp @@ -0,0 +1,28 @@ +//semmle-extractor-options: --microsoft +void leave_try_finally_test(bool condition){ + __try { + if(condition){ + __leave; + } + } + __finally { + } +} + +int except_handler(); + +void leave_try_except_test(bool condition){ + __try { + try { + if(condition) + __leave; + } + catch(...) { + } + if(condition){ + __leave; + } + } + __except (except_handler()) { + } +} diff --git a/cpp/ql/test/library-tests/stmt/leave/leave.expected b/cpp/ql/test/library-tests/stmt/leave/leave.expected new file mode 100644 index 00000000000..d33c0876597 --- /dev/null +++ b/cpp/ql/test/library-tests/stmt/leave/leave.expected @@ -0,0 +1,3 @@ +| leave.cpp:5:8:5:15 | __leave; | leave.cpp:3:5:7:5 | __try { ... } __finally { ... } | +| leave.cpp:18:17:18:24 | __leave; | leave.cpp:15:5:25:5 | __try { ... } __except( ... ) { ... } | +| leave.cpp:23:13:23:20 | __leave; | leave.cpp:15:5:25:5 | __try { ... } __except( ... ) { ... } | diff --git a/cpp/ql/test/library-tests/stmt/leave/leave.ql b/cpp/ql/test/library-tests/stmt/leave/leave.ql new file mode 100644 index 00000000000..c863b64d351 --- /dev/null +++ b/cpp/ql/test/library-tests/stmt/leave/leave.ql @@ -0,0 +1,4 @@ +import cpp + +from LeaveStmt s +select s, s.getEnclosingTry() From e6faebf8507fb958f826e4549d77f0605aa15a20 Mon Sep 17 00:00:00 2001 From: idrissrio Date: Wed, 11 Jun 2025 16:00:51 +0200 Subject: [PATCH 051/150] C++: add change note for `LeaveStmt` --- cpp/ql/lib/change-notes/2025-06-11-leave-stmt.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 cpp/ql/lib/change-notes/2025-06-11-leave-stmt.md diff --git a/cpp/ql/lib/change-notes/2025-06-11-leave-stmt.md b/cpp/ql/lib/change-notes/2025-06-11-leave-stmt.md new file mode 100644 index 00000000000..3e410e57448 --- /dev/null +++ b/cpp/ql/lib/change-notes/2025-06-11-leave-stmt.md @@ -0,0 +1,5 @@ +--- +category: feature +--- +* The Microsoft-specific `__leave` statement is now supported. +* A new class `LeaveStmt` extending `JumpStmt` was added to represent these statements. \ No newline at end of file From 7152e68a4d1a6b4cc67119f6910b470c3cd8e26a Mon Sep 17 00:00:00 2001 From: idrissrio Date: Thu, 12 Jun 2025 14:27:23 +0200 Subject: [PATCH 052/150] C++: add upgrade and downgrade scripts --- .../old.dbscheme | 2494 +++++++++++++++++ .../semmlecode.cpp.dbscheme | 2493 ++++++++++++++++ .../stmts.ql | 13 + .../upgrade.properties | 3 + .../old.dbscheme | 2493 ++++++++++++++++ .../semmlecode.cpp.dbscheme | 2494 +++++++++++++++++ .../upgrade.properties | 2 + 7 files changed, 9992 insertions(+) create mode 100644 cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/old.dbscheme create mode 100644 cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/semmlecode.cpp.dbscheme create mode 100644 cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/stmts.ql create mode 100644 cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/upgrade.properties create mode 100644 cpp/ql/lib/upgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/old.dbscheme create mode 100644 cpp/ql/lib/upgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/semmlecode.cpp.dbscheme create mode 100644 cpp/ql/lib/upgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/upgrade.properties diff --git a/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/old.dbscheme b/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/old.dbscheme new file mode 100644 index 00000000000..a8c2176e9a5 --- /dev/null +++ b/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/old.dbscheme @@ -0,0 +1,2494 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/semmlecode.cpp.dbscheme b/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/semmlecode.cpp.dbscheme new file mode 100644 index 00000000000..3c45f8b9e71 --- /dev/null +++ b/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/semmlecode.cpp.dbscheme @@ -0,0 +1,2493 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/stmts.ql b/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/stmts.ql new file mode 100644 index 00000000000..41c2ac1b770 --- /dev/null +++ b/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/stmts.ql @@ -0,0 +1,13 @@ +class Stmt extends @stmt { + string toString() { none() } +} + +class Location extends @location_stmt { + string toString() { none() } +} + +from Stmt id, int kind, Location loc, int new_kind +where + stmts(id, kind, loc) and + if kind = 40 then new_kind = 4 else new_kind = kind +select id, new_kind, loc diff --git a/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/upgrade.properties b/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/upgrade.properties new file mode 100644 index 00000000000..05a32c10760 --- /dev/null +++ b/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/upgrade.properties @@ -0,0 +1,3 @@ +description: Support `__leave` statement +compatibility: backwards +stmts.rel: run stmts.qlo diff --git a/cpp/ql/lib/upgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/old.dbscheme b/cpp/ql/lib/upgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/old.dbscheme new file mode 100644 index 00000000000..3c45f8b9e71 --- /dev/null +++ b/cpp/ql/lib/upgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/old.dbscheme @@ -0,0 +1,2493 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/semmlecode.cpp.dbscheme new file mode 100644 index 00000000000..a8c2176e9a5 --- /dev/null +++ b/cpp/ql/lib/upgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/semmlecode.cpp.dbscheme @@ -0,0 +1,2494 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/upgrade.properties b/cpp/ql/lib/upgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/upgrade.properties new file mode 100644 index 00000000000..bd639edb8f2 --- /dev/null +++ b/cpp/ql/lib/upgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/upgrade.properties @@ -0,0 +1,2 @@ +description: Support `__leave` statement +compatibility: partial From ac1824aba77128a91df19172b6d609efbd09f8c0 Mon Sep 17 00:00:00 2001 From: idrissrio Date: Thu, 12 Jun 2025 16:52:58 +0200 Subject: [PATCH 053/150] C++: update stats file --- cpp/ql/lib/semmlecode.cpp.dbscheme.stats | 1537 +++++++++++----------- 1 file changed, 768 insertions(+), 769 deletions(-) diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats index 3672711aa41..089d69c641c 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats @@ -2,7 +2,7 @@ @compilation - 15784 + 15785 @externalDataElement @@ -18,15 +18,15 @@ @location_default - 36090715 + 36090723 @location_stmt - 5203174 + 5203175 @location_expr - 17959854 + 17959858 @diagnostic @@ -34,7 +34,7 @@ @file - 81416 + 81417 @folder @@ -42,7 +42,7 @@ @macro_expansion - 39233853 + 39234203 @other_macro_reference @@ -50,19 +50,19 @@ @function - 4000084 + 4000085 @fun_decl - 4138632 + 4138135 @var_decl - 9237883 + 9237636 @type_decl - 1840519 + 1840533 @namespace_decl @@ -70,7 +70,7 @@ @using_declaration - 334516 + 334532 @using_directive @@ -86,7 +86,7 @@ @parameter - 6939003 + 6939004 @membervariable @@ -338,7 +338,7 @@ @type_with_specifiers - 693862 + 693863 @array @@ -350,7 +350,7 @@ @reference - 966847 + 966848 @gnu_vector @@ -368,25 +368,25 @@ @block 10 - - @type_operator - 8519 - @decltype 102076 + + @type_operator + 8519 + @usertype - 4863327 + 4863363 @mangledname - 6313666 + 6313668 @type_mention - 5813148 + 5813149 @concept_template @@ -430,7 +430,7 @@ @attribute_arg_constant_expr - 86995 + 86916 @attribute_arg_expr @@ -454,11 +454,11 @@ @frienddecl - 881070 + 878379 @comment - 11190891 + 11190894 @namespace @@ -470,11 +470,11 @@ @namequalifier - 3255225 + 3255226 @value - 13438637 + 13438640 @initialiser @@ -490,11 +490,11 @@ @array_to_pointer - 1948651 + 1948652 @parexpr - 4902379 + 4902380 @arithnegexpr @@ -546,7 +546,7 @@ @divexpr - 58998 + 58999 @remexpr @@ -586,7 +586,7 @@ @eqexpr - 641654 + 641655 @neexpr @@ -698,7 +698,7 @@ @varaccess - 8232597 + 8232599 @runtime_sizeof @@ -714,7 +714,7 @@ @routineexpr - 6134315 + 6134317 @type_operand @@ -730,7 +730,7 @@ @literal - 6102022 + 6102027 @aggregateliteral @@ -738,7 +738,7 @@ @c_style_cast - 6026987 + 6026988 @temp_init @@ -754,7 +754,7 @@ @ref_indirect - 2642698 + 2642699 @vacuous_destructor_call @@ -814,7 +814,7 @@ @thisaccess - 1514600 + 1514601 @new_expr @@ -1382,7 +1382,7 @@ @concept_id - 96773 + 96774 @lambdacapture @@ -1426,7 +1426,7 @@ @stmt_switch_case - 894773 + 894774 @stmt_switch @@ -1438,7 +1438,7 @@ @stmt_decl - 767030 + 767031 @stmt_empty @@ -1496,6 +1496,10 @@ @stmt_not_consteval_if 3 + + @stmt_leave + 3 + @ppd_if 587335 @@ -1522,7 +1526,7 @@ @ppd_plain_include - 397722 + 397725 @ppd_define @@ -1600,11 +1604,11 @@ compilations - 15784 + 15785 id - 15784 + 15785 cwd @@ -1622,7 +1626,7 @@ 1 2 - 15784 + 15785 @@ -1648,11 +1652,11 @@ compilation_args - 1263730 + 1263740 id - 15784 + 15785 num @@ -2039,11 +2043,11 @@ compilation_build_mode - 15784 + 15785 id - 15784 + 15785 mode @@ -2061,7 +2065,7 @@ 1 2 - 15784 + 15785 @@ -2087,11 +2091,11 @@ compilation_compiling_files - 15784 + 15785 id - 15784 + 15785 num @@ -2113,7 +2117,7 @@ 1 2 - 15784 + 15785 @@ -2129,7 +2133,7 @@ 1 2 - 15784 + 15785 @@ -2213,11 +2217,11 @@ compilation_time - 62875 + 62876 id - 15718 + 15719 num @@ -2229,7 +2233,7 @@ seconds - 17604 + 17473 @@ -2243,7 +2247,7 @@ 1 2 - 15718 + 15719 @@ -2259,7 +2263,7 @@ 4 5 - 15718 + 15719 @@ -2275,17 +2279,17 @@ 2 3 - 105 + 145 3 4 - 7661 + 7819 4 5 - 7951 + 7754 @@ -2331,8 +2335,8 @@ 12 - 1335 - 1336 + 1325 + 1326 13 @@ -2379,23 +2383,23 @@ 12 - 10 - 11 + 9 + 10 13 - 11 - 12 + 12 + 13 13 - 752 - 753 + 705 + 706 13 - 775 - 776 + 795 + 796 13 @@ -2412,22 +2416,22 @@ 1 2 - 11327 + 11195 2 3 - 3494 + 3626 3 4 - 1463 + 1384 4 - 695 - 1318 + 703 + 1265 @@ -2443,7 +2447,7 @@ 1 2 - 17604 + 17473 @@ -2459,12 +2463,12 @@ 1 2 - 14822 + 14914 2 3 - 2756 + 2531 3 @@ -2725,19 +2729,19 @@ compilation_finished - 15784 + 15785 id - 15784 + 15785 cpu_seconds - 11815 + 11894 elapsed_seconds - 250 + 224 @@ -2751,7 +2755,7 @@ 1 2 - 15784 + 15785 @@ -2767,7 +2771,7 @@ 1 2 - 15784 + 15785 @@ -2783,17 +2787,17 @@ 1 2 - 9877 + 10075 2 3 - 1397 + 1345 3 - 37 - 540 + 36 + 474 @@ -2809,12 +2813,12 @@ 1 2 - 10998 + 10984 2 3 - 817 + 909 @@ -2827,15 +2831,10 @@ 12 - - 1 - 2 - 39 - 2 3 - 39 + 52 3 @@ -2843,58 +2842,58 @@ 13 - 4 - 5 + 5 + 6 13 - 11 - 12 + 7 + 8 + 13 + + + 12 + 13 + 13 + + + 13 + 14 + 13 + + + 17 + 18 26 - 14 - 15 + 30 + 31 13 - 18 - 19 + 52 + 53 13 - 19 - 20 + 145 + 146 13 - 26 - 27 + 261 + 262 13 - 50 - 51 + 303 + 304 13 - 148 - 149 - 13 - - - 250 - 251 - 13 - - - 311 - 312 - 13 - - - 323 - 324 + 324 + 325 13 @@ -2908,15 +2907,10 @@ 12 - - 1 - 2 - 39 - 2 3 - 39 + 52 3 @@ -2924,33 +2918,33 @@ 13 - 4 - 5 + 5 + 6 13 - 11 - 12 + 7 + 8 + 13 + + + 12 + 13 + 13 + + + 13 + 14 + 13 + + + 17 + 18 26 - 14 - 15 - 13 - - - 18 - 19 - 13 - - - 19 - 20 - 13 - - - 26 - 27 + 30 + 31 13 @@ -2959,23 +2953,23 @@ 13 - 143 - 144 + 141 + 142 13 - 173 - 174 + 174 + 175 13 - 220 - 221 + 239 + 240 13 - 258 - 259 + 256 + 257 13 @@ -4748,11 +4742,11 @@ locations_default - 36090715 + 36090723 id - 36090715 + 36090723 container @@ -4760,7 +4754,7 @@ startLine - 7467156 + 7467157 startColumn @@ -4768,7 +4762,7 @@ endLine - 7469149 + 7469151 endColumn @@ -4786,7 +4780,7 @@ 1 2 - 36090715 + 36090723 @@ -4802,7 +4796,7 @@ 1 2 - 36090715 + 36090723 @@ -4818,7 +4812,7 @@ 1 2 - 36090715 + 36090723 @@ -4834,7 +4828,7 @@ 1 2 - 36090715 + 36090723 @@ -4850,7 +4844,7 @@ 1 2 - 36090715 + 36090723 @@ -5246,7 +5240,7 @@ 1 2 - 4941390 + 4941391 2 @@ -5287,7 +5281,7 @@ 1 2 - 4999451 + 4999452 2 @@ -5323,7 +5317,7 @@ 1 2 - 5633882 + 5633884 2 @@ -5359,7 +5353,7 @@ 1 2 - 7292974 + 7292975 2 @@ -5380,7 +5374,7 @@ 1 2 - 5008048 + 5008049 2 @@ -5390,7 +5384,7 @@ 3 4 - 557681 + 557682 4 @@ -5796,7 +5790,7 @@ 1 2 - 4941016 + 4941017 2 @@ -5837,7 +5831,7 @@ 1 2 - 4997956 + 4997957 2 @@ -5847,7 +5841,7 @@ 3 6 - 661966 + 661967 6 @@ -5873,7 +5867,7 @@ 1 2 - 7288488 + 7288490 2 @@ -5894,7 +5888,7 @@ 1 2 - 5636499 + 5636500 2 @@ -5930,7 +5924,7 @@ 1 2 - 5007923 + 5007924 2 @@ -5940,7 +5934,7 @@ 3 4 - 553071 + 553072 4 @@ -6265,11 +6259,11 @@ locations_stmt - 5203174 + 5203175 id - 5203174 + 5203175 container @@ -6303,7 +6297,7 @@ 1 2 - 5203174 + 5203175 @@ -6319,7 +6313,7 @@ 1 2 - 5203174 + 5203175 @@ -6335,7 +6329,7 @@ 1 2 - 5203174 + 5203175 @@ -6351,7 +6345,7 @@ 1 2 - 5203174 + 5203175 @@ -6367,7 +6361,7 @@ 1 2 - 5203174 + 5203175 @@ -7680,7 +7674,7 @@ 5 6 - 18858 + 18859 6 @@ -8257,11 +8251,11 @@ locations_expr - 17959854 + 17959858 id - 17959854 + 17959858 container @@ -8295,7 +8289,7 @@ 1 2 - 17959854 + 17959858 @@ -8311,7 +8305,7 @@ 1 2 - 17959854 + 17959858 @@ -8327,7 +8321,7 @@ 1 2 - 17959854 + 17959858 @@ -8343,7 +8337,7 @@ 1 2 - 17959854 + 17959858 @@ -8359,7 +8353,7 @@ 1 2 - 17959854 + 17959858 @@ -11177,15 +11171,15 @@ files - 81416 + 81417 id - 81416 + 81417 name - 81416 + 81417 @@ -11199,7 +11193,7 @@ 1 2 - 81416 + 81417 @@ -11215,7 +11209,7 @@ 1 2 - 81416 + 81417 @@ -11356,7 +11350,7 @@ fileannotations - 5244314 + 5244354 id @@ -11368,11 +11362,11 @@ name - 73306 + 73307 value - 49332 + 49333 @@ -11688,7 +11682,7 @@ 1 2 - 73306 + 73307 @@ -11729,7 +11723,7 @@ 8 11 - 5920 + 5921 11 @@ -11775,7 +11769,7 @@ 2 4 - 2043 + 2044 4 @@ -11851,7 +11845,7 @@ 1 2 - 49319 + 49320 2 @@ -11947,15 +11941,15 @@ inmacroexpansion - 149602958 + 149602994 id - 24604993 + 24604999 inv - 3694107 + 3694108 @@ -11984,17 +11978,17 @@ 6 7 - 6565364 + 6565365 7 8 - 8696243 + 8696245 8 9 - 3547764 + 3547765 9 @@ -12075,15 +12069,15 @@ affectedbymacroexpansion - 48608633 + 48608644 id - 7026352 + 7026354 inv - 3793195 + 3793196 @@ -12097,12 +12091,12 @@ 1 2 - 3836669 + 3836670 2 3 - 764304 + 764305 3 @@ -12213,19 +12207,19 @@ macroinvocations - 39527898 + 39528251 id - 39527898 + 39528251 macro_id - 106973 + 106974 location - 1041646 + 1041654 kind @@ -12243,7 +12237,7 @@ 1 2 - 39527898 + 39528251 @@ -12259,7 +12253,7 @@ 1 2 - 39527898 + 39528251 @@ -12275,7 +12269,7 @@ 1 2 - 39527898 + 39528251 @@ -12296,7 +12290,7 @@ 2 3 - 20017 + 20018 3 @@ -12306,7 +12300,7 @@ 4 6 - 9797 + 9798 6 @@ -12352,7 +12346,7 @@ 1 2 - 58642 + 58643 2 @@ -12398,7 +12392,7 @@ 1 2 - 98744 + 98745 2 @@ -12419,32 +12413,32 @@ 1 2 - 414918 + 414921 2 3 - 246136 + 246099 3 4 - 110296 + 110337 4 6 - 75495 + 75496 6 11 - 79966 + 79967 11 41 - 78594 + 78595 41 @@ -12465,12 +12459,12 @@ 1 2 - 982806 + 982813 2 367 - 58840 + 58841 @@ -12486,7 +12480,7 @@ 1 2 - 1041646 + 1041654 @@ -12505,8 +12499,8 @@ 13 - 2975175 - 2975176 + 2975179 + 2975180 13 @@ -12559,15 +12553,15 @@ macroparent - 34858909 + 34859187 id - 34858909 + 34859187 parent_id - 27313925 + 27314145 @@ -12581,7 +12575,7 @@ 1 2 - 34858909 + 34859187 @@ -12597,17 +12591,17 @@ 1 2 - 21276645 + 21276819 2 3 - 5036789 + 5036827 3 91 - 1000490 + 1000497 @@ -12617,15 +12611,15 @@ macrolocationbind - 5544605 + 5544606 id - 3882778 + 3882779 location - 2759100 + 2759101 @@ -12670,7 +12664,7 @@ 1 2 - 2198673 + 2198674 2 @@ -12695,11 +12689,11 @@ macro_argument_unexpanded - 100507131 + 100507893 invocation - 30398157 + 30398388 argument_index @@ -12707,7 +12701,7 @@ text - 428566 + 428569 @@ -12721,22 +12715,22 @@ 1 2 - 9719757 + 9719830 2 3 - 12168847 + 12168939 3 4 - 6225802 + 6225849 4 67 - 2283750 + 2283768 @@ -12752,22 +12746,22 @@ 1 2 - 9947774 + 9947850 2 3 - 12189775 + 12189867 3 4 - 6031187 + 6031233 4 67 - 2229419 + 2229436 @@ -12840,7 +12834,7 @@ 2 3 - 77882 + 77883 3 @@ -12855,7 +12849,7 @@ 5 6 - 48844 + 48845 6 @@ -12901,12 +12895,12 @@ 1 2 - 303606 + 303608 2 3 - 112208 + 112209 3 @@ -12921,11 +12915,11 @@ macro_argument_expanded - 100507131 + 100507893 invocation - 30398157 + 30398388 argument_index @@ -12933,7 +12927,7 @@ text - 259600 + 259602 @@ -12947,22 +12941,22 @@ 1 2 - 9719757 + 9719830 2 3 - 12168847 + 12168939 3 4 - 6225802 + 6225849 4 67 - 2283750 + 2283768 @@ -12978,22 +12972,22 @@ 1 2 - 13402907 + 13403008 2 3 - 10499073 + 10499153 3 4 - 5260613 + 5260653 4 9 - 1235562 + 1235572 @@ -13071,7 +13065,7 @@ 3 4 - 56941 + 56942 4 @@ -13111,7 +13105,7 @@ 254 990275 - 11630 + 11631 @@ -13127,12 +13121,12 @@ 1 2 - 131198 + 131199 2 3 - 111008 + 111009 3 @@ -13147,15 +13141,15 @@ functions - 4000084 + 4000085 id - 4000084 + 4000085 name - 1644139 + 1644140 kind @@ -13173,7 +13167,7 @@ 1 2 - 4000084 + 4000085 @@ -13189,7 +13183,7 @@ 1 2 - 4000084 + 4000085 @@ -13401,11 +13395,11 @@ function_return_type - 4017527 + 4017528 id - 4000084 + 4000085 return_type @@ -13423,7 +13417,7 @@ 1 2 - 3982641 + 3982642 2 @@ -13777,11 +13771,11 @@ function_prototyped - 3998589 + 3998590 id - 3998589 + 3998590 @@ -13861,11 +13855,11 @@ member_function_this_type - 840353 + 840354 id - 840353 + 840354 this_type @@ -13883,7 +13877,7 @@ 1 2 - 840353 + 840354 @@ -13939,15 +13933,15 @@ fun_decls - 4144613 + 4144115 id - 4138632 + 4138135 function - 3975663 + 3975664 type_id @@ -13955,11 +13949,11 @@ name - 1642644 + 1642645 location - 2762493 + 2762494 @@ -13973,7 +13967,7 @@ 1 2 - 4138632 + 4138135 @@ -13989,7 +13983,7 @@ 1 2 - 4132652 + 4132154 2 @@ -14010,7 +14004,7 @@ 1 2 - 4138632 + 4138135 @@ -14026,7 +14020,7 @@ 1 2 - 4138632 + 4138135 @@ -14042,12 +14036,12 @@ 1 2 - 3826026 + 3826525 2 4 - 149637 + 149138 @@ -14063,7 +14057,7 @@ 1 2 - 3957223 + 3957224 2 @@ -14084,7 +14078,7 @@ 1 2 - 3975663 + 3975664 @@ -14100,7 +14094,7 @@ 1 2 - 3832754 + 3832755 2 @@ -14140,7 +14134,7 @@ 358 - 10246 + 10242 1245 @@ -14193,7 +14187,7 @@ 1 2 - 493266 + 493267 2 @@ -14224,7 +14218,7 @@ 1 2 - 456760 + 456761 2 @@ -14255,22 +14249,22 @@ 1 2 - 1294280 + 1294529 2 3 - 183402 + 183152 3 10 - 125216 + 125341 10 3169 - 39745 + 39620 @@ -14312,7 +14306,7 @@ 1 2 - 1552812 + 1552813 2 @@ -14359,7 +14353,7 @@ 1 2 - 2383728 + 2383729 2 @@ -14385,7 +14379,7 @@ 1 2 - 2387466 + 2387467 2 @@ -14411,7 +14405,7 @@ 1 2 - 2647493 + 2647494 2 @@ -14432,7 +14426,7 @@ 1 2 - 2723371 + 2723372 2 @@ -14480,11 +14474,11 @@ fun_decl_specifiers - 4091286 + 4091287 id - 1683760 + 1683761 name @@ -14778,11 +14772,11 @@ fun_decl_empty_noexcept - 1160715 + 1160716 fun_decl - 1160715 + 1160716 @@ -15048,11 +15042,11 @@ param_decl_bind - 7170747 + 7170500 id - 7170747 + 7170500 index @@ -15060,7 +15054,7 @@ fun_decl - 3468816 + 3468567 @@ -15074,7 +15068,7 @@ 1 2 - 7170747 + 7170500 @@ -15090,7 +15084,7 @@ 1 2 - 7170747 + 7170500 @@ -15129,8 +15123,8 @@ 622 - 27841 - 27842 + 27839 + 27840 124 @@ -15170,8 +15164,8 @@ 622 - 27841 - 27842 + 27839 + 27840 124 @@ -15188,12 +15182,12 @@ 1 2 - 1495250 + 1495001 2 3 - 954263 + 954264 3 @@ -15224,12 +15218,12 @@ 1 2 - 1495250 + 1495001 2 3 - 954263 + 954264 3 @@ -15254,15 +15248,15 @@ var_decls - 9244736 + 9244489 id - 9237883 + 9237636 variable - 8948452 + 8948454 type_id @@ -15274,7 +15268,7 @@ location - 6187951 + 6187953 @@ -15288,7 +15282,7 @@ 1 2 - 9237883 + 9237636 @@ -15304,7 +15298,7 @@ 1 2 - 9231030 + 9230783 2 @@ -15325,7 +15319,7 @@ 1 2 - 9237883 + 9237636 @@ -15341,7 +15335,7 @@ 1 2 - 9237883 + 9237636 @@ -15357,12 +15351,12 @@ 1 2 - 8671978 + 8672229 2 4 - 276473 + 276224 @@ -15378,7 +15372,7 @@ 1 2 - 8909827 + 8909830 2 @@ -15399,7 +15393,7 @@ 1 2 - 8843045 + 8843047 2 @@ -15420,7 +15414,7 @@ 1 2 - 8697270 + 8697272 2 @@ -15441,7 +15435,7 @@ 1 2 - 852470 + 852471 2 @@ -15585,7 +15579,7 @@ 2 3 - 165335 + 165336 3 @@ -15604,7 +15598,7 @@ 26 - 26622 + 26620 30276 @@ -15729,11 +15723,11 @@ 1 2 - 5741531 + 5741533 2 - 2943 + 2941 446419 @@ -15750,7 +15744,7 @@ 1 2 - 5765453 + 5765455 2 @@ -15771,7 +15765,7 @@ 1 2 - 5904749 + 5904751 2 @@ -15792,7 +15786,7 @@ 1 2 - 6175492 + 6175493 2 @@ -15807,11 +15801,11 @@ var_def - 3721866 + 3721867 id - 3721866 + 3721867 @@ -15961,19 +15955,19 @@ type_decls - 1840519 + 1840533 id - 1840519 + 1840533 type_id - 1800220 + 1800233 location - 1446041 + 1446052 @@ -15987,7 +15981,7 @@ 1 2 - 1840519 + 1840533 @@ -16003,7 +15997,7 @@ 1 2 - 1840519 + 1840533 @@ -16019,7 +16013,7 @@ 1 2 - 1771221 + 1771235 2 @@ -16040,7 +16034,7 @@ 1 2 - 1772514 + 1772527 2 @@ -16061,12 +16055,12 @@ 1 2 - 1371548 + 1371558 2 651 - 74493 + 74494 @@ -16082,7 +16076,7 @@ 1 2 - 1372853 + 1372863 2 @@ -16097,11 +16091,11 @@ type_def - 1262886 + 1262896 id - 1262886 + 1262896 @@ -16558,15 +16552,15 @@ usings - 339699 + 339714 id - 339699 + 339714 element_id - 73728 + 73742 location @@ -16588,7 +16582,7 @@ 1 2 - 339699 + 339714 @@ -16604,7 +16598,7 @@ 1 2 - 339699 + 339714 @@ -16620,7 +16614,7 @@ 1 2 - 339699 + 339714 @@ -16636,7 +16630,7 @@ 1 2 - 64075 + 64089 2 @@ -16662,7 +16656,7 @@ 1 2 - 64075 + 64089 2 @@ -16688,7 +16682,7 @@ 1 2 - 73728 + 73742 @@ -16709,12 +16703,12 @@ 2 4 - 2874 + 2861 4 132 - 2426 + 2439 145 @@ -16740,12 +16734,12 @@ 2 4 - 2874 + 2861 4 132 - 2426 + 2439 145 @@ -16785,8 +16779,8 @@ 13 - 25367 - 25368 + 25368 + 25369 13 @@ -16806,8 +16800,8 @@ 13 - 5377 - 5378 + 5378 + 5379 13 @@ -16839,7 +16833,7 @@ using_container - 722770 + 722789 parent @@ -16847,7 +16841,7 @@ child - 339699 + 339714 @@ -16912,12 +16906,12 @@ 1 2 - 121268 + 121282 2 3 - 150161 + 150162 3 @@ -17550,11 +17544,11 @@ params - 6965541 + 6965543 id - 6939003 + 6939004 function @@ -17580,7 +17574,7 @@ 1 2 - 6939003 + 6939004 @@ -17596,7 +17590,7 @@ 1 2 - 6939003 + 6939004 @@ -17612,7 +17606,7 @@ 1 2 - 6912464 + 6912466 2 @@ -18721,7 +18715,7 @@ parent - 41180 + 41181 index @@ -18963,7 +18957,7 @@ 1 2 - 41180 + 41181 @@ -20317,11 +20311,11 @@ derivedtypes - 3036226 + 3036227 id - 3036226 + 3036227 name @@ -20347,7 +20341,7 @@ 1 2 - 3036226 + 3036227 @@ -20363,7 +20357,7 @@ 1 2 - 3036226 + 3036227 @@ -20379,7 +20373,7 @@ 1 2 - 3036226 + 3036227 @@ -20395,7 +20389,7 @@ 1 2 - 1353711 + 1353712 2 @@ -21253,7 +21247,7 @@ decltypes - 812301 + 812302 id @@ -21261,7 +21255,7 @@ expr - 812301 + 812302 kind @@ -21391,7 +21385,7 @@ 1 2 - 812301 + 812302 @@ -21407,7 +21401,7 @@ 1 2 - 812301 + 812302 @@ -21423,7 +21417,7 @@ 1 2 - 812301 + 812302 @@ -21439,7 +21433,7 @@ 1 2 - 812301 + 812302 @@ -22017,15 +22011,15 @@ usertypes - 4863327 + 4863363 id - 4863327 + 4863363 name - 1051154 + 1051136 kind @@ -22043,7 +22037,7 @@ 1 2 - 4863327 + 4863363 @@ -22059,7 +22053,7 @@ 1 2 - 4863327 + 4863363 @@ -22075,17 +22069,17 @@ 1 2 - 727675 + 727655 2 3 - 192465 + 192440 3 7 - 83711 + 83738 7 @@ -22106,7 +22100,7 @@ 1 2 - 986551 + 986532 2 @@ -22241,8 +22235,8 @@ 13 - 10840 - 10841 + 10838 + 10839 13 @@ -22263,11 +22257,11 @@ usertypesize - 1595570 + 1595582 id - 1595570 + 1595582 size @@ -22289,7 +22283,7 @@ 1 2 - 1595570 + 1595582 @@ -22305,7 +22299,7 @@ 1 2 - 1595570 + 1595582 @@ -22563,7 +22557,7 @@ usertype_alias_kind - 2162685 + 2162686 id @@ -22621,11 +22615,11 @@ nontype_template_parameters - 960965 + 960966 id - 960965 + 960966 @@ -22705,15 +22699,15 @@ mangled_name - 7805179 + 7805181 id - 7805179 + 7805181 mangled_name - 6313666 + 6313668 is_complete @@ -22731,7 +22725,7 @@ 1 2 - 7805179 + 7805181 @@ -22747,7 +22741,7 @@ 1 2 - 7805179 + 7805181 @@ -22763,7 +22757,7 @@ 1 2 - 5984988 + 5984989 2 @@ -22784,7 +22778,7 @@ 1 2 - 6313666 + 6313668 @@ -22847,48 +22841,48 @@ is_standard_layout_class - 1314777 + 1314787 id - 1314777 + 1314787 is_complete - 1574114 + 1574126 id - 1574114 + 1574126 is_class_template - 284418 + 284420 id - 284418 + 284420 class_instantiation - 1297977 + 1297973 to - 1294166 + 1294176 from - 89302 + 89303 @@ -22902,12 +22896,12 @@ 1 2 - 1291489 + 1291512 2 8 - 2676 + 2663 @@ -22943,22 +22937,22 @@ 5 7 - 7516 + 7529 7 10 - 6844 + 6830 10 17 - 7239 + 7226 17 53 - 6751 + 6765 53 @@ -22973,11 +22967,11 @@ class_template_argument - 3419896 + 3419922 type_id - 1594040 + 1594052 index @@ -22985,7 +22979,7 @@ arg_type - 1008969 + 1008977 @@ -22999,22 +22993,22 @@ 1 2 - 663402 + 663407 2 3 - 479231 + 479235 3 4 - 302010 + 302012 4 7 - 120819 + 120820 7 @@ -23035,22 +23029,22 @@ 1 2 - 697648 + 697654 2 3 - 493644 + 493648 3 4 - 300045 + 300047 4 113 - 102700 + 102701 @@ -23158,22 +23152,22 @@ 1 2 - 633045 + 633050 2 3 - 206957 + 206959 3 4 - 60607 + 60608 4 11 - 76761 + 76762 11 @@ -23194,12 +23188,12 @@ 1 2 - 889441 + 889448 2 3 - 96885 + 96886 3 @@ -23440,15 +23434,15 @@ is_proxy_class_for - 60475 + 60476 id - 60475 + 60476 templ_param_id - 57139 + 57140 @@ -23462,7 +23456,7 @@ 1 2 - 60475 + 60476 @@ -23478,7 +23472,7 @@ 1 2 - 56242 + 56243 2 @@ -23493,11 +23487,11 @@ type_mentions - 5813148 + 5813149 id - 5813148 + 5813149 type_id @@ -23505,7 +23499,7 @@ location - 5767566 + 5767568 kind @@ -23523,7 +23517,7 @@ 1 2 - 5813148 + 5813149 @@ -23539,7 +23533,7 @@ 1 2 - 5813148 + 5813149 @@ -23555,7 +23549,7 @@ 1 2 - 5813148 + 5813149 @@ -23689,7 +23683,7 @@ 1 2 - 5721985 + 5721986 2 @@ -23710,7 +23704,7 @@ 1 2 - 5721985 + 5721986 2 @@ -23731,7 +23725,7 @@ 1 2 - 5767566 + 5767568 @@ -23789,11 +23783,11 @@ is_function_template - 1382146 + 1382147 id - 1382146 + 1382147 @@ -23868,7 +23862,7 @@ function_template_argument - 3116089 + 3116090 function_id @@ -23930,7 +23924,7 @@ 2 3 - 515730 + 515731 3 @@ -24349,7 +24343,7 @@ 1 2 - 561061 + 561062 2 @@ -24479,11 +24473,11 @@ variable_template_argument - 766874 + 766875 variable_id - 399696 + 399697 index @@ -25442,11 +25436,11 @@ concept_instantiation - 96773 + 96774 to - 96773 + 96774 from @@ -25464,7 +25458,7 @@ 1 2 - 96773 + 96774 @@ -25995,7 +25989,7 @@ routine - 412135 + 412136 index @@ -26032,7 +26026,7 @@ 4 5 - 48623 + 48624 5 @@ -26561,15 +26555,15 @@ typespecifiers - 966335 + 969178 type_id - 959913 + 962756 spec_id - 105 + 118 @@ -26583,7 +26577,7 @@ 1 2 - 953491 + 956333 2 @@ -26606,6 +26600,11 @@ 165 13 + + 215 + 216 + 13 + 224 225 @@ -26649,11 +26648,11 @@ funspecifiers - 9674600 + 9674560 func_id - 3322022 + 3322023 spec_id @@ -26676,12 +26675,12 @@ 2 3 - 673513 + 673556 3 4 - 1416326 + 1416284 4 @@ -26785,8 +26784,8 @@ 42 - 42407 - 42408 + 42406 + 42407 42 @@ -26807,11 +26806,11 @@ varspecifiers - 3043328 + 3064883 var_id - 2298382 + 2308848 spec_id @@ -26829,12 +26828,12 @@ 1 2 - 1655851 + 1655229 2 3 - 540612 + 551701 3 @@ -26853,13 +26852,13 @@ 12 - 67 - 68 + 97 + 98 124 - 97 - 98 + 240 + 241 124 @@ -26953,11 +26952,11 @@ attributes - 649382 + 649383 id - 649382 + 649383 kind @@ -26987,7 +26986,7 @@ 1 2 - 649382 + 649383 @@ -27003,7 +27002,7 @@ 1 2 - 649382 + 649383 @@ -27019,7 +27018,7 @@ 1 2 - 649382 + 649383 @@ -27035,7 +27034,7 @@ 1 2 - 649382 + 649383 @@ -27443,7 +27442,7 @@ 1 2 - 637421 + 637422 2 @@ -27511,11 +27510,11 @@ attribute_args - 96265 + 96187 id - 96265 + 96187 kind @@ -27523,7 +27522,7 @@ attribute - 83065 + 83066 index @@ -27531,7 +27530,7 @@ location - 89500 + 89501 @@ -27545,7 +27544,7 @@ 1 2 - 96265 + 96187 @@ -27561,7 +27560,7 @@ 1 2 - 96265 + 96187 @@ -27577,7 +27576,7 @@ 1 2 - 96265 + 96187 @@ -27593,7 +27592,7 @@ 1 2 - 96265 + 96187 @@ -27622,8 +27621,8 @@ 13 - 6597 - 6598 + 6591 + 6592 13 @@ -27728,12 +27727,12 @@ 1 2 - 75350 + 75430 2 4 - 6395 + 6316 4 @@ -27754,7 +27753,7 @@ 1 2 - 80823 + 80824 2 @@ -27775,7 +27774,7 @@ 1 2 - 76946 + 76947 2 @@ -27796,7 +27795,7 @@ 1 2 - 78515 + 78516 2 @@ -27835,8 +27834,8 @@ 13 - 6480 - 6481 + 6474 + 6475 13 @@ -27951,12 +27950,12 @@ 1 2 - 87179 + 87259 2 23 - 2320 + 2241 @@ -27972,7 +27971,7 @@ 1 2 - 89289 + 89290 2 @@ -28185,15 +28184,15 @@ attribute_arg_constant - 86995 + 86916 arg - 86995 + 86916 constant - 86995 + 86916 @@ -28207,7 +28206,7 @@ 1 2 - 86995 + 86916 @@ -28223,7 +28222,7 @@ 1 2 - 86995 + 86916 @@ -28397,7 +28396,7 @@ funcattributes - 842627 + 842628 func_id @@ -28419,7 +28418,7 @@ 1 2 - 757654 + 757655 2 @@ -28586,15 +28585,15 @@ unspecifiedtype - 8145616 + 8145638 type_id - 8145616 + 8145638 unspecified_type_id - 4690378 + 4690387 @@ -28608,7 +28607,7 @@ 1 2 - 8145616 + 8145638 @@ -28624,17 +28623,17 @@ 1 2 - 3130941 + 3130938 2 3 - 1275559 + 1275568 3 6277 - 283878 + 283880 @@ -28644,7 +28643,7 @@ member - 4659693 + 4659651 parent @@ -28656,7 +28655,7 @@ child - 4543140 + 4543098 @@ -28929,7 +28928,7 @@ 1 2 - 4543140 + 4543098 @@ -28945,7 +28944,7 @@ 1 2 - 4455767 + 4455726 2 @@ -29516,7 +29515,7 @@ 1 2 - 36016 + 36017 2 @@ -29609,11 +29608,11 @@ direct_base_offsets - 564308 + 564309 der_id - 564308 + 564309 offset @@ -29631,7 +29630,7 @@ 1 2 - 564308 + 564309 @@ -29828,11 +29827,11 @@ frienddecls - 881070 + 878379 id - 881070 + 878379 type_id @@ -29840,7 +29839,7 @@ decl_id - 97497 + 97626 location @@ -29858,7 +29857,7 @@ 1 2 - 881070 + 878379 @@ -29874,7 +29873,7 @@ 1 2 - 881070 + 878379 @@ -29890,7 +29889,7 @@ 1 2 - 881070 + 878379 @@ -29906,47 +29905,47 @@ 1 2 - 7733 + 7775 2 3 - 17517 + 17474 3 7 - 4229 + 4486 7 - 11 - 4187 + 12 + 4315 - 11 + 12 20 4571 20 - 31 - 4016 - - - 31 - 43 + 32 4144 - 43 - 78 - 3887 + 33 + 50 + 4742 - 79 + 50 + 80 + 4742 + + + 101 120 - 2905 + 939 @@ -29962,47 +29961,47 @@ 1 2 - 7733 + 7775 2 3 - 17517 + 17474 3 7 - 4229 + 4486 7 - 11 - 4187 + 12 + 4315 - 11 + 12 20 4571 20 - 31 - 4016 - - - 31 - 43 + 32 4144 - 43 - 78 - 3887 + 33 + 50 + 4742 - 79 + 50 + 80 + 4742 + + + 101 120 - 2905 + 939 @@ -30039,32 +30038,32 @@ 1 2 - 59900 + 60327 2 3 - 7733 + 7434 3 8 - 7775 + 7519 8 - 16 - 7476 + 15 + 7605 - 16 + 15 40 - 7391 + 7605 40 164 - 7220 + 7135 @@ -30080,32 +30079,32 @@ 1 2 - 59900 + 60327 2 3 - 7733 + 7434 3 8 - 7775 + 7519 8 - 16 - 7476 + 15 + 7605 - 16 + 15 40 - 7391 + 7605 40 164 - 7220 + 7135 @@ -30121,7 +30120,7 @@ 1 2 - 96643 + 96771 2 @@ -30146,7 +30145,7 @@ 2 - 20433 + 20370 469 @@ -30188,7 +30187,7 @@ 2 - 2129 + 2132 427 @@ -30199,19 +30198,19 @@ comments - 11190891 + 11190894 id - 11190891 + 11190894 contents - 4279921 + 4279922 location - 11190891 + 11190894 @@ -30225,7 +30224,7 @@ 1 2 - 11190891 + 11190894 @@ -30241,7 +30240,7 @@ 1 2 - 11190891 + 11190894 @@ -30257,7 +30256,7 @@ 1 2 - 3906888 + 3906889 2 @@ -30283,7 +30282,7 @@ 1 2 - 3906888 + 3906889 2 @@ -30309,7 +30308,7 @@ 1 2 - 11190891 + 11190894 @@ -30325,7 +30324,7 @@ 1 2 - 11190891 + 11190894 @@ -30335,15 +30334,15 @@ commentbinding - 3828144 + 3828145 id - 3342602 + 3342603 element - 3662559 + 3662560 @@ -30357,7 +30356,7 @@ 1 2 - 3286535 + 3286536 2 @@ -30378,7 +30377,7 @@ 1 2 - 3496974 + 3496975 2 @@ -30393,15 +30392,15 @@ exprconv - 9607944 + 9607946 converted - 9607839 + 9607841 conversion - 9607944 + 9607946 @@ -30415,7 +30414,7 @@ 1 2 - 9607734 + 9607736 2 @@ -30436,7 +30435,7 @@ 1 2 - 9607944 + 9607946 @@ -30446,18 +30445,18 @@ compgenerated - 10701576 + 10701538 id - 10701576 + 10701538 synthetic_destructor_call - 1788902 + 1788903 element @@ -30469,7 +30468,7 @@ destructor_call - 1788902 + 1788903 @@ -30667,7 +30666,7 @@ 1 2 - 1788902 + 1788903 @@ -30683,7 +30682,7 @@ 1 2 - 1788902 + 1788903 @@ -30870,11 +30869,11 @@ exprparents - 19402287 + 19402291 expr_id - 19402287 + 19402291 child_index @@ -30882,7 +30881,7 @@ parent_id - 12905447 + 12905450 @@ -30896,7 +30895,7 @@ 1 2 - 19402287 + 19402291 @@ -30912,7 +30911,7 @@ 1 2 - 19402287 + 19402291 @@ -31030,12 +31029,12 @@ 1 2 - 7375018 + 7375020 2 3 - 5069113 + 5069114 3 @@ -31056,12 +31055,12 @@ 1 2 - 7375018 + 7375020 2 3 - 5069113 + 5069114 3 @@ -31076,22 +31075,22 @@ expr_isload - 6834842 + 6834844 expr_id - 6834842 + 6834844 conversionkinds - 6050434 + 6050435 expr_id - 6050434 + 6050435 kind @@ -31109,7 +31108,7 @@ 1 2 - 6050434 + 6050435 @@ -31153,8 +31152,8 @@ 1 - 5831535 - 5831536 + 5831536 + 5831537 1 @@ -31165,11 +31164,11 @@ iscall - 6209630 + 6209631 caller - 6209630 + 6209631 kind @@ -31187,7 +31186,7 @@ 1 2 - 6209630 + 6209631 @@ -31223,11 +31222,11 @@ numtemplatearguments - 719399 + 719400 expr_id - 719399 + 719400 num @@ -31245,7 +31244,7 @@ 1 2 - 719399 + 719400 @@ -31354,15 +31353,15 @@ namequalifiers - 3255225 + 3255226 id - 3255225 + 3255226 qualifiableelement - 3255225 + 3255226 qualifyingelement @@ -31384,7 +31383,7 @@ 1 2 - 3255225 + 3255226 @@ -31400,7 +31399,7 @@ 1 2 - 3255225 + 3255226 @@ -31416,7 +31415,7 @@ 1 2 - 3255225 + 3255226 @@ -31432,7 +31431,7 @@ 1 2 - 3255225 + 3255226 @@ -31448,7 +31447,7 @@ 1 2 - 3255225 + 3255226 @@ -31464,7 +31463,7 @@ 1 2 - 3255225 + 3255226 @@ -31670,11 +31669,11 @@ varbind - 8232597 + 8232599 expr - 8232597 + 8232599 var @@ -31692,7 +31691,7 @@ 1 2 - 8232597 + 8232599 @@ -31763,11 +31762,11 @@ funbind - 6220037 + 6220039 expr - 6217389 + 6217391 fun @@ -31785,7 +31784,7 @@ 1 2 - 6214741 + 6214743 2 @@ -32157,15 +32156,15 @@ expr_cond_true - 895532 + 895533 cond - 895532 + 895533 true - 895532 + 895533 @@ -32179,7 +32178,7 @@ 1 2 - 895532 + 895533 @@ -32195,7 +32194,7 @@ 1 2 - 895532 + 895533 @@ -32253,11 +32252,11 @@ values - 13438637 + 13438640 id - 13438637 + 13438640 str @@ -32275,7 +32274,7 @@ 1 2 - 13438637 + 13438640 @@ -32321,11 +32320,11 @@ valuetext - 6647443 + 6647587 id - 6647443 + 6647587 text @@ -32343,7 +32342,7 @@ 1 2 - 6647443 + 6647587 @@ -32384,15 +32383,15 @@ valuebind - 13546930 + 13546933 val - 13438637 + 13438640 expr - 13546930 + 13546933 @@ -32406,12 +32405,12 @@ 1 2 - 13348324 + 13348327 2 6 - 90312 + 90313 @@ -32427,7 +32426,7 @@ 1 2 - 13546930 + 13546933 @@ -32832,7 +32831,7 @@ var - 988524 + 988525 expr @@ -32840,7 +32839,7 @@ location - 537812 + 537813 @@ -33116,15 +33115,15 @@ expr_ancestor - 1795303 + 1795304 exp - 1795303 + 1795304 ancestor - 898526 + 898527 @@ -33138,7 +33137,7 @@ 1 2 - 1795303 + 1795304 @@ -33174,11 +33173,11 @@ exprs - 25143280 + 25143286 id - 25143280 + 25143286 kind @@ -33186,7 +33185,7 @@ location - 10554422 + 10554424 @@ -33200,7 +33199,7 @@ 1 2 - 25143280 + 25143286 @@ -33216,7 +33215,7 @@ 1 2 - 25143280 + 25143286 @@ -33394,7 +33393,7 @@ 1 2 - 8876942 + 8876944 2 @@ -33425,7 +33424,7 @@ 1 2 - 9015972 + 9015974 2 @@ -33571,15 +33570,15 @@ expr_types - 25143280 + 25143286 id - 25143280 + 25143286 typeid - 213630 + 213631 value_category @@ -33597,7 +33596,7 @@ 1 2 - 25143280 + 25143286 @@ -33613,7 +33612,7 @@ 1 2 - 25143280 + 25143286 @@ -37105,11 +37104,11 @@ stmts - 6243068 + 6243069 id - 6243068 + 6243069 kind @@ -37117,7 +37116,7 @@ location - 2747714 + 2747715 @@ -37131,7 +37130,7 @@ 1 2 - 6243068 + 6243069 @@ -37147,7 +37146,7 @@ 1 2 - 6243068 + 6243069 @@ -37385,12 +37384,12 @@ 1 2 - 2346946 + 2346947 2 4 - 238474 + 238475 4 @@ -38061,7 +38060,7 @@ switch_case - 894773 + 894774 switch_stmt @@ -38073,7 +38072,7 @@ case_id - 894773 + 894774 @@ -38281,7 +38280,7 @@ 1 2 - 894773 + 894774 @@ -38297,7 +38296,7 @@ 1 2 - 894773 + 894774 @@ -38547,11 +38546,11 @@ stmtparents - 5509818 + 5509819 id - 5509818 + 5509819 index @@ -38573,7 +38572,7 @@ 1 2 - 5509818 + 5509819 @@ -38589,7 +38588,7 @@ 1 2 - 5509818 + 5509819 @@ -38747,7 +38746,7 @@ 6 16 - 175329 + 175330 16 @@ -38788,7 +38787,7 @@ 6 16 - 175329 + 175330 16 @@ -38818,7 +38817,7 @@ stmt - 682992 + 682991 num @@ -38826,7 +38825,7 @@ decl - 722965 + 722964 @@ -39004,7 +39003,7 @@ 1 2 - 722941 + 722940 2 @@ -39025,7 +39024,7 @@ 1 2 - 722965 + 722964 @@ -39039,7 +39038,7 @@ stmt - 682992 + 682991 num @@ -39259,7 +39258,7 @@ enclosing - 1503348 + 1503349 @@ -39490,11 +39489,11 @@ preprocdirects - 5386937 + 5386939 id - 5386937 + 5386939 kind @@ -39502,7 +39501,7 @@ location - 5383698 + 5383699 @@ -39516,7 +39515,7 @@ 1 2 - 5386937 + 5386939 @@ -39532,7 +39531,7 @@ 1 2 - 5386937 + 5386939 @@ -39680,7 +39679,7 @@ 1 2 - 5383573 + 5383575 27 @@ -39701,7 +39700,7 @@ 1 2 - 5383698 + 5383699 @@ -39791,15 +39790,15 @@ preproctext - 4335864 + 4335865 id - 4335864 + 4335865 head - 2943528 + 2943529 body @@ -39817,7 +39816,7 @@ 1 2 - 4335864 + 4335865 @@ -39833,7 +39832,7 @@ 1 2 - 4335864 + 4335865 @@ -39849,7 +39848,7 @@ 1 2 - 2747542 + 2747543 2 @@ -39870,7 +39869,7 @@ 1 2 - 2864162 + 2864163 2 @@ -39937,15 +39936,15 @@ includes - 397814 + 397817 id - 397814 + 397817 included - 73280 + 73281 @@ -39959,7 +39958,7 @@ 1 2 - 397814 + 397817 @@ -40063,11 +40062,11 @@ link_parent - 38113713 + 38113722 element - 4847511 + 4847512 link_target @@ -40085,7 +40084,7 @@ 1 2 - 665224 + 665225 2 @@ -40095,7 +40094,7 @@ 9 10 - 4148491 + 4148492 From 7af828720a0c3d03d319ad33cadb73588543dc5a Mon Sep 17 00:00:00 2001 From: idrissrio Date: Fri, 13 Jun 2025 09:41:19 +0200 Subject: [PATCH 054/150] C++: address review comments --- .../a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/upgrade.properties | 2 +- cpp/ql/lib/change-notes/2025-06-11-leave-stmt.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/upgrade.properties b/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/upgrade.properties index 05a32c10760..beabef86257 100644 --- a/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/upgrade.properties +++ b/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/upgrade.properties @@ -1,3 +1,3 @@ description: Support `__leave` statement -compatibility: backwards +compatibility: full stmts.rel: run stmts.qlo diff --git a/cpp/ql/lib/change-notes/2025-06-11-leave-stmt.md b/cpp/ql/lib/change-notes/2025-06-11-leave-stmt.md index 3e410e57448..d06be5b77a9 100644 --- a/cpp/ql/lib/change-notes/2025-06-11-leave-stmt.md +++ b/cpp/ql/lib/change-notes/2025-06-11-leave-stmt.md @@ -2,4 +2,4 @@ category: feature --- * The Microsoft-specific `__leave` statement is now supported. -* A new class `LeaveStmt` extending `JumpStmt` was added to represent these statements. \ No newline at end of file +* A new class `LeaveStmt` extending `JumpStmt` was added to represent `__leave` statements. \ No newline at end of file From 66c0ff61bb682ff32f0f14bc981332d8ee5d9e4a Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Wed, 11 Jun 2025 21:28:18 +0200 Subject: [PATCH 055/150] Rust: Model `String` -> `str` implicit conversion in type inference --- .../codeql/rust/frameworks/stdlib/Stdlib.qll | 9 ++ .../codeql/rust/internal/TypeInference.qll | 43 ++++++--- .../dataflow/local/DataFlowStep.expected | 4 + .../PathResolutionConsistency.expected | 4 + .../PathResolutionConsistency.expected | 3 + .../PathResolutionConsistency.expected | 53 +++++++++++ .../test/library-tests/type-inference/main.rs | 4 +- .../type-inference/type-inference.expected | 4 + .../PathResolutionConsistency.expected | 89 +++++++++++++++++++ .../PathResolutionConsistency.expected | 7 ++ 10 files changed, 207 insertions(+), 13 deletions(-) create mode 100644 rust/ql/test/library-tests/sensitivedata/CONSISTENCY/PathResolutionConsistency.expected create mode 100644 rust/ql/test/query-tests/security/CWE-312/CONSISTENCY/PathResolutionConsistency.expected diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll b/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll index f8a65d9dcb9..51a943190c5 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll @@ -65,3 +65,12 @@ class FutureTrait extends Trait { result.getName().getText() = "Output" } } + +/** + * The [`String` struct][1]. + * + * [1]: https://doc.rust-lang.org/std/string/struct.String.html + */ +class StringStruct extends Struct { + StringStruct() { this.getCanonicalPath() = "alloc::string::String" } +} diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index 61c93153957..a8230d04d9d 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -780,12 +780,18 @@ private Type inferCallExprBaseType(AstNode n, TypePath path) { not (path0.isEmpty() and result = TRefType()) and path = TypePath::cons(TRefTypeParameter(), path0) else ( - not path0.isCons(TRefTypeParameter(), _) and - not (path0.isEmpty() and result = TRefType()) and - path = path0 - or - // adjust for implicit borrow - path0.isCons(TRefTypeParameter(), path) + not ( + receiverType.(StructType).asItemNode() instanceof StringStruct and + result.(StructType).asItemNode() instanceof Builtins::Str + ) and + ( + not path0.isCons(TRefTypeParameter(), _) and + not (path0.isEmpty() and result = TRefType()) and + path = path0 + or + // adjust for implicit borrow + path0.isCons(TRefTypeParameter(), path) + ) ) ) else path = path0 @@ -1130,12 +1136,27 @@ final class MethodCall extends Call { Type getTypeAt(TypePath path) { if this.receiverImplicitlyBorrowed() then - exists(TypePath path0 | result = inferType(super.getReceiver(), path0) | - path0.isCons(TRefTypeParameter(), path) + exists(TypePath path0, Type t0 | + t0 = inferType(super.getReceiver(), path0) and + ( + path0.isCons(TRefTypeParameter(), path) + or + not path0.isCons(TRefTypeParameter(), _) and + not (path0.isEmpty() and result = TRefType()) and + path = path0 + ) + | + result = t0 or - not path0.isCons(TRefTypeParameter(), _) and - not (path0.isEmpty() and result = TRefType()) and - path = path0 + // We do not yet model the `Deref` trait, so we hard-code the fact that + // `String` dereferences to `str` here. This allows us e.g. to resolve + // `x.parse::()` to the function `::parse` when `x` has + // type `String`. + // + // See also https://doc.rust-lang.org/reference/expressions/method-call-expr.html#r-expr.method.autoref-deref + path.isEmpty() and + t0.(StructType).asItemNode() instanceof StringStruct and + result.(StructType).asItemNode() instanceof Builtins::Str ) else result = inferType(super.getReceiver(), path) } diff --git a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected index 4186b084133..f588371ed43 100644 --- a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected +++ b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected @@ -962,6 +962,8 @@ readStep | main.rs:442:25:442:29 | names | file://:0:0:0:0 | element | main.rs:442:9:442:20 | TuplePat | | main.rs:444:41:444:67 | [post] \|...\| ... | main.rs:441:9:441:20 | captured default_name | main.rs:444:41:444:67 | [post] default_name | | main.rs:444:44:444:55 | this | main.rs:441:9:441:20 | captured default_name | main.rs:444:44:444:55 | default_name | +| main.rs:469:13:469:13 | [post] receiver for b | file://:0:0:0:0 | &ref | main.rs:469:13:469:13 | [post] b | +| main.rs:470:19:470:19 | [post] receiver for b | file://:0:0:0:0 | &ref | main.rs:470:19:470:19 | [post] b | | main.rs:481:10:481:11 | vs | file://:0:0:0:0 | element | main.rs:481:10:481:14 | vs[0] | | main.rs:482:11:482:35 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:482:10:482:35 | * ... | | main.rs:483:11:483:35 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:483:10:483:35 | * ... | @@ -1058,6 +1060,8 @@ storeStep | main.rs:429:30:429:30 | 3 | file://:0:0:0:0 | element | main.rs:429:23:429:31 | [...] | | main.rs:432:18:432:27 | source(...) | file://:0:0:0:0 | element | main.rs:432:5:432:11 | [post] mut_arr | | main.rs:444:41:444:67 | default_name | main.rs:441:9:441:20 | captured default_name | main.rs:444:41:444:67 | \|...\| ... | +| main.rs:469:13:469:13 | b | file://:0:0:0:0 | &ref | main.rs:469:13:469:13 | receiver for b | +| main.rs:470:19:470:19 | b | file://:0:0:0:0 | &ref | main.rs:470:19:470:19 | receiver for b | | main.rs:479:15:479:24 | source(...) | file://:0:0:0:0 | element | main.rs:479:14:479:34 | [...] | | main.rs:479:27:479:27 | 2 | file://:0:0:0:0 | element | main.rs:479:14:479:34 | [...] | | main.rs:479:30:479:30 | 3 | file://:0:0:0:0 | element | main.rs:479:14:479:34 | [...] | diff --git a/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected index 4433a59fff1..ff85ec81529 100644 --- a/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected @@ -13,6 +13,10 @@ multipleMethodCallTargets | test_futures_io.rs:92:26:92:63 | pinned.poll_read(...) | file://:0:0:0:0 | fn poll_read | | test_futures_io.rs:115:22:115:50 | pinned.poll_fill_buf(...) | file://:0:0:0:0 | fn poll_fill_buf | | test_futures_io.rs:115:22:115:50 | pinned.poll_fill_buf(...) | file://:0:0:0:0 | fn poll_fill_buf | +| web_frameworks.rs:88:14:88:23 | a.as_str() | file://:0:0:0:0 | fn as_str | +| web_frameworks.rs:88:14:88:23 | a.as_str() | file://:0:0:0:0 | fn as_str | +| web_frameworks.rs:89:14:89:25 | a.as_bytes() | file://:0:0:0:0 | fn as_bytes | +| web_frameworks.rs:89:14:89:25 | a.as_bytes() | file://:0:0:0:0 | fn as_bytes | multiplePathResolutions | test.rs:112:62:112:73 | ...::from | file://:0:0:0:0 | fn from | | test.rs:112:62:112:73 | ...::from | file://:0:0:0:0 | fn from | diff --git a/rust/ql/test/library-tests/dataflow/strings/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/strings/CONSISTENCY/PathResolutionConsistency.expected index 090ecfe601c..66f86daf985 100644 --- a/rust/ql/test/library-tests/dataflow/strings/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/dataflow/strings/CONSISTENCY/PathResolutionConsistency.expected @@ -1,3 +1,6 @@ +multipleMethodCallTargets +| main.rs:64:16:64:25 | s.as_str() | file://:0:0:0:0 | fn as_str | +| main.rs:64:16:64:25 | s.as_str() | file://:0:0:0:0 | fn as_str | multiplePathResolutions | main.rs:52:11:52:22 | ...::from | file://:0:0:0:0 | fn from | | main.rs:52:11:52:22 | ...::from | file://:0:0:0:0 | fn from | diff --git a/rust/ql/test/library-tests/sensitivedata/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/sensitivedata/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 00000000000..705ab1fefbc --- /dev/null +++ b/rust/ql/test/library-tests/sensitivedata/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,53 @@ +multipleMethodCallTargets +| test.rs:55:7:55:26 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:55:7:55:26 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:56:7:56:21 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:56:7:56:21 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:72:7:72:26 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:72:7:72:26 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:73:7:73:36 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:73:7:73:36 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:74:7:74:34 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:74:7:74:34 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:75:7:75:27 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:75:7:75:27 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:254:7:254:36 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:254:7:254:36 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:256:7:256:33 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:256:7:256:33 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:257:7:257:36 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:257:7:257:36 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:258:7:258:26 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:258:7:258:26 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:262:7:262:28 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:262:7:262:28 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:263:7:263:37 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:263:7:263:37 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:264:7:264:36 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:264:7:264:36 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:267:7:267:32 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:267:7:267:32 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:277:7:277:34 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:277:7:277:34 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:280:7:280:36 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:280:7:280:36 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:284:7:284:39 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:284:7:284:39 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:291:7:291:53 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:291:7:291:53 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:292:7:292:45 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:292:7:292:45 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:294:7:294:39 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:294:7:294:39 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:295:7:295:34 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:295:7:295:34 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:296:7:296:42 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:296:7:296:42 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:298:7:298:48 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:298:7:298:48 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:299:7:299:35 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:299:7:299:35 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:300:7:300:35 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:300:7:300:35 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:339:7:339:39 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test.rs:339:7:339:39 | ... .as_str() | file://:0:0:0:0 | fn as_str | diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index dd741ded5d1..87bd3b035b8 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -1109,9 +1109,9 @@ mod method_call_type_conversion { println!("{:?}", x7); let x9 : String = "Hello".to_string(); // $ type=x9:String - // Implicit `String` -> `str` conversion happense via the `Deref` trait: + // Implicit `String` -> `str` conversion happens via the `Deref` trait: // https://doc.rust-lang.org/std/string/struct.String.html#deref. - let u = x9.parse::(); // $ MISSING: method=parse type=u:T.u32 + let u = x9.parse::(); // $ method=parse type=u:T.u32 } } diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index f5e0989d6fa..f97a93d3248 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -1413,7 +1413,11 @@ inferType | main.rs:1111:13:1111:14 | x9 | | {EXTERNAL LOCATION} | String | | main.rs:1111:27:1111:33 | "Hello" | | {EXTERNAL LOCATION} | str | | main.rs:1111:27:1111:45 | "Hello".to_string() | | {EXTERNAL LOCATION} | String | +| main.rs:1114:13:1114:13 | u | | {EXTERNAL LOCATION} | Result | +| main.rs:1114:13:1114:13 | u | T | {EXTERNAL LOCATION} | u32 | | main.rs:1114:17:1114:18 | x9 | | {EXTERNAL LOCATION} | String | +| main.rs:1114:17:1114:33 | x9.parse() | | {EXTERNAL LOCATION} | Result | +| main.rs:1114:17:1114:33 | x9.parse() | T | {EXTERNAL LOCATION} | u32 | | main.rs:1121:16:1121:20 | SelfParam | | file://:0:0:0:0 | & | | main.rs:1121:16:1121:20 | SelfParam | &T | main.rs:1119:5:1127:5 | Self [trait MyTrait] | | main.rs:1124:16:1124:20 | SelfParam | | file://:0:0:0:0 | & | diff --git a/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/PathResolutionConsistency.expected index 3156d05ef17..598e52f932c 100644 --- a/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/PathResolutionConsistency.expected @@ -1,3 +1,92 @@ +multipleMethodCallTargets +| sqlx.rs:64:26:64:46 | safe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:64:26:64:46 | safe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:65:26:65:46 | safe_query_2.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:65:26:65:46 | safe_query_2.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:67:26:67:48 | unsafe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:67:26:67:48 | unsafe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:69:30:69:52 | unsafe_query_2.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:69:30:69:52 | unsafe_query_2.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:70:30:70:52 | unsafe_query_3.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:70:30:70:52 | unsafe_query_3.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:75:25:75:45 | safe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:75:25:75:45 | safe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:76:25:76:45 | safe_query_2.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:76:25:76:45 | safe_query_2.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:84:25:84:49 | prepared_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:84:25:84:49 | prepared_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:85:25:85:49 | prepared_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:85:25:85:49 | prepared_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:87:29:87:53 | prepared_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:87:29:87:53 | prepared_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:88:29:88:53 | prepared_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:88:29:88:53 | prepared_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:106:26:106:46 | safe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:106:26:106:46 | safe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:108:30:108:52 | unsafe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:108:30:108:52 | unsafe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:111:27:111:47 | safe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:111:27:111:47 | safe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:117:25:117:45 | safe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:117:25:117:45 | safe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:118:25:118:49 | prepared_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:118:25:118:49 | prepared_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:121:29:121:53 | prepared_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:121:29:121:53 | prepared_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:124:25:124:45 | safe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:124:25:124:45 | safe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:125:25:125:49 | prepared_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:125:25:125:49 | prepared_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:128:29:128:53 | prepared_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:128:29:128:53 | prepared_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:131:54:131:74 | safe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:131:54:131:74 | safe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:133:54:133:78 | prepared_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:133:54:133:78 | prepared_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:137:55:137:79 | prepared_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:137:55:137:79 | prepared_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:140:54:140:74 | safe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:140:54:140:74 | safe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:142:54:142:78 | prepared_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:142:54:142:78 | prepared_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:146:55:146:79 | prepared_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:146:55:146:79 | prepared_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:149:25:149:45 | safe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:149:25:149:45 | safe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:150:25:150:49 | prepared_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:150:25:150:49 | prepared_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:154:29:154:53 | prepared_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:154:29:154:53 | prepared_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:179:26:179:46 | safe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:179:26:179:46 | safe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:181:30:181:52 | unsafe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:181:30:181:52 | unsafe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:185:25:185:45 | safe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:185:25:185:45 | safe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:186:25:186:49 | prepared_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:186:25:186:49 | prepared_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:189:29:189:53 | prepared_query_1.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:189:29:189:53 | prepared_query_1.as_str() | file://:0:0:0:0 | fn as_str | multiplePathResolutions | sqlx.rs:46:24:46:35 | ...::from | file://:0:0:0:0 | fn from | | sqlx.rs:46:24:46:35 | ...::from | file://:0:0:0:0 | fn from | diff --git a/rust/ql/test/query-tests/security/CWE-312/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-312/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 00000000000..36e75877d2b --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-312/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,7 @@ +multipleMethodCallTargets +| test_logging.rs:77:20:77:36 | password.as_str() | file://:0:0:0:0 | fn as_str | +| test_logging.rs:77:20:77:36 | password.as_str() | file://:0:0:0:0 | fn as_str | +| test_logging.rs:78:22:78:38 | password.as_str() | file://:0:0:0:0 | fn as_str | +| test_logging.rs:78:22:78:38 | password.as_str() | file://:0:0:0:0 | fn as_str | +| test_logging.rs:88:18:88:34 | password.as_str() | file://:0:0:0:0 | fn as_str | +| test_logging.rs:88:18:88:34 | password.as_str() | file://:0:0:0:0 | fn as_str | From ff9ac3bb6f765b9bb5b037034f5f619ce57f360a Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Fri, 13 Jun 2025 11:56:12 +0200 Subject: [PATCH 056/150] Rust: accept test changes --- .../UncontrolledAllocationSize.expected | 228 ++++++++++-------- .../test/query-tests/security/CWE-770/main.rs | 2 +- 2 files changed, 126 insertions(+), 104 deletions(-) diff --git a/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected b/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected index 3368ab3ad21..4294bff6c08 100644 --- a/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected +++ b/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected @@ -37,14 +37,20 @@ | main.rs:194:32:194:43 | alloc_zeroed | main.rs:317:13:317:26 | ...::args | main.rs:194:32:194:43 | alloc_zeroed | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:194:32:194:43 | alloc_zeroed | main.rs:317:13:317:26 | ...::args | main.rs:194:32:194:43 | alloc_zeroed | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:195:32:195:39 | allocate | main.rs:317:13:317:26 | ...::args | main.rs:195:32:195:39 | allocate | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | +| main.rs:195:32:195:39 | allocate | main.rs:317:13:317:26 | ...::args | main.rs:195:32:195:39 | allocate | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | +| main.rs:196:32:196:46 | allocate_zeroed | main.rs:317:13:317:26 | ...::args | main.rs:196:32:196:46 | allocate_zeroed | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:196:32:196:46 | allocate_zeroed | main.rs:317:13:317:26 | ...::args | main.rs:196:32:196:46 | allocate_zeroed | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:197:32:197:39 | allocate | main.rs:317:13:317:26 | ...::args | main.rs:197:32:197:39 | allocate | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:197:32:197:39 | allocate | main.rs:317:13:317:26 | ...::args | main.rs:197:32:197:39 | allocate | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:198:32:198:46 | allocate_zeroed | main.rs:317:13:317:26 | ...::args | main.rs:198:32:198:46 | allocate_zeroed | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:198:32:198:46 | allocate_zeroed | main.rs:317:13:317:26 | ...::args | main.rs:198:32:198:46 | allocate_zeroed | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:202:32:202:38 | realloc | main.rs:317:13:317:26 | ...::args | main.rs:202:32:202:38 | realloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | +| main.rs:202:32:202:38 | realloc | main.rs:317:13:317:26 | ...::args | main.rs:202:32:202:38 | realloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | +| main.rs:208:40:208:43 | grow | main.rs:317:13:317:26 | ...::args | main.rs:208:40:208:43 | grow | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:208:40:208:43 | grow | main.rs:317:13:317:26 | ...::args | main.rs:208:40:208:43 | grow | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:210:40:210:50 | grow_zeroed | main.rs:317:13:317:26 | ...::args | main.rs:210:40:210:50 | grow_zeroed | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | +| main.rs:210:40:210:50 | grow_zeroed | main.rs:317:13:317:26 | ...::args | main.rs:210:40:210:50 | grow_zeroed | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | +| main.rs:213:36:213:41 | shrink | main.rs:317:13:317:26 | ...::args | main.rs:213:36:213:41 | shrink | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:219:13:219:24 | ...::malloc | main.rs:317:13:317:26 | ...::args | main.rs:219:13:219:24 | ...::malloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:220:13:220:31 | ...::aligned_alloc | main.rs:317:13:317:26 | ...::args | main.rs:220:13:220:31 | ...::aligned_alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:222:13:222:24 | ...::calloc | main.rs:317:13:317:26 | ...::args | main.rs:222:13:222:24 | ...::calloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | @@ -59,40 +65,40 @@ edges | main.rs:18:41:18:41 | v | main.rs:32:60:32:89 | ... * ... | provenance | | | main.rs:18:41:18:41 | v | main.rs:35:9:35:10 | s6 | provenance | | | main.rs:20:9:20:10 | l2 | main.rs:21:31:21:32 | l2 | provenance | | -| main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | main.rs:20:14:20:63 | ... .unwrap() | provenance | MaD:36 | +| main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | main.rs:20:14:20:63 | ... .unwrap() | provenance | MaD:38 | | main.rs:20:14:20:63 | ... .unwrap() | main.rs:20:9:20:10 | l2 | provenance | | -| main.rs:20:50:20:50 | v | main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | provenance | MaD:26 | +| main.rs:20:50:20:50 | v | main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | provenance | MaD:28 | | main.rs:21:31:21:32 | l2 | main.rs:21:13:21:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | -| main.rs:21:31:21:32 | l2 | main.rs:22:31:22:44 | l2.align_to(...) [Ok] | provenance | MaD:20 | -| main.rs:21:31:21:32 | l2 | main.rs:23:31:23:44 | l2.align_to(...) [Ok] | provenance | MaD:20 | +| main.rs:21:31:21:32 | l2 | main.rs:22:31:22:44 | l2.align_to(...) [Ok] | provenance | MaD:22 | +| main.rs:21:31:21:32 | l2 | main.rs:23:31:23:44 | l2.align_to(...) [Ok] | provenance | MaD:22 | | main.rs:21:31:21:32 | l2 | main.rs:24:38:24:39 | l2 | provenance | | -| main.rs:22:31:22:44 | l2.align_to(...) [Ok] | main.rs:22:31:22:53 | ... .unwrap() | provenance | MaD:36 | +| main.rs:22:31:22:44 | l2.align_to(...) [Ok] | main.rs:22:31:22:53 | ... .unwrap() | provenance | MaD:38 | | main.rs:22:31:22:53 | ... .unwrap() | main.rs:22:13:22:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | -| main.rs:23:31:23:44 | l2.align_to(...) [Ok] | main.rs:23:31:23:53 | ... .unwrap() | provenance | MaD:36 | -| main.rs:23:31:23:53 | ... .unwrap() | main.rs:23:31:23:68 | ... .pad_to_align() | provenance | MaD:29 | +| main.rs:23:31:23:44 | l2.align_to(...) [Ok] | main.rs:23:31:23:53 | ... .unwrap() | provenance | MaD:38 | +| main.rs:23:31:23:53 | ... .unwrap() | main.rs:23:31:23:68 | ... .pad_to_align() | provenance | MaD:31 | | main.rs:23:31:23:68 | ... .pad_to_align() | main.rs:23:13:23:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:24:38:24:39 | l2 | main.rs:24:13:24:36 | ...::alloc_zeroed | provenance | MaD:4 Sink:MaD:4 | | main.rs:29:9:29:10 | l4 | main.rs:30:31:30:32 | l4 | provenance | | | main.rs:29:14:29:64 | ...::from_size_align_unchecked(...) | main.rs:29:9:29:10 | l4 | provenance | | -| main.rs:29:60:29:60 | v | main.rs:29:14:29:64 | ...::from_size_align_unchecked(...) | provenance | MaD:28 | +| main.rs:29:60:29:60 | v | main.rs:29:14:29:64 | ...::from_size_align_unchecked(...) | provenance | MaD:30 | | main.rs:30:31:30:32 | l4 | main.rs:30:13:30:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:32:9:32:10 | l5 | main.rs:33:31:33:32 | l5 | provenance | | | main.rs:32:14:32:118 | ...::from_size_align_unchecked(...) | main.rs:32:9:32:10 | l5 | provenance | | -| main.rs:32:60:32:89 | ... * ... | main.rs:32:14:32:118 | ...::from_size_align_unchecked(...) | provenance | MaD:28 | +| main.rs:32:60:32:89 | ... * ... | main.rs:32:14:32:118 | ...::from_size_align_unchecked(...) | provenance | MaD:30 | | main.rs:33:31:33:32 | l5 | main.rs:33:13:33:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:35:9:35:10 | s6 | main.rs:36:60:36:61 | s6 | provenance | | | main.rs:36:9:36:10 | l6 | main.rs:37:31:37:32 | l6 | provenance | | | main.rs:36:9:36:10 | l6 [Layout.size] | main.rs:37:31:37:32 | l6 [Layout.size] | provenance | | | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) | main.rs:36:9:36:10 | l6 | provenance | | | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) [Layout.size] | main.rs:36:9:36:10 | l6 [Layout.size] | provenance | | -| main.rs:36:60:36:61 | s6 | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) | provenance | MaD:28 | -| main.rs:36:60:36:61 | s6 | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) [Layout.size] | provenance | MaD:27 | +| main.rs:36:60:36:61 | s6 | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) | provenance | MaD:30 | +| main.rs:36:60:36:61 | s6 | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) [Layout.size] | provenance | MaD:29 | | main.rs:37:31:37:32 | l6 | main.rs:37:13:37:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | -| main.rs:37:31:37:32 | l6 | main.rs:39:60:39:68 | l6.size() | provenance | MaD:33 | -| main.rs:37:31:37:32 | l6 [Layout.size] | main.rs:39:60:39:68 | l6.size() | provenance | MaD:32 | +| main.rs:37:31:37:32 | l6 | main.rs:39:60:39:68 | l6.size() | provenance | MaD:35 | +| main.rs:37:31:37:32 | l6 [Layout.size] | main.rs:39:60:39:68 | l6.size() | provenance | MaD:34 | | main.rs:39:9:39:10 | l7 | main.rs:40:31:40:32 | l7 | provenance | | | main.rs:39:14:39:72 | ...::from_size_align_unchecked(...) | main.rs:39:9:39:10 | l7 | provenance | | -| main.rs:39:60:39:68 | l6.size() | main.rs:39:14:39:72 | ...::from_size_align_unchecked(...) | provenance | MaD:28 | +| main.rs:39:60:39:68 | l6.size() | main.rs:39:14:39:72 | ...::from_size_align_unchecked(...) | provenance | MaD:30 | | main.rs:40:31:40:32 | l7 | main.rs:40:13:40:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:43:44:43:51 | ...: usize | main.rs:50:41:50:41 | v | provenance | | | main.rs:43:44:43:51 | ...: usize | main.rs:51:41:51:45 | ... + ... | provenance | | @@ -100,56 +106,56 @@ edges | main.rs:43:44:43:51 | ...: usize | main.rs:54:48:54:53 | ... * ... | provenance | | | main.rs:43:44:43:51 | ...: usize | main.rs:58:34:58:34 | v | provenance | | | main.rs:43:44:43:51 | ...: usize | main.rs:67:46:67:46 | v | provenance | | -| main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | main.rs:50:31:50:51 | ... .unwrap() [tuple.0] | provenance | MaD:36 | +| main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | main.rs:50:31:50:51 | ... .unwrap() [tuple.0] | provenance | MaD:38 | | main.rs:50:31:50:51 | ... .unwrap() [tuple.0] | main.rs:50:31:50:53 | ... .0 | provenance | | | main.rs:50:31:50:53 | ... .0 | main.rs:50:13:50:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | -| main.rs:50:41:50:41 | v | main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:30 | -| main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | main.rs:51:31:51:55 | ... .unwrap() [tuple.0] | provenance | MaD:36 | +| main.rs:50:41:50:41 | v | main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:32 | +| main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | main.rs:51:31:51:55 | ... .unwrap() [tuple.0] | provenance | MaD:38 | | main.rs:51:31:51:55 | ... .unwrap() [tuple.0] | main.rs:51:31:51:57 | ... .0 | provenance | | | main.rs:51:31:51:57 | ... .0 | main.rs:51:13:51:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | -| main.rs:51:41:51:45 | ... + ... | main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:30 | -| main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | main.rs:53:31:53:58 | ... .unwrap() | provenance | MaD:36 | +| main.rs:51:41:51:45 | ... + ... | main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:32 | +| main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | main.rs:53:31:53:58 | ... .unwrap() | provenance | MaD:38 | | main.rs:53:31:53:58 | ... .unwrap() | main.rs:53:13:53:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | -| main.rs:53:48:53:48 | v | main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | provenance | MaD:31 | -| main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | main.rs:54:31:54:63 | ... .unwrap() | provenance | MaD:36 | +| main.rs:53:48:53:48 | v | main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | provenance | MaD:33 | +| main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | main.rs:54:31:54:63 | ... .unwrap() | provenance | MaD:38 | | main.rs:54:31:54:63 | ... .unwrap() | main.rs:54:13:54:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | -| main.rs:54:48:54:53 | ... * ... | main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | provenance | MaD:31 | +| main.rs:54:48:54:53 | ... * ... | main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | provenance | MaD:33 | | main.rs:58:9:58:20 | TuplePat [tuple.0] | main.rs:58:10:58:11 | k1 | provenance | | | main.rs:58:10:58:11 | k1 | main.rs:59:31:59:32 | k1 | provenance | | -| main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | main.rs:58:24:58:66 | ... .expect(...) [tuple.0] | provenance | MaD:35 | +| main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | main.rs:58:24:58:66 | ... .expect(...) [tuple.0] | provenance | MaD:37 | | main.rs:58:24:58:66 | ... .expect(...) [tuple.0] | main.rs:58:9:58:20 | TuplePat [tuple.0] | provenance | | -| main.rs:58:34:58:34 | v | main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | provenance | MaD:30 | +| main.rs:58:34:58:34 | v | main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | provenance | MaD:32 | | main.rs:59:31:59:32 | k1 | main.rs:59:13:59:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:59:31:59:32 | k1 | main.rs:60:34:60:35 | k1 | provenance | | -| main.rs:59:31:59:32 | k1 | main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | provenance | MaD:23 | +| main.rs:59:31:59:32 | k1 | main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | provenance | MaD:25 | | main.rs:59:31:59:32 | k1 | main.rs:64:48:64:49 | k1 | provenance | | -| main.rs:59:31:59:32 | k1 | main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | provenance | MaD:25 | +| main.rs:59:31:59:32 | k1 | main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | provenance | MaD:27 | | main.rs:60:9:60:20 | TuplePat [tuple.0] | main.rs:60:10:60:11 | k2 | provenance | | | main.rs:60:10:60:11 | k2 | main.rs:61:31:61:32 | k2 | provenance | | -| main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | main.rs:60:24:60:45 | ... .unwrap() [tuple.0] | provenance | MaD:36 | +| main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | main.rs:60:24:60:45 | ... .unwrap() [tuple.0] | provenance | MaD:38 | | main.rs:60:24:60:45 | ... .unwrap() [tuple.0] | main.rs:60:9:60:20 | TuplePat [tuple.0] | provenance | | -| main.rs:60:34:60:35 | k1 | main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | provenance | MaD:22 | +| main.rs:60:34:60:35 | k1 | main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | provenance | MaD:24 | | main.rs:61:31:61:32 | k2 | main.rs:61:13:61:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:62:9:62:20 | TuplePat [tuple.0] | main.rs:62:10:62:11 | k3 | provenance | | | main.rs:62:10:62:11 | k3 | main.rs:63:31:63:32 | k3 | provenance | | -| main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | main.rs:62:24:62:45 | ... .unwrap() [tuple.0] | provenance | MaD:36 | +| main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | main.rs:62:24:62:45 | ... .unwrap() [tuple.0] | provenance | MaD:38 | | main.rs:62:24:62:45 | ... .unwrap() [tuple.0] | main.rs:62:9:62:20 | TuplePat [tuple.0] | provenance | | | main.rs:63:31:63:32 | k3 | main.rs:63:13:63:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | -| main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | main.rs:64:31:64:59 | ... .unwrap() | provenance | MaD:36 | +| main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | main.rs:64:31:64:59 | ... .unwrap() | provenance | MaD:38 | | main.rs:64:31:64:59 | ... .unwrap() | main.rs:64:13:64:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | -| main.rs:64:48:64:49 | k1 | main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | provenance | MaD:24 | -| main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | main.rs:65:31:65:59 | ... .unwrap() | provenance | MaD:36 | +| main.rs:64:48:64:49 | k1 | main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | provenance | MaD:26 | +| main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | main.rs:65:31:65:59 | ... .unwrap() | provenance | MaD:38 | | main.rs:65:31:65:59 | ... .unwrap() | main.rs:65:13:65:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:67:9:67:10 | l4 | main.rs:68:31:68:32 | l4 | provenance | | -| main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | main.rs:67:14:67:56 | ... .unwrap() | provenance | MaD:36 | +| main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | main.rs:67:14:67:56 | ... .unwrap() | provenance | MaD:38 | | main.rs:67:14:67:56 | ... .unwrap() | main.rs:67:9:67:10 | l4 | provenance | | -| main.rs:67:46:67:46 | v | main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | provenance | MaD:21 | +| main.rs:67:46:67:46 | v | main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | provenance | MaD:23 | | main.rs:68:31:68:32 | l4 | main.rs:68:13:68:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:86:35:86:42 | ...: usize | main.rs:87:54:87:54 | v | provenance | | | main.rs:87:9:87:14 | layout | main.rs:88:31:88:36 | layout | provenance | | -| main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | main.rs:87:18:87:67 | ... .unwrap() | provenance | MaD:36 | +| main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | main.rs:87:18:87:67 | ... .unwrap() | provenance | MaD:38 | | main.rs:87:18:87:67 | ... .unwrap() | main.rs:87:9:87:14 | layout | provenance | | -| main.rs:87:54:87:54 | v | main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | provenance | MaD:26 | +| main.rs:87:54:87:54 | v | main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | provenance | MaD:28 | | main.rs:88:31:88:36 | layout | main.rs:88:13:88:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:91:38:91:45 | ...: usize | main.rs:92:47:92:47 | v | provenance | | | main.rs:91:38:91:45 | ...: usize | main.rs:101:51:101:51 | v | provenance | | @@ -160,16 +166,16 @@ edges | main.rs:91:38:91:45 | ...: usize | main.rs:161:55:161:55 | v | provenance | | | main.rs:92:9:92:10 | l1 | main.rs:96:35:96:36 | l1 | provenance | | | main.rs:92:9:92:10 | l1 | main.rs:102:35:102:36 | l1 | provenance | | -| main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | main.rs:92:14:92:57 | ... .unwrap() | provenance | MaD:36 | +| main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | main.rs:92:14:92:57 | ... .unwrap() | provenance | MaD:38 | | main.rs:92:14:92:57 | ... .unwrap() | main.rs:92:9:92:10 | l1 | provenance | | -| main.rs:92:47:92:47 | v | main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | provenance | MaD:21 | +| main.rs:92:47:92:47 | v | main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | provenance | MaD:23 | | main.rs:96:35:96:36 | l1 | main.rs:96:17:96:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:96:35:96:36 | l1 | main.rs:109:35:109:36 | l1 | provenance | | | main.rs:96:35:96:36 | l1 | main.rs:111:35:111:36 | l1 | provenance | | | main.rs:101:13:101:14 | l3 | main.rs:103:35:103:36 | l3 | provenance | | -| main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | main.rs:101:18:101:61 | ... .unwrap() | provenance | MaD:36 | +| main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | main.rs:101:18:101:61 | ... .unwrap() | provenance | MaD:38 | | main.rs:101:18:101:61 | ... .unwrap() | main.rs:101:13:101:14 | l3 | provenance | | -| main.rs:101:51:101:51 | v | main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | provenance | MaD:21 | +| main.rs:101:51:101:51 | v | main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | provenance | MaD:23 | | main.rs:102:35:102:36 | l1 | main.rs:102:17:102:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:102:35:102:36 | l1 | main.rs:109:35:109:36 | l1 | provenance | | | main.rs:102:35:102:36 | l1 | main.rs:111:35:111:36 | l1 | provenance | | @@ -180,28 +186,28 @@ edges | main.rs:111:35:111:36 | l1 | main.rs:111:17:111:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:111:35:111:36 | l1 | main.rs:146:35:146:36 | l1 | provenance | | | main.rs:145:13:145:14 | l9 | main.rs:148:35:148:36 | l9 | provenance | | -| main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | main.rs:145:18:145:61 | ... .unwrap() | provenance | MaD:36 | +| main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | main.rs:145:18:145:61 | ... .unwrap() | provenance | MaD:38 | | main.rs:145:18:145:61 | ... .unwrap() | main.rs:145:13:145:14 | l9 | provenance | | -| main.rs:145:51:145:51 | v | main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | provenance | MaD:21 | +| main.rs:145:51:145:51 | v | main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | provenance | MaD:23 | | main.rs:146:35:146:36 | l1 | main.rs:146:17:146:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:146:35:146:36 | l1 | main.rs:177:31:177:32 | l1 | provenance | | | main.rs:148:35:148:36 | l9 | main.rs:148:17:148:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:151:9:151:11 | l10 | main.rs:152:31:152:33 | l10 | provenance | | -| main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | main.rs:151:15:151:78 | ... .unwrap() | provenance | MaD:36 | +| main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | main.rs:151:15:151:78 | ... .unwrap() | provenance | MaD:38 | | main.rs:151:15:151:78 | ... .unwrap() | main.rs:151:9:151:11 | l10 | provenance | | -| main.rs:151:48:151:68 | ...::min(...) | main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | provenance | MaD:21 | -| main.rs:151:62:151:62 | v | main.rs:151:48:151:68 | ...::min(...) | provenance | MaD:39 | +| main.rs:151:48:151:68 | ...::min(...) | main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | provenance | MaD:23 | +| main.rs:151:62:151:62 | v | main.rs:151:48:151:68 | ...::min(...) | provenance | MaD:41 | | main.rs:152:31:152:33 | l10 | main.rs:152:13:152:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:154:9:154:11 | l11 | main.rs:155:31:155:33 | l11 | provenance | | -| main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | main.rs:154:15:154:78 | ... .unwrap() | provenance | MaD:36 | +| main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | main.rs:154:15:154:78 | ... .unwrap() | provenance | MaD:38 | | main.rs:154:15:154:78 | ... .unwrap() | main.rs:154:9:154:11 | l11 | provenance | | -| main.rs:154:48:154:68 | ...::max(...) | main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | provenance | MaD:21 | -| main.rs:154:62:154:62 | v | main.rs:154:48:154:68 | ...::max(...) | provenance | MaD:38 | +| main.rs:154:48:154:68 | ...::max(...) | main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | provenance | MaD:23 | +| main.rs:154:62:154:62 | v | main.rs:154:48:154:68 | ...::max(...) | provenance | MaD:40 | | main.rs:155:31:155:33 | l11 | main.rs:155:13:155:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:161:13:161:15 | l13 | main.rs:162:35:162:37 | l13 | provenance | | -| main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | main.rs:161:19:161:68 | ... .unwrap() | provenance | MaD:36 | +| main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | main.rs:161:19:161:68 | ... .unwrap() | provenance | MaD:38 | | main.rs:161:19:161:68 | ... .unwrap() | main.rs:161:13:161:15 | l13 | provenance | | -| main.rs:161:55:161:55 | v | main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | provenance | MaD:26 | +| main.rs:161:55:161:55 | v | main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | provenance | MaD:28 | | main.rs:162:35:162:37 | l13 | main.rs:162:17:162:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:162:35:162:37 | l13 | main.rs:169:35:169:37 | l13 | provenance | | | main.rs:169:35:169:37 | l13 | main.rs:169:17:169:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | @@ -209,19 +215,21 @@ edges | main.rs:183:29:183:36 | ...: usize | main.rs:192:46:192:46 | v | provenance | | | main.rs:183:29:183:36 | ...: usize | main.rs:202:48:202:48 | v | provenance | | | main.rs:192:9:192:10 | l2 | main.rs:193:38:193:39 | l2 | provenance | | -| main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | main.rs:192:14:192:56 | ... .unwrap() | provenance | MaD:36 | +| main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | main.rs:192:14:192:56 | ... .unwrap() | provenance | MaD:38 | | main.rs:192:14:192:56 | ... .unwrap() | main.rs:192:9:192:10 | l2 | provenance | | -| main.rs:192:46:192:46 | v | main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | provenance | MaD:21 | -| main.rs:193:38:193:39 | l2 | main.rs:193:32:193:36 | alloc | provenance | MaD:10 Sink:MaD:10 | +| main.rs:192:46:192:46 | v | main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | provenance | MaD:23 | | main.rs:193:38:193:39 | l2 | main.rs:193:32:193:36 | alloc | provenance | MaD:11 Sink:MaD:11 | +| main.rs:193:38:193:39 | l2 | main.rs:193:32:193:36 | alloc | provenance | MaD:12 Sink:MaD:12 | | main.rs:193:38:193:39 | l2 | main.rs:194:45:194:46 | l2 | provenance | | -| main.rs:194:45:194:46 | l2 | main.rs:194:32:194:43 | alloc_zeroed | provenance | MaD:12 Sink:MaD:12 | -| main.rs:194:45:194:46 | l2 | main.rs:194:32:194:43 | alloc_zeroed | provenance | MaD:12 Sink:MaD:12 | | main.rs:194:45:194:46 | l2 | main.rs:194:32:194:43 | alloc_zeroed | provenance | MaD:13 Sink:MaD:13 | +| main.rs:194:45:194:46 | l2 | main.rs:194:32:194:43 | alloc_zeroed | provenance | MaD:13 Sink:MaD:13 | +| main.rs:194:45:194:46 | l2 | main.rs:194:32:194:43 | alloc_zeroed | provenance | MaD:14 Sink:MaD:14 | | main.rs:194:45:194:46 | l2 | main.rs:195:41:195:42 | l2 | provenance | | | main.rs:195:41:195:42 | l2 | main.rs:195:32:195:39 | allocate | provenance | MaD:6 Sink:MaD:6 | +| main.rs:195:41:195:42 | l2 | main.rs:195:32:195:39 | allocate | provenance | MaD:6 Sink:MaD:6 | | main.rs:195:41:195:42 | l2 | main.rs:196:48:196:49 | l2 | provenance | | | main.rs:196:48:196:49 | l2 | main.rs:196:32:196:46 | allocate_zeroed | provenance | MaD:7 Sink:MaD:7 | +| main.rs:196:48:196:49 | l2 | main.rs:196:32:196:46 | allocate_zeroed | provenance | MaD:7 Sink:MaD:7 | | main.rs:196:48:196:49 | l2 | main.rs:197:41:197:42 | l2 | provenance | | | main.rs:197:41:197:42 | l2 | main.rs:197:32:197:39 | allocate | provenance | MaD:1 Sink:MaD:1 | | main.rs:197:41:197:42 | l2 | main.rs:197:32:197:39 | allocate | provenance | MaD:1 Sink:MaD:1 | @@ -230,42 +238,47 @@ edges | main.rs:198:48:198:49 | l2 | main.rs:198:32:198:46 | allocate_zeroed | provenance | MaD:2 Sink:MaD:2 | | main.rs:198:48:198:49 | l2 | main.rs:208:53:208:54 | l2 | provenance | | | main.rs:198:48:198:49 | l2 | main.rs:210:60:210:61 | l2 | provenance | | -| main.rs:202:48:202:48 | v | main.rs:202:32:202:38 | realloc | provenance | MaD:14 Sink:MaD:14 | +| main.rs:198:48:198:49 | l2 | main.rs:213:51:213:52 | l2 | provenance | | +| main.rs:202:48:202:48 | v | main.rs:202:32:202:38 | realloc | provenance | MaD:15 Sink:MaD:15 | +| main.rs:202:48:202:48 | v | main.rs:202:32:202:38 | realloc | provenance | MaD:16 Sink:MaD:16 | +| main.rs:208:53:208:54 | l2 | main.rs:208:40:208:43 | grow | provenance | MaD:8 Sink:MaD:8 | | main.rs:208:53:208:54 | l2 | main.rs:208:40:208:43 | grow | provenance | MaD:8 Sink:MaD:8 | | main.rs:210:60:210:61 | l2 | main.rs:210:40:210:50 | grow_zeroed | provenance | MaD:9 Sink:MaD:9 | +| main.rs:210:60:210:61 | l2 | main.rs:210:40:210:50 | grow_zeroed | provenance | MaD:9 Sink:MaD:9 | +| main.rs:213:51:213:52 | l2 | main.rs:213:36:213:41 | shrink | provenance | MaD:10 Sink:MaD:10 | | main.rs:217:27:217:34 | ...: usize | main.rs:219:26:219:26 | v | provenance | | -| main.rs:219:26:219:26 | v | main.rs:219:13:219:24 | ...::malloc | provenance | MaD:17 Sink:MaD:17 | +| main.rs:219:26:219:26 | v | main.rs:219:13:219:24 | ...::malloc | provenance | MaD:19 Sink:MaD:19 | | main.rs:219:26:219:26 | v | main.rs:220:36:220:36 | v | provenance | | -| main.rs:220:36:220:36 | v | main.rs:220:13:220:31 | ...::aligned_alloc | provenance | MaD:15 Sink:MaD:15 | +| main.rs:220:36:220:36 | v | main.rs:220:13:220:31 | ...::aligned_alloc | provenance | MaD:17 Sink:MaD:17 | | main.rs:220:36:220:36 | v | main.rs:222:30:222:30 | v | provenance | | -| main.rs:222:30:222:30 | v | main.rs:222:13:222:24 | ...::calloc | provenance | MaD:16 Sink:MaD:16 | +| main.rs:222:30:222:30 | v | main.rs:222:13:222:24 | ...::calloc | provenance | MaD:18 Sink:MaD:18 | | main.rs:222:30:222:30 | v | main.rs:223:26:223:26 | v | provenance | | -| main.rs:223:26:223:26 | v | main.rs:223:13:223:24 | ...::calloc | provenance | MaD:16 Sink:MaD:16 | +| main.rs:223:26:223:26 | v | main.rs:223:13:223:24 | ...::calloc | provenance | MaD:18 Sink:MaD:18 | | main.rs:223:26:223:26 | v | main.rs:224:31:224:31 | v | provenance | | -| main.rs:224:31:224:31 | v | main.rs:224:13:224:25 | ...::realloc | provenance | MaD:18 Sink:MaD:18 | -| main.rs:279:24:279:41 | ...: String | main.rs:280:21:280:47 | user_input.parse() [Ok] | provenance | MaD:37 | +| main.rs:224:31:224:31 | v | main.rs:224:13:224:25 | ...::realloc | provenance | MaD:20 Sink:MaD:20 | +| main.rs:279:24:279:41 | ...: String | main.rs:280:21:280:47 | user_input.parse() [Ok] | provenance | MaD:39 | | main.rs:280:9:280:17 | num_bytes | main.rs:282:54:282:62 | num_bytes | provenance | | | main.rs:280:21:280:47 | user_input.parse() [Ok] | main.rs:280:21:280:48 | TryExpr | provenance | | | main.rs:280:21:280:48 | TryExpr | main.rs:280:9:280:17 | num_bytes | provenance | | | main.rs:282:9:282:14 | layout | main.rs:284:40:284:45 | layout | provenance | | -| main.rs:282:18:282:66 | ...::from_size_align(...) [Ok] | main.rs:282:18:282:75 | ... .unwrap() | provenance | MaD:36 | +| main.rs:282:18:282:66 | ...::from_size_align(...) [Ok] | main.rs:282:18:282:75 | ... .unwrap() | provenance | MaD:38 | | main.rs:282:18:282:75 | ... .unwrap() | main.rs:282:9:282:14 | layout | provenance | | -| main.rs:282:54:282:62 | num_bytes | main.rs:282:18:282:66 | ...::from_size_align(...) [Ok] | provenance | MaD:26 | +| main.rs:282:54:282:62 | num_bytes | main.rs:282:18:282:66 | ...::from_size_align(...) [Ok] | provenance | MaD:28 | | main.rs:284:40:284:45 | layout | main.rs:284:22:284:38 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | -| main.rs:308:25:308:38 | ...::args | main.rs:308:25:308:40 | ...::args(...) [element] | provenance | Src:MaD:19 | -| main.rs:308:25:308:40 | ...::args(...) [element] | main.rs:308:25:308:47 | ... .nth(...) [Some] | provenance | MaD:40 | -| main.rs:308:25:308:47 | ... .nth(...) [Some] | main.rs:308:25:308:74 | ... .unwrap_or(...) | provenance | MaD:34 | +| main.rs:308:25:308:38 | ...::args | main.rs:308:25:308:40 | ...::args(...) [element] | provenance | Src:MaD:21 | +| main.rs:308:25:308:40 | ...::args(...) [element] | main.rs:308:25:308:47 | ... .nth(...) [Some] | provenance | MaD:42 | +| main.rs:308:25:308:47 | ... .nth(...) [Some] | main.rs:308:25:308:74 | ... .unwrap_or(...) | provenance | MaD:36 | | main.rs:308:25:308:74 | ... .unwrap_or(...) | main.rs:279:24:279:41 | ...: String | provenance | | | main.rs:317:9:317:9 | v | main.rs:320:34:320:34 | v | provenance | | | main.rs:317:9:317:9 | v | main.rs:321:42:321:42 | v | provenance | | | main.rs:317:9:317:9 | v | main.rs:322:36:322:36 | v | provenance | | | main.rs:317:9:317:9 | v | main.rs:323:27:323:27 | v | provenance | | | main.rs:317:9:317:9 | v | main.rs:324:25:324:25 | v | provenance | | -| main.rs:317:13:317:26 | ...::args | main.rs:317:13:317:28 | ...::args(...) [element] | provenance | Src:MaD:19 | -| main.rs:317:13:317:28 | ...::args(...) [element] | main.rs:317:13:317:35 | ... .nth(...) [Some] | provenance | MaD:40 | -| main.rs:317:13:317:35 | ... .nth(...) [Some] | main.rs:317:13:317:65 | ... .unwrap_or(...) | provenance | MaD:34 | -| main.rs:317:13:317:65 | ... .unwrap_or(...) | main.rs:317:13:317:82 | ... .parse() [Ok] | provenance | MaD:37 | -| main.rs:317:13:317:82 | ... .parse() [Ok] | main.rs:317:13:317:91 | ... .unwrap() | provenance | MaD:36 | +| main.rs:317:13:317:26 | ...::args | main.rs:317:13:317:28 | ...::args(...) [element] | provenance | Src:MaD:21 | +| main.rs:317:13:317:28 | ...::args(...) [element] | main.rs:317:13:317:35 | ... .nth(...) [Some] | provenance | MaD:42 | +| main.rs:317:13:317:35 | ... .nth(...) [Some] | main.rs:317:13:317:65 | ... .unwrap_or(...) | provenance | MaD:36 | +| main.rs:317:13:317:65 | ... .unwrap_or(...) | main.rs:317:13:317:82 | ... .parse() [Ok] | provenance | MaD:39 | +| main.rs:317:13:317:82 | ... .parse() [Ok] | main.rs:317:13:317:91 | ... .unwrap() | provenance | MaD:38 | | main.rs:317:13:317:91 | ... .unwrap() | main.rs:317:9:317:9 | v | provenance | | | main.rs:320:34:320:34 | v | main.rs:12:36:12:43 | ...: usize | provenance | | | main.rs:321:42:321:42 | v | main.rs:43:44:43:51 | ...: usize | provenance | | @@ -282,37 +295,39 @@ models | 7 | Sink: lang:std; ::allocate_zeroed; alloc-layout; Argument[0] | | 8 | Sink: lang:std; ::grow; alloc-layout; Argument[2] | | 9 | Sink: lang:std; ::grow_zeroed; alloc-layout; Argument[2] | -| 10 | Sink: lang:std; ::alloc; alloc-layout; Argument[0] | -| 11 | Sink: lang:std; ::alloc; alloc-size; Argument[0] | -| 12 | Sink: lang:std; ::alloc_zeroed; alloc-layout; Argument[0] | -| 13 | Sink: lang:std; ::alloc_zeroed; alloc-size; Argument[0] | -| 14 | Sink: lang:std; ::realloc; alloc-size; Argument[2] | -| 15 | Sink: repo:https://github.com/rust-lang/libc:libc; ::aligned_alloc; alloc-size; Argument[1] | -| 16 | Sink: repo:https://github.com/rust-lang/libc:libc; ::calloc; alloc-size; Argument[0,1] | -| 17 | Sink: repo:https://github.com/rust-lang/libc:libc; ::malloc; alloc-size; Argument[0] | -| 18 | Sink: repo:https://github.com/rust-lang/libc:libc; ::realloc; alloc-size; Argument[1] | -| 19 | Source: lang:std; crate::env::args; commandargs; ReturnValue.Element | -| 20 | Summary: lang:core; ::align_to; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 21 | Summary: lang:core; ::array; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 22 | Summary: lang:core; ::extend; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | -| 23 | Summary: lang:core; ::extend; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | -| 24 | Summary: lang:core; ::extend_packed; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 25 | Summary: lang:core; ::extend_packed; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 26 | Summary: lang:core; ::from_size_align; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 27 | Summary: lang:core; ::from_size_align_unchecked; Argument[0]; ReturnValue.Field[core::alloc::layout::Layout::size]; value | -| 28 | Summary: lang:core; ::from_size_align_unchecked; Argument[0]; ReturnValue; taint | -| 29 | Summary: lang:core; ::pad_to_align; Argument[self]; ReturnValue; taint | -| 30 | Summary: lang:core; ::repeat; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | -| 31 | Summary: lang:core; ::repeat_packed; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 32 | Summary: lang:core; ::size; Argument[self].Field[core::alloc::layout::Layout::size]; ReturnValue; value | -| 33 | Summary: lang:core; ::size; Argument[self]; ReturnValue; taint | -| 34 | Summary: lang:core; ::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 35 | Summary: lang:core; ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 36 | Summary: lang:core; ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 37 | Summary: lang:core; ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 38 | Summary: lang:core; crate::cmp::max; Argument[0]; ReturnValue; value | -| 39 | Summary: lang:core; crate::cmp::min; Argument[0]; ReturnValue; value | -| 40 | Summary: lang:core; crate::iter::traits::iterator::Iterator::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | +| 10 | Sink: lang:std; ::shrink; alloc-layout; Argument[2] | +| 11 | Sink: lang:std; ::alloc; alloc-layout; Argument[0] | +| 12 | Sink: lang:std; ::alloc; alloc-size; Argument[0] | +| 13 | Sink: lang:std; ::alloc_zeroed; alloc-layout; Argument[0] | +| 14 | Sink: lang:std; ::alloc_zeroed; alloc-size; Argument[0] | +| 15 | Sink: lang:std; ::realloc; alloc-layout; Argument[2] | +| 16 | Sink: lang:std; ::realloc; alloc-size; Argument[2] | +| 17 | Sink: repo:https://github.com/rust-lang/libc:libc; ::aligned_alloc; alloc-size; Argument[1] | +| 18 | Sink: repo:https://github.com/rust-lang/libc:libc; ::calloc; alloc-size; Argument[0,1] | +| 19 | Sink: repo:https://github.com/rust-lang/libc:libc; ::malloc; alloc-size; Argument[0] | +| 20 | Sink: repo:https://github.com/rust-lang/libc:libc; ::realloc; alloc-size; Argument[1] | +| 21 | Source: lang:std; crate::env::args; commandargs; ReturnValue.Element | +| 22 | Summary: lang:core; ::align_to; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 23 | Summary: lang:core; ::array; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 24 | Summary: lang:core; ::extend; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | +| 25 | Summary: lang:core; ::extend; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | +| 26 | Summary: lang:core; ::extend_packed; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 27 | Summary: lang:core; ::extend_packed; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 28 | Summary: lang:core; ::from_size_align; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 29 | Summary: lang:core; ::from_size_align_unchecked; Argument[0]; ReturnValue.Field[core::alloc::layout::Layout::size]; value | +| 30 | Summary: lang:core; ::from_size_align_unchecked; Argument[0]; ReturnValue; taint | +| 31 | Summary: lang:core; ::pad_to_align; Argument[self]; ReturnValue; taint | +| 32 | Summary: lang:core; ::repeat; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | +| 33 | Summary: lang:core; ::repeat_packed; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 34 | Summary: lang:core; ::size; Argument[self].Field[core::alloc::layout::Layout::size]; ReturnValue; value | +| 35 | Summary: lang:core; ::size; Argument[self]; ReturnValue; taint | +| 36 | Summary: lang:core; ::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 37 | Summary: lang:core; ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 38 | Summary: lang:core; ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 39 | Summary: lang:core; ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 40 | Summary: lang:core; crate::cmp::max; Argument[0]; ReturnValue; value | +| 41 | Summary: lang:core; crate::cmp::min; Argument[0]; ReturnValue; value | +| 42 | Summary: lang:core; crate::iter::traits::iterator::Iterator::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | nodes | main.rs:12:36:12:43 | ...: usize | semmle.label | ...: usize | | main.rs:18:13:18:31 | ...::realloc | semmle.label | ...::realloc | @@ -480,8 +495,10 @@ nodes | main.rs:194:32:194:43 | alloc_zeroed | semmle.label | alloc_zeroed | | main.rs:194:45:194:46 | l2 | semmle.label | l2 | | main.rs:195:32:195:39 | allocate | semmle.label | allocate | +| main.rs:195:32:195:39 | allocate | semmle.label | allocate | | main.rs:195:41:195:42 | l2 | semmle.label | l2 | | main.rs:196:32:196:46 | allocate_zeroed | semmle.label | allocate_zeroed | +| main.rs:196:32:196:46 | allocate_zeroed | semmle.label | allocate_zeroed | | main.rs:196:48:196:49 | l2 | semmle.label | l2 | | main.rs:197:32:197:39 | allocate | semmle.label | allocate | | main.rs:197:32:197:39 | allocate | semmle.label | allocate | @@ -490,11 +507,16 @@ nodes | main.rs:198:32:198:46 | allocate_zeroed | semmle.label | allocate_zeroed | | main.rs:198:48:198:49 | l2 | semmle.label | l2 | | main.rs:202:32:202:38 | realloc | semmle.label | realloc | +| main.rs:202:32:202:38 | realloc | semmle.label | realloc | | main.rs:202:48:202:48 | v | semmle.label | v | | main.rs:208:40:208:43 | grow | semmle.label | grow | +| main.rs:208:40:208:43 | grow | semmle.label | grow | | main.rs:208:53:208:54 | l2 | semmle.label | l2 | | main.rs:210:40:210:50 | grow_zeroed | semmle.label | grow_zeroed | +| main.rs:210:40:210:50 | grow_zeroed | semmle.label | grow_zeroed | | main.rs:210:60:210:61 | l2 | semmle.label | l2 | +| main.rs:213:36:213:41 | shrink | semmle.label | shrink | +| main.rs:213:51:213:52 | l2 | semmle.label | l2 | | main.rs:217:27:217:34 | ...: usize | semmle.label | ...: usize | | main.rs:219:13:219:24 | ...::malloc | semmle.label | ...::malloc | | main.rs:219:26:219:26 | v | semmle.label | v | diff --git a/rust/ql/test/query-tests/security/CWE-770/main.rs b/rust/ql/test/query-tests/security/CWE-770/main.rs index 656a6aa23a6..2aafe931761 100644 --- a/rust/ql/test/query-tests/security/CWE-770/main.rs +++ b/rust/ql/test/query-tests/security/CWE-770/main.rs @@ -210,7 +210,7 @@ unsafe fn test_system_alloc(v: usize) { let _ = std::alloc::System.grow_zeroed(m4, l4, l2).unwrap(); // $ Alert[rust/uncontrolled-allocation-size]=arg1 } } else { - let _ = std::alloc::System.shrink(m4, l4, l2).unwrap(); + let _ = std::alloc::System.shrink(m4, l4, l2).unwrap(); // $ SPURIOUS: Alert[rust/uncontrolled-allocation-size]=arg1 - FP } } From b02d859216a622d989bafc00b1a66a8a7f0541c8 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Fri, 13 Jun 2025 10:56:19 +0100 Subject: [PATCH 057/150] C++: Add lots of MaD model generation targets. --- cpp/bulk_generation_targets.yml | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/cpp/bulk_generation_targets.yml b/cpp/bulk_generation_targets.yml index 0e42eac3765..dbcec7bf9dd 100644 --- a/cpp/bulk_generation_targets.yml +++ b/cpp/bulk_generation_targets.yml @@ -2,9 +2,30 @@ language: cpp strategy: dca destination: cpp/ql/lib/ext/generated targets: -- name: openssl +- name: zlib + with-sinks: false + with-sources: false +- name: brotli + with-sinks: false + with-sources: false +- name: libidn2 + with-sinks: false + with-sources: false +- name: libssh2 with-sinks: false with-sources: false - name: sqlite with-sinks: false with-sources: false +- name: openssl + with-sinks: false + with-sources: false +- name: nghttp2 + with-sinks: false + with-sources: false +- name: libuv + with-sinks: false + with-sources: false +- name: curl + with-sinks: false + with-sources: false From e72fe9b88b863d08a93bf89c2777e6394a7001b5 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Fri, 13 Jun 2025 10:57:44 +0100 Subject: [PATCH 058/150] C++: Generate lots of new models. --- .../lib/ext/generated/brotli/brotli.model.yml | 480 +++++++++ cpp/ql/lib/ext/generated/curl/curl.model.yml | 959 ++++++++++++++++++ .../ext/generated/libidn2/libidn2.model.yml | 148 +++ .../ext/generated/libssh2/libssh2.model.yml | 517 ++++++++++ .../lib/ext/generated/libuv/libuv.model.yml | 646 ++++++++++++ .../ext/generated/nghttp2/nghttp2.model.yml | 571 +++++++++++ cpp/ql/lib/ext/generated/zlib/zlib.model.yml | 168 +++ 7 files changed, 3489 insertions(+) create mode 100644 cpp/ql/lib/ext/generated/brotli/brotli.model.yml create mode 100644 cpp/ql/lib/ext/generated/curl/curl.model.yml create mode 100644 cpp/ql/lib/ext/generated/libidn2/libidn2.model.yml create mode 100644 cpp/ql/lib/ext/generated/libssh2/libssh2.model.yml create mode 100644 cpp/ql/lib/ext/generated/libuv/libuv.model.yml create mode 100644 cpp/ql/lib/ext/generated/nghttp2/nghttp2.model.yml create mode 100644 cpp/ql/lib/ext/generated/zlib/zlib.model.yml diff --git a/cpp/ql/lib/ext/generated/brotli/brotli.model.yml b/cpp/ql/lib/ext/generated/brotli/brotli.model.yml new file mode 100644 index 00000000000..49a1f947af0 --- /dev/null +++ b/cpp/ql/lib/ext/generated/brotli/brotli.model.yml @@ -0,0 +1,480 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/cpp-all + extensible: summaryModel + data: + - ["", "", True, "AttachPreparedDictionary", "(CompoundDictionary *,const PreparedDictionary *)", "", "Argument[1]", "Argument[*0].Field[**chunk_source]", "taint", "dfc-generated"] + - ["", "", True, "AttachPreparedDictionary", "(CompoundDictionary *,const PreparedDictionary *)", "", "Argument[1]", "Argument[*0].Field[*chunk_source]", "taint", "dfc-generated"] + - ["", "", True, "AttachPreparedDictionary", "(CompoundDictionary *,const PreparedDictionary *)", "", "Argument[1]", "Argument[*0].Field[*chunks]", "value", "dfc-generated"] + - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[*1]", "Argument[*0].Field[*total_count_]", "value", "dfc-generated"] + - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[*4]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[*4]", "Argument[*7]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[*6]", "Argument[*7]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[0]", "Argument[*0].Field[*index_left_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[0]", "Argument[*0].Field[*index_right_or_value_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[1]", "Argument[*0].Field[*total_count_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[4]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[4]", "Argument[*7]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[6]", "Argument[*7]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[7]", "Argument[*7]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildCodeLengthsHuffmanTable", "(HuffmanCode *,const uint8_t *const,uint16_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[*10]", "Argument[*11]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[*2].Field[**types]", "Argument[*11]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[*2].Field[*types]", "Argument[*11]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[*3].Field[**types]", "Argument[*12]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[*3].Field[*types]", "Argument[*12]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[*4].Field[**types]", "Argument[*13]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[*4].Field[*types]", "Argument[*13]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[*5]", "Argument[*11].Field[*data_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[*5]", "Argument[*11]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[10]", "Argument[*11]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[11]", "Argument[*11]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[12]", "Argument[*12]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[13]", "Argument[*13]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[5]", "Argument[*11].Field[*data_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[5]", "Argument[*11]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[6]", "Argument[*11].Field[*data_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[6]", "Argument[*11]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[7]", "Argument[*11].Field[*data_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[7]", "Argument[*11]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[8]", "Argument[*11]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[9]", "Argument[*11]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHuffmanTable", "(HuffmanCode *,int,const uint16_t *const,uint16_t *)", "", "Argument[*2]", "Argument[*0].Field[*value]", "value", "dfc-generated"] + - ["", "", True, "BrotliBuildHuffmanTable", "(HuffmanCode *,int,const uint16_t *const,uint16_t *)", "", "Argument[0]", "Argument[*0].Field[*value]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHuffmanTable", "(HuffmanCode *,int,const uint16_t *const,uint16_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHuffmanTable", "(HuffmanCode *,int,const uint16_t *const,uint16_t *)", "", "Argument[2]", "Argument[*0].Field[*value]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildHuffmanTable", "(HuffmanCode *,int,const uint16_t *const,uint16_t *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[*1]", "Argument[*10].Field[**literal_histograms].Field[*bit_cost_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[*1]", "Argument[*10].Field[**literal_histograms].Field[*data_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[*1]", "Argument[*10].Field[**literal_histograms]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[1]", "Argument[*10].Field[**literal_histograms].Field[*bit_cost_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[1]", "Argument[*10].Field[**literal_histograms].Field[*data_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[1]", "Argument[*10].Field[**literal_histograms]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[2]", "Argument[*10].Field[**literal_histograms].Field[*bit_cost_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[2]", "Argument[*10].Field[**literal_histograms].Field[*data_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[2]", "Argument[*10].Field[**literal_histograms]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[3]", "Argument[*10].Field[**literal_histograms].Field[*bit_cost_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[3]", "Argument[*10].Field[**literal_histograms].Field[*data_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[3]", "Argument[*10].Field[**literal_histograms]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[5]", "Argument[*10].Field[**literal_histograms]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[6]", "Argument[*10].Field[**literal_histograms]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[7]", "Argument[*7]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[8]", "Argument[*10].Field[*command_split].Field[**lengths]", "value", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[9]", "Argument[*10].Field[**literal_histograms]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlockGreedy", "(MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *)", "", "Argument[*8]", "Argument[*11].Field[**literal_context_map]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlockGreedy", "(MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *)", "", "Argument[7]", "Argument[*11].Field[**literal_context_map]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlockGreedy", "(MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *)", "", "Argument[7]", "Argument[*11].Field[*literal_histograms_size]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildMetaBlockGreedy", "(MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *)", "", "Argument[8]", "Argument[*11].Field[**literal_context_map]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildSimpleHuffmanTable", "(HuffmanCode *,int,uint16_t *,uint32_t)", "", "Argument[*2]", "Argument[*0].Field[*value]", "value", "dfc-generated"] + - ["", "", True, "BrotliBuildSimpleHuffmanTable", "(HuffmanCode *,int,uint16_t *,uint32_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildSimpleHuffmanTable", "(HuffmanCode *,int,uint16_t *,uint32_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildSimpleHuffmanTable", "(HuffmanCode *,int,uint16_t *,uint32_t)", "", "Argument[2]", "Argument[*0].Field[*value]", "taint", "dfc-generated"] + - ["", "", True, "BrotliBuildSimpleHuffmanTable", "(HuffmanCode *,int,uint16_t *,uint32_t)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsCommand", "(MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *)", "", "Argument[*1]", "Argument[*4]", "value", "df-generated"] + - ["", "", True, "BrotliClusterHistogramsCommand", "(MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *)", "", "Argument[*6]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsCommand", "(MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsCommand", "(MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *)", "", "Argument[1]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsCommand", "(MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *)", "", "Argument[2]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsCommand", "(MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *)", "", "Argument[2]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsCommand", "(MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsCommand", "(MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *)", "", "Argument[6]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsCommand", "(MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsDistance", "(MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *)", "", "Argument[*1]", "Argument[*4]", "value", "df-generated"] + - ["", "", True, "BrotliClusterHistogramsDistance", "(MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *)", "", "Argument[*6]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsDistance", "(MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsDistance", "(MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *)", "", "Argument[1]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsDistance", "(MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *)", "", "Argument[2]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsDistance", "(MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *)", "", "Argument[2]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsDistance", "(MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsDistance", "(MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *)", "", "Argument[6]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsDistance", "(MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsLiteral", "(MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *)", "", "Argument[*1]", "Argument[*4]", "value", "df-generated"] + - ["", "", True, "BrotliClusterHistogramsLiteral", "(MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *)", "", "Argument[*6]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsLiteral", "(MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsLiteral", "(MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *)", "", "Argument[1]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsLiteral", "(MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *)", "", "Argument[2]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsLiteral", "(MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *)", "", "Argument[2]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsLiteral", "(MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsLiteral", "(MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *)", "", "Argument[6]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliClusterHistogramsLiteral", "(MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueCommand", "(const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[*0]", "Argument[*1]", "value", "df-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueCommand", "(const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[*2]", "Argument[*6].Field[*cost_diff]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueCommand", "(const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueCommand", "(const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueCommand", "(const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[2]", "Argument[*6].Field[*cost_diff]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueCommand", "(const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueCommand", "(const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[7]", "Argument[*7]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueDistance", "(const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[*0]", "Argument[*1]", "value", "df-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueDistance", "(const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[*2]", "Argument[*6].Field[*cost_diff]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueDistance", "(const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueDistance", "(const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueDistance", "(const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[2]", "Argument[*6].Field[*cost_diff]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueDistance", "(const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueDistance", "(const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[7]", "Argument[*7]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueLiteral", "(const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[*0]", "Argument[*1]", "value", "df-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueLiteral", "(const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[*2]", "Argument[*6].Field[*cost_diff]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueLiteral", "(const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueLiteral", "(const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueLiteral", "(const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[2]", "Argument[*6].Field[*cost_diff]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueLiteral", "(const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompareAndPushToQueueLiteral", "(const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[7]", "Argument[*7]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompressFragmentFast", "(BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *)", "", "Argument[*1]", "Argument[*7]", "value", "df-generated"] + - ["", "", True, "BrotliCompressFragmentFast", "(BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *)", "", "Argument[*6]", "Argument[*7]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompressFragmentFast", "(BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompressFragmentFast", "(BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *)", "", "Argument[6]", "Argument[*7]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompressFragmentFast", "(BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *)", "", "Argument[7]", "Argument[*7]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompressFragmentTwoPass", "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)", "", "Argument[*1]", "Argument[*5]", "value", "df-generated"] + - ["", "", True, "BrotliCompressFragmentTwoPass", "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)", "", "Argument[*1]", "Argument[*9]", "value", "df-generated"] + - ["", "", True, "BrotliCompressFragmentTwoPass", "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)", "", "Argument[*6]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompressFragmentTwoPass", "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)", "", "Argument[*6]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompressFragmentTwoPass", "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)", "", "Argument[*8]", "Argument[*9]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompressFragmentTwoPass", "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)", "", "Argument[6]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompressFragmentTwoPass", "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)", "", "Argument[6]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompressFragmentTwoPass", "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompressFragmentTwoPass", "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)", "", "Argument[8]", "Argument[*8]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompressFragmentTwoPass", "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)", "", "Argument[8]", "Argument[*9]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCompressFragmentTwoPass", "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)", "", "Argument[9]", "Argument[*9]", "taint", "dfc-generated"] + - ["", "", True, "BrotliConvertBitDepthsToSymbols", "(const uint8_t *,size_t,uint16_t *)", "", "Argument[*0]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliConvertBitDepthsToSymbols", "(const uint8_t *,size_t,uint16_t *)", "", "Argument[0]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[*7]", "Argument[*9].Field[*dist_extra_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[*7]", "Argument[*9].Field[*dist_prefix_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[0]", "Argument[*8]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[0]", "Argument[*9].Field[*cmd_prefix_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[0]", "Argument[*9].Field[*copy_len_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[10]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[11]", "Argument[*11]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[1]", "Argument[*8]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[1]", "Argument[*9].Field[*cmd_prefix_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[1]", "Argument[*9].Field[*copy_len_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[7]", "Argument[*7]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[7]", "Argument[*9].Field[*dist_extra_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[7]", "Argument[*9].Field[*dist_prefix_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[9]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[9]", "Argument[*9]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateHqZopfliBackwardReferences", "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[10]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateHqZopfliBackwardReferences", "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[11]", "Argument[*11]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateHqZopfliBackwardReferences", "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[12]", "Argument[*12]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateHqZopfliBackwardReferences", "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[8]", "Argument[*8]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateHuffmanTree", "(const uint32_t *,const size_t,const int,HuffmanTree *,uint8_t *)", "", "Argument[*0]", "Argument[*3].Field[*total_count_]", "value", "dfc-generated"] + - ["", "", True, "BrotliCreateHuffmanTree", "(const uint32_t *,const size_t,const int,HuffmanTree *,uint8_t *)", "", "Argument[0]", "Argument[*3].Field[*total_count_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateHuffmanTree", "(const uint32_t *,const size_t,const int,HuffmanTree *,uint8_t *)", "", "Argument[1]", "Argument[*3].Field[*index_right_or_value_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateHuffmanTree", "(const uint32_t *,const size_t,const int,HuffmanTree *,uint8_t *)", "", "Argument[1]", "Argument[*3].Field[*total_count_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateHuffmanTree", "(const uint32_t *,const size_t,const int,HuffmanTree *,uint8_t *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateManagedDictionary", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[**2]", "ReturnValue[*].Field[*memory_manager_].Field[***opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliCreateManagedDictionary", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[*2]", "ReturnValue[*].Field[*memory_manager_].Field[**opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliCreateManagedDictionary", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[0]", "ReturnValue[*].Field[*memory_manager_].Field[*alloc_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliCreateManagedDictionary", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[1]", "ReturnValue[*].Field[*memory_manager_].Field[*free_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliCreateManagedDictionary", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[2]", "ReturnValue[*].Field[*memory_manager_].Field[*opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliCreateZopfliBackwardReferences", "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[10]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateZopfliBackwardReferences", "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[11]", "Argument[*11]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateZopfliBackwardReferences", "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[12]", "Argument[*12]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateZopfliBackwardReferences", "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[1]", "Argument[*9]", "taint", "dfc-generated"] + - ["", "", True, "BrotliCreateZopfliBackwardReferences", "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[8]", "Argument[*8]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderAttachDictionary", "(BrotliDecoderState *,BrotliDecoderStateInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[])", "", "Argument[*3]", "Argument[*0].Field[**dictionary].Field[**prefix]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderAttachDictionary", "(BrotliDecoderState *,BrotliDecoderStateInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[])", "", "Argument[2]", "Argument[*0].Field[**dictionary].Field[*prefix_size]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderAttachDictionary", "(BrotliDecoderState *,BrotliDecoderStateInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[])", "", "Argument[3]", "Argument[*0].Field[**dictionary].Field[*prefix]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[**2]", "ReturnValue[*].Field[***memory_manager_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[**2]", "ReturnValue[*].Field[**dictionary].Field[***memory_manager_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[*2]", "ReturnValue[*].Field[**dictionary].Field[**memory_manager_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[*2]", "ReturnValue[*].Field[**memory_manager_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[0]", "ReturnValue[*].Field[**dictionary].Field[*alloc_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[0]", "ReturnValue[*].Field[*alloc_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[1]", "ReturnValue[*].Field[**dictionary].Field[*free_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[1]", "ReturnValue[*].Field[*free_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[2]", "ReturnValue[*].Field[**dictionary].Field[*memory_manager_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[2]", "ReturnValue[*].Field[*memory_manager_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderDecompress", "(size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[*1]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderDecompress", "(size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[*1]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderDecompress", "(size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[*2]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderDecompress", "(size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderDecompress", "(size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[1]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderDecompress", "(size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[1]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderDecompress", "(size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderDecompress", "(size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[2]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderDecompress", "(size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderDecompressStream", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)", "", "Argument[*1]", "Argument[*0].Field[*used_input]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderDecompressStream", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)", "", "Argument[*2]", "Argument[*1]", "value", "df-generated"] + - ["", "", True, "BrotliDecoderDecompressStream", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)", "", "Argument[*4]", "Argument[**4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderDecompressStream", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)", "", "Argument[1]", "Argument[*0].Field[*used_input]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderDecompressStream", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderDecompressStream", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)", "", "Argument[4]", "Argument[**4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderDecompressStream", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderGetErrorCode", "(const BrotliDecoderState *,const BrotliDecoderStateInternal *)", "", "Argument[*0].Field[*error_code]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderHuffmanTreeGroupInit", "(BrotliDecoderStateInternal *,HuffmanTreeGroup *,uint64_t,uint64_t,uint64_t)", "", "Argument[2]", "Argument[*1].Field[*alphabet_size_max]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderHuffmanTreeGroupInit", "(BrotliDecoderStateInternal *,HuffmanTreeGroup *,uint64_t,uint64_t,uint64_t)", "", "Argument[3]", "Argument[*1].Field[*alphabet_size_limit]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderHuffmanTreeGroupInit", "(BrotliDecoderStateInternal *,HuffmanTreeGroup *,uint64_t,uint64_t,uint64_t)", "", "Argument[4]", "Argument[*1].Field[**codes]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderHuffmanTreeGroupInit", "(BrotliDecoderStateInternal *,HuffmanTreeGroup *,uint64_t,uint64_t,uint64_t)", "", "Argument[4]", "Argument[*1].Field[*codes]", "taint", "dfc-generated"] + - ["", "", True, "BrotliDecoderHuffmanTreeGroupInit", "(BrotliDecoderStateInternal *,HuffmanTreeGroup *,uint64_t,uint64_t,uint64_t)", "", "Argument[4]", "Argument[*1].Field[*num_htrees]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderSetMetadataCallbacks", "(BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *)", "", "Argument[**3]", "Argument[*0].Field[***metadata_callback_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderSetMetadataCallbacks", "(BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *)", "", "Argument[*3]", "Argument[*0].Field[**metadata_callback_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderSetMetadataCallbacks", "(BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *)", "", "Argument[1]", "Argument[*0].Field[*metadata_start_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderSetMetadataCallbacks", "(BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *)", "", "Argument[2]", "Argument[*0].Field[*metadata_chunk_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderSetMetadataCallbacks", "(BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *)", "", "Argument[3]", "Argument[*0].Field[*metadata_callback_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderStateInit", "(BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[**3]", "Argument[*0].Field[***memory_manager_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderStateInit", "(BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[**3]", "Argument[*0].Field[**dictionary].Field[***memory_manager_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderStateInit", "(BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[*3]", "Argument[*0].Field[**dictionary].Field[**memory_manager_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderStateInit", "(BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[*3]", "Argument[*0].Field[**memory_manager_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderStateInit", "(BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[1]", "Argument[*0].Field[**dictionary].Field[*alloc_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderStateInit", "(BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[1]", "Argument[*0].Field[*alloc_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderStateInit", "(BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[2]", "Argument[*0].Field[**dictionary].Field[*free_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderStateInit", "(BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[2]", "Argument[*0].Field[*free_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderStateInit", "(BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[3]", "Argument[*0].Field[**dictionary].Field[*memory_manager_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderStateInit", "(BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[3]", "Argument[*0].Field[*memory_manager_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliDecoderTakeOutput", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "BrotliDecoderTakeOutput", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "BrotliDecoderTakeOutput", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "BrotliDecoderTakeOutput", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "BrotliDecoderTakeOutput", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *)", "", "Argument[*1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "BrotliDecoderTakeOutput", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *)", "", "Argument[*1]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "BrotliDecoderTakeOutput", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "BrotliDecoderTakeOutput", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *)", "", "Argument[1]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "BrotliDecoderTakeOutput", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "BrotliDecoderTakeOutput", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *)", "", "Argument[1]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "BrotliEncoderAttachPreparedDictionary", "(BrotliEncoderState *,BrotliEncoderStateInternal *,const BrotliEncoderPreparedDictionary *)", "", "Argument[*1].Field[**dictionary]", "Argument[*1]", "value", "dfc-generated"] + - ["", "", True, "BrotliEncoderAttachPreparedDictionary", "(BrotliEncoderState *,BrotliEncoderStateInternal *,const BrotliEncoderPreparedDictionary *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[*4]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[*4]", "Argument[*6]", "value", "dfc-generated"] + - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[*5]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[*5]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[3]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[3]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[3]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[4]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[4]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[5]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[5]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[5]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderCompressStream", "(BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)", "", "Argument[**3]", "Argument[**5]", "value", "df-generated"] + - ["", "", True, "BrotliEncoderCompressStream", "(BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)", "", "Argument[**5]", "Argument[*0].Field[**next_out_]", "value", "dfc-generated"] + - ["", "", True, "BrotliEncoderCompressStream", "(BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)", "", "Argument[**5]", "Argument[*0].Field[*last_bytes_]", "value", "dfc-generated"] + - ["", "", True, "BrotliEncoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[**2]", "ReturnValue[*].Field[*memory_manager_].Field[***opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliEncoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[*2]", "ReturnValue[*].Field[*memory_manager_].Field[**opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliEncoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[0]", "ReturnValue[*].Field[*memory_manager_].Field[*alloc_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliEncoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[1]", "ReturnValue[*].Field[*memory_manager_].Field[*free_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliEncoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[2]", "ReturnValue[*].Field[*memory_manager_].Field[*opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliEncoderEstimatePeakMemoryUsage", "(int,int,size_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderEstimatePeakMemoryUsage", "(int,int,size_t)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderGetPreparedDictionarySize", "(const BrotliEncoderPreparedDictionary *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "BrotliEncoderGetPreparedDictionarySize", "(const BrotliEncoderPreparedDictionary *)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "BrotliEncoderMaxCompressedSize", "(size_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderPrepareDictionary", "(BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[**6]", "ReturnValue[*].Field[*memory_manager_].Field[***opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliEncoderPrepareDictionary", "(BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[*2]", "ReturnValue[*].Field[**dictionary].Field[*num_items]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderPrepareDictionary", "(BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[*6]", "ReturnValue[*].Field[*memory_manager_].Field[**opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliEncoderPrepareDictionary", "(BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[1]", "ReturnValue[*].Field[**dictionary].Field[*source_size]", "value", "dfc-generated"] + - ["", "", True, "BrotliEncoderPrepareDictionary", "(BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[2]", "ReturnValue[*].Field[**dictionary].Field[*num_items]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEncoderPrepareDictionary", "(BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[4]", "ReturnValue[*].Field[*memory_manager_].Field[*alloc_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliEncoderPrepareDictionary", "(BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[5]", "ReturnValue[*].Field[*memory_manager_].Field[*free_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliEncoderPrepareDictionary", "(BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[6]", "ReturnValue[*].Field[*memory_manager_].Field[*opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliEncoderSetParameter", "(BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderParameter,uint32_t)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "BrotliEncoderTakeOutput", "(BrotliEncoderState *,BrotliEncoderStateInternal *,size_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "BrotliEncoderTakeOutput", "(BrotliEncoderState *,BrotliEncoderStateInternal *,size_t *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "BrotliEncoderTakeOutput", "(BrotliEncoderState *,BrotliEncoderStateInternal *,size_t *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "BrotliEncoderTakeOutput", "(BrotliEncoderState *,BrotliEncoderStateInternal *,size_t *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "BrotliEncoderTakeOutput", "(BrotliEncoderState *,BrotliEncoderStateInternal *,size_t *)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "BrotliEncoderTakeOutput", "(BrotliEncoderState *,BrotliEncoderStateInternal *,size_t *)", "", "Argument[1]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[*3]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[*3]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[*4]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[0]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[0]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[1]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[2]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[2]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[3]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[3]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[4]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliFindAllStaticDictionaryMatches", "(const BrotliEncoderDictionary *,const uint8_t *,size_t,size_t,uint32_t *)", "", "Argument[2]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliFindAllStaticDictionaryMatches", "(const BrotliEncoderDictionary *,const uint8_t *,size_t,size_t,uint32_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramBitCostDistanceCommand", "(const HistogramCommand *,const HistogramCommand *,HistogramCommand *)", "", "Argument[*0]", "Argument[*2]", "value", "df-generated"] + - ["", "", True, "BrotliHistogramBitCostDistanceCommand", "(const HistogramCommand *,const HistogramCommand *,HistogramCommand *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramBitCostDistanceCommand", "(const HistogramCommand *,const HistogramCommand *,HistogramCommand *)", "", "Argument[0]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramBitCostDistanceDistance", "(const HistogramDistance *,const HistogramDistance *,HistogramDistance *)", "", "Argument[*0]", "Argument[*2]", "value", "df-generated"] + - ["", "", True, "BrotliHistogramBitCostDistanceDistance", "(const HistogramDistance *,const HistogramDistance *,HistogramDistance *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramBitCostDistanceDistance", "(const HistogramDistance *,const HistogramDistance *,HistogramDistance *)", "", "Argument[0]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramBitCostDistanceLiteral", "(const HistogramLiteral *,const HistogramLiteral *,HistogramLiteral *)", "", "Argument[*0]", "Argument[*2]", "value", "df-generated"] + - ["", "", True, "BrotliHistogramBitCostDistanceLiteral", "(const HistogramLiteral *,const HistogramLiteral *,HistogramLiteral *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramBitCostDistanceLiteral", "(const HistogramLiteral *,const HistogramLiteral *,HistogramLiteral *)", "", "Argument[0]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineCommand", "(HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[*0]", "Argument[*1]", "value", "df-generated"] + - ["", "", True, "BrotliHistogramCombineCommand", "(HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[*2]", "Argument[*5].Field[*cost_diff]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineCommand", "(HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[*4]", "Argument[*3]", "value", "df-generated"] + - ["", "", True, "BrotliHistogramCombineCommand", "(HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineCommand", "(HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineCommand", "(HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineCommand", "(HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[2]", "Argument[*5].Field[*cost_diff]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineCommand", "(HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[5]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineCommand", "(HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[6]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineDistance", "(HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[*0]", "Argument[*1]", "value", "df-generated"] + - ["", "", True, "BrotliHistogramCombineDistance", "(HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[*2]", "Argument[*5].Field[*cost_diff]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineDistance", "(HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[*4]", "Argument[*3]", "value", "df-generated"] + - ["", "", True, "BrotliHistogramCombineDistance", "(HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineDistance", "(HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineDistance", "(HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineDistance", "(HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[2]", "Argument[*5].Field[*cost_diff]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineDistance", "(HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[5]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineDistance", "(HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[6]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineLiteral", "(HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[*0]", "Argument[*1]", "value", "df-generated"] + - ["", "", True, "BrotliHistogramCombineLiteral", "(HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[*2]", "Argument[*5].Field[*cost_diff]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineLiteral", "(HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[*4]", "Argument[*3]", "value", "df-generated"] + - ["", "", True, "BrotliHistogramCombineLiteral", "(HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineLiteral", "(HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineLiteral", "(HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineLiteral", "(HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[2]", "Argument[*5].Field[*cost_diff]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineLiteral", "(HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[5]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramCombineLiteral", "(HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[6]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "BrotliHistogramReindexCommand", "(MemoryManager *,HistogramCommand *,uint32_t *,size_t)", "", "Argument[*2]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramReindexCommand", "(MemoryManager *,HistogramCommand *,uint32_t *,size_t)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramReindexCommand", "(MemoryManager *,HistogramCommand *,uint32_t *,size_t)", "", "Argument[2]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramReindexCommand", "(MemoryManager *,HistogramCommand *,uint32_t *,size_t)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramReindexDistance", "(MemoryManager *,HistogramDistance *,uint32_t *,size_t)", "", "Argument[*2]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramReindexDistance", "(MemoryManager *,HistogramDistance *,uint32_t *,size_t)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramReindexDistance", "(MemoryManager *,HistogramDistance *,uint32_t *,size_t)", "", "Argument[2]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramReindexDistance", "(MemoryManager *,HistogramDistance *,uint32_t *,size_t)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramReindexLiteral", "(MemoryManager *,HistogramLiteral *,uint32_t *,size_t)", "", "Argument[*2]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramReindexLiteral", "(MemoryManager *,HistogramLiteral *,uint32_t *,size_t)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramReindexLiteral", "(MemoryManager *,HistogramLiteral *,uint32_t *,size_t)", "", "Argument[2]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramReindexLiteral", "(MemoryManager *,HistogramLiteral *,uint32_t *,size_t)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapCommand", "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)", "", "Argument[*0]", "Argument[*5]", "value", "df-generated"] + - ["", "", True, "BrotliHistogramRemapCommand", "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)", "", "Argument[*2]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapCommand", "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)", "", "Argument[*2]", "Argument[*6]", "value", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapCommand", "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)", "", "Argument[*6]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapCommand", "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapCommand", "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)", "", "Argument[0]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapCommand", "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)", "", "Argument[2]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapCommand", "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)", "", "Argument[2]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapCommand", "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapCommand", "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)", "", "Argument[6]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapCommand", "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapDistance", "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)", "", "Argument[*0]", "Argument[*5]", "value", "df-generated"] + - ["", "", True, "BrotliHistogramRemapDistance", "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)", "", "Argument[*2]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapDistance", "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)", "", "Argument[*2]", "Argument[*6]", "value", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapDistance", "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)", "", "Argument[*6]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapDistance", "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapDistance", "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)", "", "Argument[0]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapDistance", "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)", "", "Argument[2]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapDistance", "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)", "", "Argument[2]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapDistance", "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapDistance", "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)", "", "Argument[6]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapDistance", "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapLiteral", "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)", "", "Argument[*0]", "Argument[*5]", "value", "df-generated"] + - ["", "", True, "BrotliHistogramRemapLiteral", "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)", "", "Argument[*2]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapLiteral", "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)", "", "Argument[*2]", "Argument[*6]", "value", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapLiteral", "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)", "", "Argument[*6]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapLiteral", "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapLiteral", "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)", "", "Argument[0]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapLiteral", "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)", "", "Argument[2]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapLiteral", "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)", "", "Argument[2]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapLiteral", "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapLiteral", "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)", "", "Argument[6]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliHistogramRemapLiteral", "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliInitDistanceParams", "(BrotliDistanceParams *,uint32_t,uint32_t,int)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "BrotliInitDistanceParams", "(BrotliDistanceParams *,uint32_t,uint32_t,int)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "BrotliInitMemoryManager", "(MemoryManager *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[**3]", "Argument[*0].Field[***opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliInitMemoryManager", "(MemoryManager *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[*3]", "Argument[*0].Field[**opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliInitMemoryManager", "(MemoryManager *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[1]", "Argument[*0].Field[*alloc_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliInitMemoryManager", "(MemoryManager *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[2]", "Argument[*0].Field[*free_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliInitMemoryManager", "(MemoryManager *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[3]", "Argument[*0].Field[*opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliInitSharedEncoderDictionary", "(SharedEncoderDictionary *)", "", "Argument[*0].Field[*contextual].Field[*instance_]", "Argument[*0].Field[*contextual].Field[**dict]", "value", "dfc-generated"] + - ["", "", True, "BrotliOptimizeHuffmanCountsForRle", "(size_t,uint32_t *,uint8_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliPopulationCostCommand", "(const HistogramCommand *)", "", "Argument[*0].Field[*data_]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "BrotliPopulationCostCommand", "(const HistogramCommand *)", "", "Argument[*0].Field[*total_count_]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "BrotliPopulationCostDistance", "(const HistogramDistance *)", "", "Argument[*0].Field[*data_]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "BrotliPopulationCostDistance", "(const HistogramDistance *)", "", "Argument[*0].Field[*total_count_]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "BrotliPopulationCostLiteral", "(const HistogramLiteral *)", "", "Argument[*0].Field[*data_]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "BrotliPopulationCostLiteral", "(const HistogramLiteral *)", "", "Argument[*0].Field[*total_count_]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "BrotliSafeReadBits32Slow", "(BrotliBitReader *const,uint64_t,uint64_t *)", "", "Argument[1]", "Argument[*0].Field[*bit_pos_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliSafeReadBits32Slow", "(BrotliBitReader *const,uint64_t,uint64_t *)", "", "Argument[1]", "Argument[*0].Field[*val_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliSafeReadBits32Slow", "(BrotliBitReader *const,uint64_t,uint64_t *)", "", "Argument[1]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliSharedDictionaryAttach", "(BrotliSharedDictionaryInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[])", "", "Argument[*3]", "Argument[*0].Field[**prefix]", "value", "dfc-generated"] + - ["", "", True, "BrotliSharedDictionaryAttach", "(BrotliSharedDictionaryInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[])", "", "Argument[2]", "Argument[*0].Field[*prefix_size]", "value", "dfc-generated"] + - ["", "", True, "BrotliSharedDictionaryAttach", "(BrotliSharedDictionaryInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[])", "", "Argument[3]", "Argument[*0].Field[*prefix]", "value", "dfc-generated"] + - ["", "", True, "BrotliSharedDictionaryCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[**2]", "ReturnValue[*].Field[***memory_manager_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliSharedDictionaryCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[*2]", "ReturnValue[*].Field[**memory_manager_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliSharedDictionaryCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[0]", "ReturnValue[*].Field[*alloc_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliSharedDictionaryCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[1]", "ReturnValue[*].Field[*free_func]", "value", "dfc-generated"] + - ["", "", True, "BrotliSharedDictionaryCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[2]", "ReturnValue[*].Field[*memory_manager_opaque]", "value", "dfc-generated"] + - ["", "", True, "BrotliSplitBlock", "(MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *)", "", "Argument[*1].Field[*insert_len_]", "Argument[*7].Field[**lengths]", "taint", "dfc-generated"] + - ["", "", True, "BrotliSplitBlock", "(MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "BrotliSplitBlock", "(MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *)", "", "Argument[2]", "Argument[*8].Field[**lengths]", "value", "dfc-generated"] + - ["", "", True, "BrotliStoreHuffmanTree", "(const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *)", "", "Argument[*0]", "Argument[*2].Field[*total_count_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreHuffmanTree", "(const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *)", "", "Argument[*0]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreHuffmanTree", "(const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *)", "", "Argument[*3]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreHuffmanTree", "(const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *)", "", "Argument[0]", "Argument[*2].Field[*total_count_]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreHuffmanTree", "(const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *)", "", "Argument[0]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreHuffmanTree", "(const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreHuffmanTree", "(const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *)", "", "Argument[3]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreHuffmanTree", "(const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[*13]", "Argument[*14]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[*1]", "Argument[*14]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[13]", "Argument[*13]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[13]", "Argument[*14]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[14]", "Argument[*14]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[1]", "Argument[*14]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[2]", "Argument[*14]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[3]", "Argument[*14]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[4]", "Argument[*14]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[5]", "Argument[*14]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[6]", "Argument[*14]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[7]", "Argument[*14]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[9]", "Argument[*14]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockFast", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[*1]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockFast", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[*9]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockFast", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[10]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockFast", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[1]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockFast", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[2]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockFast", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[3]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockFast", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[4]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockFast", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[5]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockFast", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[9]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockFast", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[9]", "Argument[*9]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockTrivial", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[*1]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockTrivial", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[*9]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockTrivial", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[10]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockTrivial", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[1]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockTrivial", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[2]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockTrivial", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[3]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockTrivial", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[4]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockTrivial", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[5]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockTrivial", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[9]", "Argument[*10]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreMetaBlockTrivial", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[9]", "Argument[*9]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[*1]", "Argument[*6]", "value", "dfc-generated"] + - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[*5]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[1]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[2]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[2]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[3]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[3]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[4]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[4]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[5]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[5]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliTransformDictionaryWord", "(uint8_t *,const uint8_t *,int,const BrotliTransforms *,int)", "", "Argument[*1]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "BrotliTransformDictionaryWord", "(uint8_t *,const uint8_t *,int,const BrotliTransforms *,int)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliTransformDictionaryWord", "(uint8_t *,const uint8_t *,int,const BrotliTransforms *,int)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliTransformDictionaryWord", "(uint8_t *,const uint8_t *,int,const BrotliTransforms *,int)", "", "Argument[2]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliTransformDictionaryWord", "(uint8_t *,const uint8_t *,int,const BrotliTransforms *,int)", "", "Argument[4]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "BrotliWriteHuffmanTree", "(const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *)", "", "Argument[*0]", "Argument[*3]", "value", "dfc-generated"] + - ["", "", True, "BrotliWriteHuffmanTree", "(const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *)", "", "Argument[*2]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "BrotliWriteHuffmanTree", "(const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *)", "", "Argument[*2]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliWriteHuffmanTree", "(const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *)", "", "Argument[0]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "BrotliWriteHuffmanTree", "(const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliWriteHuffmanTree", "(const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *)", "", "Argument[2]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "BrotliWriteHuffmanTree", "(const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *)", "", "Argument[2]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliWriteHuffmanTree", "(const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "BrotliWriteHuffmanTree", "(const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliZopfliComputeShortestPath", "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *)", "", "Argument[1]", "Argument[*9]", "taint", "dfc-generated"] + - ["", "", True, "BrotliZopfliComputeShortestPath", "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *)", "", "Argument[9]", "Argument[*9]", "taint", "dfc-generated"] + - ["", "", True, "BrotliZopfliCreateCommands", "(const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *)", "", "Argument[0]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "BrotliZopfliCreateCommands", "(const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "BrotliZopfliCreateCommands", "(const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "BrotliZopfliCreateCommands", "(const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "BrotliZopfliCreateCommands", "(const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *)", "", "Argument[7]", "Argument[*7]", "taint", "dfc-generated"] + - ["", "", True, "CreatePreparedDictionary", "(MemoryManager *,const uint8_t *,size_t)", "", "Argument[*1]", "ReturnValue[*].Field[*num_items]", "taint", "dfc-generated"] + - ["", "", True, "CreatePreparedDictionary", "(MemoryManager *,const uint8_t *,size_t)", "", "Argument[1]", "ReturnValue[*].Field[*num_items]", "taint", "dfc-generated"] + - ["", "", True, "CreatePreparedDictionary", "(MemoryManager *,const uint8_t *,size_t)", "", "Argument[2]", "ReturnValue[*].Field[*source_size]", "value", "dfc-generated"] diff --git a/cpp/ql/lib/ext/generated/curl/curl.model.yml b/cpp/ql/lib/ext/generated/curl/curl.model.yml new file mode 100644 index 00000000000..847b0a10e46 --- /dev/null +++ b/cpp/ql/lib/ext/generated/curl/curl.model.yml @@ -0,0 +1,959 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/cpp-all + extensible: summaryModel + data: + - ["", "", True, "Curl_GetFTPResponse", "(Curl_easy *,ssize_t *,int *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_GetFTPResponse", "(Curl_easy *,ssize_t *,int *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_HMAC_final", "(HMAC_context *,unsigned char *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_HMAC_init", "(const HMAC_params *,const unsigned char *,unsigned int)", "", "Argument[0]", "ReturnValue[*].Field[**hashctxt1].Field[*hash]", "value", "dfc-generated"] + - ["", "", True, "Curl_HMAC_init", "(const HMAC_params *,const unsigned char *,unsigned int)", "", "Argument[0]", "ReturnValue[*].Field[**hashctxt2].Field[*hash]", "value", "dfc-generated"] + - ["", "", True, "Curl_HMAC_init", "(const HMAC_params *,const unsigned char *,unsigned int)", "", "Argument[0]", "ReturnValue[*].Field[*hash]", "value", "dfc-generated"] + - ["", "", True, "Curl_MD5_init", "(const MD5_params *)", "", "Argument[*0]", "ReturnValue[*].Field[**md5_hash]", "value", "dfc-generated"] + - ["", "", True, "Curl_MD5_init", "(const MD5_params *)", "", "Argument[0]", "ReturnValue[*].Field[*md5_hash]", "value", "dfc-generated"] + - ["", "", True, "Curl_add_custom_headers", "(Curl_easy *,bool,dynbuf *)", "", "Argument[*2].Field[*allc]", "Argument[*2].Field[*leng]", "value", "dfc-generated"] + - ["", "", True, "Curl_addrinfo_callback", "(Curl_easy *,int,Curl_addrinfo *)", "", "Argument[*2]", "Argument[2]", "taint", "df-generated"] + - ["", "", True, "Curl_addrinfo_callback", "(Curl_easy *,int,Curl_addrinfo *)", "", "Argument[2]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "Curl_alpn_set_negotiated", "(Curl_cfilter *,Curl_easy *,ssl_connect_data *,const unsigned char *,size_t)", "", "Argument[*3]", "Argument[*2].Field[*negotiated].Field[**alpn]", "value", "dfc-generated"] + - ["", "", True, "Curl_alpn_set_negotiated", "(Curl_cfilter *,Curl_easy *,ssl_connect_data *,const unsigned char *,size_t)", "", "Argument[3]", "Argument[*2].Field[*negotiated].Field[**alpn]", "taint", "dfc-generated"] + - ["", "", True, "Curl_alpn_to_proto_buf", "(alpn_proto_buf *,const alpn_spec *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_alpn_to_proto_str", "(alpn_proto_buf *,const alpn_spec *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_altsvc_cleanup", "(altsvcinfo **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_altsvc_ctrl", "(altsvcinfo *,const long)", "", "Argument[1]", "Argument[*0].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "Curl_altsvc_parse", "(Curl_easy *,altsvcinfo *,const char *,alpnid,const char *,unsigned short)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_attach_connection", "(Curl_easy *,connectdata *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_attach_connection", "(Curl_easy *,connectdata *)", "", "Argument[1]", "Argument[*0].Field[*conn]", "value", "dfc-generated"] + - ["", "", True, "Curl_auth_create_external_message", "(const char *,bufref *)", "", "Argument[*0]", "Argument[*1].Field[**ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_auth_create_external_message", "(const char *,bufref *)", "", "Argument[0]", "Argument[*1].Field[*ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_auth_create_login_message", "(const char *,bufref *)", "", "Argument[*0]", "Argument[*1].Field[**ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_auth_create_login_message", "(const char *,bufref *)", "", "Argument[0]", "Argument[*1].Field[*ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_auth_create_ntlm_type3_message", "(Curl_easy *,const char *,const char *,ntlmdata *,bufref *)", "", "Argument[*1]", "Argument[*4].Field[**ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_auth_create_ntlm_type3_message", "(Curl_easy *,const char *,const char *,ntlmdata *,bufref *)", "", "Argument[1]", "Argument[*4].Field[**ptr]", "taint", "dfc-generated"] + - ["", "", True, "Curl_auth_create_ntlm_type3_message", "(Curl_easy *,const char *,const char *,ntlmdata *,bufref *)", "", "Argument[1]", "Argument[*4].Field[*len]", "taint", "dfc-generated"] + - ["", "", True, "Curl_auth_create_plain_message", "(const char *,const char *,const char *,bufref *)", "", "Argument[*0]", "Argument[*3].Field[**ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_auth_create_plain_message", "(const char *,const char *,const char *,bufref *)", "", "Argument[*1]", "Argument[*3].Field[**ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_auth_create_plain_message", "(const char *,const char *,const char *,bufref *)", "", "Argument[*2]", "Argument[*3].Field[**ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_auth_create_plain_message", "(const char *,const char *,const char *,bufref *)", "", "Argument[0]", "Argument[*3].Field[**ptr]", "taint", "dfc-generated"] + - ["", "", True, "Curl_auth_create_plain_message", "(const char *,const char *,const char *,bufref *)", "", "Argument[1]", "Argument[*3].Field[**ptr]", "taint", "dfc-generated"] + - ["", "", True, "Curl_auth_create_plain_message", "(const char *,const char *,const char *,bufref *)", "", "Argument[2]", "Argument[*3].Field[**ptr]", "taint", "dfc-generated"] + - ["", "", True, "Curl_auth_decode_digest_http_message", "(const char *,digestdata *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_auth_decode_ntlm_type2_message", "(Curl_easy *,const bufref *,ntlmdata *)", "", "Argument[*1]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "Curl_auth_digest_get_pair", "(const char *,char *,char *,const char **)", "", "Argument[*0]", "Argument[**3]", "value", "dfc-generated"] + - ["", "", True, "Curl_auth_digest_get_pair", "(const char *,char *,char *,const char **)", "", "Argument[*0]", "Argument[*1]", "value", "dfc-generated"] + - ["", "", True, "Curl_auth_digest_get_pair", "(const char *,char *,char *,const char **)", "", "Argument[*0]", "Argument[*2]", "value", "dfc-generated"] + - ["", "", True, "Curl_auth_digest_get_pair", "(const char *,char *,char *,const char **)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_auth_digest_get_pair", "(const char *,char *,char *,const char **)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufcp_init", "(bufc_pool *,size_t,size_t)", "", "Argument[1]", "Argument[*0].Field[*chunk_size]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufcp_init", "(bufc_pool *,size_t,size_t)", "", "Argument[2]", "Argument[*0].Field[*spare_max]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufq_cread", "(bufq *,char *,size_t,size_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_cread", "(bufq *,char *,size_t,size_t *)", "", "Argument[2]", "Argument[*0].Field[**head].Field[*r_offset]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_cread", "(bufq *,char *,size_t,size_t *)", "", "Argument[2]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_cread", "(bufq *,char *,size_t,size_t *)", "", "Argument[2]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_cwrite", "(bufq *,const char *,size_t,size_t *)", "", "Argument[2]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_init2", "(bufq *,size_t,size_t,int)", "", "Argument[1]", "Argument[*0].Field[*chunk_size]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufq_init2", "(bufq *,size_t,size_t,int)", "", "Argument[2]", "Argument[*0].Field[*max_chunks]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufq_init2", "(bufq *,size_t,size_t,int)", "", "Argument[3]", "Argument[*0].Field[*opts]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufq_init", "(bufq *,size_t,size_t)", "", "Argument[1]", "Argument[*0].Field[*chunk_size]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufq_init", "(bufq *,size_t,size_t)", "", "Argument[2]", "Argument[*0].Field[*max_chunks]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufq_initp", "(bufq *,bufc_pool *,size_t,int)", "", "Argument[*1].Field[*chunk_size]", "Argument[*0].Field[*chunk_size]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufq_initp", "(bufq *,bufc_pool *,size_t,int)", "", "Argument[*1]", "Argument[*0].Field[**pool]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufq_initp", "(bufq *,bufc_pool *,size_t,int)", "", "Argument[1]", "Argument[*0].Field[*pool]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufq_initp", "(bufq *,bufc_pool *,size_t,int)", "", "Argument[2]", "Argument[*0].Field[*max_chunks]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufq_initp", "(bufq *,bufc_pool *,size_t,int)", "", "Argument[3]", "Argument[*0].Field[*opts]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufq_len", "(const bufq *)", "", "Argument[*0].Field[**head].Field[*r_offset]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_len", "(const bufq *)", "", "Argument[*0].Field[**head].Field[*w_offset]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_pass", "(bufq *,Curl_bufq_writer *,void *,CURLcode *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_peek", "(bufq *,const unsigned char **,size_t *)", "", "Argument[*0]", "Argument[**1]", "taint", "df-generated"] + - ["", "", True, "Curl_bufq_peek", "(bufq *,const unsigned char **,size_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_bufq_peek", "(bufq *,const unsigned char **,size_t *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "Curl_bufq_peek_at", "(bufq *,size_t,const unsigned char **,size_t *)", "", "Argument[1]", "Argument[**2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_peek_at", "(bufq *,size_t,const unsigned char **,size_t *)", "", "Argument[1]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_peek_at", "(bufq *,size_t,const unsigned char **,size_t *)", "", "Argument[1]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_read", "(bufq *,unsigned char *,size_t,CURLcode *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_read", "(bufq *,unsigned char *,size_t,CURLcode *)", "", "Argument[2]", "Argument[*0].Field[**head].Field[*r_offset]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_read", "(bufq *,unsigned char *,size_t,CURLcode *)", "", "Argument[2]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_read", "(bufq *,unsigned char *,size_t,CURLcode *)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_sipn", "(bufq *,size_t,Curl_bufq_reader *,void *,CURLcode *)", "", "Argument[3]", "Argument[*3].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufq_sipn", "(bufq *,size_t,Curl_bufq_reader *,void *,CURLcode *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_skip", "(bufq *,size_t)", "", "Argument[1]", "Argument[*0].Field[**head].Field[*r_offset]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_slurp", "(bufq *,Curl_bufq_reader *,void *,CURLcode *)", "", "Argument[2]", "Argument[*2].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufq_slurp", "(bufq *,Curl_bufq_reader *,void *,CURLcode *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_unwrite", "(bufq *,size_t)", "", "Argument[1]", "Argument[*0].Field[**tail].Field[*w_offset]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_write", "(bufq *,const unsigned char *,size_t,CURLcode *)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_write_pass", "(bufq *,const unsigned char *,size_t,Curl_bufq_writer *,void *,CURLcode *)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufq_write_pass", "(bufq *,const unsigned char *,size_t,Curl_bufq_writer *,void *,CURLcode *)", "", "Argument[5]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufref_len", "(const bufref *)", "", "Argument[*0].Field[*len]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_bufref_memdup", "(bufref *,const void *,size_t)", "", "Argument[*1]", "Argument[*0].Field[**ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufref_memdup", "(bufref *,const void *,size_t)", "", "Argument[1]", "Argument[*0].Field[**ptr]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bufref_memdup", "(bufref *,const void *,size_t)", "", "Argument[2]", "Argument[*0].Field[*len]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufref_ptr", "(const bufref *)", "", "Argument[*0].Field[**ptr]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufref_ptr", "(const bufref *)", "", "Argument[*0].Field[*ptr]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_bufref_set", "(bufref *,const void *,size_t,..(*)(..))", "", "Argument[*1]", "Argument[*0].Field[**ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufref_set", "(bufref *,const void *,size_t,..(*)(..))", "", "Argument[1]", "Argument[*0].Field[*ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufref_set", "(bufref *,const void *,size_t,..(*)(..))", "", "Argument[2]", "Argument[*0].Field[*len]", "value", "dfc-generated"] + - ["", "", True, "Curl_bufref_set", "(bufref *,const void *,size_t,..(*)(..))", "", "Argument[3]", "Argument[*0].Field[*dtor]", "value", "dfc-generated"] + - ["", "", True, "Curl_bump_headersize", "(Curl_easy *,size_t,bool)", "", "Argument[1]", "Argument[*0].Field[*info].Field[*header_size]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bump_headersize", "(Curl_easy *,size_t,bool)", "", "Argument[1]", "Argument[*0].Field[*req].Field[*allheadercount]", "taint", "dfc-generated"] + - ["", "", True, "Curl_bump_headersize", "(Curl_easy *,size_t,bool)", "", "Argument[1]", "Argument[*0].Field[*req].Field[*headerbytecount]", "taint", "dfc-generated"] + - ["", "", True, "Curl_cache_addr", "(Curl_easy *,Curl_addrinfo *,const char *,size_t,int,bool)", "", "Argument[*2]", "ReturnValue[*].Field[*hostname]", "value", "dfc-generated"] + - ["", "", True, "Curl_cache_addr", "(Curl_easy *,Curl_addrinfo *,const char *,size_t,int,bool)", "", "Argument[2]", "ReturnValue[*].Field[*hostname]", "taint", "dfc-generated"] + - ["", "", True, "Curl_cache_addr", "(Curl_easy *,Curl_addrinfo *,const char *,size_t,int,bool)", "", "Argument[4]", "ReturnValue[*].Field[*hostport]", "value", "dfc-generated"] + - ["", "", True, "Curl_cf_create", "(Curl_cfilter **,const Curl_cftype *,void *)", "", "Argument[**2]", "Argument[**0].Field[***ctx]", "value", "dfc-generated"] + - ["", "", True, "Curl_cf_create", "(Curl_cfilter **,const Curl_cftype *,void *)", "", "Argument[*1]", "Argument[**0].Field[**cft]", "value", "dfc-generated"] + - ["", "", True, "Curl_cf_create", "(Curl_cfilter **,const Curl_cftype *,void *)", "", "Argument[*2]", "Argument[**0].Field[**ctx]", "value", "dfc-generated"] + - ["", "", True, "Curl_cf_create", "(Curl_cfilter **,const Curl_cftype *,void *)", "", "Argument[1]", "Argument[**0].Field[*cft]", "value", "dfc-generated"] + - ["", "", True, "Curl_cf_create", "(Curl_cfilter **,const Curl_cftype *,void *)", "", "Argument[2]", "Argument[**0].Field[*ctx]", "value", "dfc-generated"] + - ["", "", True, "Curl_cf_https_setup", "(Curl_easy *,connectdata *,int,const Curl_dns_entry *)", "", "Argument[1]", "Argument[*1].Field[**cfilter].Field[*conn]", "value", "dfc-generated"] + - ["", "", True, "Curl_cf_https_setup", "(Curl_easy *,connectdata *,int,const Curl_dns_entry *)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*next]", "taint", "dfc-generated"] + - ["", "", True, "Curl_cf_https_setup", "(Curl_easy *,connectdata *,int,const Curl_dns_entry *)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*sockindex]", "value", "dfc-generated"] + - ["", "", True, "Curl_cf_socket_peek", "(Curl_cfilter *,Curl_easy *,curl_socket_t *,const Curl_sockaddr_ex **,ip_quadruple *)", "", "Argument[*0]", "Argument[**3]", "taint", "df-generated"] + - ["", "", True, "Curl_cf_socket_peek", "(Curl_cfilter *,Curl_easy *,curl_socket_t *,const Curl_sockaddr_ex **,ip_quadruple *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "Curl_cf_socket_peek", "(Curl_cfilter *,Curl_easy *,curl_socket_t *,const Curl_sockaddr_ex **,ip_quadruple *)", "", "Argument[*0]", "Argument[*4]", "taint", "df-generated"] + - ["", "", True, "Curl_cf_tcp_create", "(Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int)", "", "Argument[4]", "Argument[**0].Field[**ctx].Field[*transport]", "value", "dfc-generated"] + - ["", "", True, "Curl_cf_udp_create", "(Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int)", "", "Argument[4]", "Argument[**0].Field[**ctx].Field[*transport]", "value", "dfc-generated"] + - ["", "", True, "Curl_cf_unix_create", "(Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int)", "", "Argument[4]", "Argument[**0].Field[**ctx].Field[*transport]", "value", "dfc-generated"] + - ["", "", True, "Curl_client_read", "(Curl_easy *,char *,size_t,size_t *,bool *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_client_read", "(Curl_easy *,char *,size_t,size_t *,bool *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "Curl_close", "(Curl_easy **)", "", "Argument[*0]", "Argument[**0]", "value", "df-generated"] + - ["", "", True, "Curl_close", "(Curl_easy **)", "", "Argument[0]", "Argument[**0]", "taint", "df-generated"] + - ["", "", True, "Curl_close", "(Curl_easy **)", "", "Argument[0]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_conn_cf_add", "(Curl_easy *,connectdata *,int,Curl_cfilter *)", "", "Argument[*3]", "Argument[*1].Field[**cfilter]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_cf_add", "(Curl_easy *,connectdata *,int,Curl_cfilter *)", "", "Argument[1]", "Argument[*1].Field[**cfilter].Field[*conn]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_cf_add", "(Curl_easy *,connectdata *,int,Curl_cfilter *)", "", "Argument[1]", "Argument[*3].Field[*conn]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_cf_add", "(Curl_easy *,connectdata *,int,Curl_cfilter *)", "", "Argument[3]", "Argument[*1].Field[*cfilter]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_cf_adjust_pollset", "(Curl_cfilter *,Curl_easy *,easy_pollset *)", "", "Argument[*0].Field[**next].Field[**next]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_cf_adjust_pollset", "(Curl_cfilter *,Curl_easy *,easy_pollset *)", "", "Argument[*0].Field[**next]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_cf_cntrl", "(Curl_cfilter *,Curl_easy *,bool,int,int,void *)", "", "Argument[*0].Field[**next].Field[**next]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_cf_cntrl", "(Curl_cfilter *,Curl_easy *,bool,int,int,void *)", "", "Argument[*0].Field[**next]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_cf_discard_all", "(Curl_easy *,connectdata *,int)", "", "Argument[2]", "Argument[*1].Field[*cfilter]", "taint", "dfc-generated"] + - ["", "", True, "Curl_conn_cf_discard_chain", "(Curl_cfilter **,Curl_easy *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_conn_cf_insert_after", "(Curl_cfilter *,Curl_cfilter *)", "", "Argument[1]", "Argument[*0].Field[*next]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_cf_is_ssl", "(Curl_cfilter *)", "", "Argument[*0].Field[**next].Field[**next]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_cf_is_ssl", "(Curl_cfilter *)", "", "Argument[*0].Field[**next]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_cf_poll", "(Curl_cfilter *,Curl_easy *,timediff_t)", "", "Argument[*0].Field[**next].Field[**next]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_cf_poll", "(Curl_cfilter *,Curl_easy *,timediff_t)", "", "Argument[*0].Field[**next]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_connect", "(Curl_easy *,int,bool,bool *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_conn_get_host", "(Curl_easy *,int,const char **,const char **,int *)", "", "Argument[*0].Field[**conn].Field[*remote_port]", "Argument[*4]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_get_socket", "(Curl_easy *,int)", "", "Argument[*0].Field[**conn].Field[*sock]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_get_socket", "(Curl_easy *,int)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_conn_is_http2", "(const Curl_easy *,const connectdata *,int)", "", "Argument[*1].Field[**cfilter].Field[**next]", "Argument[*1].Field[**cfilter]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_is_ssl", "(connectdata *,int)", "", "Argument[*0].Field[**cfilter].Field[**next]", "Argument[*0].Field[**cfilter]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_seems_dead", "(connectdata *,Curl_easy *,curltime *)", "", "Argument[0]", "Argument[*1].Field[*conn]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_seems_dead", "(connectdata *,Curl_easy *,curltime *)", "", "Argument[1]", "Argument[*1].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_seems_dead", "(connectdata *,Curl_easy *,curltime *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_conn_setup", "(Curl_easy *,connectdata *,int,const Curl_dns_entry *,int)", "", "Argument[1]", "Argument[*1].Field[**cfilter].Field[*conn]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_setup", "(Curl_easy *,connectdata *,int,const Curl_dns_entry *,int)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*next]", "taint", "dfc-generated"] + - ["", "", True, "Curl_conn_setup", "(Curl_easy *,connectdata *,int,const Curl_dns_entry *,int)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*sockindex]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_shutdown_timeleft", "(connectdata *,curltime *)", "", "Argument[*0].Field[*shutdown].Field[*timeout_ms]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_conn_shutdown_timeleft", "(connectdata *,curltime *)", "", "Argument[*1].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_conn_shutdown_timeleft", "(connectdata *,curltime *)", "", "Argument[*1].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_conn_shutdown_timeleft", "(connectdata *,curltime *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_conn_tcp_listen_set", "(Curl_easy *,connectdata *,int,curl_socket_t *)", "", "Argument[*3]", "Argument[*1].Field[*sock]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_tcp_listen_set", "(Curl_easy *,connectdata *,int,curl_socket_t *)", "", "Argument[1]", "Argument[*1].Field[**cfilter].Field[*conn]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_tcp_listen_set", "(Curl_easy *,connectdata *,int,curl_socket_t *)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*next]", "taint", "dfc-generated"] + - ["", "", True, "Curl_conn_tcp_listen_set", "(Curl_easy *,connectdata *,int,curl_socket_t *)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*sockindex]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_tcp_listen_set", "(Curl_easy *,connectdata *,int,curl_socket_t *)", "", "Argument[2]", "Argument[*1].Field[*cfilter]", "taint", "dfc-generated"] + - ["", "", True, "Curl_conn_tcp_listen_set", "(Curl_easy *,connectdata *,int,curl_socket_t *)", "", "Argument[3]", "Argument[*1].Field[*sock]", "taint", "dfc-generated"] + - ["", "", True, "Curl_conn_tcp_listen_set", "(Curl_easy *,connectdata *,int,curl_socket_t *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_conn_upkeep", "(Curl_easy *,connectdata *,curltime *)", "", "Argument[*2]", "Argument[*1].Field[*keepalive]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_upkeep", "(Curl_easy *,connectdata *,curltime *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_upkeep", "(Curl_easy *,connectdata *,curltime *)", "", "Argument[1]", "Argument[*0].Field[*conn]", "value", "dfc-generated"] + - ["", "", True, "Curl_conn_upkeep", "(Curl_easy *,connectdata *,curltime *)", "", "Argument[2]", "Argument[*1].Field[*keepalive]", "taint", "dfc-generated"] + - ["", "", True, "Curl_conn_upkeep", "(Curl_easy *,connectdata *,curltime *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_connect", "(Curl_easy *,bool *,bool *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_connect", "(Curl_easy *,bool *,bool *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_connect_only_attach", "(Curl_easy *)", "", "Argument[*0]", "Argument[*0].Field[*conn_queue].Field[**_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_connect_only_attach", "(Curl_easy *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_cookie_add", "(Curl_easy *,CookieInfo *,bool,bool,const char *,const char *,const char *,bool)", "", "Argument[*6]", "ReturnValue[*].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "Curl_cookie_add", "(Curl_easy *,CookieInfo *,bool,bool,const char *,const char *,const char *,bool)", "", "Argument[6]", "ReturnValue[*].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "Curl_cookie_getlist", "(Curl_easy *,CookieInfo *,const char *,const char *,bool,Curl_llist *)", "", "Argument[*2]", "Argument[*1].Field[*cookielist]", "taint", "dfc-generated"] + - ["", "", True, "Curl_cookie_getlist", "(Curl_easy *,CookieInfo *,const char *,const char *,bool,Curl_llist *)", "", "Argument[2]", "Argument[*1].Field[*cookielist]", "taint", "dfc-generated"] + - ["", "", True, "Curl_cookie_getlist", "(Curl_easy *,CookieInfo *,const char *,const char *,bool,Curl_llist *)", "", "Argument[5]", "Argument[*5].Field[**_head].Field[*_list]", "value", "dfc-generated"] + - ["", "", True, "Curl_cookie_getlist", "(Curl_easy *,CookieInfo *,const char *,const char *,bool,Curl_llist *)", "", "Argument[5]", "Argument[*5].Field[**_tail].Field[*_list]", "value", "dfc-generated"] + - ["", "", True, "Curl_cookie_init", "(Curl_easy *,const char *,CookieInfo *,bool)", "", "Argument[*2]", "ReturnValue[*]", "value", "df-generated"] + - ["", "", True, "Curl_cookie_init", "(Curl_easy *,const char *,CookieInfo *,bool)", "", "Argument[2]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_cookie_init", "(Curl_easy *,const char *,CookieInfo *,bool)", "", "Argument[3]", "Argument[*2].Field[*newsession]", "value", "dfc-generated"] + - ["", "", True, "Curl_cookie_init", "(Curl_easy *,const char *,CookieInfo *,bool)", "", "Argument[3]", "ReturnValue[*].Field[*newsession]", "value", "dfc-generated"] + - ["", "", True, "Curl_copy_header_value", "(const char *)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_copy_header_value", "(const char *)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "Curl_cpool_add_conn", "(Curl_easy *,connectdata *)", "", "Argument[1]", "Argument[*1].Field[*cpool_node].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_check_limits", "(Curl_easy *,connectdata *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_disconnect", "(Curl_easy *,connectdata *,bool)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_disconnect", "(Curl_easy *,connectdata *,bool)", "", "Argument[1]", "Argument[*0].Field[*conn]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_disconnect", "(Curl_easy *,connectdata *,bool)", "", "Argument[1]", "Argument[*1].Field[*cpool_node].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_do_locked", "(Curl_easy *,connectdata *,Curl_cpool_conn_do_cb *,void *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_do_locked", "(Curl_easy *,connectdata *,Curl_cpool_conn_do_cb *,void *)", "", "Argument[1]", "Argument[*0].Field[*conn]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_do_locked", "(Curl_easy *,connectdata *,Curl_cpool_conn_do_cb *,void *)", "", "Argument[1]", "Argument[*1].Field[*cpool_node].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_init", "(cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t)", "", "Argument[*2]", "Argument[*0].Field[**idata].Field[**multi]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_init", "(cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t)", "", "Argument[*2]", "Argument[*0].Field[**multi]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_init", "(cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t)", "", "Argument[*3]", "Argument[*0].Field[**share]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_init", "(cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t)", "", "Argument[1]", "Argument[*0].Field[*disconnect_cb]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_init", "(cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t)", "", "Argument[2]", "Argument[*0].Field[**idata].Field[*multi]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_init", "(cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t)", "", "Argument[2]", "Argument[*0].Field[*multi]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_init", "(cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t)", "", "Argument[3]", "Argument[*0].Field[*share]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_init", "(cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t)", "", "Argument[4]", "Argument[*0].Field[*dest2bundle].Field[*slots]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_prune_dead", "(Curl_easy *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_setfds", "(cpool *,fd_set *,fd_set *,int *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_cpool_upkeep", "(void *)", "", "Argument[*0]", "Argument[*0].Field[*conn_queue].Field[**_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_cpool_upkeep", "(void *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_creader_add", "(Curl_easy *,Curl_creader *)", "", "Argument[*0].Field[*req].Field[**reader_stack]", "Argument[*1].Field[**next]", "value", "dfc-generated"] + - ["", "", True, "Curl_creader_add", "(Curl_easy *,Curl_creader *)", "", "Argument[*0].Field[*req].Field[*reader_stack]", "Argument[*1].Field[*next]", "value", "dfc-generated"] + - ["", "", True, "Curl_creader_create", "(Curl_creader **,Curl_easy *,const Curl_crtype *,Curl_creader_phase)", "", "Argument[*2]", "Argument[**0].Field[**crt]", "value", "dfc-generated"] + - ["", "", True, "Curl_creader_create", "(Curl_creader **,Curl_easy *,const Curl_crtype *,Curl_creader_phase)", "", "Argument[2]", "Argument[**0].Field[*crt]", "value", "dfc-generated"] + - ["", "", True, "Curl_creader_create", "(Curl_creader **,Curl_easy *,const Curl_crtype *,Curl_creader_phase)", "", "Argument[3]", "Argument[**0].Field[*phase]", "value", "dfc-generated"] + - ["", "", True, "Curl_creader_get_by_type", "(Curl_easy *,const Curl_crtype *)", "", "Argument[*0].Field[*req].Field[**reader_stack]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_creader_get_by_type", "(Curl_easy *,const Curl_crtype *)", "", "Argument[*0].Field[*req].Field[*reader_stack]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_creader_set", "(Curl_easy *,Curl_creader *)", "", "Argument[1]", "Argument[*0].Field[*req].Field[*reader_stack]", "value", "dfc-generated"] + - ["", "", True, "Curl_creader_set_rewind", "(Curl_easy *,bool)", "", "Argument[1]", "Argument[*0].Field[*req].Field[*rewind_read]", "taint", "dfc-generated"] + - ["", "", True, "Curl_creader_will_rewind", "(Curl_easy *)", "", "Argument[*0].Field[*req].Field[*rewind_read]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_cwriter_add", "(Curl_easy *,Curl_cwriter *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_cwriter_create", "(Curl_cwriter **,Curl_easy *,const Curl_cwtype *,Curl_cwriter_phase)", "", "Argument[*2]", "Argument[**0].Field[**cwt]", "value", "dfc-generated"] + - ["", "", True, "Curl_cwriter_create", "(Curl_cwriter **,Curl_easy *,const Curl_cwtype *,Curl_cwriter_phase)", "", "Argument[2]", "Argument[**0].Field[*cwt]", "value", "dfc-generated"] + - ["", "", True, "Curl_cwriter_create", "(Curl_cwriter **,Curl_easy *,const Curl_cwtype *,Curl_cwriter_phase)", "", "Argument[3]", "Argument[**0].Field[*phase]", "value", "dfc-generated"] + - ["", "", True, "Curl_cwriter_get_by_name", "(Curl_easy *,const char *)", "", "Argument[*0].Field[*req].Field[**writer_stack]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_cwriter_get_by_name", "(Curl_easy *,const char *)", "", "Argument[*0].Field[*req].Field[*writer_stack]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_cwriter_get_by_type", "(Curl_easy *,const Curl_cwtype *)", "", "Argument[*0].Field[*req].Field[**writer_stack]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_cwriter_get_by_type", "(Curl_easy *,const Curl_cwtype *)", "", "Argument[*0].Field[*req].Field[*writer_stack]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_dyn_add", "(dynbuf *,const char *)", "", "Argument[*1]", "Argument[*0].Field[**bufr]", "value", "dfc-generated"] + - ["", "", True, "Curl_dyn_add", "(dynbuf *,const char *)", "", "Argument[1]", "Argument[*0].Field[**bufr]", "taint", "dfc-generated"] + - ["", "", True, "Curl_dyn_addn", "(dynbuf *,const void *,size_t)", "", "Argument[*1]", "Argument[*0].Field[**bufr]", "value", "dfc-generated"] + - ["", "", True, "Curl_dyn_addn", "(dynbuf *,const void *,size_t)", "", "Argument[1]", "Argument[*0].Field[**bufr]", "taint", "dfc-generated"] + - ["", "", True, "Curl_dyn_addn", "(dynbuf *,const void *,size_t)", "", "Argument[2]", "Argument[*0].Field[*allc]", "taint", "dfc-generated"] + - ["", "", True, "Curl_dyn_addn", "(dynbuf *,const void *,size_t)", "", "Argument[2]", "Argument[*0].Field[*leng]", "taint", "dfc-generated"] + - ["", "", True, "Curl_dyn_free", "(dynbuf *)", "", "Argument[*0].Field[*allc]", "Argument[*0].Field[*leng]", "value", "dfc-generated"] + - ["", "", True, "Curl_dyn_init", "(dynbuf *,size_t)", "", "Argument[1]", "Argument[*0].Field[*toobig]", "value", "dfc-generated"] + - ["", "", True, "Curl_dyn_len", "(const dynbuf *)", "", "Argument[*0].Field[*leng]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_dyn_ptr", "(const dynbuf *)", "", "Argument[*0].Field[**bufr]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_dyn_ptr", "(const dynbuf *)", "", "Argument[*0].Field[*bufr]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_dyn_setlen", "(dynbuf *,size_t)", "", "Argument[1]", "Argument[*0].Field[*leng]", "value", "dfc-generated"] + - ["", "", True, "Curl_dyn_tail", "(dynbuf *,size_t)", "", "Argument[1]", "Argument[*0].Field[**bufr]", "taint", "dfc-generated"] + - ["", "", True, "Curl_dyn_tail", "(dynbuf *,size_t)", "", "Argument[1]", "Argument[*0].Field[*leng]", "value", "dfc-generated"] + - ["", "", True, "Curl_dyn_take", "(dynbuf *,size_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_dyn_take", "(dynbuf *,size_t *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "Curl_dyn_take", "(dynbuf *,size_t *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "Curl_dyn_uptr", "(const dynbuf *)", "", "Argument[*0].Field[**bufr]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_dyn_uptr", "(const dynbuf *)", "", "Argument[*0].Field[*bufr]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_dyn_vaddf", "(dynbuf *,const char *,va_list)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_dyn_vprintf", "(dynbuf *,const char *,va_list)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_dynhds_add", "(dynhds *,const char *,size_t,const char *,size_t)", "", "Argument[*1]", "Argument[*0].Field[***hds].Field[**value]", "value", "dfc-generated"] + - ["", "", True, "Curl_dynhds_add", "(dynhds *,const char *,size_t,const char *,size_t)", "", "Argument[1]", "Argument[*0].Field[***hds].Field[**value]", "taint", "dfc-generated"] + - ["", "", True, "Curl_dynhds_add", "(dynhds *,const char *,size_t,const char *,size_t)", "", "Argument[4]", "Argument[*0].Field[***hds].Field[*valuelen]", "value", "dfc-generated"] + - ["", "", True, "Curl_dynhds_add", "(dynhds *,const char *,size_t,const char *,size_t)", "", "Argument[4]", "Argument[*0].Field[*strs_len]", "taint", "dfc-generated"] + - ["", "", True, "Curl_dynhds_cadd", "(dynhds *,const char *,const char *)", "", "Argument[*1]", "Argument[*0].Field[***hds].Field[**value]", "value", "dfc-generated"] + - ["", "", True, "Curl_dynhds_cadd", "(dynhds *,const char *,const char *)", "", "Argument[1]", "Argument[*0].Field[***hds].Field[**value]", "taint", "dfc-generated"] + - ["", "", True, "Curl_dynhds_cget", "(dynhds *,const char *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "Curl_dynhds_cget", "(dynhds *,const char *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "Curl_dynhds_count", "(dynhds *)", "", "Argument[*0].Field[*hds_len]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_dynhds_get", "(dynhds *,const char *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "Curl_dynhds_get", "(dynhds *,const char *,size_t)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "Curl_dynhds_getn", "(dynhds *,size_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_dynhds_h1_add_line", "(dynhds *,const char *,size_t)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_dynhds_h1_add_line", "(dynhds *,const char *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_dynhds_h1_add_line", "(dynhds *,const char *,size_t)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_dynhds_h1_cadd_line", "(dynhds *,const char *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_dynhds_h1_cadd_line", "(dynhds *,const char *)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_dynhds_init", "(dynhds *,size_t,size_t)", "", "Argument[*0].Field[*hds_allc]", "Argument[*0].Field[*hds_len]", "value", "dfc-generated"] + - ["", "", True, "Curl_dynhds_init", "(dynhds *,size_t,size_t)", "", "Argument[*0].Field[*strs_len]", "Argument[*0].Field[*hds_allc]", "value", "dfc-generated"] + - ["", "", True, "Curl_dynhds_init", "(dynhds *,size_t,size_t)", "", "Argument[1]", "Argument[*0].Field[*max_entries]", "value", "dfc-generated"] + - ["", "", True, "Curl_dynhds_init", "(dynhds *,size_t,size_t)", "", "Argument[2]", "Argument[*0].Field[*max_strs_size]", "value", "dfc-generated"] + - ["", "", True, "Curl_dynhds_set_opts", "(dynhds *,int)", "", "Argument[1]", "Argument[*0].Field[*opts]", "value", "dfc-generated"] + - ["", "", True, "Curl_dynhds_to_nva", "(dynhds *,size_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_dynhds_to_nva", "(dynhds *,size_t *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "Curl_eventfd", "(curl_socket_t[2],bool)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_fileinfo_cleanup", "(fileinfo *)", "", "Argument[*0].Field[*buf].Field[*allc]", "Argument[*0].Field[*buf].Field[*leng]", "value", "dfc-generated"] + - ["", "", True, "Curl_fopen", "(Curl_easy *,const char *,FILE **,char **)", "", "Argument[*1]", "Argument[**2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_fopen", "(Curl_easy *,const char *,FILE **,char **)", "", "Argument[1]", "Argument[**2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_fopen", "(Curl_easy *,const char *,FILE **,char **)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_ftp_parselist", "(char *,size_t,size_t,void *)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_ftp_parselist", "(char *,size_t,size_t,void *)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_ftp_parselist_data_free", "(ftp_parselist_data **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_ftp_parselist_geterror", "(ftp_parselist_data *)", "", "Argument[*0].Field[*error]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_get_line", "(dynbuf *,FILE *)", "", "Argument[1]", "Argument[*0].Field[**bufr]", "taint", "dfc-generated"] + - ["", "", True, "Curl_get_pathname", "(const char **,char **,const char *)", "", "Argument[**0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_get_pathname", "(const char **,char **,const char *)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_get_pathname", "(const char **,char **,const char *)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_get_pathname", "(const char **,char **,const char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_get_scheme_handler", "(const char *)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_get_scheme_handler", "(const char *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_getdate_capped", "(const char *)", "", "Argument[*0]", "Argument[0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_getdate_capped", "(const char *)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_getdate_capped", "(const char *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_getformdata", "(CURL *,curl_mimepart *,curl_httppost *,curl_read_callback)", "", "Argument[1]", "Argument[*1].Field[**arg].Field[*arg]", "value", "dfc-generated"] + - ["", "", True, "Curl_getformdata", "(CURL *,curl_mimepart *,curl_httppost *,curl_read_callback)", "", "Argument[1]", "Argument[*1].Field[**arg].Field[*parent]", "value", "dfc-generated"] + - ["", "", True, "Curl_getformdata", "(CURL *,curl_mimepart *,curl_httppost *,curl_read_callback)", "", "Argument[1]", "Argument[*1].Field[*arg]", "value", "dfc-generated"] + - ["", "", True, "Curl_getn_scheme_handler", "(const char *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_getn_scheme_handler", "(const char *,size_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_h1_req_parse_init", "(h1_req_parser *,size_t)", "", "Argument[1]", "Argument[*0].Field[*max_line_len]", "value", "dfc-generated"] + - ["", "", True, "Curl_h1_req_parse_init", "(h1_req_parser *,size_t)", "", "Argument[1]", "Argument[*0].Field[*scratch].Field[*toobig]", "value", "dfc-generated"] + - ["", "", True, "Curl_h1_req_parse_read", "(h1_req_parser *,const char *,size_t,const char *,int,CURLcode *)", "", "Argument[*3]", "Argument[*0].Field[**req].Field[**scheme]", "value", "dfc-generated"] + - ["", "", True, "Curl_h1_req_parse_read", "(h1_req_parser *,const char *,size_t,const char *,int,CURLcode *)", "", "Argument[3]", "Argument[*0].Field[**req].Field[**scheme]", "taint", "dfc-generated"] + - ["", "", True, "Curl_h1_req_parse_read", "(h1_req_parser *,const char *,size_t,const char *,int,CURLcode *)", "", "Argument[5]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "Curl_hash_add2", "(Curl_hash *,void *,size_t,void *,Curl_hash_elem_dtor)", "", "Argument[**3]", "ReturnValue[**]", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_add2", "(Curl_hash *,void *,size_t,void *,Curl_hash_elem_dtor)", "", "Argument[*1]", "Argument[**1]", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_add2", "(Curl_hash *,void *,size_t,void *,Curl_hash_elem_dtor)", "", "Argument[*3]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_add2", "(Curl_hash *,void *,size_t,void *,Curl_hash_elem_dtor)", "", "Argument[1]", "Argument[**1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_hash_add2", "(Curl_hash *,void *,size_t,void *,Curl_hash_elem_dtor)", "", "Argument[3]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_add", "(Curl_hash *,void *,size_t,void *)", "", "Argument[**3]", "ReturnValue[**]", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_add", "(Curl_hash *,void *,size_t,void *)", "", "Argument[*1]", "Argument[**1]", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_add", "(Curl_hash *,void *,size_t,void *)", "", "Argument[*3]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_add", "(Curl_hash *,void *,size_t,void *)", "", "Argument[1]", "Argument[**1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_hash_add", "(Curl_hash *,void *,size_t,void *)", "", "Argument[3]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_clean_with_criterium", "(Curl_hash *,void *,..(*)(..))", "", "Argument[*1].Field[*now]", "Argument[*1].Field[*oldest]", "taint", "dfc-generated"] + - ["", "", True, "Curl_hash_count", "(Curl_hash *)", "", "Argument[*0].Field[*size]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_init", "(Curl_hash *,size_t,hash_function,comp_function,Curl_hash_dtor)", "", "Argument[1]", "Argument[*0].Field[*slots]", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_init", "(Curl_hash *,size_t,hash_function,comp_function,Curl_hash_dtor)", "", "Argument[2]", "Argument[*0].Field[*hash_func]", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_init", "(Curl_hash *,size_t,hash_function,comp_function,Curl_hash_dtor)", "", "Argument[3]", "Argument[*0].Field[*comp_func]", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_init", "(Curl_hash *,size_t,hash_function,comp_function,Curl_hash_dtor)", "", "Argument[4]", "Argument[*0].Field[*dtor]", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_next_element", "(Curl_hash_iterator *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "Curl_hash_next_element", "(Curl_hash_iterator *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "Curl_hash_offt_init", "(Curl_hash *,size_t,Curl_hash_dtor)", "", "Argument[1]", "Argument[*0].Field[*slots]", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_offt_init", "(Curl_hash *,size_t,Curl_hash_dtor)", "", "Argument[2]", "Argument[*0].Field[*dtor]", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_offt_set", "(Curl_hash *,curl_off_t,void *)", "", "Argument[**2]", "ReturnValue[**]", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_offt_set", "(Curl_hash *,curl_off_t,void *)", "", "Argument[*2]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_offt_set", "(Curl_hash *,curl_off_t,void *)", "", "Argument[2]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_start_iterate", "(Curl_hash *,Curl_hash_iterator *)", "", "Argument[*0]", "Argument[*1].Field[**hash]", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_start_iterate", "(Curl_hash *,Curl_hash_iterator *)", "", "Argument[0]", "Argument[*1].Field[*hash]", "value", "dfc-generated"] + - ["", "", True, "Curl_hash_str", "(void *,size_t,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_hash_str", "(void *,size_t,size_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_hash_str", "(void *,size_t,size_t)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_hexencode", "(const unsigned char *,size_t,unsigned char *,size_t)", "", "Argument[*0]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_hexencode", "(const unsigned char *,size_t,unsigned char *,size_t)", "", "Argument[0]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_hexencode", "(const unsigned char *,size_t,unsigned char *,size_t)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_hmacit", "(const HMAC_params *,const unsigned char *,const size_t,const unsigned char *,const size_t,unsigned char *)", "", "Argument[*0].Field[*ctxtsize]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "Curl_hmacit", "(const HMAC_params *,const unsigned char *,const size_t,const unsigned char *,const size_t,unsigned char *)", "", "Argument[*0]", "Argument[*5].Field[**hash]", "value", "dfc-generated"] + - ["", "", True, "Curl_hmacit", "(const HMAC_params *,const unsigned char *,const size_t,const unsigned char *,const size_t,unsigned char *)", "", "Argument[0]", "Argument[*5].Field[*hash]", "value", "dfc-generated"] + - ["", "", True, "Curl_hsts_cleanup", "(hsts **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http2_may_switch", "(Curl_easy *,connectdata *,int)", "", "Argument[*1].Field[**cfilter].Field[**next]", "Argument[*1].Field[**cfilter]", "value", "dfc-generated"] + - ["", "", True, "Curl_http2_request_upgrade", "(dynbuf *,Curl_easy *)", "", "Argument[*0].Field[*allc]", "Argument[*0].Field[*leng]", "value", "dfc-generated"] + - ["", "", True, "Curl_http2_switch", "(Curl_easy *,connectdata *,int)", "", "Argument[1]", "Argument[*1].Field[**cfilter].Field[*conn]", "value", "dfc-generated"] + - ["", "", True, "Curl_http2_switch", "(Curl_easy *,connectdata *,int)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*next]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http2_switch", "(Curl_easy *,connectdata *,int)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*sockindex]", "value", "dfc-generated"] + - ["", "", True, "Curl_http2_upgrade", "(Curl_easy *,connectdata *,int,const char *,size_t)", "", "Argument[1]", "Argument[*1].Field[**cfilter].Field[*conn]", "value", "dfc-generated"] + - ["", "", True, "Curl_http2_upgrade", "(Curl_easy *,connectdata *,int,const char *,size_t)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*next]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http2_upgrade", "(Curl_easy *,connectdata *,int,const char *,size_t)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*sockindex]", "value", "dfc-generated"] + - ["", "", True, "Curl_http", "(Curl_easy *,bool *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_http_connect", "(Curl_easy *,bool *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http_decode_status", "(int *,const char *,size_t)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http_decode_status", "(int *,const char *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http_done", "(Curl_easy *,CURLcode,bool)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_http_getsock_do", "(Curl_easy *,connectdata *,curl_socket_t *)", "", "Argument[*0].Field[**conn].Field[*sock]", "Argument[*2]", "value", "dfc-generated"] + - ["", "", True, "Curl_http_method", "(Curl_easy *,connectdata *,const char **,Curl_HttpReq *)", "", "Argument[*0]", "Argument[**2]", "taint", "df-generated"] + - ["", "", True, "Curl_http_method", "(Curl_easy *,connectdata *,const char **,Curl_HttpReq *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "Curl_http_method", "(Curl_easy *,connectdata *,const char **,Curl_HttpReq *)", "", "Argument[*0]", "Argument[*3]", "taint", "df-generated"] + - ["", "", True, "Curl_http_proxy_get_destination", "(Curl_cfilter *,const char **,int *,bool *)", "", "Argument[*1]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http_proxy_get_destination", "(Curl_cfilter *,const char **,int *,bool *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http_proxy_get_destination", "(Curl_cfilter *,const char **,int *,bool *)", "", "Argument[1]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http_req_make2", "(httpreq **,const char *,size_t,CURLU *,const char *)", "", "Argument[*1]", "Argument[**0].Field[*method]", "value", "dfc-generated"] + - ["", "", True, "Curl_http_req_make2", "(httpreq **,const char *,size_t,CURLU *,const char *)", "", "Argument[1]", "Argument[**0].Field[*method]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http_req_make", "(httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t)", "", "Argument[*1]", "Argument[**0].Field[*method]", "value", "dfc-generated"] + - ["", "", True, "Curl_http_req_make", "(httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t)", "", "Argument[*3]", "Argument[**0].Field[**scheme]", "value", "dfc-generated"] + - ["", "", True, "Curl_http_req_make", "(httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t)", "", "Argument[*5]", "Argument[**0].Field[**authority]", "value", "dfc-generated"] + - ["", "", True, "Curl_http_req_make", "(httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t)", "", "Argument[*7]", "Argument[**0].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "Curl_http_req_make", "(httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t)", "", "Argument[1]", "Argument[**0].Field[*method]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http_req_make", "(httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t)", "", "Argument[3]", "Argument[**0].Field[**scheme]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http_req_make", "(httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t)", "", "Argument[5]", "Argument[**0].Field[**authority]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http_req_make", "(httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t)", "", "Argument[7]", "Argument[**0].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http_resp_make", "(http_resp **,int,const char *)", "", "Argument[1]", "Argument[**0].Field[*status]", "value", "dfc-generated"] + - ["", "", True, "Curl_http_write_resp_hd", "(Curl_easy *,const char *,size_t,bool)", "", "Argument[2]", "Argument[*0].Field[*info].Field[*header_size]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http_write_resp_hd", "(Curl_easy *,const char *,size_t,bool)", "", "Argument[2]", "Argument[*0].Field[*req].Field[*allheadercount]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http_write_resp_hd", "(Curl_easy *,const char *,size_t,bool)", "", "Argument[2]", "Argument[*0].Field[*req].Field[*headerbytecount]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http_write_resp_hds", "(Curl_easy *,const char *,size_t,size_t *)", "", "Argument[*1]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http_write_resp_hds", "(Curl_easy *,const char *,size_t,size_t *)", "", "Argument[1]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http_write_resp_hds", "(Curl_easy *,const char *,size_t,size_t *)", "", "Argument[2]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_http_write_resp_hds", "(Curl_easy *,const char *,size_t,size_t *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_httpchunk_free", "(Curl_easy *,Curl_chunker *)", "", "Argument[*1].Field[*trailer].Field[*allc]", "Argument[*1].Field[*trailer].Field[*leng]", "value", "dfc-generated"] + - ["", "", True, "Curl_httpchunk_init", "(Curl_easy *,Curl_chunker *,bool)", "", "Argument[2]", "Argument[*1].Field[*ignore_body]", "value", "dfc-generated"] + - ["", "", True, "Curl_httpchunk_read", "(Curl_easy *,Curl_chunker *,char *,size_t,size_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "Curl_httpchunk_reset", "(Curl_easy *,Curl_chunker *,bool)", "", "Argument[2]", "Argument[*1].Field[*ignore_body]", "value", "dfc-generated"] + - ["", "", True, "Curl_init_dnscache", "(Curl_hash *,size_t)", "", "Argument[1]", "Argument[*0].Field[*slots]", "value", "dfc-generated"] + - ["", "", True, "Curl_init_userdefined", "(Curl_easy *)", "", "Argument[*0].Field[*set].Field[*ssl]", "Argument[*0].Field[*set].Field[*proxy_ssl]", "value", "dfc-generated"] + - ["", "", True, "Curl_ip2addr", "(int,const void *,const char *,int)", "", "Argument[*1]", "Argument[**1]", "value", "dfc-generated"] + - ["", "", True, "Curl_ip2addr", "(int,const void *,const char *,int)", "", "Argument[*2]", "ReturnValue[*].Field[**ai_canonname]", "value", "dfc-generated"] + - ["", "", True, "Curl_ip2addr", "(int,const void *,const char *,int)", "", "Argument[0]", "ReturnValue[*].Field[*ai_family]", "value", "dfc-generated"] + - ["", "", True, "Curl_ip2addr", "(int,const void *,const char *,int)", "", "Argument[1]", "Argument[**1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_ip2addr", "(int,const void *,const char *,int)", "", "Argument[2]", "ReturnValue[*].Field[**ai_canonname]", "taint", "dfc-generated"] + - ["", "", True, "Curl_is_absolute_url", "(const char *,char *,size_t,bool)", "", "Argument[*0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_is_absolute_url", "(const char *,char *,size_t,bool)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_is_absolute_url", "(const char *,char *,size_t,bool)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[**1]", "Argument[*0].Field[**_head].Field[***_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[**1]", "Argument[*0].Field[**_tail].Field[***_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[**1]", "Argument[*2].Field[***_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[*1]", "Argument[*0].Field[**_head].Field[**_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[*1]", "Argument[*0].Field[**_tail].Field[**_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[*1]", "Argument[*2].Field[**_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[0]", "Argument[*0].Field[**_head].Field[*_list]", "value", "dfc-generated"] + - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[0]", "Argument[*0].Field[**_tail].Field[*_list]", "value", "dfc-generated"] + - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[0]", "Argument[*2].Field[*_list]", "value", "dfc-generated"] + - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[1]", "Argument[*0].Field[**_head].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[1]", "Argument[*0].Field[**_tail].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[1]", "Argument[*2].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_llist_count", "(Curl_llist *)", "", "Argument[*0].Field[*_size]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_llist_head", "(Curl_llist *)", "", "Argument[*0].Field[**_head]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_llist_head", "(Curl_llist *)", "", "Argument[*0].Field[*_head]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_llist_init", "(Curl_llist *,Curl_llist_dtor)", "", "Argument[1]", "Argument[*0].Field[*_dtor]", "value", "dfc-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[**2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[**2]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[**2]", "Argument[*3]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[*0]", "Argument[*3]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[*1]", "Argument[*3]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[*2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[*2]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[*2]", "Argument[*3]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[*3]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[*3]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[0]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[0]", "Argument[*3]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[1]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[1]", "Argument[*3]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[2]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[2]", "Argument[*3]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[3]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[3]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_memdup0", "(const char *,size_t)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_memdup0", "(const char *,size_t)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "Curl_memdup", "(const void *,size_t)", "", "Argument[**0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_memdup", "(const void *,size_t)", "", "Argument[*0]", "Argument[**0]", "value", "dfc-generated"] + - ["", "", True, "Curl_memdup", "(const void *,size_t)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_memdup", "(const void *,size_t)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_memdup", "(const void *,size_t)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "Curl_mime_cleanpart", "(curl_mimepart *)", "", "Argument[0]", "Argument[*0].Field[**arg].Field[*arg]", "value", "dfc-generated"] + - ["", "", True, "Curl_mime_cleanpart", "(curl_mimepart *)", "", "Argument[0]", "Argument[*0].Field[*arg]", "value", "dfc-generated"] + - ["", "", True, "Curl_mime_duppart", "(Curl_easy *,curl_mimepart *,const curl_mimepart *)", "", "Argument[1]", "Argument[*1].Field[**arg].Field[*arg]", "value", "dfc-generated"] + - ["", "", True, "Curl_mime_duppart", "(Curl_easy *,curl_mimepart *,const curl_mimepart *)", "", "Argument[1]", "Argument[*1].Field[**arg].Field[*parent]", "value", "dfc-generated"] + - ["", "", True, "Curl_mime_duppart", "(Curl_easy *,curl_mimepart *,const curl_mimepart *)", "", "Argument[1]", "Argument[*1].Field[*arg]", "value", "dfc-generated"] + - ["", "", True, "Curl_mime_read", "(char *,size_t,size_t,void *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_mime_set_subparts", "(curl_mimepart *,curl_mime *,int)", "", "Argument[1]", "Argument[*0].Field[*arg]", "value", "dfc-generated"] + - ["", "", True, "Curl_multi_add_perform", "(Curl_multi *,Curl_easy *,connectdata *)", "", "Argument[0]", "Argument[*1].Field[*multi]", "value", "dfc-generated"] + - ["", "", True, "Curl_multi_add_perform", "(Curl_multi *,Curl_easy *,connectdata *)", "", "Argument[1]", "Argument[*1].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_multi_add_perform", "(Curl_multi *,Curl_easy *,connectdata *)", "", "Argument[1]", "Argument[*1].Field[*multi_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_multi_add_perform", "(Curl_multi *,Curl_easy *,connectdata *)", "", "Argument[2]", "Argument[*1].Field[*conn]", "value", "dfc-generated"] + - ["", "", True, "Curl_multi_handle", "(size_t,size_t,size_t,size_t)", "", "Argument[0]", "ReturnValue[*].Field[*sockhash].Field[*slots]", "value", "dfc-generated"] + - ["", "", True, "Curl_multi_handle", "(size_t,size_t,size_t,size_t)", "", "Argument[2]", "ReturnValue[*].Field[*hostcache].Field[*slots]", "value", "dfc-generated"] + - ["", "", True, "Curl_multi_handle", "(size_t,size_t,size_t,size_t)", "", "Argument[3]", "ReturnValue[*].Field[**ssl_scache].Field[*peer_count]", "value", "dfc-generated"] + - ["", "", True, "Curl_multi_max_concurrent_streams", "(Curl_multi *)", "", "Argument[*0].Field[*max_concurrent_streams]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_multi_pollset_ev", "(Curl_multi *,Curl_easy *,easy_pollset *,easy_pollset *)", "", "Argument[1]", "Argument[*1]", "value", "dfc-generated"] + - ["", "", True, "Curl_multi_xfer_buf_borrow", "(Curl_easy *,char **,size_t *)", "", "Argument[*0]", "Argument[**1]", "taint", "df-generated"] + - ["", "", True, "Curl_multi_xfer_buf_borrow", "(Curl_easy *,char **,size_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_multi_xfer_buf_borrow", "(Curl_easy *,char **,size_t *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "Curl_multi_xfer_sockbuf_borrow", "(Curl_easy *,size_t,char **)", "", "Argument[*0].Field[**multi].Field[**xfer_sockbuf]", "Argument[**2]", "value", "dfc-generated"] + - ["", "", True, "Curl_multi_xfer_sockbuf_borrow", "(Curl_easy *,size_t,char **)", "", "Argument[*0].Field[**multi].Field[*xfer_sockbuf]", "Argument[*2]", "value", "dfc-generated"] + - ["", "", True, "Curl_multi_xfer_sockbuf_borrow", "(Curl_easy *,size_t,char **)", "", "Argument[1]", "Argument[*0].Field[**multi].Field[*xfer_sockbuf_len]", "value", "dfc-generated"] + - ["", "", True, "Curl_multi_xfer_ulbuf_borrow", "(Curl_easy *,char **,size_t *)", "", "Argument[*0]", "Argument[**1]", "taint", "df-generated"] + - ["", "", True, "Curl_multi_xfer_ulbuf_borrow", "(Curl_easy *,char **,size_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_multi_xfer_ulbuf_borrow", "(Curl_easy *,char **,size_t *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "Curl_netrc_cleanup", "(store_netrc *)", "", "Argument[*0].Field[*filebuf].Field[*allc]", "Argument[*0].Field[*filebuf].Field[*leng]", "value", "dfc-generated"] + - ["", "", True, "Curl_node_elem", "(Curl_llist_node *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "Curl_node_elem", "(Curl_llist_node *)", "", "Argument[*0]", "ReturnValue[**]", "taint", "df-generated"] + - ["", "", True, "Curl_node_elem", "(Curl_llist_node *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "Curl_node_llist", "(Curl_llist_node *)", "", "Argument[*0].Field[**_list]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_node_llist", "(Curl_llist_node *)", "", "Argument[*0].Field[*_list]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_node_next", "(Curl_llist_node *)", "", "Argument[*0].Field[**_next]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_node_next", "(Curl_llist_node *)", "", "Argument[*0].Field[*_next]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_node_take_elem", "(Curl_llist_node *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "Curl_node_take_elem", "(Curl_llist_node *)", "", "Argument[*0]", "ReturnValue[**]", "taint", "df-generated"] + - ["", "", True, "Curl_node_take_elem", "(Curl_llist_node *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "Curl_ntlm_core_mk_lm_hash", "(const char *,unsigned char *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_ntlm_core_mk_lmv2_resp", "(unsigned char *,unsigned char *,unsigned char *,unsigned char *)", "", "Argument[*1]", "Argument[*3]", "value", "dfc-generated"] + - ["", "", True, "Curl_ntlm_core_mk_lmv2_resp", "(unsigned char *,unsigned char *,unsigned char *,unsigned char *)", "", "Argument[1]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_ntlm_core_mk_nt_hash", "(const char *,unsigned char *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_ntlm_core_mk_ntlmv2_resp", "(unsigned char *,unsigned char *,ntlmdata *,unsigned char **,unsigned int *)", "", "Argument[*2]", "Argument[*4]", "taint", "df-generated"] + - ["", "", True, "Curl_on_disconnect", "(Curl_easy *,connectdata *,bool)", "", "Argument[2]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_once_resolved", "(Curl_easy *,bool *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_parse_interface", "(const char *,char **,char **,char **)", "", "Argument[*0]", "Argument[**1]", "value", "dfc-generated"] + - ["", "", True, "Curl_parse_interface", "(const char *,char **,char **,char **)", "", "Argument[*0]", "Argument[**2]", "value", "dfc-generated"] + - ["", "", True, "Curl_parse_interface", "(const char *,char **,char **,char **)", "", "Argument[*0]", "Argument[**3]", "value", "dfc-generated"] + - ["", "", True, "Curl_parse_interface", "(const char *,char **,char **,char **)", "", "Argument[0]", "Argument[**1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_parse_interface", "(const char *,char **,char **,char **)", "", "Argument[0]", "Argument[**2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_parse_interface", "(const char *,char **,char **,char **)", "", "Argument[0]", "Argument[**3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_parse_interface", "(const char *,char **,char **,char **)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_parse_interface", "(const char *,char **,char **,char **)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_parse_interface", "(const char *,char **,char **,char **)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_parse_login_details", "(const char *,const size_t,char **,char **,char **)", "", "Argument[*0]", "Argument[**2]", "value", "dfc-generated"] + - ["", "", True, "Curl_parse_login_details", "(const char *,const size_t,char **,char **,char **)", "", "Argument[*0]", "Argument[**3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_parse_login_details", "(const char *,const size_t,char **,char **,char **)", "", "Argument[*0]", "Argument[**4]", "taint", "dfc-generated"] + - ["", "", True, "Curl_parse_login_details", "(const char *,const size_t,char **,char **,char **)", "", "Argument[0]", "Argument[**2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_parse_login_details", "(const char *,const size_t,char **,char **,char **)", "", "Argument[0]", "Argument[**3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_parse_login_details", "(const char *,const size_t,char **,char **,char **)", "", "Argument[0]", "Argument[**4]", "taint", "dfc-generated"] + - ["", "", True, "Curl_parse_login_details", "(const char *,const size_t,char **,char **,char **)", "", "Argument[1]", "Argument[**3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_parse_login_details", "(const char *,const size_t,char **,char **,char **)", "", "Argument[1]", "Argument[**4]", "taint", "dfc-generated"] + - ["", "", True, "Curl_parsenetrc", "(store_netrc *,const char *,char **,char **,char *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_pgrsEarlyData", "(Curl_easy *,curl_off_t)", "", "Argument[1]", "Argument[*0].Field[*progress].Field[*earlydata_sent]", "value", "dfc-generated"] + - ["", "", True, "Curl_pgrsLimitWaitTime", "(pgrs_dir *,curl_off_t,curltime)", "", "Argument[*0].Field[*cur_size]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_pgrsLimitWaitTime", "(pgrs_dir *,curl_off_t,curltime)", "", "Argument[*0].Field[*limit].Field[*start_size]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_pgrsLimitWaitTime", "(pgrs_dir *,curl_off_t,curltime)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_pgrsLimitWaitTime", "(pgrs_dir *,curl_off_t,curltime)", "", "Argument[2].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_pgrsLimitWaitTime", "(pgrs_dir *,curl_off_t,curltime)", "", "Argument[2].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_pgrsTimeWas", "(Curl_easy *,timerid,curltime)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_poll", "(pollfd[],unsigned int,timediff_t)", "", "Argument[0]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_pollfds_add_ps", "(curl_pollfds *,easy_pollset *)", "", "Argument[*1].Field[*sockets]", "Argument[*0].Field[**pfds].Field[*fd]", "value", "dfc-generated"] + - ["", "", True, "Curl_pollfds_add_sock", "(curl_pollfds *,curl_socket_t,short)", "", "Argument[1]", "Argument[*0].Field[**pfds].Field[*fd]", "value", "dfc-generated"] + - ["", "", True, "Curl_pollfds_add_sock", "(curl_pollfds *,curl_socket_t,short)", "", "Argument[2]", "Argument[*0].Field[**pfds].Field[*events]", "value", "dfc-generated"] + - ["", "", True, "Curl_pollfds_init", "(curl_pollfds *,pollfd *,unsigned int)", "", "Argument[*1]", "Argument[*0].Field[**pfds]", "value", "dfc-generated"] + - ["", "", True, "Curl_pollfds_init", "(curl_pollfds *,pollfd *,unsigned int)", "", "Argument[1]", "Argument[*0].Field[*pfds]", "value", "dfc-generated"] + - ["", "", True, "Curl_pollfds_init", "(curl_pollfds *,pollfd *,unsigned int)", "", "Argument[2]", "Argument[*0].Field[*count]", "value", "dfc-generated"] + - ["", "", True, "Curl_pollset_add_socks", "(Curl_easy *,easy_pollset *,..(*)(..))", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_pollset_change", "(Curl_easy *,easy_pollset *,curl_socket_t,int,int)", "", "Argument[2]", "Argument[*1].Field[*sockets]", "value", "dfc-generated"] + - ["", "", True, "Curl_pollset_change", "(Curl_easy *,easy_pollset *,curl_socket_t,int,int)", "", "Argument[3]", "Argument[*1].Field[*actions]", "value", "dfc-generated"] + - ["", "", True, "Curl_pollset_change", "(Curl_easy *,easy_pollset *,curl_socket_t,int,int)", "", "Argument[4]", "Argument[*1].Field[*actions]", "taint", "dfc-generated"] + - ["", "", True, "Curl_pollset_check", "(Curl_easy *,easy_pollset *,curl_socket_t,bool *,bool *)", "", "Argument[*4]", "Argument[*3]", "value", "dfc-generated"] + - ["", "", True, "Curl_pollset_check", "(Curl_easy *,easy_pollset *,curl_socket_t,bool *,bool *)", "", "Argument[4]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_pollset_check", "(Curl_easy *,easy_pollset *,curl_socket_t,bool *,bool *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "Curl_pollset_set", "(Curl_easy *,easy_pollset *,curl_socket_t,bool,bool)", "", "Argument[2]", "Argument[*1].Field[*sockets]", "value", "dfc-generated"] + - ["", "", True, "Curl_pp_flushsend", "(Curl_easy *,pingpong *)", "", "Argument[*1].Field[*sendsize]", "Argument[*1].Field[*sendleft]", "value", "dfc-generated"] + - ["", "", True, "Curl_pp_getsock", "(Curl_easy *,pingpong *,curl_socket_t *)", "", "Argument[*0].Field[**conn].Field[*sock]", "Argument[*2]", "value", "dfc-generated"] + - ["", "", True, "Curl_pp_readresp", "(Curl_easy *,int,pingpong *,int *,size_t *)", "", "Argument[*2]", "Argument[*4]", "taint", "df-generated"] + - ["", "", True, "Curl_pp_state_timeout", "(Curl_easy *,pingpong *,bool)", "", "Argument[*0].Field[*set].Field[*server_response_timeout]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_pp_state_timeout", "(Curl_easy *,pingpong *,bool)", "", "Argument[*0].Field[*set].Field[*timeout]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_pp_vsendf", "(Curl_easy *,pingpong *,const char *,va_list)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_psl_use", "(Curl_easy *)", "", "Argument[*0].Field[**psl].Field[**psl]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_psl_use", "(Curl_easy *)", "", "Argument[*0].Field[**psl].Field[*psl]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_rand_alnum", "(Curl_easy *,unsigned char *,size_t)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_rand_bytes", "(Curl_easy *,unsigned char *,size_t)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_rand_hex", "(Curl_easy *,unsigned char *,size_t)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_raw_tolower", "(char)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_raw_toupper", "(char)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_read16_be", "(const unsigned char *)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_read16_be", "(const unsigned char *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_read16_le", "(const unsigned char *)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_read16_le", "(const unsigned char *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_read32_le", "(const unsigned char *)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_read32_le", "(const unsigned char *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_req_hard_reset", "(SingleRequest *,Curl_easy *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_req_send", "(Curl_easy *,dynbuf *)", "", "Argument[*1].Field[*leng]", "Argument[*0].Field[*req].Field[*sendbuf_hds_len]", "taint", "dfc-generated"] + - ["", "", True, "Curl_req_send", "(Curl_easy *,dynbuf *)", "", "Argument[*1].Field[*leng]", "Argument[*0].Field[*req].Field[*writebytecount]", "taint", "dfc-generated"] + - ["", "", True, "Curl_req_send", "(Curl_easy *,dynbuf *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_req_send_more", "(Curl_easy *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_req_soft_reset", "(SingleRequest *,Curl_easy *)", "", "Argument[*1].Field[*set].Field[*upload_buffer_size]", "Argument[*0].Field[*sendbuf].Field[*chunk_size]", "value", "dfc-generated"] + - ["", "", True, "Curl_req_start", "(SingleRequest *,Curl_easy *)", "", "Argument[*1].Field[*set].Field[*upload_buffer_size]", "Argument[*0].Field[*sendbuf].Field[*chunk_size]", "value", "dfc-generated"] + - ["", "", True, "Curl_resolv", "(Curl_easy *,const char *,int,bool,Curl_dns_entry **)", "", "Argument[*1]", "Argument[**4].Field[**addr].Field[**ai_canonname]", "value", "dfc-generated"] + - ["", "", True, "Curl_resolv", "(Curl_easy *,const char *,int,bool,Curl_dns_entry **)", "", "Argument[*1]", "Argument[**4].Field[*hostname]", "value", "dfc-generated"] + - ["", "", True, "Curl_resolv", "(Curl_easy *,const char *,int,bool,Curl_dns_entry **)", "", "Argument[1]", "Argument[**4].Field[**addr].Field[**ai_canonname]", "taint", "dfc-generated"] + - ["", "", True, "Curl_resolv", "(Curl_easy *,const char *,int,bool,Curl_dns_entry **)", "", "Argument[1]", "Argument[**4].Field[*hostname]", "taint", "dfc-generated"] + - ["", "", True, "Curl_resolv", "(Curl_easy *,const char *,int,bool,Curl_dns_entry **)", "", "Argument[2]", "Argument[**4].Field[*hostport]", "value", "dfc-generated"] + - ["", "", True, "Curl_resolv_check", "(Curl_easy *,Curl_dns_entry **)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_resolv_timeout", "(Curl_easy *,const char *,int,Curl_dns_entry **,timediff_t)", "", "Argument[*1]", "Argument[**3].Field[**addr].Field[**ai_canonname]", "value", "dfc-generated"] + - ["", "", True, "Curl_resolv_timeout", "(Curl_easy *,const char *,int,Curl_dns_entry **,timediff_t)", "", "Argument[*1]", "Argument[**3].Field[*hostname]", "value", "dfc-generated"] + - ["", "", True, "Curl_resolv_timeout", "(Curl_easy *,const char *,int,Curl_dns_entry **,timediff_t)", "", "Argument[1]", "Argument[**3].Field[**addr].Field[**ai_canonname]", "taint", "dfc-generated"] + - ["", "", True, "Curl_resolv_timeout", "(Curl_easy *,const char *,int,Curl_dns_entry **,timediff_t)", "", "Argument[1]", "Argument[**3].Field[*hostname]", "taint", "dfc-generated"] + - ["", "", True, "Curl_resolv_timeout", "(Curl_easy *,const char *,int,Curl_dns_entry **,timediff_t)", "", "Argument[2]", "Argument[**3].Field[*hostport]", "value", "dfc-generated"] + - ["", "", True, "Curl_resolv_unlink", "(Curl_easy *,Curl_dns_entry **)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_resolver_duphandle", "(Curl_easy *,void **,void *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_resolver_init", "(Curl_easy *,void **)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_retry_request", "(Curl_easy *,char **)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_rtsp_parseheader", "(Curl_easy *,const char *)", "", "Argument[*1]", "Argument[*0].Field[*set].Field[**str]", "value", "dfc-generated"] + - ["", "", True, "Curl_rtsp_parseheader", "(Curl_easy *,const char *)", "", "Argument[*1]", "Argument[*0].Field[*state].Field[*rtsp_CSeq_recv]", "taint", "dfc-generated"] + - ["", "", True, "Curl_rtsp_parseheader", "(Curl_easy *,const char *)", "", "Argument[1]", "Argument[*0].Field[*set].Field[**str]", "taint", "dfc-generated"] + - ["", "", True, "Curl_rtsp_parseheader", "(Curl_easy *,const char *)", "", "Argument[1]", "Argument[*0].Field[*state].Field[*rtsp_CSeq_recv]", "taint", "dfc-generated"] + - ["", "", True, "Curl_sasl_init", "(SASL *,Curl_easy *,const SASLproto *)", "", "Argument[*2].Field[*defmechs]", "Argument[*0].Field[*prefmech]", "value", "dfc-generated"] + - ["", "", True, "Curl_sasl_init", "(SASL *,Curl_easy *,const SASLproto *)", "", "Argument[*2]", "Argument[*0].Field[**params]", "value", "dfc-generated"] + - ["", "", True, "Curl_sasl_init", "(SASL *,Curl_easy *,const SASLproto *)", "", "Argument[2]", "Argument[*0].Field[*params]", "value", "dfc-generated"] + - ["", "", True, "Curl_sasl_start", "(SASL *,Curl_easy *,bool,saslprogress *)", "", "Argument[2]", "Argument[*0].Field[*force_ir]", "value", "dfc-generated"] + - ["", "", True, "Curl_senddata", "(Curl_easy *,const void *,size_t,size_t *)", "", "Argument[*0]", "Argument[*0].Field[*conn_queue].Field[**_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_senddata", "(Curl_easy *,const void *,size_t,size_t *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_sendrecv", "(Curl_easy *,curltime *)", "", "Argument[*1]", "Argument[*0].Field[*state].Field[*keeps_speed]", "value", "dfc-generated"] + - ["", "", True, "Curl_sendrecv", "(Curl_easy *,curltime *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_sendrecv", "(Curl_easy *,curltime *)", "", "Argument[1]", "Argument[*0].Field[*state].Field[*keeps_speed]", "taint", "dfc-generated"] + - ["", "", True, "Curl_sendrecv", "(Curl_easy *,curltime *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_set_in_callback", "(Curl_easy *,bool)", "", "Argument[1]", "Argument[*0].Field[**multi].Field[*in_callback]", "value", "dfc-generated"] + - ["", "", True, "Curl_setblobopt", "(curl_blob **,const curl_blob *)", "", "Argument[*1]", "Argument[**0]", "value", "df-generated"] + - ["", "", True, "Curl_setblobopt", "(curl_blob **,const curl_blob *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_setblobopt", "(curl_blob **,const curl_blob *)", "", "Argument[1]", "Argument[**0].Field[**data]", "taint", "dfc-generated"] + - ["", "", True, "Curl_setblobopt", "(curl_blob **,const curl_blob *)", "", "Argument[1]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_setblobopt", "(curl_blob **,const curl_blob *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_setstropt", "(char **,const char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_shutdown_start", "(Curl_easy *,int,curltime *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_shutdown_timeleft", "(connectdata *,int,curltime *)", "", "Argument[*0].Field[*shutdown].Field[*timeout_ms]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_shutdown_timeleft", "(connectdata *,int,curltime *)", "", "Argument[*2].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_shutdown_timeleft", "(connectdata *,int,curltime *)", "", "Argument[*2].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_shutdown_timeleft", "(connectdata *,int,curltime *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_slist_append_nodup", "(curl_slist *,char *)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_slist_append_nodup", "(curl_slist *,char *)", "", "Argument[*1]", "Argument[*0].Field[**next].Field[**data]", "value", "dfc-generated"] + - ["", "", True, "Curl_slist_append_nodup", "(curl_slist *,char *)", "", "Argument[*1]", "ReturnValue[*].Field[**data]", "value", "dfc-generated"] + - ["", "", True, "Curl_slist_append_nodup", "(curl_slist *,char *)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_slist_append_nodup", "(curl_slist *,char *)", "", "Argument[1]", "Argument[*0].Field[**next].Field[*data]", "value", "dfc-generated"] + - ["", "", True, "Curl_slist_append_nodup", "(curl_slist *,char *)", "", "Argument[1]", "ReturnValue[*].Field[*data]", "value", "dfc-generated"] + - ["", "", True, "Curl_slist_duplicate", "(curl_slist *)", "", "Argument[*0].Field[**next].Field[**next]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "Curl_slist_duplicate", "(curl_slist *)", "", "Argument[*0].Field[**next]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "Curl_sock_assign_addr", "(Curl_sockaddr_ex *,const Curl_addrinfo *,int)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_socket_open", "(Curl_easy *,const Curl_addrinfo *,Curl_sockaddr_ex *,int,curl_socket_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "Curl_speedcheck", "(Curl_easy *,curltime)", "", "Argument[1]", "Argument[*0].Field[*state].Field[*keeps_speed]", "value", "dfc-generated"] + - ["", "", True, "Curl_splay", "(curltime,Curl_tree *)", "", "Argument[*1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "Curl_splay", "(curltime,Curl_tree *)", "", "Argument[*1]", "ReturnValue[*]", "value", "df-generated"] + - ["", "", True, "Curl_splay", "(curltime,Curl_tree *)", "", "Argument[1]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_splay", "(curltime,Curl_tree *)", "", "Argument[1]", "ReturnValue", "value", "df-generated"] + - ["", "", True, "Curl_splay", "(curltime,Curl_tree *)", "", "Argument[1]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "Curl_splayget", "(Curl_tree *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "Curl_splayget", "(Curl_tree *)", "", "Argument[*0]", "ReturnValue[**]", "taint", "df-generated"] + - ["", "", True, "Curl_splayget", "(Curl_tree *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "Curl_splaygetbest", "(curltime,Curl_tree *,Curl_tree **)", "", "Argument[*1]", "Argument[**2]", "value", "df-generated"] + - ["", "", True, "Curl_splaygetbest", "(curltime,Curl_tree *,Curl_tree **)", "", "Argument[*1]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "Curl_splaygetbest", "(curltime,Curl_tree *,Curl_tree **)", "", "Argument[*1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "Curl_splaygetbest", "(curltime,Curl_tree *,Curl_tree **)", "", "Argument[*1]", "ReturnValue[*]", "value", "df-generated"] + - ["", "", True, "Curl_splaygetbest", "(curltime,Curl_tree *,Curl_tree **)", "", "Argument[1]", "Argument[**2]", "taint", "df-generated"] + - ["", "", True, "Curl_splaygetbest", "(curltime,Curl_tree *,Curl_tree **)", "", "Argument[1]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_splaygetbest", "(curltime,Curl_tree *,Curl_tree **)", "", "Argument[1]", "Argument[*2]", "value", "df-generated"] + - ["", "", True, "Curl_splaygetbest", "(curltime,Curl_tree *,Curl_tree **)", "", "Argument[1]", "ReturnValue", "value", "df-generated"] + - ["", "", True, "Curl_splaygetbest", "(curltime,Curl_tree *,Curl_tree **)", "", "Argument[1]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[*1]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[*1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[*1]", "ReturnValue[*]", "value", "df-generated"] + - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[*2]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[*2]", "ReturnValue[*]", "value", "df-generated"] + - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[0]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[1]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[1]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[1]", "ReturnValue", "value", "df-generated"] + - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[1]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[2]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[2]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[2]", "ReturnValue", "value", "df-generated"] + - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[2]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "Curl_splayremove", "(Curl_tree *,Curl_tree *,Curl_tree **)", "", "Argument[*0]", "Argument[**2]", "value", "df-generated"] + - ["", "", True, "Curl_splayremove", "(Curl_tree *,Curl_tree *,Curl_tree **)", "", "Argument[0]", "Argument[*2]", "value", "df-generated"] + - ["", "", True, "Curl_splayremove", "(Curl_tree *,Curl_tree *,Curl_tree **)", "", "Argument[1]", "Argument[*1].Field[**samen].Field[*samen]", "value", "dfc-generated"] + - ["", "", True, "Curl_splayremove", "(Curl_tree *,Curl_tree *,Curl_tree **)", "", "Argument[1]", "Argument[*1].Field[*samen]", "value", "dfc-generated"] + - ["", "", True, "Curl_splayset", "(Curl_tree *,void *)", "", "Argument[**1]", "Argument[*0].Field[***ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_splayset", "(Curl_tree *,void *)", "", "Argument[*1]", "Argument[*0].Field[**ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_splayset", "(Curl_tree *,void *)", "", "Argument[1]", "Argument[*0].Field[*ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_cf_get_config", "(Curl_cfilter *,Curl_easy *)", "", "Argument[*1].Field[*set].Field[*proxy_ssl]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_cf_get_config", "(Curl_cfilter *,Curl_easy *)", "", "Argument[*1].Field[*set].Field[*ssl]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_cf_get_primary_config", "(Curl_cfilter *)", "", "Argument[*0].Field[**conn].Field[*proxy_ssl_config]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_cf_get_primary_config", "(Curl_cfilter *)", "", "Argument[*0].Field[**conn].Field[*ssl_config]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_cfilter_add", "(Curl_easy *,connectdata *,int)", "", "Argument[1]", "Argument[*1].Field[**cfilter].Field[*conn]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_cfilter_add", "(Curl_easy *,connectdata *,int)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*next]", "taint", "dfc-generated"] + - ["", "", True, "Curl_ssl_cfilter_add", "(Curl_easy *,connectdata *,int)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*sockindex]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_easy_config_init", "(Curl_easy *)", "", "Argument[*0].Field[*set].Field[*ssl]", "Argument[*0].Field[*set].Field[*proxy_ssl]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_peer_init", "(ssl_peer *,Curl_cfilter *,const char *,int)", "", "Argument[*1].Field[**conn].Field[*remote_port]", "Argument[*0].Field[*port]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_peer_init", "(ssl_peer *,Curl_cfilter *,const char *,int)", "", "Argument[3]", "Argument[*0].Field[*transport]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_scache_create", "(size_t,size_t,Curl_ssl_scache **)", "", "Argument[0]", "Argument[**2].Field[*peer_count]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_scache_create", "(size_t,size_t,Curl_ssl_scache **)", "", "Argument[1]", "Argument[**2].Field[**peers].Field[*max_sessions]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_scache_get_obj", "(Curl_cfilter *,Curl_easy *,const char *,void **)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_ssl_scache_put", "(Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *)", "", "Argument[*3]", "Argument[*3].Field[*list].Field[**_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_scache_put", "(Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *)", "", "Argument[3]", "Argument[*3].Field[*list].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_scache_return", "(Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *)", "", "Argument[*3]", "Argument[*3].Field[*list].Field[**_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_scache_return", "(Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *)", "", "Argument[3]", "Argument[*3].Field[*list].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_session_create2", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **)", "", "Argument[*0]", "Argument[**8].Field[**sdata]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_session_create2", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **)", "", "Argument[*6]", "Argument[**8].Field[**quic_tp]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_session_create2", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **)", "", "Argument[0]", "Argument[**8].Field[*sdata]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_session_create2", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **)", "", "Argument[1]", "Argument[**8].Field[*sdata_len]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_session_create2", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **)", "", "Argument[2]", "Argument[**8].Field[*ietf_tls_id]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_session_create2", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **)", "", "Argument[4]", "Argument[**8].Field[*valid_until]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_session_create2", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **)", "", "Argument[5]", "Argument[**8].Field[*earlydata_max]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_session_create2", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **)", "", "Argument[6]", "Argument[**8].Field[*quic_tp]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_session_create2", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **)", "", "Argument[7]", "Argument[**8].Field[*quic_tp_len]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_session_create", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **)", "", "Argument[*0]", "Argument[**6].Field[**sdata]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_session_create", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **)", "", "Argument[0]", "Argument[**6].Field[*sdata]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_session_create", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **)", "", "Argument[1]", "Argument[**6].Field[*sdata_len]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_session_create", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **)", "", "Argument[2]", "Argument[**6].Field[*ietf_tls_id]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_session_create", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **)", "", "Argument[4]", "Argument[**6].Field[*valid_until]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_session_create", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **)", "", "Argument[5]", "Argument[**6].Field[*earlydata_max]", "value", "dfc-generated"] + - ["", "", True, "Curl_ssl_supports", "(Curl_easy *,unsigned int)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_str2addr", "(char *,int)", "", "Argument[*0]", "ReturnValue[*].Field[**ai_canonname]", "value", "dfc-generated"] + - ["", "", True, "Curl_str2addr", "(char *,int)", "", "Argument[0]", "ReturnValue[*].Field[**ai_canonname]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_newline", "(char **)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_newline", "(char **)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_newline", "(char **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_number", "(char **,size_t *,size_t)", "", "Argument[**0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_number", "(char **,size_t *,size_t)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_number", "(char **,size_t *,size_t)", "", "Argument[*0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_number", "(char **,size_t *,size_t)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_number", "(char **,size_t *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_number", "(char **,size_t *,size_t)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_quotedword", "(char **,Curl_str *,const size_t)", "", "Argument[**0]", "Argument[*1].Field[**str]", "value", "dfc-generated"] + - ["", "", True, "Curl_str_single", "(char **,char)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_single", "(char **,char)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_single", "(char **,char)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_singlespace", "(char **)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_singlespace", "(char **)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_singlespace", "(char **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_until", "(char **,Curl_str *,const size_t,char)", "", "Argument[**0]", "Argument[*1].Field[**str]", "value", "dfc-generated"] + - ["", "", True, "Curl_str_until", "(char **,Curl_str *,const size_t,char)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_until", "(char **,Curl_str *,const size_t,char)", "", "Argument[*0]", "Argument[*1].Field[*str]", "value", "dfc-generated"] + - ["", "", True, "Curl_str_until", "(char **,Curl_str *,const size_t,char)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_until", "(char **,Curl_str *,const size_t,char)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_until", "(char **,Curl_str *,const size_t,char)", "", "Argument[0]", "Argument[*1].Field[*str]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_word", "(char **,Curl_str *,const size_t)", "", "Argument[**0]", "Argument[*1].Field[**str]", "value", "dfc-generated"] + - ["", "", True, "Curl_str_word", "(char **,Curl_str *,const size_t)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_word", "(char **,Curl_str *,const size_t)", "", "Argument[*0]", "Argument[*1].Field[*str]", "value", "dfc-generated"] + - ["", "", True, "Curl_str_word", "(char **,Curl_str *,const size_t)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_word", "(char **,Curl_str *,const size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_str_word", "(char **,Curl_str *,const size_t)", "", "Argument[0]", "Argument[*1].Field[*str]", "taint", "dfc-generated"] + - ["", "", True, "Curl_strerror", "(int,char *,size_t)", "", "Argument[*1]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "Curl_strerror", "(int,char *,size_t)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "Curl_strntolower", "(char *,const char *,size_t)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_strntolower", "(char *,const char *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_strntolower", "(char *,const char *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_strntoupper", "(char *,const char *,size_t)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_strntoupper", "(char *,const char *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_strntoupper", "(char *,const char *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_thread_destroy", "(pthread_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_thread_join", "(pthread_t **)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_thread_join", "(pthread_t **)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_thread_join", "(pthread_t **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_timediff", "(curltime,curltime)", "", "Argument[0].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timediff", "(curltime,curltime)", "", "Argument[0].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timediff", "(curltime,curltime)", "", "Argument[1].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timediff", "(curltime,curltime)", "", "Argument[1].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timediff_ceil", "(curltime,curltime)", "", "Argument[0].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timediff_ceil", "(curltime,curltime)", "", "Argument[0].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timediff_ceil", "(curltime,curltime)", "", "Argument[1].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timediff_ceil", "(curltime,curltime)", "", "Argument[1].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timediff_us", "(curltime,curltime)", "", "Argument[0].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timediff_us", "(curltime,curltime)", "", "Argument[0].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timediff_us", "(curltime,curltime)", "", "Argument[1].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timediff_us", "(curltime,curltime)", "", "Argument[1].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timeleft", "(Curl_easy *,curltime *,bool)", "", "Argument[*0].Field[*set].Field[*connecttimeout]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timeleft", "(Curl_easy *,curltime *,bool)", "", "Argument[*0].Field[*set].Field[*timeout]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timeleft", "(Curl_easy *,curltime *,bool)", "", "Argument[*1].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timeleft", "(Curl_easy *,curltime *,bool)", "", "Argument[*1].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timeleft", "(Curl_easy *,curltime *,bool)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "Curl_timestrcmp", "(const char *,const char *)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timestrcmp", "(const char *,const char *)", "", "Argument[*1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timestrcmp", "(const char *,const char *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_timestrcmp", "(const char *,const char *)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "Curl_updatesocket", "(Curl_easy *)", "", "Argument[0]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "Curl_url_set_authority", "(CURLU *,const char *)", "", "Argument[*1]", "Argument[*0].Field[**password]", "taint", "dfc-generated"] + - ["", "", True, "Curl_url_set_authority", "(CURLU *,const char *)", "", "Argument[*1]", "Argument[*0].Field[**user]", "value", "dfc-generated"] + - ["", "", True, "Curl_url_set_authority", "(CURLU *,const char *)", "", "Argument[1]", "Argument[*0].Field[**password]", "taint", "dfc-generated"] + - ["", "", True, "Curl_url_set_authority", "(CURLU *,const char *)", "", "Argument[1]", "Argument[*0].Field[**user]", "taint", "dfc-generated"] + - ["", "", True, "Curl_urldecode", "(const char *,size_t,char **,size_t *,urlreject)", "", "Argument[*2]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_urldecode", "(const char *,size_t,char **,size_t *,urlreject)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "Curl_urldecode", "(const char *,size_t,char **,size_t *,urlreject)", "", "Argument[2]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "Curl_vsetopt", "(Curl_easy *,CURLoption,va_list)", "", "Argument[*2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_vsetopt", "(Curl_easy *,CURLoption,va_list)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "Curl_vsetopt", "(Curl_easy *,CURLoption,va_list)", "", "Argument[2]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "Curl_waitfds_add_ps", "(Curl_waitfds *,easy_pollset *)", "", "Argument[*1].Field[*sockets]", "Argument[*0].Field[**wfds].Field[*fd]", "value", "dfc-generated"] + - ["", "", True, "Curl_waitfds_init", "(Curl_waitfds *,curl_waitfd *,unsigned int)", "", "Argument[*1]", "Argument[*0].Field[**wfds]", "value", "dfc-generated"] + - ["", "", True, "Curl_waitfds_init", "(Curl_waitfds *,curl_waitfd *,unsigned int)", "", "Argument[1]", "Argument[*0].Field[*wfds]", "value", "dfc-generated"] + - ["", "", True, "Curl_waitfds_init", "(Curl_waitfds *,curl_waitfd *,unsigned int)", "", "Argument[2]", "Argument[*0].Field[*count]", "value", "dfc-generated"] + - ["", "", True, "Curl_wildcard_dtor", "(WildcardData **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "Curl_xfer_send", "(Curl_easy *,const void *,size_t,bool,size_t *)", "", "Argument[*4]", "Argument[*0].Field[*info].Field[*request_size]", "taint", "dfc-generated"] + - ["", "", True, "Curl_xfer_send", "(Curl_easy *,const void *,size_t,bool,size_t *)", "", "Argument[4]", "Argument[*0].Field[*info].Field[*request_size]", "taint", "dfc-generated"] + - ["", "", True, "Curl_xfer_send", "(Curl_easy *,const void *,size_t,bool,size_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "SetHTTPrequest", "(OperationConfig *,HttpReq,HttpReq *)", "", "Argument[1]", "Argument[*2]", "value", "dfc-generated"] + - ["", "", True, "SetHTTPrequest", "(OperationConfig *,HttpReq,HttpReq *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "add2list", "(curl_slist **,const char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "add_file_name_to_url", "(CURL *,char **,const char *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "curl_easy_cleanup", "(CURL *)", "", "Argument[0]", "Argument[*0]", "value", "df-generated"] + - ["", "", True, "curl_easy_duphandle", "(CURL *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "curl_easy_header", "(CURL *,const char *,size_t,unsigned int,int,curl_header **)", "", "Argument[2]", "Argument[**5].Field[*index]", "value", "dfc-generated"] + - ["", "", True, "curl_easy_nextheader", "(CURL *,unsigned int,int,curl_header *)", "", "Argument[*3].Field[**anchor].Field[**_next]", "ReturnValue[*].Field[**anchor]", "value", "dfc-generated"] + - ["", "", True, "curl_easy_nextheader", "(CURL *,unsigned int,int,curl_header *)", "", "Argument[*3].Field[**anchor].Field[*_next]", "ReturnValue[*].Field[*anchor]", "value", "dfc-generated"] + - ["", "", True, "curl_easy_option_next", "(const curl_easyoption *)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "curl_easy_option_next", "(const curl_easyoption *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "curl_easy_option_next", "(const curl_easyoption *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "curl_easy_option_next", "(const curl_easyoption *)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "curl_easy_pause", "(CURL *,int)", "", "Argument[0]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "curl_easy_perform", "(CURL *)", "", "Argument[0]", "Argument[*0]", "value", "df-generated"] + - ["", "", True, "curl_easy_recv", "(CURL *,void *,size_t,size_t *)", "", "Argument[*0]", "Argument[*0].Field[*conn_queue].Field[**_ptr]", "value", "dfc-generated"] + - ["", "", True, "curl_easy_recv", "(CURL *,void *,size_t,size_t *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "curl_easy_send", "(CURL *,const void *,size_t,size_t *)", "", "Argument[*0]", "Argument[*0].Field[*conn_queue].Field[**_ptr]", "value", "dfc-generated"] + - ["", "", True, "curl_easy_send", "(CURL *,const void *,size_t,size_t *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "curl_easy_upkeep", "(CURL *)", "", "Argument[*0]", "Argument[*0].Field[*conn_queue].Field[**_ptr]", "value", "dfc-generated"] + - ["", "", True, "curl_easy_upkeep", "(CURL *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "curl_formadd", "(curl_httppost **,curl_httppost **,...)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "curl_getdate", "(const char *,const time_t *)", "", "Argument[*0]", "Argument[0]", "taint", "dfc-generated"] + - ["", "", True, "curl_getdate", "(const char *,const time_t *)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "curl_getdate", "(const char *,const time_t *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "curl_mime_addpart", "(curl_mime *)", "", "Argument[0]", "Argument[*0].Field[**firstpart].Field[*parent]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_addpart", "(curl_mime *)", "", "Argument[0]", "Argument[*0].Field[**lastpart].Field[*parent]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_addpart", "(curl_mime *)", "", "Argument[0]", "ReturnValue[*].Field[*parent]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_data", "(curl_mimepart *,const char *,size_t)", "", "Argument[*1]", "Argument[*0].Field[**data]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_data", "(curl_mimepart *,const char *,size_t)", "", "Argument[0]", "Argument[*0].Field[**arg].Field[*arg]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_data", "(curl_mimepart *,const char *,size_t)", "", "Argument[0]", "Argument[*0].Field[*arg]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_data", "(curl_mimepart *,const char *,size_t)", "", "Argument[1]", "Argument[*0].Field[**data]", "taint", "dfc-generated"] + - ["", "", True, "curl_mime_data", "(curl_mimepart *,const char *,size_t)", "", "Argument[2]", "Argument[*0].Field[*datasize]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_data_cb", "(curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *)", "", "Argument[**5]", "Argument[*0].Field[***arg]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_data_cb", "(curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *)", "", "Argument[*5]", "Argument[*0].Field[**arg]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_data_cb", "(curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *)", "", "Argument[0]", "Argument[*0].Field[**arg].Field[*arg]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_data_cb", "(curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *)", "", "Argument[0]", "Argument[*0].Field[*arg]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_data_cb", "(curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *)", "", "Argument[1]", "Argument[*0].Field[*datasize]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_data_cb", "(curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *)", "", "Argument[2]", "Argument[*0].Field[*readfunc]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_data_cb", "(curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *)", "", "Argument[3]", "Argument[*0].Field[*seekfunc]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_data_cb", "(curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *)", "", "Argument[4]", "Argument[*0].Field[*freefunc]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_data_cb", "(curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *)", "", "Argument[5]", "Argument[*0].Field[*arg]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_filedata", "(curl_mimepart *,const char *)", "", "Argument[0]", "Argument[*0].Field[**arg].Field[*arg]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_filedata", "(curl_mimepart *,const char *)", "", "Argument[0]", "Argument[*0].Field[*arg]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_headers", "(curl_mimepart *,curl_slist *,int)", "", "Argument[*1]", "Argument[*0].Field[**userheaders]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_headers", "(curl_mimepart *,curl_slist *,int)", "", "Argument[1]", "Argument[*0].Field[*userheaders]", "value", "dfc-generated"] + - ["", "", True, "curl_mime_subparts", "(curl_mimepart *,curl_mime *)", "", "Argument[1]", "Argument[*0].Field[*arg]", "value", "dfc-generated"] + - ["", "", True, "curl_multi_add_handle", "(CURLM *,CURL *)", "", "Argument[0]", "Argument[*1].Field[*multi]", "value", "dfc-generated"] + - ["", "", True, "curl_multi_add_handle", "(CURLM *,CURL *)", "", "Argument[1]", "Argument[*1].Field[*multi_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "curl_multi_info_read", "(CURLM *,int *)", "", "Argument[*0].Field[*msglist].Field[*_size]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "curl_multi_perform", "(CURLM *,int *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "curl_multi_remove_handle", "(CURLM *,CURL *)", "", "Argument[1]", "Argument[*1]", "value", "df-generated"] + - ["", "", True, "curl_multi_socket", "(CURLM *,curl_socket_t,int *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "curl_multi_socket_action", "(CURLM *,curl_socket_t,int,int *)", "", "Argument[*0]", "Argument[*3]", "taint", "df-generated"] + - ["", "", True, "curl_multi_socket_all", "(CURLM *,int *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "curl_mvaprintf", "(const char *,va_list)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "curl_mvfprintf", "(FILE *,const char *,va_list)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "curl_mvprintf", "(const char *,va_list)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "curl_mvsnprintf", "(char *,size_t,const char *,va_list)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "curl_mvsprintf", "(char *,const char *,va_list)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "curl_pushheader_byname", "(curl_pushheaders *,const char *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "curl_pushheader_byname", "(curl_pushheaders *,const char *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "curl_pushheader_bynum", "(curl_pushheaders *,size_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "curl_share_setopt", "(CURLSH *,CURLSHoption,...)", "", "Argument[0]", "Argument[*0].Field[*cpool].Field[*share]", "value", "dfc-generated"] + - ["", "", True, "curl_slist_append", "(curl_slist *,const char *)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "curl_slist_append", "(curl_slist *,const char *)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "curl_url_dup", "(const CURLU *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "curl_url_get", "(const CURLU *,CURLUPart,char **,unsigned int)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "curl_url_set", "(CURLU *,CURLUPart,const char *,unsigned int)", "", "Argument[*2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "curl_url_set", "(CURLU *,CURLUPart,const char *,unsigned int)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "curl_ws_recv", "(CURL *,void *,size_t,size_t *,const curl_ws_frame **)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "curl_ws_recv", "(CURL *,void *,size_t,size_t *,const curl_ws_frame **)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "curl_ws_send", "(CURL *,const void *,size_t,size_t *,curl_off_t,unsigned int)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"] + - ["", "", True, "curl_ws_send", "(CURL *,const void *,size_t,size_t *,curl_off_t,unsigned int)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "curlx_dyn_add", "(dynbuf *,const char *)", "", "Argument[*1]", "Argument[*0].Field[**bufr]", "value", "dfc-generated"] + - ["", "", True, "curlx_dyn_add", "(dynbuf *,const char *)", "", "Argument[1]", "Argument[*0].Field[**bufr]", "taint", "dfc-generated"] + - ["", "", True, "curlx_dyn_addn", "(dynbuf *,const void *,size_t)", "", "Argument[*1]", "Argument[*0].Field[**bufr]", "value", "dfc-generated"] + - ["", "", True, "curlx_dyn_addn", "(dynbuf *,const void *,size_t)", "", "Argument[1]", "Argument[*0].Field[**bufr]", "taint", "dfc-generated"] + - ["", "", True, "curlx_dyn_addn", "(dynbuf *,const void *,size_t)", "", "Argument[2]", "Argument[*0].Field[*allc]", "taint", "dfc-generated"] + - ["", "", True, "curlx_dyn_addn", "(dynbuf *,const void *,size_t)", "", "Argument[2]", "Argument[*0].Field[*leng]", "taint", "dfc-generated"] + - ["", "", True, "curlx_dyn_free", "(dynbuf *)", "", "Argument[*0].Field[*allc]", "Argument[*0].Field[*leng]", "value", "dfc-generated"] + - ["", "", True, "curlx_dyn_init", "(dynbuf *,size_t)", "", "Argument[1]", "Argument[*0].Field[*toobig]", "value", "dfc-generated"] + - ["", "", True, "curlx_dyn_len", "(const dynbuf *)", "", "Argument[*0].Field[*leng]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "curlx_dyn_ptr", "(const dynbuf *)", "", "Argument[*0].Field[**bufr]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "curlx_dyn_ptr", "(const dynbuf *)", "", "Argument[*0].Field[*bufr]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "curlx_dyn_setlen", "(dynbuf *,size_t)", "", "Argument[1]", "Argument[*0].Field[*leng]", "value", "dfc-generated"] + - ["", "", True, "curlx_dyn_tail", "(dynbuf *,size_t)", "", "Argument[1]", "Argument[*0].Field[**bufr]", "taint", "dfc-generated"] + - ["", "", True, "curlx_dyn_tail", "(dynbuf *,size_t)", "", "Argument[1]", "Argument[*0].Field[*leng]", "value", "dfc-generated"] + - ["", "", True, "curlx_dyn_take", "(dynbuf *,size_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "curlx_dyn_take", "(dynbuf *,size_t *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "curlx_dyn_take", "(dynbuf *,size_t *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "curlx_dyn_uptr", "(const dynbuf *)", "", "Argument[*0].Field[**bufr]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "curlx_dyn_uptr", "(const dynbuf *)", "", "Argument[*0].Field[*bufr]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "curlx_dyn_vaddf", "(dynbuf *,const char *,va_list)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "curlx_get_line", "(dynbuf *,FILE *)", "", "Argument[1]", "Argument[*0].Field[**bufr]", "taint", "dfc-generated"] + - ["", "", True, "curlx_mstotv", "(timeval *,timediff_t)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "curlx_mstotv", "(timeval *,timediff_t)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "curlx_sitouz", "(int)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "curlx_sltosi", "(long)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "curlx_sltoui", "(long)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "curlx_sltous", "(long)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "curlx_sotouz", "(curl_off_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "curlx_strtoofft", "(const char *,char **,int,curl_off_t *)", "", "Argument[*0]", "Argument[**1]", "value", "dfc-generated"] + - ["", "", True, "curlx_strtoofft", "(const char *,char **,int,curl_off_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "curlx_strtoofft", "(const char *,char **,int,curl_off_t *)", "", "Argument[*0]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "curlx_strtoofft", "(const char *,char **,int,curl_off_t *)", "", "Argument[0]", "Argument[**1]", "taint", "dfc-generated"] + - ["", "", True, "curlx_strtoofft", "(const char *,char **,int,curl_off_t *)", "", "Argument[0]", "Argument[*1]", "value", "dfc-generated"] + - ["", "", True, "curlx_strtoofft", "(const char *,char **,int,curl_off_t *)", "", "Argument[0]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "curlx_sztosi", "(ssize_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "curlx_tvtoms", "(timeval *)", "", "Argument[*0].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "curlx_tvtoms", "(timeval *)", "", "Argument[*0].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "curlx_uitous", "(unsigned int)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "curlx_ultouc", "(unsigned long)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "curlx_ultous", "(unsigned long)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "curlx_uztosi", "(size_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "curlx_uztosz", "(size_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "curlx_uztoui", "(size_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "curlx_uztoul", "(size_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "easysrc_add", "(slist_wc **,const char *)", "", "Argument[**0].Field[**last].Field[**next]", "Argument[**0].Field[**last]", "value", "dfc-generated"] + - ["", "", True, "easysrc_add", "(slist_wc **,const char *)", "", "Argument[**0].Field[**last].Field[*next]", "Argument[**0].Field[*last]", "value", "dfc-generated"] + - ["", "", True, "easysrc_add", "(slist_wc **,const char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "findshortopt", "(char)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[**2]", "Argument[**3]", "value", "df-generated"] + - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[**2]", "Argument[*3]", "taint", "df-generated"] + - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[**3]", "Argument[**2]", "value", "df-generated"] + - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[**3]", "Argument[*3]", "taint", "df-generated"] + - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[*2]", "Argument[**2]", "taint", "df-generated"] + - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[*2]", "Argument[**3]", "taint", "df-generated"] + - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[*2]", "Argument[*3]", "value", "df-generated"] + - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[*3]", "Argument[**2]", "taint", "df-generated"] + - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[*3]", "Argument[**3]", "taint", "df-generated"] + - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[2]", "Argument[**2]", "taint", "df-generated"] + - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[2]", "Argument[**3]", "taint", "df-generated"] + - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[2]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[2]", "Argument[*3]", "taint", "df-generated"] + - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[3]", "Argument[**2]", "taint", "df-generated"] + - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[3]", "Argument[**3]", "taint", "df-generated"] + - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[3]", "Argument[*3]", "taint", "df-generated"] + - ["", "", True, "get_url_file_name", "(GlobalConfig *,char **,const char *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "getparameter", "(const char *,char *,char *,bool *,GlobalConfig *,OperationConfig *)", "", "Argument[*0]", "Argument[*1]", "value", "df-generated"] + - ["", "", True, "getparameter", "(const char *,char *,char *,bool *,GlobalConfig *,OperationConfig *)", "", "Argument[*1]", "Argument[*0]", "value", "df-generated"] + - ["", "", True, "getparameter", "(const char *,char *,char *,bool *,GlobalConfig *,OperationConfig *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "getparameter", "(const char *,char *,char *,bool *,GlobalConfig *,OperationConfig *)", "", "Argument[4]", "Argument[*4].Field[**last].Field[*global]", "value", "dfc-generated"] + - ["", "", True, "getpass_r", "(const char *,char *,size_t)", "", "Argument[*1]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "getpass_r", "(const char *,char *,size_t)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "glob_cleanup", "(URLGlob **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "glob_match_url", "(char **,char *,URLGlob *)", "", "Argument[*1]", "Argument[1]", "taint", "dfc-generated"] + - ["", "", True, "glob_match_url", "(char **,char *,URLGlob *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "glob_next_url", "(char **,URLGlob *)", "", "Argument[*1].Field[**glob_buffer]", "Argument[**0]", "value", "dfc-generated"] + - ["", "", True, "glob_next_url", "(char **,URLGlob *)", "", "Argument[*1].Field[*glob_buffer]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "glob_next_url", "(char **,URLGlob *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "glob_url", "(URLGlob **,char *,curl_off_t *,FILE *)", "", "Argument[*1]", "Argument[**0].Field[*pos]", "taint", "dfc-generated"] + - ["", "", True, "glob_url", "(URLGlob **,char *,curl_off_t *,FILE *)", "", "Argument[1]", "Argument[**0].Field[*pos]", "taint", "dfc-generated"] + - ["", "", True, "glob_url", "(URLGlob **,char *,curl_off_t *,FILE *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "helpscan", "(unsigned char *,size_t,scan_ctx *)", "", "Argument[*0]", "Argument[*2].Field[*obuf]", "value", "dfc-generated"] + - ["", "", True, "helpscan", "(unsigned char *,size_t,scan_ctx *)", "", "Argument[*0]", "Argument[*2].Field[*rbuf]", "value", "dfc-generated"] + - ["", "", True, "helpscan", "(unsigned char *,size_t,scan_ctx *)", "", "Argument[0]", "Argument[*2].Field[*obuf]", "taint", "dfc-generated"] + - ["", "", True, "helpscan", "(unsigned char *,size_t,scan_ctx *)", "", "Argument[0]", "Argument[*2].Field[*rbuf]", "taint", "dfc-generated"] + - ["", "", True, "inithelpscan", "(scan_ctx *,const char *,const char *,const char *)", "", "Argument[*1]", "Argument[*0].Field[**trigger]", "value", "dfc-generated"] + - ["", "", True, "inithelpscan", "(scan_ctx *,const char *,const char *,const char *)", "", "Argument[*2]", "Argument[*0].Field[**arg]", "value", "dfc-generated"] + - ["", "", True, "inithelpscan", "(scan_ctx *,const char *,const char *,const char *)", "", "Argument[*3]", "Argument[*0].Field[**endarg]", "value", "dfc-generated"] + - ["", "", True, "inithelpscan", "(scan_ctx *,const char *,const char *,const char *)", "", "Argument[1]", "Argument[*0].Field[*trigger]", "value", "dfc-generated"] + - ["", "", True, "inithelpscan", "(scan_ctx *,const char *,const char *,const char *)", "", "Argument[2]", "Argument[*0].Field[*arg]", "value", "dfc-generated"] + - ["", "", True, "inithelpscan", "(scan_ctx *,const char *,const char *,const char *)", "", "Argument[3]", "Argument[*0].Field[*endarg]", "value", "dfc-generated"] + - ["", "", True, "ipfs_url_rewrite", "(CURLU *,const char *,char **,OperationConfig *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "jsonquoted", "(const char *,size_t,dynbuf *,bool)", "", "Argument[*0]", "Argument[*2].Field[**bufr]", "value", "dfc-generated"] + - ["", "", True, "jsonquoted", "(const char *,size_t,dynbuf *,bool)", "", "Argument[0]", "Argument[*2].Field[**bufr]", "taint", "dfc-generated"] + - ["", "", True, "new_getout", "(OperationConfig *)", "", "Argument[*0].Field[*default_node_flags]", "ReturnValue[*].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "oct2nummax", "(long *,const char *,long)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "oct2nummax", "(long *,const char *,long)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "oct2nummax", "(long *,const char *,long)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "operate", "(GlobalConfig *,int,char *[])", "", "Argument[0]", "Argument[*0].Field[**last].Field[*global]", "value", "dfc-generated"] + - ["", "", True, "parse_args", "(GlobalConfig *,int,char *[])", "", "Argument[0]", "Argument[*0].Field[**last].Field[*global]", "value", "dfc-generated"] + - ["", "", True, "parseconfig", "(const char *,GlobalConfig *)", "", "Argument[1]", "Argument[*1].Field[**last].Field[*global]", "value", "dfc-generated"] + - ["", "", True, "progress_meter", "(GlobalConfig *,timeval *,bool)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "progressbarinit", "(ProgressData *,OperationConfig *)", "", "Argument[*1].Field[*resume_from]", "Argument[*0].Field[*initial_size]", "value", "dfc-generated"] + - ["", "", True, "proto2num", "(OperationConfig *,const char *const *,char **,const char *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "secs2ms", "(long *,const char *)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "secs2ms", "(long *,const char *)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "setvariable", "(GlobalConfig *,const char *)", "", "Argument[*0].Field[**variables]", "Argument[*0].Field[**variables].Field[**next]", "value", "dfc-generated"] + - ["", "", True, "setvariable", "(GlobalConfig *,const char *)", "", "Argument[*0].Field[*variables]", "Argument[*0].Field[**variables].Field[*next]", "value", "dfc-generated"] + - ["", "", True, "slist_wc_append", "(slist_wc *,const char *)", "", "Argument[*0]", "ReturnValue[*]", "value", "df-generated"] + - ["", "", True, "slist_wc_append", "(slist_wc *,const char *)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "str2num", "(long *,const char *)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "str2num", "(long *,const char *)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "str2offset", "(curl_off_t *,const char *)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "str2offset", "(curl_off_t *,const char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "str2offset", "(curl_off_t *,const char *)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "str2unum", "(long *,const char *)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "str2unum", "(long *,const char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "str2unum", "(long *,const char *)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "str2unummax", "(long *,const char *,long)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "str2unummax", "(long *,const char *,long)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "str2unummax", "(long *,const char *,long)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "tool2curlmime", "(CURL *,tool_mime *,curl_mime **)", "", "Argument[*2]", "Argument[**2].Field[**firstpart].Field[*parent]", "value", "dfc-generated"] + - ["", "", True, "tool2curlmime", "(CURL *,tool_mime *,curl_mime **)", "", "Argument[*2]", "Argument[**2].Field[**lastpart].Field[*parent]", "value", "dfc-generated"] + - ["", "", True, "tool2curlmime", "(CURL *,tool_mime *,curl_mime **)", "", "Argument[2]", "Argument[**2].Field[**firstpart].Field[*parent]", "taint", "dfc-generated"] + - ["", "", True, "tool2curlmime", "(CURL *,tool_mime *,curl_mime **)", "", "Argument[2]", "Argument[**2].Field[**lastpart].Field[*parent]", "taint", "dfc-generated"] + - ["", "", True, "tool2curlmime", "(CURL *,tool_mime *,curl_mime **)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "tool_header_cb", "(char *,size_t,size_t,void *)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "tool_header_cb", "(char *,size_t,size_t,void *)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "tool_mime_stdin_read", "(char *,size_t,size_t,void *)", "", "Argument[2]", "Argument[*3].Field[*curpos]", "taint", "dfc-generated"] + - ["", "", True, "tool_mime_stdin_read", "(char *,size_t,size_t,void *)", "", "Argument[2]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "tool_mime_stdin_seek", "(void *,curl_off_t,int)", "", "Argument[*0].Field[*size]", "Argument[*0].Field[*curpos]", "taint", "dfc-generated"] + - ["", "", True, "tool_mime_stdin_seek", "(void *,curl_off_t,int)", "", "Argument[1]", "Argument[*0].Field[*curpos]", "value", "dfc-generated"] + - ["", "", True, "tool_read_cb", "(char *,size_t,size_t,void *)", "", "Argument[*3]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "tool_setopt_slist", "(CURL *,GlobalConfig *,const char *,CURLoption,curl_slist *)", "", "Argument[*4].Field[**next].Field[**next]", "Argument[*4]", "value", "dfc-generated"] + - ["", "", True, "tool_setopt_slist", "(CURL *,GlobalConfig *,const char *,CURLoption,curl_slist *)", "", "Argument[*4].Field[**next]", "Argument[*4]", "value", "dfc-generated"] + - ["", "", True, "tvdiff", "(timeval,timeval)", "", "Argument[0].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "tvdiff", "(timeval,timeval)", "", "Argument[0].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "tvdiff", "(timeval,timeval)", "", "Argument[1].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "tvdiff", "(timeval,timeval)", "", "Argument[1].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "varexpand", "(GlobalConfig *,const char *,dynbuf *,bool *)", "", "Argument[*1]", "Argument[*2].Field[**bufr]", "value", "dfc-generated"] + - ["", "", True, "varexpand", "(GlobalConfig *,const char *,dynbuf *,bool *)", "", "Argument[1]", "Argument[*2].Field[**bufr]", "taint", "dfc-generated"] + - ["", "", True, "varexpand", "(GlobalConfig *,const char *,dynbuf *,bool *)", "", "Argument[1]", "Argument[*2].Field[*allc]", "taint", "dfc-generated"] + - ["", "", True, "varexpand", "(GlobalConfig *,const char *,dynbuf *,bool *)", "", "Argument[1]", "Argument[*2].Field[*leng]", "taint", "dfc-generated"] + - ["", "", True, "xferinfo_cb", "(void *,curl_off_t,curl_off_t,curl_off_t,curl_off_t)", "", "Argument[1]", "Argument[*0].Field[*dltotal]", "value", "dfc-generated"] + - ["", "", True, "xferinfo_cb", "(void *,curl_off_t,curl_off_t,curl_off_t,curl_off_t)", "", "Argument[2]", "Argument[*0].Field[*dlnow]", "value", "dfc-generated"] + - ["", "", True, "xferinfo_cb", "(void *,curl_off_t,curl_off_t,curl_off_t,curl_off_t)", "", "Argument[3]", "Argument[*0].Field[*ultotal]", "value", "dfc-generated"] + - ["", "", True, "xferinfo_cb", "(void *,curl_off_t,curl_off_t,curl_off_t,curl_off_t)", "", "Argument[4]", "Argument[*0].Field[*ulnow]", "value", "dfc-generated"] diff --git a/cpp/ql/lib/ext/generated/libidn2/libidn2.model.yml b/cpp/ql/lib/ext/generated/libidn2/libidn2.model.yml new file mode 100644 index 00000000000..2c6b88ed714 --- /dev/null +++ b/cpp/ql/lib/ext/generated/libidn2/libidn2.model.yml @@ -0,0 +1,148 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/cpp-all + extensible: summaryModel + data: + - ["", "", True, "_idn2_punycode_decode", "(size_t,const char[],size_t *,uint32_t[])", "", "Argument[*1]", "Argument[*3]", "value", "dfc-generated"] + - ["", "", True, "_idn2_punycode_decode", "(size_t,const char[],size_t *,uint32_t[])", "", "Argument[1]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "_idn2_punycode_decode", "(size_t,const char[],size_t *,uint32_t[])", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "_idn2_punycode_decode", "(size_t,const char[],size_t *,uint32_t[])", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "_idn2_punycode_encode", "(size_t,const uint32_t[],size_t *,char[])", "", "Argument[*1]", "Argument[*3]", "value", "dfc-generated"] + - ["", "", True, "_idn2_punycode_encode", "(size_t,const uint32_t[],size_t *,char[])", "", "Argument[1]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "_idn2_punycode_encode", "(size_t,const uint32_t[],size_t *,char[])", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "c_strcasecmp", "(const char *,const char *)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "c_strcasecmp", "(const char *,const char *)", "", "Argument[*1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "c_strcasecmp", "(const char *,const char *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "c_strcasecmp", "(const char *,const char *)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "c_strncasecmp", "(const char *,const char *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "c_strncasecmp", "(const char *,const char *,size_t)", "", "Argument[*1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "c_strncasecmp", "(const char *,const char *,size_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "c_strncasecmp", "(const char *,const char *,size_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "c_tolower", "(int)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "c_toupper", "(int)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "cmdline_parser2", "(int,char **,gengetopt_args_info *,int,int,int)", "", "Argument[**1]", "Argument[*2].Field[***inputs]", "value", "dfc-generated"] + - ["", "", True, "cmdline_parser2", "(int,char **,gengetopt_args_info *,int,int,int)", "", "Argument[*1]", "Argument[*2].Field[***inputs]", "taint", "dfc-generated"] + - ["", "", True, "cmdline_parser2", "(int,char **,gengetopt_args_info *,int,int,int)", "", "Argument[0]", "Argument[*2].Field[*inputs_num]", "taint", "dfc-generated"] + - ["", "", True, "cmdline_parser2", "(int,char **,gengetopt_args_info *,int,int,int)", "", "Argument[1]", "Argument[*2].Field[***inputs]", "taint", "dfc-generated"] + - ["", "", True, "cmdline_parser", "(int,char **,gengetopt_args_info *)", "", "Argument[**1]", "Argument[*2].Field[***inputs]", "value", "dfc-generated"] + - ["", "", True, "cmdline_parser", "(int,char **,gengetopt_args_info *)", "", "Argument[*1]", "Argument[*2].Field[***inputs]", "taint", "dfc-generated"] + - ["", "", True, "cmdline_parser", "(int,char **,gengetopt_args_info *)", "", "Argument[0]", "Argument[*2].Field[*inputs_num]", "taint", "dfc-generated"] + - ["", "", True, "cmdline_parser", "(int,char **,gengetopt_args_info *)", "", "Argument[1]", "Argument[*2].Field[***inputs]", "taint", "dfc-generated"] + - ["", "", True, "cmdline_parser_ext", "(int,char **,gengetopt_args_info *,cmdline_parser_params *)", "", "Argument[**1]", "Argument[*2].Field[***inputs]", "value", "dfc-generated"] + - ["", "", True, "cmdline_parser_ext", "(int,char **,gengetopt_args_info *,cmdline_parser_params *)", "", "Argument[*1]", "Argument[*2].Field[***inputs]", "taint", "dfc-generated"] + - ["", "", True, "cmdline_parser_ext", "(int,char **,gengetopt_args_info *,cmdline_parser_params *)", "", "Argument[0]", "Argument[*2].Field[*inputs_num]", "taint", "dfc-generated"] + - ["", "", True, "cmdline_parser_ext", "(int,char **,gengetopt_args_info *,cmdline_parser_params *)", "", "Argument[1]", "Argument[*2].Field[***inputs]", "taint", "dfc-generated"] + - ["", "", True, "get_map_data", "(uint32_t *,const IDNAMap *)", "", "Argument[*1].Field[*nmappings]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "get_map_data", "(uint32_t *,const IDNAMap *)", "", "Argument[*1].Field[*offset]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "get_map_data", "(uint32_t *,const IDNAMap *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "get_stat_atime", "(const stat *)", "", "Argument[*0].Field[*st_atim]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "get_stat_atime_ns", "(const stat *)", "", "Argument[*0].Field[*st_atim].Field[*tv_nsec]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "get_stat_ctime", "(const stat *)", "", "Argument[*0].Field[*st_ctim]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "get_stat_ctime_ns", "(const stat *)", "", "Argument[*0].Field[*st_ctim].Field[*tv_nsec]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "get_stat_mtime", "(const stat *)", "", "Argument[*0].Field[*st_mtim]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "get_stat_mtime_ns", "(const stat *)", "", "Argument[*0].Field[*st_mtim].Field[*tv_nsec]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "gl_uninorm_decompose_merge_sort_inplace", "(ucs4_with_ccc *,size_t,ucs4_with_ccc *)", "", "Argument[*0]", "Argument[*2]", "value", "dfc-generated"] + - ["", "", True, "gl_uninorm_decompose_merge_sort_inplace", "(ucs4_with_ccc *,size_t,ucs4_with_ccc *)", "", "Argument[*2]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "gl_uninorm_decompose_merge_sort_inplace", "(ucs4_with_ccc *,size_t,ucs4_with_ccc *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "gl_uninorm_decompose_merge_sort_inplace", "(ucs4_with_ccc *,size_t,ucs4_with_ccc *)", "", "Argument[0]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "gl_uninorm_decompose_merge_sort_inplace", "(ucs4_with_ccc *,size_t,ucs4_with_ccc *)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "gl_uninorm_decompose_merge_sort_inplace", "(ucs4_with_ccc *,size_t,ucs4_with_ccc *)", "", "Argument[1]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "gl_uninorm_decompose_merge_sort_inplace", "(ucs4_with_ccc *,size_t,ucs4_with_ccc *)", "", "Argument[2]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "gl_uninorm_decompose_merge_sort_inplace", "(ucs4_with_ccc *,size_t,ucs4_with_ccc *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "idn2_lookup_u8", "(const uint8_t *,uint8_t **,int)", "", "Argument[*0]", "Argument[**1]", "value", "dfc-generated"] + - ["", "", True, "idn2_lookup_u8", "(const uint8_t *,uint8_t **,int)", "", "Argument[0]", "Argument[**1]", "taint", "dfc-generated"] + - ["", "", True, "idn2_punycode_decode", "(const char *,size_t,uint32_t *,size_t *)", "", "Argument[*0]", "Argument[*2]", "value", "dfc-generated"] + - ["", "", True, "idn2_punycode_decode", "(const char *,size_t,uint32_t *,size_t *)", "", "Argument[0]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "idn2_punycode_decode", "(const char *,size_t,uint32_t *,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "idn2_punycode_decode", "(const char *,size_t,uint32_t *,size_t *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "idn2_punycode_encode", "(const uint32_t *,size_t,char *,size_t *)", "", "Argument[*0]", "Argument[*2]", "value", "dfc-generated"] + - ["", "", True, "idn2_punycode_encode", "(const uint32_t *,size_t,char *,size_t *)", "", "Argument[0]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "idn2_punycode_encode", "(const uint32_t *,size_t,char *,size_t *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "idn2_register_u8", "(const uint8_t *,const uint8_t *,uint8_t **,int)", "", "Argument[*0]", "Argument[**2]", "value", "dfc-generated"] + - ["", "", True, "idn2_register_u8", "(const uint8_t *,const uint8_t *,uint8_t **,int)", "", "Argument[*1]", "Argument[**2]", "value", "dfc-generated"] + - ["", "", True, "idn2_register_u8", "(const uint8_t *,const uint8_t *,uint8_t **,int)", "", "Argument[0]", "Argument[**2]", "taint", "dfc-generated"] + - ["", "", True, "idn2_register_u8", "(const uint8_t *,const uint8_t *,uint8_t **,int)", "", "Argument[1]", "Argument[**2]", "taint", "dfc-generated"] + - ["", "", True, "idn2_register_ul", "(const char *,const char *,char **,int)", "", "Argument[*1]", "Argument[**2]", "value", "dfc-generated"] + - ["", "", True, "idn2_register_ul", "(const char *,const char *,char **,int)", "", "Argument[1]", "Argument[**2]", "taint", "dfc-generated"] + - ["", "", True, "idn2_to_ascii_8z", "(const char *,char **,int)", "", "Argument[*0]", "Argument[**1]", "value", "dfc-generated"] + - ["", "", True, "idn2_to_ascii_8z", "(const char *,char **,int)", "", "Argument[0]", "Argument[**1]", "taint", "dfc-generated"] + - ["", "", True, "idn2_to_unicode_44i", "(const uint32_t *,size_t,uint32_t *,size_t *,int)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "last_component", "(const char *)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "last_component", "(const char *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "last_component", "(const char *)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "mem_cd_iconveh", "(const char *,size_t,const iconveh_t *,iconv_ilseq_handler,size_t *,char **,size_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "mem_iconveh", "(const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *)", "", "Argument[*0]", "Argument[**6]", "value", "dfc-generated"] + - ["", "", True, "mem_iconveh", "(const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *)", "", "Argument[0]", "Argument[**6]", "taint", "dfc-generated"] + - ["", "", True, "mem_iconveh", "(const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *)", "", "Argument[1]", "Argument[*7]", "value", "dfc-generated"] + - ["", "", True, "mem_iconveh", "(const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *)", "", "Argument[7]", "Argument[*7]", "taint", "dfc-generated"] + - ["", "", True, "mem_iconveha", "(const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *)", "", "Argument[*0]", "Argument[**7]", "value", "dfc-generated"] + - ["", "", True, "mem_iconveha", "(const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *)", "", "Argument[0]", "Argument[**7]", "taint", "dfc-generated"] + - ["", "", True, "mem_iconveha", "(const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *)", "", "Argument[1]", "Argument[*8]", "value", "dfc-generated"] + - ["", "", True, "mem_iconveha", "(const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *)", "", "Argument[8]", "Argument[*8]", "taint", "dfc-generated"] + - ["", "", True, "stat_time_normalize", "(int,stat *)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "str_iconveh", "(const char *,const char *,const char *,iconv_ilseq_handler)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "str_iconveh", "(const char *,const char *,const char *,iconv_ilseq_handler)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "str_iconveha", "(const char *,const char *,const char *,bool,iconv_ilseq_handler)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "str_iconveha", "(const char *,const char *,const char *,bool,iconv_ilseq_handler)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "u32_normalize", "(uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *)", "", "Argument[*1]", "Argument[*3]", "value", "dfc-generated"] + - ["", "", True, "u32_normalize", "(uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *)", "", "Argument[*1]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "u32_normalize", "(uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *)", "", "Argument[*3]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "u32_normalize", "(uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *)", "", "Argument[1]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "u32_normalize", "(uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *)", "", "Argument[1]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "u32_normalize", "(uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "u32_normalize", "(uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *)", "", "Argument[3]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "u32_normalize", "(uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *)", "", "Argument[3]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "u32_normalize", "(uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "u8_mbtouc_aux", "(ucs4_t *,const uint8_t *,size_t)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "u8_mbtouc_aux", "(ucs4_t *,const uint8_t *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uc_bidi_category", "(ucs4_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uc_bidi_class", "(ucs4_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uc_canonical_decomposition", "(ucs4_t,ucs4_t *)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uc_canonical_decomposition", "(ucs4_t,ucs4_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uc_combining_class", "(ucs4_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uc_composition", "(ucs4_t,ucs4_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uc_composition", "(ucs4_t,ucs4_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uc_general_category", "(ucs4_t)", "", "Argument[0]", "ReturnValue.Field[*bitmask]", "taint", "dfc-generated"] + - ["", "", True, "uc_is_general_category_withtable", "(ucs4_t,uint32_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uc_is_general_category_withtable", "(ucs4_t,uint32_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uc_joining_type", "(ucs4_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uc_script", "(ucs4_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uc_script", "(ucs4_t)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "uc_script_byname", "(const char *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "uc_script_byname", "(const char *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "uc_script_byname", "(const char *)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "uc_script_byname", "(const char *)", "", "Argument[0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "version_etc", "(FILE *,const char *,const char *,const char *,...)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc", "(FILE *,const char *,const char *,const char *,...)", "", "Argument[*2]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc", "(FILE *,const char *,const char *,const char *,...)", "", "Argument[*3]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc", "(FILE *,const char *,const char *,const char *,...)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc", "(FILE *,const char *,const char *,const char *,...)", "", "Argument[2]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc", "(FILE *,const char *,const char *,const char *,...)", "", "Argument[3]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_ar", "(FILE *,const char *,const char *,const char *,const char *const *)", "", "Argument[**4]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_ar", "(FILE *,const char *,const char *,const char *,const char *const *)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_ar", "(FILE *,const char *,const char *,const char *,const char *const *)", "", "Argument[*2]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_ar", "(FILE *,const char *,const char *,const char *,const char *const *)", "", "Argument[*3]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_ar", "(FILE *,const char *,const char *,const char *,const char *const *)", "", "Argument[*4]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_ar", "(FILE *,const char *,const char *,const char *,const char *const *)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_ar", "(FILE *,const char *,const char *,const char *,const char *const *)", "", "Argument[2]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_ar", "(FILE *,const char *,const char *,const char *,const char *const *)", "", "Argument[3]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_ar", "(FILE *,const char *,const char *,const char *,const char *const *)", "", "Argument[4]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_arn", "(FILE *,const char *,const char *,const char *,const char *const *,size_t)", "", "Argument[**4]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_arn", "(FILE *,const char *,const char *,const char *,const char *const *,size_t)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_arn", "(FILE *,const char *,const char *,const char *,const char *const *,size_t)", "", "Argument[*2]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_arn", "(FILE *,const char *,const char *,const char *,const char *const *,size_t)", "", "Argument[*3]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_arn", "(FILE *,const char *,const char *,const char *,const char *const *,size_t)", "", "Argument[*4]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_arn", "(FILE *,const char *,const char *,const char *,const char *const *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_arn", "(FILE *,const char *,const char *,const char *,const char *const *,size_t)", "", "Argument[2]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_arn", "(FILE *,const char *,const char *,const char *,const char *const *,size_t)", "", "Argument[3]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_arn", "(FILE *,const char *,const char *,const char *,const char *const *,size_t)", "", "Argument[4]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_va", "(FILE *,const char *,const char *,const char *,va_list)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_va", "(FILE *,const char *,const char *,const char *,va_list)", "", "Argument[*2]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_va", "(FILE *,const char *,const char *,const char *,va_list)", "", "Argument[*3]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_va", "(FILE *,const char *,const char *,const char *,va_list)", "", "Argument[*4]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_va", "(FILE *,const char *,const char *,const char *,va_list)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_va", "(FILE *,const char *,const char *,const char *,va_list)", "", "Argument[2]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_va", "(FILE *,const char *,const char *,const char *,va_list)", "", "Argument[3]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_va", "(FILE *,const char *,const char *,const char *,va_list)", "", "Argument[4]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "version_etc_va", "(FILE *,const char *,const char *,const char *,va_list)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] diff --git a/cpp/ql/lib/ext/generated/libssh2/libssh2.model.yml b/cpp/ql/lib/ext/generated/libssh2/libssh2.model.yml new file mode 100644 index 00000000000..f531e19099b --- /dev/null +++ b/cpp/ql/lib/ext/generated/libssh2/libssh2.model.yml @@ -0,0 +1,517 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/cpp-all + extensible: summaryModel + data: + - ["", "", True, "_libssh2_base64_decode", "(LIBSSH2_SESSION *,char **,size_t *,const char *,size_t)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_channel_close", "(LIBSSH2_CHANNEL *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "_libssh2_channel_extended_data", "(LIBSSH2_CHANNEL *,int)", "", "Argument[1]", "Argument[*0].Field[*remote].Field[*extended_data_ignore_mode]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_channel_flush", "(LIBSSH2_CHANNEL *,int)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "_libssh2_channel_forward_cancel", "(LIBSSH2_LISTENER *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "_libssh2_channel_free", "(LIBSSH2_CHANNEL *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "_libssh2_channel_locate", "(LIBSSH2_SESSION *,uint32_t)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "_libssh2_channel_locate", "(LIBSSH2_SESSION *,uint32_t)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "_libssh2_channel_nextid", "(LIBSSH2_SESSION *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "_libssh2_channel_open", "(LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t)", "", "Argument[*1]", "Argument[*0].Field[**open_channel].Field[**channel_type]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_channel_open", "(LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t)", "", "Argument[*1]", "ReturnValue[*].Field[**channel_type]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_channel_open", "(LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t)", "", "Argument[0]", "Argument[*0].Field[**open_channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_channel_open", "(LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t)", "", "Argument[0]", "ReturnValue[*].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_channel_open", "(LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t)", "", "Argument[1]", "Argument[*0].Field[**open_channel].Field[**channel_type]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_channel_open", "(LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t)", "", "Argument[1]", "ReturnValue[*].Field[**channel_type]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_channel_open", "(LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t)", "", "Argument[3]", "ReturnValue[*].Field[*remote].Field[*window_size]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_channel_open", "(LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t)", "", "Argument[3]", "ReturnValue[*].Field[*remote].Field[*window_size_initial]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_channel_open", "(LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t)", "", "Argument[4]", "ReturnValue[*].Field[*remote].Field[*packet_size]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_channel_process_startup", "(LIBSSH2_CHANNEL *,const char *,size_t,const char *,size_t)", "", "Argument[2]", "Argument[*0].Field[*process_packet_len]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_channel_read", "(LIBSSH2_CHANNEL *,int,char *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "_libssh2_channel_read", "(LIBSSH2_CHANNEL *,int,char *,size_t)", "", "Argument[3]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "_libssh2_channel_read", "(LIBSSH2_CHANNEL *,int,char *,size_t)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "_libssh2_channel_receive_window_adjust", "(LIBSSH2_CHANNEL *,uint32_t,unsigned char,unsigned int *)", "", "Argument[1]", "Argument[*0].Field[*adjust_adjust]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_channel_receive_window_adjust", "(LIBSSH2_CHANNEL *,uint32_t,unsigned char,unsigned int *)", "", "Argument[1]", "Argument[*0].Field[*adjust_queue]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_channel_receive_window_adjust", "(LIBSSH2_CHANNEL *,uint32_t,unsigned char,unsigned int *)", "", "Argument[1]", "Argument[*0].Field[*remote].Field[*window_size]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_channel_write", "(LIBSSH2_CHANNEL *,int,const unsigned char *,size_t)", "", "Argument[3]", "Argument[*0].Field[*local].Field[*window_size]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_channel_write", "(LIBSSH2_CHANNEL *,int,const unsigned char *,size_t)", "", "Argument[3]", "Argument[*0].Field[*write_bufwrite]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_channel_write", "(LIBSSH2_CHANNEL *,int,const unsigned char *,size_t)", "", "Argument[3]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_cipher_crypt", "(EVP_CIPHER_CTX **,..(*)(..),int,unsigned char *,size_t,int)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_cipher_init", "(EVP_CIPHER_CTX **,..(*)(..),unsigned char *,unsigned char *,int)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_copy_string", "(LIBSSH2_SESSION *,string_buf *,unsigned char **,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_curve25519_gen_k", "(BIGNUM **,uint8_t[32],uint8_t[32])", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_dh_dtor", "(BIGNUM **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_dh_key_pair", "(BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,int,BN_CTX *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_dh_secret", "(BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,BN_CTX *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ecdh_gen_k", "(BIGNUM **,EVP_PKEY *,const unsigned char *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ecdsa_create_key", "(LIBSSH2_SESSION *,EVP_PKEY **,unsigned char **,size_t *,libssh2_curve_type)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ecdsa_new_private", "(EVP_PKEY **,LIBSSH2_SESSION *,const char *,const unsigned char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ecdsa_new_private_frommemory", "(EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ecdsa_new_private_frommemory_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ecdsa_new_private_frommemory_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ecdsa_new_private_frommemory_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ecdsa_new_private_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ecdsa_new_private_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ecdsa_new_private_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ecdsa_new_private_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ed25519_new_private_frommemory_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ed25519_new_private_frommemory_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ed25519_new_private_frommemory_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ed25519_new_private_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ed25519_new_private_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ed25519_new_private_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_error", "(LIBSSH2_SESSION *,int,const char *)", "", "Argument[*2]", "Argument[*0].Field[**err_msg]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_error", "(LIBSSH2_SESSION *,int,const char *)", "", "Argument[1]", "Argument[*0].Field[*err_code]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_error", "(LIBSSH2_SESSION *,int,const char *)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "_libssh2_error", "(LIBSSH2_SESSION *,int,const char *)", "", "Argument[2]", "Argument[*0].Field[**err_msg]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_error", "(LIBSSH2_SESSION *,int,const char *)", "", "Argument[2]", "Argument[*0].Field[*err_msg]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_error_flags", "(LIBSSH2_SESSION *,int,const char *,int)", "", "Argument[*2]", "Argument[*0].Field[**err_msg]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_error_flags", "(LIBSSH2_SESSION *,int,const char *,int)", "", "Argument[1]", "Argument[*0].Field[*err_code]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_error_flags", "(LIBSSH2_SESSION *,int,const char *,int)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "_libssh2_error_flags", "(LIBSSH2_SESSION *,int,const char *,int)", "", "Argument[2]", "Argument[*0].Field[**err_msg]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_error_flags", "(LIBSSH2_SESSION *,int,const char *,int)", "", "Argument[2]", "Argument[*0].Field[*err_msg]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_get_bignum_bytes", "(string_buf *,unsigned char **,size_t *)", "", "Argument[*0]", "Argument[**1]", "taint", "df-generated"] + - ["", "", True, "_libssh2_get_bignum_bytes", "(string_buf *,unsigned char **,size_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "_libssh2_get_bignum_bytes", "(string_buf *,unsigned char **,size_t *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "_libssh2_get_byte", "(string_buf *,unsigned char *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "_libssh2_get_string", "(string_buf *,unsigned char **,size_t *)", "", "Argument[*0]", "Argument[**1]", "taint", "df-generated"] + - ["", "", True, "_libssh2_get_string", "(string_buf *,unsigned char **,size_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "_libssh2_get_string", "(string_buf *,unsigned char **,size_t *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "_libssh2_get_u32", "(string_buf *,uint32_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "_libssh2_get_u64", "(string_buf *,libssh2_uint64_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "_libssh2_hmac_cleanup", "(EVP_MAC_CTX **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_hmac_final", "(EVP_MAC_CTX **,void *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_hmac_sha1_init", "(EVP_MAC_CTX **,void *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_hmac_sha256_init", "(EVP_MAC_CTX **,void *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_hmac_sha512_init", "(EVP_MAC_CTX **,void *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_hmac_update", "(EVP_MAC_CTX **,const void *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_htonu32", "(unsigned char *,uint32_t)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_kex_agree_instr", "(unsigned char *,size_t,const unsigned char *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_kex_agree_instr", "(unsigned char *,size_t,const unsigned char *,size_t)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_kex_agree_instr", "(unsigned char *,size_t,const unsigned char *,size_t)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "_libssh2_kex_agree_instr", "(unsigned char *,size_t,const unsigned char *,size_t)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_kex_agree_instr", "(unsigned char *,size_t,const unsigned char *,size_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_kex_agree_instr", "(unsigned char *,size_t,const unsigned char *,size_t)", "", "Argument[1]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_kex_exchange", "(LIBSSH2_SESSION *,int,key_exchange_state_t *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "_libssh2_kex_exchange", "(LIBSSH2_SESSION *,int,key_exchange_state_t *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "_libssh2_kex_exchange", "(LIBSSH2_SESSION *,int,key_exchange_state_t *)", "", "Argument[*2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "_libssh2_list_add", "(list_head *,list_node *)", "", "Argument[0]", "Argument[*0].Field[**first].Field[*head]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_list_add", "(list_head *,list_node *)", "", "Argument[0]", "Argument[*0].Field[**last].Field[*head]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_list_add", "(list_head *,list_node *)", "", "Argument[0]", "Argument[*1].Field[*head]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_list_add", "(list_head *,list_node *)", "", "Argument[1]", "Argument[*0].Field[*first]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_list_add", "(list_head *,list_node *)", "", "Argument[1]", "Argument[*0].Field[*last]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_list_add", "(list_head *,list_node *)", "", "Argument[1]", "Argument[*1].Field[**prev].Field[*next]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_list_first", "(list_head *)", "", "Argument[*0].Field[**first]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_list_first", "(list_head *)", "", "Argument[*0].Field[*first]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "_libssh2_list_init", "(list_head *)", "", "Argument[*0].Field[**last]", "Argument[*0].Field[**first]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_list_init", "(list_head *)", "", "Argument[*0].Field[*last]", "Argument[*0].Field[*first]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_list_next", "(list_node *)", "", "Argument[*0].Field[**next]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_list_next", "(list_node *)", "", "Argument[*0].Field[*next]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "_libssh2_list_prev", "(list_node *)", "", "Argument[*0].Field[**prev]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_list_prev", "(list_node *)", "", "Argument[*0].Field[*prev]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "_libssh2_ntohu32", "(const unsigned char *)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ntohu32", "(const unsigned char *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ntohu64", "(const unsigned char *)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_ntohu64", "(const unsigned char *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_packet_add", "(LIBSSH2_SESSION *,unsigned char *,size_t,int,uint32_t)", "", "Argument[2]", "Argument[*0].Field[**packAdd_channelp].Field[*adjust_adjust]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_packet_add", "(LIBSSH2_SESSION *,unsigned char *,size_t,int,uint32_t)", "", "Argument[2]", "Argument[*0].Field[**packAdd_channelp].Field[*adjust_queue]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_packet_burn", "(LIBSSH2_SESSION *,libssh2_nonblocking_states *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_packet_require", "(LIBSSH2_SESSION *,unsigned char,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_require_state_t *)", "", "Argument[1]", "Argument[*0].Field[*fullpacket_required_type]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_packet_requirev", "(LIBSSH2_SESSION *,const unsigned char *,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_requirev_state_t *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "_libssh2_pem_decode_integer", "(unsigned char **,size_t *,unsigned char **,unsigned int *)", "", "Argument[**0]", "Argument[**2]", "value", "df-generated"] + - ["", "", True, "_libssh2_pem_decode_integer", "(unsigned char **,size_t *,unsigned char **,unsigned int *)", "", "Argument[**0]", "Argument[*3]", "value", "df-generated"] + - ["", "", True, "_libssh2_pem_decode_integer", "(unsigned char **,size_t *,unsigned char **,unsigned int *)", "", "Argument[*0]", "Argument[*2]", "value", "df-generated"] + - ["", "", True, "_libssh2_pem_decode_integer", "(unsigned char **,size_t *,unsigned char **,unsigned int *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_pem_decode_sequence", "(unsigned char **,size_t *)", "", "Argument[**0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_pem_decode_sequence", "(unsigned char **,size_t *)", "", "Argument[**0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_pem_decode_sequence", "(unsigned char **,size_t *)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_pem_decode_sequence", "(unsigned char **,size_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_pem_decode_sequence", "(unsigned char **,size_t *)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_pem_decode_sequence", "(unsigned char **,size_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_pem_decode_sequence", "(unsigned char **,size_t *)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_pem_decode_sequence", "(unsigned char **,size_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_pem_parse", "(LIBSSH2_SESSION *,const char *,const char *,const unsigned char *,FILE *,unsigned char **,size_t *)", "", "Argument[5]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_pem_parse_memory", "(LIBSSH2_SESSION *,const char *,const char *,const char *,size_t,unsigned char **,size_t *)", "", "Argument[5]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_pub_priv_keyfilememory", "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *)", "", "Argument[*3]", "Argument[**3]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_pub_priv_keyfilememory", "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *)", "", "Argument[3]", "Argument[**3]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_pub_priv_keyfilememory", "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_pub_priv_keyfilememory", "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_rsa_new_private", "(EVP_PKEY **,LIBSSH2_SESSION *,const char *,const unsigned char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_rsa_new_private_frommemory", "(EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_session_set_blocking", "(LIBSSH2_SESSION *,int)", "", "Argument[*0].Field[*api_block_mode]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "_libssh2_session_set_blocking", "(LIBSSH2_SESSION *,int)", "", "Argument[1]", "Argument[*0].Field[*api_block_mode]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_sha1_final", "(EVP_MD_CTX **,unsigned char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sha1_init", "(EVP_MD_CTX **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sha1_update", "(EVP_MD_CTX **,const void *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sha256_final", "(EVP_MD_CTX **,unsigned char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sha256_init", "(EVP_MD_CTX **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sha256_update", "(EVP_MD_CTX **,const void *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sha384_final", "(EVP_MD_CTX **,unsigned char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sha384_init", "(EVP_MD_CTX **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sha384_update", "(EVP_MD_CTX **,const void *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sha512_final", "(EVP_MD_CTX **,unsigned char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sha512_init", "(EVP_MD_CTX **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sha512_update", "(EVP_MD_CTX **,const void *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sk_pub_keyfilememory", "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *)", "", "Argument[*3]", "Argument[**3]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sk_pub_keyfilememory", "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *)", "", "Argument[3]", "Argument[**3]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sk_pub_keyfilememory", "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sk_pub_keyfilememory", "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sk_pub_keyfilememory", "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *)", "", "Argument[7]", "Argument[*7]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sk_pub_keyfilememory", "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *)", "", "Argument[8]", "Argument[*8]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_sk_pub_keyfilememory", "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *)", "", "Argument[9]", "Argument[*9]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_bignum2_bytes", "(unsigned char **,const unsigned char *,size_t)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_bignum2_bytes", "(unsigned char **,const unsigned char *,size_t)", "", "Argument[*1]", "Argument[**0]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_store_bignum2_bytes", "(unsigned char **,const unsigned char *,size_t)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_bignum2_bytes", "(unsigned char **,const unsigned char *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_bignum2_bytes", "(unsigned char **,const unsigned char *,size_t)", "", "Argument[1]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_bignum2_bytes", "(unsigned char **,const unsigned char *,size_t)", "", "Argument[2]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_bignum2_bytes", "(unsigned char **,const unsigned char *,size_t)", "", "Argument[2]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_str", "(unsigned char **,const char *,size_t)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_str", "(unsigned char **,const char *,size_t)", "", "Argument[*1]", "Argument[**0]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_store_str", "(unsigned char **,const char *,size_t)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_str", "(unsigned char **,const char *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_str", "(unsigned char **,const char *,size_t)", "", "Argument[1]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_str", "(unsigned char **,const char *,size_t)", "", "Argument[2]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_str", "(unsigned char **,const char *,size_t)", "", "Argument[2]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_u32", "(unsigned char **,uint32_t)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_u32", "(unsigned char **,uint32_t)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_u32", "(unsigned char **,uint32_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_u32", "(unsigned char **,uint32_t)", "", "Argument[1]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_u64", "(unsigned char **,libssh2_uint64_t)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_u64", "(unsigned char **,libssh2_uint64_t)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_store_u64", "(unsigned char **,libssh2_uint64_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_transport_read", "(LIBSSH2_SESSION *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "_libssh2_transport_send", "(LIBSSH2_SESSION *,const unsigned char *,size_t,const unsigned char *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "_libssh2_userauth_publickey", "(LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *)", "", "Argument[*1]", "Argument[*0].Field[**userauth_pblc_b]", "value", "dfc-generated"] + - ["", "", True, "_libssh2_userauth_publickey", "(LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *)", "", "Argument[1]", "Argument[*0].Field[**userauth_pblc_b]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_userauth_publickey", "(LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *)", "", "Argument[4]", "Argument[*0].Field[**userauth_pblc_s]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_userauth_publickey", "(LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *)", "", "Argument[4]", "Argument[*0].Field[*userauth_pblc_packet_len]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_userauth_publickey", "(LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *)", "", "Argument[4]", "Argument[*0].Field[*userauth_pblc_s]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_userauth_publickey", "(LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_wait_socket", "(LIBSSH2_SESSION *,time_t)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "_libssh2_xor_data", "(unsigned char *,const unsigned char *,const unsigned char *,size_t)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_xor_data", "(unsigned char *,const unsigned char *,const unsigned char *,size_t)", "", "Argument[*2]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_xor_data", "(unsigned char *,const unsigned char *,const unsigned char *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_xor_data", "(unsigned char *,const unsigned char *,const unsigned char *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "_libssh2_xor_data", "(unsigned char *,const unsigned char *,const unsigned char *,size_t)", "", "Argument[2]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "chacha_encrypt_bytes", "(chacha_ctx *,const u8 *,u8 *,u32)", "", "Argument[*0].Field[*input]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "chacha_encrypt_bytes", "(chacha_ctx *,const u8 *,u8 *,u32)", "", "Argument[*1]", "Argument[*2]", "value", "dfc-generated"] + - ["", "", True, "chacha_encrypt_bytes", "(chacha_ctx *,const u8 *,u8 *,u32)", "", "Argument[1]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "chacha_encrypt_bytes", "(chacha_ctx *,const u8 *,u8 *,u32)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "chacha_ivsetup", "(chacha_ctx *,const u8 *,const u8 *)", "", "Argument[*1]", "Argument[*0].Field[*input]", "taint", "dfc-generated"] + - ["", "", True, "chacha_ivsetup", "(chacha_ctx *,const u8 *,const u8 *)", "", "Argument[*2]", "Argument[*0].Field[*input]", "taint", "dfc-generated"] + - ["", "", True, "chacha_ivsetup", "(chacha_ctx *,const u8 *,const u8 *)", "", "Argument[1]", "Argument[*0].Field[*input]", "taint", "dfc-generated"] + - ["", "", True, "chacha_ivsetup", "(chacha_ctx *,const u8 *,const u8 *)", "", "Argument[2]", "Argument[*0].Field[*input]", "taint", "dfc-generated"] + - ["", "", True, "chacha_keysetup", "(chacha_ctx *,const u8 *,u32)", "", "Argument[*1]", "Argument[*0].Field[*input]", "taint", "dfc-generated"] + - ["", "", True, "chacha_keysetup", "(chacha_ctx *,const u8 *,u32)", "", "Argument[1]", "Argument[*0].Field[*input]", "taint", "dfc-generated"] + - ["", "", True, "chachapoly_crypt", "(chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int)", "", "Argument[*3]", "Argument[*2]", "value", "dfc-generated"] + - ["", "", True, "chachapoly_crypt", "(chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "chachapoly_crypt", "(chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int)", "", "Argument[3]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "chachapoly_crypt", "(chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int)", "", "Argument[4]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "chachapoly_crypt", "(chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int)", "", "Argument[5]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "chachapoly_get_length", "(chachapoly_ctx *,unsigned int *,unsigned int,const unsigned char *,unsigned int)", "", "Argument[*3]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "chachapoly_get_length", "(chachapoly_ctx *,unsigned int *,unsigned int,const unsigned char *,unsigned int)", "", "Argument[3]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "chachapoly_init", "(chachapoly_ctx *,const u_char *,u_int)", "", "Argument[*1]", "Argument[*0].Field[*header_ctx].Field[*input]", "taint", "dfc-generated"] + - ["", "", True, "chachapoly_init", "(chachapoly_ctx *,const u_char *,u_int)", "", "Argument[*1]", "Argument[*0].Field[*main_ctx].Field[*input]", "taint", "dfc-generated"] + - ["", "", True, "chachapoly_init", "(chachapoly_ctx *,const u_char *,u_int)", "", "Argument[1]", "Argument[*0].Field[*header_ctx].Field[*input]", "taint", "dfc-generated"] + - ["", "", True, "chachapoly_init", "(chachapoly_ctx *,const u_char *,u_int)", "", "Argument[1]", "Argument[*0].Field[*main_ctx].Field[*input]", "taint", "dfc-generated"] + - ["", "", True, "chachapoly_timingsafe_bcmp", "(const void *,const void *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "chachapoly_timingsafe_bcmp", "(const void *,const void *,size_t)", "", "Argument[*1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "chachapoly_timingsafe_bcmp", "(const void *,const void *,size_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "chachapoly_timingsafe_bcmp", "(const void *,const void *,size_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "libssh2_agent_get_identity", "(LIBSSH2_AGENT *,libssh2_agent_publickey **,libssh2_agent_publickey *)", "", "Argument[*0]", "Argument[**1]", "taint", "df-generated"] + - ["", "", True, "libssh2_agent_get_identity_path", "(LIBSSH2_AGENT *)", "", "Argument[*0].Field[**identity_agent_path]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "libssh2_agent_get_identity_path", "(LIBSSH2_AGENT *)", "", "Argument[*0].Field[*identity_agent_path]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "libssh2_agent_init", "(LIBSSH2_SESSION *)", "", "Argument[*0]", "ReturnValue[*].Field[**session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_agent_init", "(LIBSSH2_SESSION *)", "", "Argument[0]", "ReturnValue[*].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_agent_set_identity_path", "(LIBSSH2_AGENT *,const char *)", "", "Argument[*1]", "Argument[*0].Field[**identity_agent_path]", "value", "dfc-generated"] + - ["", "", True, "libssh2_agent_set_identity_path", "(LIBSSH2_AGENT *,const char *)", "", "Argument[1]", "Argument[*0].Field[**identity_agent_path]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_agent_sign", "(LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int)", "", "Argument[*1].Field[**node]", "Argument[*0].Field[**identity]", "value", "dfc-generated"] + - ["", "", True, "libssh2_agent_sign", "(LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int)", "", "Argument[*1].Field[*node]", "Argument[*0].Field[*identity]", "value", "dfc-generated"] + - ["", "", True, "libssh2_agent_sign", "(LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int)", "", "Argument[*6]", "Argument[*0].Field[**session].Field[**userauth_pblc_method]", "value", "dfc-generated"] + - ["", "", True, "libssh2_agent_sign", "(LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_agent_sign", "(LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_agent_sign", "(LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int)", "", "Argument[6]", "Argument[*0].Field[**session].Field[**userauth_pblc_method]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_agent_sign", "(LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int)", "", "Argument[7]", "Argument[*0].Field[**session].Field[*userauth_pblc_method_len]", "value", "dfc-generated"] + - ["", "", True, "libssh2_agent_userauth", "(LIBSSH2_AGENT *,const char *,libssh2_agent_publickey *)", "", "Argument[*1]", "Argument[*0].Field[**session].Field[**userauth_pblc_b]", "value", "dfc-generated"] + - ["", "", True, "libssh2_agent_userauth", "(LIBSSH2_AGENT *,const char *,libssh2_agent_publickey *)", "", "Argument[1]", "Argument[*0].Field[**session].Field[**userauth_pblc_b]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_banner_set", "(LIBSSH2_SESSION *,const char *)", "", "Argument[*1]", "Argument[*0].Field[*local].Field[**banner]", "value", "dfc-generated"] + - ["", "", True, "libssh2_banner_set", "(LIBSSH2_SESSION *,const char *)", "", "Argument[1]", "Argument[*0].Field[*local].Field[**banner]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_base64_decode", "(LIBSSH2_SESSION *,char **,unsigned int *,const char *,unsigned int)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_close", "(LIBSSH2_CHANNEL *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_channel_direct_streamlocal_ex", "(LIBSSH2_SESSION *,const char *,const char *,int)", "", "Argument[0]", "Argument[*0].Field[**open_channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_direct_streamlocal_ex", "(LIBSSH2_SESSION *,const char *,const char *,int)", "", "Argument[0]", "ReturnValue[*].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_direct_tcpip_ex", "(LIBSSH2_SESSION *,const char *,int,const char *,int)", "", "Argument[0]", "Argument[*0].Field[**open_channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_direct_tcpip_ex", "(LIBSSH2_SESSION *,const char *,int,const char *,int)", "", "Argument[0]", "ReturnValue[*].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_eof", "(LIBSSH2_CHANNEL *)", "", "Argument[*0].Field[*remote].Field[*eof]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_flush_ex", "(LIBSSH2_CHANNEL *,int)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_channel_forward_accept", "(LIBSSH2_LISTENER *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_channel_forward_accept", "(LIBSSH2_LISTENER *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "libssh2_channel_forward_cancel", "(LIBSSH2_LISTENER *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_channel_forward_listen_ex", "(LIBSSH2_SESSION *,const char *,int,int *,int)", "", "Argument[*1]", "ReturnValue[*].Field[**host]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_forward_listen_ex", "(LIBSSH2_SESSION *,const char *,int,int *,int)", "", "Argument[0]", "ReturnValue[*].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_forward_listen_ex", "(LIBSSH2_SESSION *,const char *,int,int *,int)", "", "Argument[1]", "ReturnValue[*].Field[**host]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_forward_listen_ex", "(LIBSSH2_SESSION *,const char *,int,int *,int)", "", "Argument[2]", "Argument[*3]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_forward_listen_ex", "(LIBSSH2_SESSION *,const char *,int,int *,int)", "", "Argument[2]", "ReturnValue[*].Field[*port]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_forward_listen_ex", "(LIBSSH2_SESSION *,const char *,int,int *,int)", "", "Argument[4]", "ReturnValue[*].Field[*queue_maxsize]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_free", "(LIBSSH2_CHANNEL *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_channel_get_exit_signal", "(LIBSSH2_CHANNEL *,char **,size_t *,char **,size_t *,char **,size_t *)", "", "Argument[*0].Field[**exit_signal]", "Argument[**1]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_get_exit_signal", "(LIBSSH2_CHANNEL *,char **,size_t *,char **,size_t *,char **,size_t *)", "", "Argument[*0].Field[*exit_signal]", "Argument[**1]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_get_exit_signal", "(LIBSSH2_CHANNEL *,char **,size_t *,char **,size_t *,char **,size_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_get_exit_status", "(LIBSSH2_CHANNEL *)", "", "Argument[*0].Field[*exit_status]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_handle_extended_data2", "(LIBSSH2_CHANNEL *,int)", "", "Argument[1]", "Argument[*0].Field[*remote].Field[*extended_data_ignore_mode]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_handle_extended_data", "(LIBSSH2_CHANNEL *,int)", "", "Argument[1]", "Argument[*0].Field[*remote].Field[*extended_data_ignore_mode]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_open_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int)", "", "Argument[*1]", "Argument[*0].Field[**open_channel].Field[**channel_type]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_open_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int)", "", "Argument[*1]", "ReturnValue[*].Field[**channel_type]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_open_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int)", "", "Argument[0]", "Argument[*0].Field[**open_channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_open_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int)", "", "Argument[0]", "ReturnValue[*].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_open_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int)", "", "Argument[1]", "Argument[*0].Field[**open_channel].Field[**channel_type]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_open_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int)", "", "Argument[1]", "ReturnValue[*].Field[**channel_type]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_open_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int)", "", "Argument[3]", "ReturnValue[*].Field[*remote].Field[*window_size]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_open_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int)", "", "Argument[3]", "ReturnValue[*].Field[*remote].Field[*window_size_initial]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_open_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int)", "", "Argument[4]", "ReturnValue[*].Field[*remote].Field[*packet_size]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_process_startup", "(LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[2]", "Argument[*0].Field[*process_packet_len]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_read_ex", "(LIBSSH2_CHANNEL *,int,char *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_channel_read_ex", "(LIBSSH2_CHANNEL *,int,char *,size_t)", "", "Argument[3]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "libssh2_channel_read_ex", "(LIBSSH2_CHANNEL *,int,char *,size_t)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_channel_receive_window_adjust2", "(LIBSSH2_CHANNEL *,unsigned long,unsigned char,unsigned int *)", "", "Argument[1]", "Argument[*0].Field[*adjust_adjust]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_receive_window_adjust2", "(LIBSSH2_CHANNEL *,unsigned long,unsigned char,unsigned int *)", "", "Argument[1]", "Argument[*0].Field[*adjust_queue]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_receive_window_adjust2", "(LIBSSH2_CHANNEL *,unsigned long,unsigned char,unsigned int *)", "", "Argument[1]", "Argument[*0].Field[*remote].Field[*window_size]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_receive_window_adjust", "(LIBSSH2_CHANNEL *,unsigned long,unsigned char)", "", "Argument[1]", "Argument[*0].Field[*adjust_adjust]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_receive_window_adjust", "(LIBSSH2_CHANNEL *,unsigned long,unsigned char)", "", "Argument[1]", "Argument[*0].Field[*adjust_queue]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_receive_window_adjust", "(LIBSSH2_CHANNEL *,unsigned long,unsigned char)", "", "Argument[1]", "Argument[*0].Field[*remote].Field[*window_size]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_request_auth_agent", "(LIBSSH2_CHANNEL *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_channel_request_pty_ex", "(LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int)", "", "Argument[2]", "Argument[*0].Field[*reqPTY_packet_len]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_request_pty_ex", "(LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int)", "", "Argument[4]", "Argument[*0].Field[*reqPTY_packet_len]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_request_pty_size_ex", "(LIBSSH2_CHANNEL *,int,int,int,int)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_channel_send_eof", "(LIBSSH2_CHANNEL *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_channel_set_blocking", "(LIBSSH2_CHANNEL *,int)", "", "Argument[1]", "Argument[*0].Field[**session].Field[*api_block_mode]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_setenv_ex", "(LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[2]", "Argument[*0].Field[*setenv_packet_len]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_setenv_ex", "(LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[4]", "Argument[*0].Field[*setenv_packet_len]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_signal_ex", "(LIBSSH2_CHANNEL *,const char *,size_t)", "", "Argument[2]", "Argument[*0].Field[*sendsignal_packet_len]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_wait_closed", "(LIBSSH2_CHANNEL *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_channel_wait_eof", "(LIBSSH2_CHANNEL *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_channel_window_read_ex", "(LIBSSH2_CHANNEL *,unsigned long *,unsigned long *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "libssh2_channel_window_read_ex", "(LIBSSH2_CHANNEL *,unsigned long *,unsigned long *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_channel_window_write_ex", "(LIBSSH2_CHANNEL *,unsigned long *)", "", "Argument[*0].Field[*local].Field[*window_size]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_window_write_ex", "(LIBSSH2_CHANNEL *,unsigned long *)", "", "Argument[*0].Field[*local].Field[*window_size_initial]", "Argument[*1]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_write_ex", "(LIBSSH2_CHANNEL *,int,const char *,size_t)", "", "Argument[3]", "Argument[*0].Field[*local].Field[*window_size]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_write_ex", "(LIBSSH2_CHANNEL *,int,const char *,size_t)", "", "Argument[3]", "Argument[*0].Field[*write_bufwrite]", "value", "dfc-generated"] + - ["", "", True, "libssh2_channel_write_ex", "(LIBSSH2_CHANNEL *,int,const char *,size_t)", "", "Argument[3]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "libssh2_channel_x11_req_ex", "(LIBSSH2_CHANNEL *,int,const char *,const char *,int)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_hostkey_hash", "(LIBSSH2_SESSION *,int)", "", "Argument[*0].Field[*server_hostkey_sha1]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "libssh2_hostkey_hash", "(LIBSSH2_SESSION *,int)", "", "Argument[*0].Field[*server_hostkey_sha256]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "libssh2_keepalive_config", "(LIBSSH2_SESSION *,int,unsigned int)", "", "Argument[2]", "Argument[*0].Field[*keepalive_interval]", "value", "dfc-generated"] + - ["", "", True, "libssh2_keepalive_send", "(LIBSSH2_SESSION *,int *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "libssh2_keepalive_send", "(LIBSSH2_SESSION *,int *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_knownhost_add", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[*1]", "Argument[**6].Field[**name]", "value", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_add", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[*1]", "Argument[**6].Field[**node].Field[**name]", "value", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_add", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[*3]", "Argument[**6].Field[**key]", "value", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_add", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[*3]", "Argument[**6].Field[**node].Field[**key]", "value", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_add", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[1]", "Argument[**6].Field[**name]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_add", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[1]", "Argument[**6].Field[**node].Field[**name]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_add", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[3]", "Argument[**6].Field[**key]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_add", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[3]", "Argument[**6].Field[**node].Field[**key]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_add", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[5]", "Argument[**6].Field[**node].Field[*typemask]", "value", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_add", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[5]", "Argument[**6].Field[*typemask]", "value", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[*1]", "Argument[**8].Field[**name]", "value", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[*1]", "Argument[**8].Field[**node].Field[**name]", "value", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[*3]", "Argument[**8].Field[**key]", "value", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[*3]", "Argument[**8].Field[**node].Field[**key]", "value", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[*5]", "Argument[**8].Field[**node].Field[**comment]", "value", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[1]", "Argument[**8].Field[**name]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[1]", "Argument[**8].Field[**node].Field[**name]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[3]", "Argument[**8].Field[**key]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[3]", "Argument[**8].Field[**node].Field[**key]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[5]", "Argument[**8].Field[**node].Field[**comment]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[6]", "Argument[**8].Field[**node].Field[*comment_len]", "value", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[7]", "Argument[**8].Field[**node].Field[*typemask]", "value", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[7]", "Argument[**8].Field[*typemask]", "value", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_check", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[*0]", "Argument[**5]", "taint", "df-generated"] + - ["", "", True, "libssh2_knownhost_checkp", "(LIBSSH2_KNOWNHOSTS *,const char *,int,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[*0]", "Argument[**6]", "taint", "df-generated"] + - ["", "", True, "libssh2_knownhost_get", "(LIBSSH2_KNOWNHOSTS *,libssh2_knownhost **,libssh2_knownhost *)", "", "Argument[*0]", "Argument[**1]", "taint", "df-generated"] + - ["", "", True, "libssh2_knownhost_init", "(LIBSSH2_SESSION *)", "", "Argument[*0]", "ReturnValue[*].Field[**session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_init", "(LIBSSH2_SESSION *)", "", "Argument[0]", "ReturnValue[*].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_knownhost_writeline", "(LIBSSH2_KNOWNHOSTS *,libssh2_knownhost *,char *,size_t,size_t *,int)", "", "Argument[*1]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "libssh2_knownhost_writeline", "(LIBSSH2_KNOWNHOSTS *,libssh2_knownhost *,char *,size_t,size_t *,int)", "", "Argument[*1]", "Argument[*4]", "taint", "df-generated"] + - ["", "", True, "libssh2_poll", "(LIBSSH2_POLLFD *,unsigned int,long)", "", "Argument[0]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "libssh2_publickey_add_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[])", "", "Argument[*1]", "Argument[*0].Field[**add_s]", "value", "dfc-generated"] + - ["", "", True, "libssh2_publickey_add_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[])", "", "Argument[*3]", "Argument[*0].Field[**add_s]", "value", "dfc-generated"] + - ["", "", True, "libssh2_publickey_add_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[])", "", "Argument[1]", "Argument[*0].Field[**add_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_publickey_add_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[])", "", "Argument[2]", "Argument[*0].Field[**add_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_publickey_add_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[])", "", "Argument[2]", "Argument[*0].Field[*add_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_publickey_add_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[])", "", "Argument[3]", "Argument[*0].Field[**add_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_publickey_add_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[])", "", "Argument[4]", "Argument[*0].Field[**add_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_publickey_add_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[])", "", "Argument[4]", "Argument[*0].Field[*add_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_publickey_add_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[])", "", "Argument[4]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "libssh2_publickey_add_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[])", "", "Argument[6]", "Argument[*0].Field[**add_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_publickey_init", "(LIBSSH2_SESSION *)", "", "Argument[0]", "Argument[*0].Field[**open_channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_publickey_init", "(LIBSSH2_SESSION *)", "", "Argument[0]", "Argument[*0].Field[**pkeyInit_channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_publickey_init", "(LIBSSH2_SESSION *)", "", "Argument[0]", "ReturnValue[*].Field[**channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_publickey_list_fetch", "(LIBSSH2_PUBLICKEY *,unsigned long *,libssh2_publickey_list **)", "", "Argument[*0]", "Argument[**2]", "taint", "df-generated"] + - ["", "", True, "libssh2_publickey_list_fetch", "(LIBSSH2_PUBLICKEY *,unsigned long *,libssh2_publickey_list **)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_publickey_remove_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long)", "", "Argument[*1]", "Argument[*0].Field[**remove_s]", "value", "dfc-generated"] + - ["", "", True, "libssh2_publickey_remove_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long)", "", "Argument[*3]", "Argument[*0].Field[**remove_s]", "value", "dfc-generated"] + - ["", "", True, "libssh2_publickey_remove_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long)", "", "Argument[1]", "Argument[*0].Field[**remove_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_publickey_remove_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long)", "", "Argument[2]", "Argument[*0].Field[**remove_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_publickey_remove_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long)", "", "Argument[2]", "Argument[*0].Field[*remove_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_publickey_remove_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long)", "", "Argument[3]", "Argument[*0].Field[**remove_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_publickey_remove_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long)", "", "Argument[4]", "Argument[*0].Field[**remove_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_publickey_remove_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long)", "", "Argument[4]", "Argument[*0].Field[*remove_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_publickey_remove_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long)", "", "Argument[4]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_recv2", "(LIBSSH2_SESSION *,const char *,libssh2_struct_stat *)", "", "Argument[*1]", "Argument[*0].Field[**scpRecv_command]", "value", "dfc-generated"] + - ["", "", True, "libssh2_scp_recv2", "(LIBSSH2_SESSION *,const char *,libssh2_struct_stat *)", "", "Argument[*1]", "ReturnValue[*].Field[**session].Field[**scpRecv_command]", "value", "dfc-generated"] + - ["", "", True, "libssh2_scp_recv2", "(LIBSSH2_SESSION *,const char *,libssh2_struct_stat *)", "", "Argument[0]", "Argument[*0].Field[**open_channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_scp_recv2", "(LIBSSH2_SESSION *,const char *,libssh2_struct_stat *)", "", "Argument[0]", "Argument[*0].Field[**scpRecv_channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_scp_recv2", "(LIBSSH2_SESSION *,const char *,libssh2_struct_stat *)", "", "Argument[0]", "ReturnValue[*].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_scp_recv2", "(LIBSSH2_SESSION *,const char *,libssh2_struct_stat *)", "", "Argument[1]", "Argument[*0].Field[**scpRecv_command]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_recv2", "(LIBSSH2_SESSION *,const char *,libssh2_struct_stat *)", "", "Argument[1]", "ReturnValue[*].Field[**session].Field[**scpRecv_command]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_recv", "(LIBSSH2_SESSION *,const char *,stat *)", "", "Argument[*1]", "Argument[*0].Field[**scpRecv_command]", "value", "dfc-generated"] + - ["", "", True, "libssh2_scp_recv", "(LIBSSH2_SESSION *,const char *,stat *)", "", "Argument[*1]", "ReturnValue[*].Field[**session].Field[**scpRecv_command]", "value", "dfc-generated"] + - ["", "", True, "libssh2_scp_recv", "(LIBSSH2_SESSION *,const char *,stat *)", "", "Argument[0]", "Argument[*0].Field[**open_channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_scp_recv", "(LIBSSH2_SESSION *,const char *,stat *)", "", "Argument[0]", "Argument[*0].Field[**scpRecv_channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_scp_recv", "(LIBSSH2_SESSION *,const char *,stat *)", "", "Argument[0]", "ReturnValue[*].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_scp_recv", "(LIBSSH2_SESSION *,const char *,stat *)", "", "Argument[1]", "Argument[*0].Field[**scpRecv_command]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_recv", "(LIBSSH2_SESSION *,const char *,stat *)", "", "Argument[1]", "ReturnValue[*].Field[**session].Field[**scpRecv_command]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_send64", "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)", "", "Argument[0]", "Argument[*0].Field[**open_channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_scp_send64", "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)", "", "Argument[0]", "Argument[*0].Field[**scpSend_channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_scp_send64", "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)", "", "Argument[0]", "ReturnValue[*].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_scp_send64", "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)", "", "Argument[2]", "Argument[*0].Field[*scpSend_response]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_send64", "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)", "", "Argument[2]", "ReturnValue[*].Field[**session].Field[*scpSend_response]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_send64", "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)", "", "Argument[3]", "Argument[*0].Field[*scpSend_response]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_send64", "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)", "", "Argument[3]", "ReturnValue[*].Field[**session].Field[*scpSend_response]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_send64", "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)", "", "Argument[4]", "Argument[*0].Field[*scpSend_response]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_send64", "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)", "", "Argument[4]", "ReturnValue[*].Field[**session].Field[*scpSend_response]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_send64", "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)", "", "Argument[5]", "Argument[*0].Field[*scpSend_response]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_send64", "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)", "", "Argument[5]", "ReturnValue[*].Field[**session].Field[*scpSend_response]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_send_ex", "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)", "", "Argument[0]", "Argument[*0].Field[**open_channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_scp_send_ex", "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)", "", "Argument[0]", "Argument[*0].Field[**scpSend_channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_scp_send_ex", "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)", "", "Argument[0]", "ReturnValue[*].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_scp_send_ex", "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)", "", "Argument[2]", "Argument[*0].Field[*scpSend_response]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_send_ex", "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)", "", "Argument[2]", "ReturnValue[*].Field[**session].Field[*scpSend_response]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_send_ex", "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)", "", "Argument[3]", "Argument[*0].Field[*scpSend_response]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_send_ex", "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)", "", "Argument[3]", "ReturnValue[*].Field[**session].Field[*scpSend_response]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_send_ex", "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)", "", "Argument[4]", "Argument[*0].Field[*scpSend_response]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_send_ex", "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)", "", "Argument[4]", "ReturnValue[*].Field[**session].Field[*scpSend_response]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_send_ex", "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)", "", "Argument[5]", "Argument[*0].Field[*scpSend_response]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_scp_send_ex", "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)", "", "Argument[5]", "ReturnValue[*].Field[**session].Field[*scpSend_response]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_session_abstract", "(LIBSSH2_SESSION *)", "", "Argument[*0].Field[**abstract]", "ReturnValue[**]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_abstract", "(LIBSSH2_SESSION *)", "", "Argument[*0].Field[*abstract]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_banner_get", "(LIBSSH2_SESSION *)", "", "Argument[*0].Field[*remote].Field[**banner]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_banner_get", "(LIBSSH2_SESSION *)", "", "Argument[*0].Field[*remote].Field[*banner]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_banner_set", "(LIBSSH2_SESSION *,const char *)", "", "Argument[*1]", "Argument[*0].Field[*local].Field[**banner]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_banner_set", "(LIBSSH2_SESSION *,const char *)", "", "Argument[1]", "Argument[*0].Field[*local].Field[**banner]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_session_block_directions", "(LIBSSH2_SESSION *)", "", "Argument[*0].Field[*socket_block_directions]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_callback_set2", "(LIBSSH2_SESSION *,int,libssh2_cb_generic *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_session_callback_set2", "(LIBSSH2_SESSION *,int,libssh2_cb_generic *)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "libssh2_session_callback_set", "(LIBSSH2_SESSION *,int,void *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_session_callback_set", "(LIBSSH2_SESSION *,int,void *)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "libssh2_session_disconnect_ex", "(LIBSSH2_SESSION *,int,const char *,const char *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_session_flag", "(LIBSSH2_SESSION *,int,int)", "", "Argument[2]", "Argument[*0].Field[*flag].Field[*compress]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_flag", "(LIBSSH2_SESSION *,int,int)", "", "Argument[2]", "Argument[*0].Field[*flag].Field[*quote_paths]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_flag", "(LIBSSH2_SESSION *,int,int)", "", "Argument[2]", "Argument[*0].Field[*flag].Field[*sigpipe]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_free", "(LIBSSH2_SESSION *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_session_get_blocking", "(LIBSSH2_SESSION *)", "", "Argument[*0].Field[*api_block_mode]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_get_read_timeout", "(LIBSSH2_SESSION *)", "", "Argument[*0].Field[*packet_read_timeout]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_get_timeout", "(LIBSSH2_SESSION *)", "", "Argument[*0].Field[*api_timeout]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_handshake", "(LIBSSH2_SESSION *,libssh2_socket_t)", "", "Argument[1]", "Argument[*0].Field[*socket_fd]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_hostkey", "(LIBSSH2_SESSION *,size_t *,int *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "libssh2_session_hostkey", "(LIBSSH2_SESSION *,size_t *,int *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_session_hostkey", "(LIBSSH2_SESSION *,size_t *,int *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "libssh2_session_init_ex", "(..(*)(..),..(*)(..),..(*)(..),void *)", "", "Argument[**3]", "ReturnValue[*].Field[***abstract]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_init_ex", "(..(*)(..),..(*)(..),..(*)(..),void *)", "", "Argument[*3]", "ReturnValue[*].Field[**abstract]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_init_ex", "(..(*)(..),..(*)(..),..(*)(..),void *)", "", "Argument[0]", "ReturnValue[*].Field[*alloc]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_init_ex", "(..(*)(..),..(*)(..),..(*)(..),void *)", "", "Argument[1]", "ReturnValue[*].Field[*free]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_init_ex", "(..(*)(..),..(*)(..),..(*)(..),void *)", "", "Argument[2]", "ReturnValue[*].Field[*realloc]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_init_ex", "(..(*)(..),..(*)(..),..(*)(..),void *)", "", "Argument[3]", "ReturnValue[*].Field[*abstract]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_last_errno", "(LIBSSH2_SESSION *)", "", "Argument[*0].Field[*err_code]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_last_error", "(LIBSSH2_SESSION *,char **,int *,int)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_session_methods", "(LIBSSH2_SESSION *,int)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_session_methods", "(LIBSSH2_SESSION *,int)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "libssh2_session_set_blocking", "(LIBSSH2_SESSION *,int)", "", "Argument[1]", "Argument[*0].Field[*api_block_mode]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_set_last_error", "(LIBSSH2_SESSION *,int,const char *)", "", "Argument[*2]", "Argument[*0].Field[**err_msg]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_set_last_error", "(LIBSSH2_SESSION *,int,const char *)", "", "Argument[1]", "Argument[*0].Field[*err_code]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_set_last_error", "(LIBSSH2_SESSION *,int,const char *)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_set_last_error", "(LIBSSH2_SESSION *,int,const char *)", "", "Argument[2]", "Argument[*0].Field[**err_msg]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_session_set_last_error", "(LIBSSH2_SESSION *,int,const char *)", "", "Argument[2]", "Argument[*0].Field[*err_msg]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_set_read_timeout", "(LIBSSH2_SESSION *,long)", "", "Argument[1]", "Argument[*0].Field[*packet_read_timeout]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_set_timeout", "(LIBSSH2_SESSION *,long)", "", "Argument[1]", "Argument[*0].Field[*api_timeout]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_startup", "(LIBSSH2_SESSION *,int)", "", "Argument[1]", "Argument[*0].Field[*socket_fd]", "value", "dfc-generated"] + - ["", "", True, "libssh2_session_supported_algs", "(LIBSSH2_SESSION *,int,const char ***)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sftp_close_handle", "(LIBSSH2_SFTP_HANDLE *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_sftp_dtor", "(LIBSSH2_SESSION *,void **,LIBSSH2_CHANNEL *,void **)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sftp_fstat_ex", "(LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_sftp_fstatvfs", "(LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_STATVFS *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_sftp_fsync", "(LIBSSH2_SFTP_HANDLE *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_sftp_get_channel", "(LIBSSH2_SFTP *)", "", "Argument[*0].Field[**channel]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "libssh2_sftp_get_channel", "(LIBSSH2_SFTP *)", "", "Argument[*0].Field[*channel]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "libssh2_sftp_init", "(LIBSSH2_SESSION *)", "", "Argument[0]", "Argument[*0].Field[**open_channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_sftp_init", "(LIBSSH2_SESSION *)", "", "Argument[0]", "Argument[*0].Field[**sftpInit_channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_sftp_init", "(LIBSSH2_SESSION *)", "", "Argument[0]", "ReturnValue[*].Field[**channel].Field[*session]", "value", "dfc-generated"] + - ["", "", True, "libssh2_sftp_last_error", "(LIBSSH2_SFTP *)", "", "Argument[*0].Field[*last_errno]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "libssh2_sftp_mkdir_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,long)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sftp_open_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,unsigned long,long,int)", "", "Argument[0]", "ReturnValue[*].Field[*sftp]", "value", "dfc-generated"] + - ["", "", True, "libssh2_sftp_open_ex_r", "(LIBSSH2_SFTP *,const char *,size_t,unsigned long,long,int,LIBSSH2_SFTP_ATTRIBUTES *)", "", "Argument[0]", "ReturnValue[*].Field[*sftp]", "value", "dfc-generated"] + - ["", "", True, "libssh2_sftp_posix_rename_ex", "(LIBSSH2_SFTP *,const char *,size_t,const char *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_sftp_read", "(LIBSSH2_SFTP_HANDLE *,char *,size_t)", "", "Argument[2]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "libssh2_sftp_readdir_ex", "(LIBSSH2_SFTP_HANDLE *,char *,size_t,char *,size_t,LIBSSH2_SFTP_ATTRIBUTES *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_sftp_rename_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)", "", "Argument[*1]", "Argument[*0].Field[**rename_s]", "value", "dfc-generated"] + - ["", "", True, "libssh2_sftp_rename_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)", "", "Argument[*3]", "Argument[*0].Field[**rename_s]", "value", "dfc-generated"] + - ["", "", True, "libssh2_sftp_rename_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)", "", "Argument[1]", "Argument[*0].Field[**rename_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sftp_rename_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)", "", "Argument[2]", "Argument[*0].Field[**rename_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sftp_rename_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)", "", "Argument[2]", "Argument[*0].Field[*rename_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sftp_rename_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sftp_rename_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)", "", "Argument[3]", "Argument[*0].Field[**rename_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sftp_rename_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)", "", "Argument[4]", "Argument[*0].Field[**rename_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sftp_rename_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)", "", "Argument[4]", "Argument[*0].Field[*rename_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sftp_rename_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)", "", "Argument[4]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sftp_rename_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)", "", "Argument[5]", "Argument[*0].Field[**rename_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sftp_rmdir_ex", "(LIBSSH2_SFTP *,const char *,unsigned int)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sftp_stat_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,int,LIBSSH2_SFTP_ATTRIBUTES *)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sftp_statvfs", "(LIBSSH2_SFTP *,const char *,size_t,LIBSSH2_SFTP_STATVFS *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "libssh2_sftp_symlink_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,char *,unsigned int,int)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sftp_symlink_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,char *,unsigned int,int)", "", "Argument[4]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sftp_unlink_ex", "(LIBSSH2_SFTP *,const char *,unsigned int)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sftp_write", "(LIBSSH2_SFTP_HANDLE *,const char *,size_t)", "", "Argument[2]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "libssh2_sign_sk", "(LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **)", "", "Argument[*1]", "Argument[**1]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sign_sk", "(LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **)", "", "Argument[*1]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sign_sk", "(LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **)", "", "Argument[*2]", "Argument[**1]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sign_sk", "(LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **)", "", "Argument[1]", "Argument[**1]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sign_sk", "(LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sign_sk", "(LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **)", "", "Argument[1]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sign_sk", "(LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **)", "", "Argument[2]", "Argument[**1]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sign_sk", "(LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_sign_sk", "(LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **)", "", "Argument[5]", "Argument[*5]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_banner", "(LIBSSH2_SESSION *,char **)", "", "Argument[*0].Field[**userauth_banner]", "Argument[**1]", "value", "dfc-generated"] + - ["", "", True, "libssh2_userauth_banner", "(LIBSSH2_SESSION *,char **)", "", "Argument[*0].Field[*userauth_banner]", "Argument[*1]", "value", "dfc-generated"] + - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[*1]", "Argument[*0].Field[**userauth_host_s]", "value", "dfc-generated"] + - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[*6]", "Argument[*0].Field[**userauth_host_s]", "value", "dfc-generated"] + - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[*8]", "Argument[*0].Field[**userauth_host_s]", "value", "dfc-generated"] + - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[1]", "Argument[*0].Field[**userauth_host_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[2]", "Argument[*0].Field[**userauth_host_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[2]", "Argument[*0].Field[*userauth_host_packet_len]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[2]", "Argument[*0].Field[*userauth_host_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[6]", "Argument[*0].Field[**userauth_host_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[7]", "Argument[*0].Field[**userauth_host_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[7]", "Argument[*0].Field[*userauth_host_packet_len]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[7]", "Argument[*0].Field[*userauth_host_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[8]", "Argument[*0].Field[**userauth_host_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[9]", "Argument[*0].Field[**userauth_host_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[9]", "Argument[*0].Field[*userauth_host_packet_len]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[9]", "Argument[*0].Field[*userauth_host_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_keyboard_interactive_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,..(*)(..))", "", "Argument[2]", "Argument[*0].Field[*userauth_kybd_packet_len]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_list", "(LIBSSH2_SESSION *,const char *,unsigned int)", "", "Argument[2]", "Argument[*0].Field[*userauth_list_data_len]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_password_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,unsigned int,..(*)(..))", "", "Argument[2]", "Argument[*0].Field[*userauth_pswd_data_len]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_password_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,unsigned int,..(*)(..))", "", "Argument[4]", "Argument[*0].Field[*userauth_pswd_data_len]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_publickey", "(LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **)", "", "Argument[*1]", "Argument[*0].Field[**userauth_pblc_b]", "value", "dfc-generated"] + - ["", "", True, "libssh2_userauth_publickey", "(LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **)", "", "Argument[1]", "Argument[*0].Field[**userauth_pblc_b]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_publickey", "(LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **)", "", "Argument[3]", "Argument[*0].Field[**userauth_pblc_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_publickey", "(LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **)", "", "Argument[3]", "Argument[*0].Field[*userauth_pblc_packet_len]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_publickey", "(LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **)", "", "Argument[3]", "Argument[*0].Field[*userauth_pblc_s]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_publickey_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *)", "", "Argument[*1]", "Argument[*0].Field[**userauth_pblc_b]", "value", "dfc-generated"] + - ["", "", True, "libssh2_userauth_publickey_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *)", "", "Argument[1]", "Argument[*0].Field[**userauth_pblc_b]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_publickey_frommemory", "(LIBSSH2_SESSION *,const char *,size_t,const char *,size_t,const char *,size_t,const char *)", "", "Argument[*1]", "Argument[*0].Field[**userauth_pblc_b]", "value", "dfc-generated"] + - ["", "", True, "libssh2_userauth_publickey_frommemory", "(LIBSSH2_SESSION *,const char *,size_t,const char *,size_t,const char *,size_t,const char *)", "", "Argument[1]", "Argument[*0].Field[**userauth_pblc_b]", "taint", "dfc-generated"] + - ["", "", True, "libssh2_userauth_publickey_sk", "(LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **)", "", "Argument[*1]", "Argument[*0].Field[**userauth_pblc_b]", "value", "dfc-generated"] + - ["", "", True, "libssh2_userauth_publickey_sk", "(LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **)", "", "Argument[1]", "Argument[*0].Field[**userauth_pblc_b]", "taint", "dfc-generated"] + - ["", "", True, "plain_method", "(char *,size_t)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "poly1305_auth", "(u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32])", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "poly1305_auth", "(u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32])", "", "Argument[*3]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "poly1305_auth", "(u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32])", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "poly1305_auth", "(u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32])", "", "Argument[3]", "Argument[*0]", "taint", "dfc-generated"] diff --git a/cpp/ql/lib/ext/generated/libuv/libuv.model.yml b/cpp/ql/lib/ext/generated/libuv/libuv.model.yml new file mode 100644 index 00000000000..e9621474db8 --- /dev/null +++ b/cpp/ql/lib/ext/generated/libuv/libuv.model.yml @@ -0,0 +1,646 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/cpp-all + extensible: summaryModel + data: + - ["", "", True, "uv__accept", "(int)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv__count_bufs", "(const uv_buf_t[],unsigned int)", "", "Argument[*0].Field[*len]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv__fs_poll_close", "(uv_fs_poll_t *)", "", "Argument[0]", "Argument[*0].Field[**loop].Field[*closing_handles]", "value", "dfc-generated"] + - ["", "", True, "uv__fs_post", "(uv_loop_t *,uv_fs_t *)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"] + - ["", "", True, "uv__fs_post", "(uv_loop_t *,uv_fs_t *)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv__get_constrained_cpu", "(long long *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv__getsockpeername", "(const uv_handle_t *,uv__peersockfunc,sockaddr *,int *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "uv__idna_toascii", "(const char *,const char *,char *,char *)", "", "Argument[*0]", "Argument[*2]", "value", "dfc-generated"] + - ["", "", True, "uv__idna_toascii", "(const char *,const char *,char *,char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv__idna_toascii", "(const char *,const char *,char *,char *)", "", "Argument[0]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv__idna_toascii", "(const char *,const char *,char *,char *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv__idna_toascii", "(const char *,const char *,char *,char *)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv__io_active", "(const uv__io_t *,unsigned int)", "", "Argument[*0].Field[*pevents]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv__io_active", "(const uv__io_t *,unsigned int)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv__io_close", "(uv_loop_t *,uv__io_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "uv__io_close", "(uv_loop_t *,uv__io_t *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "uv__io_feed", "(uv_loop_t *,uv__io_t *)", "", "Argument[*1].Field[*pending_queue]", "Argument[*0].Field[*pending_queue].Field[**prev]", "value", "dfc-generated"] + - ["", "", True, "uv__io_init", "(uv__io_t *,uv__io_cb,int)", "", "Argument[1]", "Argument[*0].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv__io_init", "(uv__io_t *,uv__io_cb,int)", "", "Argument[2]", "Argument[*0].Field[*fd]", "value", "dfc-generated"] + - ["", "", True, "uv__io_init_start", "(uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int)", "", "Argument[1]", "Argument[*0].Field[**watchers]", "value", "dfc-generated"] + - ["", "", True, "uv__io_init_start", "(uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int)", "", "Argument[2]", "Argument[*0].Field[***watchers].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv__io_init_start", "(uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int)", "", "Argument[2]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv__io_init_start", "(uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int)", "", "Argument[3]", "Argument[*0].Field[***watchers].Field[*fd]", "value", "dfc-generated"] + - ["", "", True, "uv__io_init_start", "(uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int)", "", "Argument[3]", "Argument[*0].Field[*nwatchers]", "taint", "dfc-generated"] + - ["", "", True, "uv__io_init_start", "(uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int)", "", "Argument[3]", "Argument[*1].Field[*fd]", "value", "dfc-generated"] + - ["", "", True, "uv__io_init_start", "(uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int)", "", "Argument[4]", "Argument[*0].Field[***watchers].Field[*pevents]", "taint", "dfc-generated"] + - ["", "", True, "uv__io_init_start", "(uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int)", "", "Argument[4]", "Argument[*1].Field[*pevents]", "taint", "dfc-generated"] + - ["", "", True, "uv__io_start", "(uv_loop_t *,uv__io_t *,unsigned int)", "", "Argument[1]", "Argument[*0].Field[**watchers]", "value", "dfc-generated"] + - ["", "", True, "uv__io_start", "(uv_loop_t *,uv__io_t *,unsigned int)", "", "Argument[2]", "Argument[*0].Field[***watchers].Field[*pevents]", "taint", "dfc-generated"] + - ["", "", True, "uv__io_start", "(uv_loop_t *,uv__io_t *,unsigned int)", "", "Argument[2]", "Argument[*1].Field[*pevents]", "taint", "dfc-generated"] + - ["", "", True, "uv__io_stop", "(uv_loop_t *,uv__io_t *,unsigned int)", "", "Argument[2]", "Argument[*1].Field[*pevents]", "taint", "dfc-generated"] + - ["", "", True, "uv__iou_fs_close", "(uv_loop_t *,uv_fs_t *)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_close", "(uv_loop_t *,uv_fs_t *)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_fsync_or_fdatasync", "(uv_loop_t *,uv_fs_t *,uint32_t)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_fsync_or_fdatasync", "(uv_loop_t *,uv_fs_t *,uint32_t)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_ftruncate", "(uv_loop_t *,uv_fs_t *)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_ftruncate", "(uv_loop_t *,uv_fs_t *)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_link", "(uv_loop_t *,uv_fs_t *)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_link", "(uv_loop_t *,uv_fs_t *)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_mkdir", "(uv_loop_t *,uv_fs_t *)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_mkdir", "(uv_loop_t *,uv_fs_t *)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_open", "(uv_loop_t *,uv_fs_t *)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_open", "(uv_loop_t *,uv_fs_t *)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_read_or_write", "(uv_loop_t *,uv_fs_t *,int)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_read_or_write", "(uv_loop_t *,uv_fs_t *,int)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_rename", "(uv_loop_t *,uv_fs_t *)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_rename", "(uv_loop_t *,uv_fs_t *)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_statx", "(uv_loop_t *,uv_fs_t *,int,int)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_statx", "(uv_loop_t *,uv_fs_t *,int,int)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_symlink", "(uv_loop_t *,uv_fs_t *)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_symlink", "(uv_loop_t *,uv_fs_t *)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_unlink", "(uv_loop_t *,uv_fs_t *)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"] + - ["", "", True, "uv__iou_fs_unlink", "(uv_loop_t *,uv_fs_t *)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv__loop_configure", "(uv_loop_t *,uv_loop_option,va_list)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv__make_close_pending", "(uv_handle_t *)", "", "Argument[0]", "Argument[*0].Field[**loop].Field[*closing_handles]", "value", "dfc-generated"] + - ["", "", True, "uv__next_timeout", "(const uv_loop_t *)", "", "Argument[*0].Field[*time]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv__pipe_listen", "(uv_pipe_t *,int,uv_connection_cb)", "", "Argument[2]", "Argument[*0].Field[*connection_cb]", "value", "dfc-generated"] + - ["", "", True, "uv__process_init", "(uv_loop_t *)", "", "Argument[0]", "Argument[*0].Field[*child_watcher].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv__random_devurandom", "(void *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv__random_getrandom", "(void *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv__random_readpath", "(const char *,void *,size_t)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv__read_start", "(uv_stream_t *,uv_alloc_cb,uv_read_cb)", "", "Argument[1]", "Argument[*0].Field[*alloc_cb]", "value", "dfc-generated"] + - ["", "", True, "uv__read_start", "(uv_stream_t *,uv_alloc_cb,uv_read_cb)", "", "Argument[2]", "Argument[*0].Field[*read_cb]", "value", "dfc-generated"] + - ["", "", True, "uv__search_path", "(const char *,char *,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv__server_io", "(uv_loop_t *,uv__io_t *,unsigned int)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "uv__server_io", "(uv_loop_t *,uv__io_t *,unsigned int)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "uv__server_io", "(uv_loop_t *,uv__io_t *,unsigned int)", "", "Argument[1]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "uv__socket_sockopt", "(uv_handle_t *,int,int *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv__statx_to_stat", "(const uv__statx *,uv_stat_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "uv__strdup", "(const char *)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "uv__strdup", "(const char *)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "uv__stream_init", "(uv_loop_t *,uv_stream_t *,uv_handle_type)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv__stream_init", "(uv_loop_t *,uv_stream_t *,uv_handle_type)", "", "Argument[2]", "Argument[*1].Field[*type]", "value", "dfc-generated"] + - ["", "", True, "uv__stream_open", "(uv_stream_t *,int,int)", "", "Argument[1]", "Argument[*0].Field[*io_watcher].Field[*fd]", "value", "dfc-generated"] + - ["", "", True, "uv__stream_open", "(uv_stream_t *,int,int)", "", "Argument[2]", "Argument[*0].Field[*flags]", "taint", "dfc-generated"] + - ["", "", True, "uv__strndup", "(const char *,size_t)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "uv__strndup", "(const char *,size_t)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "uv__strscpy", "(char *,const char *,size_t)", "", "Argument[*1]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "uv__strscpy", "(char *,const char *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv__strtok", "(char *,const char *,char **)", "", "Argument[**2]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "uv__strtok", "(char *,const char *,char **)", "", "Argument[*0]", "Argument[**2]", "value", "dfc-generated"] + - ["", "", True, "uv__strtok", "(char *,const char *,char **)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "uv__strtok", "(char *,const char *,char **)", "", "Argument[*2]", "Argument[**2]", "taint", "dfc-generated"] + - ["", "", True, "uv__strtok", "(char *,const char *,char **)", "", "Argument[*2]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv__strtok", "(char *,const char *,char **)", "", "Argument[0]", "Argument[**2]", "taint", "dfc-generated"] + - ["", "", True, "uv__strtok", "(char *,const char *,char **)", "", "Argument[0]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv__strtok", "(char *,const char *,char **)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv__strtok", "(char *,const char *,char **)", "", "Argument[2]", "Argument[**2]", "taint", "dfc-generated"] + - ["", "", True, "uv__strtok", "(char *,const char *,char **)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv__strtok", "(char *,const char *,char **)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv__tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb)", "", "Argument[0]", "Argument[*1].Field[*connect_req]", "value", "dfc-generated"] + - ["", "", True, "uv__tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb)", "", "Argument[1]", "Argument[*0].Field[*handle]", "value", "dfc-generated"] + - ["", "", True, "uv__tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb)", "", "Argument[1]", "Argument[*1].Field[**connect_req].Field[*handle]", "value", "dfc-generated"] + - ["", "", True, "uv__tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv__tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb)", "", "Argument[4]", "Argument[*0].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv__tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb)", "", "Argument[4]", "Argument[*1].Field[**connect_req].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv__tcp_listen", "(uv_tcp_t *,int,uv_connection_cb)", "", "Argument[2]", "Argument[*0].Field[*connection_cb]", "value", "dfc-generated"] + - ["", "", True, "uv__thread_getname", "(uv_thread_t *,char *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv__udp_init_ex", "(uv_loop_t *,uv_udp_t *,unsigned int,int)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv__udp_recv_start", "(uv_udp_t *,uv_alloc_cb,uv_udp_recv_cb)", "", "Argument[1]", "Argument[*0].Field[*alloc_cb]", "value", "dfc-generated"] + - ["", "", True, "uv__udp_recv_start", "(uv_udp_t *,uv_alloc_cb,uv_udp_recv_cb)", "", "Argument[2]", "Argument[*0].Field[*recv_cb]", "value", "dfc-generated"] + - ["", "", True, "uv__udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb)", "", "Argument[*2].Field[*len]", "Argument[*1].Field[*send_queue_size]", "taint", "dfc-generated"] + - ["", "", True, "uv__udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb)", "", "Argument[*2]", "Argument[*0].Field[**bufs]", "value", "dfc-generated"] + - ["", "", True, "uv__udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb)", "", "Argument[*4]", "Argument[*0].Field[*u].Union[*(unnamed class/struct/union)]", "value", "dfc-generated"] + - ["", "", True, "uv__udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb)", "", "Argument[1]", "Argument[*0].Field[*handle]", "value", "dfc-generated"] + - ["", "", True, "uv__udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb)", "", "Argument[2]", "Argument[*0].Field[**bufs]", "taint", "dfc-generated"] + - ["", "", True, "uv__udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb)", "", "Argument[3]", "Argument[*0].Field[*nbufs]", "value", "dfc-generated"] + - ["", "", True, "uv__udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb)", "", "Argument[4]", "Argument[*0].Field[*u].Union[*(unnamed class/struct/union)]", "taint", "dfc-generated"] + - ["", "", True, "uv__udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb)", "", "Argument[6]", "Argument[*0].Field[*send_cb]", "value", "dfc-generated"] + - ["", "", True, "uv__udp_try_send2", "(uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[])", "", "Argument[*2]", "Argument[**2]", "taint", "dfc-generated"] + - ["", "", True, "uv__udp_try_send2", "(uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[])", "", "Argument[*4]", "Argument[**4]", "taint", "dfc-generated"] + - ["", "", True, "uv__udp_try_send", "(uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int)", "", "Argument[*1].Field[*len]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv__utf8_decode1", "(const char **,const char *)", "", "Argument[**0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv__utf8_decode1", "(const char **,const char *)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "uv__utf8_decode1", "(const char **,const char *)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv__utf8_decode1", "(const char **,const char *)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "uv__utf8_decode1", "(const char **,const char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv__utf8_decode1", "(const char **,const char *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv__work_done", "(uv_async_t *)", "", "Argument[0]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "uv__work_submit", "(uv_loop_t *,uv__work *,uv__work_kind,..(*)(..),..(*)(..))", "", "Argument[*0]", "Argument[*1].Field[**loop]", "value", "dfc-generated"] + - ["", "", True, "uv__work_submit", "(uv_loop_t *,uv__work *,uv__work_kind,..(*)(..),..(*)(..))", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv__work_submit", "(uv_loop_t *,uv__work *,uv__work_kind,..(*)(..),..(*)(..))", "", "Argument[3]", "Argument[*1].Field[*work]", "value", "dfc-generated"] + - ["", "", True, "uv__work_submit", "(uv_loop_t *,uv__work *,uv__work_kind,..(*)(..),..(*)(..))", "", "Argument[4]", "Argument[*1].Field[*done]", "value", "dfc-generated"] + - ["", "", True, "uv_accept", "(uv_stream_t *,uv_stream_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "uv_async_init", "(uv_loop_t *,uv_async_t *,uv_async_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_async_init", "(uv_loop_t *,uv_async_t *,uv_async_cb)", "", "Argument[2]", "Argument[*1].Field[*async_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_backend_fd", "(const uv_loop_t *)", "", "Argument[*0].Field[*backend_fd]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_backend_timeout", "(const uv_loop_t *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "uv_buf_init", "(char *,unsigned int)", "", "Argument[*0]", "ReturnValue.Field[**base]", "value", "dfc-generated"] + - ["", "", True, "uv_buf_init", "(char *,unsigned int)", "", "Argument[0]", "ReturnValue.Field[*base]", "value", "dfc-generated"] + - ["", "", True, "uv_buf_init", "(char *,unsigned int)", "", "Argument[1]", "ReturnValue.Field[*len]", "value", "dfc-generated"] + - ["", "", True, "uv_check_init", "(uv_loop_t *,uv_check_t *)", "", "Argument[*1].Field[*handle_queue]", "Argument[*0].Field[*handle_queue].Field[**prev]", "value", "dfc-generated"] + - ["", "", True, "uv_check_init", "(uv_loop_t *,uv_check_t *)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_check_start", "(uv_check_t *,uv_check_cb)", "", "Argument[1]", "Argument[*0].Field[*check_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_close", "(uv_handle_t *,uv_close_cb)", "", "Argument[0]", "Argument[*0].Field[**loop].Field[*closing_handles]", "value", "dfc-generated"] + - ["", "", True, "uv_close", "(uv_handle_t *,uv_close_cb)", "", "Argument[1]", "Argument[*0].Field[*close_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_cpu_info", "(uv_cpu_info_t **,int *)", "", "Argument[*0]", "Argument[**0].Field[**model]", "taint", "dfc-generated"] + - ["", "", True, "uv_cpu_info", "(uv_cpu_info_t **,int *)", "", "Argument[*0]", "Argument[**0].Field[*model]", "taint", "dfc-generated"] + - ["", "", True, "uv_cpu_info", "(uv_cpu_info_t **,int *)", "", "Argument[0]", "Argument[**0].Field[**model]", "taint", "dfc-generated"] + - ["", "", True, "uv_cpu_info", "(uv_cpu_info_t **,int *)", "", "Argument[0]", "Argument[**0].Field[*model]", "taint", "dfc-generated"] + - ["", "", True, "uv_cpu_info", "(uv_cpu_info_t **,int *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv_cwd", "(char *,size_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_dlerror", "(const uv_lib_t *)", "", "Argument[*0].Field[**errmsg]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "uv_dlerror", "(const uv_lib_t *)", "", "Argument[*0].Field[*errmsg]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_dlsym", "(uv_lib_t *,const char *,void **)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv_err_name", "(int)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "uv_err_name_r", "(int,char *,size_t)", "", "Argument[*1]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "uv_err_name_r", "(int,char *,size_t)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_err_name_r", "(int,char *,size_t)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "uv_err_name_r", "(int,char *,size_t)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_exepath", "(char *,size_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_fileno", "(const uv_handle_t *,uv_os_fd_t *)", "", "Argument[*0].Field[*io_watcher].Field[*fd]", "Argument[*1]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_access", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_access", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_access", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_access", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_access", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_access", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_access", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_chmod", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_chmod", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_chmod", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_chmod", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_chmod", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_chmod", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*mode]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_chmod", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_chown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_chown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_chown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_chown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_chown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_chown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*uid]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_chown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*gid]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_chown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_close", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_close", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_close", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*file]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_close", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_closedir", "(uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**ptr]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_closedir", "(uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_closedir", "(uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_closedir", "(uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*ptr]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_closedir", "(uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_copyfile", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_copyfile", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[*3]", "Argument[*1].Field[**new_path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_copyfile", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_copyfile", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_copyfile", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_copyfile", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_copyfile", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[**new_path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_copyfile", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*new_path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_copyfile", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_copyfile", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_event_getpath", "(uv_fs_event_t *,char *,size_t *)", "", "Argument[*0].Field[**path]", "Argument[*1]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_event_getpath", "(uv_fs_event_t *,char *,size_t *)", "", "Argument[*0].Field[*path]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_event_getpath", "(uv_fs_event_t *,char *,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_event_init", "(uv_loop_t *,uv_fs_event_t *)", "", "Argument[*1].Field[*handle_queue]", "Argument[*0].Field[*handle_queue].Field[**prev]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_event_init", "(uv_loop_t *,uv_fs_event_t *)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_event_start", "(uv_fs_event_t *,uv_fs_event_cb,const char *,unsigned int)", "", "Argument[1]", "Argument[*0].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_event_start", "(uv_fs_event_t *,uv_fs_event_cb,const char *,unsigned int)", "", "Argument[2]", "Argument[*0].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_fchmod", "(uv_loop_t *,uv_fs_t *,uv_file,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fchmod", "(uv_loop_t *,uv_fs_t *,uv_file,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fchmod", "(uv_loop_t *,uv_fs_t *,uv_file,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*file]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fchmod", "(uv_loop_t *,uv_fs_t *,uv_file,int,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*mode]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fchmod", "(uv_loop_t *,uv_fs_t *,uv_file,int,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fchown", "(uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fchown", "(uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fchown", "(uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*file]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fchown", "(uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*uid]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fchown", "(uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*gid]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fchown", "(uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fdatasync", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fdatasync", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fdatasync", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*file]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fdatasync", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fstat", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fstat", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fstat", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*file]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fstat", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fsync", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fsync", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fsync", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*file]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_fsync", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_ftruncate", "(uv_loop_t *,uv_fs_t *,uv_file,int64_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_ftruncate", "(uv_loop_t *,uv_fs_t *,uv_file,int64_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_ftruncate", "(uv_loop_t *,uv_fs_t *,uv_file,int64_t,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*file]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_ftruncate", "(uv_loop_t *,uv_fs_t *,uv_file,int64_t,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*off]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_ftruncate", "(uv_loop_t *,uv_fs_t *,uv_file,int64_t,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_futime", "(uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_futime", "(uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_futime", "(uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*file]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_futime", "(uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*atime]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_futime", "(uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*mtime]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_futime", "(uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_get_path", "(const uv_fs_t *)", "", "Argument[*0].Field[**path]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_get_path", "(const uv_fs_t *)", "", "Argument[*0].Field[*path]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_fs_get_ptr", "(const uv_fs_t *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "uv_fs_get_ptr", "(const uv_fs_t *)", "", "Argument[*0]", "ReturnValue[**]", "taint", "df-generated"] + - ["", "", True, "uv_fs_get_ptr", "(const uv_fs_t *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "uv_fs_get_result", "(const uv_fs_t *)", "", "Argument[*0].Field[*result]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_fs_get_statbuf", "(uv_fs_t *)", "", "Argument[*0].Field[*statbuf]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_get_system_error", "(const uv_fs_t *)", "", "Argument[*0].Field[*result]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_get_type", "(const uv_fs_t *)", "", "Argument[*0].Field[*fs_type]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lchown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lchown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lchown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lchown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_lchown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lchown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*uid]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lchown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*gid]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lchown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_link", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_link", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[*3]", "Argument[*1].Field[**new_path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_link", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_link", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_link", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_link", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_link", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[**new_path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_link", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*new_path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_link", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lstat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lstat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lstat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lstat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_lstat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lstat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lutime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lutime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lutime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lutime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_lutime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lutime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*atime]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lutime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*mtime]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_lutime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_mkdir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_mkdir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_mkdir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_mkdir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_mkdir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_mkdir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*mode]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_mkdir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_mkdtemp", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_mkdtemp", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_mkdtemp", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_mkdtemp", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_mkdtemp", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_mkstemp", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_mkstemp", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_mkstemp", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_mkstemp", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_mkstemp", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_open", "(uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_open", "(uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_open", "(uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_open", "(uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_open", "(uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_open", "(uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_open", "(uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*mode]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_open", "(uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_opendir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_opendir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_opendir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_opendir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_opendir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_opendir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_poll_getpath", "(uv_fs_poll_t *,char *,size_t *)", "", "Argument[*0].Field[**poll_ctx].Field[**path]", "Argument[*1]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_poll_getpath", "(uv_fs_poll_t *,char *,size_t *)", "", "Argument[*0].Field[**poll_ctx].Field[*path]", "Argument[*1]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_poll_getpath", "(uv_fs_poll_t *,char *,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_poll_init", "(uv_loop_t *,uv_fs_poll_t *)", "", "Argument[*1].Field[*handle_queue]", "Argument[*0].Field[*handle_queue].Field[**prev]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_poll_init", "(uv_loop_t *,uv_fs_poll_t *)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_poll_start", "(uv_fs_poll_t *,uv_fs_poll_cb,const char *,unsigned int)", "", "Argument[*2]", "Argument[*0].Field[**poll_ctx].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_poll_start", "(uv_fs_poll_t *,uv_fs_poll_cb,const char *,unsigned int)", "", "Argument[0]", "Argument[*0].Field[**poll_ctx].Field[*parent_handle]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_poll_start", "(uv_fs_poll_t *,uv_fs_poll_cb,const char *,unsigned int)", "", "Argument[1]", "Argument[*0].Field[**poll_ctx].Field[*poll_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_poll_start", "(uv_fs_poll_t *,uv_fs_poll_cb,const char *,unsigned int)", "", "Argument[2]", "Argument[*0].Field[**poll_ctx].Field[*path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_poll_start", "(uv_fs_poll_t *,uv_fs_poll_cb,const char *,unsigned int)", "", "Argument[3]", "Argument[*0].Field[**poll_ctx].Field[*interval]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_read", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[*3]", "Argument[*1].Field[**bufs]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_read", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_read", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_read", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*file]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_read", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[**bufs]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_read", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*bufs]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_read", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*nbufs]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_read", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*off]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_read", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[6]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_readdir", "(uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**ptr]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_readdir", "(uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_readdir", "(uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_readdir", "(uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*ptr]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_readdir", "(uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_readlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_readlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_readlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_readlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_readlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_readlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_realpath", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_realpath", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_realpath", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_realpath", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_realpath", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_realpath", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_rename", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_rename", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[*3]", "Argument[*1].Field[**new_path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_rename", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_rename", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_rename", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_rename", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_rename", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[**new_path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_rename", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*new_path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_rename", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_rmdir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_rmdir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_rmdir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_rmdir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_rmdir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_rmdir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_scandir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_scandir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_scandir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_scandir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_scandir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_scandir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_scandir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_scandir_next", "(uv_fs_t *,uv_dirent_t *)", "", "Argument[*0].Field[***ptr].Field[*d_name]", "Argument[*1].Field[**name]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_scandir_next", "(uv_fs_t *,uv_dirent_t *)", "", "Argument[*0].Field[*result]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_fs_sendfile", "(uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_sendfile", "(uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_sendfile", "(uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*file]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_sendfile", "(uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_sendfile", "(uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*off]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_sendfile", "(uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*bufsml].Field[*len]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_sendfile", "(uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb)", "", "Argument[6]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_stat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_stat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_stat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_stat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_stat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_stat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_statfs", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_statfs", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_statfs", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_statfs", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_statfs", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_statfs", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_symlink", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_symlink", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[*3]", "Argument[*1].Field[**new_path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_symlink", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_symlink", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_symlink", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_symlink", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_symlink", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[**new_path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_symlink", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*new_path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_symlink", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_symlink", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_unlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_unlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_unlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_unlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_unlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_unlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_utime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_utime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_utime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_utime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_utime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_utime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*atime]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_utime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*mtime]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_utime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_write", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[*3]", "Argument[*1].Field[**bufs]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_write", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_write", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_write", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*file]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_write", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[**bufs]", "taint", "dfc-generated"] + - ["", "", True, "uv_fs_write", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*nbufs]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_write", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*off]", "value", "dfc-generated"] + - ["", "", True, "uv_fs_write", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[6]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_get_osfhandle", "(int)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_getaddrinfo", "(uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *)", "", "Argument[*3]", "Argument[*1].Field[**hostname]", "value", "dfc-generated"] + - ["", "", True, "uv_getaddrinfo", "(uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *)", "", "Argument[*4]", "Argument[*1].Field[**service]", "value", "dfc-generated"] + - ["", "", True, "uv_getaddrinfo", "(uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *)", "", "Argument[*5]", "Argument[*1].Field[**hints]", "value", "dfc-generated"] + - ["", "", True, "uv_getaddrinfo", "(uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_getaddrinfo", "(uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_getaddrinfo", "(uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *)", "", "Argument[2]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_getaddrinfo", "(uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *)", "", "Argument[3]", "Argument[*1].Field[**hostname]", "taint", "dfc-generated"] + - ["", "", True, "uv_getaddrinfo", "(uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *)", "", "Argument[4]", "Argument[*1].Field[**service]", "taint", "dfc-generated"] + - ["", "", True, "uv_getaddrinfo", "(uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *)", "", "Argument[5]", "Argument[*1].Field[**hints]", "taint", "dfc-generated"] + - ["", "", True, "uv_getnameinfo", "(uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int)", "", "Argument[*3]", "Argument[*1].Field[*storage]", "value", "dfc-generated"] + - ["", "", True, "uv_getnameinfo", "(uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_getnameinfo", "(uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_getnameinfo", "(uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int)", "", "Argument[2]", "Argument[*1].Field[*getnameinfo_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_getnameinfo", "(uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int)", "", "Argument[3]", "Argument[*1].Field[*storage]", "taint", "dfc-generated"] + - ["", "", True, "uv_getnameinfo", "(uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int)", "", "Argument[4]", "Argument[*1].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "uv_handle_get_data", "(const uv_handle_t *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "uv_handle_get_data", "(const uv_handle_t *)", "", "Argument[*0]", "ReturnValue[**]", "taint", "df-generated"] + - ["", "", True, "uv_handle_get_data", "(const uv_handle_t *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "uv_handle_get_loop", "(const uv_handle_t *)", "", "Argument[*0].Field[**loop]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "uv_handle_get_loop", "(const uv_handle_t *)", "", "Argument[*0].Field[*loop]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_handle_get_type", "(const uv_handle_t *)", "", "Argument[*0].Field[*type]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_handle_set_data", "(uv_handle_t *,void *)", "", "Argument[**1]", "Argument[*0].Field[***data]", "value", "dfc-generated"] + - ["", "", True, "uv_handle_set_data", "(uv_handle_t *,void *)", "", "Argument[*1]", "Argument[*0].Field[**data]", "value", "dfc-generated"] + - ["", "", True, "uv_handle_set_data", "(uv_handle_t *,void *)", "", "Argument[1]", "Argument[*0].Field[*data]", "value", "dfc-generated"] + - ["", "", True, "uv_has_ref", "(const uv_handle_t *)", "", "Argument[*0].Field[*flags]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv_idle_init", "(uv_loop_t *,uv_idle_t *)", "", "Argument[*1].Field[*handle_queue]", "Argument[*0].Field[*handle_queue].Field[**prev]", "value", "dfc-generated"] + - ["", "", True, "uv_idle_init", "(uv_loop_t *,uv_idle_t *)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_idle_start", "(uv_idle_t *,uv_idle_cb)", "", "Argument[1]", "Argument[*0].Field[*idle_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_if_indextoiid", "(unsigned int,char *,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv_if_indextoname", "(unsigned int,char *,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv_inet_ntop", "(int,const void *,char *,size_t)", "", "Argument[*1]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv_inet_ntop", "(int,const void *,char *,size_t)", "", "Argument[1]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv_interface_addresses", "(uv_interface_address_t **,int *)", "", "Argument[*0]", "Argument[**0].Field[*name]", "taint", "dfc-generated"] + - ["", "", True, "uv_interface_addresses", "(uv_interface_address_t **,int *)", "", "Argument[*1]", "Argument[**0].Field[*name]", "taint", "dfc-generated"] + - ["", "", True, "uv_interface_addresses", "(uv_interface_address_t **,int *)", "", "Argument[0]", "Argument[**0].Field[*name]", "taint", "dfc-generated"] + - ["", "", True, "uv_interface_addresses", "(uv_interface_address_t **,int *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv_interface_addresses", "(uv_interface_address_t **,int *)", "", "Argument[1]", "Argument[**0].Field[*name]", "taint", "dfc-generated"] + - ["", "", True, "uv_interface_addresses", "(uv_interface_address_t **,int *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_ip4_name", "(const sockaddr_in *,char *,size_t)", "", "Argument[*0].Field[*sin_addr]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_ip6_name", "(const sockaddr_in6 *,char *,size_t)", "", "Argument[*0].Field[*sin6_addr]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_ip_name", "(const sockaddr *,char *,size_t)", "", "Argument[*0].Field[*sin6_addr]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_ip_name", "(const sockaddr *,char *,size_t)", "", "Argument[*0].Field[*sin_addr]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_is_active", "(const uv_handle_t *)", "", "Argument[*0].Field[*flags]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv_is_closing", "(const uv_handle_t *)", "", "Argument[*0].Field[*flags]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv_key_delete", "(uv_key_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv_key_get", "(uv_key_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv_key_set", "(uv_key_t *,void *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv_listen", "(uv_stream_t *,int,uv_connection_cb)", "", "Argument[2]", "Argument[*0].Field[*connection_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_loop_get_data", "(const uv_loop_t *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "uv_loop_get_data", "(const uv_loop_t *)", "", "Argument[*0]", "ReturnValue[**]", "taint", "df-generated"] + - ["", "", True, "uv_loop_get_data", "(const uv_loop_t *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "uv_loop_init", "(uv_loop_t *)", "", "Argument[0]", "Argument[*0].Field[*child_watcher].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_loop_init", "(uv_loop_t *)", "", "Argument[0]", "Argument[*0].Field[*wq_async].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_loop_set_data", "(uv_loop_t *,void *)", "", "Argument[**1]", "Argument[*0].Field[***data]", "value", "dfc-generated"] + - ["", "", True, "uv_loop_set_data", "(uv_loop_t *,void *)", "", "Argument[*1]", "Argument[*0].Field[**data]", "value", "dfc-generated"] + - ["", "", True, "uv_loop_set_data", "(uv_loop_t *,void *)", "", "Argument[1]", "Argument[*0].Field[*data]", "value", "dfc-generated"] + - ["", "", True, "uv_now", "(const uv_loop_t *)", "", "Argument[*0].Field[*time]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_open_osfhandle", "(uv_os_fd_t)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_os_environ", "(uv_env_item_t **,int *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv_os_free_environ", "(uv_env_item_t *,int)", "", "Argument[0]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "uv_os_getenv", "(const char *,char *,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv_os_gethostname", "(char *,size_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_os_homedir", "(char *,size_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_os_tmpdir", "(char *,size_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_pipe_bind2", "(uv_pipe_t *,const char *,size_t,unsigned int)", "", "Argument[*1]", "Argument[*0].Field[**pipe_fname]", "value", "dfc-generated"] + - ["", "", True, "uv_pipe_bind2", "(uv_pipe_t *,const char *,size_t,unsigned int)", "", "Argument[1]", "Argument[*0].Field[**pipe_fname]", "taint", "dfc-generated"] + - ["", "", True, "uv_pipe_bind", "(uv_pipe_t *,const char *)", "", "Argument[*1]", "Argument[*0].Field[**pipe_fname]", "value", "dfc-generated"] + - ["", "", True, "uv_pipe_bind", "(uv_pipe_t *,const char *)", "", "Argument[1]", "Argument[*0].Field[**pipe_fname]", "taint", "dfc-generated"] + - ["", "", True, "uv_pipe_connect2", "(uv_connect_t *,uv_pipe_t *,const char *,size_t,unsigned int,uv_connect_cb)", "", "Argument[0]", "Argument[*0].Field[**handle].Field[*connect_req]", "value", "dfc-generated"] + - ["", "", True, "uv_pipe_connect2", "(uv_connect_t *,uv_pipe_t *,const char *,size_t,unsigned int,uv_connect_cb)", "", "Argument[0]", "Argument[*1].Field[*connect_req]", "value", "dfc-generated"] + - ["", "", True, "uv_pipe_connect2", "(uv_connect_t *,uv_pipe_t *,const char *,size_t,unsigned int,uv_connect_cb)", "", "Argument[1]", "Argument[*0].Field[*handle]", "value", "dfc-generated"] + - ["", "", True, "uv_pipe_connect2", "(uv_connect_t *,uv_pipe_t *,const char *,size_t,unsigned int,uv_connect_cb)", "", "Argument[5]", "Argument[*0].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_pipe_connect", "(uv_connect_t *,uv_pipe_t *,const char *,uv_connect_cb)", "", "Argument[0]", "Argument[*0].Field[**handle].Field[*connect_req]", "value", "dfc-generated"] + - ["", "", True, "uv_pipe_connect", "(uv_connect_t *,uv_pipe_t *,const char *,uv_connect_cb)", "", "Argument[0]", "Argument[*1].Field[*connect_req]", "value", "dfc-generated"] + - ["", "", True, "uv_pipe_connect", "(uv_connect_t *,uv_pipe_t *,const char *,uv_connect_cb)", "", "Argument[1]", "Argument[*0].Field[*handle]", "value", "dfc-generated"] + - ["", "", True, "uv_pipe_connect", "(uv_connect_t *,uv_pipe_t *,const char *,uv_connect_cb)", "", "Argument[1]", "Argument[*1].Field[**connect_req].Field[*handle]", "value", "dfc-generated"] + - ["", "", True, "uv_pipe_connect", "(uv_connect_t *,uv_pipe_t *,const char *,uv_connect_cb)", "", "Argument[3]", "Argument[*0].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_pipe_connect", "(uv_connect_t *,uv_pipe_t *,const char *,uv_connect_cb)", "", "Argument[3]", "Argument[*1].Field[**connect_req].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_pipe_getpeername", "(const uv_pipe_t *,char *,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv_pipe_getsockname", "(const uv_pipe_t *,char *,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv_pipe_init", "(uv_loop_t *,uv_pipe_t *,int)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_pipe_init", "(uv_loop_t *,uv_pipe_t *,int)", "", "Argument[2]", "Argument[*1].Field[*ipc]", "value", "dfc-generated"] + - ["", "", True, "uv_pipe_open", "(uv_pipe_t *,uv_file)", "", "Argument[1]", "Argument[*0].Field[*io_watcher].Field[*fd]", "value", "dfc-generated"] + - ["", "", True, "uv_pipe_pending_count", "(uv_pipe_t *)", "", "Argument[*0].Field[**queued_fds].Field[*offset]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv_poll_init", "(uv_loop_t *,uv_poll_t *,int)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_poll_init", "(uv_loop_t *,uv_poll_t *,int)", "", "Argument[2]", "Argument[*1].Field[*io_watcher].Field[*fd]", "value", "dfc-generated"] + - ["", "", True, "uv_poll_init_socket", "(uv_loop_t *,uv_poll_t *,uv_os_sock_t)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_poll_init_socket", "(uv_loop_t *,uv_poll_t *,uv_os_sock_t)", "", "Argument[2]", "Argument[*1].Field[*io_watcher].Field[*fd]", "value", "dfc-generated"] + - ["", "", True, "uv_poll_start", "(uv_poll_t *,int,uv_poll_cb)", "", "Argument[2]", "Argument[*0].Field[*poll_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_prepare_init", "(uv_loop_t *,uv_prepare_t *)", "", "Argument[*1].Field[*handle_queue]", "Argument[*0].Field[*handle_queue].Field[**prev]", "value", "dfc-generated"] + - ["", "", True, "uv_prepare_init", "(uv_loop_t *,uv_prepare_t *)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_prepare_start", "(uv_prepare_t *,uv_prepare_cb)", "", "Argument[1]", "Argument[*0].Field[*prepare_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_print_active_handles", "(uv_loop_t *,FILE *)", "", "Argument[*0].Field[*handle_queue].Field[**next]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_print_active_handles", "(uv_loop_t *,FILE *)", "", "Argument[*0].Field[*handle_queue].Field[*next]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_print_all_handles", "(uv_loop_t *,FILE *)", "", "Argument[*0].Field[*handle_queue].Field[**next]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_print_all_handles", "(uv_loop_t *,FILE *)", "", "Argument[*0].Field[*handle_queue].Field[*next]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_process_get_pid", "(const uv_process_t *)", "", "Argument[*0].Field[*pid]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_queue_work", "(uv_loop_t *,uv_work_t *,uv_work_cb,uv_after_work_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_queue_work", "(uv_loop_t *,uv_work_t *,uv_work_cb,uv_after_work_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_queue_work", "(uv_loop_t *,uv_work_t *,uv_work_cb,uv_after_work_cb)", "", "Argument[2]", "Argument[*1].Field[*work_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_queue_work", "(uv_loop_t *,uv_work_t *,uv_work_cb,uv_after_work_cb)", "", "Argument[3]", "Argument[*1].Field[*after_work_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_random", "(uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb)", "", "Argument[**2]", "Argument[*1].Field[***buf]", "value", "dfc-generated"] + - ["", "", True, "uv_random", "(uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb)", "", "Argument[*2]", "Argument[*1].Field[**buf]", "value", "dfc-generated"] + - ["", "", True, "uv_random", "(uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_random", "(uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_random", "(uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb)", "", "Argument[2]", "Argument[*1].Field[*buf]", "value", "dfc-generated"] + - ["", "", True, "uv_random", "(uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv_random", "(uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb)", "", "Argument[3]", "Argument[*1].Field[*buflen]", "value", "dfc-generated"] + - ["", "", True, "uv_random", "(uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb)", "", "Argument[5]", "Argument[*1].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_read_start", "(uv_stream_t *,uv_alloc_cb,uv_read_cb)", "", "Argument[1]", "Argument[*0].Field[*alloc_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_read_start", "(uv_stream_t *,uv_alloc_cb,uv_read_cb)", "", "Argument[2]", "Argument[*0].Field[*read_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_recv_buffer_size", "(uv_handle_t *,int *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_req_get_data", "(const uv_req_t *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "uv_req_get_data", "(const uv_req_t *)", "", "Argument[*0]", "ReturnValue[**]", "taint", "df-generated"] + - ["", "", True, "uv_req_get_data", "(const uv_req_t *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "uv_req_get_type", "(const uv_req_t *)", "", "Argument[*0].Field[*type]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_req_set_data", "(uv_req_t *,void *)", "", "Argument[**1]", "Argument[*0].Field[***data]", "value", "dfc-generated"] + - ["", "", True, "uv_req_set_data", "(uv_req_t *,void *)", "", "Argument[*1]", "Argument[*0].Field[**data]", "value", "dfc-generated"] + - ["", "", True, "uv_req_set_data", "(uv_req_t *,void *)", "", "Argument[1]", "Argument[*0].Field[*data]", "value", "dfc-generated"] + - ["", "", True, "uv_sem_destroy", "(uv_sem_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv_sem_post", "(uv_sem_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv_sem_trywait", "(uv_sem_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv_sem_wait", "(uv_sem_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv_send_buffer_size", "(uv_handle_t *,int *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_setup_args", "(int,char **)", "", "Argument[**1]", "ReturnValue[**]", "value", "dfc-generated"] + - ["", "", True, "uv_setup_args", "(int,char **)", "", "Argument[*1]", "ReturnValue[**]", "taint", "dfc-generated"] + - ["", "", True, "uv_setup_args", "(int,char **)", "", "Argument[*1]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "uv_setup_args", "(int,char **)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "uv_setup_args", "(int,char **)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_setup_args", "(int,char **)", "", "Argument[1]", "ReturnValue[**]", "taint", "dfc-generated"] + - ["", "", True, "uv_shutdown", "(uv_shutdown_t *,uv_stream_t *,uv_shutdown_cb)", "", "Argument[*0]", "Argument[*1].Field[**shutdown_req]", "value", "dfc-generated"] + - ["", "", True, "uv_shutdown", "(uv_shutdown_t *,uv_stream_t *,uv_shutdown_cb)", "", "Argument[0]", "Argument[*1].Field[*shutdown_req]", "value", "dfc-generated"] + - ["", "", True, "uv_shutdown", "(uv_shutdown_t *,uv_stream_t *,uv_shutdown_cb)", "", "Argument[1]", "Argument[*0].Field[*handle]", "value", "dfc-generated"] + - ["", "", True, "uv_shutdown", "(uv_shutdown_t *,uv_stream_t *,uv_shutdown_cb)", "", "Argument[1]", "Argument[*1].Field[**shutdown_req].Field[*handle]", "value", "dfc-generated"] + - ["", "", True, "uv_shutdown", "(uv_shutdown_t *,uv_stream_t *,uv_shutdown_cb)", "", "Argument[2]", "Argument[*0].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_shutdown", "(uv_shutdown_t *,uv_stream_t *,uv_shutdown_cb)", "", "Argument[2]", "Argument[*1].Field[**shutdown_req].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_signal_init", "(uv_loop_t *,uv_signal_t *)", "", "Argument[*1].Field[*handle_queue]", "Argument[*0].Field[*handle_queue].Field[**prev]", "value", "dfc-generated"] + - ["", "", True, "uv_signal_init", "(uv_loop_t *,uv_signal_t *)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_signal_start", "(uv_signal_t *,uv_signal_cb,int)", "", "Argument[1]", "Argument[*0].Field[*signal_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_signal_start", "(uv_signal_t *,uv_signal_cb,int)", "", "Argument[2]", "Argument[*0].Field[*signum]", "value", "dfc-generated"] + - ["", "", True, "uv_signal_start_oneshot", "(uv_signal_t *,uv_signal_cb,int)", "", "Argument[1]", "Argument[*0].Field[*signal_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_signal_start_oneshot", "(uv_signal_t *,uv_signal_cb,int)", "", "Argument[2]", "Argument[*0].Field[*signum]", "value", "dfc-generated"] + - ["", "", True, "uv_spawn", "(uv_loop_t *,uv_process_t *,const uv_process_options_t *)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_stream_get_write_queue_size", "(const uv_stream_t *)", "", "Argument[*0].Field[*write_queue_size]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_strerror", "(int)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "uv_strerror_r", "(int,char *,size_t)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_strerror_r", "(int,char *,size_t)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "uv_strerror_r", "(int,char *,size_t)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_tcp_close_reset", "(uv_tcp_t *,uv_close_cb)", "", "Argument[0]", "Argument[*0].Field[**loop].Field[*closing_handles]", "value", "dfc-generated"] + - ["", "", True, "uv_tcp_close_reset", "(uv_tcp_t *,uv_close_cb)", "", "Argument[1]", "Argument[*0].Field[*close_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,uv_connect_cb)", "", "Argument[0]", "Argument[*1].Field[*connect_req]", "value", "dfc-generated"] + - ["", "", True, "uv_tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,uv_connect_cb)", "", "Argument[1]", "Argument[*0].Field[*handle]", "value", "dfc-generated"] + - ["", "", True, "uv_tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,uv_connect_cb)", "", "Argument[1]", "Argument[*1].Field[**connect_req].Field[*handle]", "value", "dfc-generated"] + - ["", "", True, "uv_tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,uv_connect_cb)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv_tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,uv_connect_cb)", "", "Argument[3]", "Argument[*0].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,uv_connect_cb)", "", "Argument[3]", "Argument[*1].Field[**connect_req].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_tcp_getpeername", "(const uv_tcp_t *,sockaddr *,int *)", "", "Argument[*0].Field[*delayed_error]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_tcp_getpeername", "(const uv_tcp_t *,sockaddr *,int *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv_tcp_getsockname", "(const uv_tcp_t *,sockaddr *,int *)", "", "Argument[*0].Field[*delayed_error]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_tcp_getsockname", "(const uv_tcp_t *,sockaddr *,int *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv_tcp_init", "(uv_loop_t *,uv_tcp_t *)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_tcp_init_ex", "(uv_loop_t *,uv_tcp_t *,unsigned int)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_tcp_open", "(uv_tcp_t *,uv_os_sock_t)", "", "Argument[1]", "Argument[*0].Field[*io_watcher].Field[*fd]", "value", "dfc-generated"] + - ["", "", True, "uv_thread_detach", "(uv_thread_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv_thread_getaffinity", "(uv_thread_t *,char *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv_thread_getname", "(uv_thread_t *,char *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv_thread_join", "(uv_thread_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv_thread_setaffinity", "(uv_thread_t *,char *,char *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv_timer_get_due_in", "(const uv_timer_t *)", "", "Argument[*0].Field[**loop].Field[*time]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv_timer_get_due_in", "(const uv_timer_t *)", "", "Argument[*0].Field[*timeout]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv_timer_get_repeat", "(const uv_timer_t *)", "", "Argument[*0].Field[*repeat]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_timer_init", "(uv_loop_t *,uv_timer_t *)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_timer_set_repeat", "(uv_timer_t *,uint64_t)", "", "Argument[1]", "Argument[*0].Field[*repeat]", "value", "dfc-generated"] + - ["", "", True, "uv_timer_start", "(uv_timer_t *,uv_timer_cb,uint64_t,uint64_t)", "", "Argument[1]", "Argument[*0].Field[*timer_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_timer_start", "(uv_timer_t *,uv_timer_cb,uint64_t,uint64_t)", "", "Argument[2]", "Argument[*0].Field[*timeout]", "taint", "dfc-generated"] + - ["", "", True, "uv_timer_start", "(uv_timer_t *,uv_timer_cb,uint64_t,uint64_t)", "", "Argument[3]", "Argument[*0].Field[*repeat]", "value", "dfc-generated"] + - ["", "", True, "uv_translate_sys_error", "(int)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_tty_init", "(uv_loop_t *,uv_tty_t *,int,uv_file,int)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_tty_init", "(uv_loop_t *,uv_tty_t *,int,uv_file,int)", "", "Argument[2]", "Argument[*1].Field[*io_watcher].Field[*fd]", "value", "dfc-generated"] + - ["", "", True, "uv_tty_set_mode", "(uv_tty_t *,uv_tty_mode_t)", "", "Argument[1]", "Argument[*0].Field[*mode]", "value", "dfc-generated"] + - ["", "", True, "uv_udp_get_send_queue_count", "(const uv_udp_t *)", "", "Argument[*0].Field[*send_queue_count]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_udp_get_send_queue_size", "(const uv_udp_t *)", "", "Argument[*0].Field[*send_queue_size]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "uv_udp_getpeername", "(const uv_udp_t *,sockaddr *,int *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv_udp_getsockname", "(const uv_udp_t *,sockaddr *,int *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv_udp_init", "(uv_loop_t *,uv_udp_t *)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_udp_init_ex", "(uv_loop_t *,uv_udp_t *,unsigned int)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"] + - ["", "", True, "uv_udp_open", "(uv_udp_t *,uv_os_sock_t)", "", "Argument[1]", "Argument[*0].Field[*io_watcher].Field[*fd]", "value", "dfc-generated"] + - ["", "", True, "uv_udp_recv_start", "(uv_udp_t *,uv_alloc_cb,uv_udp_recv_cb)", "", "Argument[1]", "Argument[*0].Field[*alloc_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_udp_recv_start", "(uv_udp_t *,uv_alloc_cb,uv_udp_recv_cb)", "", "Argument[2]", "Argument[*0].Field[*recv_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb)", "", "Argument[*2].Field[*len]", "Argument[*1].Field[*send_queue_size]", "taint", "dfc-generated"] + - ["", "", True, "uv_udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb)", "", "Argument[*2]", "Argument[*0].Field[**bufs]", "value", "dfc-generated"] + - ["", "", True, "uv_udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb)", "", "Argument[*4]", "Argument[*0].Field[*u].Union[*(unnamed class/struct/union)]", "value", "dfc-generated"] + - ["", "", True, "uv_udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb)", "", "Argument[1]", "Argument[*0].Field[*handle]", "value", "dfc-generated"] + - ["", "", True, "uv_udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb)", "", "Argument[2]", "Argument[*0].Field[**bufs]", "taint", "dfc-generated"] + - ["", "", True, "uv_udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb)", "", "Argument[3]", "Argument[*0].Field[*nbufs]", "value", "dfc-generated"] + - ["", "", True, "uv_udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb)", "", "Argument[4]", "Argument[*0].Field[*u].Union[*(unnamed class/struct/union)]", "taint", "dfc-generated"] + - ["", "", True, "uv_udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb)", "", "Argument[5]", "Argument[*0].Field[*send_cb]", "value", "dfc-generated"] + - ["", "", True, "uv_udp_try_send2", "(uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[],unsigned int)", "", "Argument[*2]", "Argument[**2]", "taint", "dfc-generated"] + - ["", "", True, "uv_udp_try_send2", "(uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[],unsigned int)", "", "Argument[*4]", "Argument[**4]", "taint", "dfc-generated"] + - ["", "", True, "uv_udp_try_send", "(uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *)", "", "Argument[*1].Field[*len]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "uv_utf16_to_wtf8", "(const uint16_t *,ssize_t,char **,size_t *)", "", "Argument[*2]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "uv_utf16_to_wtf8", "(const uint16_t *,ssize_t,char **,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "uv_utf16_to_wtf8", "(const uint16_t *,ssize_t,char **,size_t *)", "", "Argument[2]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "uv_utf16_to_wtf8", "(const uint16_t *,ssize_t,char **,size_t *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "uv_write2", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb)", "", "Argument[*2].Field[*len]", "Argument[*1].Field[*write_queue_size]", "taint", "dfc-generated"] + - ["", "", True, "uv_write2", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb)", "", "Argument[*2]", "Argument[*0].Field[**bufs]", "value", "dfc-generated"] + - ["", "", True, "uv_write2", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb)", "", "Argument[*4]", "Argument[*0].Field[**send_handle]", "value", "dfc-generated"] + - ["", "", True, "uv_write2", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb)", "", "Argument[1]", "Argument[*0].Field[*handle]", "value", "dfc-generated"] + - ["", "", True, "uv_write2", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb)", "", "Argument[2]", "Argument[*0].Field[**bufs]", "taint", "dfc-generated"] + - ["", "", True, "uv_write2", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb)", "", "Argument[3]", "Argument[*0].Field[*nbufs]", "value", "dfc-generated"] + - ["", "", True, "uv_write2", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb)", "", "Argument[4]", "Argument[*0].Field[*send_handle]", "value", "dfc-generated"] + - ["", "", True, "uv_write2", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb)", "", "Argument[5]", "Argument[*0].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_write", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb)", "", "Argument[*2].Field[*len]", "Argument[*1].Field[*write_queue_size]", "taint", "dfc-generated"] + - ["", "", True, "uv_write", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb)", "", "Argument[*2]", "Argument[*0].Field[**bufs]", "value", "dfc-generated"] + - ["", "", True, "uv_write", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb)", "", "Argument[1]", "Argument[*0].Field[*handle]", "value", "dfc-generated"] + - ["", "", True, "uv_write", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb)", "", "Argument[2]", "Argument[*0].Field[**bufs]", "taint", "dfc-generated"] + - ["", "", True, "uv_write", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb)", "", "Argument[3]", "Argument[*0].Field[*nbufs]", "value", "dfc-generated"] + - ["", "", True, "uv_write", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb)", "", "Argument[4]", "Argument[*0].Field[*cb]", "value", "dfc-generated"] + - ["", "", True, "uv_wtf8_length_as_utf16", "(const char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv_wtf8_to_utf16", "(const char *,uint16_t *,size_t)", "", "Argument[*0]", "Argument[*1]", "value", "dfc-generated"] + - ["", "", True, "uv_wtf8_to_utf16", "(const char *,uint16_t *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "uv_wtf8_to_utf16", "(const char *,uint16_t *,size_t)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uv_wtf8_to_utf16", "(const char *,uint16_t *,size_t)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] diff --git a/cpp/ql/lib/ext/generated/nghttp2/nghttp2.model.yml b/cpp/ql/lib/ext/generated/nghttp2/nghttp2.model.yml new file mode 100644 index 00000000000..f48d7e3b232 --- /dev/null +++ b/cpp/ql/lib/ext/generated/nghttp2/nghttp2.model.yml @@ -0,0 +1,571 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/cpp-all + extensible: summaryModel + data: + - ["", "", True, "nghttp2_adjust_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[*2]", "Argument[*1]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_adjust_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[*2]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_adjust_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_adjust_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[2]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_adjust_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_adjust_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[2]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_buf_init2", "(nghttp2_buf *,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[**end]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_buf_init2", "(nghttp2_buf *,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[*end]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_buf_reserve", "(nghttp2_buf *,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[**end]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_buf_reserve", "(nghttp2_buf *,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[*end]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_buf_wrap_init", "(nghttp2_buf *,uint8_t *,size_t)", "", "Argument[*1]", "Argument[*0].Field[**end]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_buf_wrap_init", "(nghttp2_buf *,uint8_t *,size_t)", "", "Argument[1]", "Argument[*0].Field[*end]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_buf_wrap_init", "(nghttp2_buf *,uint8_t *,size_t)", "", "Argument[2]", "Argument[*0].Field[**end]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_buf_wrap_init", "(nghttp2_buf *,uint8_t *,size_t)", "", "Argument[2]", "Argument[*0].Field[*end]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init2", "(nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[*0].Field[**head]", "Argument[*0].Field[**cur]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init2", "(nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[*0].Field[*head]", "Argument[*0].Field[*cur]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init2", "(nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[*4]", "Argument[*0].Field[**mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init2", "(nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[*chunk_length]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init2", "(nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*chunk_keep]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init2", "(nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*max_chunk]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init2", "(nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[3]", "Argument[*0].Field[*offset]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init2", "(nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[4]", "Argument[*0].Field[*mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init3", "(nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[*0].Field[**head]", "Argument[*0].Field[**cur]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init3", "(nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[*0].Field[*head]", "Argument[*0].Field[*cur]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init3", "(nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[*5]", "Argument[*0].Field[**mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init3", "(nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[*chunk_length]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init3", "(nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*max_chunk]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init3", "(nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[3]", "Argument[*0].Field[*chunk_keep]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init3", "(nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[4]", "Argument[*0].Field[*offset]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init3", "(nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[5]", "Argument[*0].Field[*mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init", "(nghttp2_bufs *,size_t,size_t,nghttp2_mem *)", "", "Argument[*0].Field[**head]", "Argument[*0].Field[**cur]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init", "(nghttp2_bufs *,size_t,size_t,nghttp2_mem *)", "", "Argument[*0].Field[*head]", "Argument[*0].Field[*cur]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init", "(nghttp2_bufs *,size_t,size_t,nghttp2_mem *)", "", "Argument[*3]", "Argument[*0].Field[**mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init", "(nghttp2_bufs *,size_t,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[*chunk_length]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init", "(nghttp2_bufs *,size_t,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*chunk_keep]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init", "(nghttp2_bufs *,size_t,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*max_chunk]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_init", "(nghttp2_bufs *,size_t,size_t,nghttp2_mem *)", "", "Argument[3]", "Argument[*0].Field[*mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_realloc", "(nghttp2_bufs *,size_t)", "", "Argument[1]", "Argument[*0].Field[*chunk_length]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_wrap_init2", "(nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *)", "", "Argument[*0].Field[**head]", "Argument[*0].Field[**cur]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_wrap_init2", "(nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *)", "", "Argument[*0].Field[*head]", "Argument[*0].Field[*cur]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_wrap_init2", "(nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *)", "", "Argument[*3]", "Argument[*0].Field[**mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_wrap_init2", "(nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*chunk_keep]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_wrap_init2", "(nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*chunk_used]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_wrap_init2", "(nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*max_chunk]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_wrap_init2", "(nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *)", "", "Argument[3]", "Argument[*0].Field[*mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_wrap_init", "(nghttp2_bufs *,uint8_t *,size_t,nghttp2_mem *)", "", "Argument[*0].Field[**head]", "Argument[*0].Field[**cur]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_wrap_init", "(nghttp2_bufs *,uint8_t *,size_t,nghttp2_mem *)", "", "Argument[*0].Field[*head]", "Argument[*0].Field[*cur]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_wrap_init", "(nghttp2_bufs *,uint8_t *,size_t,nghttp2_mem *)", "", "Argument[*3]", "Argument[*0].Field[**mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_wrap_init", "(nghttp2_bufs *,uint8_t *,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*chunk_length]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_bufs_wrap_init", "(nghttp2_bufs *,uint8_t *,size_t,nghttp2_mem *)", "", "Argument[3]", "Argument[*0].Field[*mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[**1]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[**1]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[*1]", "Argument[**1]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[*1]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[*1]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[1]", "Argument[**1]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[1]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[2]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_data_provider_wrap_v1", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider *)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_data_provider_wrap_v1", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider *)", "", "Argument[*1]", "Argument[*0].Field[*data_prd].Union[*(unnamed class/struct/union)]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_data_provider_wrap_v1", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider *)", "", "Argument[*1]", "ReturnValue[*].Field[*data_prd].Union[*(unnamed class/struct/union)]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_data_provider_wrap_v1", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider *)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_data_provider_wrap_v1", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider *)", "", "Argument[1]", "Argument[*0].Field[*data_prd].Union[*(unnamed class/struct/union)]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_data_provider_wrap_v1", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_data_provider_wrap_v1", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider *)", "", "Argument[1]", "ReturnValue[*].Field[*data_prd].Union[*(unnamed class/struct/union)]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_data_provider_wrap_v2", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider2 *)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_data_provider_wrap_v2", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider2 *)", "", "Argument[*1]", "Argument[*0].Field[*data_prd].Union[*(unnamed class/struct/union)]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_data_provider_wrap_v2", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider2 *)", "", "Argument[*1]", "ReturnValue[*].Field[*data_prd].Union[*(unnamed class/struct/union)]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_data_provider_wrap_v2", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider2 *)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_data_provider_wrap_v2", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider2 *)", "", "Argument[1]", "Argument[*0].Field[*data_prd].Union[*(unnamed class/struct/union)]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_data_provider_wrap_v2", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider2 *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_data_provider_wrap_v2", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider2 *)", "", "Argument[1]", "ReturnValue[*].Field[*data_prd].Union[*(unnamed class/struct/union)]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_downcase", "(uint8_t *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_extpri_from_uint8", "(nghttp2_extpri *,uint8_t)", "", "Argument[1]", "Argument[*0].Field[*inc]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_extpri_from_uint8", "(nghttp2_extpri *,uint8_t)", "", "Argument[1]", "Argument[*0].Field[*urgency]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_extpri_parse_priority", "(nghttp2_extpri *,const uint8_t *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_extpri_to_uint8", "(const nghttp2_extpri *)", "", "Argument[*0].Field[*inc]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_extpri_to_uint8", "(const nghttp2_extpri *)", "", "Argument[*0].Field[*urgency]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_add_pad", "(nghttp2_bufs *,nghttp2_frame_hd *,size_t,int)", "", "Argument[2]", "Argument[*1].Field[*length]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_altsvc_init", "(nghttp2_extension *,int32_t,uint8_t *,size_t,uint8_t *,size_t)", "", "Argument[1]", "Argument[*0].Field[*hd].Field[*stream_id]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_altsvc_init", "(nghttp2_extension *,int32_t,uint8_t *,size_t,uint8_t *,size_t)", "", "Argument[3]", "Argument[*0].Field[*hd].Field[*length]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_altsvc_init", "(nghttp2_extension *,int32_t,uint8_t *,size_t,uint8_t *,size_t)", "", "Argument[5]", "Argument[*0].Field[*hd].Field[*length]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_data_init", "(nghttp2_data *,uint8_t,int32_t)", "", "Argument[1]", "Argument[*0].Field[*hd].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_data_init", "(nghttp2_data *,uint8_t,int32_t)", "", "Argument[2]", "Argument[*0].Field[*hd].Field[*stream_id]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_extension_init", "(nghttp2_extension *,uint8_t,uint8_t,int32_t,void *)", "", "Argument[**4]", "Argument[*0].Field[***payload]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_extension_init", "(nghttp2_extension *,uint8_t,uint8_t,int32_t,void *)", "", "Argument[*4]", "Argument[*0].Field[**payload]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_extension_init", "(nghttp2_extension *,uint8_t,uint8_t,int32_t,void *)", "", "Argument[1]", "Argument[*0].Field[*hd].Field[*type]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_extension_init", "(nghttp2_extension *,uint8_t,uint8_t,int32_t,void *)", "", "Argument[2]", "Argument[*0].Field[*hd].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_extension_init", "(nghttp2_extension *,uint8_t,uint8_t,int32_t,void *)", "", "Argument[3]", "Argument[*0].Field[*hd].Field[*stream_id]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_extension_init", "(nghttp2_extension *,uint8_t,uint8_t,int32_t,void *)", "", "Argument[4]", "Argument[*0].Field[*payload]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_goaway_init", "(nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t)", "", "Argument[*3]", "Argument[*0].Field[**opaque_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_goaway_init", "(nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t)", "", "Argument[1]", "Argument[*0].Field[*last_stream_id]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_goaway_init", "(nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t)", "", "Argument[2]", "Argument[*0].Field[*error_code]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_goaway_init", "(nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t)", "", "Argument[3]", "Argument[*0].Field[*opaque_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_goaway_init", "(nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t)", "", "Argument[4]", "Argument[*0].Field[*hd].Field[*length]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_goaway_init", "(nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t)", "", "Argument[4]", "Argument[*0].Field[*opaque_data_len]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_hd_init", "(nghttp2_frame_hd *,size_t,uint8_t,uint8_t,int32_t)", "", "Argument[1]", "Argument[*0].Field[*length]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_hd_init", "(nghttp2_frame_hd *,size_t,uint8_t,uint8_t,int32_t)", "", "Argument[2]", "Argument[*0].Field[*type]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_hd_init", "(nghttp2_frame_hd *,size_t,uint8_t,uint8_t,int32_t)", "", "Argument[3]", "Argument[*0].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_hd_init", "(nghttp2_frame_hd *,size_t,uint8_t,uint8_t,int32_t)", "", "Argument[4]", "Argument[*0].Field[*stream_id]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_headers_init", "(nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t)", "", "Argument[*4]", "Argument[*0].Field[*pri_spec]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_headers_init", "(nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t)", "", "Argument[*5]", "Argument[*0].Field[**nva]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_headers_init", "(nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t)", "", "Argument[1]", "Argument[*0].Field[*hd].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_headers_init", "(nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t)", "", "Argument[2]", "Argument[*0].Field[*hd].Field[*stream_id]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_headers_init", "(nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t)", "", "Argument[3]", "Argument[*0].Field[*cat]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_headers_init", "(nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t)", "", "Argument[4]", "Argument[*0].Field[*pri_spec]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_headers_init", "(nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_headers_init", "(nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t)", "", "Argument[5]", "Argument[*0].Field[*nva]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_headers_init", "(nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t)", "", "Argument[6]", "Argument[*0].Field[*nvlen]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_iv_copy", "(const nghttp2_settings_entry *,size_t,nghttp2_mem *)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_iv_copy", "(const nghttp2_settings_entry *,size_t,nghttp2_mem *)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_origin_init", "(nghttp2_extension *,nghttp2_origin_entry *,size_t)", "", "Argument[*1].Field[*origin_len]", "Argument[*0].Field[*hd].Field[*length]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_pack_frame_hd", "(uint8_t *,const nghttp2_frame_hd *)", "", "Argument[*1].Field[*flags]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_pack_frame_hd", "(uint8_t *,const nghttp2_frame_hd *)", "", "Argument[*1].Field[*type]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_pack_headers", "(nghttp2_bufs *,nghttp2_headers *,nghttp2_hd_deflater *)", "", "Argument[*1]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "nghttp2_frame_pack_priority_spec", "(uint8_t *,const nghttp2_priority_spec *)", "", "Argument[*1].Field[*weight]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_pack_priority_spec", "(uint8_t *,const nghttp2_priority_spec *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_pack_push_promise", "(nghttp2_bufs *,nghttp2_push_promise *,nghttp2_hd_deflater *)", "", "Argument[*1]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "nghttp2_frame_pack_settings_payload", "(uint8_t *,const nghttp2_settings_entry *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_pack_settings_payload", "(uint8_t *,const nghttp2_settings_entry *,size_t)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_ping_init", "(nghttp2_ping *,uint8_t,const uint8_t *)", "", "Argument[*2]", "Argument[*0].Field[*opaque_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_ping_init", "(nghttp2_ping *,uint8_t,const uint8_t *)", "", "Argument[1]", "Argument[*0].Field[*hd].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_ping_init", "(nghttp2_ping *,uint8_t,const uint8_t *)", "", "Argument[2]", "Argument[*0].Field[*opaque_data]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_priority_init", "(nghttp2_priority *,int32_t,const nghttp2_priority_spec *)", "", "Argument[*2]", "Argument[*0].Field[*pri_spec]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_priority_init", "(nghttp2_priority *,int32_t,const nghttp2_priority_spec *)", "", "Argument[1]", "Argument[*0].Field[*hd].Field[*stream_id]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_priority_init", "(nghttp2_priority *,int32_t,const nghttp2_priority_spec *)", "", "Argument[2]", "Argument[*0].Field[*pri_spec]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_priority_init", "(nghttp2_priority *,int32_t,const nghttp2_priority_spec *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_priority_update_init", "(nghttp2_extension *,int32_t,uint8_t *,size_t)", "", "Argument[3]", "Argument[*0].Field[*hd].Field[*length]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_push_promise_init", "(nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t)", "", "Argument[*4]", "Argument[*0].Field[**nva]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_push_promise_init", "(nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t)", "", "Argument[1]", "Argument[*0].Field[*hd].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_push_promise_init", "(nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t)", "", "Argument[2]", "Argument[*0].Field[*hd].Field[*stream_id]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_push_promise_init", "(nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t)", "", "Argument[3]", "Argument[*0].Field[*promised_stream_id]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_push_promise_init", "(nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t)", "", "Argument[4]", "Argument[*0].Field[*nva]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_push_promise_init", "(nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t)", "", "Argument[5]", "Argument[*0].Field[*nvlen]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_rst_stream_init", "(nghttp2_rst_stream *,int32_t,uint32_t)", "", "Argument[1]", "Argument[*0].Field[*hd].Field[*stream_id]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_rst_stream_init", "(nghttp2_rst_stream *,int32_t,uint32_t)", "", "Argument[2]", "Argument[*0].Field[*error_code]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_settings_init", "(nghttp2_settings *,uint8_t,nghttp2_settings_entry *,size_t)", "", "Argument[*2]", "Argument[*0].Field[**iv]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_settings_init", "(nghttp2_settings *,uint8_t,nghttp2_settings_entry *,size_t)", "", "Argument[1]", "Argument[*0].Field[*hd].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_settings_init", "(nghttp2_settings *,uint8_t,nghttp2_settings_entry *,size_t)", "", "Argument[2]", "Argument[*0].Field[*iv]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_settings_init", "(nghttp2_settings *,uint8_t,nghttp2_settings_entry *,size_t)", "", "Argument[3]", "Argument[*0].Field[*hd].Field[*length]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_settings_init", "(nghttp2_settings *,uint8_t,nghttp2_settings_entry *,size_t)", "", "Argument[3]", "Argument[*0].Field[*niv]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_trail_padlen", "(nghttp2_frame *,size_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_frame_hd", "(nghttp2_frame_hd *,const uint8_t *)", "", "Argument[*1]", "Argument[*0].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_frame_hd", "(nghttp2_frame_hd *,const uint8_t *)", "", "Argument[*1]", "Argument[*0].Field[*type]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_frame_hd", "(nghttp2_frame_hd *,const uint8_t *)", "", "Argument[1]", "Argument[*0].Field[*flags]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_frame_hd", "(nghttp2_frame_hd *,const uint8_t *)", "", "Argument[1]", "Argument[*0].Field[*type]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_goaway_payload2", "(nghttp2_goaway *,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[*1]", "Argument[*0].Field[**opaque_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_goaway_payload2", "(nghttp2_goaway *,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[**opaque_data]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_goaway_payload2", "(nghttp2_goaway *,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*opaque_data_len]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_goaway_payload", "(nghttp2_goaway *,const uint8_t *,uint8_t *,size_t)", "", "Argument[*2]", "Argument[*0].Field[**opaque_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_goaway_payload", "(nghttp2_goaway *,const uint8_t *,uint8_t *,size_t)", "", "Argument[2]", "Argument[*0].Field[*opaque_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_goaway_payload", "(nghttp2_goaway *,const uint8_t *,uint8_t *,size_t)", "", "Argument[3]", "Argument[*0].Field[*opaque_data_len]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_headers_payload", "(nghttp2_headers *,const uint8_t *)", "", "Argument[*1]", "Argument[*0].Field[*pri_spec].Field[*weight]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_headers_payload", "(nghttp2_headers *,const uint8_t *)", "", "Argument[1]", "Argument[*0].Field[*pri_spec].Field[*weight]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_ping_payload", "(nghttp2_ping *,const uint8_t *)", "", "Argument[*1]", "Argument[*0].Field[*opaque_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_ping_payload", "(nghttp2_ping *,const uint8_t *)", "", "Argument[1]", "Argument[*0].Field[*opaque_data]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_priority_payload", "(nghttp2_priority *,const uint8_t *)", "", "Argument[*1]", "Argument[*0].Field[*pri_spec].Field[*weight]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_priority_payload", "(nghttp2_priority *,const uint8_t *)", "", "Argument[1]", "Argument[*0].Field[*pri_spec].Field[*weight]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_priority_spec", "(nghttp2_priority_spec *,const uint8_t *)", "", "Argument[*1]", "Argument[*0].Field[*weight]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_priority_spec", "(nghttp2_priority_spec *,const uint8_t *)", "", "Argument[1]", "Argument[*0].Field[*weight]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_settings_payload2", "(nghttp2_settings_entry **,size_t *,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_settings_payload2", "(nghttp2_settings_entry **,size_t *,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_settings_payload2", "(nghttp2_settings_entry **,size_t *,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_settings_payload2", "(nghttp2_settings_entry **,size_t *,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_settings_payload2", "(nghttp2_settings_entry **,size_t *,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[3]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_settings_payload", "(nghttp2_settings *,nghttp2_settings_entry *,size_t)", "", "Argument[*1]", "Argument[*0].Field[**iv]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_settings_payload", "(nghttp2_settings *,nghttp2_settings_entry *,size_t)", "", "Argument[1]", "Argument[*0].Field[*iv]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_unpack_settings_payload", "(nghttp2_settings *,nghttp2_settings_entry *,size_t)", "", "Argument[2]", "Argument[*0].Field[*niv]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_window_update_init", "(nghttp2_window_update *,uint8_t,int32_t,int32_t)", "", "Argument[1]", "Argument[*0].Field[*hd].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_window_update_init", "(nghttp2_window_update *,uint8_t,int32_t,int32_t)", "", "Argument[2]", "Argument[*0].Field[*hd].Field[*stream_id]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_frame_window_update_init", "(nghttp2_window_update *,uint8_t,int32_t,int32_t)", "", "Argument[3]", "Argument[*0].Field[*window_size_increment]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_decode_length", "(uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t)", "", "Argument[*5]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_decode_length", "(uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t)", "", "Argument[3]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_decode_length", "(uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t)", "", "Argument[4]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_decode_length", "(uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t)", "", "Argument[4]", "Argument[*1]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_decode_length", "(uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t)", "", "Argument[5]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_decode_length", "(uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t)", "", "Argument[5]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_decode_length", "(uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t)", "", "Argument[7]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_bound", "(nghttp2_hd_deflater *,const nghttp2_nv *,size_t)", "", "Argument[*1].Field[*namelen]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_bound", "(nghttp2_hd_deflater *,const nghttp2_nv *,size_t)", "", "Argument[*1].Field[*valuelen]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_bound", "(nghttp2_hd_deflater *,const nghttp2_nv *,size_t)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_change_table_size", "(nghttp2_hd_deflater *,size_t)", "", "Argument[1]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize_max]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_change_table_size", "(nghttp2_hd_deflater *,size_t)", "", "Argument[1]", "Argument[*0].Field[*min_hd_table_bufsize_max]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_get_dynamic_table_size", "(nghttp2_hd_deflater *)", "", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_get_max_dynamic_table_size", "(nghttp2_hd_deflater *)", "", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize_max]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_get_table_entry", "(nghttp2_hd_deflater *,size_t)", "", "Argument[1]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "nghttp2_hd_deflate_hd2", "(nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t)", "", "Argument[*3].Field[*namelen]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_hd2", "(nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t)", "", "Argument[*3].Field[*valuelen]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_hd2", "(nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_hd", "(nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t)", "", "Argument[*3].Field[*namelen]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_hd", "(nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t)", "", "Argument[*3].Field[*valuelen]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_hd", "(nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_hd_bufs", "(nghttp2_hd_deflater *,nghttp2_bufs *,const nghttp2_nv *,size_t)", "", "Argument[*2].Field[*namelen]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_hd_bufs", "(nghttp2_hd_deflater *,nghttp2_bufs *,const nghttp2_nv *,size_t)", "", "Argument[*2].Field[*valuelen]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_hd_bufs", "(nghttp2_hd_deflater *,nghttp2_bufs *,const nghttp2_nv *,size_t)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_hd_vec2", "(nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t)", "", "Argument[*3].Field[*namelen]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_hd_vec2", "(nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t)", "", "Argument[*3].Field[*valuelen]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_hd_vec2", "(nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_hd_vec", "(nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t)", "", "Argument[*3].Field[*namelen]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_hd_vec", "(nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t)", "", "Argument[*3].Field[*valuelen]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_hd_vec", "(nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_init2", "(nghttp2_hd_deflater *,size_t,nghttp2_mem *)", "", "Argument[*2]", "Argument[*0].Field[*ctx].Field[**mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_init2", "(nghttp2_hd_deflater *,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize_max]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_init2", "(nghttp2_hd_deflater *,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[*deflate_hd_table_bufsize_max]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_init2", "(nghttp2_hd_deflater *,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*ctx].Field[*mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_init", "(nghttp2_hd_deflater *,nghttp2_mem *)", "", "Argument[*1]", "Argument[*0].Field[*ctx].Field[**mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_init", "(nghttp2_hd_deflater *,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[*ctx].Field[*mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_new2", "(nghttp2_hd_deflater **,size_t,nghttp2_mem *)", "", "Argument[*2]", "Argument[**0].Field[*ctx].Field[**mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_new2", "(nghttp2_hd_deflater **,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[**0].Field[*ctx].Field[*hd_table_bufsize_max]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_new2", "(nghttp2_hd_deflater **,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[**0].Field[*deflate_hd_table_bufsize_max]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_new2", "(nghttp2_hd_deflater **,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[**0].Field[*ctx].Field[*mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_new", "(nghttp2_hd_deflater **,size_t)", "", "Argument[1]", "Argument[**0].Field[*ctx].Field[*hd_table_bufsize_max]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_deflate_new", "(nghttp2_hd_deflater **,size_t)", "", "Argument[1]", "Argument[**0].Field[*deflate_hd_table_bufsize_max]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_entry_init", "(nghttp2_hd_entry *,nghttp2_hd_nv *)", "", "Argument[1]", "Argument[*0].Field[*nv]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_entry_init", "(nghttp2_hd_entry *,nghttp2_hd_nv *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_huff_decode", "(nghttp2_hd_huff_decode_context *,nghttp2_buf *,const uint8_t *,size_t,int)", "", "Argument[3]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_huff_encode_count", "(const uint8_t *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_hd_huff_encode_count", "(const uint8_t *,size_t)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_hd_inflate_change_table_size", "(nghttp2_hd_inflater *,size_t)", "", "Argument[1]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize_max]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_inflate_change_table_size", "(nghttp2_hd_inflater *,size_t)", "", "Argument[1]", "Argument[*0].Field[*min_hd_table_bufsize_max]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_inflate_change_table_size", "(nghttp2_hd_inflater *,size_t)", "", "Argument[1]", "Argument[*0].Field[*settings_hd_table_bufsize_max]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_inflate_get_dynamic_table_size", "(nghttp2_hd_inflater *)", "", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_inflate_get_max_dynamic_table_size", "(nghttp2_hd_inflater *)", "", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize_max]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_inflate_get_table_entry", "(nghttp2_hd_inflater *,size_t)", "", "Argument[1]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "nghttp2_hd_inflate_hd2", "(nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_inflate_hd3", "(nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_inflate_hd", "(nghttp2_hd_inflater *,nghttp2_nv *,int *,uint8_t *,size_t,int)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_inflate_hd_nv", "(nghttp2_hd_inflater *,nghttp2_hd_nv *,int *,const uint8_t *,size_t,int)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_hd_inflate_init", "(nghttp2_hd_inflater *,nghttp2_mem *)", "", "Argument[*1]", "Argument[*0].Field[*ctx].Field[**mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_inflate_init", "(nghttp2_hd_inflater *,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[*ctx].Field[*mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_inflate_new2", "(nghttp2_hd_inflater **,nghttp2_mem *)", "", "Argument[*1]", "Argument[**0].Field[*ctx].Field[**mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_inflate_new2", "(nghttp2_hd_inflater **,nghttp2_mem *)", "", "Argument[1]", "Argument[**0].Field[*ctx].Field[*mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_hd_table_get", "(nghttp2_hd_context *,size_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_http_on_data_chunk", "(nghttp2_stream *,size_t)", "", "Argument[1]", "Argument[*0].Field[*recv_content_length]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_http_on_header", "(nghttp2_session *,nghttp2_stream *,nghttp2_frame *,nghttp2_hd_nv *,int)", "", "Argument[*3]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "nghttp2_http_parse_priority", "(nghttp2_extpri *,const uint8_t *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_increase_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[*2]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_increase_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[*2]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_increase_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_increase_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_increase_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[2]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_increase_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_increase_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[2]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_map_each", "(const nghttp2_map *,..(*)(..),void *)", "", "Argument[*0].Field[**table].Field[**data]", "Argument[*2].Field[**head]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_map_each", "(const nghttp2_map *,..(*)(..),void *)", "", "Argument[*0].Field[**table].Field[*data]", "Argument[*2].Field[*head]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_map_find", "(const nghttp2_map *,nghttp2_map_key_type)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_map_find", "(const nghttp2_map *,nghttp2_map_key_type)", "", "Argument[*0]", "ReturnValue[**]", "taint", "df-generated"] + - ["", "", True, "nghttp2_map_find", "(const nghttp2_map *,nghttp2_map_key_type)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "nghttp2_map_find", "(const nghttp2_map *,nghttp2_map_key_type)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_map_find", "(const nghttp2_map *,nghttp2_map_key_type)", "", "Argument[1]", "ReturnValue[**]", "taint", "df-generated"] + - ["", "", True, "nghttp2_map_find", "(const nghttp2_map *,nghttp2_map_key_type)", "", "Argument[1]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "nghttp2_map_init", "(nghttp2_map *,nghttp2_mem *)", "", "Argument[*1]", "Argument[*0].Field[**mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_map_init", "(nghttp2_map *,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[*mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_map_insert", "(nghttp2_map *,nghttp2_map_key_type,void *)", "", "Argument[**2]", "Argument[*0].Field[**table].Field[***data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_map_insert", "(nghttp2_map *,nghttp2_map_key_type,void *)", "", "Argument[*2]", "Argument[*0].Field[**table].Field[**data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_map_insert", "(nghttp2_map *,nghttp2_map_key_type,void *)", "", "Argument[1]", "Argument[*0].Field[**table].Field[*key]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_map_insert", "(nghttp2_map *,nghttp2_map_key_type,void *)", "", "Argument[1]", "Argument[*0].Field[**table]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_map_insert", "(nghttp2_map *,nghttp2_map_key_type,void *)", "", "Argument[2]", "Argument[*0].Field[**table].Field[*data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_map_size", "(const nghttp2_map *)", "", "Argument[*0].Field[*size]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_nv_array_copy", "(nghttp2_nv **,const nghttp2_nv *,size_t,nghttp2_mem *)", "", "Argument[*0]", "Argument[**0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_nv_array_copy", "(nghttp2_nv **,const nghttp2_nv *,size_t,nghttp2_mem *)", "", "Argument[*1]", "Argument[**0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_nv_array_copy", "(nghttp2_nv **,const nghttp2_nv *,size_t,nghttp2_mem *)", "", "Argument[0]", "Argument[**0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_nv_array_copy", "(nghttp2_nv **,const nghttp2_nv *,size_t,nghttp2_mem *)", "", "Argument[0]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_nv_array_copy", "(nghttp2_nv **,const nghttp2_nv *,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[**0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_nv_array_copy", "(nghttp2_nv **,const nghttp2_nv *,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[**0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_nv_compare_name", "(const nghttp2_nv *,const nghttp2_nv *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_nv_compare_name", "(const nghttp2_nv *,const nghttp2_nv *)", "", "Argument[*1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_option_new", "(nghttp2_option **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_option_set_max_continuations", "(nghttp2_option *,size_t)", "", "Argument[1]", "Argument[*0].Field[*max_continuations]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_option_set_max_deflate_dynamic_table_size", "(nghttp2_option *,size_t)", "", "Argument[1]", "Argument[*0].Field[*max_deflate_dynamic_table_size]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_option_set_max_outbound_ack", "(nghttp2_option *,size_t)", "", "Argument[1]", "Argument[*0].Field[*max_outbound_ack]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_option_set_max_reserved_remote_streams", "(nghttp2_option *,uint32_t)", "", "Argument[1]", "Argument[*0].Field[*max_reserved_remote_streams]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_option_set_max_send_header_block_length", "(nghttp2_option *,size_t)", "", "Argument[1]", "Argument[*0].Field[*max_send_header_block_length]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_option_set_max_settings", "(nghttp2_option *,size_t)", "", "Argument[1]", "Argument[*0].Field[*max_settings]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_option_set_no_auto_ping_ack", "(nghttp2_option *,int)", "", "Argument[1]", "Argument[*0].Field[*no_auto_ping_ack]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_option_set_no_auto_window_update", "(nghttp2_option *,int)", "", "Argument[1]", "Argument[*0].Field[*no_auto_window_update]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_option_set_no_closed_streams", "(nghttp2_option *,int)", "", "Argument[1]", "Argument[*0].Field[*no_closed_streams]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_option_set_no_http_messaging", "(nghttp2_option *,int)", "", "Argument[1]", "Argument[*0].Field[*no_http_messaging]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_option_set_no_recv_client_magic", "(nghttp2_option *,int)", "", "Argument[1]", "Argument[*0].Field[*no_recv_client_magic]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation", "(nghttp2_option *,int)", "", "Argument[1]", "Argument[*0].Field[*no_rfc9113_leading_and_trailing_ws_validation]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_option_set_peer_max_concurrent_streams", "(nghttp2_option *,uint32_t)", "", "Argument[1]", "Argument[*0].Field[*peer_max_concurrent_streams]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_option_set_server_fallback_rfc7540_priorities", "(nghttp2_option *,int)", "", "Argument[1]", "Argument[*0].Field[*server_fallback_rfc7540_priorities]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_option_set_stream_reset_rate_limit", "(nghttp2_option *,uint64_t,uint64_t)", "", "Argument[1]", "Argument[*0].Field[*stream_reset_burst]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_option_set_stream_reset_rate_limit", "(nghttp2_option *,uint64_t,uint64_t)", "", "Argument[2]", "Argument[*0].Field[*stream_reset_rate]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_option_set_user_recv_extension_type", "(nghttp2_option *,uint8_t)", "", "Argument[1]", "Argument[*0].Field[*user_recv_ext_types]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_outbound_queue_init", "(nghttp2_outbound_queue *)", "", "Argument[*0].Field[**tail]", "Argument[*0].Field[**head]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_outbound_queue_init", "(nghttp2_outbound_queue *)", "", "Argument[*0].Field[*tail]", "Argument[*0].Field[*head]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_outbound_queue_push", "(nghttp2_outbound_queue *,nghttp2_outbound_item *)", "", "Argument[*1]", "Argument[*0].Field[**tail].Field[**qnext]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_outbound_queue_push", "(nghttp2_outbound_queue *,nghttp2_outbound_item *)", "", "Argument[*1]", "Argument[*0].Field[**tail]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_outbound_queue_push", "(nghttp2_outbound_queue *,nghttp2_outbound_item *)", "", "Argument[1]", "Argument[*0].Field[**tail].Field[*qnext]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_outbound_queue_push", "(nghttp2_outbound_queue *,nghttp2_outbound_item *)", "", "Argument[1]", "Argument[*0].Field[*tail]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_pack_settings_payload2", "(uint8_t *,size_t,const nghttp2_settings_entry *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_pack_settings_payload2", "(uint8_t *,size_t,const nghttp2_settings_entry *,size_t)", "", "Argument[3]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_pack_settings_payload", "(uint8_t *,size_t,const nghttp2_settings_entry *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_pack_settings_payload", "(uint8_t *,size_t,const nghttp2_settings_entry *,size_t)", "", "Argument[3]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_pq_init", "(nghttp2_pq *,nghttp2_less,nghttp2_mem *)", "", "Argument[*2]", "Argument[*0].Field[**mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_pq_init", "(nghttp2_pq *,nghttp2_less,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[*less]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_pq_init", "(nghttp2_pq *,nghttp2_less,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_pq_push", "(nghttp2_pq *,nghttp2_pq_entry *)", "", "Argument[*1]", "Argument[*0].Field[***q]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_pq_push", "(nghttp2_pq *,nghttp2_pq_entry *)", "", "Argument[1]", "Argument[*0].Field[***q]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_pq_push", "(nghttp2_pq *,nghttp2_pq_entry *)", "", "Argument[1]", "Argument[*0].Field[**q]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_pq_remove", "(nghttp2_pq *,nghttp2_pq_entry *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_pq_size", "(nghttp2_pq *)", "", "Argument[*0].Field[*length]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_pq_top", "(nghttp2_pq *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_pq_top", "(nghttp2_pq *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "nghttp2_priority_spec_init", "(nghttp2_priority_spec *,int32_t,int32_t,int)", "", "Argument[1]", "Argument[*0].Field[*stream_id]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_priority_spec_init", "(nghttp2_priority_spec *,int32_t,int32_t,int)", "", "Argument[2]", "Argument[*0].Field[*weight]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_priority_spec_init", "(nghttp2_priority_spec *,int32_t,int32_t,int)", "", "Argument[3]", "Argument[*0].Field[*exclusive]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_queue_back", "(nghttp2_queue *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_queue_back", "(nghttp2_queue *)", "", "Argument[*0]", "ReturnValue[**]", "taint", "df-generated"] + - ["", "", True, "nghttp2_queue_back", "(nghttp2_queue *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "nghttp2_queue_front", "(nghttp2_queue *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_queue_front", "(nghttp2_queue *)", "", "Argument[*0]", "ReturnValue[**]", "taint", "df-generated"] + - ["", "", True, "nghttp2_queue_front", "(nghttp2_queue *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "nghttp2_queue_init", "(nghttp2_queue *)", "", "Argument[*0].Field[**back]", "Argument[*0].Field[**front]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_queue_init", "(nghttp2_queue *)", "", "Argument[*0].Field[*back]", "Argument[*0].Field[*front]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_queue_pop", "(nghttp2_queue *)", "", "Argument[*0].Field[**front].Field[**next]", "Argument[*0].Field[**front]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_queue_pop", "(nghttp2_queue *)", "", "Argument[*0].Field[**front].Field[*next]", "Argument[*0].Field[*front]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_queue_push", "(nghttp2_queue *,void *)", "", "Argument[**1]", "Argument[*0].Field[**back].Field[***data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_queue_push", "(nghttp2_queue *,void *)", "", "Argument[*0].Field[**back]", "Argument[*0].Field[**front]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_queue_push", "(nghttp2_queue *,void *)", "", "Argument[*0].Field[*back]", "Argument[*0].Field[*front]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_queue_push", "(nghttp2_queue *,void *)", "", "Argument[*1]", "Argument[*0].Field[**back].Field[**data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_queue_push", "(nghttp2_queue *,void *)", "", "Argument[1]", "Argument[*0].Field[**back].Field[*data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_ratelim_drain", "(nghttp2_ratelim *,uint64_t)", "", "Argument[1]", "Argument[*0].Field[*val]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_ratelim_init", "(nghttp2_ratelim *,uint64_t,uint64_t)", "", "Argument[*0].Field[*burst]", "Argument[*0].Field[*val]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_ratelim_init", "(nghttp2_ratelim *,uint64_t,uint64_t)", "", "Argument[1]", "Argument[*0].Field[*burst]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_ratelim_init", "(nghttp2_ratelim *,uint64_t,uint64_t)", "", "Argument[2]", "Argument[*0].Field[*rate]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_ratelim_update", "(nghttp2_ratelim *,uint64_t)", "", "Argument[1]", "Argument[*0].Field[*tstamp]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_ratelim_update", "(nghttp2_ratelim *,uint64_t)", "", "Argument[1]", "Argument[*0].Field[*val]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_rcbuf_get_buf", "(nghttp2_rcbuf *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_rcbuf_new2", "(nghttp2_rcbuf **,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[**0].Field[*base]", "Argument[**0].Field[**base]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_rcbuf_new2", "(nghttp2_rcbuf **,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[*1]", "Argument[**0].Field[**base]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_rcbuf_new2", "(nghttp2_rcbuf **,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_rcbuf_new2", "(nghttp2_rcbuf **,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[**0].Field[**base]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_rcbuf_new2", "(nghttp2_rcbuf **,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[**0].Field[**base]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_rcbuf_new2", "(nghttp2_rcbuf **,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[**0].Field[*len]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_rcbuf_new", "(nghttp2_rcbuf **,size_t,nghttp2_mem *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_rcbuf_new", "(nghttp2_rcbuf **,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[**0].Field[*len]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_select_alpn", "(const unsigned char **,unsigned char *,const unsigned char *,unsigned int)", "", "Argument[**0]", "Argument[*2]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_select_alpn", "(const unsigned char **,unsigned char *,const unsigned char *,unsigned int)", "", "Argument[*2]", "Argument[**0]", "value", "df-generated"] + - ["", "", True, "nghttp2_select_alpn", "(const unsigned char **,unsigned char *,const unsigned char *,unsigned int)", "", "Argument[*2]", "Argument[*1]", "value", "df-generated"] + - ["", "", True, "nghttp2_select_next_protocol", "(unsigned char **,unsigned char *,const unsigned char *,unsigned int)", "", "Argument[**0]", "Argument[*2]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_select_next_protocol", "(unsigned char **,unsigned char *,const unsigned char *,unsigned int)", "", "Argument[*2]", "Argument[**0]", "value", "df-generated"] + - ["", "", True, "nghttp2_select_next_protocol", "(unsigned char **,unsigned char *,const unsigned char *,unsigned int)", "", "Argument[*2]", "Argument[*1]", "value", "df-generated"] + - ["", "", True, "nghttp2_session_add_item", "(nghttp2_session *,nghttp2_outbound_item *)", "", "Argument[1]", "Argument[*0].Field[*ob_reg].Field[*tail]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_add_item", "(nghttp2_session *,nghttp2_outbound_item *)", "", "Argument[1]", "Argument[*0].Field[*ob_syn].Field[*tail]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_add_item", "(nghttp2_session *,nghttp2_outbound_item *)", "", "Argument[1]", "Argument[*0].Field[*ob_urgent].Field[*tail]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_add_settings", "(nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t)", "", "Argument[*2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_add_settings", "(nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_add_settings", "(nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t)", "", "Argument[3]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_callbacks_new", "(nghttp2_session_callbacks **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_before_frame_send_callback", "(nghttp2_session_callbacks *,nghttp2_before_frame_send_callback)", "", "Argument[1]", "Argument[*0].Field[*before_frame_send_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_data_source_read_length_callback2", "(nghttp2_session_callbacks *,nghttp2_data_source_read_length_callback2)", "", "Argument[1]", "Argument[*0].Field[*read_length_callback2]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_data_source_read_length_callback", "(nghttp2_session_callbacks *,nghttp2_data_source_read_length_callback)", "", "Argument[1]", "Argument[*0].Field[*read_length_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_error_callback2", "(nghttp2_session_callbacks *,nghttp2_error_callback2)", "", "Argument[1]", "Argument[*0].Field[*error_callback2]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_error_callback", "(nghttp2_session_callbacks *,nghttp2_error_callback)", "", "Argument[1]", "Argument[*0].Field[*error_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_on_begin_frame_callback", "(nghttp2_session_callbacks *,nghttp2_on_begin_frame_callback)", "", "Argument[1]", "Argument[*0].Field[*on_begin_frame_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_on_begin_headers_callback", "(nghttp2_session_callbacks *,nghttp2_on_begin_headers_callback)", "", "Argument[1]", "Argument[*0].Field[*on_begin_headers_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_on_data_chunk_recv_callback", "(nghttp2_session_callbacks *,nghttp2_on_data_chunk_recv_callback)", "", "Argument[1]", "Argument[*0].Field[*on_data_chunk_recv_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_on_extension_chunk_recv_callback", "(nghttp2_session_callbacks *,nghttp2_on_extension_chunk_recv_callback)", "", "Argument[1]", "Argument[*0].Field[*on_extension_chunk_recv_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_on_frame_not_send_callback", "(nghttp2_session_callbacks *,nghttp2_on_frame_not_send_callback)", "", "Argument[1]", "Argument[*0].Field[*on_frame_not_send_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_on_frame_recv_callback", "(nghttp2_session_callbacks *,nghttp2_on_frame_recv_callback)", "", "Argument[1]", "Argument[*0].Field[*on_frame_recv_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_on_frame_send_callback", "(nghttp2_session_callbacks *,nghttp2_on_frame_send_callback)", "", "Argument[1]", "Argument[*0].Field[*on_frame_send_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_on_header_callback2", "(nghttp2_session_callbacks *,nghttp2_on_header_callback2)", "", "Argument[1]", "Argument[*0].Field[*on_header_callback2]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_on_header_callback", "(nghttp2_session_callbacks *,nghttp2_on_header_callback)", "", "Argument[1]", "Argument[*0].Field[*on_header_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_on_invalid_frame_recv_callback", "(nghttp2_session_callbacks *,nghttp2_on_invalid_frame_recv_callback)", "", "Argument[1]", "Argument[*0].Field[*on_invalid_frame_recv_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_on_invalid_header_callback2", "(nghttp2_session_callbacks *,nghttp2_on_invalid_header_callback2)", "", "Argument[1]", "Argument[*0].Field[*on_invalid_header_callback2]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_on_invalid_header_callback", "(nghttp2_session_callbacks *,nghttp2_on_invalid_header_callback)", "", "Argument[1]", "Argument[*0].Field[*on_invalid_header_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_on_stream_close_callback", "(nghttp2_session_callbacks *,nghttp2_on_stream_close_callback)", "", "Argument[1]", "Argument[*0].Field[*on_stream_close_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_pack_extension_callback2", "(nghttp2_session_callbacks *,nghttp2_pack_extension_callback2)", "", "Argument[1]", "Argument[*0].Field[*pack_extension_callback2]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_pack_extension_callback", "(nghttp2_session_callbacks *,nghttp2_pack_extension_callback)", "", "Argument[1]", "Argument[*0].Field[*pack_extension_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_recv_callback2", "(nghttp2_session_callbacks *,nghttp2_recv_callback2)", "", "Argument[1]", "Argument[*0].Field[*recv_callback2]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_recv_callback", "(nghttp2_session_callbacks *,nghttp2_recv_callback)", "", "Argument[1]", "Argument[*0].Field[*recv_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_select_padding_callback2", "(nghttp2_session_callbacks *,nghttp2_select_padding_callback2)", "", "Argument[1]", "Argument[*0].Field[*select_padding_callback2]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_select_padding_callback", "(nghttp2_session_callbacks *,nghttp2_select_padding_callback)", "", "Argument[1]", "Argument[*0].Field[*select_padding_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_send_callback2", "(nghttp2_session_callbacks *,nghttp2_send_callback2)", "", "Argument[1]", "Argument[*0].Field[*send_callback2]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_send_callback", "(nghttp2_session_callbacks *,nghttp2_send_callback)", "", "Argument[1]", "Argument[*0].Field[*send_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_send_data_callback", "(nghttp2_session_callbacks *,nghttp2_send_data_callback)", "", "Argument[1]", "Argument[*0].Field[*send_data_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_callbacks_set_unpack_extension_callback", "(nghttp2_session_callbacks *,nghttp2_unpack_extension_callback)", "", "Argument[1]", "Argument[*0].Field[*unpack_extension_callback]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_change_extpri_stream_priority", "(nghttp2_session *,int32_t,const nghttp2_extpri *,int)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_check_server_session", "(nghttp2_session *)", "", "Argument[*0].Field[*server]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[**2]", "Argument[**0].Field[***user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[*1]", "Argument[**0].Field[*callbacks]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[*2]", "Argument[**0].Field[**user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[1]", "Argument[**0].Field[*callbacks]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[2]", "Argument[**0].Field[*user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[**2]", "Argument[**0].Field[***user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[*1]", "Argument[**0].Field[*callbacks]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[*2]", "Argument[**0].Field[**user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[*4]", "Argument[**0].Field[*mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[*4]", "Argument[**0].Field[*streams].Field[**mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[1]", "Argument[**0].Field[*callbacks]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[2]", "Argument[**0].Field[*user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[4]", "Argument[**0].Field[*mem]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[4]", "Argument[**0].Field[*streams].Field[**mem]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[**2]", "Argument[**0].Field[***user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[*1]", "Argument[**0].Field[*callbacks]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[*2]", "Argument[**0].Field[**user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[1]", "Argument[**0].Field[*callbacks]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_client_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[2]", "Argument[**0].Field[*user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_consume", "(nghttp2_session *,int32_t,size_t)", "", "Argument[2]", "Argument[*0].Field[*consumed_size]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_consume", "(nghttp2_session *,int32_t,size_t)", "", "Argument[2]", "Argument[*0].Field[*recv_window_size]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_consume_connection", "(nghttp2_session *,size_t)", "", "Argument[1]", "Argument[*0].Field[*consumed_size]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_consume_connection", "(nghttp2_session *,size_t)", "", "Argument[1]", "Argument[*0].Field[*recv_window_size]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_destroy_stream", "(nghttp2_session *,nghttp2_stream *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_find_stream", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_find_stream", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_effective_local_window_size", "(nghttp2_session *)", "", "Argument[*0].Field[*local_window_size]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_get_effective_recv_data_length", "(nghttp2_session *)", "", "Argument[*0].Field[*recv_window_size]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_get_extpri_stream_priority", "(nghttp2_session *,nghttp2_extpri *,int32_t)", "", "Argument[2]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_last_proc_stream_id", "(nghttp2_session *)", "", "Argument[*0].Field[*last_proc_stream_id]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_get_local_settings", "(nghttp2_session *,nghttp2_settings_id)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_local_window_size", "(nghttp2_session *)", "", "Argument[*0].Field[*local_window_size]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_get_local_window_size", "(nghttp2_session *)", "", "Argument[*0].Field[*recv_window_size]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_get_next_ob_item", "(nghttp2_session *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_next_ob_item", "(nghttp2_session *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_next_stream_id", "(nghttp2_session *)", "", "Argument[*0].Field[*next_stream_id]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_get_outbound_queue_size", "(nghttp2_session *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_remote_settings", "(nghttp2_session *,nghttp2_settings_id)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_remote_window_size", "(nghttp2_session *)", "", "Argument[*0].Field[*remote_window_size]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_get_stream", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_stream", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_stream_effective_local_window_size", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_stream_effective_recv_data_length", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_stream_local_close", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_stream_local_window_size", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_stream_raw", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_stream_raw", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_stream_remote_close", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_stream_remote_window_size", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_stream_user_data", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_stream_user_data", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue[**]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_get_stream_user_data", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_mem_recv2", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_mem_recv2", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_mem_recv2", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_mem_recv2", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[*1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_mem_recv2", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_mem_recv2", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[1]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_mem_recv2", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_mem_recv2", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_mem_recv2", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[2]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_mem_recv2", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[2]", "ReturnValue", "value", "df-generated"] + - ["", "", True, "nghttp2_session_mem_recv", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_mem_recv", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_mem_recv", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[*1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_mem_recv", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_mem_recv", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_mem_recv", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_mem_recv", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[2]", "ReturnValue", "value", "df-generated"] + - ["", "", True, "nghttp2_session_on_goaway_received", "(nghttp2_session *,nghttp2_frame *)", "", "Argument[*1].Union[*(unnamed class/struct/union)].Field[*last_stream_id]", "Argument[*0].Field[*remote_last_stream_id]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_on_push_promise_received", "(nghttp2_session *,nghttp2_frame *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_on_request_headers_received", "(nghttp2_session *,nghttp2_frame *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_on_window_update_received", "(nghttp2_session *,nghttp2_frame *)", "", "Argument[*1].Union[*(unnamed class/struct/union)].Field[*window_size_increment]", "Argument[*0].Field[*remote_window_size]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_open_stream", "(nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *)", "", "Argument[**4]", "ReturnValue[*].Field[***stream_user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_open_stream", "(nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *)", "", "Argument[*4]", "ReturnValue[*].Field[**stream_user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_open_stream", "(nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *)", "", "Argument[1]", "Argument[*0].Field[*streams].Field[**table]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_open_stream", "(nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *)", "", "Argument[1]", "ReturnValue[*].Field[*stream_id]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_open_stream", "(nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *)", "", "Argument[2]", "ReturnValue[*].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_open_stream", "(nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *)", "", "Argument[3]", "ReturnValue[*].Field[*state]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_open_stream", "(nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *)", "", "Argument[4]", "ReturnValue[*].Field[*stream_user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_pack_data", "(nghttp2_session *,nghttp2_bufs *,size_t,nghttp2_frame *,nghttp2_data_aux_data *,nghttp2_stream *)", "", "Argument[*3]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_pop_next_ob_item", "(nghttp2_session *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_pop_next_ob_item", "(nghttp2_session *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_recv", "(nghttp2_session *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_server_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[**2]", "Argument[**0].Field[***user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[*1]", "Argument[**0].Field[*callbacks]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[*2]", "Argument[**0].Field[**user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[1]", "Argument[**0].Field[*callbacks]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[2]", "Argument[**0].Field[*user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[**2]", "Argument[**0].Field[***user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[*1]", "Argument[**0].Field[*callbacks]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[*2]", "Argument[**0].Field[**user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[*4]", "Argument[**0].Field[*mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[*4]", "Argument[**0].Field[*streams].Field[**mem]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[1]", "Argument[**0].Field[*callbacks]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[2]", "Argument[**0].Field[*user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[4]", "Argument[**0].Field[*mem]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[4]", "Argument[**0].Field[*streams].Field[**mem]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[**2]", "Argument[**0].Field[***user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[*1]", "Argument[**0].Field[*callbacks]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[*2]", "Argument[**0].Field[**user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[1]", "Argument[**0].Field[*callbacks]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_server_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[2]", "Argument[**0].Field[*user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_set_local_window_size", "(nghttp2_session *,uint8_t,int32_t,int32_t)", "", "Argument[3]", "Argument[*0].Field[*local_window_size]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_set_local_window_size", "(nghttp2_session *,uint8_t,int32_t,int32_t)", "", "Argument[3]", "Argument[*0].Field[*recv_reduction]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_set_local_window_size", "(nghttp2_session *,uint8_t,int32_t,int32_t)", "", "Argument[3]", "Argument[*0].Field[*recv_window_size]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_set_next_stream_id", "(nghttp2_session *,int32_t)", "", "Argument[1]", "Argument[*0].Field[*next_stream_id]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_set_user_data", "(nghttp2_session *,void *)", "", "Argument[**1]", "Argument[*0].Field[***user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_set_user_data", "(nghttp2_session *,void *)", "", "Argument[*1]", "Argument[*0].Field[**user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_set_user_data", "(nghttp2_session *,void *)", "", "Argument[1]", "Argument[*0].Field[*user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_session_update_local_settings", "(nghttp2_session *,nghttp2_settings_entry *,size_t)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_update_local_settings", "(nghttp2_session *,nghttp2_settings_entry *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_update_recv_connection_window_size", "(nghttp2_session *,size_t)", "", "Argument[1]", "Argument[*0].Field[*recv_window_size]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_update_recv_stream_window_size", "(nghttp2_session *,nghttp2_stream *,size_t,int)", "", "Argument[2]", "Argument[*1].Field[*recv_window_size]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_session_upgrade2", "(nghttp2_session *,const uint8_t *,size_t,int,void *)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_session_upgrade", "(nghttp2_session *,const uint8_t *,size_t,void *)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_stream_attach_item", "(nghttp2_stream *,nghttp2_outbound_item *)", "", "Argument[*1]", "Argument[*0].Field[**item]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_stream_attach_item", "(nghttp2_stream *,nghttp2_outbound_item *)", "", "Argument[1]", "Argument[*0].Field[*item]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_stream_defer_item", "(nghttp2_stream *,uint8_t)", "", "Argument[1]", "Argument[*0].Field[*flags]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_stream_get_stream_id", "(nghttp2_stream *)", "", "Argument[*0].Field[*stream_id]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_stream_init", "(nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *)", "", "Argument[**6]", "Argument[*0].Field[***stream_user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_stream_init", "(nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *)", "", "Argument[*0].Field[*http_extpri]", "Argument[*0].Field[*extpri]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_stream_init", "(nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *)", "", "Argument[*6]", "Argument[*0].Field[**stream_user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_stream_init", "(nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *)", "", "Argument[1]", "Argument[*0].Field[*stream_id]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_stream_init", "(nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *)", "", "Argument[2]", "Argument[*0].Field[*flags]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_stream_init", "(nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *)", "", "Argument[3]", "Argument[*0].Field[*state]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_stream_init", "(nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *)", "", "Argument[4]", "Argument[*0].Field[*remote_window_size]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_stream_init", "(nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *)", "", "Argument[5]", "Argument[*0].Field[*local_window_size]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_stream_init", "(nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *)", "", "Argument[6]", "Argument[*0].Field[*stream_user_data]", "value", "dfc-generated"] + - ["", "", True, "nghttp2_stream_resume_deferred_item", "(nghttp2_stream *,uint8_t)", "", "Argument[1]", "Argument[*0].Field[*flags]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_stream_shutdown", "(nghttp2_stream *,nghttp2_shut_flag)", "", "Argument[1]", "Argument[*0].Field[*shut_flags]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_stream_update_local_initial_window_size", "(nghttp2_stream *,int32_t,int32_t)", "", "Argument[1]", "Argument[*0].Field[*local_window_size]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_stream_update_local_initial_window_size", "(nghttp2_stream *,int32_t,int32_t)", "", "Argument[2]", "Argument[*0].Field[*local_window_size]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_stream_update_remote_initial_window_size", "(nghttp2_stream *,int32_t,int32_t)", "", "Argument[1]", "Argument[*0].Field[*remote_window_size]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_stream_update_remote_initial_window_size", "(nghttp2_stream *,int32_t,int32_t)", "", "Argument[2]", "Argument[*0].Field[*remote_window_size]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_submit_data2", "(nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider2 *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_submit_data", "(nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_submit_data_shared", "(nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider_wrap *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_submit_headers", "(nghttp2_session *,uint8_t,int32_t,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,void *)", "", "Argument[2]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_submit_push_promise", "(nghttp2_session *,uint8_t,int32_t,const nghttp2_nv *,size_t,void *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "nghttp2_submit_request2", "(nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *,void *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_submit_request", "(nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider *,void *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_submit_response2", "(nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_submit_response2", "(nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_submit_response", "(nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider *)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_submit_response", "(nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"] + - ["", "", True, "nghttp2_submit_settings", "(nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t)", "", "Argument[*2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_submit_settings", "(nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_submit_settings", "(nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t)", "", "Argument[3]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_submit_trailer", "(nghttp2_session *,int32_t,const nghttp2_nv *,size_t)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "nghttp2_submit_window_update", "(nghttp2_session *,uint8_t,int32_t,int32_t)", "", "Argument[*0]", "Argument[3]", "taint", "df-generated"] + - ["", "", True, "nghttp2_submit_window_update", "(nghttp2_session *,uint8_t,int32_t,int32_t)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "nghttp2_submit_window_update", "(nghttp2_session *,uint8_t,int32_t,int32_t)", "", "Argument[2]", "Argument[3]", "taint", "df-generated"] + - ["", "", True, "nghttp2_submit_window_update", "(nghttp2_session *,uint8_t,int32_t,int32_t)", "", "Argument[3]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "sfparse_base64decode", "(sfparse_vec *,const sfparse_vec *)", "", "Argument[*0].Field[*base]", "Argument[*0].Field[*len]", "taint", "dfc-generated"] + - ["", "", True, "sfparse_parser_dict", "(sfparse_parser *,sfparse_vec *,sfparse_value *)", "", "Argument[*1].Field[*base]", "Argument[*1].Field[*len]", "taint", "dfc-generated"] + - ["", "", True, "sfparse_parser_init", "(sfparse_parser *,const uint8_t *,size_t)", "", "Argument[*0].Field[**end]", "Argument[*0].Field[**pos]", "value", "dfc-generated"] + - ["", "", True, "sfparse_parser_init", "(sfparse_parser *,const uint8_t *,size_t)", "", "Argument[*0].Field[*end]", "Argument[*0].Field[*pos]", "value", "dfc-generated"] + - ["", "", True, "sfparse_parser_init", "(sfparse_parser *,const uint8_t *,size_t)", "", "Argument[*1]", "Argument[*0].Field[**end]", "value", "dfc-generated"] + - ["", "", True, "sfparse_parser_init", "(sfparse_parser *,const uint8_t *,size_t)", "", "Argument[*1]", "Argument[*0].Field[**pos]", "value", "dfc-generated"] + - ["", "", True, "sfparse_parser_init", "(sfparse_parser *,const uint8_t *,size_t)", "", "Argument[1]", "Argument[*0].Field[**end]", "taint", "dfc-generated"] + - ["", "", True, "sfparse_parser_init", "(sfparse_parser *,const uint8_t *,size_t)", "", "Argument[1]", "Argument[*0].Field[*end]", "taint", "dfc-generated"] + - ["", "", True, "sfparse_parser_init", "(sfparse_parser *,const uint8_t *,size_t)", "", "Argument[1]", "Argument[*0].Field[*pos]", "value", "dfc-generated"] + - ["", "", True, "sfparse_parser_init", "(sfparse_parser *,const uint8_t *,size_t)", "", "Argument[2]", "Argument[*0].Field[**end]", "taint", "dfc-generated"] + - ["", "", True, "sfparse_parser_init", "(sfparse_parser *,const uint8_t *,size_t)", "", "Argument[2]", "Argument[*0].Field[*end]", "taint", "dfc-generated"] + - ["", "", True, "sfparse_parser_inner_list", "(sfparse_parser *,sfparse_value *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "sfparse_parser_item", "(sfparse_parser *,sfparse_value *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "sfparse_parser_list", "(sfparse_parser *,sfparse_value *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "sfparse_parser_param", "(sfparse_parser *,sfparse_vec *,sfparse_value *)", "", "Argument[*1].Field[*base]", "Argument[*1].Field[*len]", "taint", "dfc-generated"] + - ["", "", True, "sfparse_pctdecode", "(sfparse_vec *,const sfparse_vec *)", "", "Argument[*0].Field[*base]", "Argument[*0].Field[*len]", "taint", "dfc-generated"] + - ["", "", True, "sfparse_unescape", "(sfparse_vec *,const sfparse_vec *)", "", "Argument[*0].Field[*base]", "Argument[*0].Field[*len]", "taint", "dfc-generated"] diff --git a/cpp/ql/lib/ext/generated/zlib/zlib.model.yml b/cpp/ql/lib/ext/generated/zlib/zlib.model.yml new file mode 100644 index 00000000000..431341c483e --- /dev/null +++ b/cpp/ql/lib/ext/generated/zlib/zlib.model.yml @@ -0,0 +1,168 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/cpp-all + extensible: summaryModel + data: + - ["", "", True, "_tr_flush_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[*1]", "Argument[*0].Field[**pending_buf]", "value", "dfc-generated"] + - ["", "", True, "_tr_flush_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[1]", "Argument[*0].Field[**pending_buf]", "taint", "dfc-generated"] + - ["", "", True, "_tr_flush_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[2]", "Argument[*0].Field[**pending_buf]", "taint", "dfc-generated"] + - ["", "", True, "_tr_flush_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[2]", "Argument[*0].Field[*pending]", "taint", "dfc-generated"] + - ["", "", True, "_tr_flush_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[3]", "Argument[*0].Field[**pending_buf]", "taint", "dfc-generated"] + - ["", "", True, "_tr_flush_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[3]", "Argument[*0].Field[*bi_buf]", "taint", "dfc-generated"] + - ["", "", True, "_tr_stored_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[*1]", "Argument[*0].Field[**pending_buf]", "value", "dfc-generated"] + - ["", "", True, "_tr_stored_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[1]", "Argument[*0].Field[**pending_buf]", "taint", "dfc-generated"] + - ["", "", True, "_tr_stored_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[2]", "Argument[*0].Field[**pending_buf]", "taint", "dfc-generated"] + - ["", "", True, "_tr_stored_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[2]", "Argument[*0].Field[*pending]", "taint", "dfc-generated"] + - ["", "", True, "_tr_stored_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[3]", "Argument[*0].Field[**pending_buf]", "taint", "dfc-generated"] + - ["", "", True, "_tr_stored_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[3]", "Argument[*0].Field[*bi_buf]", "taint", "dfc-generated"] + - ["", "", True, "_tr_tally", "(deflate_state *,unsigned int,unsigned int)", "", "Argument[1]", "Argument[*0].Field[**sym_buf]", "value", "dfc-generated"] + - ["", "", True, "_tr_tally", "(deflate_state *,unsigned int,unsigned int)", "", "Argument[2]", "Argument[*0].Field[**sym_buf]", "value", "dfc-generated"] + - ["", "", True, "adler32", "(uLong,const Bytef *,uInt)", "", "Argument[*1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "adler32", "(uLong,const Bytef *,uInt)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "adler32", "(uLong,const Bytef *,uInt)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "adler32_combine64", "(uLong,uLong,off64_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "adler32_combine64", "(uLong,uLong,off64_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "adler32_combine64", "(uLong,uLong,off64_t)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "adler32_combine", "(uLong,uLong,off_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "adler32_combine", "(uLong,uLong,off_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "adler32_combine", "(uLong,uLong,off_t)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "adler32_z", "(uLong,const Bytef *,z_size_t)", "", "Argument[*1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "adler32_z", "(uLong,const Bytef *,z_size_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "adler32_z", "(uLong,const Bytef *,z_size_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "compress2", "(Bytef *,uLongf *,const Bytef *,uLong,int)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "compress", "(Bytef *,uLongf *,const Bytef *,uLong)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "compressBound", "(uLong)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "crc32", "(uLong,unsigned long,const Bytef *,const unsigned char *,uInt)", "", "Argument[*1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "crc32", "(uLong,unsigned long,const Bytef *,const unsigned char *,uInt)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "crc32", "(uLong,unsigned long,const Bytef *,const unsigned char *,uInt)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "crc32_combine64", "(uLong,uLong,off64_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "crc32_combine64", "(uLong,uLong,off64_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "crc32_combine", "(uLong,uLong,off_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "crc32_combine", "(uLong,uLong,off_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "crc32_combine_op", "(uLong,uLong,uLong)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "crc32_combine_op", "(uLong,uLong,uLong)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "crc32_z", "(uLong,unsigned long,const Bytef *,const unsigned char *,z_size_t)", "", "Argument[*1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "crc32_z", "(uLong,unsigned long,const Bytef *,const unsigned char *,z_size_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "crc32_z", "(uLong,unsigned long,const Bytef *,const unsigned char *,z_size_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "deflateBound", "(z_streamp,uLong)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "deflateCopy", "(z_streamp,z_streamp)", "", "Argument[*1]", "Argument[*0]", "value", "dfc-generated"] + - ["", "", True, "deflateCopy", "(z_streamp,z_streamp)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "deflateGetDictionary", "(z_streamp,Bytef *,uInt *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "deflateGetDictionary", "(z_streamp,Bytef *,uInt *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "deflatePending", "(z_streamp,unsigned int *,int *)", "", "Argument[*0].Field[**state].Field[*bi_valid]", "Argument[*2]", "value", "dfc-generated"] + - ["", "", True, "deflatePending", "(z_streamp,unsigned int *,int *)", "", "Argument[*0].Field[**state].Field[*pending]", "Argument[*1]", "value", "dfc-generated"] + - ["", "", True, "deflateResetKeep", "(z_streamp)", "", "Argument[*0].Field[*total_out]", "Argument[*0].Field[*total_in]", "value", "dfc-generated"] + - ["", "", True, "deflateSetDictionary", "(z_streamp,const Bytef *,uInt)", "", "Argument[*1]", "Argument[*0].Field[**next_in]", "value", "dfc-generated"] + - ["", "", True, "deflateSetDictionary", "(z_streamp,const Bytef *,uInt)", "", "Argument[*1]", "Argument[*0].Field[*adler]", "taint", "dfc-generated"] + - ["", "", True, "deflateSetDictionary", "(z_streamp,const Bytef *,uInt)", "", "Argument[1]", "Argument[*0].Field[**next_in]", "taint", "dfc-generated"] + - ["", "", True, "deflateSetDictionary", "(z_streamp,const Bytef *,uInt)", "", "Argument[1]", "Argument[*0].Field[*adler]", "taint", "dfc-generated"] + - ["", "", True, "deflateSetDictionary", "(z_streamp,const Bytef *,uInt)", "", "Argument[1]", "Argument[*0].Field[*next_in]", "value", "dfc-generated"] + - ["", "", True, "deflateSetDictionary", "(z_streamp,const Bytef *,uInt)", "", "Argument[2]", "Argument[*0].Field[**next_in]", "taint", "dfc-generated"] + - ["", "", True, "deflateSetDictionary", "(z_streamp,const Bytef *,uInt)", "", "Argument[2]", "Argument[*0].Field[*avail_in]", "value", "dfc-generated"] + - ["", "", True, "deflateSetDictionary", "(z_streamp,const Bytef *,uInt)", "", "Argument[2]", "Argument[*0].Field[*next_in]", "taint", "dfc-generated"] + - ["", "", True, "deflateSetHeader", "(z_streamp,gz_headerp)", "", "Argument[*1]", "Argument[*0].Field[**state].Field[**gzhead]", "value", "dfc-generated"] + - ["", "", True, "deflateSetHeader", "(z_streamp,gz_headerp)", "", "Argument[1]", "Argument[*0].Field[**state].Field[*gzhead]", "value", "dfc-generated"] + - ["", "", True, "deflateUsed", "(z_streamp,int *)", "", "Argument[*0].Field[**state].Field[*bi_used]", "Argument[*1]", "value", "dfc-generated"] + - ["", "", True, "gz_error", "(gz_statep,int,const char *)", "", "Argument[*0].Field[**path]", "Argument[*0].Field[**msg]", "taint", "dfc-generated"] + - ["", "", True, "gz_error", "(gz_statep,int,const char *)", "", "Argument[*0].Field[*path]", "Argument[*0].Field[**msg]", "taint", "dfc-generated"] + - ["", "", True, "gz_error", "(gz_statep,int,const char *)", "", "Argument[*2]", "Argument[*0].Field[**msg]", "taint", "dfc-generated"] + - ["", "", True, "gz_error", "(gz_statep,int,const char *)", "", "Argument[1]", "Argument[*0].Field[*err]", "value", "dfc-generated"] + - ["", "", True, "gz_error", "(gz_statep,int,const char *)", "", "Argument[2]", "Argument[*0].Field[**msg]", "taint", "dfc-generated"] + - ["", "", True, "gzbuffer", "(gzFile,unsigned int)", "", "Argument[1]", "Argument[*0].Field[*want]", "value", "dfc-generated"] + - ["", "", True, "gzclearerr", "(gzFile)", "", "Argument[*0].Field[**path]", "Argument[*0].Field[**msg]", "taint", "dfc-generated"] + - ["", "", True, "gzclearerr", "(gzFile)", "", "Argument[*0].Field[*path]", "Argument[*0].Field[**msg]", "taint", "dfc-generated"] + - ["", "", True, "gzclose", "(gzFile)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "gzclose_w", "(gzFile)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "gzdirect", "(gzFile)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "gzdopen", "(int,const char *)", "", "Argument[*1]", "ReturnValue[*].Field[*level]", "taint", "dfc-generated"] + - ["", "", True, "gzdopen", "(int,const char *)", "", "Argument[0]", "ReturnValue[*].Field[**msg]", "taint", "dfc-generated"] + - ["", "", True, "gzdopen", "(int,const char *)", "", "Argument[0]", "ReturnValue[*].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "gzdopen", "(int,const char *)", "", "Argument[0]", "ReturnValue[*].Field[*fd]", "value", "dfc-generated"] + - ["", "", True, "gzdopen", "(int,const char *)", "", "Argument[1]", "ReturnValue[*].Field[*level]", "taint", "dfc-generated"] + - ["", "", True, "gzeof", "(gzFile)", "", "Argument[*0].Field[*past]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "gzerror", "(gzFile,int *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "gzerror", "(gzFile,int *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "gzerror", "(gzFile,int *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"] + - ["", "", True, "gzflush", "(gzFile,int)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "gzfread", "(voidp,z_size_t,z_size_t,gzFile)", "", "Argument[*0]", "Argument[*3].Field[*strm].Field[**next_out]", "value", "dfc-generated"] + - ["", "", True, "gzfread", "(voidp,z_size_t,z_size_t,gzFile)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "gzfread", "(voidp,z_size_t,z_size_t,gzFile)", "", "Argument[0]", "Argument[*3].Field[*strm].Field[**next_out]", "taint", "dfc-generated"] + - ["", "", True, "gzfread", "(voidp,z_size_t,z_size_t,gzFile)", "", "Argument[0]", "Argument[*3].Field[*strm].Field[*next_out]", "value", "dfc-generated"] + - ["", "", True, "gzfwrite", "(voidpc,z_size_t,z_size_t,gzFile)", "", "Argument[**0]", "Argument[*3].Field[**in]", "value", "dfc-generated"] + - ["", "", True, "gzfwrite", "(voidpc,z_size_t,z_size_t,gzFile)", "", "Argument[**0]", "Argument[*3].Field[*strm].Field[**next_in]", "value", "dfc-generated"] + - ["", "", True, "gzfwrite", "(voidpc,z_size_t,z_size_t,gzFile)", "", "Argument[*0]", "Argument[**0]", "value", "dfc-generated"] + - ["", "", True, "gzfwrite", "(voidpc,z_size_t,z_size_t,gzFile)", "", "Argument[*0]", "Argument[*3].Field[**in]", "value", "dfc-generated"] + - ["", "", True, "gzfwrite", "(voidpc,z_size_t,z_size_t,gzFile)", "", "Argument[*0]", "Argument[*3].Field[*strm].Field[**next_in]", "value", "dfc-generated"] + - ["", "", True, "gzgetc", "(gzFile)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "gzgetc_", "(gzFile)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "gzgets", "(gzFile,char *,int)", "", "Argument[*1]", "ReturnValue[*]", "value", "dfc-generated"] + - ["", "", True, "gzgets", "(gzFile,char *,int)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "gzgets", "(gzFile,char *,int)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "gzoffset64", "(gzFile)", "", "Argument[*0].Field[*strm].Field[*avail_in]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "gzoffset", "(gzFile)", "", "Argument[*0].Field[*strm].Field[*avail_in]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "gzopen64", "(const char *,const char *)", "", "Argument[*0]", "ReturnValue[*].Field[**msg]", "taint", "dfc-generated"] + - ["", "", True, "gzopen64", "(const char *,const char *)", "", "Argument[*0]", "ReturnValue[*].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "gzopen64", "(const char *,const char *)", "", "Argument[*1]", "ReturnValue[*].Field[*level]", "taint", "dfc-generated"] + - ["", "", True, "gzopen64", "(const char *,const char *)", "", "Argument[0]", "ReturnValue[*].Field[**msg]", "taint", "dfc-generated"] + - ["", "", True, "gzopen64", "(const char *,const char *)", "", "Argument[0]", "ReturnValue[*].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "gzopen64", "(const char *,const char *)", "", "Argument[1]", "ReturnValue[*].Field[*level]", "taint", "dfc-generated"] + - ["", "", True, "gzopen", "(const char *,const char *)", "", "Argument[*0]", "ReturnValue[*].Field[**msg]", "taint", "dfc-generated"] + - ["", "", True, "gzopen", "(const char *,const char *)", "", "Argument[*0]", "ReturnValue[*].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "gzopen", "(const char *,const char *)", "", "Argument[*1]", "ReturnValue[*].Field[*level]", "taint", "dfc-generated"] + - ["", "", True, "gzopen", "(const char *,const char *)", "", "Argument[0]", "ReturnValue[*].Field[**msg]", "taint", "dfc-generated"] + - ["", "", True, "gzopen", "(const char *,const char *)", "", "Argument[0]", "ReturnValue[*].Field[**path]", "taint", "dfc-generated"] + - ["", "", True, "gzopen", "(const char *,const char *)", "", "Argument[1]", "ReturnValue[*].Field[*level]", "taint", "dfc-generated"] + - ["", "", True, "gzputc", "(gzFile,int)", "", "Argument[1]", "Argument[*0].Field[**in]", "value", "dfc-generated"] + - ["", "", True, "gzputc", "(gzFile,int)", "", "Argument[1]", "Argument[*0].Field[*strm].Field[**next_in]", "value", "dfc-generated"] + - ["", "", True, "gzputc", "(gzFile,int)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "gzputs", "(gzFile,const char *)", "", "Argument[*1]", "Argument[*0].Field[**in]", "value", "dfc-generated"] + - ["", "", True, "gzputs", "(gzFile,const char *)", "", "Argument[*1]", "Argument[*0].Field[*strm].Field[**next_in]", "value", "dfc-generated"] + - ["", "", True, "gzputs", "(gzFile,const char *)", "", "Argument[1]", "Argument[*0].Field[**in]", "taint", "dfc-generated"] + - ["", "", True, "gzputs", "(gzFile,const char *)", "", "Argument[1]", "Argument[*0].Field[*strm].Field[**next_in]", "taint", "dfc-generated"] + - ["", "", True, "gzputs", "(gzFile,const char *)", "", "Argument[1]", "Argument[*0].Field[*strm].Field[*next_in]", "value", "dfc-generated"] + - ["", "", True, "gzread", "(gzFile,voidp,unsigned int)", "", "Argument[*1]", "Argument[*0].Field[*strm].Field[**next_out]", "value", "dfc-generated"] + - ["", "", True, "gzread", "(gzFile,voidp,unsigned int)", "", "Argument[1]", "Argument[*0].Field[*strm].Field[**next_out]", "taint", "dfc-generated"] + - ["", "", True, "gzread", "(gzFile,voidp,unsigned int)", "", "Argument[1]", "Argument[*0].Field[*strm].Field[*next_out]", "value", "dfc-generated"] + - ["", "", True, "gzread", "(gzFile,voidp,unsigned int)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "gzrewind", "(gzFile)", "", "Argument[*0].Field[**path]", "Argument[*0].Field[**msg]", "taint", "dfc-generated"] + - ["", "", True, "gzrewind", "(gzFile)", "", "Argument[*0].Field[*path]", "Argument[*0].Field[**msg]", "taint", "dfc-generated"] + - ["", "", True, "gzseek64", "(gzFile,off64_t,int)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "gzseek64", "(gzFile,off64_t,int)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "gzseek64", "(gzFile,off64_t,int)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "gzseek", "(gzFile,off_t,int)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "gzseek", "(gzFile,off_t,int)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"] + - ["", "", True, "gzseek", "(gzFile,off_t,int)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "gzsetparams", "(gzFile,int,int)", "", "Argument[1]", "Argument[*0].Field[*level]", "value", "dfc-generated"] + - ["", "", True, "gzsetparams", "(gzFile,int,int)", "", "Argument[2]", "Argument[*0].Field[*strategy]", "value", "dfc-generated"] + - ["", "", True, "gztell64", "(gzFile)", "", "Argument[*0].Field[*skip]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "gztell64", "(gzFile)", "", "Argument[*0].Field[*x].Field[*pos]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "gztell", "(gzFile)", "", "Argument[*0].Field[*skip]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "gztell", "(gzFile)", "", "Argument[*0].Field[*x].Field[*pos]", "ReturnValue", "taint", "dfc-generated"] + - ["", "", True, "gzungetc", "(int,gzFile)", "", "Argument[0]", "Argument[*1].Field[*x].Field[**next]", "value", "dfc-generated"] + - ["", "", True, "gzungetc", "(int,gzFile)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "gzvprintf", "(gzFile,const char *,va_list)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "gzwrite", "(gzFile,voidpc,unsigned int)", "", "Argument[**1]", "Argument[*0].Field[**in]", "value", "dfc-generated"] + - ["", "", True, "gzwrite", "(gzFile,voidpc,unsigned int)", "", "Argument[**1]", "Argument[*0].Field[*strm].Field[**next_in]", "value", "dfc-generated"] + - ["", "", True, "gzwrite", "(gzFile,voidpc,unsigned int)", "", "Argument[*1]", "Argument[**1]", "value", "dfc-generated"] + - ["", "", True, "gzwrite", "(gzFile,voidpc,unsigned int)", "", "Argument[*1]", "Argument[*0].Field[**in]", "value", "dfc-generated"] + - ["", "", True, "gzwrite", "(gzFile,voidpc,unsigned int)", "", "Argument[*1]", "Argument[*0].Field[*strm].Field[**next_in]", "value", "dfc-generated"] + - ["", "", True, "gzwrite", "(gzFile,voidpc,unsigned int)", "", "Argument[2]", "ReturnValue", "value", "df-generated"] + - ["", "", True, "inflateCodesUsed", "(z_streamp)", "", "Argument[*0].Field[**state].Field[*next]", "ReturnValue", "value", "dfc-generated"] + - ["", "", True, "inflateCopy", "(z_streamp,z_streamp)", "", "Argument[*1]", "Argument[*0]", "value", "df-generated"] + - ["", "", True, "inflateCopy", "(z_streamp,z_streamp)", "", "Argument[0]", "Argument[*0].Field[**state].Field[*strm]", "value", "dfc-generated"] + - ["", "", True, "inflateCopy", "(z_streamp,z_streamp)", "", "Argument[1]", "Argument[*0].Field[**state].Field[**strm]", "taint", "dfc-generated"] + - ["", "", True, "inflateCopy", "(z_streamp,z_streamp)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"] + - ["", "", True, "inflateGetDictionary", "(z_streamp,Bytef *,uInt *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"] + - ["", "", True, "inflateGetDictionary", "(z_streamp,Bytef *,uInt *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"] + - ["", "", True, "inflateMark", "(z_streamp)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"] + - ["", "", True, "inflate_fast", "(z_streamp,unsigned int)", "", "Argument[1]", "Argument[*0].Field[**next_out]", "taint", "dfc-generated"] + - ["", "", True, "inflate_table", "(codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *)", "", "Argument[*3]", "Argument[**3].Field[*val]", "taint", "dfc-generated"] + - ["", "", True, "inflate_table", "(codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *)", "", "Argument[*3]", "Argument[**3]", "taint", "dfc-generated"] + - ["", "", True, "inflate_table", "(codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *)", "", "Argument[3]", "Argument[**3].Field[*val]", "taint", "dfc-generated"] + - ["", "", True, "inflate_table", "(codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *)", "", "Argument[3]", "Argument[**3]", "taint", "dfc-generated"] + - ["", "", True, "inflate_table", "(codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "uncompress2", "(Bytef *,uLongf *,const Bytef *,uLong *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "uncompress2", "(Bytef *,uLongf *,const Bytef *,uLong *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"] + - ["", "", True, "uncompress", "(Bytef *,uLongf *,const Bytef *,uLong)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"] + - ["", "", True, "zError", "(int)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"] From 458a9b03594d7462476a0fbea3bf1a7285256f1b Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Fri, 13 Jun 2025 11:06:45 +0100 Subject: [PATCH 059/150] C++: Add change note. --- cpp/ql/src/change-notes/2025-06-13-mad-summaries.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 cpp/ql/src/change-notes/2025-06-13-mad-summaries.md diff --git a/cpp/ql/src/change-notes/2025-06-13-mad-summaries.md b/cpp/ql/src/change-notes/2025-06-13-mad-summaries.md new file mode 100644 index 00000000000..f70b9037cd4 --- /dev/null +++ b/cpp/ql/src/change-notes/2025-06-13-mad-summaries.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added flow model for the following libraries: `madler/zlib`, `google/brotli`, `libidn/libidn2`, `libssh2/libssh2/`, `nghttp2/nghttp2`, `libuv/libuv/`, and `curl/curl`. This may result in more alerts when running queries on codebases that use these libraries. \ No newline at end of file From c14a4a66d5f209d19689fba4dbd7f6d84696f3de Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Fri, 13 Jun 2025 11:41:01 +0100 Subject: [PATCH 060/150] C++: Accept test changes. Nothing exciting here. --- .../dataflow/external-models/flow.expected | 24 +- .../external-models/validatemodels.expected | 867 +++ .../taint-tests/test_mad-signatures.expected | 6088 +++++++++++++++++ 3 files changed, 6967 insertions(+), 12 deletions(-) diff --git a/cpp/ql/test/library-tests/dataflow/external-models/flow.expected b/cpp/ql/test/library-tests/dataflow/external-models/flow.expected index a4f7767db56..385af7a4e2c 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/flow.expected +++ b/cpp/ql/test/library-tests/dataflow/external-models/flow.expected @@ -10,31 +10,31 @@ edges | asio_streams.cpp:100:44:100:62 | call to buffer | asio_streams.cpp:103:29:103:39 | *send_buffer | provenance | Sink:MaD:6 | | asio_streams.cpp:100:64:100:71 | *send_str | asio_streams.cpp:56:18:56:23 | [summary param] *0 in buffer | provenance | | | asio_streams.cpp:100:64:100:71 | *send_str | asio_streams.cpp:100:44:100:62 | call to buffer | provenance | MaD:10 | -| test.cpp:4:5:4:17 | [summary param] 0 in ymlStepManual | test.cpp:4:5:4:17 | [summary] to write: ReturnValue in ymlStepManual | provenance | MaD:23508 | -| test.cpp:5:5:5:20 | [summary param] 0 in ymlStepGenerated | test.cpp:5:5:5:20 | [summary] to write: ReturnValue in ymlStepGenerated | provenance | MaD:23509 | -| test.cpp:6:5:6:27 | [summary param] 0 in ymlStepManual_with_body | test.cpp:6:5:6:27 | [summary] to write: ReturnValue in ymlStepManual_with_body | provenance | MaD:23510 | +| test.cpp:4:5:4:17 | [summary param] 0 in ymlStepManual | test.cpp:4:5:4:17 | [summary] to write: ReturnValue in ymlStepManual | provenance | MaD:26955 | +| test.cpp:5:5:5:20 | [summary param] 0 in ymlStepGenerated | test.cpp:5:5:5:20 | [summary] to write: ReturnValue in ymlStepGenerated | provenance | MaD:26956 | +| test.cpp:6:5:6:27 | [summary param] 0 in ymlStepManual_with_body | test.cpp:6:5:6:27 | [summary] to write: ReturnValue in ymlStepManual_with_body | provenance | MaD:26957 | | test.cpp:7:47:7:52 | value2 | test.cpp:7:64:7:69 | value2 | provenance | | | test.cpp:7:64:7:69 | value2 | test.cpp:7:5:7:30 | *ymlStepGenerated_with_body | provenance | | -| test.cpp:10:10:10:18 | call to ymlSource | test.cpp:10:10:10:18 | call to ymlSource | provenance | Src:MaD:23506 | -| test.cpp:10:10:10:18 | call to ymlSource | test.cpp:14:10:14:10 | x | provenance | Sink:MaD:23507 | +| test.cpp:10:10:10:18 | call to ymlSource | test.cpp:10:10:10:18 | call to ymlSource | provenance | Src:MaD:26953 | +| test.cpp:10:10:10:18 | call to ymlSource | test.cpp:14:10:14:10 | x | provenance | Sink:MaD:26954 | | test.cpp:10:10:10:18 | call to ymlSource | test.cpp:17:24:17:24 | x | provenance | | | test.cpp:10:10:10:18 | call to ymlSource | test.cpp:21:27:21:27 | x | provenance | | | test.cpp:10:10:10:18 | call to ymlSource | test.cpp:25:35:25:35 | x | provenance | | | test.cpp:10:10:10:18 | call to ymlSource | test.cpp:32:41:32:41 | x | provenance | | | test.cpp:17:10:17:22 | call to ymlStepManual | test.cpp:17:10:17:22 | call to ymlStepManual | provenance | | -| test.cpp:17:10:17:22 | call to ymlStepManual | test.cpp:18:10:18:10 | y | provenance | Sink:MaD:23507 | +| test.cpp:17:10:17:22 | call to ymlStepManual | test.cpp:18:10:18:10 | y | provenance | Sink:MaD:26954 | | test.cpp:17:24:17:24 | x | test.cpp:4:5:4:17 | [summary param] 0 in ymlStepManual | provenance | | -| test.cpp:17:24:17:24 | x | test.cpp:17:10:17:22 | call to ymlStepManual | provenance | MaD:23508 | +| test.cpp:17:24:17:24 | x | test.cpp:17:10:17:22 | call to ymlStepManual | provenance | MaD:26955 | | test.cpp:21:10:21:25 | call to ymlStepGenerated | test.cpp:21:10:21:25 | call to ymlStepGenerated | provenance | | -| test.cpp:21:10:21:25 | call to ymlStepGenerated | test.cpp:22:10:22:10 | z | provenance | Sink:MaD:23507 | +| test.cpp:21:10:21:25 | call to ymlStepGenerated | test.cpp:22:10:22:10 | z | provenance | Sink:MaD:26954 | | test.cpp:21:27:21:27 | x | test.cpp:5:5:5:20 | [summary param] 0 in ymlStepGenerated | provenance | | -| test.cpp:21:27:21:27 | x | test.cpp:21:10:21:25 | call to ymlStepGenerated | provenance | MaD:23509 | +| test.cpp:21:27:21:27 | x | test.cpp:21:10:21:25 | call to ymlStepGenerated | provenance | MaD:26956 | | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | provenance | | -| test.cpp:25:11:25:33 | call to ymlStepManual_with_body | test.cpp:26:10:26:11 | y2 | provenance | Sink:MaD:23507 | +| test.cpp:25:11:25:33 | call to ymlStepManual_with_body | test.cpp:26:10:26:11 | y2 | provenance | Sink:MaD:26954 | | test.cpp:25:35:25:35 | x | test.cpp:6:5:6:27 | [summary param] 0 in ymlStepManual_with_body | provenance | | -| test.cpp:25:35:25:35 | x | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | provenance | MaD:23510 | +| test.cpp:25:35:25:35 | x | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | provenance | MaD:26957 | | test.cpp:32:11:32:36 | call to ymlStepGenerated_with_body | test.cpp:32:11:32:36 | call to ymlStepGenerated_with_body | provenance | | -| test.cpp:32:11:32:36 | call to ymlStepGenerated_with_body | test.cpp:33:10:33:11 | z2 | provenance | Sink:MaD:23507 | +| test.cpp:32:11:32:36 | call to ymlStepGenerated_with_body | test.cpp:33:10:33:11 | z2 | provenance | Sink:MaD:26954 | | test.cpp:32:41:32:41 | x | test.cpp:7:47:7:52 | value2 | provenance | | | test.cpp:32:41:32:41 | x | test.cpp:32:11:32:36 | call to ymlStepGenerated_with_body | provenance | | | windows.cpp:17:8:17:25 | [summary param] *0 in CommandLineToArgvA | windows.cpp:17:8:17:25 | [summary] to write: ReturnValue[**] in CommandLineToArgvA | provenance | MaD:341 | diff --git a/cpp/ql/test/library-tests/dataflow/external-models/validatemodels.expected b/cpp/ql/test/library-tests/dataflow/external-models/validatemodels.expected index a1511035d9e..8f06adc1826 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/validatemodels.expected +++ b/cpp/ql/test/library-tests/dataflow/external-models/validatemodels.expected @@ -15,6 +15,7 @@ | Dubious member name "operator[]" in summary model. | | Dubious signature "(..(*)(..))" in summary model. | | Dubious signature "(..(*)(..),..(*)(..),..(*)(..),..(*)(..))" in summary model. | +| Dubious signature "(..(*)(..),..(*)(..),..(*)(..),void *)" in summary model. | | Dubious signature "(..(*)(..),d2i_of_void *,BIO *,void **)" in summary model. | | Dubious signature "(..(*)(..),d2i_of_void *,FILE *,void **)" in summary model. | | Dubious signature "(..(*)(..),void *)" in summary model. | @@ -137,7 +138,12 @@ | Dubious signature "(BASIC_CONSTRAINTS *)" in summary model. | | Dubious signature "(BASIC_CONSTRAINTS **,const unsigned char **,long)" in summary model. | | Dubious signature "(BIGNUM *)" in summary model. | +| Dubious signature "(BIGNUM **)" in summary model. | +| Dubious signature "(BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,BN_CTX *)" in summary model. | +| Dubious signature "(BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,int,BN_CTX *)" in summary model. | +| Dubious signature "(BIGNUM **,EVP_PKEY *,const unsigned char *,size_t)" in summary model. | | Dubious signature "(BIGNUM **,const char *)" in summary model. | +| Dubious signature "(BIGNUM **,uint8_t[32],uint8_t[32])" in summary model. | | Dubious signature "(BIGNUM *,ASN1_INTEGER *)" in summary model. | | Dubious signature "(BIGNUM *,BIGNUM *)" in summary model. | | Dubious signature "(BIGNUM *,BIGNUM *,BIGNUM *,BIGNUM *,BIGNUM *,const BIGNUM *,const BIGNUM *,BN_CTX *,BN_GENCB *)" in summary model. | @@ -359,6 +365,25 @@ | Dubious signature "(BN_MONT_CTX *,const BIGNUM *,int,const unsigned char *,size_t,uint32_t,uint32_t)" in summary model. | | Dubious signature "(BN_RECP_CTX *,const BIGNUM *,BN_CTX *)" in summary model. | | Dubious signature "(BUF_MEM *,size_t)" in summary model. | +| Dubious signature "(BrotliBitReader *const,uint64_t,uint64_t *)" in summary model. | +| Dubious signature "(BrotliDecoderState *,BrotliDecoderStateInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[])" in summary model. | +| Dubious signature "(BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *)" in summary model. | +| Dubious signature "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *)" in summary model. | +| Dubious signature "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)" in summary model. | +| Dubious signature "(BrotliDecoderStateInternal *,HuffmanTreeGroup *,uint64_t,uint64_t,uint64_t)" in summary model. | +| Dubious signature "(BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *)" in summary model. | +| Dubious signature "(BrotliDistanceParams *,uint32_t,uint32_t,int)" in summary model. | +| Dubious signature "(BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)" in summary model. | +| Dubious signature "(BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderParameter,uint32_t)" in summary model. | +| Dubious signature "(BrotliEncoderState *,BrotliEncoderStateInternal *,const BrotliEncoderPreparedDictionary *)" in summary model. | +| Dubious signature "(BrotliEncoderState *,BrotliEncoderStateInternal *,size_t *)" in summary model. | +| Dubious signature "(BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *)" in summary model. | +| Dubious signature "(BrotliSharedDictionaryInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[])" in summary model. | +| Dubious signature "(BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *)" in summary model. | +| Dubious signature "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)" in summary model. | +| Dubious signature "(Bytef *,uLongf *,const Bytef *,uLong *)" in summary model. | +| Dubious signature "(Bytef *,uLongf *,const Bytef *,uLong)" in summary model. | +| Dubious signature "(Bytef *,uLongf *,const Bytef *,uLong,int)" in summary model. | | Dubious signature "(CA_DB *,time_t *)" in summary model. | | Dubious signature "(CAtlFile &)" in summary model. | | Dubious signature "(CCM128_CONTEXT *,const unsigned char *,size_t)" in summary model. | @@ -454,6 +479,142 @@ | Dubious signature "(CT_POLICY_EVAL_CTX *,CTLOG_STORE *)" in summary model. | | Dubious signature "(CT_POLICY_EVAL_CTX *,X509 *)" in summary model. | | Dubious signature "(CT_POLICY_EVAL_CTX *,uint64_t)" in summary model. | +| Dubious signature "(CURL *)" in summary model. | +| Dubious signature "(CURL *,GlobalConfig *,const char *,CURLoption,curl_slist *)" in summary model. | +| Dubious signature "(CURL *,char **,const char *)" in summary model. | +| Dubious signature "(CURL *,const char *,size_t,unsigned int,int,curl_header **)" in summary model. | +| Dubious signature "(CURL *,const void *,size_t,size_t *)" in summary model. | +| Dubious signature "(CURL *,const void *,size_t,size_t *,curl_off_t,unsigned int)" in summary model. | +| Dubious signature "(CURL *,curl_mimepart *,curl_httppost *,curl_read_callback)" in summary model. | +| Dubious signature "(CURL *,int)" in summary model. | +| Dubious signature "(CURL *,tool_mime *,curl_mime **)" in summary model. | +| Dubious signature "(CURL *,unsigned int,int,curl_header *)" in summary model. | +| Dubious signature "(CURL *,void *,size_t,size_t *)" in summary model. | +| Dubious signature "(CURL *,void *,size_t,size_t *,const curl_ws_frame **)" in summary model. | +| Dubious signature "(CURLM *,CURL *)" in summary model. | +| Dubious signature "(CURLM *,curl_socket_t,int *)" in summary model. | +| Dubious signature "(CURLM *,curl_socket_t,int,int *)" in summary model. | +| Dubious signature "(CURLM *,int *)" in summary model. | +| Dubious signature "(CURLSH *,CURLSHoption,...)" in summary model. | +| Dubious signature "(CURLU *,CURLUPart,const char *,unsigned int)" in summary model. | +| Dubious signature "(CURLU *,const char *)" in summary model. | +| Dubious signature "(CURLU *,const char *,char **,OperationConfig *)" in summary model. | +| Dubious signature "(CompoundDictionary *,const PreparedDictionary *)" in summary model. | +| Dubious signature "(Curl_cfilter *)" in summary model. | +| Dubious signature "(Curl_cfilter **,Curl_easy *)" in summary model. | +| Dubious signature "(Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int)" in summary model. | +| Dubious signature "(Curl_cfilter **,const Curl_cftype *,void *)" in summary model. | +| Dubious signature "(Curl_cfilter *,Curl_cfilter *)" in summary model. | +| Dubious signature "(Curl_cfilter *,Curl_easy *)" in summary model. | +| Dubious signature "(Curl_cfilter *,Curl_easy *,bool,int,int,void *)" in summary model. | +| Dubious signature "(Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *)" in summary model. | +| Dubious signature "(Curl_cfilter *,Curl_easy *,const char *,void **)" in summary model. | +| Dubious signature "(Curl_cfilter *,Curl_easy *,curl_socket_t *,const Curl_sockaddr_ex **,ip_quadruple *)" in summary model. | +| Dubious signature "(Curl_cfilter *,Curl_easy *,easy_pollset *)" in summary model. | +| Dubious signature "(Curl_cfilter *,Curl_easy *,ssl_connect_data *,const unsigned char *,size_t)" in summary model. | +| Dubious signature "(Curl_cfilter *,Curl_easy *,timediff_t)" in summary model. | +| Dubious signature "(Curl_cfilter *,const char **,int *,bool *)" in summary model. | +| Dubious signature "(Curl_creader **,Curl_easy *,const Curl_crtype *,Curl_creader_phase)" in summary model. | +| Dubious signature "(Curl_cwriter **,Curl_easy *,const Curl_cwtype *,Curl_cwriter_phase)" in summary model. | +| Dubious signature "(Curl_easy *)" in summary model. | +| Dubious signature "(Curl_easy **)" in summary model. | +| Dubious signature "(Curl_easy *,CURLcode,bool)" in summary model. | +| Dubious signature "(Curl_easy *,CURLoption,va_list)" in summary model. | +| Dubious signature "(Curl_easy *,CookieInfo *,bool,bool,const char *,const char *,const char *,bool)" in summary model. | +| Dubious signature "(Curl_easy *,CookieInfo *,const char *,const char *,bool,Curl_llist *)" in summary model. | +| Dubious signature "(Curl_easy *,Curl_addrinfo *,const char *,size_t,int,bool)" in summary model. | +| Dubious signature "(Curl_easy *,Curl_chunker *)" in summary model. | +| Dubious signature "(Curl_easy *,Curl_chunker *,bool)" in summary model. | +| Dubious signature "(Curl_easy *,Curl_chunker *,char *,size_t,size_t *)" in summary model. | +| Dubious signature "(Curl_easy *,Curl_creader *)" in summary model. | +| Dubious signature "(Curl_easy *,Curl_cwriter *)" in summary model. | +| Dubious signature "(Curl_easy *,Curl_dns_entry **)" in summary model. | +| Dubious signature "(Curl_easy *,altsvcinfo *,const char *,alpnid,const char *,unsigned short)" in summary model. | +| Dubious signature "(Curl_easy *,bool *)" in summary model. | +| Dubious signature "(Curl_easy *,bool *,bool *)" in summary model. | +| Dubious signature "(Curl_easy *,bool)" in summary model. | +| Dubious signature "(Curl_easy *,bool,dynbuf *)" in summary model. | +| Dubious signature "(Curl_easy *,char **)" in summary model. | +| Dubious signature "(Curl_easy *,char **,size_t *)" in summary model. | +| Dubious signature "(Curl_easy *,char *,size_t,size_t *,bool *)" in summary model. | +| Dubious signature "(Curl_easy *,connectdata *)" in summary model. | +| Dubious signature "(Curl_easy *,connectdata *,Curl_cpool_conn_do_cb *,void *)" in summary model. | +| Dubious signature "(Curl_easy *,connectdata *,bool)" in summary model. | +| Dubious signature "(Curl_easy *,connectdata *,const char **,Curl_HttpReq *)" in summary model. | +| Dubious signature "(Curl_easy *,connectdata *,curl_socket_t *)" in summary model. | +| Dubious signature "(Curl_easy *,connectdata *,curltime *)" in summary model. | +| Dubious signature "(Curl_easy *,connectdata *,int)" in summary model. | +| Dubious signature "(Curl_easy *,connectdata *,int,Curl_cfilter *)" in summary model. | +| Dubious signature "(Curl_easy *,connectdata *,int,const Curl_dns_entry *)" in summary model. | +| Dubious signature "(Curl_easy *,connectdata *,int,const Curl_dns_entry *,int)" in summary model. | +| Dubious signature "(Curl_easy *,connectdata *,int,const char *,size_t)" in summary model. | +| Dubious signature "(Curl_easy *,connectdata *,int,curl_socket_t *)" in summary model. | +| Dubious signature "(Curl_easy *,const Curl_addrinfo *,Curl_sockaddr_ex *,int,curl_socket_t *)" in summary model. | +| Dubious signature "(Curl_easy *,const Curl_crtype *)" in summary model. | +| Dubious signature "(Curl_easy *,const Curl_cwtype *)" in summary model. | +| Dubious signature "(Curl_easy *,const bufref *,ntlmdata *)" in summary model. | +| Dubious signature "(Curl_easy *,const char *)" in summary model. | +| Dubious signature "(Curl_easy *,const char *,CookieInfo *,bool)" in summary model. | +| Dubious signature "(Curl_easy *,const char *,FILE **,char **)" in summary model. | +| Dubious signature "(Curl_easy *,const char *,const char *,ntlmdata *,bufref *)" in summary model. | +| Dubious signature "(Curl_easy *,const char *,int,Curl_dns_entry **,timediff_t)" in summary model. | +| Dubious signature "(Curl_easy *,const char *,int,bool,Curl_dns_entry **)" in summary model. | +| Dubious signature "(Curl_easy *,const char *,size_t,bool)" in summary model. | +| Dubious signature "(Curl_easy *,const char *,size_t,size_t *)" in summary model. | +| Dubious signature "(Curl_easy *,const void *,size_t,bool,size_t *)" in summary model. | +| Dubious signature "(Curl_easy *,const void *,size_t,size_t *)" in summary model. | +| Dubious signature "(Curl_easy *,curl_mimepart *,const curl_mimepart *)" in summary model. | +| Dubious signature "(Curl_easy *,curl_off_t)" in summary model. | +| Dubious signature "(Curl_easy *,curltime *)" in summary model. | +| Dubious signature "(Curl_easy *,curltime *,bool)" in summary model. | +| Dubious signature "(Curl_easy *,curltime)" in summary model. | +| Dubious signature "(Curl_easy *,dynbuf *)" in summary model. | +| Dubious signature "(Curl_easy *,easy_pollset *,..(*)(..))" in summary model. | +| Dubious signature "(Curl_easy *,easy_pollset *,curl_socket_t,bool *,bool *)" in summary model. | +| Dubious signature "(Curl_easy *,easy_pollset *,curl_socket_t,bool,bool)" in summary model. | +| Dubious signature "(Curl_easy *,easy_pollset *,curl_socket_t,int,int)" in summary model. | +| Dubious signature "(Curl_easy *,int)" in summary model. | +| Dubious signature "(Curl_easy *,int,Curl_addrinfo *)" in summary model. | +| Dubious signature "(Curl_easy *,int,bool,bool *)" in summary model. | +| Dubious signature "(Curl_easy *,int,const char **,const char **,int *)" in summary model. | +| Dubious signature "(Curl_easy *,int,curltime *)" in summary model. | +| Dubious signature "(Curl_easy *,int,pingpong *,int *,size_t *)" in summary model. | +| Dubious signature "(Curl_easy *,pingpong *)" in summary model. | +| Dubious signature "(Curl_easy *,pingpong *,bool)" in summary model. | +| Dubious signature "(Curl_easy *,pingpong *,const char *,va_list)" in summary model. | +| Dubious signature "(Curl_easy *,pingpong *,curl_socket_t *)" in summary model. | +| Dubious signature "(Curl_easy *,size_t,bool)" in summary model. | +| Dubious signature "(Curl_easy *,size_t,char **)" in summary model. | +| Dubious signature "(Curl_easy *,ssize_t *,int *)" in summary model. | +| Dubious signature "(Curl_easy *,timerid,curltime)" in summary model. | +| Dubious signature "(Curl_easy *,unsigned char *,size_t)" in summary model. | +| Dubious signature "(Curl_easy *,unsigned int)" in summary model. | +| Dubious signature "(Curl_easy *,void **)" in summary model. | +| Dubious signature "(Curl_easy *,void **,void *)" in summary model. | +| Dubious signature "(Curl_hash *)" in summary model. | +| Dubious signature "(Curl_hash *,Curl_hash_iterator *)" in summary model. | +| Dubious signature "(Curl_hash *,curl_off_t,void *)" in summary model. | +| Dubious signature "(Curl_hash *,size_t)" in summary model. | +| Dubious signature "(Curl_hash *,size_t,Curl_hash_dtor)" in summary model. | +| Dubious signature "(Curl_hash *,size_t,hash_function,comp_function,Curl_hash_dtor)" in summary model. | +| Dubious signature "(Curl_hash *,void *,..(*)(..))" in summary model. | +| Dubious signature "(Curl_hash *,void *,size_t,void *)" in summary model. | +| Dubious signature "(Curl_hash *,void *,size_t,void *,Curl_hash_elem_dtor)" in summary model. | +| Dubious signature "(Curl_hash_iterator *)" in summary model. | +| Dubious signature "(Curl_llist *)" in summary model. | +| Dubious signature "(Curl_llist *,Curl_llist_dtor)" in summary model. | +| Dubious signature "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)" in summary model. | +| Dubious signature "(Curl_llist *,const void *,Curl_llist_node *)" in summary model. | +| Dubious signature "(Curl_llist_node *)" in summary model. | +| Dubious signature "(Curl_multi *)" in summary model. | +| Dubious signature "(Curl_multi *,Curl_easy *,connectdata *)" in summary model. | +| Dubious signature "(Curl_multi *,Curl_easy *,easy_pollset *,easy_pollset *)" in summary model. | +| Dubious signature "(Curl_sockaddr_ex *,const Curl_addrinfo *,int)" in summary model. | +| Dubious signature "(Curl_tree *)" in summary model. | +| Dubious signature "(Curl_tree *,Curl_tree *,Curl_tree **)" in summary model. | +| Dubious signature "(Curl_tree *,void *)" in summary model. | +| Dubious signature "(Curl_waitfds *,curl_waitfd *,unsigned int)" in summary model. | +| Dubious signature "(Curl_waitfds *,easy_pollset *)" in summary model. | | Dubious signature "(DES_LONG *,DES_key_schedule *,DES_key_schedule *,DES_key_schedule *)" in summary model. | | Dubious signature "(DES_cblock *)" in summary model. | | Dubious signature "(DH *)" in summary model. | @@ -583,6 +744,8 @@ | Dubious signature "(EVP_CIPHER *,int)" in summary model. | | Dubious signature "(EVP_CIPHER *,unsigned long)" in summary model. | | Dubious signature "(EVP_CIPHER_CTX *)" in summary model. | +| Dubious signature "(EVP_CIPHER_CTX **,..(*)(..),int,unsigned char *,size_t,int)" in summary model. | +| Dubious signature "(EVP_CIPHER_CTX **,..(*)(..),unsigned char *,unsigned char *,int)" in summary model. | | Dubious signature "(EVP_CIPHER_CTX *,ASN1_TYPE *)" in summary model. | | Dubious signature "(EVP_CIPHER_CTX *,ASN1_TYPE *,evp_cipher_aead_asn1_params *)" in summary model. | | Dubious signature "(EVP_CIPHER_CTX *,X509_ALGOR **)" in summary model. | @@ -619,12 +782,19 @@ | Dubious signature "(EVP_KEYMGMT *,void *,char *,size_t)" in summary model. | | Dubious signature "(EVP_MAC *)" in summary model. | | Dubious signature "(EVP_MAC_CTX *)" in summary model. | +| Dubious signature "(EVP_MAC_CTX **)" in summary model. | | Dubious signature "(EVP_MAC_CTX **,const OSSL_PARAM[],const char *,const char *,const char *,OSSL_LIB_CTX *)" in summary model. | +| Dubious signature "(EVP_MAC_CTX **,const void *,size_t)" in summary model. | +| Dubious signature "(EVP_MAC_CTX **,void *)" in summary model. | +| Dubious signature "(EVP_MAC_CTX **,void *,size_t)" in summary model. | | Dubious signature "(EVP_MAC_CTX *,const OSSL_PARAM[],const char *,const char *,const char *,const char *,const unsigned char *,size_t)" in summary model. | | Dubious signature "(EVP_MD *,..(*)(..))" in summary model. | | Dubious signature "(EVP_MD *,int)" in summary model. | | Dubious signature "(EVP_MD *,unsigned long)" in summary model. | | Dubious signature "(EVP_MD_CTX *)" in summary model. | +| Dubious signature "(EVP_MD_CTX **)" in summary model. | +| Dubious signature "(EVP_MD_CTX **,const void *,size_t)" in summary model. | +| Dubious signature "(EVP_MD_CTX **,unsigned char *)" in summary model. | | Dubious signature "(EVP_MD_CTX *,..(*)(..))" in summary model. | | Dubious signature "(EVP_MD_CTX *,BIO *,X509_ALGOR *)" in summary model. | | Dubious signature "(EVP_MD_CTX *,EVP_MD *)" in summary model. | @@ -649,10 +819,15 @@ | Dubious signature "(EVP_MD_CTX *,unsigned char *,unsigned int *,EVP_PKEY *)" in summary model. | | Dubious signature "(EVP_MD_CTX *,unsigned char *,unsigned int *,EVP_PKEY *,OSSL_LIB_CTX *,const char *)" in summary model. | | Dubious signature "(EVP_PKEY *)" in summary model. | +| Dubious signature "(EVP_PKEY **,LIBSSH2_SESSION *,const char *,const unsigned char *)" in summary model. | +| Dubious signature "(EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *)" in summary model. | | Dubious signature "(EVP_PKEY **,const EVP_PKEY *)" in summary model. | | Dubious signature "(EVP_PKEY **,const char *,const char *,const char *,int,OSSL_LIB_CTX *,const char *)" in summary model. | | Dubious signature "(EVP_PKEY **,const unsigned char **,long)" in summary model. | | Dubious signature "(EVP_PKEY **,const unsigned char **,long,OSSL_LIB_CTX *,const char *)" in summary model. | +| Dubious signature "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *)" in summary model. | +| Dubious signature "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *)" in summary model. | +| Dubious signature "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *)" in summary model. | | Dubious signature "(EVP_PKEY *,DH *,dh_st *)" in summary model. | | Dubious signature "(EVP_PKEY *,DSA *,dsa_st *)" in summary model. | | Dubious signature "(EVP_PKEY *,EC_KEY *,ec_key_st *)" in summary model. | @@ -801,6 +976,11 @@ | Dubious signature "(FILE *,const X509_PUBKEY *)" in summary model. | | Dubious signature "(FILE *,const X509_REQ *)" in summary model. | | Dubious signature "(FILE *,const X509_SIG *)" in summary model. | +| Dubious signature "(FILE *,const char *,const char *,const char *,...)" in summary model. | +| Dubious signature "(FILE *,const char *,const char *,const char *,const char *const *)" in summary model. | +| Dubious signature "(FILE *,const char *,const char *,const char *,const char *const *,size_t)" in summary model. | +| Dubious signature "(FILE *,const char *,const char *,const char *,va_list)" in summary model. | +| Dubious signature "(FILE *,const char *,va_list)" in summary model. | | Dubious signature "(FILE *,int *)" in summary model. | | Dubious signature "(FILE *,int,char *)" in summary model. | | Dubious signature "(FILE *,lemon *,char *,int *)" in summary model. | @@ -829,14 +1009,27 @@ | Dubious signature "(GENERAL_SUBTREE *)" in summary model. | | Dubious signature "(GOST_KX_MESSAGE *)" in summary model. | | Dubious signature "(GOST_KX_MESSAGE **,const unsigned char **,long)" in summary model. | +| Dubious signature "(GlobalConfig *,char **,const char *)" in summary model. | +| Dubious signature "(GlobalConfig *,const char *)" in summary model. | +| Dubious signature "(GlobalConfig *,const char *,dynbuf *,bool *)" in summary model. | +| Dubious signature "(GlobalConfig *,int,char *[])" in summary model. | +| Dubious signature "(GlobalConfig *,timeval *,bool)" in summary model. | | Dubious signature "(HMAC_CTX *,HMAC_CTX *)" in summary model. | | Dubious signature "(HMAC_CTX *,const void *,int,const EVP_MD *)" in summary model. | | Dubious signature "(HMAC_CTX *,const void *,int,const EVP_MD *,ENGINE *)" in summary model. | | Dubious signature "(HMAC_CTX *,unsigned long)" in summary model. | +| Dubious signature "(HMAC_context *,unsigned char *)" in summary model. | | Dubious signature "(HT *)" in summary model. | | Dubious signature "(HT *,..(*)(..),void *)" in summary model. | | Dubious signature "(HT *,HT_KEY *,HT_VALUE *,HT_VALUE **)" in summary model. | | Dubious signature "(HT *,size_t,..(*)(..),void *)" in summary model. | +| Dubious signature "(HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)" in summary model. | +| Dubious signature "(HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)" in summary model. | +| Dubious signature "(HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)" in summary model. | +| Dubious signature "(HuffmanCode *,const uint8_t *const,uint16_t *)" in summary model. | +| Dubious signature "(HuffmanCode *,int,const uint16_t *const,uint16_t *)" in summary model. | +| Dubious signature "(HuffmanCode *,int,uint16_t *,uint32_t)" in summary model. | +| Dubious signature "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)" in summary model. | | Dubious signature "(IPAddressChoice *)" in summary model. | | Dubious signature "(IPAddressChoice **,const unsigned char **,long)" in summary model. | | Dubious signature "(IPAddressFamily *)" in summary model. | @@ -905,6 +1098,108 @@ | Dubious signature "(KECCAK1600_CTX *,unsigned char *,size_t)" in summary model. | | Dubious signature "(KECCAK1600_CTX *,unsigned char,size_t)" in summary model. | | Dubious signature "(KECCAK1600_CTX *,unsigned char,size_t,size_t)" in summary model. | +| Dubious signature "(LIBSSH2_AGENT *)" in summary model. | +| Dubious signature "(LIBSSH2_AGENT *,const char *)" in summary model. | +| Dubious signature "(LIBSSH2_AGENT *,const char *,libssh2_agent_publickey *)" in summary model. | +| Dubious signature "(LIBSSH2_AGENT *,libssh2_agent_publickey **,libssh2_agent_publickey *)" in summary model. | +| Dubious signature "(LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int)" in summary model. | +| Dubious signature "(LIBSSH2_CHANNEL *)" in summary model. | +| Dubious signature "(LIBSSH2_CHANNEL *,char **,size_t *,char **,size_t *,char **,size_t *)" in summary model. | +| Dubious signature "(LIBSSH2_CHANNEL *,const char *,size_t)" in summary model. | +| Dubious signature "(LIBSSH2_CHANNEL *,const char *,size_t,const char *,size_t)" in summary model. | +| Dubious signature "(LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int)" in summary model. | +| Dubious signature "(LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int)" in summary model. | +| Dubious signature "(LIBSSH2_CHANNEL *,int)" in summary model. | +| Dubious signature "(LIBSSH2_CHANNEL *,int,char *,size_t)" in summary model. | +| Dubious signature "(LIBSSH2_CHANNEL *,int,const char *,const char *,int)" in summary model. | +| Dubious signature "(LIBSSH2_CHANNEL *,int,const char *,size_t)" in summary model. | +| Dubious signature "(LIBSSH2_CHANNEL *,int,const unsigned char *,size_t)" in summary model. | +| Dubious signature "(LIBSSH2_CHANNEL *,int,int,int,int)" in summary model. | +| Dubious signature "(LIBSSH2_CHANNEL *,uint32_t,unsigned char,unsigned int *)" in summary model. | +| Dubious signature "(LIBSSH2_CHANNEL *,unsigned long *)" in summary model. | +| Dubious signature "(LIBSSH2_CHANNEL *,unsigned long *,unsigned long *)" in summary model. | +| Dubious signature "(LIBSSH2_CHANNEL *,unsigned long,unsigned char)" in summary model. | +| Dubious signature "(LIBSSH2_CHANNEL *,unsigned long,unsigned char,unsigned int *)" in summary model. | +| Dubious signature "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)" in summary model. | +| Dubious signature "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **)" in summary model. | +| Dubious signature "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,size_t,int,libssh2_knownhost **)" in summary model. | +| Dubious signature "(LIBSSH2_KNOWNHOSTS *,const char *,int,const char *,size_t,int,libssh2_knownhost **)" in summary model. | +| Dubious signature "(LIBSSH2_KNOWNHOSTS *,libssh2_knownhost **,libssh2_knownhost *)" in summary model. | +| Dubious signature "(LIBSSH2_KNOWNHOSTS *,libssh2_knownhost *,char *,size_t,size_t *,int)" in summary model. | +| Dubious signature "(LIBSSH2_LISTENER *)" in summary model. | +| Dubious signature "(LIBSSH2_POLLFD *,unsigned int,long)" in summary model. | +| Dubious signature "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long)" in summary model. | +| Dubious signature "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[])" in summary model. | +| Dubious signature "(LIBSSH2_PUBLICKEY *,unsigned long *,libssh2_publickey_list **)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,EVP_PKEY **,unsigned char **,size_t *,libssh2_curve_type)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,char **)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,char **,int *,int)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,char **,size_t *,const char *,size_t)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,char **,unsigned int *,const char *,unsigned int)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,const char *,const char *,size_t,unsigned char **,size_t *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,const char *,const unsigned char *,FILE *,unsigned char **,size_t *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,const char *,int)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,int,const char *,int)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,int,int *,int)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,libssh2_struct_stat *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,size_t,const char *,size_t,const char *,size_t,const char *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,stat *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,unsigned int)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,unsigned int,..(*)(..))" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,unsigned int,..(*)(..))" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const unsigned char *,size_t,const unsigned char *,size_t)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,const unsigned char *,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_requirev_state_t *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,int *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,int)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,int,const char *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,int,const char ***)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,int,const char *,const char *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,int,const char *,int)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,int,int)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,int,key_exchange_state_t *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,int,libssh2_cb_generic *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,int,unsigned int)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,int,void *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,libssh2_nonblocking_states *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,libssh2_socket_t)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,long)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,size_t *,int *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,string_buf *,unsigned char **,size_t *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,time_t)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,uint32_t)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,unsigned char *,size_t,int,uint32_t)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,unsigned char,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_require_state_t *)" in summary model. | +| Dubious signature "(LIBSSH2_SESSION *,void **,LIBSSH2_CHANNEL *,void **)" in summary model. | +| Dubious signature "(LIBSSH2_SFTP *)" in summary model. | +| Dubious signature "(LIBSSH2_SFTP *,const char *,size_t,LIBSSH2_SFTP_STATVFS *)" in summary model. | +| Dubious signature "(LIBSSH2_SFTP *,const char *,size_t,const char *,size_t)" in summary model. | +| Dubious signature "(LIBSSH2_SFTP *,const char *,size_t,unsigned long,long,int,LIBSSH2_SFTP_ATTRIBUTES *)" in summary model. | +| Dubious signature "(LIBSSH2_SFTP *,const char *,unsigned int)" in summary model. | +| Dubious signature "(LIBSSH2_SFTP *,const char *,unsigned int,char *,unsigned int,int)" in summary model. | +| Dubious signature "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)" in summary model. | +| Dubious signature "(LIBSSH2_SFTP *,const char *,unsigned int,int,LIBSSH2_SFTP_ATTRIBUTES *)" in summary model. | +| Dubious signature "(LIBSSH2_SFTP *,const char *,unsigned int,long)" in summary model. | +| Dubious signature "(LIBSSH2_SFTP *,const char *,unsigned int,unsigned long,long,int)" in summary model. | +| Dubious signature "(LIBSSH2_SFTP_HANDLE *)" in summary model. | +| Dubious signature "(LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int)" in summary model. | +| Dubious signature "(LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_STATVFS *)" in summary model. | +| Dubious signature "(LIBSSH2_SFTP_HANDLE *,char *,size_t)" in summary model. | +| Dubious signature "(LIBSSH2_SFTP_HANDLE *,char *,size_t,char *,size_t,LIBSSH2_SFTP_ATTRIBUTES *)" in summary model. | +| Dubious signature "(LIBSSH2_SFTP_HANDLE *,const char *,size_t)" in summary model. | | Dubious signature "(LPCSTR,IAtlStringMgr *)" in summary model. | | Dubious signature "(LPCTSTR,DWORD *,void *,ULONG *)" in summary model. | | Dubious signature "(LPCWSTR,IAtlStringMgr *)" in summary model. | @@ -919,6 +1214,21 @@ | Dubious signature "(ML_DSA_KEY *,const uint8_t *,size_t)" in summary model. | | Dubious signature "(ML_DSA_KEY *,int,int,const uint8_t *,size_t,const uint8_t *,size_t)" in summary model. | | Dubious signature "(ML_DSA_SIG *,const uint8_t *,size_t,const ML_DSA_PARAMS *)" in summary model. | +| Dubious signature "(MemoryManager *,HistogramCommand *,uint32_t *,size_t)" in summary model. | +| Dubious signature "(MemoryManager *,HistogramDistance *,uint32_t *,size_t)" in summary model. | +| Dubious signature "(MemoryManager *,HistogramLiteral *,uint32_t *,size_t)" in summary model. | +| Dubious signature "(MemoryManager *,brotli_alloc_func,brotli_free_func,void *)" in summary model. | +| Dubious signature "(MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *)" in summary model. | +| Dubious signature "(MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *)" in summary model. | +| Dubious signature "(MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *)" in summary model. | +| Dubious signature "(MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *)" in summary model. | +| Dubious signature "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)" in summary model. | +| Dubious signature "(MemoryManager *,const uint8_t *,size_t)" in summary model. | +| Dubious signature "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)" in summary model. | +| Dubious signature "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)" in summary model. | +| Dubious signature "(MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *)" in summary model. | +| Dubious signature "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)" in summary model. | +| Dubious signature "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *)" in summary model. | | Dubious signature "(NAME_CONSTRAINTS *)" in summary model. | | Dubious signature "(NAMING_AUTHORITY *)" in summary model. | | Dubious signature "(NAMING_AUTHORITY **,const unsigned char **,long)" in summary model. | @@ -1495,6 +1805,10 @@ | Dubious signature "(OTHERNAME *)" in summary model. | | Dubious signature "(OTHERNAME **,const unsigned char **,long)" in summary model. | | Dubious signature "(OTHERNAME *,OTHERNAME *)" in summary model. | +| Dubious signature "(OperationConfig *)" in summary model. | +| Dubious signature "(OperationConfig *,HttpReq,HttpReq *)" in summary model. | +| Dubious signature "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)" in summary model. | +| Dubious signature "(OperationConfig *,const char *const *,char **,const char *)" in summary model. | | Dubious signature "(PACKET *)" in summary model. | | Dubious signature "(PACKET *,BIGNUM *)" in summary model. | | Dubious signature "(PACKET *,OSSL_QUIC_FRAME_CONN_CLOSE *)" in summary model. | @@ -1632,6 +1946,7 @@ | Dubious signature "(PROXY_CERT_INFO_EXTENSION **,const unsigned char **,long)" in summary model. | | Dubious signature "(PROXY_POLICY *)" in summary model. | | Dubious signature "(PROXY_POLICY **,const unsigned char **,long)" in summary model. | +| Dubious signature "(ProgressData *,OperationConfig *)" in summary model. | | Dubious signature "(QLOG *,BIO *)" in summary model. | | Dubious signature "(QLOG *,OSSL_TIME)" in summary model. | | Dubious signature "(QLOG *,uint32_t)" in summary model. | @@ -1792,6 +2107,8 @@ | Dubious signature "(RSA_PSS_PARAMS_30 *,const RSA_PSS_PARAMS_30 *)" in summary model. | | Dubious signature "(RSA_PSS_PARAMS_30 *,int *,const OSSL_PARAM[],OSSL_LIB_CTX *)" in summary model. | | Dubious signature "(RSA_PSS_PARAMS_30 *,int)" in summary model. | +| Dubious signature "(SASL *,Curl_easy *,bool,saslprogress *)" in summary model. | +| Dubious signature "(SASL *,Curl_easy *,const SASLproto *)" in summary model. | | Dubious signature "(SCRYPT_PARAMS *)" in summary model. | | Dubious signature "(SCRYPT_PARAMS **,const unsigned char **,long)" in summary model. | | Dubious signature "(SCT **,const unsigned char **,size_t)" in summary model. | @@ -2045,6 +2362,8 @@ | Dubious signature "(SXNET **,unsigned long,const char *,int)" in summary model. | | Dubious signature "(SXNETID *)" in summary model. | | Dubious signature "(SXNETID **,const unsigned char **,long)" in summary model. | +| Dubious signature "(SharedEncoderDictionary *)" in summary model. | +| Dubious signature "(SingleRequest *,Curl_easy *)" in summary model. | | Dubious signature "(StrAccum *,sqlite3_str *,const char *,...)" in summary model. | | Dubious signature "(TLS_FEATURE *)" in summary model. | | Dubious signature "(TLS_RL_RECORD *,const unsigned char *)" in summary model. | @@ -2121,6 +2440,8 @@ | Dubious signature "(UI_METHOD *,..(*)(..))" in summary model. | | Dubious signature "(UI_METHOD *,..(*)(..),..(*)(..))" in summary model. | | Dubious signature "(UI_STRING *)" in summary model. | +| Dubious signature "(URLGlob **)" in summary model. | +| Dubious signature "(URLGlob **,char *,curl_off_t *,FILE *)" in summary model. | | Dubious signature "(USERNOTICE *)" in summary model. | | Dubious signature "(USERNOTICE **,const unsigned char **,long)" in summary model. | | Dubious signature "(WHIRLPOOL_CTX *,const void *,size_t)" in summary model. | @@ -2151,6 +2472,7 @@ | Dubious signature "(WPACKET *,unsigned char *,size_t)" in summary model. | | Dubious signature "(WPACKET *,unsigned char *,size_t,size_t)" in summary model. | | Dubious signature "(WPACKET *,unsigned int)" in summary model. | +| Dubious signature "(WildcardData **)" in summary model. | | Dubious signature "(X9_62_CHARACTERISTIC_TWO *)" in summary model. | | Dubious signature "(X9_62_PENTANOMIAL *)" in summary model. | | Dubious signature "(X509 *)" in summary model. | @@ -2362,29 +2684,72 @@ | Dubious signature "(acttab *)" in summary model. | | Dubious signature "(acttab *,int)" in summary model. | | Dubious signature "(acttab *,int,int)" in summary model. | +| Dubious signature "(alpn_proto_buf *,const alpn_spec *)" in summary model. | +| Dubious signature "(altsvcinfo **)" in summary model. | +| Dubious signature "(altsvcinfo *,const long)" in summary model. | +| Dubious signature "(brotli_alloc_func,brotli_free_func,void *)" in summary model. | +| Dubious signature "(bufc_pool *,size_t,size_t)" in summary model. | +| Dubious signature "(bufq *,Curl_bufq_reader *,void *,CURLcode *)" in summary model. | +| Dubious signature "(bufq *,Curl_bufq_writer *,void *,CURLcode *)" in summary model. | +| Dubious signature "(bufq *,bufc_pool *,size_t,int)" in summary model. | +| Dubious signature "(bufq *,char *,size_t,size_t *)" in summary model. | +| Dubious signature "(bufq *,const char *,size_t,size_t *)" in summary model. | +| Dubious signature "(bufq *,const unsigned char **,size_t *)" in summary model. | +| Dubious signature "(bufq *,const unsigned char *,size_t,CURLcode *)" in summary model. | +| Dubious signature "(bufq *,const unsigned char *,size_t,Curl_bufq_writer *,void *,CURLcode *)" in summary model. | +| Dubious signature "(bufq *,size_t)" in summary model. | +| Dubious signature "(bufq *,size_t,Curl_bufq_reader *,void *,CURLcode *)" in summary model. | +| Dubious signature "(bufq *,size_t,const unsigned char **,size_t *)" in summary model. | +| Dubious signature "(bufq *,size_t,size_t)" in summary model. | +| Dubious signature "(bufq *,size_t,size_t,int)" in summary model. | +| Dubious signature "(bufq *,unsigned char *,size_t,CURLcode *)" in summary model. | +| Dubious signature "(bufref *,const void *,size_t)" in summary model. | +| Dubious signature "(bufref *,const void *,size_t,..(*)(..))" in summary model. | +| Dubious signature "(chacha_ctx *,const u8 *,const u8 *)" in summary model. | +| Dubious signature "(chacha_ctx *,const u8 *,u8 *,u32)" in summary model. | +| Dubious signature "(chacha_ctx *,const u8 *,u32)" in summary model. | +| Dubious signature "(chachapoly_ctx *,const u_char *,u_int)" in summary model. | +| Dubious signature "(chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int)" in summary model. | +| Dubious signature "(chachapoly_ctx *,unsigned int *,unsigned int,const unsigned char *,unsigned int)" in summary model. | | Dubious signature "(char *)" in summary model. | | Dubious signature "(char **)" in summary model. | +| Dubious signature "(char **,Curl_str *,const size_t)" in summary model. | +| Dubious signature "(char **,Curl_str *,const size_t,char)" in summary model. | +| Dubious signature "(char **,URLGlob *)" in summary model. | +| Dubious signature "(char **,char *,URLGlob *)" in summary model. | +| Dubious signature "(char **,char)" in summary model. | +| Dubious signature "(char **,const char *)" in summary model. | | Dubious signature "(char **,s_options *,FILE *)" in summary model. | +| Dubious signature "(char **,size_t *,size_t)" in summary model. | | Dubious signature "(char *,EVP_CIPHER_INFO *)" in summary model. | | Dubious signature "(char *,FILE *,FILE *,int *)" in summary model. | +| Dubious signature "(char *,const char *,char **)" in summary model. | | Dubious signature "(char *,const char *,const char *,X509_VERIFY_PARAM *)" in summary model. | | Dubious signature "(char *,const char *,int,const char *)" in summary model. | | Dubious signature "(char *,const char *,size_t)" in summary model. | +| Dubious signature "(char *,const char *,va_list)" in summary model. | | Dubious signature "(char *,int)" in summary model. | | Dubious signature "(char *,int,const ASN1_OBJECT *)" in summary model. | | Dubious signature "(char *,int,const ASN1_OBJECT *,int)" in summary model. | | Dubious signature "(char *,int,int,void *)" in summary model. | +| Dubious signature "(char *,size_t *)" in summary model. | | Dubious signature "(char *,size_t)" in summary model. | | Dubious signature "(char *,size_t,const char *,...)" in summary model. | | Dubious signature "(char *,size_t,const char *,va_list)" in summary model. | | Dubious signature "(char *,size_t,size_t *,const OSSL_PARAM[],int,ossl_passphrase_data_st *)" in summary model. | | Dubious signature "(char *,size_t,size_t *,const OSSL_PARAM[],void *)" in summary model. | | Dubious signature "(char *,size_t,size_t *,const unsigned char *,size_t,const char)" in summary model. | +| Dubious signature "(char *,size_t,size_t,void *)" in summary model. | | Dubious signature "(char *,uint8_t)" in summary model. | | Dubious signature "(char *,unsigned int)" in summary model. | | Dubious signature "(char,const CStringT &)" in summary model. | +| Dubious signature "(codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *)" in summary model. | | Dubious signature "(config *)" in summary model. | | Dubious signature "(config *,config *)" in summary model. | +| Dubious signature "(connectdata *,Curl_easy *,curltime *)" in summary model. | +| Dubious signature "(connectdata *,curltime *)" in summary model. | +| Dubious signature "(connectdata *,int)" in summary model. | +| Dubious signature "(connectdata *,int,curltime *)" in summary model. | | Dubious signature "(const ACCESS_DESCRIPTION *,unsigned char **)" in summary model. | | Dubious signature "(const ADMISSIONS *)" in summary model. | | Dubious signature "(const ADMISSIONS *,unsigned char **)" in summary model. | @@ -2504,6 +2869,9 @@ | Dubious signature "(const BIO_ADDRINFO *)" in summary model. | | Dubious signature "(const BIO_METHOD *)" in summary model. | | Dubious signature "(const BN_BLINDING *)" in summary model. | +| Dubious signature "(const BrotliDecoderState *,const BrotliDecoderStateInternal *)" in summary model. | +| Dubious signature "(const BrotliEncoderDictionary *,const uint8_t *,size_t,size_t,uint32_t *)" in summary model. | +| Dubious signature "(const BrotliEncoderPreparedDictionary *)" in summary model. | | Dubious signature "(const CComBSTR &)" in summary model. | | Dubious signature "(const CComSafeArray &)" in summary model. | | Dubious signature "(const CERTIFICATEPOLICIES *,unsigned char **)" in summary model. | @@ -2535,6 +2903,10 @@ | Dubious signature "(const CTLOG *,const uint8_t **,size_t *)" in summary model. | | Dubious signature "(const CTLOG_STORE *,const uint8_t *,size_t)" in summary model. | | Dubious signature "(const CT_POLICY_EVAL_CTX *)" in summary model. | +| Dubious signature "(const CURLU *)" in summary model. | +| Dubious signature "(const CURLU *,CURLUPart,char **,unsigned int)" in summary model. | +| Dubious signature "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)" in summary model. | +| Dubious signature "(const Curl_easy *,const connectdata *,int)" in summary model. | | Dubious signature "(const DH *)" in summary model. | | Dubious signature "(const DH *,const BIGNUM *)" in summary model. | | Dubious signature "(const DH *,const BIGNUM **,const BIGNUM **)" in summary model. | @@ -2695,7 +3067,21 @@ | Dubious signature "(const GENERAL_NAMES *,unsigned char **)" in summary model. | | Dubious signature "(const GOST_KX_MESSAGE *,unsigned char **)" in summary model. | | Dubious signature "(const HMAC_CTX *)" in summary model. | +| Dubious signature "(const HMAC_params *,const unsigned char *,const size_t,const unsigned char *,const size_t,unsigned char *)" in summary model. | +| Dubious signature "(const HMAC_params *,const unsigned char *,unsigned int)" in summary model. | | Dubious signature "(const HT_CONFIG *)" in summary model. | +| Dubious signature "(const HistogramCommand *)" in summary model. | +| Dubious signature "(const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)" in summary model. | +| Dubious signature "(const HistogramCommand *,const HistogramCommand *,HistogramCommand *)" in summary model. | +| Dubious signature "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)" in summary model. | +| Dubious signature "(const HistogramDistance *)" in summary model. | +| Dubious signature "(const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)" in summary model. | +| Dubious signature "(const HistogramDistance *,const HistogramDistance *,HistogramDistance *)" in summary model. | +| Dubious signature "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)" in summary model. | +| Dubious signature "(const HistogramLiteral *)" in summary model. | +| Dubious signature "(const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)" in summary model. | +| Dubious signature "(const HistogramLiteral *,const HistogramLiteral *,HistogramLiteral *)" in summary model. | +| Dubious signature "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)" in summary model. | | Dubious signature "(const IPAddressChoice *,unsigned char **)" in summary model. | | Dubious signature "(const IPAddressFamily *)" in summary model. | | Dubious signature "(const IPAddressFamily *,unsigned char **)" in summary model. | @@ -2704,6 +3090,7 @@ | Dubious signature "(const ISSUER_SIGN_TOOL *,unsigned char **)" in summary model. | | Dubious signature "(const ISSUING_DIST_POINT *,unsigned char **)" in summary model. | | Dubious signature "(const MATRIX *,const VECTOR *,VECTOR *)" in summary model. | +| Dubious signature "(const MD5_params *)" in summary model. | | Dubious signature "(const ML_DSA_KEY *)" in summary model. | | Dubious signature "(const ML_DSA_KEY *,int)" in summary model. | | Dubious signature "(const ML_DSA_KEY *,int,const uint8_t *,size_t)" in summary model. | @@ -3164,8 +3551,12 @@ | Dubious signature "(const YCHAR *)" in summary model. | | Dubious signature "(const YCHAR *,int)" in summary model. | | Dubious signature "(const YCHAR *,int,IAtlStringMgr *)" in summary model. | +| Dubious signature "(const bufq *)" in summary model. | +| Dubious signature "(const bufref *)" in summary model. | | Dubious signature "(const char *)" in summary model. | | Dubious signature "(const char **)" in summary model. | +| Dubious signature "(const char **,char **,const char *)" in summary model. | +| Dubious signature "(const char **,const char *)" in summary model. | | Dubious signature "(const char **,int *)" in summary model. | | Dubious signature "(const char **,int *,const char **,const char **,int *)" in summary model. | | Dubious signature "(const char **,int *,const char **,int *)" in summary model. | @@ -3177,16 +3568,25 @@ | Dubious signature "(const char *,DES_cblock *,DES_cblock *)" in summary model. | | Dubious signature "(const char *,EVP_CIPHER **)" in summary model. | | Dubious signature "(const char *,EVP_MD **)" in summary model. | +| Dubious signature "(const char *,GlobalConfig *)" in summary model. | | Dubious signature "(const char *,OSSL_CMP_severity *,char **,char **,int *)" in summary model. | | Dubious signature "(const char *,OSSL_LIB_CTX *,const char *)" in summary model. | | Dubious signature "(const char *,OSSL_LIB_CTX *,const char *,const UI_METHOD *,void *,const OSSL_PARAM[],OSSL_STORE_post_process_info_fn,void *)" in summary model. | | Dubious signature "(const char *,X509 **,stack_st_X509 **,int,const char *,const char *,X509_VERIFY_PARAM *)" in summary model. | +| Dubious signature "(const char *,bufref *)" in summary model. | | Dubious signature "(const char *,char *)" in summary model. | | Dubious signature "(const char *,char **,char **,BIO_hostserv_priorities)" in summary model. | +| Dubious signature "(const char *,char **,char **,char **)" in summary model. | | Dubious signature "(const char *,char **,char **,char **,char **,int *,char **,char **,char **)" in summary model. | +| Dubious signature "(const char *,char **,int)" in summary model. | +| Dubious signature "(const char *,char **,int,curl_off_t *)" in summary model. | | Dubious signature "(const char *,char **,int,unsigned long *)" in summary model. | | Dubious signature "(const char *,char **,size_t)" in summary model. | +| Dubious signature "(const char *,char *,char *,bool *,GlobalConfig *,OperationConfig *)" in summary model. | +| Dubious signature "(const char *,char *,char *,const char **)" in summary model. | +| Dubious signature "(const char *,char *,size_t *)" in summary model. | | Dubious signature "(const char *,char *,size_t)" in summary model. | +| Dubious signature "(const char *,char *,size_t,bool)" in summary model. | | Dubious signature "(const char *,const ASN1_INTEGER *,stack_st_CONF_VALUE **)" in summary model. | | Dubious signature "(const char *,const ML_COMMON_PKCS8_FMT *,const char *,const char *)" in summary model. | | Dubious signature "(const char *,const OPT_PAIR *,int *)" in summary model. | @@ -3203,20 +3603,28 @@ | Dubious signature "(const char *,const char *,char **,char **)" in summary model. | | Dubious signature "(const char *,const char *,char **,char **,const char *,const char *)" in summary model. | | Dubious signature "(const char *,const char *,char **,char **,const char *,const char *,OSSL_LIB_CTX *,const char *)" in summary model. | +| Dubious signature "(const char *,const char *,char **,int)" in summary model. | +| Dubious signature "(const char *,const char *,char *,char *)" in summary model. | | Dubious signature "(const char *,const char *,const BIGNUM *,ASN1_INTEGER **)" in summary model. | | Dubious signature "(const char *,const char *,const char *,BIO *,BIO *,OSSL_HTTP_bio_cb_t,void *,int,const stack_st_CONF_VALUE *,const char *,int,size_t,int)" in summary model. | | Dubious signature "(const char *,const char *,const char *,SSL_CTX *,const stack_st_CONF_VALUE *,long,const char *,const ASN1_ITEM *)" in summary model. | +| Dubious signature "(const char *,const char *,const char *,bool,iconv_ilseq_handler)" in summary model. | +| Dubious signature "(const char *,const char *,const char *,bufref *)" in summary model. | | Dubious signature "(const char *,const char *,const char *,const char *,const char *,SSL_CTX *,const stack_st_CONF_VALUE *,const char *,ASN1_VALUE *,const ASN1_ITEM *,const char *,long,const ASN1_ITEM *)" in summary model. | | Dubious signature "(const char *,const char *,const char *,const char *,int,BIO *,BIO *,OSSL_HTTP_bio_cb_t,void *,int,int)" in summary model. | +| Dubious signature "(const char *,const char *,const char *,iconv_ilseq_handler)" in summary model. | | Dubious signature "(const char *,const char *,const char *,int)" in summary model. | | Dubious signature "(const char *,const char *,int)" in summary model. | | Dubious signature "(const char *,const char *,int,int,int,int,BIO_ADDRINFO **)" in summary model. | | Dubious signature "(const char *,const char *,size_t)" in summary model. | | Dubious signature "(const char *,const char *,stack_st_CONF_VALUE **)" in summary model. | | Dubious signature "(const char *,const char *,unsigned int)" in summary model. | +| Dubious signature "(const char *,const size_t,char **,char **,char **)" in summary model. | | Dubious signature "(const char *,const size_t,unsigned int *,unsigned int *)" in summary model. | +| Dubious signature "(const char *,const time_t *)" in summary model. | | Dubious signature "(const char *,const unsigned char *,size_t,stack_st_CONF_VALUE **)" in summary model. | | Dubious signature "(const char *,const unsigned char *,stack_st_CONF_VALUE **)" in summary model. | +| Dubious signature "(const char *,digestdata *)" in summary model. | | Dubious signature "(const char *,double *)" in summary model. | | Dubious signature "(const char *,int32_t *)" in summary model. | | Dubious signature "(const char *,int64_t *)" in summary model. | @@ -3238,7 +3646,13 @@ | Dubious signature "(const char *,long *,int)" in summary model. | | Dubious signature "(const char *,size_t *)" in summary model. | | Dubious signature "(const char *,size_t)" in summary model. | +| Dubious signature "(const char *,size_t,char **,size_t *,urlreject)" in summary model. | +| Dubious signature "(const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *)" in summary model. | +| Dubious signature "(const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *)" in summary model. | | Dubious signature "(const char *,size_t,const char *,int)" in summary model. | +| Dubious signature "(const char *,size_t,const iconveh_t *,iconv_ilseq_handler,size_t *,char **,size_t *)" in summary model. | +| Dubious signature "(const char *,size_t,dynbuf *,bool)" in summary model. | +| Dubious signature "(const char *,size_t,uint32_t *,size_t *)" in summary model. | | Dubious signature "(const char *,sqlite3 **,int,const char *)" in summary model. | | Dubious signature "(const char *,sqlite3_filename)" in summary model. | | Dubious signature "(const char *,sqlite3_filename,const char *)" in summary model. | @@ -3247,8 +3661,10 @@ | Dubious signature "(const char *,sqlite3_filename,int)" in summary model. | | Dubious signature "(const char *,stack_st_X509_CRL **,const char *,const char *)" in summary model. | | Dubious signature "(const char *,time_t *)" in summary model. | +| Dubious signature "(const char *,uint16_t *,size_t)" in summary model. | | Dubious signature "(const char *,uint32_t *)" in summary model. | | Dubious signature "(const char *,uint64_t *)" in summary model. | +| Dubious signature "(const char *,unsigned char *)" in summary model. | | Dubious signature "(const char *,unsigned char *,size_t)" in summary model. | | Dubious signature "(const char *,unsigned int *)" in summary model. | | Dubious signature "(const char *,unsigned long *)" in summary model. | @@ -3257,10 +3673,12 @@ | Dubious signature "(const char *,void **,size_t)" in summary model. | | Dubious signature "(const char *,void *,size_t)" in summary model. | | Dubious signature "(const char *const *,const char *const *)" in summary model. | +| Dubious signature "(const curl_easyoption *)" in summary model. | | Dubious signature "(const curve448_point_t)" in summary model. | | Dubious signature "(const custom_ext_methods *,ENDPOINT,unsigned int,size_t *)" in summary model. | | Dubious signature "(const deque &)" in summary model. | | Dubious signature "(const deque &,const Allocator &)" in summary model. | +| Dubious signature "(const dynbuf *)" in summary model. | | Dubious signature "(const forward_list &)" in summary model. | | Dubious signature "(const forward_list &,const Allocator &)" in summary model. | | Dubious signature "(const gf)" in summary model. | @@ -3269,6 +3687,16 @@ | Dubious signature "(const int_dhx942_dh *,unsigned char **)" in summary model. | | Dubious signature "(const list &)" in summary model. | | Dubious signature "(const list &,const Allocator &)" in summary model. | +| Dubious signature "(const nghttp2_extpri *)" in summary model. | +| Dubious signature "(const nghttp2_map *)" in summary model. | +| Dubious signature "(const nghttp2_map *,..(*)(..),void *)" in summary model. | +| Dubious signature "(const nghttp2_map *,nghttp2_map_key_type)" in summary model. | +| Dubious signature "(const nghttp2_nv *,const nghttp2_nv *)" in summary model. | +| Dubious signature "(const nghttp2_settings_entry *,size_t,nghttp2_mem *)" in summary model. | +| Dubious signature "(const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *)" in summary model. | +| Dubious signature "(const sockaddr *,char *,size_t)" in summary model. | +| Dubious signature "(const sockaddr_in6 *,char *,size_t)" in summary model. | +| Dubious signature "(const sockaddr_in *,char *,size_t)" in summary model. | | Dubious signature "(const sqlite3_value *)" in summary model. | | Dubious signature "(const stack_st_SCT *,unsigned char **)" in summary model. | | Dubious signature "(const stack_st_X509 *)" in summary model. | @@ -3282,17 +3710,28 @@ | Dubious signature "(const stack_st_X509_EXTENSION *,int,int *,int *)" in summary model. | | Dubious signature "(const stack_st_X509_EXTENSION *,int,int)" in summary model. | | Dubious signature "(const stack_st_X509_NAME *)" in summary model. | +| Dubious signature "(const stat *)" in summary model. | | Dubious signature "(const time_t *,tm *)" in summary model. | | Dubious signature "(const u128[16],uint8_t *,const uint8_t *,size_t)" in summary model. | | Dubious signature "(const uint8_t *,SM4_KEY *)" in summary model. | +| Dubious signature "(const uint8_t *,const uint8_t *,uint8_t **,int)" in summary model. | | Dubious signature "(const uint8_t *,int,int,PROV_CTX *,const char *)" in summary model. | | Dubious signature "(const uint8_t *,size_t)" in summary model. | +| Dubious signature "(const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *)" in summary model. | | Dubious signature "(const uint8_t *,size_t,ML_KEM_KEY *)" in summary model. | +| Dubious signature "(const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *)" in summary model. | +| Dubious signature "(const uint8_t *,size_t,uint16_t *)" in summary model. | +| Dubious signature "(const uint8_t *,uint8_t **,int)" in summary model. | | Dubious signature "(const uint8_t *,uint8_t *,const SM4_KEY *)" in summary model. | +| Dubious signature "(const uint16_t *,ssize_t,char **,size_t *)" in summary model. | +| Dubious signature "(const uint32_t *,const size_t,const int,HuffmanTree *,uint8_t *)" in summary model. | +| Dubious signature "(const uint32_t *,size_t,char *,size_t *)" in summary model. | +| Dubious signature "(const uint32_t *,size_t,uint32_t *,size_t *,int)" in summary model. | | Dubious signature "(const unsigned char *)" in summary model. | | Dubious signature "(const unsigned char **,long *,int *,int *,long)" in summary model. | | Dubious signature "(const unsigned char **,long)" in summary model. | | Dubious signature "(const unsigned char **,long,OSSL_LIB_CTX *,const char *)" in summary model. | +| Dubious signature "(const unsigned char **,unsigned char *,const unsigned char *,unsigned int)" in summary model. | | Dubious signature "(const unsigned char **,unsigned int,int *)" in summary model. | | Dubious signature "(const unsigned char **,unsigned int,int)" in summary model. | | Dubious signature "(const unsigned char **,unsigned int,int,int *,unsigned int *,unsigned int *)" in summary model. | @@ -3320,6 +3759,7 @@ | Dubious signature "(const unsigned char *,size_t,size_t,QUIC_CONN_ID *)" in summary model. | | Dubious signature "(const unsigned char *,size_t,uint64_t *)" in summary model. | | Dubious signature "(const unsigned char *,size_t,unsigned char *)" in summary model. | +| Dubious signature "(const unsigned char *,size_t,unsigned char *,size_t)" in summary model. | | Dubious signature "(const unsigned char *,unsigned char *,IDEA_KEY_SCHEDULE *)" in summary model. | | Dubious signature "(const unsigned char *,unsigned char *,RC2_KEY *,int)" in summary model. | | Dubious signature "(const unsigned char *,unsigned char *,const ARIA_KEY *)" in summary model. | @@ -3365,12 +3805,31 @@ | Dubious signature "(const unsigned char *,unsigned char *,size_t,const void *,unsigned char[16],unsigned char[16],unsigned int *,ctr128_f)" in summary model. | | Dubious signature "(const unsigned char[16],SEED_KEY_SCHEDULE *)" in summary model. | | Dubious signature "(const unsigned char[16],unsigned char[16],const SEED_KEY_SCHEDULE *)" in summary model. | +| Dubious signature "(const uv__io_t *,unsigned int)" in summary model. | +| Dubious signature "(const uv__statx *,uv_stat_t *)" in summary model. | +| Dubious signature "(const uv_buf_t[],unsigned int)" in summary model. | +| Dubious signature "(const uv_fs_t *)" in summary model. | +| Dubious signature "(const uv_handle_t *)" in summary model. | +| Dubious signature "(const uv_handle_t *,uv__peersockfunc,sockaddr *,int *)" in summary model. | +| Dubious signature "(const uv_handle_t *,uv_os_fd_t *)" in summary model. | +| Dubious signature "(const uv_lib_t *)" in summary model. | +| Dubious signature "(const uv_loop_t *)" in summary model. | +| Dubious signature "(const uv_pipe_t *,char *,size_t *)" in summary model. | +| Dubious signature "(const uv_process_t *)" in summary model. | +| Dubious signature "(const uv_req_t *)" in summary model. | +| Dubious signature "(const uv_stream_t *)" in summary model. | +| Dubious signature "(const uv_tcp_t *,sockaddr *,int *)" in summary model. | +| Dubious signature "(const uv_timer_t *)" in summary model. | +| Dubious signature "(const uv_udp_t *)" in summary model. | +| Dubious signature "(const uv_udp_t *,sockaddr *,int *)" in summary model. | | Dubious signature "(const vector &)" in summary model. | | Dubious signature "(const vector &,const Allocator &)" in summary model. | | Dubious signature "(const void *,const void *)" in summary model. | | Dubious signature "(const void *,const void *,int)" in summary model. | | Dubious signature "(const void *,const void *,int,int,..(*)(..))" in summary model. | | Dubious signature "(const void *,const void *,int,int,..(*)(..),int)" in summary model. | +| Dubious signature "(const void *,const void *,size_t)" in summary model. | +| Dubious signature "(const void *,size_t)" in summary model. | | Dubious signature "(const void *,size_t,const char *,int)" in summary model. | | Dubious signature "(const void *,size_t,unsigned char *)" in summary model. | | Dubious signature "(const void *,size_t,unsigned char **,size_t *)" in summary model. | @@ -3379,6 +3838,31 @@ | Dubious signature "(const_iterator,T &&)" in summary model. | | Dubious signature "(const_iterator,const T &)" in summary model. | | Dubious signature "(const_iterator,size_type,const T &)" in summary model. | +| Dubious signature "(cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t)" in summary model. | +| Dubious signature "(cpool *,fd_set *,fd_set *,int *)" in summary model. | +| Dubious signature "(curl_blob **,const curl_blob *)" in summary model. | +| Dubious signature "(curl_httppost **,curl_httppost **,...)" in summary model. | +| Dubious signature "(curl_mime *)" in summary model. | +| Dubious signature "(curl_mimepart *)" in summary model. | +| Dubious signature "(curl_mimepart *,const char *)" in summary model. | +| Dubious signature "(curl_mimepart *,const char *,size_t)" in summary model. | +| Dubious signature "(curl_mimepart *,curl_mime *)" in summary model. | +| Dubious signature "(curl_mimepart *,curl_mime *,int)" in summary model. | +| Dubious signature "(curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *)" in summary model. | +| Dubious signature "(curl_mimepart *,curl_slist *,int)" in summary model. | +| Dubious signature "(curl_off_t *,const char *)" in summary model. | +| Dubious signature "(curl_pollfds *,curl_socket_t,short)" in summary model. | +| Dubious signature "(curl_pollfds *,easy_pollset *)" in summary model. | +| Dubious signature "(curl_pollfds *,pollfd *,unsigned int)" in summary model. | +| Dubious signature "(curl_pushheaders *,const char *)" in summary model. | +| Dubious signature "(curl_pushheaders *,size_t)" in summary model. | +| Dubious signature "(curl_slist *)" in summary model. | +| Dubious signature "(curl_slist **,const char *)" in summary model. | +| Dubious signature "(curl_slist *,char *)" in summary model. | +| Dubious signature "(curl_slist *,const char *)" in summary model. | +| Dubious signature "(curltime,Curl_tree *)" in summary model. | +| Dubious signature "(curltime,Curl_tree *,Curl_tree *)" in summary model. | +| Dubious signature "(curltime,Curl_tree *,Curl_tree **)" in summary model. | | Dubious signature "(curve448_point_t,const curve448_point_t)" in summary model. | | Dubious signature "(curve448_point_t,const curve448_precomputed_s *,const curve448_scalar_t)" in summary model. | | Dubious signature "(curve448_point_t,const curve448_scalar_t,const curve448_point_t,const curve448_scalar_t)" in summary model. | @@ -3390,24 +3874,62 @@ | Dubious signature "(custom_ext_methods *,const custom_ext_methods *)" in summary model. | | Dubious signature "(d2i_of_void *,const char *,BIO *,void **,pem_password_cb *,void *)" in summary model. | | Dubious signature "(d2i_of_void *,const char *,FILE *,void **,pem_password_cb *,void *)" in summary model. | +| Dubious signature "(deflate_state *,charf *,ulg,int)" in summary model. | +| Dubious signature "(deflate_state *,unsigned int,unsigned int)" in summary model. | | Dubious signature "(deque &&)" in summary model. | | Dubious signature "(deque &&,const Allocator &)" in summary model. | +| Dubious signature "(dynbuf *)" in summary model. | +| Dubious signature "(dynbuf *,Curl_easy *)" in summary model. | +| Dubious signature "(dynbuf *,FILE *)" in summary model. | +| Dubious signature "(dynbuf *,const char *)" in summary model. | +| Dubious signature "(dynbuf *,const char *,va_list)" in summary model. | +| Dubious signature "(dynbuf *,const void *,size_t)" in summary model. | +| Dubious signature "(dynbuf *,size_t *)" in summary model. | +| Dubious signature "(dynbuf *,size_t)" in summary model. | +| Dubious signature "(dynhds *)" in summary model. | +| Dubious signature "(dynhds *,const char *)" in summary model. | +| Dubious signature "(dynhds *,const char *,const char *)" in summary model. | +| Dubious signature "(dynhds *,const char *,size_t)" in summary model. | +| Dubious signature "(dynhds *,const char *,size_t,const char *,size_t)" in summary model. | +| Dubious signature "(dynhds *,int)" in summary model. | +| Dubious signature "(dynhds *,size_t *)" in summary model. | +| Dubious signature "(dynhds *,size_t)" in summary model. | +| Dubious signature "(dynhds *,size_t,size_t)" in summary model. | +| Dubious signature "(fileinfo *)" in summary model. | | Dubious signature "(format_string,Args &&)" in summary model. | | Dubious signature "(forward_list &&)" in summary model. | | Dubious signature "(forward_list &&,const Allocator &)" in summary model. | +| Dubious signature "(ftp_parselist_data *)" in summary model. | +| Dubious signature "(ftp_parselist_data **)" in summary model. | | Dubious signature "(gf,const gf,const gf)" in summary model. | | Dubious signature "(gf,const uint8_t[56],int,uint8_t)" in summary model. | +| Dubious signature "(gzFile,char *,int)" in summary model. | +| Dubious signature "(gzFile,const char *)" in summary model. | +| Dubious signature "(gzFile,const char *,va_list)" in summary model. | +| Dubious signature "(gzFile,int *)" in summary model. | +| Dubious signature "(gzFile,unsigned int)" in summary model. | +| Dubious signature "(gzFile,voidp,unsigned int)" in summary model. | +| Dubious signature "(gzFile,voidpc,unsigned int)" in summary model. | +| Dubious signature "(gz_statep,int,const char *)" in summary model. | +| Dubious signature "(h1_req_parser *,const char *,size_t,const char *,int,CURLcode *)" in summary model. | +| Dubious signature "(h1_req_parser *,size_t)" in summary model. | +| Dubious signature "(hsts **)" in summary model. | +| Dubious signature "(http_resp **,int,const char *)" in summary model. | +| Dubious signature "(httpreq **,const char *,size_t,CURLU *,const char *)" in summary model. | +| Dubious signature "(httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t)" in summary model. | | Dubious signature "(i2d_of_void *,BIO *,const void *)" in summary model. | | Dubious signature "(i2d_of_void *,FILE *,const void *)" in summary model. | | Dubious signature "(i2d_of_void *,X509_ALGOR *,X509_ALGOR *,ASN1_BIT_STRING *,char *,EVP_PKEY *,const EVP_MD *)" in summary model. | | Dubious signature "(i2d_of_void *,const char *,BIO *,const void *,const EVP_CIPHER *,const unsigned char *,int,pem_password_cb *,void *)" in summary model. | | Dubious signature "(i2d_of_void *,const char *,FILE *,const void *,const EVP_CIPHER *,const unsigned char *,int,pem_password_cb *,void *)" in summary model. | | Dubious signature "(i2d_of_void *,d2i_of_void *,const void *)" in summary model. | +| Dubious signature "(int32_t *,int32_t *,int32_t *,int32_t *)" in summary model. | | Dubious signature "(int64_t *,const ASN1_ENUMERATED *)" in summary model. | | Dubious signature "(int64_t *,const ASN1_INTEGER *)" in summary model. | | Dubious signature "(int *,ASN1_TIME **,const ASN1_TIME *)" in summary model. | | Dubious signature "(int *,X509 *,stack_st_X509 *,unsigned long)" in summary model. | | Dubious signature "(int *,const char *,const char *,const char *,const char *,int,int,int,int,int,BIO_ADDR **)" in summary model. | +| Dubious signature "(int *,const char *,size_t)" in summary model. | | Dubious signature "(int *,int *,const ASN1_TIME *,const ASN1_TIME *)" in summary model. | | Dubious signature "(int *,int *,const EVP_PKEY_METHOD *)" in summary model. | | Dubious signature "(int *,int *,const tm *,const tm *)" in summary model. | @@ -3437,8 +3959,12 @@ | Dubious signature "(int,char **)" in summary model. | | Dubious signature "(int,char **,char *[])" in summary model. | | Dubious signature "(int,char **,const OPTIONS *)" in summary model. | +| Dubious signature "(int,char **,gengetopt_args_info *)" in summary model. | +| Dubious signature "(int,char **,gengetopt_args_info *,cmdline_parser_params *)" in summary model. | +| Dubious signature "(int,char **,gengetopt_args_info *,int,int,int)" in summary model. | | Dubious signature "(int,char *,const char *,...)" in summary model. | | Dubious signature "(int,char *,const char *,va_list)" in summary model. | +| Dubious signature "(int,char *,size_t)" in summary model. | | Dubious signature "(int,const EVP_CIPHER *,const char *,int,unsigned char *,int,int,PKCS8_PRIV_KEY_INFO *)" in summary model. | | Dubious signature "(int,const EVP_CIPHER *,const char *,int,unsigned char *,int,int,PKCS8_PRIV_KEY_INFO *,OSSL_LIB_CTX *,const char *)" in summary model. | | Dubious signature "(int,const OSSL_ALGORITHM *,OSSL_PROVIDER *)" in summary model. | @@ -3450,13 +3976,17 @@ | Dubious signature "(int,const char *,int,unsigned char *,int,int,stack_st_PKCS12_SAFEBAG *)" in summary model. | | Dubious signature "(int,const char *,int,unsigned char *,int,int,stack_st_PKCS12_SAFEBAG *,OSSL_LIB_CTX *,const char *)" in summary model. | | Dubious signature "(int,const regex_t *,char *,size_t)" in summary model. | +| Dubious signature "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)" in summary model. | | Dubious signature "(int,const unsigned char *,int,const unsigned char *,int,DSA *)" in summary model. | | Dubious signature "(int,const unsigned char *,int,const unsigned char *,int,EC_KEY *)" in summary model. | | Dubious signature "(int,const unsigned char *,int,unsigned char *,unsigned int *,DSA *)" in summary model. | | Dubious signature "(int,const unsigned char *,int,unsigned char *,unsigned int *,DSA *,unsigned int,const char *,OSSL_LIB_CTX *,const char *)" in summary model. | | Dubious signature "(int,const unsigned char *,int,unsigned char *,unsigned int *,const BIGNUM *,const BIGNUM *,EC_KEY *)" in summary model. | | Dubious signature "(int,const unsigned char *,unsigned int,unsigned char *,size_t *,const unsigned char *,size_t,RSA *)" in summary model. | +| Dubious signature "(int,const void *,char *,size_t)" in summary model. | +| Dubious signature "(int,const void *,const char *,int)" in summary model. | | Dubious signature "(int,int *,int *,int)" in summary model. | +| Dubious signature "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])" in summary model. | | Dubious signature "(int,int,TLS_GROUP_INFO *,size_t,long,stack_st_OPENSSL_CSTRING *)" in summary model. | | Dubious signature "(int,int,const char *)" in summary model. | | Dubious signature "(int,int,const char *,const char *)" in summary model. | @@ -3468,6 +3998,7 @@ | Dubious signature "(int,int,void *)" in summary model. | | Dubious signature "(int,long,void *,CRYPTO_EX_new *,CRYPTO_EX_dup *,CRYPTO_EX_free *)" in summary model. | | Dubious signature "(int,sqlite3_int64 *,sqlite3_int64 *,int)" in summary model. | +| Dubious signature "(int,stat *)" in summary model. | | Dubious signature "(int,unsigned char *,int,const char *,const char *)" in summary model. | | Dubious signature "(int,unsigned char *,int,int *,unsigned long *,..(*)(..),void *)" in summary model. | | Dubious signature "(int,unsigned long,..(*)(..),void *)" in summary model. | @@ -3483,16 +4014,182 @@ | Dubious signature "(lhash_st_CONF_VALUE *,const char *,long *)" in summary model. | | Dubious signature "(list &&)" in summary model. | | Dubious signature "(list &&,const Allocator &)" in summary model. | +| Dubious signature "(list_head *)" in summary model. | +| Dubious signature "(list_head *,list_node *)" in summary model. | +| Dubious signature "(list_node *)" in summary model. | +| Dubious signature "(long *,const char *)" in summary model. | +| Dubious signature "(long *,const char *,long)" in summary model. | +| Dubious signature "(long long *)" in summary model. | +| Dubious signature "(nghttp2_buf *,size_t,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_buf *,uint8_t *,size_t)" in summary model. | +| Dubious signature "(nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_bufs *,nghttp2_frame_hd *,size_t,int)" in summary model. | +| Dubious signature "(nghttp2_bufs *,nghttp2_headers *,nghttp2_hd_deflater *)" in summary model. | +| Dubious signature "(nghttp2_bufs *,nghttp2_push_promise *,nghttp2_hd_deflater *)" in summary model. | +| Dubious signature "(nghttp2_bufs *,size_t)" in summary model. | +| Dubious signature "(nghttp2_bufs *,size_t,size_t,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_bufs *,uint8_t *,size_t,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_data *,uint8_t,int32_t)" in summary model. | +| Dubious signature "(nghttp2_data_provider_wrap *,const nghttp2_data_provider2 *)" in summary model. | +| Dubious signature "(nghttp2_data_provider_wrap *,const nghttp2_data_provider *)" in summary model. | +| Dubious signature "(nghttp2_extension *,int32_t,uint8_t *,size_t)" in summary model. | +| Dubious signature "(nghttp2_extension *,int32_t,uint8_t *,size_t,uint8_t *,size_t)" in summary model. | +| Dubious signature "(nghttp2_extension *,nghttp2_origin_entry *,size_t)" in summary model. | +| Dubious signature "(nghttp2_extension *,uint8_t,uint8_t,int32_t,void *)" in summary model. | +| Dubious signature "(nghttp2_extpri *,const uint8_t *,size_t)" in summary model. | +| Dubious signature "(nghttp2_extpri *,uint8_t)" in summary model. | +| Dubious signature "(nghttp2_frame *,size_t)" in summary model. | +| Dubious signature "(nghttp2_frame_hd *,const uint8_t *)" in summary model. | +| Dubious signature "(nghttp2_frame_hd *,size_t,uint8_t,uint8_t,int32_t)" in summary model. | +| Dubious signature "(nghttp2_goaway *,const uint8_t *,size_t,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_goaway *,const uint8_t *,uint8_t *,size_t)" in summary model. | +| Dubious signature "(nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t)" in summary model. | +| Dubious signature "(nghttp2_hd_context *,size_t)" in summary model. | +| Dubious signature "(nghttp2_hd_deflater *)" in summary model. | +| Dubious signature "(nghttp2_hd_deflater **,size_t)" in summary model. | +| Dubious signature "(nghttp2_hd_deflater **,size_t,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_hd_deflater *,const nghttp2_nv *,size_t)" in summary model. | +| Dubious signature "(nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t)" in summary model. | +| Dubious signature "(nghttp2_hd_deflater *,nghttp2_bufs *,const nghttp2_nv *,size_t)" in summary model. | +| Dubious signature "(nghttp2_hd_deflater *,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_hd_deflater *,size_t)" in summary model. | +| Dubious signature "(nghttp2_hd_deflater *,size_t,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t)" in summary model. | +| Dubious signature "(nghttp2_hd_entry *,nghttp2_hd_nv *)" in summary model. | +| Dubious signature "(nghttp2_hd_huff_decode_context *,nghttp2_buf *,const uint8_t *,size_t,int)" in summary model. | +| Dubious signature "(nghttp2_hd_inflater *)" in summary model. | +| Dubious signature "(nghttp2_hd_inflater **,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_hd_inflater *,nghttp2_hd_nv *,int *,const uint8_t *,size_t,int)" in summary model. | +| Dubious signature "(nghttp2_hd_inflater *,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int)" in summary model. | +| Dubious signature "(nghttp2_hd_inflater *,nghttp2_nv *,int *,uint8_t *,size_t,int)" in summary model. | +| Dubious signature "(nghttp2_hd_inflater *,size_t)" in summary model. | +| Dubious signature "(nghttp2_headers *,const uint8_t *)" in summary model. | +| Dubious signature "(nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t)" in summary model. | +| Dubious signature "(nghttp2_map *,nghttp2_map_key_type,void *)" in summary model. | +| Dubious signature "(nghttp2_map *,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_nv **,const nghttp2_nv *,size_t,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_option **)" in summary model. | +| Dubious signature "(nghttp2_option *,int)" in summary model. | +| Dubious signature "(nghttp2_option *,size_t)" in summary model. | +| Dubious signature "(nghttp2_option *,uint8_t)" in summary model. | +| Dubious signature "(nghttp2_option *,uint32_t)" in summary model. | +| Dubious signature "(nghttp2_option *,uint64_t,uint64_t)" in summary model. | +| Dubious signature "(nghttp2_outbound_queue *)" in summary model. | +| Dubious signature "(nghttp2_outbound_queue *,nghttp2_outbound_item *)" in summary model. | +| Dubious signature "(nghttp2_ping *,const uint8_t *)" in summary model. | +| Dubious signature "(nghttp2_ping *,uint8_t,const uint8_t *)" in summary model. | +| Dubious signature "(nghttp2_pq *)" in summary model. | +| Dubious signature "(nghttp2_pq *,nghttp2_less,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_pq *,nghttp2_pq_entry *)" in summary model. | +| Dubious signature "(nghttp2_priority *,const uint8_t *)" in summary model. | +| Dubious signature "(nghttp2_priority *,int32_t,const nghttp2_priority_spec *)" in summary model. | +| Dubious signature "(nghttp2_priority_spec *,const uint8_t *)" in summary model. | +| Dubious signature "(nghttp2_priority_spec *,int32_t,int32_t,int)" in summary model. | +| Dubious signature "(nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t)" in summary model. | +| Dubious signature "(nghttp2_queue *)" in summary model. | +| Dubious signature "(nghttp2_queue *,void *)" in summary model. | +| Dubious signature "(nghttp2_ratelim *,uint64_t)" in summary model. | +| Dubious signature "(nghttp2_ratelim *,uint64_t,uint64_t)" in summary model. | +| Dubious signature "(nghttp2_rcbuf *)" in summary model. | +| Dubious signature "(nghttp2_rcbuf **,const uint8_t *,size_t,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_rcbuf **,size_t,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_rst_stream *,int32_t,uint32_t)" in summary model. | +| Dubious signature "(nghttp2_session *)" in summary model. | +| Dubious signature "(nghttp2_session **,const nghttp2_session_callbacks *,void *)" in summary model. | +| Dubious signature "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)" in summary model. | +| Dubious signature "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *,void *)" in summary model. | +| Dubious signature "(nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider *,void *)" in summary model. | +| Dubious signature "(nghttp2_session *,const uint8_t *,size_t)" in summary model. | +| Dubious signature "(nghttp2_session *,const uint8_t *,size_t,int,void *)" in summary model. | +| Dubious signature "(nghttp2_session *,const uint8_t *,size_t,void *)" in summary model. | +| Dubious signature "(nghttp2_session *,int32_t)" in summary model. | +| Dubious signature "(nghttp2_session *,int32_t,const nghttp2_extpri *,int)" in summary model. | +| Dubious signature "(nghttp2_session *,int32_t,const nghttp2_nv *,size_t)" in summary model. | +| Dubious signature "(nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *)" in summary model. | +| Dubious signature "(nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider *)" in summary model. | +| Dubious signature "(nghttp2_session *,int32_t,size_t)" in summary model. | +| Dubious signature "(nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *)" in summary model. | +| Dubious signature "(nghttp2_session *,nghttp2_bufs *,size_t,nghttp2_frame *,nghttp2_data_aux_data *,nghttp2_stream *)" in summary model. | +| Dubious signature "(nghttp2_session *,nghttp2_extpri *,int32_t)" in summary model. | +| Dubious signature "(nghttp2_session *,nghttp2_frame *)" in summary model. | +| Dubious signature "(nghttp2_session *,nghttp2_outbound_item *)" in summary model. | +| Dubious signature "(nghttp2_session *,nghttp2_settings_entry *,size_t)" in summary model. | +| Dubious signature "(nghttp2_session *,nghttp2_settings_id)" in summary model. | +| Dubious signature "(nghttp2_session *,nghttp2_stream *)" in summary model. | +| Dubious signature "(nghttp2_session *,nghttp2_stream *,nghttp2_frame *,nghttp2_hd_nv *,int)" in summary model. | +| Dubious signature "(nghttp2_session *,nghttp2_stream *,size_t,int)" in summary model. | +| Dubious signature "(nghttp2_session *,size_t)" in summary model. | +| Dubious signature "(nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t)" in summary model. | +| Dubious signature "(nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider2 *)" in summary model. | +| Dubious signature "(nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider *)" in summary model. | +| Dubious signature "(nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider_wrap *)" in summary model. | +| Dubious signature "(nghttp2_session *,uint8_t,int32_t,const nghttp2_nv *,size_t,void *)" in summary model. | +| Dubious signature "(nghttp2_session *,uint8_t,int32_t,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,void *)" in summary model. | +| Dubious signature "(nghttp2_session *,uint8_t,int32_t,int32_t)" in summary model. | +| Dubious signature "(nghttp2_session *,void *)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks **)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_before_frame_send_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_data_source_read_length_callback2)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_data_source_read_length_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_error_callback2)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_error_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_begin_frame_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_begin_headers_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_data_chunk_recv_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_extension_chunk_recv_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_frame_not_send_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_frame_recv_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_frame_send_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_header_callback2)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_header_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_invalid_frame_recv_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_invalid_header_callback2)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_invalid_header_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_stream_close_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_pack_extension_callback2)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_pack_extension_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_recv_callback2)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_recv_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_select_padding_callback2)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_select_padding_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_send_callback2)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_send_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_send_data_callback)" in summary model. | +| Dubious signature "(nghttp2_session_callbacks *,nghttp2_unpack_extension_callback)" in summary model. | +| Dubious signature "(nghttp2_settings *,nghttp2_settings_entry *,size_t)" in summary model. | +| Dubious signature "(nghttp2_settings *,uint8_t,nghttp2_settings_entry *,size_t)" in summary model. | +| Dubious signature "(nghttp2_settings_entry **,size_t *,const uint8_t *,size_t,nghttp2_mem *)" in summary model. | +| Dubious signature "(nghttp2_stream *)" in summary model. | +| Dubious signature "(nghttp2_stream *,int32_t,int32_t)" in summary model. | +| Dubious signature "(nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *)" in summary model. | +| Dubious signature "(nghttp2_stream *,nghttp2_outbound_item *)" in summary model. | +| Dubious signature "(nghttp2_stream *,nghttp2_shut_flag)" in summary model. | +| Dubious signature "(nghttp2_stream *,size_t)" in summary model. | +| Dubious signature "(nghttp2_stream *,uint8_t)" in summary model. | +| Dubious signature "(nghttp2_window_update *,uint8_t,int32_t,int32_t)" in summary model. | +| Dubious signature "(pgrs_dir *,curl_off_t,curltime)" in summary model. | | Dubious signature "(piterator *)" in summary model. | | Dubious signature "(plink *)" in summary model. | | Dubious signature "(plink **,config *)" in summary model. | | Dubious signature "(plink **,plink *)" in summary model. | +| Dubious signature "(pollfd[],unsigned int,timediff_t)" in summary model. | | Dubious signature "(pqueue *)" in summary model. | | Dubious signature "(pqueue *,pitem *)" in summary model. | | Dubious signature "(pqueue *,unsigned char *)" in summary model. | +| Dubious signature "(pthread_t *)" in summary model. | +| Dubious signature "(pthread_t **)" in summary model. | | Dubious signature "(regex_t *,const char *,int)" in summary model. | | Dubious signature "(regex_t *,const char *,size_t,regmatch_t[],int)" in summary model. | | Dubious signature "(rule *,int)" in summary model. | +| Dubious signature "(scan_ctx *,const char *,const char *,const char *)" in summary model. | +| Dubious signature "(sfparse_parser *,const uint8_t *,size_t)" in summary model. | +| Dubious signature "(sfparse_parser *,sfparse_value *)" in summary model. | +| Dubious signature "(sfparse_parser *,sfparse_vec *,sfparse_value *)" in summary model. | +| Dubious signature "(sfparse_vec *,const sfparse_vec *)" in summary model. | | Dubious signature "(size_t *,const char *)" in summary model. | | Dubious signature "(size_t *,size_t,unsigned char *,unsigned char **,int *,size_t,size_t,OSSL_LIB_CTX *)" in summary model. | | Dubious signature "(size_t *,size_t,unsigned char *,unsigned char **,int *,size_t,size_t,int,OSSL_LIB_CTX *)" in summary model. | @@ -3500,9 +4197,18 @@ | Dubious signature "(size_t,SSL_CTX *)" in summary model. | | Dubious signature "(size_t,const QUIC_PKT_HDR *)" in summary model. | | Dubious signature "(size_t,const char **,size_t *)" in summary model. | +| Dubious signature "(size_t,const char[],size_t *,uint32_t[])" in summary model. | +| Dubious signature "(size_t,const uint8_t[],size_t *,uint8_t[])" in summary model. | +| Dubious signature "(size_t,const uint32_t[],size_t *,char[])" in summary model. | +| Dubious signature "(size_t,size_t,Curl_ssl_scache **)" in summary model. | +| Dubious signature "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)" in summary model. | +| Dubious signature "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)" in summary model. | | Dubious signature "(size_t,size_t,void **,const char *,int)" in summary model. | +| Dubious signature "(size_t,uint32_t *,uint8_t *)" in summary model. | | Dubious signature "(size_type,const T &)" in summary model. | | Dubious signature "(size_type,const T &,const Allocator &)" in summary model. | +| Dubious signature "(slist_wc **,const char *)" in summary model. | +| Dubious signature "(slist_wc *,const char *)" in summary model. | | Dubious signature "(sqlite3 *)" in summary model. | | Dubious signature "(sqlite3 *,..(*)(..),void *)" in summary model. | | Dubious signature "(sqlite3 *,..(*)(..),void *,..(*)(..))" in summary model. | @@ -3593,6 +4299,7 @@ | Dubious signature "(sqlite3expert *,char **)" in summary model. | | Dubious signature "(sqlite3expert *,const char *,char **)" in summary model. | | Dubious signature "(sqlite3expert *,int,int)" in summary model. | +| Dubious signature "(ssl_peer *,Curl_cfilter *,const char *,int)" in summary model. | | Dubious signature "(stack_st_ASN1_UTF8STRING *)" in summary model. | | Dubious signature "(stack_st_ASN1_UTF8STRING *,const char *,int)" in summary model. | | Dubious signature "(stack_st_OPENSSL_STRING *,const OSSL_PARAM *)" in summary model. | @@ -3639,15 +4346,37 @@ | Dubious signature "(stack_st_X509_OBJECT *,X509_OBJECT *)" in summary model. | | Dubious signature "(stack_st_X509_POLICY_NODE *,const ASN1_OBJECT *)" in summary model. | | Dubious signature "(state *,config *)" in summary model. | +| Dubious signature "(store_netrc *)" in summary model. | +| Dubious signature "(store_netrc *,const char *,char **,char **,char *)" in summary model. | +| Dubious signature "(string_buf *,libssh2_uint64_t *)" in summary model. | +| Dubious signature "(string_buf *,uint32_t *)" in summary model. | +| Dubious signature "(string_buf *,unsigned char *)" in summary model. | +| Dubious signature "(string_buf *,unsigned char **,size_t *)" in summary model. | | Dubious signature "(symbol *,lemon *)" in summary model. | +| Dubious signature "(timeval *)" in summary model. | +| Dubious signature "(timeval *,timediff_t)" in summary model. | | Dubious signature "(tm *,const ASN1_TIME *)" in summary model. | | Dubious signature "(tm *,const ASN1_UTCTIME *)" in summary model. | | Dubious signature "(tm *,int,long)" in summary model. | | Dubious signature "(u64[2],const u128[16],const u8 *,size_t)" in summary model. | +| Dubious signature "(uLong,const Bytef *,uInt)" in summary model. | +| Dubious signature "(uLong,const Bytef *,z_size_t)" in summary model. | +| Dubious signature "(uLong,unsigned long,const Bytef *,const unsigned char *,uInt)" in summary model. | +| Dubious signature "(uLong,unsigned long,const Bytef *,const unsigned char *,z_size_t)" in summary model. | +| Dubious signature "(u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32])" in summary model. | +| Dubious signature "(ucs4_t *,const uint8_t *,size_t)" in summary model. | +| Dubious signature "(ucs4_t,ucs4_t *)" in summary model. | +| Dubious signature "(ucs4_with_ccc *,size_t,ucs4_with_ccc *)" in summary model. | +| Dubious signature "(uint8_t *,const nghttp2_frame_hd *)" in summary model. | +| Dubious signature "(uint8_t *,const nghttp2_priority_spec *)" in summary model. | +| Dubious signature "(uint8_t *,const nghttp2_settings_entry *,size_t)" in summary model. | +| Dubious signature "(uint8_t *,const uint8_t *,int,const BrotliTransforms *,int)" in summary model. | | Dubious signature "(uint8_t *,const uint8_t *,size_t,const uint8_t[32],const uint8_t[32],const uint8_t,const uint8_t,const uint8_t,const uint8_t *,size_t,OSSL_LIB_CTX *,const char *)" in summary model. | +| Dubious signature "(uint8_t *,const void *,size_t)" in summary model. | | Dubious signature "(uint8_t *,size_t)" in summary model. | | Dubious signature "(uint8_t *,size_t,ML_KEM_KEY *)" in summary model. | | Dubious signature "(uint8_t *,size_t,const ML_KEM_KEY *)" in summary model. | +| Dubious signature "(uint8_t *,size_t,const nghttp2_settings_entry *,size_t)" in summary model. | | Dubious signature "(uint8_t *,size_t,const uint8_t *,size_t,const ML_KEM_KEY *)" in summary model. | | Dubious signature "(uint8_t *,size_t,uint8_t *,size_t,const ML_KEM_KEY *)" in summary model. | | Dubious signature "(uint8_t *,size_t,uint8_t *,size_t,const uint8_t *,size_t,const ML_KEM_KEY *)" in summary model. | @@ -3662,6 +4391,8 @@ | Dubious signature "(uint16_t **,size_t *,uint16_t **,size_t *,size_t **,size_t *,int *,size_t)" in summary model. | | Dubious signature "(uint16_t **,size_t *,uint16_t **,size_t *,size_t **,size_t *,void *)" in summary model. | | Dubious signature "(uint32_t *,SSL_CONNECTION *,int)" in summary model. | +| Dubious signature "(uint32_t *,const IDNAMap *)" in summary model. | +| Dubious signature "(uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t)" in summary model. | | Dubious signature "(uint32_t,uint32_t *,uint32_t *)" in summary model. | | Dubious signature "(uint32_t,uint32_t,uint32_t *,int32_t *)" in summary model. | | Dubious signature "(uint64_t *,const ASN1_INTEGER *)" in summary model. | @@ -3670,13 +4401,21 @@ | Dubious signature "(uint64_t *,uint64_t,CRYPTO_RWLOCK *)" in summary model. | | Dubious signature "(uint64_t *,uint64_t,uint64_t *,CRYPTO_RWLOCK *)" in summary model. | | Dubious signature "(uint64_t,uint64_t *)" in summary model. | +| Dubious signature "(uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *)" in summary model. | | Dubious signature "(unsigned char *)" in summary model. | | Dubious signature "(unsigned char **)" in summary model. | | Dubious signature "(unsigned char **,X509_ALGOR *,ASN1_OCTET_STRING *,int)" in summary model. | +| Dubious signature "(unsigned char **,const char *,size_t)" in summary model. | +| Dubious signature "(unsigned char **,const unsigned char *,size_t)" in summary model. | | Dubious signature "(unsigned char **,int,int,int,int)" in summary model. | +| Dubious signature "(unsigned char **,libssh2_uint64_t)" in summary model. | | Dubious signature "(unsigned char **,long *,char **,const char *,BIO *,pem_password_cb *,void *)" in summary model. | | Dubious signature "(unsigned char **,long)" in summary model. | +| Dubious signature "(unsigned char **,size_t *)" in summary model. | | Dubious signature "(unsigned char **,size_t *,const EC_POINT *,const EC_KEY *)" in summary model. | +| Dubious signature "(unsigned char **,size_t *,unsigned char **,unsigned int *)" in summary model. | +| Dubious signature "(unsigned char **,uint32_t)" in summary model. | +| Dubious signature "(unsigned char **,unsigned char *,const unsigned char *,unsigned int)" in summary model. | | Dubious signature "(unsigned char **,unsigned char *,const unsigned char *,unsigned int,const unsigned char *,unsigned int)" in summary model. | | Dubious signature "(unsigned char *,BLAKE2B_CTX *)" in summary model. | | Dubious signature "(unsigned char *,BLAKE2S_CTX *)" in summary model. | @@ -3692,6 +4431,7 @@ | Dubious signature "(unsigned char *,WHIRLPOOL_CTX *)" in summary model. | | Dubious signature "(unsigned char *,const BIGNUM *,DH *)" in summary model. | | Dubious signature "(unsigned char *,const char *)" in summary model. | +| Dubious signature "(unsigned char *,const unsigned char *,const unsigned char *,size_t)" in summary model. | | Dubious signature "(unsigned char *,const unsigned char *,int)" in summary model. | | Dubious signature "(unsigned char *,const unsigned char *,size_t)" in summary model. | | Dubious signature "(unsigned char *,int)" in summary model. | @@ -3709,7 +4449,14 @@ | Dubious signature "(unsigned char *,long,int,OSSL_CALLBACK *,void *,OSSL_PASSPHRASE_CALLBACK *,void *,OSSL_LIB_CTX *,const char *)" in summary model. | | Dubious signature "(unsigned char *,size_t *,size_t)" in summary model. | | Dubious signature "(unsigned char *,size_t *,size_t,const unsigned char **,size_t *)" in summary model. | +| Dubious signature "(unsigned char *,size_t,const unsigned char *,size_t)" in summary model. | +| Dubious signature "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **)" in summary model. | +| Dubious signature "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **)" in summary model. | +| Dubious signature "(unsigned char *,size_t,scan_ctx *)" in summary model. | +| Dubious signature "(unsigned char *,uint32_t)" in summary model. | | Dubious signature "(unsigned char *,uint64_t,int)" in summary model. | +| Dubious signature "(unsigned char *,unsigned char *,ntlmdata *,unsigned char **,unsigned int *)" in summary model. | +| Dubious signature "(unsigned char *,unsigned char *,unsigned char *,unsigned char *)" in summary model. | | Dubious signature "(unsigned char *,void *)" in summary model. | | Dubious signature "(unsigned char)" in summary model. | | Dubious signature "(unsigned char,const char *,ct_log_entry_type_t,uint64_t,const char *,const char *)" in summary model. | @@ -3717,6 +4464,7 @@ | Dubious signature "(unsigned int *,const BF_KEY *)" in summary model. | | Dubious signature "(unsigned int *,const CAST_KEY *)" in summary model. | | Dubious signature "(unsigned int)" in summary model. | +| Dubious signature "(unsigned int,char *,size_t *)" in summary model. | | Dubious signature "(unsigned int,int,int)" in summary model. | | Dubious signature "(unsigned int[5],const unsigned char[64])" in summary model. | | Dubious signature "(unsigned long *,IDEA_KEY_SCHEDULE *)" in summary model. | @@ -3738,6 +4486,117 @@ | Dubious signature "(unsigned long[8],const unsigned long[8],const unsigned long[8],const unsigned long[8],unsigned long,const unsigned long[8])" in summary model. | | Dubious signature "(unsigned long[16],const unsigned long[16],const unsigned long[16],const unsigned long[16],const unsigned long[16],unsigned long)" in summary model. | | Dubious signature "(unsigned short,int)" in summary model. | +| Dubious signature "(uv__io_t *,uv__io_cb,int)" in summary model. | +| Dubious signature "(uv_async_t *)" in summary model. | +| Dubious signature "(uv_check_t *,uv_check_cb)" in summary model. | +| Dubious signature "(uv_connect_t *,uv_pipe_t *,const char *,size_t,unsigned int,uv_connect_cb)" in summary model. | +| Dubious signature "(uv_connect_t *,uv_pipe_t *,const char *,uv_connect_cb)" in summary model. | +| Dubious signature "(uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb)" in summary model. | +| Dubious signature "(uv_connect_t *,uv_tcp_t *,const sockaddr *,uv_connect_cb)" in summary model. | +| Dubious signature "(uv_cpu_info_t **,int *)" in summary model. | +| Dubious signature "(uv_env_item_t **,int *)" in summary model. | +| Dubious signature "(uv_env_item_t *,int)" in summary model. | +| Dubious signature "(uv_fs_event_t *,char *,size_t *)" in summary model. | +| Dubious signature "(uv_fs_event_t *,uv_fs_event_cb,const char *,unsigned int)" in summary model. | +| Dubious signature "(uv_fs_poll_t *)" in summary model. | +| Dubious signature "(uv_fs_poll_t *,char *,size_t *)" in summary model. | +| Dubious signature "(uv_fs_poll_t *,uv_fs_poll_cb,const char *,unsigned int)" in summary model. | +| Dubious signature "(uv_fs_t *)" in summary model. | +| Dubious signature "(uv_fs_t *,uv_dirent_t *)" in summary model. | +| Dubious signature "(uv_handle_t *)" in summary model. | +| Dubious signature "(uv_handle_t *,int *)" in summary model. | +| Dubious signature "(uv_handle_t *,int,int *)" in summary model. | +| Dubious signature "(uv_handle_t *,uv_close_cb)" in summary model. | +| Dubious signature "(uv_handle_t *,void *)" in summary model. | +| Dubious signature "(uv_idle_t *,uv_idle_cb)" in summary model. | +| Dubious signature "(uv_interface_address_t **,int *)" in summary model. | +| Dubious signature "(uv_key_t *)" in summary model. | +| Dubious signature "(uv_key_t *,void *)" in summary model. | +| Dubious signature "(uv_lib_t *,const char *,void **)" in summary model. | +| Dubious signature "(uv_loop_t *)" in summary model. | +| Dubious signature "(uv_loop_t *,FILE *)" in summary model. | +| Dubious signature "(uv_loop_t *,uv__io_t *)" in summary model. | +| Dubious signature "(uv_loop_t *,uv__io_t *,unsigned int)" in summary model. | +| Dubious signature "(uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int)" in summary model. | +| Dubious signature "(uv_loop_t *,uv__work *,uv__work_kind,..(*)(..),..(*)(..))" in summary model. | +| Dubious signature "(uv_loop_t *,uv_async_t *,uv_async_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_check_t *)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_event_t *)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_poll_t *)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,int)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,int,int)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,uint32_t)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,uv_file,int64_t,uv_fs_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,uv_file,int,uv_fs_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_idle_t *)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_loop_option,va_list)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_pipe_t *,int)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_poll_t *,int)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_poll_t *,uv_os_sock_t)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_prepare_t *)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_process_t *,const uv_process_options_t *)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_signal_t *)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_stream_t *,uv_handle_type)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_tcp_t *)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_tcp_t *,unsigned int)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_timer_t *)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_tty_t *,int,uv_file,int)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_udp_t *)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_udp_t *,unsigned int)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_udp_t *,unsigned int,int)" in summary model. | +| Dubious signature "(uv_loop_t *,uv_work_t *,uv_work_cb,uv_after_work_cb)" in summary model. | +| Dubious signature "(uv_loop_t *,void *)" in summary model. | +| Dubious signature "(uv_pipe_t *)" in summary model. | +| Dubious signature "(uv_pipe_t *,const char *)" in summary model. | +| Dubious signature "(uv_pipe_t *,const char *,size_t,unsigned int)" in summary model. | +| Dubious signature "(uv_pipe_t *,int,uv_connection_cb)" in summary model. | +| Dubious signature "(uv_pipe_t *,uv_file)" in summary model. | +| Dubious signature "(uv_poll_t *,int,uv_poll_cb)" in summary model. | +| Dubious signature "(uv_prepare_t *,uv_prepare_cb)" in summary model. | +| Dubious signature "(uv_req_t *,void *)" in summary model. | +| Dubious signature "(uv_sem_t *)" in summary model. | +| Dubious signature "(uv_shutdown_t *,uv_stream_t *,uv_shutdown_cb)" in summary model. | +| Dubious signature "(uv_signal_t *,uv_signal_cb,int)" in summary model. | +| Dubious signature "(uv_stream_t *,int,int)" in summary model. | +| Dubious signature "(uv_stream_t *,int,uv_connection_cb)" in summary model. | +| Dubious signature "(uv_stream_t *,uv_alloc_cb,uv_read_cb)" in summary model. | +| Dubious signature "(uv_stream_t *,uv_stream_t *)" in summary model. | +| Dubious signature "(uv_tcp_t *,int,uv_connection_cb)" in summary model. | +| Dubious signature "(uv_tcp_t *,uv_close_cb)" in summary model. | +| Dubious signature "(uv_tcp_t *,uv_os_sock_t)" in summary model. | +| Dubious signature "(uv_thread_t *)" in summary model. | +| Dubious signature "(uv_thread_t *,char *,char *,size_t)" in summary model. | +| Dubious signature "(uv_thread_t *,char *,size_t)" in summary model. | +| Dubious signature "(uv_timer_t *,uint64_t)" in summary model. | +| Dubious signature "(uv_timer_t *,uv_timer_cb,uint64_t,uint64_t)" in summary model. | +| Dubious signature "(uv_tty_t *,uv_tty_mode_t)" in summary model. | +| Dubious signature "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb)" in summary model. | +| Dubious signature "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb)" in summary model. | +| Dubious signature "(uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *)" in summary model. | +| Dubious signature "(uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int)" in summary model. | +| Dubious signature "(uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[])" in summary model. | +| Dubious signature "(uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[],unsigned int)" in summary model. | +| Dubious signature "(uv_udp_t *,uv_alloc_cb,uv_udp_recv_cb)" in summary model. | +| Dubious signature "(uv_udp_t *,uv_os_sock_t)" in summary model. | +| Dubious signature "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb)" in summary model. | +| Dubious signature "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb)" in summary model. | | Dubious signature "(vector &&)" in summary model. | | Dubious signature "(vector &&,const Allocator &)" in summary model. | | Dubious signature "(void *)" in summary model. | @@ -3751,12 +4610,15 @@ | Dubious signature "(void *,const char *,int)" in summary model. | | Dubious signature "(void *,const unsigned char *,size_t,const unsigned char *,size_t,const OSSL_PARAM[])" in summary model. | | Dubious signature "(void *,const unsigned char *,unsigned char *,const unsigned char *,size_t,block128_f)" in summary model. | +| Dubious signature "(void *,curl_off_t,curl_off_t,curl_off_t,curl_off_t)" in summary model. | +| Dubious signature "(void *,curl_off_t,int)" in summary model. | | Dubious signature "(void *,int)" in summary model. | | Dubious signature "(void *,int,const OSSL_PARAM[])" in summary model. | | Dubious signature "(void *,int,size_t,size_t,size_t,uint64_t,const PROV_CIPHER_HW *)" in summary model. | | Dubious signature "(void *,size_t)" in summary model. | | Dubious signature "(void *,size_t,const EC_POINT *,const EC_KEY *,..(*)(..))" in summary model. | | Dubious signature "(void *,size_t,const char *,int)" in summary model. | +| Dubious signature "(void *,size_t,size_t)" in summary model. | | Dubious signature "(void *,size_t,size_t,const char *,int)" in summary model. | | Dubious signature "(void *,size_t,size_t,size_t,unsigned int,uint64_t,const PROV_CIPHER_HW *,void *)" in summary model. | | Dubious signature "(void *,sqlite3 *,int,const char *)" in summary model. | @@ -3771,6 +4633,11 @@ | Dubious signature "(wchar_t *)" in summary model. | | Dubious signature "(wchar_t, const CStringT &)" in summary model. | | Dubious signature "(wchar_t,const CStringT &)" in summary model. | +| Dubious signature "(z_streamp,Bytef *,uInt *)" in summary model. | +| Dubious signature "(z_streamp,const Bytef *,uInt)" in summary model. | +| Dubious signature "(z_streamp,int *)" in summary model. | +| Dubious signature "(z_streamp,unsigned int *,int *)" in summary model. | +| Dubious signature "(z_streamp,unsigned int)" in summary model. | | Unrecognized input specification "Field[****hEvent]" in summary model. | | Unrecognized input specification "Field[***hEvent]" in summary model. | | Unrecognized output specification "Field[****hEvent]" in summary model. | diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected b/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected index 7a5791c2756..5311879eebf 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected @@ -17,6 +17,9 @@ signatureMatches | arrayassignment.cpp:3:6:3:9 | sink | (int) | | X509_TRUST_get0 | 0 | | arrayassignment.cpp:3:6:3:9 | sink | (int) | | X509_TRUST_get_by_id | 0 | | arrayassignment.cpp:3:6:3:9 | sink | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| arrayassignment.cpp:3:6:3:9 | sink | (int) | | c_tolower | 0 | +| arrayassignment.cpp:3:6:3:9 | sink | (int) | | c_toupper | 0 | +| arrayassignment.cpp:3:6:3:9 | sink | (int) | | curlx_sitouz | 0 | | arrayassignment.cpp:3:6:3:9 | sink | (int) | | evp_pkey_type2name | 0 | | arrayassignment.cpp:3:6:3:9 | sink | (int) | | ossl_cmp_bodytype_to_string | 0 | | arrayassignment.cpp:3:6:3:9 | sink | (int) | | ossl_tolower | 0 | @@ -24,6 +27,12 @@ signatureMatches | arrayassignment.cpp:3:6:3:9 | sink | (int) | | sqlite3_compileoption_get | 0 | | arrayassignment.cpp:3:6:3:9 | sink | (int) | | sqlite3_errstr | 0 | | arrayassignment.cpp:3:6:3:9 | sink | (int) | | tls13_alert_code | 0 | +| arrayassignment.cpp:3:6:3:9 | sink | (int) | | uv__accept | 0 | +| arrayassignment.cpp:3:6:3:9 | sink | (int) | | uv_err_name | 0 | +| arrayassignment.cpp:3:6:3:9 | sink | (int) | | uv_get_osfhandle | 0 | +| arrayassignment.cpp:3:6:3:9 | sink | (int) | | uv_strerror | 0 | +| arrayassignment.cpp:3:6:3:9 | sink | (int) | | uv_translate_sys_error | 0 | +| arrayassignment.cpp:3:6:3:9 | sink | (int) | | zError | 0 | | arrayassignment.cpp:88:7:88:9 | get | (int) | | ASN1_STRING_type_new | 0 | | arrayassignment.cpp:88:7:88:9 | get | (int) | | ASN1_tag2bit | 0 | | arrayassignment.cpp:88:7:88:9 | get | (int) | | ASN1_tag2str | 0 | @@ -42,6 +51,9 @@ signatureMatches | arrayassignment.cpp:88:7:88:9 | get | (int) | | X509_TRUST_get0 | 0 | | arrayassignment.cpp:88:7:88:9 | get | (int) | | X509_TRUST_get_by_id | 0 | | arrayassignment.cpp:88:7:88:9 | get | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| arrayassignment.cpp:88:7:88:9 | get | (int) | | c_tolower | 0 | +| arrayassignment.cpp:88:7:88:9 | get | (int) | | c_toupper | 0 | +| arrayassignment.cpp:88:7:88:9 | get | (int) | | curlx_sitouz | 0 | | arrayassignment.cpp:88:7:88:9 | get | (int) | | evp_pkey_type2name | 0 | | arrayassignment.cpp:88:7:88:9 | get | (int) | | ossl_cmp_bodytype_to_string | 0 | | arrayassignment.cpp:88:7:88:9 | get | (int) | | ossl_tolower | 0 | @@ -49,6 +61,12 @@ signatureMatches | arrayassignment.cpp:88:7:88:9 | get | (int) | | sqlite3_compileoption_get | 0 | | arrayassignment.cpp:88:7:88:9 | get | (int) | | sqlite3_errstr | 0 | | arrayassignment.cpp:88:7:88:9 | get | (int) | | tls13_alert_code | 0 | +| arrayassignment.cpp:88:7:88:9 | get | (int) | | uv__accept | 0 | +| arrayassignment.cpp:88:7:88:9 | get | (int) | | uv_err_name | 0 | +| arrayassignment.cpp:88:7:88:9 | get | (int) | | uv_get_osfhandle | 0 | +| arrayassignment.cpp:88:7:88:9 | get | (int) | | uv_strerror | 0 | +| arrayassignment.cpp:88:7:88:9 | get | (int) | | uv_translate_sys_error | 0 | +| arrayassignment.cpp:88:7:88:9 | get | (int) | | zError | 0 | | arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | ASN1_STRING_type_new | 0 | | arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | ASN1_tag2bit | 0 | | arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | ASN1_tag2str | 0 | @@ -67,6 +85,9 @@ signatureMatches | arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | X509_TRUST_get0 | 0 | | arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | X509_TRUST_get_by_id | 0 | | arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | c_tolower | 0 | +| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | c_toupper | 0 | +| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | curlx_sitouz | 0 | | arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | evp_pkey_type2name | 0 | | arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | ossl_cmp_bodytype_to_string | 0 | | arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | ossl_tolower | 0 | @@ -74,12 +95,22 @@ signatureMatches | arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | sqlite3_compileoption_get | 0 | | arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | sqlite3_errstr | 0 | | arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | tls13_alert_code | 0 | +| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | uv__accept | 0 | +| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | uv_err_name | 0 | +| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | uv_get_osfhandle | 0 | +| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | uv_strerror | 0 | +| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | uv_translate_sys_error | 0 | +| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | zError | 0 | | atl.cpp:71:5:71:17 | _U_STRINGorID | (UINT) | CComBSTR | LoadString | 0 | | atl.cpp:71:5:71:17 | _U_STRINGorID | (UINT) | _U_STRINGorID | _U_STRINGorID | 0 | | atl.cpp:71:5:71:17 | _U_STRINGorID | (unsigned int) | | Jim_IntHashFunction | 0 | +| atl.cpp:71:5:71:17 | _U_STRINGorID | (unsigned int) | | curlx_uitous | 0 | | atl.cpp:71:5:71:17 | _U_STRINGorID | (unsigned int) | | ssl3_get_cipher | 0 | | atl.cpp:72:5:72:17 | _U_STRINGorID | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | | atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | BIO_gethostbyname | 0 | +| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | Curl_copy_header_value | 0 | +| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | Curl_get_scheme_handler | 0 | +| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | Curl_getdate_capped | 0 | | atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | Jim_StrDup | 0 | | atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | OPENSSL_LH_strhash | 0 | | atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -90,11 +121,20 @@ signatureMatches | atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | X509_LOOKUP_meth_new | 0 | | atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | a2i_IPADDRESS | 0 | | atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | a2i_IPADDRESS_NC | 0 | +| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | last_component | 0 | | atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | opt_path_end | 0 | | atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | opt_progname | 0 | | atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | ossl_lh_strcasehash | 0 | | atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | strhash | 0 | +| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | uc_script_byname | 0 | +| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | uv__strdup | 0 | +| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | uv_wtf8_length_as_utf16 | 0 | +| atl.cpp:201:8:201:12 | GetAt | (size_t) | | BrotliEncoderMaxCompressedSize | 0 | | atl.cpp:201:8:201:12 | GetAt | (size_t) | | EVP_PKEY_meth_get0 | 0 | +| atl.cpp:201:8:201:12 | GetAt | (size_t) | | curlx_uztosi | 0 | +| atl.cpp:201:8:201:12 | GetAt | (size_t) | | curlx_uztosz | 0 | +| atl.cpp:201:8:201:12 | GetAt | (size_t) | | curlx_uztoui | 0 | +| atl.cpp:201:8:201:12 | GetAt | (size_t) | | curlx_uztoul | 0 | | atl.cpp:201:8:201:12 | GetAt | (size_t) | | ossl_get_extension_type | 0 | | atl.cpp:201:8:201:12 | GetAt | (size_t) | | ossl_param_bytes_to_blocks | 0 | | atl.cpp:201:8:201:12 | GetAt | (size_t) | | ossl_quic_sstream_new | 0 | @@ -109,9 +149,20 @@ signatureMatches | atl.cpp:206:10:206:17 | InsertAt | (CCM128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_ccm128_tag | 2 | | atl.cpp:206:10:206:17 | InsertAt | (CMAC_CTX *,const void *,size_t) | | CMAC_Update | 2 | | atl.cpp:206:10:206:17 | InsertAt | (CMS_RecipientInfo *,const unsigned char *,size_t) | | CMS_RecipientInfo_kekri_id_cmp | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_alnum | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_bytes | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_hex | 2 | | atl.cpp:206:10:206:17 | InsertAt | (DH *,const unsigned char *,size_t) | | ossl_dh_buf2key | 2 | | atl.cpp:206:10:206:17 | InsertAt | (EC_GROUP *,const unsigned char *,size_t) | | EC_GROUP_set_seed | 2 | | atl.cpp:206:10:206:17 | InsertAt | (EC_KEY *,const unsigned char *,size_t) | | ossl_ec_key_simple_oct2priv | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha1_init | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha256_init | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha512_init | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 2 | | atl.cpp:206:10:206:17 | InsertAt | (EVP_MD_CTX *,const unsigned char *,size_t) | | EVP_DigestVerifyFinal | 2 | | atl.cpp:206:10:206:17 | InsertAt | (EVP_PKEY *,char *,size_t) | | EVP_PKEY_get_default_digest_name | 2 | | atl.cpp:206:10:206:17 | InsertAt | (EVP_RAND_CTX *,unsigned char *,size_t) | | EVP_RAND_nonce | 2 | @@ -122,6 +173,9 @@ signatureMatches | atl.cpp:206:10:206:17 | InsertAt | (KECCAK1600_CTX *,const void *,size_t) | | ossl_sha3_update | 2 | | atl.cpp:206:10:206:17 | InsertAt | (KECCAK1600_CTX *,unsigned char *,size_t) | | ossl_sha3_squeeze | 2 | | atl.cpp:206:10:206:17 | InsertAt | (KECCAK1600_CTX *,unsigned char,size_t) | | ossl_sha3_init | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (LIBSSH2_CHANNEL *,const char *,size_t) | | libssh2_channel_signal_ex | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (LIBSSH2_SFTP_HANDLE *,char *,size_t) | | libssh2_sftp_read | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (LIBSSH2_SFTP_HANDLE *,const char *,size_t) | | libssh2_sftp_write | 2 | | atl.cpp:206:10:206:17 | InsertAt | (MD4_CTX *,const void *,size_t) | | MD4_Update | 2 | | atl.cpp:206:10:206:17 | InsertAt | (MD4_CTX *,const void *,size_t) | | md4_block_data_order | 2 | | atl.cpp:206:10:206:17 | InsertAt | (MD5_CTX *,const void *,size_t) | | MD5_Update | 2 | @@ -129,6 +183,7 @@ signatureMatches | atl.cpp:206:10:206:17 | InsertAt | (MDC2_CTX *,const unsigned char *,size_t) | | MDC2_Update | 2 | | atl.cpp:206:10:206:17 | InsertAt | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_pk_decode | 2 | | atl.cpp:206:10:206:17 | InsertAt | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_sk_decode | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (MemoryManager *,const uint8_t *,size_t) | | CreatePreparedDictionary | 2 | | atl.cpp:206:10:206:17 | InsertAt | (OCB128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_ocb128_aad | 2 | | atl.cpp:206:10:206:17 | InsertAt | (OCB128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_ocb128_tag | 2 | | atl.cpp:206:10:206:17 | InsertAt | (OSSL_HPKE_CTX *,const unsigned char *,size_t) | | OSSL_HPKE_CTX_set1_ikme | 2 | @@ -199,8 +254,15 @@ signatureMatches | atl.cpp:206:10:206:17 | InsertAt | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_email | 2 | | atl.cpp:206:10:206:17 | InsertAt | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_host | 2 | | atl.cpp:206:10:206:17 | InsertAt | (X509_VERIFY_PARAM *,const unsigned char *,size_t) | | X509_VERIFY_PARAM_set1_ip | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (bufc_pool *,size_t,size_t) | | Curl_bufcp_init | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (bufq *,size_t,size_t) | | Curl_bufq_init | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (bufref *,const void *,size_t) | | Curl_bufref_memdup | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (char **,size_t *,size_t) | | Curl_str_number | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (char *,const char *,size_t) | | Curl_strntolower | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (char *,const char *,size_t) | | Curl_strntoupper | 2 | | atl.cpp:206:10:206:17 | InsertAt | (char *,const char *,size_t) | | OPENSSL_strlcat | 2 | | atl.cpp:206:10:206:17 | InsertAt | (char *,const char *,size_t) | | OPENSSL_strlcpy | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (char *,const char *,size_t) | | uv__strscpy | 2 | | atl.cpp:206:10:206:17 | InsertAt | (const CTLOG_STORE *,const uint8_t *,size_t) | | CTLOG_STORE_get0_log_by_id | 2 | | atl.cpp:206:10:206:17 | InsertAt | (const EC_KEY *,unsigned char *,size_t) | | ossl_ec_key_simple_priv2oct | 2 | | atl.cpp:206:10:206:17 | InsertAt | (const EVP_MD *,const OSSL_ITEM *,size_t) | | ossl_digest_md_to_nid | 2 | @@ -214,20 +276,64 @@ signatureMatches | atl.cpp:206:10:206:17 | InsertAt | (const SSL_SESSION *,unsigned char *,size_t) | | SSL_SESSION_get_master_key | 2 | | atl.cpp:206:10:206:17 | InsertAt | (const char *,char **,size_t) | | OSSL_PARAM_construct_utf8_ptr | 2 | | atl.cpp:206:10:206:17 | InsertAt | (const char *,char *,size_t) | | OSSL_PARAM_construct_utf8_string | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (const char *,char *,size_t) | | getpass_r | 2 | | atl.cpp:206:10:206:17 | InsertAt | (const char *,const char *,size_t) | | OPENSSL_strncasecmp | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (const char *,const char *,size_t) | | c_strncasecmp | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (const char *,uint16_t *,size_t) | | uv_wtf8_to_utf16 | 2 | | atl.cpp:206:10:206:17 | InsertAt | (const char *,unsigned char *,size_t) | | OSSL_PARAM_construct_BN | 2 | | atl.cpp:206:10:206:17 | InsertAt | (const char *,void **,size_t) | | OSSL_PARAM_construct_octet_ptr | 2 | | atl.cpp:206:10:206:17 | InsertAt | (const char *,void *,size_t) | | OSSL_PARAM_construct_octet_string | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (const char *,void *,size_t) | | uv__random_readpath | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (const sockaddr *,char *,size_t) | | uv_ip_name | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (const sockaddr_in6 *,char *,size_t) | | uv_ip6_name | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (const sockaddr_in *,char *,size_t) | | uv_ip4_name | 2 | | atl.cpp:206:10:206:17 | InsertAt | (const unsigned char *,size_t,size_t) | | ossl_rand_pool_attach | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (curl_mimepart *,const char *,size_t) | | curl_mime_data | 2 | | atl.cpp:206:10:206:17 | InsertAt | (curve448_scalar_t,const unsigned char *,size_t) | | ossl_curve448_scalar_decode_long | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (dynhds *,const char *,size_t) | | Curl_dynhds_get | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (dynhds *,const char *,size_t) | | Curl_dynhds_h1_add_line | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (dynhds *,size_t,size_t) | | Curl_dynhds_init | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (int *,const char *,size_t) | | Curl_http_decode_status | 2 | | atl.cpp:206:10:206:17 | InsertAt | (int *,int *,size_t) | | EVP_PBE_get | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (int,char *,size_t) | | Curl_strerror | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (int,char *,size_t) | | uv_err_name_r | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (int,char *,size_t) | | uv_strerror_r | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (int,int,size_t) | | BrotliEncoderEstimatePeakMemoryUsage | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_buf *,uint8_t *,size_t) | | nghttp2_buf_wrap_init | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_extension *,nghttp2_origin_entry *,size_t) | | nghttp2_frame_origin_init | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_extpri_parse_priority | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_http_parse_priority | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_hd_deflater *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_bound | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv2 | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_session *,int32_t,size_t) | | nghttp2_session_consume | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_session *,nghttp2_settings_entry *,size_t) | | nghttp2_session_update_local_settings | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_settings *,nghttp2_settings_entry *,size_t) | | nghttp2_frame_unpack_settings_payload | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (sfparse_parser *,const uint8_t *,size_t) | | sfparse_parser_init | 2 | | atl.cpp:206:10:206:17 | InsertAt | (size_t,OSSL_QTX_IOVEC *,size_t) | | ossl_quic_sstream_adjust_iov | 2 | | atl.cpp:206:10:206:17 | InsertAt | (stack_st_SCT **,const unsigned char **,size_t) | | o2i_SCT_LIST | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (ucs4_t *,const uint8_t *,size_t) | | u8_mbtouc_aux | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (uint8_t *,const nghttp2_settings_entry *,size_t) | | nghttp2_frame_pack_settings_payload | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (unsigned char **,const char *,size_t) | | _libssh2_store_str | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (unsigned char **,const unsigned char *,size_t) | | _libssh2_store_bignum2_bytes | 2 | | atl.cpp:206:10:206:17 | InsertAt | (unsigned char *,const unsigned char *,size_t) | | BUF_reverse | 2 | | atl.cpp:206:10:206:17 | InsertAt | (unsigned char *,size_t *,size_t) | | ossl_cipher_padblock | 2 | | atl.cpp:206:10:206:17 | InsertAt | (unsigned char *,size_t *,size_t) | | ossl_cipher_unpadblock | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (uv_thread_t *,char *,size_t) | | uv__thread_getname | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (uv_thread_t *,char *,size_t) | | uv_thread_getaffinity | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (uv_thread_t *,char *,size_t) | | uv_thread_getname | 2 | +| atl.cpp:206:10:206:17 | InsertAt | (void *,size_t,size_t) | | Curl_hash_str | 2 | | atl.cpp:206:10:206:17 | InsertAt | (void *,unsigned char *,size_t) | | ossl_drbg_clear_seed | 2 | +| atl.cpp:213:8:213:17 | operator[] | (size_t) | | BrotliEncoderMaxCompressedSize | 0 | | atl.cpp:213:8:213:17 | operator[] | (size_t) | | EVP_PKEY_meth_get0 | 0 | +| atl.cpp:213:8:213:17 | operator[] | (size_t) | | curlx_uztosi | 0 | +| atl.cpp:213:8:213:17 | operator[] | (size_t) | | curlx_uztosz | 0 | +| atl.cpp:213:8:213:17 | operator[] | (size_t) | | curlx_uztoui | 0 | +| atl.cpp:213:8:213:17 | operator[] | (size_t) | | curlx_uztoul | 0 | | atl.cpp:213:8:213:17 | operator[] | (size_t) | | ossl_get_extension_type | 0 | | atl.cpp:213:8:213:17 | operator[] | (size_t) | | ossl_param_bytes_to_blocks | 0 | | atl.cpp:213:8:213:17 | operator[] | (size_t) | | ossl_quic_sstream_new | 0 | @@ -238,10 +344,22 @@ signatureMatches | atl.cpp:259:5:259:12 | CAtlList | (UINT) | _U_STRINGorID | _U_STRINGorID | 0 | | atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | Jim_IntHashFunction | 0 | | atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | Jim_IntHashFunction | 0 | +| atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | curlx_uitous | 0 | +| atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | curlx_uitous | 0 | | atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | ssl3_get_cipher | 0 | | atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | ssl3_get_cipher | 0 | +| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | BrotliEncoderMaxCompressedSize | 0 | +| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | BrotliEncoderMaxCompressedSize | 0 | | atl.cpp:268:14:268:22 | FindIndex | (size_t) | | EVP_PKEY_meth_get0 | 0 | | atl.cpp:268:14:268:22 | FindIndex | (size_t) | | EVP_PKEY_meth_get0 | 0 | +| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztosi | 0 | +| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztosi | 0 | +| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztosz | 0 | +| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztosz | 0 | +| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztoui | 0 | +| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztoui | 0 | +| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztoul | 0 | +| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztoul | 0 | | atl.cpp:268:14:268:22 | FindIndex | (size_t) | | ossl_get_extension_type | 0 | | atl.cpp:268:14:268:22 | FindIndex | (size_t) | | ossl_get_extension_type | 0 | | atl.cpp:268:14:268:22 | FindIndex | (size_t) | | ossl_param_bytes_to_blocks | 0 | @@ -272,6 +390,9 @@ signatureMatches | atl.cpp:412:5:412:12 | CComBSTR | (int) | | X509_TRUST_get0 | 0 | | atl.cpp:412:5:412:12 | CComBSTR | (int) | | X509_TRUST_get_by_id | 0 | | atl.cpp:412:5:412:12 | CComBSTR | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| atl.cpp:412:5:412:12 | CComBSTR | (int) | | c_tolower | 0 | +| atl.cpp:412:5:412:12 | CComBSTR | (int) | | c_toupper | 0 | +| atl.cpp:412:5:412:12 | CComBSTR | (int) | | curlx_sitouz | 0 | | atl.cpp:412:5:412:12 | CComBSTR | (int) | | evp_pkey_type2name | 0 | | atl.cpp:412:5:412:12 | CComBSTR | (int) | | ossl_cmp_bodytype_to_string | 0 | | atl.cpp:412:5:412:12 | CComBSTR | (int) | | ossl_tolower | 0 | @@ -279,6 +400,12 @@ signatureMatches | atl.cpp:412:5:412:12 | CComBSTR | (int) | | sqlite3_compileoption_get | 0 | | atl.cpp:412:5:412:12 | CComBSTR | (int) | | sqlite3_errstr | 0 | | atl.cpp:412:5:412:12 | CComBSTR | (int) | | tls13_alert_code | 0 | +| atl.cpp:412:5:412:12 | CComBSTR | (int) | | uv__accept | 0 | +| atl.cpp:412:5:412:12 | CComBSTR | (int) | | uv_err_name | 0 | +| atl.cpp:412:5:412:12 | CComBSTR | (int) | | uv_get_osfhandle | 0 | +| atl.cpp:412:5:412:12 | CComBSTR | (int) | | uv_strerror | 0 | +| atl.cpp:412:5:412:12 | CComBSTR | (int) | | uv_translate_sys_error | 0 | +| atl.cpp:412:5:412:12 | CComBSTR | (int) | | zError | 0 | | atl.cpp:413:5:413:12 | CComBSTR | (int,LPCOLESTR) | CComBSTR | CComBSTR | 0 | | atl.cpp:413:5:413:12 | CComBSTR | (int,LPCOLESTR) | CComBSTR | CComBSTR | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 | @@ -290,6 +417,9 @@ signatureMatches | atl.cpp:414:5:414:12 | CComBSTR | (BIGNUM **,const char *) | | BN_hex2bn | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (CONF *,const char *) | | _CONF_new_section | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (CURLU *,const char *) | | Curl_url_set_authority | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (DSO *,const char *) | | DSO_convert_filename | 1 | @@ -300,10 +430,14 @@ signatureMatches | atl.cpp:414:5:414:12 | CComBSTR | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (GlobalConfig *,const char *) | | setvariable | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (Jim_Interp *,const char *) | | Jim_Eval | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | @@ -360,22 +494,45 @@ signatureMatches | atl.cpp:414:5:414:12 | CComBSTR | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (char **,const char *) | | Curl_setstropt | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (const char **,const char *) | | uv__utf8_decode1 | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | Configcmp | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | Curl_timestrcmp | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | DES_crypt | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | c_strcasecmp | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | get_passwd | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | gzopen | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | gzopen64 | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | openssl_fopen | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | ossl_pem_check_suffix | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | ossl_v3_name_cmp | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | sqlite3_strglob | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | sqlite3_stricmp | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (curl_off_t *,const char *) | | str2offset | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (curl_slist **,const char *) | | add2list | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (curl_slist *,const char *) | | curl_slist_append | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (dynbuf *,const char *) | | Curl_dyn_add | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (dynbuf *,const char *) | | curlx_dyn_add | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (gzFile,const char *) | | gzputs | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (int,LPCSTR) | CComBSTR | CComBSTR | 0 | | atl.cpp:414:5:414:12 | CComBSTR | (int,LPCSTR) | CComBSTR | CComBSTR | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (int,const char *) | | BIO_meth_new | 0 | | atl.cpp:414:5:414:12 | CComBSTR | (int,const char *) | | BIO_meth_new | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (int,const char *) | | gzdopen | 0 | +| atl.cpp:414:5:414:12 | CComBSTR | (int,const char *) | | gzdopen | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (lemon *,const char *) | | file_makename | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (long *,const char *) | | secs2ms | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (long *,const char *) | | str2num | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (long *,const char *) | | str2unum | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (size_t *,const char *) | | next_protos_parse | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (slist_wc **,const char *) | | easysrc_add | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (slist_wc *,const char *) | | slist_wc_append | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | @@ -386,11 +543,15 @@ signatureMatches | atl.cpp:414:5:414:12 | CComBSTR | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (unsigned long *,const char *) | | set_cert_ex | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (unsigned long *,const char *) | | set_name_ex | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | | atl.cpp:415:5:415:12 | CComBSTR | (LPCOLESTR) | CComBSTR | Append | 0 | | atl.cpp:415:5:415:12 | CComBSTR | (LPCOLESTR) | CComBSTR | CComBSTR | 0 | | atl.cpp:416:5:416:12 | CComBSTR | (LPCSTR) | CComBSTR | Append | 0 | | atl.cpp:416:5:416:12 | CComBSTR | (LPCSTR) | CComBSTR | CComBSTR | 0 | | atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | BIO_gethostbyname | 0 | +| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | Curl_copy_header_value | 0 | +| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | Curl_get_scheme_handler | 0 | +| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | Curl_getdate_capped | 0 | | atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | Jim_StrDup | 0 | | atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | OPENSSL_LH_strhash | 0 | | atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -401,16 +562,23 @@ signatureMatches | atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | X509_LOOKUP_meth_new | 0 | | atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | a2i_IPADDRESS | 0 | | atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | a2i_IPADDRESS_NC | 0 | +| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | last_component | 0 | | atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | opt_path_end | 0 | | atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | opt_progname | 0 | | atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | ossl_lh_strcasehash | 0 | | atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | strhash | 0 | +| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | uc_script_byname | 0 | +| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | uv__strdup | 0 | +| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | uv_wtf8_length_as_utf16 | 0 | | atl.cpp:417:5:417:12 | CComBSTR | (CComBSTR &&) | CComBSTR | CComBSTR | 0 | | atl.cpp:420:13:420:18 | Append | (const CComBSTR &) | CComBSTR | Append | 0 | | atl.cpp:420:13:420:18 | Append | (const CComBSTR &) | CComBSTR | CComBSTR | 0 | | atl.cpp:421:13:421:18 | Append | (wchar_t) | | operator+= | 0 | | atl.cpp:421:13:421:18 | Append | (wchar_t) | CComBSTR | Append | 0 | | atl.cpp:421:13:421:18 | Append | (wchar_t) | CSimpleStringT | operator+= | 0 | +| atl.cpp:422:13:422:18 | Append | (char) | | Curl_raw_tolower | 0 | +| atl.cpp:422:13:422:18 | Append | (char) | | Curl_raw_toupper | 0 | +| atl.cpp:422:13:422:18 | Append | (char) | | findshortopt | 0 | | atl.cpp:422:13:422:18 | Append | (char) | | operator+= | 0 | | atl.cpp:422:13:422:18 | Append | (char) | CComBSTR | Append | 0 | | atl.cpp:422:13:422:18 | Append | (char) | CSimpleStringT | operator+= | 0 | @@ -419,6 +587,9 @@ signatureMatches | atl.cpp:424:13:424:18 | Append | (LPCSTR) | CComBSTR | Append | 0 | | atl.cpp:424:13:424:18 | Append | (LPCSTR) | CComBSTR | CComBSTR | 0 | | atl.cpp:424:13:424:18 | Append | (const char *) | | BIO_gethostbyname | 0 | +| atl.cpp:424:13:424:18 | Append | (const char *) | | Curl_copy_header_value | 0 | +| atl.cpp:424:13:424:18 | Append | (const char *) | | Curl_get_scheme_handler | 0 | +| atl.cpp:424:13:424:18 | Append | (const char *) | | Curl_getdate_capped | 0 | | atl.cpp:424:13:424:18 | Append | (const char *) | | Jim_StrDup | 0 | | atl.cpp:424:13:424:18 | Append | (const char *) | | OPENSSL_LH_strhash | 0 | | atl.cpp:424:13:424:18 | Append | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -429,10 +600,14 @@ signatureMatches | atl.cpp:424:13:424:18 | Append | (const char *) | | X509_LOOKUP_meth_new | 0 | | atl.cpp:424:13:424:18 | Append | (const char *) | | a2i_IPADDRESS | 0 | | atl.cpp:424:13:424:18 | Append | (const char *) | | a2i_IPADDRESS_NC | 0 | +| atl.cpp:424:13:424:18 | Append | (const char *) | | last_component | 0 | | atl.cpp:424:13:424:18 | Append | (const char *) | | opt_path_end | 0 | | atl.cpp:424:13:424:18 | Append | (const char *) | | opt_progname | 0 | | atl.cpp:424:13:424:18 | Append | (const char *) | | ossl_lh_strcasehash | 0 | | atl.cpp:424:13:424:18 | Append | (const char *) | | strhash | 0 | +| atl.cpp:424:13:424:18 | Append | (const char *) | | uc_script_byname | 0 | +| atl.cpp:424:13:424:18 | Append | (const char *) | | uv__strdup | 0 | +| atl.cpp:424:13:424:18 | Append | (const char *) | | uv_wtf8_length_as_utf16 | 0 | | atl.cpp:425:13:425:18 | Append | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | | atl.cpp:425:13:425:18 | Append | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | | atl.cpp:425:13:425:18 | Append | (BIGNUM *,int) | | BN_clear_bit | 1 | @@ -451,6 +626,8 @@ signatureMatches | atl.cpp:425:13:425:18 | Append | (BIO *,int) | | TXT_DB_read | 1 | | atl.cpp:425:13:425:18 | Append | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | atl.cpp:425:13:425:18 | Append | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| atl.cpp:425:13:425:18 | Append | (CURL *,int) | | curl_easy_pause | 1 | +| atl.cpp:425:13:425:18 | Append | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | atl.cpp:425:13:425:18 | Append | (DH *,int) | | DH_clear_flags | 1 | | atl.cpp:425:13:425:18 | Append | (DH *,int) | | DH_set_flags | 1 | | atl.cpp:425:13:425:18 | Append | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -494,6 +671,17 @@ signatureMatches | atl.cpp:425:13:425:18 | Append | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | atl.cpp:425:13:425:18 | Append | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | atl.cpp:425:13:425:18 | Append | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| atl.cpp:425:13:425:18 | Append | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| atl.cpp:425:13:425:18 | Append | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| atl.cpp:425:13:425:18 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| atl.cpp:425:13:425:18 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| atl.cpp:425:13:425:18 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| atl.cpp:425:13:425:18 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| atl.cpp:425:13:425:18 | Append | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| atl.cpp:425:13:425:18 | Append | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| atl.cpp:425:13:425:18 | Append | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| atl.cpp:425:13:425:18 | Append | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| atl.cpp:425:13:425:18 | Append | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | atl.cpp:425:13:425:18 | Append | (LPCOLESTR,int) | CComBSTR | Append | 0 | | atl.cpp:425:13:425:18 | Append | (LPCOLESTR,int) | CComBSTR | Append | 1 | | atl.cpp:425:13:425:18 | Append | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | @@ -612,8 +800,10 @@ signatureMatches | atl.cpp:425:13:425:18 | Append | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | atl.cpp:425:13:425:18 | Append | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | atl.cpp:425:13:425:18 | Append | (acttab *,int) | | acttab_insert | 1 | +| atl.cpp:425:13:425:18 | Append | (char *,int) | | Curl_str2addr | 1 | | atl.cpp:425:13:425:18 | Append | (char *,int) | | PEM_proc_type | 1 | | atl.cpp:425:13:425:18 | Append | (char,int) | CStringT | CStringT | 1 | +| atl.cpp:425:13:425:18 | Append | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | atl.cpp:425:13:425:18 | Append | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | atl.cpp:425:13:425:18 | Append | (const BIGNUM *,int) | | BN_get_flags | 1 | | atl.cpp:425:13:425:18 | Append | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -680,12 +870,22 @@ signatureMatches | atl.cpp:425:13:425:18 | Append | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | atl.cpp:425:13:425:18 | Append | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | atl.cpp:425:13:425:18 | Append | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| atl.cpp:425:13:425:18 | Append | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| atl.cpp:425:13:425:18 | Append | (gzFile,int) | | gzflush | 1 | +| atl.cpp:425:13:425:18 | Append | (gzFile,int) | | gzputc | 1 | | atl.cpp:425:13:425:18 | Append | (int *,int) | | X509_PURPOSE_set | 1 | | atl.cpp:425:13:425:18 | Append | (int *,int) | | X509_TRUST_set | 1 | | atl.cpp:425:13:425:18 | Append | (int,int) | | BN_security_bits | 1 | | atl.cpp:425:13:425:18 | Append | (int,int) | | EVP_MD_meth_new | 1 | | atl.cpp:425:13:425:18 | Append | (int,int) | | EVP_PKEY_meth_new | 1 | | atl.cpp:425:13:425:18 | Append | (int,int) | | acttab_alloc | 1 | +| atl.cpp:425:13:425:18 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| atl.cpp:425:13:425:18 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| atl.cpp:425:13:425:18 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| atl.cpp:425:13:425:18 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| atl.cpp:425:13:425:18 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| atl.cpp:425:13:425:18 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| atl.cpp:425:13:425:18 | Append | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | atl.cpp:425:13:425:18 | Append | (rule *,int) | | Configlist_add | 1 | | atl.cpp:425:13:425:18 | Append | (rule *,int) | | Configlist_addbasis | 1 | | atl.cpp:425:13:425:18 | Append | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -720,6 +920,7 @@ signatureMatches | atl.cpp:425:13:425:18 | Append | (unsigned char *,int) | | RAND_priv_bytes | 1 | | atl.cpp:425:13:425:18 | Append | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | atl.cpp:425:13:425:18 | Append | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| atl.cpp:425:13:425:18 | Append | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | atl.cpp:425:13:425:18 | Append | (void *,int) | | DSO_dsobyaddr | 1 | | atl.cpp:425:13:425:18 | Append | (void *,int) | | sqlite3_realloc | 1 | | atl.cpp:425:13:425:18 | Append | (wchar_t,int) | CStringT | CStringT | 1 | @@ -742,6 +943,8 @@ signatureMatches | atl.cpp:427:13:427:23 | AppendBytes | (BIO *,int) | | TXT_DB_read | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (CURL *,int) | | curl_easy_pause | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (DH *,int) | | DH_clear_flags | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (DH *,int) | | DH_set_flags | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -785,6 +988,17 @@ signatureMatches | atl.cpp:427:13:427:23 | AppendBytes | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (LPCOLESTR,int) | CComBSTR | Append | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -902,8 +1116,10 @@ signatureMatches | atl.cpp:427:13:427:23 | AppendBytes | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (acttab *,int) | | acttab_insert | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (char *,int) | | Curl_str2addr | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (char *,int) | | PEM_proc_type | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (char,int) | CStringT | CStringT | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (const BIGNUM *,int) | | BN_get_flags | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -976,12 +1192,22 @@ signatureMatches | atl.cpp:427:13:427:23 | AppendBytes | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (gzFile,int) | | gzflush | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (gzFile,int) | | gzputc | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (int *,int) | | X509_PURPOSE_set | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (int *,int) | | X509_TRUST_set | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (int,int) | | BN_security_bits | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (int,int) | | EVP_MD_meth_new | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (int,int) | | EVP_PKEY_meth_new | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (int,int) | | acttab_alloc | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (rule *,int) | | Configlist_add | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (rule *,int) | | Configlist_addbasis | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -1016,6 +1242,7 @@ signatureMatches | atl.cpp:427:13:427:23 | AppendBytes | (unsigned char *,int) | | RAND_priv_bytes | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| atl.cpp:427:13:427:23 | AppendBytes | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (void *,int) | | DSO_dsobyaddr | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (void *,int) | | sqlite3_realloc | 1 | | atl.cpp:427:13:427:23 | AppendBytes | (wchar_t,int) | CStringT | CStringT | 1 | @@ -1024,6 +1251,7 @@ signatureMatches | atl.cpp:428:13:428:23 | ArrayToBSTR | (const SAFEARRAY *) | CComSafeArray | operator= | 0 | | atl.cpp:430:10:430:15 | Attach | (wchar_t *) | CStringT | CStringT | 0 | | atl.cpp:440:10:440:19 | LoadString | (ASN1_STRING *,unsigned int) | | ossl_asn1_string_set_bits_left | 1 | +| atl.cpp:440:10:440:19 | LoadString | (Curl_easy *,unsigned int) | | Curl_ssl_supports | 1 | | atl.cpp:440:10:440:19 | LoadString | (EC_KEY *,unsigned int) | | EC_KEY_set_enc_flags | 1 | | atl.cpp:440:10:440:19 | LoadString | (EVP_ENCODE_CTX *,unsigned int) | | evp_encode_ctx_set_flags | 1 | | atl.cpp:440:10:440:19 | LoadString | (FFC_PARAMS *,unsigned int) | | ossl_ffc_params_set_flags | 1 | @@ -1041,9 +1269,15 @@ signatureMatches | atl.cpp:440:10:440:19 | LoadString | (X509_STORE_CTX *,unsigned int) | | X509_STORE_CTX_set_current_reasons | 1 | | atl.cpp:440:10:440:19 | LoadString | (X509_VERIFY_PARAM *,unsigned int) | | X509_VERIFY_PARAM_set_hostflags | 1 | | atl.cpp:440:10:440:19 | LoadString | (char *,unsigned int) | | utf8_fromunicode | 1 | +| atl.cpp:440:10:440:19 | LoadString | (char *,unsigned int) | | uv_buf_init | 1 | +| atl.cpp:440:10:440:19 | LoadString | (const uv__io_t *,unsigned int) | | uv__io_active | 1 | +| atl.cpp:440:10:440:19 | LoadString | (const uv_buf_t[],unsigned int) | | uv__count_bufs | 1 | +| atl.cpp:440:10:440:19 | LoadString | (gzFile,unsigned int) | | gzbuffer | 1 | +| atl.cpp:440:10:440:19 | LoadString | (z_streamp,unsigned int) | | inflate_fast | 1 | | atl.cpp:441:10:441:19 | LoadString | (UINT) | CComBSTR | LoadString | 0 | | atl.cpp:441:10:441:19 | LoadString | (UINT) | _U_STRINGorID | _U_STRINGorID | 0 | | atl.cpp:441:10:441:19 | LoadString | (unsigned int) | | Jim_IntHashFunction | 0 | +| atl.cpp:441:10:441:19 | LoadString | (unsigned int) | | curlx_uitous | 0 | | atl.cpp:441:10:441:19 | LoadString | (unsigned int) | | ssl3_get_cipher | 0 | | atl.cpp:449:15:449:24 | operator+= | (const CComBSTR &) | CComBSTR | Append | 0 | | atl.cpp:449:15:449:24 | operator+= | (const CComBSTR &) | CComBSTR | CComBSTR | 0 | @@ -1055,8 +1289,26 @@ signatureMatches | atl.cpp:544:13:544:15 | Add | (const SAFEARRAY *) | CComSafeArray | Add | 0 | | atl.cpp:544:13:544:15 | Add | (const SAFEARRAY *) | CComSafeArray | CComSafeArray | 0 | | atl.cpp:544:13:544:15 | Add | (const SAFEARRAY *) | CComSafeArray | operator= | 0 | +| atl.cpp:546:13:546:15 | Add | (Curl_easy *,bool) | | Curl_creader_set_rewind | 1 | +| atl.cpp:546:13:546:15 | Add | (Curl_easy *,bool) | | Curl_set_in_callback | 1 | | atl.cpp:546:13:546:15 | Add | (const T &,BOOL) | CComSafeArray | Add | 0 | | atl.cpp:546:13:546:15 | Add | (const T &,BOOL) | CComSafeArray | Add | 1 | +| atl.cpp:546:13:546:15 | Add | (curl_socket_t[2],bool) | | Curl_eventfd | 1 | +| atl.cpp:554:8:554:12 | GetAt | (long) | | curlx_sltosi | 0 | +| atl.cpp:554:8:554:12 | GetAt | (long) | | curlx_sltoui | 0 | +| atl.cpp:554:8:554:12 | GetAt | (long) | | curlx_sltous | 0 | +| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,CURLcode,bool) | | Curl_http_done | 2 | +| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_init | 2 | +| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_reset | 2 | +| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,connectdata *,bool) | | Curl_cpool_disconnect | 2 | +| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,connectdata *,bool) | | Curl_on_disconnect | 2 | +| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,curltime *,bool) | | Curl_timeleft | 2 | +| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,pingpong *,bool) | | Curl_pp_state_timeout | 2 | +| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,size_t,bool) | | Curl_bump_headersize | 2 | +| atl.cpp:565:13:565:17 | SetAt | (GlobalConfig *,timeval *,bool) | | progress_meter | 2 | +| atl.cpp:567:8:567:17 | operator[] | (long) | | curlx_sltosi | 0 | +| atl.cpp:567:8:567:17 | operator[] | (long) | | curlx_sltoui | 0 | +| atl.cpp:567:8:567:17 | operator[] | (long) | | curlx_sltous | 0 | | atl.cpp:568:8:568:17 | operator[] | (int) | | ASN1_STRING_type_new | 0 | | atl.cpp:568:8:568:17 | operator[] | (int) | | ASN1_tag2bit | 0 | | atl.cpp:568:8:568:17 | operator[] | (int) | | ASN1_tag2str | 0 | @@ -1075,6 +1327,9 @@ signatureMatches | atl.cpp:568:8:568:17 | operator[] | (int) | | X509_TRUST_get0 | 0 | | atl.cpp:568:8:568:17 | operator[] | (int) | | X509_TRUST_get_by_id | 0 | | atl.cpp:568:8:568:17 | operator[] | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| atl.cpp:568:8:568:17 | operator[] | (int) | | c_tolower | 0 | +| atl.cpp:568:8:568:17 | operator[] | (int) | | c_toupper | 0 | +| atl.cpp:568:8:568:17 | operator[] | (int) | | curlx_sitouz | 0 | | atl.cpp:568:8:568:17 | operator[] | (int) | | evp_pkey_type2name | 0 | | atl.cpp:568:8:568:17 | operator[] | (int) | | ossl_cmp_bodytype_to_string | 0 | | atl.cpp:568:8:568:17 | operator[] | (int) | | ossl_tolower | 0 | @@ -1082,6 +1337,12 @@ signatureMatches | atl.cpp:568:8:568:17 | operator[] | (int) | | sqlite3_compileoption_get | 0 | | atl.cpp:568:8:568:17 | operator[] | (int) | | sqlite3_errstr | 0 | | atl.cpp:568:8:568:17 | operator[] | (int) | | tls13_alert_code | 0 | +| atl.cpp:568:8:568:17 | operator[] | (int) | | uv__accept | 0 | +| atl.cpp:568:8:568:17 | operator[] | (int) | | uv_err_name | 0 | +| atl.cpp:568:8:568:17 | operator[] | (int) | | uv_get_osfhandle | 0 | +| atl.cpp:568:8:568:17 | operator[] | (int) | | uv_strerror | 0 | +| atl.cpp:568:8:568:17 | operator[] | (int) | | uv_translate_sys_error | 0 | +| atl.cpp:568:8:568:17 | operator[] | (int) | | zError | 0 | | atl.cpp:612:5:612:10 | CPathT | (PCXSTR) | | operator+= | 0 | | atl.cpp:612:5:612:10 | CPathT | (PCXSTR) | CSimpleStringT | operator+= | 0 | | atl.cpp:612:5:612:10 | CPathT | (PCXSTR) | CStringT | operator= | 0 | @@ -1119,6 +1380,9 @@ signatureMatches | atl.cpp:731:8:731:17 | operator[] | (int) | | X509_TRUST_get0 | 0 | | atl.cpp:731:8:731:17 | operator[] | (int) | | X509_TRUST_get_by_id | 0 | | atl.cpp:731:8:731:17 | operator[] | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| atl.cpp:731:8:731:17 | operator[] | (int) | | c_tolower | 0 | +| atl.cpp:731:8:731:17 | operator[] | (int) | | c_toupper | 0 | +| atl.cpp:731:8:731:17 | operator[] | (int) | | curlx_sitouz | 0 | | atl.cpp:731:8:731:17 | operator[] | (int) | | evp_pkey_type2name | 0 | | atl.cpp:731:8:731:17 | operator[] | (int) | | ossl_cmp_bodytype_to_string | 0 | | atl.cpp:731:8:731:17 | operator[] | (int) | | ossl_tolower | 0 | @@ -1126,6 +1390,12 @@ signatureMatches | atl.cpp:731:8:731:17 | operator[] | (int) | | sqlite3_compileoption_get | 0 | | atl.cpp:731:8:731:17 | operator[] | (int) | | sqlite3_errstr | 0 | | atl.cpp:731:8:731:17 | operator[] | (int) | | tls13_alert_code | 0 | +| atl.cpp:731:8:731:17 | operator[] | (int) | | uv__accept | 0 | +| atl.cpp:731:8:731:17 | operator[] | (int) | | uv_err_name | 0 | +| atl.cpp:731:8:731:17 | operator[] | (int) | | uv_get_osfhandle | 0 | +| atl.cpp:731:8:731:17 | operator[] | (int) | | uv_strerror | 0 | +| atl.cpp:731:8:731:17 | operator[] | (int) | | uv_translate_sys_error | 0 | +| atl.cpp:731:8:731:17 | operator[] | (int) | | zError | 0 | | atl.cpp:765:10:765:12 | Add | (const deque &,const Allocator &) | deque | deque | 1 | | atl.cpp:765:10:765:12 | Add | (const forward_list &,const Allocator &) | forward_list | forward_list | 1 | | atl.cpp:765:10:765:12 | Add | (const list &,const Allocator &) | list | list | 1 | @@ -1152,6 +1422,9 @@ signatureMatches | atl.cpp:770:11:770:20 | GetValueAt | (int) | | X509_TRUST_get0 | 0 | | atl.cpp:770:11:770:20 | GetValueAt | (int) | | X509_TRUST_get_by_id | 0 | | atl.cpp:770:11:770:20 | GetValueAt | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| atl.cpp:770:11:770:20 | GetValueAt | (int) | | c_tolower | 0 | +| atl.cpp:770:11:770:20 | GetValueAt | (int) | | c_toupper | 0 | +| atl.cpp:770:11:770:20 | GetValueAt | (int) | | curlx_sitouz | 0 | | atl.cpp:770:11:770:20 | GetValueAt | (int) | | evp_pkey_type2name | 0 | | atl.cpp:770:11:770:20 | GetValueAt | (int) | | ossl_cmp_bodytype_to_string | 0 | | atl.cpp:770:11:770:20 | GetValueAt | (int) | | ossl_tolower | 0 | @@ -1159,6 +1432,12 @@ signatureMatches | atl.cpp:770:11:770:20 | GetValueAt | (int) | | sqlite3_compileoption_get | 0 | | atl.cpp:770:11:770:20 | GetValueAt | (int) | | sqlite3_errstr | 0 | | atl.cpp:770:11:770:20 | GetValueAt | (int) | | tls13_alert_code | 0 | +| atl.cpp:770:11:770:20 | GetValueAt | (int) | | uv__accept | 0 | +| atl.cpp:770:11:770:20 | GetValueAt | (int) | | uv_err_name | 0 | +| atl.cpp:770:11:770:20 | GetValueAt | (int) | | uv_get_osfhandle | 0 | +| atl.cpp:770:11:770:20 | GetValueAt | (int) | | uv_strerror | 0 | +| atl.cpp:770:11:770:20 | GetValueAt | (int) | | uv_translate_sys_error | 0 | +| atl.cpp:770:11:770:20 | GetValueAt | (int) | | zError | 0 | | atl.cpp:776:10:776:14 | SetAt | (const deque &,const Allocator &) | deque | deque | 1 | | atl.cpp:776:10:776:14 | SetAt | (const forward_list &,const Allocator &) | forward_list | forward_list | 1 | | atl.cpp:776:10:776:14 | SetAt | (const list &,const Allocator &) | list | list | 1 | @@ -1181,6 +1460,8 @@ signatureMatches | atl.cpp:777:10:777:19 | SetAtIndex | (size_type,const T &,const Allocator &) | vector | vector | 2 | | atl.cpp:821:17:821:28 | Canonicalize | (unsigned long) | | BN_num_bits_word | 0 | | atl.cpp:821:17:821:28 | Canonicalize | (unsigned long) | | BUF_MEM_new_ex | 0 | +| atl.cpp:821:17:821:28 | Canonicalize | (unsigned long) | | curlx_ultouc | 0 | +| atl.cpp:821:17:821:28 | Canonicalize | (unsigned long) | | curlx_ultous | 0 | | atl.cpp:824:10:824:17 | CrackUrl | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_cert_flags | 1 | | atl.cpp:824:10:824:17 | CrackUrl | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_flags | 1 | | atl.cpp:824:10:824:17 | CrackUrl | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_nm_flags | 1 | @@ -1218,6 +1499,9 @@ signatureMatches | atl.cpp:825:17:825:25 | CreateUrl | (unsigned char *,int,unsigned long) | | UTF8_putc | 2 | | atl.cpp:842:17:842:28 | SetExtraInfo | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | | atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | BIO_gethostbyname | 0 | +| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | Curl_copy_header_value | 0 | +| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | Curl_get_scheme_handler | 0 | +| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | Curl_getdate_capped | 0 | | atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | Jim_StrDup | 0 | | atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | OPENSSL_LH_strhash | 0 | | atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -1228,12 +1512,19 @@ signatureMatches | atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | X509_LOOKUP_meth_new | 0 | | atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | a2i_IPADDRESS | 0 | | atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | a2i_IPADDRESS_NC | 0 | +| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | last_component | 0 | | atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | opt_path_end | 0 | | atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | opt_progname | 0 | | atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | ossl_lh_strcasehash | 0 | | atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | strhash | 0 | +| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | uc_script_byname | 0 | +| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | uv__strdup | 0 | +| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | uv_wtf8_length_as_utf16 | 0 | | atl.cpp:843:17:843:27 | SetHostName | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | | atl.cpp:843:17:843:27 | SetHostName | (const char *) | | BIO_gethostbyname | 0 | +| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | Curl_copy_header_value | 0 | +| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | Curl_get_scheme_handler | 0 | +| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | Curl_getdate_capped | 0 | | atl.cpp:843:17:843:27 | SetHostName | (const char *) | | Jim_StrDup | 0 | | atl.cpp:843:17:843:27 | SetHostName | (const char *) | | OPENSSL_LH_strhash | 0 | | atl.cpp:843:17:843:27 | SetHostName | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -1244,12 +1535,19 @@ signatureMatches | atl.cpp:843:17:843:27 | SetHostName | (const char *) | | X509_LOOKUP_meth_new | 0 | | atl.cpp:843:17:843:27 | SetHostName | (const char *) | | a2i_IPADDRESS | 0 | | atl.cpp:843:17:843:27 | SetHostName | (const char *) | | a2i_IPADDRESS_NC | 0 | +| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | last_component | 0 | | atl.cpp:843:17:843:27 | SetHostName | (const char *) | | opt_path_end | 0 | | atl.cpp:843:17:843:27 | SetHostName | (const char *) | | opt_progname | 0 | | atl.cpp:843:17:843:27 | SetHostName | (const char *) | | ossl_lh_strcasehash | 0 | | atl.cpp:843:17:843:27 | SetHostName | (const char *) | | strhash | 0 | +| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | uc_script_byname | 0 | +| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | uv__strdup | 0 | +| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | uv_wtf8_length_as_utf16 | 0 | | atl.cpp:844:17:844:27 | SetPassword | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | | atl.cpp:844:17:844:27 | SetPassword | (const char *) | | BIO_gethostbyname | 0 | +| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | Curl_copy_header_value | 0 | +| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | Curl_get_scheme_handler | 0 | +| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | Curl_getdate_capped | 0 | | atl.cpp:844:17:844:27 | SetPassword | (const char *) | | Jim_StrDup | 0 | | atl.cpp:844:17:844:27 | SetPassword | (const char *) | | OPENSSL_LH_strhash | 0 | | atl.cpp:844:17:844:27 | SetPassword | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -1260,12 +1558,19 @@ signatureMatches | atl.cpp:844:17:844:27 | SetPassword | (const char *) | | X509_LOOKUP_meth_new | 0 | | atl.cpp:844:17:844:27 | SetPassword | (const char *) | | a2i_IPADDRESS | 0 | | atl.cpp:844:17:844:27 | SetPassword | (const char *) | | a2i_IPADDRESS_NC | 0 | +| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | last_component | 0 | | atl.cpp:844:17:844:27 | SetPassword | (const char *) | | opt_path_end | 0 | | atl.cpp:844:17:844:27 | SetPassword | (const char *) | | opt_progname | 0 | | atl.cpp:844:17:844:27 | SetPassword | (const char *) | | ossl_lh_strcasehash | 0 | | atl.cpp:844:17:844:27 | SetPassword | (const char *) | | strhash | 0 | +| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | uc_script_byname | 0 | +| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | uv__strdup | 0 | +| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | uv_wtf8_length_as_utf16 | 0 | | atl.cpp:847:17:847:29 | SetSchemeName | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | | atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | BIO_gethostbyname | 0 | +| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | Curl_copy_header_value | 0 | +| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | Curl_get_scheme_handler | 0 | +| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | Curl_getdate_capped | 0 | | atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | Jim_StrDup | 0 | | atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | OPENSSL_LH_strhash | 0 | | atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -1276,12 +1581,19 @@ signatureMatches | atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | X509_LOOKUP_meth_new | 0 | | atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | a2i_IPADDRESS | 0 | | atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | a2i_IPADDRESS_NC | 0 | +| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | last_component | 0 | | atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | opt_path_end | 0 | | atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | opt_progname | 0 | | atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | ossl_lh_strcasehash | 0 | | atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | strhash | 0 | +| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | uc_script_byname | 0 | +| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | uv__strdup | 0 | +| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | uv_wtf8_length_as_utf16 | 0 | | atl.cpp:848:17:848:26 | SetUrlPath | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | | atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | BIO_gethostbyname | 0 | +| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | Curl_copy_header_value | 0 | +| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | Curl_get_scheme_handler | 0 | +| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | Curl_getdate_capped | 0 | | atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | Jim_StrDup | 0 | | atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | OPENSSL_LH_strhash | 0 | | atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -1292,12 +1604,19 @@ signatureMatches | atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | X509_LOOKUP_meth_new | 0 | | atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | a2i_IPADDRESS | 0 | | atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | a2i_IPADDRESS_NC | 0 | +| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | last_component | 0 | | atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | opt_path_end | 0 | | atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | opt_progname | 0 | | atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | ossl_lh_strcasehash | 0 | | atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | strhash | 0 | +| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | uc_script_byname | 0 | +| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | uv__strdup | 0 | +| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | uv_wtf8_length_as_utf16 | 0 | | atl.cpp:849:17:849:27 | SetUserName | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | | atl.cpp:849:17:849:27 | SetUserName | (const char *) | | BIO_gethostbyname | 0 | +| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | Curl_copy_header_value | 0 | +| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | Curl_get_scheme_handler | 0 | +| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | Curl_getdate_capped | 0 | | atl.cpp:849:17:849:27 | SetUserName | (const char *) | | Jim_StrDup | 0 | | atl.cpp:849:17:849:27 | SetUserName | (const char *) | | OPENSSL_LH_strhash | 0 | | atl.cpp:849:17:849:27 | SetUserName | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -1308,10 +1627,14 @@ signatureMatches | atl.cpp:849:17:849:27 | SetUserName | (const char *) | | X509_LOOKUP_meth_new | 0 | | atl.cpp:849:17:849:27 | SetUserName | (const char *) | | a2i_IPADDRESS | 0 | | atl.cpp:849:17:849:27 | SetUserName | (const char *) | | a2i_IPADDRESS_NC | 0 | +| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | last_component | 0 | | atl.cpp:849:17:849:27 | SetUserName | (const char *) | | opt_path_end | 0 | | atl.cpp:849:17:849:27 | SetUserName | (const char *) | | opt_progname | 0 | | atl.cpp:849:17:849:27 | SetUserName | (const char *) | | ossl_lh_strcasehash | 0 | | atl.cpp:849:17:849:27 | SetUserName | (const char *) | | strhash | 0 | +| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | uc_script_byname | 0 | +| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | uv__strdup | 0 | +| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | uv_wtf8_length_as_utf16 | 0 | | atl.cpp:915:5:915:18 | CSimpleStringT | (const XCHAR *,int,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 0 | | atl.cpp:915:5:915:18 | CSimpleStringT | (const XCHAR *,int,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 1 | | atl.cpp:915:5:915:18 | CSimpleStringT | (const XCHAR *,int,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 2 | @@ -1351,6 +1674,8 @@ signatureMatches | atl.cpp:922:10:922:15 | Append | (BIO *,int) | | TXT_DB_read | 1 | | atl.cpp:922:10:922:15 | Append | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | atl.cpp:922:10:922:15 | Append | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| atl.cpp:922:10:922:15 | Append | (CURL *,int) | | curl_easy_pause | 1 | +| atl.cpp:922:10:922:15 | Append | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | atl.cpp:922:10:922:15 | Append | (DH *,int) | | DH_clear_flags | 1 | | atl.cpp:922:10:922:15 | Append | (DH *,int) | | DH_set_flags | 1 | | atl.cpp:922:10:922:15 | Append | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -1394,6 +1719,17 @@ signatureMatches | atl.cpp:922:10:922:15 | Append | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | atl.cpp:922:10:922:15 | Append | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | atl.cpp:922:10:922:15 | Append | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| atl.cpp:922:10:922:15 | Append | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| atl.cpp:922:10:922:15 | Append | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| atl.cpp:922:10:922:15 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| atl.cpp:922:10:922:15 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| atl.cpp:922:10:922:15 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| atl.cpp:922:10:922:15 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| atl.cpp:922:10:922:15 | Append | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| atl.cpp:922:10:922:15 | Append | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| atl.cpp:922:10:922:15 | Append | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| atl.cpp:922:10:922:15 | Append | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| atl.cpp:922:10:922:15 | Append | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | atl.cpp:922:10:922:15 | Append | (LPCOLESTR,int) | CComBSTR | Append | 1 | | atl.cpp:922:10:922:15 | Append | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | atl.cpp:922:10:922:15 | Append | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -1511,8 +1847,10 @@ signatureMatches | atl.cpp:922:10:922:15 | Append | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | atl.cpp:922:10:922:15 | Append | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | atl.cpp:922:10:922:15 | Append | (acttab *,int) | | acttab_insert | 1 | +| atl.cpp:922:10:922:15 | Append | (char *,int) | | Curl_str2addr | 1 | | atl.cpp:922:10:922:15 | Append | (char *,int) | | PEM_proc_type | 1 | | atl.cpp:922:10:922:15 | Append | (char,int) | CStringT | CStringT | 1 | +| atl.cpp:922:10:922:15 | Append | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | atl.cpp:922:10:922:15 | Append | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | atl.cpp:922:10:922:15 | Append | (const BIGNUM *,int) | | BN_get_flags | 1 | | atl.cpp:922:10:922:15 | Append | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -1579,12 +1917,22 @@ signatureMatches | atl.cpp:922:10:922:15 | Append | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | atl.cpp:922:10:922:15 | Append | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | atl.cpp:922:10:922:15 | Append | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| atl.cpp:922:10:922:15 | Append | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| atl.cpp:922:10:922:15 | Append | (gzFile,int) | | gzflush | 1 | +| atl.cpp:922:10:922:15 | Append | (gzFile,int) | | gzputc | 1 | | atl.cpp:922:10:922:15 | Append | (int *,int) | | X509_PURPOSE_set | 1 | | atl.cpp:922:10:922:15 | Append | (int *,int) | | X509_TRUST_set | 1 | | atl.cpp:922:10:922:15 | Append | (int,int) | | BN_security_bits | 1 | | atl.cpp:922:10:922:15 | Append | (int,int) | | EVP_MD_meth_new | 1 | | atl.cpp:922:10:922:15 | Append | (int,int) | | EVP_PKEY_meth_new | 1 | | atl.cpp:922:10:922:15 | Append | (int,int) | | acttab_alloc | 1 | +| atl.cpp:922:10:922:15 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| atl.cpp:922:10:922:15 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| atl.cpp:922:10:922:15 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| atl.cpp:922:10:922:15 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| atl.cpp:922:10:922:15 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| atl.cpp:922:10:922:15 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| atl.cpp:922:10:922:15 | Append | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | atl.cpp:922:10:922:15 | Append | (rule *,int) | | Configlist_add | 1 | | atl.cpp:922:10:922:15 | Append | (rule *,int) | | Configlist_addbasis | 1 | | atl.cpp:922:10:922:15 | Append | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -1619,6 +1967,7 @@ signatureMatches | atl.cpp:922:10:922:15 | Append | (unsigned char *,int) | | RAND_priv_bytes | 1 | | atl.cpp:922:10:922:15 | Append | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | atl.cpp:922:10:922:15 | Append | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| atl.cpp:922:10:922:15 | Append | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | atl.cpp:922:10:922:15 | Append | (void *,int) | | DSO_dsobyaddr | 1 | | atl.cpp:922:10:922:15 | Append | (void *,int) | | sqlite3_realloc | 1 | | atl.cpp:922:10:922:15 | Append | (wchar_t,int) | CStringT | CStringT | 1 | @@ -1650,6 +1999,11 @@ signatureMatches | atl.cpp:927:17:927:25 | CopyChars | (BIO *,const RSA *,int) | | RSA_print | 2 | | atl.cpp:927:17:927:25 | CopyChars | (CERT *,X509_STORE **,int) | | ssl_cert_get_cert_store | 2 | | atl.cpp:927:17:927:25 | CopyChars | (CRYPTO_THREAD_ROUTINE,void *,int) | | ossl_crypto_thread_native_start | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (Curl_easy *,connectdata *,int) | | Curl_conn_cf_discard_all | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (Curl_easy *,connectdata *,int) | | Curl_http2_may_switch | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (Curl_easy *,connectdata *,int) | | Curl_http2_switch | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (Curl_easy *,connectdata *,int) | | Curl_ssl_cfilter_add | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (Curl_sockaddr_ex *,const Curl_addrinfo *,int) | | Curl_sock_assign_addr | 2 | | atl.cpp:927:17:927:25 | CopyChars | (DH *,const OSSL_PARAM[],int) | | ossl_dh_key_fromdata | 2 | | atl.cpp:927:17:927:25 | CopyChars | (DSA *,const OSSL_PARAM[],int) | | ossl_dsa_key_fromdata | 2 | | atl.cpp:927:17:927:25 | CopyChars | (ECX_KEY *,const OSSL_PARAM[],int) | | ossl_ecx_key_fromdata | 2 | @@ -1692,6 +2046,8 @@ signatureMatches | atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,const char *,int) | | Jim_NewStringObj | 2 | | atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,const char *,int) | | Jim_NewStringObjUtf8 | 1 | | atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,const char *,int) | | Jim_NewStringObjUtf8 | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int) | | libssh2_sftp_fstat_ex | 2 | | atl.cpp:927:17:927:25 | CopyChars | (OCSP_BASICRESP *,OCSP_CERTID *,int) | | OCSP_resp_find | 2 | | atl.cpp:927:17:927:25 | CopyChars | (OCSP_BASICRESP *,X509_EXTENSION *,int) | | OCSP_BASICRESP_add_ext | 2 | | atl.cpp:927:17:927:25 | CopyChars | (OCSP_BASICRESP *,const ASN1_OBJECT *,int) | | OCSP_BASICRESP_get_ext_by_OBJ | 2 | @@ -1792,6 +2148,7 @@ signatureMatches | atl.cpp:927:17:927:25 | CopyChars | (const CMS_SignerInfo *,const ASN1_OBJECT *,int) | | CMS_unsigned_get_attr_by_OBJ | 2 | | atl.cpp:927:17:927:25 | CopyChars | (const CMS_SignerInfo *,int,int) | | CMS_signed_get_attr_by_NID | 2 | | atl.cpp:927:17:927:25 | CopyChars | (const CMS_SignerInfo *,int,int) | | CMS_unsigned_get_attr_by_NID | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (const Curl_easy *,const connectdata *,int) | | Curl_conn_is_http2 | 2 | | atl.cpp:927:17:927:25 | CopyChars | (const EVP_MD *,const EVP_MD *,int) | | ossl_rsa_pss_params_create | 2 | | atl.cpp:927:17:927:25 | CopyChars | (const EVP_PKEY *,const ASN1_OBJECT *,int) | | EVP_PKEY_get_attr_by_OBJ | 2 | | atl.cpp:927:17:927:25 | CopyChars | (const EVP_PKEY *,int,int) | | EVP_PKEY_get_attr_by_NID | 2 | @@ -1821,6 +2178,7 @@ signatureMatches | atl.cpp:927:17:927:25 | CopyChars | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_critical | 2 | | atl.cpp:927:17:927:25 | CopyChars | (const X509_SIG *,const char *,int) | | PKCS8_decrypt | 1 | | atl.cpp:927:17:927:25 | CopyChars | (const X509_SIG *,const char *,int) | | PKCS8_decrypt | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (const char *,char **,int) | | idn2_to_ascii_8z | 2 | | atl.cpp:927:17:927:25 | CopyChars | (const char *,const OSSL_PARAM *,int) | | print_param_types | 2 | | atl.cpp:927:17:927:25 | CopyChars | (const char *,const char *,int) | | CRYPTO_strdup | 1 | | atl.cpp:927:17:927:25 | CopyChars | (const char *,const char *,int) | | CRYPTO_strdup | 2 | @@ -1833,9 +2191,16 @@ signatureMatches | atl.cpp:927:17:927:25 | CopyChars | (const stack_st_X509_EXTENSION *,const ASN1_OBJECT *,int) | | X509v3_get_ext_by_OBJ | 2 | | atl.cpp:927:17:927:25 | CopyChars | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_NID | 2 | | atl.cpp:927:17:927:25 | CopyChars | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (const uint8_t *,uint8_t **,int) | | idn2_lookup_u8 | 2 | | atl.cpp:927:17:927:25 | CopyChars | (const unsigned char **,unsigned int,int) | | ossl_b2i_DSA_after_header | 2 | | atl.cpp:927:17:927:25 | CopyChars | (const unsigned char **,unsigned int,int) | | ossl_b2i_RSA_after_header | 2 | | atl.cpp:927:17:927:25 | CopyChars | (const void *,const void *,int) | | ossl_is_partially_overlapping | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (curl_mimepart *,curl_mime *,int) | | Curl_mime_set_subparts | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (curl_mimepart *,curl_slist *,int) | | curl_mime_headers | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (gzFile,char *,int) | | gzgets | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (gzFile,int,int) | | gzsetparams | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (gzFile,off64_t,int) | | gzseek64 | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (gzFile,off_t,int) | | gzseek | 2 | | atl.cpp:927:17:927:25 | CopyChars | (int,BIO_ADDR *,int) | | BIO_accept_ex | 2 | | atl.cpp:927:17:927:25 | CopyChars | (int,int,int) | | ASN1_object_size | 2 | | atl.cpp:927:17:927:25 | CopyChars | (int,int,int) | | EVP_CIPHER_meth_new | 2 | @@ -1873,8 +2238,16 @@ signatureMatches | atl.cpp:927:17:927:25 | CopyChars | (unsigned int,int,int) | | ossl_blob_length | 2 | | atl.cpp:927:17:927:25 | CopyChars | (unsigned long *,const BIGNUM *,int) | | bn_copy_words | 2 | | atl.cpp:927:17:927:25 | CopyChars | (unsigned long *,const unsigned long *,int) | | bn_sqr_words | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (uv__io_t *,uv__io_cb,int) | | uv__io_init | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (uv_loop_t *,uv_fs_t *,int) | | uv__iou_fs_read_or_write | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (uv_loop_t *,uv_pipe_t *,int) | | uv_pipe_init | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (uv_loop_t *,uv_poll_t *,int) | | uv_poll_init | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start_oneshot | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (uv_stream_t *,int,int) | | uv__stream_open | 2 | | atl.cpp:927:17:927:25 | CopyChars | (void *,const char *,int) | | CRYPTO_secure_free | 1 | | atl.cpp:927:17:927:25 | CopyChars | (void *,const char *,int) | | CRYPTO_secure_free | 2 | +| atl.cpp:927:17:927:25 | CopyChars | (void *,curl_off_t,int) | | tool_mime_stdin_seek | 2 | | atl.cpp:928:17:928:25 | CopyChars | (BIGNUM *,const BIGNUM *,const BIGNUM *,int) | | ossl_rsa_check_pminusq_diff | 3 | | atl.cpp:928:17:928:25 | CopyChars | (BIGNUM *,int,int,int) | | BN_bntest_rand | 3 | | atl.cpp:928:17:928:25 | CopyChars | (BIGNUM *,int,int,int) | | BN_priv_rand | 3 | @@ -1891,6 +2264,7 @@ signatureMatches | atl.cpp:928:17:928:25 | CopyChars | (BIO *,const unsigned char *,long,int) | | ASN1_parse | 3 | | atl.cpp:928:17:928:25 | CopyChars | (BIO *,int,const ASN1_TYPE *,int) | | ossl_print_attribute_value | 3 | | atl.cpp:928:17:928:25 | CopyChars | (BIO *,void *,int,int) | | app_http_tls_cb | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (BrotliDistanceParams *,uint32_t,uint32_t,int) | | BrotliInitDistanceParams | 3 | | atl.cpp:928:17:928:25 | CopyChars | (CERT *,const int *,size_t,int) | | tls1_set_sigalgs | 3 | | atl.cpp:928:17:928:25 | CopyChars | (CERT *,const uint16_t *,size_t,int) | | tls1_set_raw_sigalgs | 3 | | atl.cpp:928:17:928:25 | CopyChars | (DH *,OSSL_PARAM_BLD *,OSSL_PARAM[],int) | | ossl_dh_key_todata | 3 | @@ -1908,6 +2282,11 @@ signatureMatches | atl.cpp:928:17:928:25 | CopyChars | (Jim_Interp *,Jim_Obj *,const char *,int) | | Jim_AppendString | 3 | | atl.cpp:928:17:928:25 | CopyChars | (Jim_Interp *,Jim_Obj *,const char *,int) | | Jim_ListJoin | 2 | | atl.cpp:928:17:928:25 | CopyChars | (Jim_Interp *,Jim_Obj *,const char *,int) | | Jim_ListJoin | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (LIBSSH2_SESSION *,char **,int *,int) | | libssh2_session_last_error | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (LIBSSH2_SESSION *,const char *,const char *,int) | | libssh2_channel_direct_streamlocal_ex | 2 | +| atl.cpp:928:17:928:25 | CopyChars | (LIBSSH2_SESSION *,const char *,const char *,int) | | libssh2_channel_direct_streamlocal_ex | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (LIBSSH2_SESSION *,int,const char *,int) | | _libssh2_error_flags | 2 | +| atl.cpp:928:17:928:25 | CopyChars | (LIBSSH2_SESSION *,int,const char *,int) | | _libssh2_error_flags | 3 | | atl.cpp:928:17:928:25 | CopyChars | (OSSL_CMP_CTX *,const OSSL_CMP_MSG *,ossl_cmp_allow_unprotected_cb_t,int) | | ossl_cmp_msg_check_update | 3 | | atl.cpp:928:17:928:25 | CopyChars | (OSSL_CMP_CTX *,const OSSL_CMP_PKISI *,const OSSL_CRMF_CERTID *,int) | | ossl_cmp_rp_new | 3 | | atl.cpp:928:17:928:25 | CopyChars | (OSSL_LIB_CTX *,const char *,OSSL_PARAM *,int) | | OSSL_PROVIDER_try_load_ex | 3 | @@ -1935,6 +2314,8 @@ signatureMatches | atl.cpp:928:17:928:25 | CopyChars | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 1 | | atl.cpp:928:17:928:25 | CopyChars | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 2 | | atl.cpp:928:17:928:25 | CopyChars | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (bufq *,bufc_pool *,size_t,int) | | Curl_bufq_initp | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (bufq *,size_t,size_t,int) | | Curl_bufq_init2 | 3 | | atl.cpp:928:17:928:25 | CopyChars | (char *,int,const ASN1_OBJECT *,int) | | OBJ_obj2txt | 3 | | atl.cpp:928:17:928:25 | CopyChars | (const DH *,unsigned char **,size_t,int) | | ossl_dh_key2buf | 3 | | atl.cpp:928:17:928:25 | CopyChars | (const EVP_MD *,const X509 *,const stack_st_X509 *,int) | | OSSL_ESS_signing_cert_v2_new_init | 3 | @@ -1942,6 +2323,7 @@ signatureMatches | atl.cpp:928:17:928:25 | CopyChars | (const X509_NAME *,int,char *,int) | | X509_NAME_get_text_by_NID | 3 | | atl.cpp:928:17:928:25 | CopyChars | (const char *,BIO *,BIO *,int) | | X509_CRL_load_http | 3 | | atl.cpp:928:17:928:25 | CopyChars | (const char *,BIO *,BIO *,int) | | X509_load_http | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (const char *,const char *,char **,int) | | idn2_register_ul | 3 | | atl.cpp:928:17:928:25 | CopyChars | (const char *,const char *,const char *,int) | | OSSL_HTTP_adapt_proxy | 2 | | atl.cpp:928:17:928:25 | CopyChars | (const char *,const char *,const char *,int) | | OSSL_HTTP_adapt_proxy | 3 | | atl.cpp:928:17:928:25 | CopyChars | (const char *,int,int,int) | | append_str | 3 | @@ -1950,6 +2332,7 @@ signatureMatches | atl.cpp:928:17:928:25 | CopyChars | (const char *,size_t,const char *,int) | | CRYPTO_strndup | 3 | | atl.cpp:928:17:928:25 | CopyChars | (const char *,sqlite3_filename,const char *,int) | | sqlite3_uri_boolean | 2 | | atl.cpp:928:17:928:25 | CopyChars | (const char *,sqlite3_filename,const char *,int) | | sqlite3_uri_boolean | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (const uint8_t *,const uint8_t *,uint8_t **,int) | | idn2_register_u8 | 3 | | atl.cpp:928:17:928:25 | CopyChars | (const unsigned char *,unsigned char *,RC2_KEY *,int) | | RC2_ecb_encrypt | 3 | | atl.cpp:928:17:928:25 | CopyChars | (const unsigned char *,unsigned char *,const BF_KEY *,int) | | BF_ecb_encrypt | 3 | | atl.cpp:928:17:928:25 | CopyChars | (const unsigned char *,unsigned char *,const CAST_KEY *,int) | | CAST_ecb_encrypt | 3 | @@ -1957,12 +2340,22 @@ signatureMatches | atl.cpp:928:17:928:25 | CopyChars | (const void *,size_t,const char *,int) | | CRYPTO_memdup | 1 | | atl.cpp:928:17:928:25 | CopyChars | (const void *,size_t,const char *,int) | | CRYPTO_memdup | 2 | | atl.cpp:928:17:928:25 | CopyChars | (const void *,size_t,const char *,int) | | CRYPTO_memdup | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (deflate_state *,charf *,ulg,int) | | _tr_flush_block | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (deflate_state *,charf *,ulg,int) | | _tr_stored_block | 3 | | atl.cpp:928:17:928:25 | CopyChars | (int,ENGINE *,const unsigned char *,int) | | EVP_PKEY_new_mac_key | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (int,const void *,const char *,int) | | Curl_ip2addr | 2 | +| atl.cpp:928:17:928:25 | CopyChars | (int,const void *,const char *,int) | | Curl_ip2addr | 3 | | atl.cpp:928:17:928:25 | CopyChars | (int,int *,int *,int) | | sqlite3_status | 3 | | atl.cpp:928:17:928:25 | CopyChars | (int,int,const unsigned char *,int) | | PKCS5_pbe_set | 3 | | atl.cpp:928:17:928:25 | CopyChars | (int,sqlite3_int64 *,sqlite3_int64 *,int) | | sqlite3_status64 | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (nghttp2_bufs *,nghttp2_frame_hd *,size_t,int) | | nghttp2_frame_add_pad | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (nghttp2_priority_spec *,int32_t,int32_t,int) | | nghttp2_priority_spec_init | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (nghttp2_session *,int32_t,const nghttp2_extpri *,int) | | nghttp2_session_change_extpri_stream_priority | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (nghttp2_session *,nghttp2_stream *,size_t,int) | | nghttp2_session_update_recv_stream_window_size | 3 | | atl.cpp:928:17:928:25 | CopyChars | (sqlite3_blob *,const void *,int,int) | | sqlite3_blob_write | 3 | | atl.cpp:928:17:928:25 | CopyChars | (sqlite3_blob *,void *,int,int) | | sqlite3_blob_read | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (ssl_peer *,Curl_cfilter *,const char *,int) | | Curl_ssl_peer_init | 2 | +| atl.cpp:928:17:928:25 | CopyChars | (ssl_peer *,Curl_cfilter *,const char *,int) | | Curl_ssl_peer_init | 3 | | atl.cpp:928:17:928:25 | CopyChars | (stack_st_PKCS12_SAFEBAG **,int,const unsigned char *,int) | | PKCS12_add_secret | 3 | | atl.cpp:928:17:928:25 | CopyChars | (uint8_t *,unsigned char *,uint64_t,int) | | ossl_quic_vlint_encode_n | 3 | | atl.cpp:928:17:928:25 | CopyChars | (unsigned char **,X509_ALGOR *,ASN1_OCTET_STRING *,int) | | CMS_SharedInfo_encode | 3 | @@ -1974,6 +2367,8 @@ signatureMatches | atl.cpp:928:17:928:25 | CopyChars | (unsigned char *,int,const unsigned char *,int) | | RSA_padding_add_none | 3 | | atl.cpp:928:17:928:25 | CopyChars | (unsigned long *,unsigned long *,unsigned long *,int) | | bn_mul_low_normal | 3 | | atl.cpp:928:17:928:25 | CopyChars | (unsigned long,BIGNUM *,BIGNUM *,int) | | BN_consttime_swap | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (uv_loop_t *,uv_fs_t *,int,int) | | uv__iou_fs_statx | 3 | +| atl.cpp:928:17:928:25 | CopyChars | (uv_loop_t *,uv_udp_t *,unsigned int,int) | | uv__udp_init_ex | 3 | | atl.cpp:928:17:928:25 | CopyChars | (void *,const ASN1_ITEM *,int,int) | | PKCS12_item_pack_safebag | 3 | | atl.cpp:928:17:928:25 | CopyChars | (void *,size_t,const char *,int) | | CRYPTO_secure_clear_free | 1 | | atl.cpp:928:17:928:25 | CopyChars | (void *,size_t,const char *,int) | | CRYPTO_secure_clear_free | 2 | @@ -2003,6 +2398,11 @@ signatureMatches | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (BIO *,const RSA *,int) | | RSA_print | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (CERT *,X509_STORE **,int) | | ssl_cert_get_cert_store | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (CRYPTO_THREAD_ROUTINE,void *,int) | | ossl_crypto_thread_native_start | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Curl_easy *,connectdata *,int) | | Curl_conn_cf_discard_all | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Curl_easy *,connectdata *,int) | | Curl_http2_may_switch | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Curl_easy *,connectdata *,int) | | Curl_http2_switch | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Curl_easy *,connectdata *,int) | | Curl_ssl_cfilter_add | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Curl_sockaddr_ex *,const Curl_addrinfo *,int) | | Curl_sock_assign_addr | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (DH *,const OSSL_PARAM[],int) | | ossl_dh_key_fromdata | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (DSA *,const OSSL_PARAM[],int) | | ossl_dsa_key_fromdata | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (ECX_KEY *,const OSSL_PARAM[],int) | | ossl_ecx_key_fromdata | 2 | @@ -2045,6 +2445,8 @@ signatureMatches | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,const char *,int) | | Jim_NewStringObj | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,const char *,int) | | Jim_NewStringObjUtf8 | 1 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,const char *,int) | | Jim_NewStringObjUtf8 | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int) | | libssh2_sftp_fstat_ex | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_BASICRESP *,OCSP_CERTID *,int) | | OCSP_resp_find | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_BASICRESP *,X509_EXTENSION *,int) | | OCSP_BASICRESP_add_ext | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_BASICRESP *,const ASN1_OBJECT *,int) | | OCSP_BASICRESP_get_ext_by_OBJ | 2 | @@ -2145,6 +2547,7 @@ signatureMatches | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const CMS_SignerInfo *,const ASN1_OBJECT *,int) | | CMS_unsigned_get_attr_by_OBJ | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const CMS_SignerInfo *,int,int) | | CMS_signed_get_attr_by_NID | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const CMS_SignerInfo *,int,int) | | CMS_unsigned_get_attr_by_NID | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const Curl_easy *,const connectdata *,int) | | Curl_conn_is_http2 | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const EVP_MD *,const EVP_MD *,int) | | ossl_rsa_pss_params_create | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const EVP_PKEY *,const ASN1_OBJECT *,int) | | EVP_PKEY_get_attr_by_OBJ | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const EVP_PKEY *,int,int) | | EVP_PKEY_get_attr_by_NID | 2 | @@ -2174,6 +2577,7 @@ signatureMatches | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_critical | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_SIG *,const char *,int) | | PKCS8_decrypt | 1 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_SIG *,const char *,int) | | PKCS8_decrypt | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,char **,int) | | idn2_to_ascii_8z | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,const OSSL_PARAM *,int) | | print_param_types | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,const char *,int) | | CRYPTO_strdup | 1 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,const char *,int) | | CRYPTO_strdup | 2 | @@ -2186,9 +2590,16 @@ signatureMatches | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const stack_st_X509_EXTENSION *,const ASN1_OBJECT *,int) | | X509v3_get_ext_by_OBJ | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_NID | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const uint8_t *,uint8_t **,int) | | idn2_lookup_u8 | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const unsigned char **,unsigned int,int) | | ossl_b2i_DSA_after_header | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const unsigned char **,unsigned int,int) | | ossl_b2i_RSA_after_header | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const void *,const void *,int) | | ossl_is_partially_overlapping | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (curl_mimepart *,curl_mime *,int) | | Curl_mime_set_subparts | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (curl_mimepart *,curl_slist *,int) | | curl_mime_headers | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (gzFile,char *,int) | | gzgets | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (gzFile,int,int) | | gzsetparams | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (gzFile,off64_t,int) | | gzseek64 | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (gzFile,off_t,int) | | gzseek | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (int,BIO_ADDR *,int) | | BIO_accept_ex | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (int,int,int) | | ASN1_object_size | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (int,int,int) | | EVP_CIPHER_meth_new | 2 | @@ -2226,8 +2637,16 @@ signatureMatches | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (unsigned int,int,int) | | ossl_blob_length | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (unsigned long *,const BIGNUM *,int) | | bn_copy_words | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (unsigned long *,const unsigned long *,int) | | bn_sqr_words | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uv__io_t *,uv__io_cb,int) | | uv__io_init | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uv_loop_t *,uv_fs_t *,int) | | uv__iou_fs_read_or_write | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uv_loop_t *,uv_pipe_t *,int) | | uv_pipe_init | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uv_loop_t *,uv_poll_t *,int) | | uv_poll_init | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start_oneshot | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uv_stream_t *,int,int) | | uv__stream_open | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (void *,const char *,int) | | CRYPTO_secure_free | 1 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (void *,const char *,int) | | CRYPTO_secure_free | 2 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (void *,curl_off_t,int) | | tool_mime_stdin_seek | 2 | | atl.cpp:931:11:931:15 | GetAt | (int) | | ASN1_STRING_type_new | 0 | | atl.cpp:931:11:931:15 | GetAt | (int) | | ASN1_tag2bit | 0 | | atl.cpp:931:11:931:15 | GetAt | (int) | | ASN1_tag2str | 0 | @@ -2246,6 +2665,9 @@ signatureMatches | atl.cpp:931:11:931:15 | GetAt | (int) | | X509_TRUST_get0 | 0 | | atl.cpp:931:11:931:15 | GetAt | (int) | | X509_TRUST_get_by_id | 0 | | atl.cpp:931:11:931:15 | GetAt | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| atl.cpp:931:11:931:15 | GetAt | (int) | | c_tolower | 0 | +| atl.cpp:931:11:931:15 | GetAt | (int) | | c_toupper | 0 | +| atl.cpp:931:11:931:15 | GetAt | (int) | | curlx_sitouz | 0 | | atl.cpp:931:11:931:15 | GetAt | (int) | | evp_pkey_type2name | 0 | | atl.cpp:931:11:931:15 | GetAt | (int) | | ossl_cmp_bodytype_to_string | 0 | | atl.cpp:931:11:931:15 | GetAt | (int) | | ossl_tolower | 0 | @@ -2253,6 +2675,12 @@ signatureMatches | atl.cpp:931:11:931:15 | GetAt | (int) | | sqlite3_compileoption_get | 0 | | atl.cpp:931:11:931:15 | GetAt | (int) | | sqlite3_errstr | 0 | | atl.cpp:931:11:931:15 | GetAt | (int) | | tls13_alert_code | 0 | +| atl.cpp:931:11:931:15 | GetAt | (int) | | uv__accept | 0 | +| atl.cpp:931:11:931:15 | GetAt | (int) | | uv_err_name | 0 | +| atl.cpp:931:11:931:15 | GetAt | (int) | | uv_get_osfhandle | 0 | +| atl.cpp:931:11:931:15 | GetAt | (int) | | uv_strerror | 0 | +| atl.cpp:931:11:931:15 | GetAt | (int) | | uv_translate_sys_error | 0 | +| atl.cpp:931:11:931:15 | GetAt | (int) | | zError | 0 | | atl.cpp:932:11:932:19 | GetBuffer | (int) | | ASN1_STRING_type_new | 0 | | atl.cpp:932:11:932:19 | GetBuffer | (int) | | ASN1_tag2bit | 0 | | atl.cpp:932:11:932:19 | GetBuffer | (int) | | ASN1_tag2str | 0 | @@ -2271,6 +2699,9 @@ signatureMatches | atl.cpp:932:11:932:19 | GetBuffer | (int) | | X509_TRUST_get0 | 0 | | atl.cpp:932:11:932:19 | GetBuffer | (int) | | X509_TRUST_get_by_id | 0 | | atl.cpp:932:11:932:19 | GetBuffer | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| atl.cpp:932:11:932:19 | GetBuffer | (int) | | c_tolower | 0 | +| atl.cpp:932:11:932:19 | GetBuffer | (int) | | c_toupper | 0 | +| atl.cpp:932:11:932:19 | GetBuffer | (int) | | curlx_sitouz | 0 | | atl.cpp:932:11:932:19 | GetBuffer | (int) | | evp_pkey_type2name | 0 | | atl.cpp:932:11:932:19 | GetBuffer | (int) | | ossl_cmp_bodytype_to_string | 0 | | atl.cpp:932:11:932:19 | GetBuffer | (int) | | ossl_tolower | 0 | @@ -2278,6 +2709,12 @@ signatureMatches | atl.cpp:932:11:932:19 | GetBuffer | (int) | | sqlite3_compileoption_get | 0 | | atl.cpp:932:11:932:19 | GetBuffer | (int) | | sqlite3_errstr | 0 | | atl.cpp:932:11:932:19 | GetBuffer | (int) | | tls13_alert_code | 0 | +| atl.cpp:932:11:932:19 | GetBuffer | (int) | | uv__accept | 0 | +| atl.cpp:932:11:932:19 | GetBuffer | (int) | | uv_err_name | 0 | +| atl.cpp:932:11:932:19 | GetBuffer | (int) | | uv_get_osfhandle | 0 | +| atl.cpp:932:11:932:19 | GetBuffer | (int) | | uv_strerror | 0 | +| atl.cpp:932:11:932:19 | GetBuffer | (int) | | uv_translate_sys_error | 0 | +| atl.cpp:932:11:932:19 | GetBuffer | (int) | | zError | 0 | | atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | ASN1_STRING_type_new | 0 | | atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | ASN1_tag2bit | 0 | | atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | ASN1_tag2str | 0 | @@ -2296,6 +2733,9 @@ signatureMatches | atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | X509_TRUST_get0 | 0 | | atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | X509_TRUST_get_by_id | 0 | | atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | c_tolower | 0 | +| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | c_toupper | 0 | +| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | curlx_sitouz | 0 | | atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | evp_pkey_type2name | 0 | | atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | ossl_cmp_bodytype_to_string | 0 | | atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | ossl_tolower | 0 | @@ -2303,7 +2743,14 @@ signatureMatches | atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | sqlite3_compileoption_get | 0 | | atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | sqlite3_errstr | 0 | | atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | tls13_alert_code | 0 | +| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | uv__accept | 0 | +| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | uv_err_name | 0 | +| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | uv_get_osfhandle | 0 | +| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | uv_strerror | 0 | +| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | uv_translate_sys_error | 0 | +| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | zError | 0 | | atl.cpp:938:10:938:14 | SetAt | (XCHAR,XCHAR) | CStringT | Replace | 1 | +| atl.cpp:938:10:938:14 | SetAt | (char **,char) | | Curl_str_single | 1 | | atl.cpp:938:10:938:14 | SetAt | (const CStringT &,char) | | operator+ | 1 | | atl.cpp:938:10:938:14 | SetAt | (int,XCHAR) | CStringT | Insert | 0 | | atl.cpp:938:10:938:14 | SetAt | (int,XCHAR) | CStringT | Insert | 1 | @@ -2325,6 +2772,8 @@ signatureMatches | atl.cpp:939:10:939:18 | SetString | (BIO *,int) | | TXT_DB_read | 1 | | atl.cpp:939:10:939:18 | SetString | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | atl.cpp:939:10:939:18 | SetString | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| atl.cpp:939:10:939:18 | SetString | (CURL *,int) | | curl_easy_pause | 1 | +| atl.cpp:939:10:939:18 | SetString | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | atl.cpp:939:10:939:18 | SetString | (DH *,int) | | DH_clear_flags | 1 | | atl.cpp:939:10:939:18 | SetString | (DH *,int) | | DH_set_flags | 1 | | atl.cpp:939:10:939:18 | SetString | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -2368,6 +2817,17 @@ signatureMatches | atl.cpp:939:10:939:18 | SetString | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | atl.cpp:939:10:939:18 | SetString | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | atl.cpp:939:10:939:18 | SetString | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | atl.cpp:939:10:939:18 | SetString | (LPCOLESTR,int) | CComBSTR | Append | 1 | | atl.cpp:939:10:939:18 | SetString | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | atl.cpp:939:10:939:18 | SetString | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -2485,8 +2945,10 @@ signatureMatches | atl.cpp:939:10:939:18 | SetString | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | atl.cpp:939:10:939:18 | SetString | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | atl.cpp:939:10:939:18 | SetString | (acttab *,int) | | acttab_insert | 1 | +| atl.cpp:939:10:939:18 | SetString | (char *,int) | | Curl_str2addr | 1 | | atl.cpp:939:10:939:18 | SetString | (char *,int) | | PEM_proc_type | 1 | | atl.cpp:939:10:939:18 | SetString | (char,int) | CStringT | CStringT | 1 | +| atl.cpp:939:10:939:18 | SetString | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | atl.cpp:939:10:939:18 | SetString | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | atl.cpp:939:10:939:18 | SetString | (const BIGNUM *,int) | | BN_get_flags | 1 | | atl.cpp:939:10:939:18 | SetString | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -2553,12 +3015,22 @@ signatureMatches | atl.cpp:939:10:939:18 | SetString | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | atl.cpp:939:10:939:18 | SetString | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | atl.cpp:939:10:939:18 | SetString | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| atl.cpp:939:10:939:18 | SetString | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| atl.cpp:939:10:939:18 | SetString | (gzFile,int) | | gzflush | 1 | +| atl.cpp:939:10:939:18 | SetString | (gzFile,int) | | gzputc | 1 | | atl.cpp:939:10:939:18 | SetString | (int *,int) | | X509_PURPOSE_set | 1 | | atl.cpp:939:10:939:18 | SetString | (int *,int) | | X509_TRUST_set | 1 | | atl.cpp:939:10:939:18 | SetString | (int,int) | | BN_security_bits | 1 | | atl.cpp:939:10:939:18 | SetString | (int,int) | | EVP_MD_meth_new | 1 | | atl.cpp:939:10:939:18 | SetString | (int,int) | | EVP_PKEY_meth_new | 1 | | atl.cpp:939:10:939:18 | SetString | (int,int) | | acttab_alloc | 1 | +| atl.cpp:939:10:939:18 | SetString | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| atl.cpp:939:10:939:18 | SetString | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| atl.cpp:939:10:939:18 | SetString | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| atl.cpp:939:10:939:18 | SetString | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| atl.cpp:939:10:939:18 | SetString | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| atl.cpp:939:10:939:18 | SetString | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| atl.cpp:939:10:939:18 | SetString | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | atl.cpp:939:10:939:18 | SetString | (rule *,int) | | Configlist_add | 1 | | atl.cpp:939:10:939:18 | SetString | (rule *,int) | | Configlist_addbasis | 1 | | atl.cpp:939:10:939:18 | SetString | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -2593,6 +3065,7 @@ signatureMatches | atl.cpp:939:10:939:18 | SetString | (unsigned char *,int) | | RAND_priv_bytes | 1 | | atl.cpp:939:10:939:18 | SetString | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | atl.cpp:939:10:939:18 | SetString | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| atl.cpp:939:10:939:18 | SetString | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | atl.cpp:939:10:939:18 | SetString | (void *,int) | | DSO_dsobyaddr | 1 | | atl.cpp:939:10:939:18 | SetString | (void *,int) | | sqlite3_realloc | 1 | | atl.cpp:939:10:939:18 | SetString | (wchar_t,int) | CStringT | CStringT | 1 | @@ -2617,6 +3090,9 @@ signatureMatches | atl.cpp:942:11:942:20 | operator[] | (int) | | X509_TRUST_get0 | 0 | | atl.cpp:942:11:942:20 | operator[] | (int) | | X509_TRUST_get_by_id | 0 | | atl.cpp:942:11:942:20 | operator[] | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| atl.cpp:942:11:942:20 | operator[] | (int) | | c_tolower | 0 | +| atl.cpp:942:11:942:20 | operator[] | (int) | | c_toupper | 0 | +| atl.cpp:942:11:942:20 | operator[] | (int) | | curlx_sitouz | 0 | | atl.cpp:942:11:942:20 | operator[] | (int) | | evp_pkey_type2name | 0 | | atl.cpp:942:11:942:20 | operator[] | (int) | | ossl_cmp_bodytype_to_string | 0 | | atl.cpp:942:11:942:20 | operator[] | (int) | | ossl_tolower | 0 | @@ -2624,6 +3100,12 @@ signatureMatches | atl.cpp:942:11:942:20 | operator[] | (int) | | sqlite3_compileoption_get | 0 | | atl.cpp:942:11:942:20 | operator[] | (int) | | sqlite3_errstr | 0 | | atl.cpp:942:11:942:20 | operator[] | (int) | | tls13_alert_code | 0 | +| atl.cpp:942:11:942:20 | operator[] | (int) | | uv__accept | 0 | +| atl.cpp:942:11:942:20 | operator[] | (int) | | uv_err_name | 0 | +| atl.cpp:942:11:942:20 | operator[] | (int) | | uv_get_osfhandle | 0 | +| atl.cpp:942:11:942:20 | operator[] | (int) | | uv_strerror | 0 | +| atl.cpp:942:11:942:20 | operator[] | (int) | | uv_translate_sys_error | 0 | +| atl.cpp:942:11:942:20 | operator[] | (int) | | zError | 0 | | atl.cpp:1036:5:1036:12 | CStringT | (const VARIANT &) | | operator+= | 0 | | atl.cpp:1036:5:1036:12 | CStringT | (const VARIANT &) | CStringT | CStringT | 0 | | atl.cpp:1036:5:1036:12 | CStringT | (const VARIANT &) | CStringT | operator= | 0 | @@ -2672,6 +3154,8 @@ signatureMatches | atl.cpp:1049:5:1049:12 | CStringT | (BIO *,int) | | TXT_DB_read | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (CURL *,int) | | curl_easy_pause | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (DH *,int) | | DH_clear_flags | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (DH *,int) | | DH_set_flags | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -2715,6 +3199,17 @@ signatureMatches | atl.cpp:1049:5:1049:12 | CStringT | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (LPCOLESTR,int) | CComBSTR | Append | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -2832,9 +3327,11 @@ signatureMatches | atl.cpp:1049:5:1049:12 | CStringT | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (acttab *,int) | | acttab_insert | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (char *,int) | | Curl_str2addr | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (char *,int) | | PEM_proc_type | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (char,int) | CStringT | CStringT | 0 | | atl.cpp:1049:5:1049:12 | CStringT | (char,int) | CStringT | CStringT | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (const BIGNUM *,int) | | BN_get_flags | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -2901,12 +3398,22 @@ signatureMatches | atl.cpp:1049:5:1049:12 | CStringT | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (gzFile,int) | | gzflush | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (gzFile,int) | | gzputc | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (int *,int) | | X509_PURPOSE_set | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (int *,int) | | X509_TRUST_set | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (int,int) | | BN_security_bits | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (int,int) | | EVP_MD_meth_new | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (int,int) | | EVP_PKEY_meth_new | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (int,int) | | acttab_alloc | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (rule *,int) | | Configlist_add | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (rule *,int) | | Configlist_addbasis | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -2941,6 +3448,7 @@ signatureMatches | atl.cpp:1049:5:1049:12 | CStringT | (unsigned char *,int) | | RAND_priv_bytes | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (void *,int) | | DSO_dsobyaddr | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (void *,int) | | sqlite3_realloc | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (wchar_t,int) | CStringT | CStringT | 1 | @@ -2962,6 +3470,8 @@ signatureMatches | atl.cpp:1050:5:1050:12 | CStringT | (BIO *,int) | | TXT_DB_read | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (CURL *,int) | | curl_easy_pause | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (DH *,int) | | DH_clear_flags | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (DH *,int) | | DH_set_flags | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -3005,6 +3515,17 @@ signatureMatches | atl.cpp:1050:5:1050:12 | CStringT | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (LPCOLESTR,int) | CComBSTR | Append | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -3122,8 +3643,10 @@ signatureMatches | atl.cpp:1050:5:1050:12 | CStringT | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (acttab *,int) | | acttab_insert | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (char *,int) | | Curl_str2addr | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (char *,int) | | PEM_proc_type | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (char,int) | CStringT | CStringT | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (const BIGNUM *,int) | | BN_get_flags | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -3190,12 +3713,22 @@ signatureMatches | atl.cpp:1050:5:1050:12 | CStringT | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (gzFile,int) | | gzflush | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (gzFile,int) | | gzputc | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (int *,int) | | X509_PURPOSE_set | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (int *,int) | | X509_TRUST_set | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (int,int) | | BN_security_bits | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (int,int) | | EVP_MD_meth_new | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (int,int) | | EVP_PKEY_meth_new | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (int,int) | | acttab_alloc | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (rule *,int) | | Configlist_add | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (rule *,int) | | Configlist_addbasis | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -3230,6 +3763,7 @@ signatureMatches | atl.cpp:1050:5:1050:12 | CStringT | (unsigned char *,int) | | RAND_priv_bytes | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (void *,int) | | DSO_dsobyaddr | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (void *,int) | | sqlite3_realloc | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (wchar_t,int) | CStringT | CStringT | 0 | @@ -3277,6 +3811,9 @@ signatureMatches | atl.cpp:1072:14:1072:17 | Left | (int) | | X509_TRUST_get0 | 0 | | atl.cpp:1072:14:1072:17 | Left | (int) | | X509_TRUST_get_by_id | 0 | | atl.cpp:1072:14:1072:17 | Left | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| atl.cpp:1072:14:1072:17 | Left | (int) | | c_tolower | 0 | +| atl.cpp:1072:14:1072:17 | Left | (int) | | c_toupper | 0 | +| atl.cpp:1072:14:1072:17 | Left | (int) | | curlx_sitouz | 0 | | atl.cpp:1072:14:1072:17 | Left | (int) | | evp_pkey_type2name | 0 | | atl.cpp:1072:14:1072:17 | Left | (int) | | ossl_cmp_bodytype_to_string | 0 | | atl.cpp:1072:14:1072:17 | Left | (int) | | ossl_tolower | 0 | @@ -3284,9 +3821,16 @@ signatureMatches | atl.cpp:1072:14:1072:17 | Left | (int) | | sqlite3_compileoption_get | 0 | | atl.cpp:1072:14:1072:17 | Left | (int) | | sqlite3_errstr | 0 | | atl.cpp:1072:14:1072:17 | Left | (int) | | tls13_alert_code | 0 | +| atl.cpp:1072:14:1072:17 | Left | (int) | | uv__accept | 0 | +| atl.cpp:1072:14:1072:17 | Left | (int) | | uv_err_name | 0 | +| atl.cpp:1072:14:1072:17 | Left | (int) | | uv_get_osfhandle | 0 | +| atl.cpp:1072:14:1072:17 | Left | (int) | | uv_strerror | 0 | +| atl.cpp:1072:14:1072:17 | Left | (int) | | uv_translate_sys_error | 0 | +| atl.cpp:1072:14:1072:17 | Left | (int) | | zError | 0 | | atl.cpp:1075:10:1075:19 | LoadString | (UINT) | CComBSTR | LoadString | 0 | | atl.cpp:1075:10:1075:19 | LoadString | (UINT) | _U_STRINGorID | _U_STRINGorID | 0 | | atl.cpp:1075:10:1075:19 | LoadString | (unsigned int) | | Jim_IntHashFunction | 0 | +| atl.cpp:1075:10:1075:19 | LoadString | (unsigned int) | | curlx_uitous | 0 | | atl.cpp:1075:10:1075:19 | LoadString | (unsigned int) | | ssl3_get_cipher | 0 | | atl.cpp:1079:14:1079:16 | Mid | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | | atl.cpp:1079:14:1079:16 | Mid | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | @@ -3306,6 +3850,8 @@ signatureMatches | atl.cpp:1079:14:1079:16 | Mid | (BIO *,int) | | TXT_DB_read | 1 | | atl.cpp:1079:14:1079:16 | Mid | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | atl.cpp:1079:14:1079:16 | Mid | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (CURL *,int) | | curl_easy_pause | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | atl.cpp:1079:14:1079:16 | Mid | (DH *,int) | | DH_clear_flags | 1 | | atl.cpp:1079:14:1079:16 | Mid | (DH *,int) | | DH_set_flags | 1 | | atl.cpp:1079:14:1079:16 | Mid | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -3349,6 +3895,17 @@ signatureMatches | atl.cpp:1079:14:1079:16 | Mid | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | atl.cpp:1079:14:1079:16 | Mid | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | atl.cpp:1079:14:1079:16 | Mid | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | atl.cpp:1079:14:1079:16 | Mid | (LPCOLESTR,int) | CComBSTR | Append | 1 | | atl.cpp:1079:14:1079:16 | Mid | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | atl.cpp:1079:14:1079:16 | Mid | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -3466,8 +4023,10 @@ signatureMatches | atl.cpp:1079:14:1079:16 | Mid | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | atl.cpp:1079:14:1079:16 | Mid | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | atl.cpp:1079:14:1079:16 | Mid | (acttab *,int) | | acttab_insert | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (char *,int) | | Curl_str2addr | 1 | | atl.cpp:1079:14:1079:16 | Mid | (char *,int) | | PEM_proc_type | 1 | | atl.cpp:1079:14:1079:16 | Mid | (char,int) | CStringT | CStringT | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | atl.cpp:1079:14:1079:16 | Mid | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | atl.cpp:1079:14:1079:16 | Mid | (const BIGNUM *,int) | | BN_get_flags | 1 | | atl.cpp:1079:14:1079:16 | Mid | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -3534,6 +4093,9 @@ signatureMatches | atl.cpp:1079:14:1079:16 | Mid | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | atl.cpp:1079:14:1079:16 | Mid | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | atl.cpp:1079:14:1079:16 | Mid | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (gzFile,int) | | gzflush | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (gzFile,int) | | gzputc | 1 | | atl.cpp:1079:14:1079:16 | Mid | (int *,int) | | X509_PURPOSE_set | 1 | | atl.cpp:1079:14:1079:16 | Mid | (int *,int) | | X509_TRUST_set | 1 | | atl.cpp:1079:14:1079:16 | Mid | (int,int) | | BN_security_bits | 0 | @@ -3544,6 +4106,13 @@ signatureMatches | atl.cpp:1079:14:1079:16 | Mid | (int,int) | | EVP_PKEY_meth_new | 1 | | atl.cpp:1079:14:1079:16 | Mid | (int,int) | | acttab_alloc | 0 | | atl.cpp:1079:14:1079:16 | Mid | (int,int) | | acttab_alloc | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | atl.cpp:1079:14:1079:16 | Mid | (rule *,int) | | Configlist_add | 1 | | atl.cpp:1079:14:1079:16 | Mid | (rule *,int) | | Configlist_addbasis | 1 | | atl.cpp:1079:14:1079:16 | Mid | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -3578,6 +4147,7 @@ signatureMatches | atl.cpp:1079:14:1079:16 | Mid | (unsigned char *,int) | | RAND_priv_bytes | 1 | | atl.cpp:1079:14:1079:16 | Mid | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | atl.cpp:1079:14:1079:16 | Mid | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| atl.cpp:1079:14:1079:16 | Mid | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | atl.cpp:1079:14:1079:16 | Mid | (void *,int) | | DSO_dsobyaddr | 1 | | atl.cpp:1079:14:1079:16 | Mid | (void *,int) | | sqlite3_realloc | 1 | | atl.cpp:1079:14:1079:16 | Mid | (wchar_t,int) | CStringT | CStringT | 1 | @@ -3606,6 +4176,9 @@ signatureMatches | atl.cpp:1083:14:1083:18 | Right | (int) | | X509_TRUST_get0 | 0 | | atl.cpp:1083:14:1083:18 | Right | (int) | | X509_TRUST_get_by_id | 0 | | atl.cpp:1083:14:1083:18 | Right | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| atl.cpp:1083:14:1083:18 | Right | (int) | | c_tolower | 0 | +| atl.cpp:1083:14:1083:18 | Right | (int) | | c_toupper | 0 | +| atl.cpp:1083:14:1083:18 | Right | (int) | | curlx_sitouz | 0 | | atl.cpp:1083:14:1083:18 | Right | (int) | | evp_pkey_type2name | 0 | | atl.cpp:1083:14:1083:18 | Right | (int) | | ossl_cmp_bodytype_to_string | 0 | | atl.cpp:1083:14:1083:18 | Right | (int) | | ossl_tolower | 0 | @@ -3613,6 +4186,12 @@ signatureMatches | atl.cpp:1083:14:1083:18 | Right | (int) | | sqlite3_compileoption_get | 0 | | atl.cpp:1083:14:1083:18 | Right | (int) | | sqlite3_errstr | 0 | | atl.cpp:1083:14:1083:18 | Right | (int) | | tls13_alert_code | 0 | +| atl.cpp:1083:14:1083:18 | Right | (int) | | uv__accept | 0 | +| atl.cpp:1083:14:1083:18 | Right | (int) | | uv_err_name | 0 | +| atl.cpp:1083:14:1083:18 | Right | (int) | | uv_get_osfhandle | 0 | +| atl.cpp:1083:14:1083:18 | Right | (int) | | uv_strerror | 0 | +| atl.cpp:1083:14:1083:18 | Right | (int) | | uv_translate_sys_error | 0 | +| atl.cpp:1083:14:1083:18 | Right | (int) | | zError | 0 | | atl.cpp:1085:14:1085:26 | SpanExcluding | (PCXSTR) | | operator+= | 0 | | atl.cpp:1085:14:1085:26 | SpanExcluding | (PCXSTR) | CSimpleStringT | operator+= | 0 | | atl.cpp:1085:14:1085:26 | SpanExcluding | (PCXSTR) | CStringT | operator= | 0 | @@ -3639,6 +4218,8 @@ signatureMatches | atl.cpp:1231:5:1231:12 | CStrBufT | (FILE *,const ASN1_STRING *,unsigned long) | | ASN1_STRING_print_ex_fp | 2 | | atl.cpp:1231:5:1231:12 | CStrBufT | (unsigned char *,int,unsigned long) | | UTF8_putc | 1 | | atl.cpp:1231:5:1231:12 | CStrBufT | (unsigned char *,int,unsigned long) | | UTF8_putc | 2 | +| bsd.cpp:12:5:12:10 | accept | (CURLM *,curl_socket_t,int *) | | curl_multi_socket | 2 | +| bsd.cpp:12:5:12:10 | accept | (Curl_easy *,ssize_t *,int *) | | Curl_GetFTPResponse | 2 | | bsd.cpp:12:5:12:10 | accept | (EVP_CIPHER_CTX *,unsigned char *,int *) | | EVP_CipherFinal | 2 | | bsd.cpp:12:5:12:10 | accept | (EVP_CIPHER_CTX *,unsigned char *,int *) | | EVP_CipherFinal_ex | 2 | | bsd.cpp:12:5:12:10 | accept | (EVP_CIPHER_CTX *,unsigned char *,int *) | | EVP_DecryptFinal | 2 | @@ -3655,6 +4236,7 @@ signatureMatches | bsd.cpp:12:5:12:10 | accept | (Jim_Interp *,Jim_Obj *,int *) | | Jim_GetIndex | 2 | | bsd.cpp:12:5:12:10 | accept | (Jim_Interp *,Jim_Obj *,int *) | | Jim_GetReturnCode | 2 | | bsd.cpp:12:5:12:10 | accept | (Jim_Interp *,Jim_Obj *,int *) | | Jim_GetSourceInfo | 2 | +| bsd.cpp:12:5:12:10 | accept | (LIBSSH2_SESSION *,size_t *,int *) | | libssh2_session_hostkey | 2 | | bsd.cpp:12:5:12:10 | accept | (OPENSSL_STACK *,const void *,int *) | | OPENSSL_sk_find_all | 2 | | bsd.cpp:12:5:12:10 | accept | (OSSL_DECODER *,const char *,int *) | | ossl_decoder_fast_is_a | 2 | | bsd.cpp:12:5:12:10 | accept | (OSSL_LIB_CTX *,uint32_t,int *) | | ossl_rand_uniform_uint32 | 2 | @@ -3676,8 +4258,18 @@ signatureMatches | bsd.cpp:12:5:12:10 | accept | (const X509 *,EVP_MD **,int *) | | X509_digest_sig | 2 | | bsd.cpp:12:5:12:10 | accept | (const char *,const OPT_PAIR *,int *) | | opt_pair | 2 | | bsd.cpp:12:5:12:10 | accept | (const unsigned char **,unsigned int,int *) | | ossl_b2i | 2 | +| bsd.cpp:12:5:12:10 | accept | (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getpeername | 1 | +| bsd.cpp:12:5:12:10 | accept | (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getpeername | 2 | +| bsd.cpp:12:5:12:10 | accept | (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getsockname | 1 | +| bsd.cpp:12:5:12:10 | accept | (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getsockname | 2 | +| bsd.cpp:12:5:12:10 | accept | (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getpeername | 1 | +| bsd.cpp:12:5:12:10 | accept | (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getpeername | 2 | +| bsd.cpp:12:5:12:10 | accept | (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getsockname | 1 | +| bsd.cpp:12:5:12:10 | accept | (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getsockname | 2 | | bsd.cpp:12:5:12:10 | accept | (int,const char **,int *) | | sqlite3_keyword_name | 2 | | bsd.cpp:12:5:12:10 | accept | (int,int,int *) | | ssl_set_version_bound | 2 | +| bsd.cpp:12:5:12:10 | accept | (uv_handle_t *,int,int *) | | uv__socket_sockopt | 2 | +| bsd.cpp:12:5:12:10 | accept | (z_streamp,unsigned int *,int *) | | deflatePending | 2 | | constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | ASN1_STRING_type_new | 0 | | constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | ASN1_tag2bit | 0 | | constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | ASN1_tag2str | 0 | @@ -3696,6 +4288,9 @@ signatureMatches | constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | X509_TRUST_get0 | 0 | | constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | X509_TRUST_get_by_id | 0 | | constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | c_tolower | 0 | +| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | c_toupper | 0 | +| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | curlx_sitouz | 0 | | constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | evp_pkey_type2name | 0 | | constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | ossl_cmp_bodytype_to_string | 0 | | constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | ossl_tolower | 0 | @@ -3703,6 +4298,15 @@ signatureMatches | constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | sqlite3_compileoption_get | 0 | | constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | sqlite3_errstr | 0 | | constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | tls13_alert_code | 0 | +| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | uv__accept | 0 | +| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | uv_err_name | 0 | +| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | uv_get_osfhandle | 0 | +| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | uv_strerror | 0 | +| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | uv_translate_sys_error | 0 | +| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | zError | 0 | +| constructor_delegation.cpp:9:2:9:8 | MyValue | (Curl_easy *,bool) | | Curl_creader_set_rewind | 1 | +| constructor_delegation.cpp:9:2:9:8 | MyValue | (Curl_easy *,bool) | | Curl_set_in_callback | 1 | +| constructor_delegation.cpp:9:2:9:8 | MyValue | (curl_socket_t[2],bool) | | Curl_eventfd | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (BIGNUM *,int) | | BN_clear_bit | 1 | @@ -3721,6 +4325,8 @@ signatureMatches | constructor_delegation.cpp:10:2:10:8 | MyValue | (BIO *,int) | | TXT_DB_read | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (CURL *,int) | | curl_easy_pause | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (DH *,int) | | DH_clear_flags | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (DH *,int) | | DH_set_flags | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -3764,6 +4370,17 @@ signatureMatches | constructor_delegation.cpp:10:2:10:8 | MyValue | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (LPCOLESTR,int) | CComBSTR | Append | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -3881,8 +4498,10 @@ signatureMatches | constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (acttab *,int) | | acttab_insert | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (char *,int) | | Curl_str2addr | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (char *,int) | | PEM_proc_type | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (char,int) | CStringT | CStringT | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (const BIGNUM *,int) | | BN_get_flags | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -3949,6 +4568,9 @@ signatureMatches | constructor_delegation.cpp:10:2:10:8 | MyValue | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (gzFile,int) | | gzflush | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (gzFile,int) | | gzputc | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (int *,int) | | X509_PURPOSE_set | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (int *,int) | | X509_TRUST_set | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | BN_security_bits | 0 | @@ -3959,6 +4581,13 @@ signatureMatches | constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | EVP_PKEY_meth_new | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | acttab_alloc | 0 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | acttab_alloc | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (rule *,int) | | Configlist_add | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (rule *,int) | | Configlist_addbasis | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -3993,9 +4622,19 @@ signatureMatches | constructor_delegation.cpp:10:2:10:8 | MyValue | (unsigned char *,int) | | RAND_priv_bytes | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| constructor_delegation.cpp:10:2:10:8 | MyValue | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (void *,int) | | DSO_dsobyaddr | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (void *,int) | | sqlite3_realloc | 1 | | constructor_delegation.cpp:10:2:10:8 | MyValue | (wchar_t,int) | CStringT | CStringT | 1 | +| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,CURLcode,bool) | | Curl_http_done | 2 | +| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_init | 2 | +| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_reset | 2 | +| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,connectdata *,bool) | | Curl_cpool_disconnect | 2 | +| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,connectdata *,bool) | | Curl_on_disconnect | 2 | +| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,curltime *,bool) | | Curl_timeleft | 2 | +| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,pingpong *,bool) | | Curl_pp_state_timeout | 2 | +| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,size_t,bool) | | Curl_bump_headersize | 2 | +| constructor_delegation.cpp:11:2:11:8 | MyValue | (GlobalConfig *,timeval *,bool) | | progress_meter | 2 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (BIGNUM *,int) | | BN_clear_bit | 1 | @@ -4014,6 +4653,8 @@ signatureMatches | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (BIO *,int) | | TXT_DB_read | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (CURL *,int) | | curl_easy_pause | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (DH *,int) | | DH_clear_flags | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (DH *,int) | | DH_set_flags | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -4057,6 +4698,17 @@ signatureMatches | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LPCOLESTR,int) | CComBSTR | Append | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -4174,8 +4826,10 @@ signatureMatches | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (acttab *,int) | | acttab_insert | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (char *,int) | | Curl_str2addr | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (char *,int) | | PEM_proc_type | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (char,int) | CStringT | CStringT | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const BIGNUM *,int) | | BN_get_flags | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -4242,12 +4896,22 @@ signatureMatches | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (gzFile,int) | | gzflush | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (gzFile,int) | | gzputc | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int *,int) | | X509_PURPOSE_set | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int *,int) | | X509_TRUST_set | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int,int) | | BN_security_bits | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int,int) | | EVP_MD_meth_new | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int,int) | | EVP_PKEY_meth_new | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int,int) | | acttab_alloc | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (rule *,int) | | Configlist_add | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (rule *,int) | | Configlist_addbasis | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -4282,6 +4946,7 @@ signatureMatches | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (unsigned char *,int) | | RAND_priv_bytes | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (void *,int) | | DSO_dsobyaddr | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (void *,int) | | sqlite3_realloc | 1 | | constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (wchar_t,int) | CStringT | CStringT | 1 | @@ -4303,6 +4968,9 @@ signatureMatches | copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | X509_TRUST_get0 | 0 | | copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | X509_TRUST_get_by_id | 0 | | copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | c_tolower | 0 | +| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | c_toupper | 0 | +| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | curlx_sitouz | 0 | | copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | evp_pkey_type2name | 0 | | copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | ossl_cmp_bodytype_to_string | 0 | | copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | ossl_tolower | 0 | @@ -4310,6 +4978,12 @@ signatureMatches | copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | sqlite3_compileoption_get | 0 | | copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | sqlite3_errstr | 0 | | copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | tls13_alert_code | 0 | +| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | uv__accept | 0 | +| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | uv_err_name | 0 | +| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | uv_get_osfhandle | 0 | +| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | uv_strerror | 0 | +| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | uv_translate_sys_error | 0 | +| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | zError | 0 | | copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | ASN1_STRING_type_new | 0 | | copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | ASN1_tag2bit | 0 | | copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | ASN1_tag2str | 0 | @@ -4328,6 +5002,9 @@ signatureMatches | copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | X509_TRUST_get0 | 0 | | copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | X509_TRUST_get_by_id | 0 | | copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | c_tolower | 0 | +| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | c_toupper | 0 | +| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | curlx_sitouz | 0 | | copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | evp_pkey_type2name | 0 | | copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | ossl_cmp_bodytype_to_string | 0 | | copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | ossl_tolower | 0 | @@ -4335,9 +5012,18 @@ signatureMatches | copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | sqlite3_compileoption_get | 0 | | copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | sqlite3_errstr | 0 | | copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | tls13_alert_code | 0 | +| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | uv__accept | 0 | +| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | uv_err_name | 0 | +| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | uv_get_osfhandle | 0 | +| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | uv_strerror | 0 | +| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | uv_translate_sys_error | 0 | +| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | zError | 0 | +| file://:0:0:0:0 | operator delete | (void *) | | Curl_cpool_upkeep | 0 | | file://:0:0:0:0 | operator delete | (void *) | | ossl_kdf_data_new | 0 | | file://:0:0:0:0 | operator new | (unsigned long) | | BN_num_bits_word | 0 | | file://:0:0:0:0 | operator new | (unsigned long) | | BUF_MEM_new_ex | 0 | +| file://:0:0:0:0 | operator new | (unsigned long) | | curlx_ultouc | 0 | +| file://:0:0:0:0 | operator new | (unsigned long) | | curlx_ultous | 0 | | format.cpp:5:5:5:12 | snprintf | (StrAccum *,sqlite3_str *,const char *,...) | | sqlite3_str_appendf | 2 | | format.cpp:5:5:5:12 | snprintf | (StrAccum *,sqlite3_str *,const char *,...) | | sqlite3_str_appendf | 3 | | format.cpp:5:5:5:12 | snprintf | (char *,size_t,const char *,...) | | BIO_snprintf | 0 | @@ -4346,11 +5032,14 @@ signatureMatches | format.cpp:5:5:5:12 | snprintf | (char *,size_t,const char *,...) | | BIO_snprintf | 3 | | format.cpp:5:5:5:12 | snprintf | (int,char *,const char *,...) | | sqlite3_snprintf | 2 | | format.cpp:5:5:5:12 | snprintf | (int,char *,const char *,...) | | sqlite3_snprintf | 3 | +| format.cpp:6:5:6:11 | sprintf | (CURLSH *,CURLSHoption,...) | | curl_share_setopt | 2 | | format.cpp:6:5:6:11 | sprintf | (Jim_Interp *,const char *,...) | | Jim_SetResultFormatted | 1 | | format.cpp:6:5:6:11 | sprintf | (Jim_Interp *,const char *,...) | | Jim_SetResultFormatted | 2 | +| format.cpp:6:5:6:11 | sprintf | (curl_httppost **,curl_httppost **,...) | | curl_formadd | 2 | | format.cpp:7:5:7:12 | swprintf | (StrAccum *,sqlite3_str *,const char *,...) | | sqlite3_str_appendf | 3 | | format.cpp:7:5:7:12 | swprintf | (char *,size_t,const char *,...) | | BIO_snprintf | 3 | | format.cpp:7:5:7:12 | swprintf | (int,char *,const char *,...) | | sqlite3_snprintf | 3 | +| format.cpp:14:5:14:13 | vsnprintf | (..(*)(..),..(*)(..),..(*)(..),void *) | | libssh2_session_init_ex | 3 | | format.cpp:14:5:14:13 | vsnprintf | (BIO *,CMS_ContentInfo **,pem_password_cb *,void *) | | PEM_read_bio_CMS | 3 | | format.cpp:14:5:14:13 | vsnprintf | (BIO *,DH **,pem_password_cb *,void *) | | PEM_read_bio_DHparams | 3 | | format.cpp:14:5:14:13 | vsnprintf | (BIO *,DSA **,pem_password_cb *,void *) | | PEM_read_bio_DSAPrivateKey | 3 | @@ -4378,6 +5067,11 @@ signatureMatches | format.cpp:14:5:14:13 | vsnprintf | (BIO *,X509_SIG **,pem_password_cb *,void *) | | PEM_read_bio_PKCS8 | 3 | | format.cpp:14:5:14:13 | vsnprintf | (BIO *,size_t,..(*)(..),void *) | | ossl_quic_demux_new | 3 | | format.cpp:14:5:14:13 | vsnprintf | (BIO *,stack_st_X509_INFO *,pem_password_cb *,void *) | | PEM_X509_INFO_read_bio | 3 | +| format.cpp:14:5:14:13 | vsnprintf | (BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *) | | BrotliDecoderStateInit | 3 | +| format.cpp:14:5:14:13 | vsnprintf | (Curl_easy *,connectdata *,Curl_cpool_conn_do_cb *,void *) | | Curl_cpool_do_locked | 3 | +| format.cpp:14:5:14:13 | vsnprintf | (Curl_easy *,pingpong *,const char *,va_list) | | Curl_pp_vsendf | 2 | +| format.cpp:14:5:14:13 | vsnprintf | (Curl_easy *,pingpong *,const char *,va_list) | | Curl_pp_vsendf | 3 | +| format.cpp:14:5:14:13 | vsnprintf | (Curl_hash *,void *,size_t,void *) | | Curl_hash_add | 3 | | format.cpp:14:5:14:13 | vsnprintf | (DSO *,int,long,void *) | | DSO_ctrl | 3 | | format.cpp:14:5:14:13 | vsnprintf | (EVP_CIPHER_CTX *,int,int,void *) | | EVP_CIPHER_CTX_ctrl | 3 | | format.cpp:14:5:14:13 | vsnprintf | (FILE *,CMS_ContentInfo **,pem_password_cb *,void *) | | PEM_read_CMS | 3 | @@ -4408,6 +5102,7 @@ signatureMatches | format.cpp:14:5:14:13 | vsnprintf | (FILE *,stack_st_X509_INFO *,pem_password_cb *,void *) | | PEM_X509_INFO_read | 3 | | format.cpp:14:5:14:13 | vsnprintf | (HT *,size_t,..(*)(..),void *) | | ossl_ht_filter | 3 | | format.cpp:14:5:14:13 | vsnprintf | (MD5_SHA1_CTX *,int,int,void *) | | ossl_md5_sha1_ctrl | 3 | +| format.cpp:14:5:14:13 | vsnprintf | (MemoryManager *,brotli_alloc_func,brotli_free_func,void *) | | BrotliInitMemoryManager | 3 | | format.cpp:14:5:14:13 | vsnprintf | (OCB128_CONTEXT *,OCB128_CONTEXT *,void *,void *) | | CRYPTO_ocb128_copy_ctx | 3 | | format.cpp:14:5:14:13 | vsnprintf | (OPENSSL_LHASH *,OPENSSL_LH_DOALL_FUNCARG_THUNK,OPENSSL_LH_DOALL_FUNCARG,void *) | | OPENSSL_LH_doall_arg_thunk | 3 | | format.cpp:14:5:14:13 | vsnprintf | (OSSL_PROVIDER *,int,..(*)(..),void *) | | evp_names_do_all | 3 | @@ -4432,12 +5127,22 @@ signatureMatches | format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | BIO_vsnprintf | 1 | | format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | BIO_vsnprintf | 2 | | format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | BIO_vsnprintf | 3 | +| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | curl_mvsnprintf | 0 | +| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | curl_mvsnprintf | 1 | +| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | curl_mvsnprintf | 2 | +| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | curl_mvsnprintf | 3 | +| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,size_t,void *) | | Curl_ftp_parselist | 3 | +| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,size_t,void *) | | Curl_mime_read | 3 | +| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,size_t,void *) | | tool_header_cb | 3 | +| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,size_t,void *) | | tool_mime_stdin_read | 3 | +| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,size_t,void *) | | tool_read_cb | 3 | | format.cpp:14:5:14:13 | vsnprintf | (const OSSL_NAMEMAP *,int,..(*)(..),void *) | | ossl_namemap_doall_names | 3 | | format.cpp:14:5:14:13 | vsnprintf | (int,char *,const char *,va_list) | | sqlite3_vsnprintf | 2 | | format.cpp:14:5:14:13 | vsnprintf | (int,char *,const char *,va_list) | | sqlite3_vsnprintf | 3 | | format.cpp:14:5:14:13 | vsnprintf | (int,int,const char *,va_list) | | ERR_vset_error | 2 | | format.cpp:14:5:14:13 | vsnprintf | (int,int,const char *,va_list) | | ERR_vset_error | 3 | | format.cpp:14:5:14:13 | vsnprintf | (int,unsigned long,..(*)(..),void *) | | RSA_generate_key | 3 | +| format.cpp:14:5:14:13 | vsnprintf | (nghttp2_session *,const uint8_t *,size_t,void *) | | nghttp2_session_upgrade | 3 | | format.cpp:14:5:14:13 | vsnprintf | (sqlite3 *,const char *,..(*)(..),void *) | | sqlite3_recover_init_sql | 3 | | format.cpp:14:5:14:13 | vsnprintf | (sqlite3 *,const char *,..(*)(..),void *) | | sqlite3_rtree_geometry_callback | 3 | | format.cpp:14:5:14:13 | vsnprintf | (sqlite3 *,const char *,const sqlite3_module *,void *) | | sqlite3_create_module | 3 | @@ -4452,9 +5157,14 @@ signatureMatches | format.cpp:16:5:16:13 | mysprintf | (char *,size_t,const char *,...) | | BIO_snprintf | 3 | | format.cpp:16:5:16:13 | mysprintf | (int,char *,const char *,...) | | sqlite3_snprintf | 2 | | format.cpp:16:5:16:13 | mysprintf | (int,char *,const char *,...) | | sqlite3_snprintf | 3 | +| format.cpp:28:5:28:10 | sscanf | (CURLSH *,CURLSHoption,...) | | curl_share_setopt | 2 | | format.cpp:28:5:28:10 | sscanf | (Jim_Interp *,const char *,...) | | Jim_SetResultFormatted | 1 | | format.cpp:28:5:28:10 | sscanf | (Jim_Interp *,const char *,...) | | Jim_SetResultFormatted | 2 | +| format.cpp:28:5:28:10 | sscanf | (curl_httppost **,curl_httppost **,...) | | curl_formadd | 2 | | format.cpp:142:8:142:13 | strlen | (const char *) | | BIO_gethostbyname | 0 | +| format.cpp:142:8:142:13 | strlen | (const char *) | | Curl_copy_header_value | 0 | +| format.cpp:142:8:142:13 | strlen | (const char *) | | Curl_get_scheme_handler | 0 | +| format.cpp:142:8:142:13 | strlen | (const char *) | | Curl_getdate_capped | 0 | | format.cpp:142:8:142:13 | strlen | (const char *) | | Jim_StrDup | 0 | | format.cpp:142:8:142:13 | strlen | (const char *) | | OPENSSL_LH_strhash | 0 | | format.cpp:142:8:142:13 | strlen | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -4465,16 +5175,23 @@ signatureMatches | format.cpp:142:8:142:13 | strlen | (const char *) | | X509_LOOKUP_meth_new | 0 | | format.cpp:142:8:142:13 | strlen | (const char *) | | a2i_IPADDRESS | 0 | | format.cpp:142:8:142:13 | strlen | (const char *) | | a2i_IPADDRESS_NC | 0 | +| format.cpp:142:8:142:13 | strlen | (const char *) | | last_component | 0 | | format.cpp:142:8:142:13 | strlen | (const char *) | | opt_path_end | 0 | | format.cpp:142:8:142:13 | strlen | (const char *) | | opt_progname | 0 | | format.cpp:142:8:142:13 | strlen | (const char *) | | ossl_lh_strcasehash | 0 | | format.cpp:142:8:142:13 | strlen | (const char *) | | strhash | 0 | +| format.cpp:142:8:142:13 | strlen | (const char *) | | uc_script_byname | 0 | +| format.cpp:142:8:142:13 | strlen | (const char *) | | uv__strdup | 0 | +| format.cpp:142:8:142:13 | strlen | (const char *) | | uv_wtf8_length_as_utf16 | 0 | | map.cpp:8:6:8:9 | sink | (char *) | | SRP_VBASE_new | 0 | | map.cpp:8:6:8:9 | sink | (char *) | | defossilize | 0 | | map.cpp:8:6:8:9 | sink | (char *) | | make_uppercase | 0 | | map.cpp:8:6:8:9 | sink | (char *) | | next_item | 0 | | map.cpp:8:6:8:9 | sink | (char *) | CStringT | CStringT | 0 | | map.cpp:9:6:9:9 | sink | (const char *) | | BIO_gethostbyname | 0 | +| map.cpp:9:6:9:9 | sink | (const char *) | | Curl_copy_header_value | 0 | +| map.cpp:9:6:9:9 | sink | (const char *) | | Curl_get_scheme_handler | 0 | +| map.cpp:9:6:9:9 | sink | (const char *) | | Curl_getdate_capped | 0 | | map.cpp:9:6:9:9 | sink | (const char *) | | Jim_StrDup | 0 | | map.cpp:9:6:9:9 | sink | (const char *) | | OPENSSL_LH_strhash | 0 | | map.cpp:9:6:9:9 | sink | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -4485,10 +5202,14 @@ signatureMatches | map.cpp:9:6:9:9 | sink | (const char *) | | X509_LOOKUP_meth_new | 0 | | map.cpp:9:6:9:9 | sink | (const char *) | | a2i_IPADDRESS | 0 | | map.cpp:9:6:9:9 | sink | (const char *) | | a2i_IPADDRESS_NC | 0 | +| map.cpp:9:6:9:9 | sink | (const char *) | | last_component | 0 | | map.cpp:9:6:9:9 | sink | (const char *) | | opt_path_end | 0 | | map.cpp:9:6:9:9 | sink | (const char *) | | opt_progname | 0 | | map.cpp:9:6:9:9 | sink | (const char *) | | ossl_lh_strcasehash | 0 | | map.cpp:9:6:9:9 | sink | (const char *) | | strhash | 0 | +| map.cpp:9:6:9:9 | sink | (const char *) | | uc_script_byname | 0 | +| map.cpp:9:6:9:9 | sink | (const char *) | | uv__strdup | 0 | +| map.cpp:9:6:9:9 | sink | (const char *) | | uv_wtf8_length_as_utf16 | 0 | | movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | ASN1_STRING_type_new | 0 | | movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | ASN1_tag2bit | 0 | | movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | ASN1_tag2str | 0 | @@ -4507,6 +5228,9 @@ signatureMatches | movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | X509_TRUST_get0 | 0 | | movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | X509_TRUST_get_by_id | 0 | | movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | c_tolower | 0 | +| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | c_toupper | 0 | +| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | curlx_sitouz | 0 | | movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | evp_pkey_type2name | 0 | | movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | ossl_cmp_bodytype_to_string | 0 | | movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | ossl_tolower | 0 | @@ -4514,6 +5238,12 @@ signatureMatches | movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | sqlite3_compileoption_get | 0 | | movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | sqlite3_errstr | 0 | | movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | tls13_alert_code | 0 | +| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | uv__accept | 0 | +| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | uv_err_name | 0 | +| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | uv_get_osfhandle | 0 | +| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | uv_strerror | 0 | +| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | uv_translate_sys_error | 0 | +| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | zError | 0 | | set.cpp:8:6:8:9 | sink | (char *) | | SRP_VBASE_new | 0 | | set.cpp:8:6:8:9 | sink | (char *) | | defossilize | 0 | | set.cpp:8:6:8:9 | sink | (char *) | | make_uppercase | 0 | @@ -4537,6 +5267,9 @@ signatureMatches | smart_pointer.cpp:4:6:4:9 | sink | (int) | | X509_TRUST_get0 | 0 | | smart_pointer.cpp:4:6:4:9 | sink | (int) | | X509_TRUST_get_by_id | 0 | | smart_pointer.cpp:4:6:4:9 | sink | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| smart_pointer.cpp:4:6:4:9 | sink | (int) | | c_tolower | 0 | +| smart_pointer.cpp:4:6:4:9 | sink | (int) | | c_toupper | 0 | +| smart_pointer.cpp:4:6:4:9 | sink | (int) | | curlx_sitouz | 0 | | smart_pointer.cpp:4:6:4:9 | sink | (int) | | evp_pkey_type2name | 0 | | smart_pointer.cpp:4:6:4:9 | sink | (int) | | ossl_cmp_bodytype_to_string | 0 | | smart_pointer.cpp:4:6:4:9 | sink | (int) | | ossl_tolower | 0 | @@ -4544,6 +5277,12 @@ signatureMatches | smart_pointer.cpp:4:6:4:9 | sink | (int) | | sqlite3_compileoption_get | 0 | | smart_pointer.cpp:4:6:4:9 | sink | (int) | | sqlite3_errstr | 0 | | smart_pointer.cpp:4:6:4:9 | sink | (int) | | tls13_alert_code | 0 | +| smart_pointer.cpp:4:6:4:9 | sink | (int) | | uv__accept | 0 | +| smart_pointer.cpp:4:6:4:9 | sink | (int) | | uv_err_name | 0 | +| smart_pointer.cpp:4:6:4:9 | sink | (int) | | uv_get_osfhandle | 0 | +| smart_pointer.cpp:4:6:4:9 | sink | (int) | | uv_strerror | 0 | +| smart_pointer.cpp:4:6:4:9 | sink | (int) | | uv_translate_sys_error | 0 | +| smart_pointer.cpp:4:6:4:9 | sink | (int) | | zError | 0 | | standalone_iterators.cpp:5:6:5:9 | sink | (int) | | ASN1_STRING_type_new | 0 | | standalone_iterators.cpp:5:6:5:9 | sink | (int) | | ASN1_tag2bit | 0 | | standalone_iterators.cpp:5:6:5:9 | sink | (int) | | ASN1_tag2str | 0 | @@ -4562,6 +5301,9 @@ signatureMatches | standalone_iterators.cpp:5:6:5:9 | sink | (int) | | X509_TRUST_get0 | 0 | | standalone_iterators.cpp:5:6:5:9 | sink | (int) | | X509_TRUST_get_by_id | 0 | | standalone_iterators.cpp:5:6:5:9 | sink | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | c_tolower | 0 | +| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | c_toupper | 0 | +| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | curlx_sitouz | 0 | | standalone_iterators.cpp:5:6:5:9 | sink | (int) | | evp_pkey_type2name | 0 | | standalone_iterators.cpp:5:6:5:9 | sink | (int) | | ossl_cmp_bodytype_to_string | 0 | | standalone_iterators.cpp:5:6:5:9 | sink | (int) | | ossl_tolower | 0 | @@ -4569,6 +5311,12 @@ signatureMatches | standalone_iterators.cpp:5:6:5:9 | sink | (int) | | sqlite3_compileoption_get | 0 | | standalone_iterators.cpp:5:6:5:9 | sink | (int) | | sqlite3_errstr | 0 | | standalone_iterators.cpp:5:6:5:9 | sink | (int) | | tls13_alert_code | 0 | +| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | uv__accept | 0 | +| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | uv_err_name | 0 | +| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | uv_get_osfhandle | 0 | +| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | uv_strerror | 0 | +| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | uv_translate_sys_error | 0 | +| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | zError | 0 | | standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | ASN1_STRING_type_new | 0 | | standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | ASN1_tag2bit | 0 | | standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | ASN1_tag2str | 0 | @@ -4587,6 +5335,9 @@ signatureMatches | standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | X509_TRUST_get0 | 0 | | standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | X509_TRUST_get_by_id | 0 | | standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | c_tolower | 0 | +| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | c_toupper | 0 | +| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | curlx_sitouz | 0 | | standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | evp_pkey_type2name | 0 | | standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 | | standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | ossl_tolower | 0 | @@ -4594,6 +5345,12 @@ signatureMatches | standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | sqlite3_compileoption_get | 0 | | standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | sqlite3_errstr | 0 | | standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | tls13_alert_code | 0 | +| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | uv__accept | 0 | +| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | uv_err_name | 0 | +| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | uv_get_osfhandle | 0 | +| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | uv_strerror | 0 | +| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | uv_translate_sys_error | 0 | +| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | zError | 0 | | standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | ASN1_STRING_type_new | 0 | | standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | ASN1_tag2bit | 0 | | standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | ASN1_tag2str | 0 | @@ -4612,6 +5369,9 @@ signatureMatches | standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | X509_TRUST_get0 | 0 | | standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | X509_TRUST_get_by_id | 0 | | standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | c_tolower | 0 | +| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | c_toupper | 0 | +| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | curlx_sitouz | 0 | | standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | evp_pkey_type2name | 0 | | standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 | | standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | ossl_tolower | 0 | @@ -4619,6 +5379,12 @@ signatureMatches | standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | sqlite3_compileoption_get | 0 | | standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | sqlite3_errstr | 0 | | standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | tls13_alert_code | 0 | +| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | uv__accept | 0 | +| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | uv_err_name | 0 | +| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | uv_get_osfhandle | 0 | +| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | uv_strerror | 0 | +| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | uv_translate_sys_error | 0 | +| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | zError | 0 | | standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | ASN1_STRING_type_new | 0 | | standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | ASN1_tag2bit | 0 | | standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | ASN1_tag2str | 0 | @@ -4637,6 +5403,9 @@ signatureMatches | standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | X509_TRUST_get0 | 0 | | standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | X509_TRUST_get_by_id | 0 | | standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | c_tolower | 0 | +| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | c_toupper | 0 | +| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | curlx_sitouz | 0 | | standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | evp_pkey_type2name | 0 | | standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 | | standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | ossl_tolower | 0 | @@ -4644,6 +5413,12 @@ signatureMatches | standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | sqlite3_compileoption_get | 0 | | standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | sqlite3_errstr | 0 | | standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | tls13_alert_code | 0 | +| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | uv__accept | 0 | +| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | uv_err_name | 0 | +| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | uv_get_osfhandle | 0 | +| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | uv_strerror | 0 | +| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | uv_translate_sys_error | 0 | +| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | zError | 0 | | standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | ASN1_STRING_type_new | 0 | | standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | ASN1_tag2bit | 0 | | standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | ASN1_tag2str | 0 | @@ -4662,6 +5437,9 @@ signatureMatches | standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | X509_TRUST_get0 | 0 | | standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | X509_TRUST_get_by_id | 0 | | standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | c_tolower | 0 | +| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | c_toupper | 0 | +| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | curlx_sitouz | 0 | | standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | evp_pkey_type2name | 0 | | standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 | | standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | ossl_tolower | 0 | @@ -4669,6 +5447,12 @@ signatureMatches | standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | sqlite3_compileoption_get | 0 | | standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | sqlite3_errstr | 0 | | standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | tls13_alert_code | 0 | +| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | uv__accept | 0 | +| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | uv_err_name | 0 | +| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | uv_get_osfhandle | 0 | +| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | uv_strerror | 0 | +| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | uv_translate_sys_error | 0 | +| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | zError | 0 | | standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | ASN1_STRING_type_new | 0 | | standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | ASN1_tag2bit | 0 | | standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | ASN1_tag2str | 0 | @@ -4687,6 +5471,9 @@ signatureMatches | standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | X509_TRUST_get0 | 0 | | standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | X509_TRUST_get_by_id | 0 | | standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | c_tolower | 0 | +| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | c_toupper | 0 | +| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | curlx_sitouz | 0 | | standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | evp_pkey_type2name | 0 | | standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | ossl_cmp_bodytype_to_string | 0 | | standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | ossl_tolower | 0 | @@ -4694,6 +5481,12 @@ signatureMatches | standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | sqlite3_compileoption_get | 0 | | standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | sqlite3_errstr | 0 | | standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | tls13_alert_code | 0 | +| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | uv__accept | 0 | +| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | uv_err_name | 0 | +| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | uv_get_osfhandle | 0 | +| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | uv_strerror | 0 | +| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | uv_translate_sys_error | 0 | +| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | zError | 0 | | standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | ASN1_STRING_type_new | 0 | | standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | ASN1_tag2bit | 0 | | standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | ASN1_tag2str | 0 | @@ -4712,6 +5505,9 @@ signatureMatches | standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | X509_TRUST_get0 | 0 | | standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | X509_TRUST_get_by_id | 0 | | standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | c_tolower | 0 | +| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | c_toupper | 0 | +| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | curlx_sitouz | 0 | | standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | evp_pkey_type2name | 0 | | standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | ossl_cmp_bodytype_to_string | 0 | | standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | ossl_tolower | 0 | @@ -4719,6 +5515,12 @@ signatureMatches | standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | sqlite3_compileoption_get | 0 | | standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | sqlite3_errstr | 0 | | standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | tls13_alert_code | 0 | +| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | uv__accept | 0 | +| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | uv_err_name | 0 | +| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | uv_get_osfhandle | 0 | +| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | uv_strerror | 0 | +| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | uv_translate_sys_error | 0 | +| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | zError | 0 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (BIGNUM *,int) | | BN_clear_bit | 1 | @@ -4737,6 +5539,8 @@ signatureMatches | standalone_iterators.cpp:103:27:103:36 | operator+= | (BIO *,int) | | TXT_DB_read | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (CURL *,int) | | curl_easy_pause | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (DH *,int) | | DH_clear_flags | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (DH *,int) | | DH_set_flags | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -4780,6 +5584,17 @@ signatureMatches | standalone_iterators.cpp:103:27:103:36 | operator+= | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (LPCOLESTR,int) | CComBSTR | Append | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -4897,8 +5712,10 @@ signatureMatches | standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (acttab *,int) | | acttab_insert | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (char *,int) | | Curl_str2addr | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (char *,int) | | PEM_proc_type | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (char,int) | CStringT | CStringT | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (const BIGNUM *,int) | | BN_get_flags | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -4965,12 +5782,22 @@ signatureMatches | standalone_iterators.cpp:103:27:103:36 | operator+= | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (gzFile,int) | | gzflush | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (gzFile,int) | | gzputc | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (int *,int) | | X509_PURPOSE_set | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (int *,int) | | X509_TRUST_set | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (int,int) | | BN_security_bits | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (int,int) | | EVP_MD_meth_new | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (int,int) | | EVP_PKEY_meth_new | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (int,int) | | acttab_alloc | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (rule *,int) | | Configlist_add | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (rule *,int) | | Configlist_addbasis | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -5005,6 +5832,7 @@ signatureMatches | standalone_iterators.cpp:103:27:103:36 | operator+= | (unsigned char *,int) | | RAND_priv_bytes | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| standalone_iterators.cpp:103:27:103:36 | operator+= | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (void *,int) | | DSO_dsobyaddr | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (void *,int) | | sqlite3_realloc | 1 | | standalone_iterators.cpp:103:27:103:36 | operator+= | (wchar_t,int) | CStringT | CStringT | 1 | @@ -5098,6 +5926,21 @@ signatureMatches | stl.h:52:12:52:21 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | | stl.h:52:12:52:21 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | | stl.h:52:12:52:21 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | c_tolower | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | c_tolower | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | c_tolower | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | c_tolower | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | c_tolower | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | c_toupper | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | c_toupper | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | c_toupper | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | c_toupper | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | c_toupper | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | curlx_sitouz | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | curlx_sitouz | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | curlx_sitouz | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | curlx_sitouz | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | curlx_sitouz | 0 | | stl.h:52:12:52:21 | operator++ | (int) | | evp_pkey_type2name | 0 | | stl.h:52:12:52:21 | operator++ | (int) | | evp_pkey_type2name | 0 | | stl.h:52:12:52:21 | operator++ | (int) | | evp_pkey_type2name | 0 | @@ -5133,6 +5976,36 @@ signatureMatches | stl.h:52:12:52:21 | operator++ | (int) | | tls13_alert_code | 0 | | stl.h:52:12:52:21 | operator++ | (int) | | tls13_alert_code | 0 | | stl.h:52:12:52:21 | operator++ | (int) | | tls13_alert_code | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv__accept | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv__accept | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv__accept | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv__accept | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv__accept | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_err_name | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_err_name | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_err_name | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_err_name | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_err_name | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_get_osfhandle | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_get_osfhandle | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_get_osfhandle | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_get_osfhandle | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_get_osfhandle | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_strerror | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_strerror | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_strerror | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_strerror | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_strerror | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_translate_sys_error | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_translate_sys_error | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_translate_sys_error | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_translate_sys_error | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | uv_translate_sys_error | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | zError | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | zError | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | zError | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | zError | 0 | +| stl.h:52:12:52:21 | operator++ | (int) | | zError | 0 | | stl.h:54:12:54:21 | operator-- | (int) | | ASN1_STRING_type_new | 0 | | stl.h:54:12:54:21 | operator-- | (int) | | ASN1_tag2bit | 0 | | stl.h:54:12:54:21 | operator-- | (int) | | ASN1_tag2str | 0 | @@ -5151,6 +6024,9 @@ signatureMatches | stl.h:54:12:54:21 | operator-- | (int) | | X509_TRUST_get0 | 0 | | stl.h:54:12:54:21 | operator-- | (int) | | X509_TRUST_get_by_id | 0 | | stl.h:54:12:54:21 | operator-- | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| stl.h:54:12:54:21 | operator-- | (int) | | c_tolower | 0 | +| stl.h:54:12:54:21 | operator-- | (int) | | c_toupper | 0 | +| stl.h:54:12:54:21 | operator-- | (int) | | curlx_sitouz | 0 | | stl.h:54:12:54:21 | operator-- | (int) | | evp_pkey_type2name | 0 | | stl.h:54:12:54:21 | operator-- | (int) | | ossl_cmp_bodytype_to_string | 0 | | stl.h:54:12:54:21 | operator-- | (int) | | ossl_tolower | 0 | @@ -5158,6 +6034,12 @@ signatureMatches | stl.h:54:12:54:21 | operator-- | (int) | | sqlite3_compileoption_get | 0 | | stl.h:54:12:54:21 | operator-- | (int) | | sqlite3_errstr | 0 | | stl.h:54:12:54:21 | operator-- | (int) | | tls13_alert_code | 0 | +| stl.h:54:12:54:21 | operator-- | (int) | | uv__accept | 0 | +| stl.h:54:12:54:21 | operator-- | (int) | | uv_err_name | 0 | +| stl.h:54:12:54:21 | operator-- | (int) | | uv_get_osfhandle | 0 | +| stl.h:54:12:54:21 | operator-- | (int) | | uv_strerror | 0 | +| stl.h:54:12:54:21 | operator-- | (int) | | uv_translate_sys_error | 0 | +| stl.h:54:12:54:21 | operator-- | (int) | | zError | 0 | | stl.h:59:12:59:20 | operator+ | (int) | | ASN1_STRING_type_new | 0 | | stl.h:59:12:59:20 | operator+ | (int) | | ASN1_tag2bit | 0 | | stl.h:59:12:59:20 | operator+ | (int) | | ASN1_tag2str | 0 | @@ -5176,6 +6058,9 @@ signatureMatches | stl.h:59:12:59:20 | operator+ | (int) | | X509_TRUST_get0 | 0 | | stl.h:59:12:59:20 | operator+ | (int) | | X509_TRUST_get_by_id | 0 | | stl.h:59:12:59:20 | operator+ | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| stl.h:59:12:59:20 | operator+ | (int) | | c_tolower | 0 | +| stl.h:59:12:59:20 | operator+ | (int) | | c_toupper | 0 | +| stl.h:59:12:59:20 | operator+ | (int) | | curlx_sitouz | 0 | | stl.h:59:12:59:20 | operator+ | (int) | | evp_pkey_type2name | 0 | | stl.h:59:12:59:20 | operator+ | (int) | | ossl_cmp_bodytype_to_string | 0 | | stl.h:59:12:59:20 | operator+ | (int) | | ossl_tolower | 0 | @@ -5183,6 +6068,12 @@ signatureMatches | stl.h:59:12:59:20 | operator+ | (int) | | sqlite3_compileoption_get | 0 | | stl.h:59:12:59:20 | operator+ | (int) | | sqlite3_errstr | 0 | | stl.h:59:12:59:20 | operator+ | (int) | | tls13_alert_code | 0 | +| stl.h:59:12:59:20 | operator+ | (int) | | uv__accept | 0 | +| stl.h:59:12:59:20 | operator+ | (int) | | uv_err_name | 0 | +| stl.h:59:12:59:20 | operator+ | (int) | | uv_get_osfhandle | 0 | +| stl.h:59:12:59:20 | operator+ | (int) | | uv_strerror | 0 | +| stl.h:59:12:59:20 | operator+ | (int) | | uv_translate_sys_error | 0 | +| stl.h:59:12:59:20 | operator+ | (int) | | zError | 0 | | stl.h:60:12:60:20 | operator- | (int) | | ASN1_STRING_type_new | 0 | | stl.h:60:12:60:20 | operator- | (int) | | ASN1_tag2bit | 0 | | stl.h:60:12:60:20 | operator- | (int) | | ASN1_tag2str | 0 | @@ -5201,6 +6092,9 @@ signatureMatches | stl.h:60:12:60:20 | operator- | (int) | | X509_TRUST_get0 | 0 | | stl.h:60:12:60:20 | operator- | (int) | | X509_TRUST_get_by_id | 0 | | stl.h:60:12:60:20 | operator- | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| stl.h:60:12:60:20 | operator- | (int) | | c_tolower | 0 | +| stl.h:60:12:60:20 | operator- | (int) | | c_toupper | 0 | +| stl.h:60:12:60:20 | operator- | (int) | | curlx_sitouz | 0 | | stl.h:60:12:60:20 | operator- | (int) | | evp_pkey_type2name | 0 | | stl.h:60:12:60:20 | operator- | (int) | | ossl_cmp_bodytype_to_string | 0 | | stl.h:60:12:60:20 | operator- | (int) | | ossl_tolower | 0 | @@ -5208,6 +6102,12 @@ signatureMatches | stl.h:60:12:60:20 | operator- | (int) | | sqlite3_compileoption_get | 0 | | stl.h:60:12:60:20 | operator- | (int) | | sqlite3_errstr | 0 | | stl.h:60:12:60:20 | operator- | (int) | | tls13_alert_code | 0 | +| stl.h:60:12:60:20 | operator- | (int) | | uv__accept | 0 | +| stl.h:60:12:60:20 | operator- | (int) | | uv_err_name | 0 | +| stl.h:60:12:60:20 | operator- | (int) | | uv_get_osfhandle | 0 | +| stl.h:60:12:60:20 | operator- | (int) | | uv_strerror | 0 | +| stl.h:60:12:60:20 | operator- | (int) | | uv_translate_sys_error | 0 | +| stl.h:60:12:60:20 | operator- | (int) | | zError | 0 | | stl.h:61:13:61:22 | operator+= | (int) | | ASN1_STRING_type_new | 0 | | stl.h:61:13:61:22 | operator+= | (int) | | ASN1_STRING_type_new | 0 | | stl.h:61:13:61:22 | operator+= | (int) | | ASN1_tag2bit | 0 | @@ -5244,6 +6144,12 @@ signatureMatches | stl.h:61:13:61:22 | operator+= | (int) | | X509_TRUST_get_by_id | 0 | | stl.h:61:13:61:22 | operator+= | (int) | | X509_VERIFY_PARAM_get0 | 0 | | stl.h:61:13:61:22 | operator+= | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | c_tolower | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | c_tolower | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | c_toupper | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | c_toupper | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | curlx_sitouz | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | curlx_sitouz | 0 | | stl.h:61:13:61:22 | operator+= | (int) | | evp_pkey_type2name | 0 | | stl.h:61:13:61:22 | operator+= | (int) | | evp_pkey_type2name | 0 | | stl.h:61:13:61:22 | operator+= | (int) | | ossl_cmp_bodytype_to_string | 0 | @@ -5258,6 +6164,18 @@ signatureMatches | stl.h:61:13:61:22 | operator+= | (int) | | sqlite3_errstr | 0 | | stl.h:61:13:61:22 | operator+= | (int) | | tls13_alert_code | 0 | | stl.h:61:13:61:22 | operator+= | (int) | | tls13_alert_code | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | uv__accept | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | uv__accept | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | uv_err_name | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | uv_err_name | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | uv_get_osfhandle | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | uv_get_osfhandle | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | uv_strerror | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | uv_strerror | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | uv_translate_sys_error | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | uv_translate_sys_error | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | zError | 0 | +| stl.h:61:13:61:22 | operator+= | (int) | | zError | 0 | | stl.h:62:13:62:22 | operator-= | (int) | | ASN1_STRING_type_new | 0 | | stl.h:62:13:62:22 | operator-= | (int) | | ASN1_tag2bit | 0 | | stl.h:62:13:62:22 | operator-= | (int) | | ASN1_tag2str | 0 | @@ -5276,6 +6194,9 @@ signatureMatches | stl.h:62:13:62:22 | operator-= | (int) | | X509_TRUST_get0 | 0 | | stl.h:62:13:62:22 | operator-= | (int) | | X509_TRUST_get_by_id | 0 | | stl.h:62:13:62:22 | operator-= | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| stl.h:62:13:62:22 | operator-= | (int) | | c_tolower | 0 | +| stl.h:62:13:62:22 | operator-= | (int) | | c_toupper | 0 | +| stl.h:62:13:62:22 | operator-= | (int) | | curlx_sitouz | 0 | | stl.h:62:13:62:22 | operator-= | (int) | | evp_pkey_type2name | 0 | | stl.h:62:13:62:22 | operator-= | (int) | | ossl_cmp_bodytype_to_string | 0 | | stl.h:62:13:62:22 | operator-= | (int) | | ossl_tolower | 0 | @@ -5283,6 +6204,12 @@ signatureMatches | stl.h:62:13:62:22 | operator-= | (int) | | sqlite3_compileoption_get | 0 | | stl.h:62:13:62:22 | operator-= | (int) | | sqlite3_errstr | 0 | | stl.h:62:13:62:22 | operator-= | (int) | | tls13_alert_code | 0 | +| stl.h:62:13:62:22 | operator-= | (int) | | uv__accept | 0 | +| stl.h:62:13:62:22 | operator-= | (int) | | uv_err_name | 0 | +| stl.h:62:13:62:22 | operator-= | (int) | | uv_get_osfhandle | 0 | +| stl.h:62:13:62:22 | operator-= | (int) | | uv_strerror | 0 | +| stl.h:62:13:62:22 | operator-= | (int) | | uv_translate_sys_error | 0 | +| stl.h:62:13:62:22 | operator-= | (int) | | zError | 0 | | stl.h:64:18:64:27 | operator[] | (int) | | ASN1_STRING_type_new | 0 | | stl.h:64:18:64:27 | operator[] | (int) | | ASN1_tag2bit | 0 | | stl.h:64:18:64:27 | operator[] | (int) | | ASN1_tag2str | 0 | @@ -5301,6 +6228,9 @@ signatureMatches | stl.h:64:18:64:27 | operator[] | (int) | | X509_TRUST_get0 | 0 | | stl.h:64:18:64:27 | operator[] | (int) | | X509_TRUST_get_by_id | 0 | | stl.h:64:18:64:27 | operator[] | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| stl.h:64:18:64:27 | operator[] | (int) | | c_tolower | 0 | +| stl.h:64:18:64:27 | operator[] | (int) | | c_toupper | 0 | +| stl.h:64:18:64:27 | operator[] | (int) | | curlx_sitouz | 0 | | stl.h:64:18:64:27 | operator[] | (int) | | evp_pkey_type2name | 0 | | stl.h:64:18:64:27 | operator[] | (int) | | ossl_cmp_bodytype_to_string | 0 | | stl.h:64:18:64:27 | operator[] | (int) | | ossl_tolower | 0 | @@ -5308,6 +6238,12 @@ signatureMatches | stl.h:64:18:64:27 | operator[] | (int) | | sqlite3_compileoption_get | 0 | | stl.h:64:18:64:27 | operator[] | (int) | | sqlite3_errstr | 0 | | stl.h:64:18:64:27 | operator[] | (int) | | tls13_alert_code | 0 | +| stl.h:64:18:64:27 | operator[] | (int) | | uv__accept | 0 | +| stl.h:64:18:64:27 | operator[] | (int) | | uv_err_name | 0 | +| stl.h:64:18:64:27 | operator[] | (int) | | uv_get_osfhandle | 0 | +| stl.h:64:18:64:27 | operator[] | (int) | | uv_strerror | 0 | +| stl.h:64:18:64:27 | operator[] | (int) | | uv_translate_sys_error | 0 | +| stl.h:64:18:64:27 | operator[] | (int) | | zError | 0 | | stl.h:91:24:91:33 | operator++ | (int) | | ASN1_STRING_type_new | 0 | | stl.h:91:24:91:33 | operator++ | (int) | | ASN1_STRING_type_new | 0 | | stl.h:91:24:91:33 | operator++ | (int) | | ASN1_tag2bit | 0 | @@ -5344,6 +6280,12 @@ signatureMatches | stl.h:91:24:91:33 | operator++ | (int) | | X509_TRUST_get_by_id | 0 | | stl.h:91:24:91:33 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | | stl.h:91:24:91:33 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | c_tolower | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | c_tolower | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | c_toupper | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | c_toupper | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | curlx_sitouz | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | curlx_sitouz | 0 | | stl.h:91:24:91:33 | operator++ | (int) | | evp_pkey_type2name | 0 | | stl.h:91:24:91:33 | operator++ | (int) | | evp_pkey_type2name | 0 | | stl.h:91:24:91:33 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 | @@ -5358,6 +6300,18 @@ signatureMatches | stl.h:91:24:91:33 | operator++ | (int) | | sqlite3_errstr | 0 | | stl.h:91:24:91:33 | operator++ | (int) | | tls13_alert_code | 0 | | stl.h:91:24:91:33 | operator++ | (int) | | tls13_alert_code | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | uv__accept | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | uv__accept | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | uv_err_name | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | uv_err_name | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | uv_get_osfhandle | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | uv_get_osfhandle | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | uv_strerror | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | uv_strerror | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | uv_translate_sys_error | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | uv_translate_sys_error | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | zError | 0 | +| stl.h:91:24:91:33 | operator++ | (int) | | zError | 0 | | stl.h:182:17:182:22 | assign | (InputIt,InputIt) | deque | assign | 0 | | stl.h:182:17:182:22 | assign | (InputIt,InputIt) | deque | assign | 1 | | stl.h:182:17:182:22 | assign | (InputIt,InputIt) | forward_list | assign | 0 | @@ -5520,6 +6474,9 @@ signatureMatches | stl.h:240:33:240:42 | operator<< | (int) | | X509_TRUST_get0 | 0 | | stl.h:240:33:240:42 | operator<< | (int) | | X509_TRUST_get_by_id | 0 | | stl.h:240:33:240:42 | operator<< | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| stl.h:240:33:240:42 | operator<< | (int) | | c_tolower | 0 | +| stl.h:240:33:240:42 | operator<< | (int) | | c_toupper | 0 | +| stl.h:240:33:240:42 | operator<< | (int) | | curlx_sitouz | 0 | | stl.h:240:33:240:42 | operator<< | (int) | | evp_pkey_type2name | 0 | | stl.h:240:33:240:42 | operator<< | (int) | | ossl_cmp_bodytype_to_string | 0 | | stl.h:240:33:240:42 | operator<< | (int) | | ossl_tolower | 0 | @@ -5527,6 +6484,12 @@ signatureMatches | stl.h:240:33:240:42 | operator<< | (int) | | sqlite3_compileoption_get | 0 | | stl.h:240:33:240:42 | operator<< | (int) | | sqlite3_errstr | 0 | | stl.h:240:33:240:42 | operator<< | (int) | | tls13_alert_code | 0 | +| stl.h:240:33:240:42 | operator<< | (int) | | uv__accept | 0 | +| stl.h:240:33:240:42 | operator<< | (int) | | uv_err_name | 0 | +| stl.h:240:33:240:42 | operator<< | (int) | | uv_get_osfhandle | 0 | +| stl.h:240:33:240:42 | operator<< | (int) | | uv_strerror | 0 | +| stl.h:240:33:240:42 | operator<< | (int) | | uv_translate_sys_error | 0 | +| stl.h:240:33:240:42 | operator<< | (int) | | zError | 0 | | stl.h:243:33:243:37 | write | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_cert_flags | 1 | | stl.h:243:33:243:37 | write | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_flags | 1 | | stl.h:243:33:243:37 | write | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_nm_flags | 1 | @@ -5677,6 +6640,12 @@ signatureMatches | stl.h:315:13:315:22 | operator[] | (unsigned int) | | Jim_IntHashFunction | 0 | | stl.h:315:13:315:22 | operator[] | (unsigned int) | | Jim_IntHashFunction | 0 | | stl.h:315:13:315:22 | operator[] | (unsigned int) | | Jim_IntHashFunction | 0 | +| stl.h:315:13:315:22 | operator[] | (unsigned int) | | curlx_uitous | 0 | +| stl.h:315:13:315:22 | operator[] | (unsigned int) | | curlx_uitous | 0 | +| stl.h:315:13:315:22 | operator[] | (unsigned int) | | curlx_uitous | 0 | +| stl.h:315:13:315:22 | operator[] | (unsigned int) | | curlx_uitous | 0 | +| stl.h:315:13:315:22 | operator[] | (unsigned int) | | curlx_uitous | 0 | +| stl.h:315:13:315:22 | operator[] | (unsigned int) | | curlx_uitous | 0 | | stl.h:315:13:315:22 | operator[] | (unsigned int) | | ssl3_get_cipher | 0 | | stl.h:315:13:315:22 | operator[] | (unsigned int) | | ssl3_get_cipher | 0 | | stl.h:315:13:315:22 | operator[] | (unsigned int) | | ssl3_get_cipher | 0 | @@ -5684,6 +6653,7 @@ signatureMatches | stl.h:315:13:315:22 | operator[] | (unsigned int) | | ssl3_get_cipher | 0 | | stl.h:315:13:315:22 | operator[] | (unsigned int) | | ssl3_get_cipher | 0 | | stl.h:318:13:318:14 | at | (unsigned int) | | Jim_IntHashFunction | 0 | +| stl.h:318:13:318:14 | at | (unsigned int) | | curlx_uitous | 0 | | stl.h:318:13:318:14 | at | (unsigned int) | | ssl3_get_cipher | 0 | | stl.h:331:12:331:17 | insert | (const_iterator,T &&) | deque | insert | 0 | | stl.h:331:12:331:17 | insert | (const_iterator,T &&) | deque | insert | 1 | @@ -5829,6 +6799,9 @@ signatureMatches | stl.h:683:6:683:48 | same_signature_as_format_but_different_name | (format_string,Args &&) | | format | 0 | | stl.h:683:6:683:48 | same_signature_as_format_but_different_name | (format_string,Args &&) | | format | 1 | | string.cpp:17:6:17:9 | sink | (const char *) | | BIO_gethostbyname | 0 | +| string.cpp:17:6:17:9 | sink | (const char *) | | Curl_copy_header_value | 0 | +| string.cpp:17:6:17:9 | sink | (const char *) | | Curl_get_scheme_handler | 0 | +| string.cpp:17:6:17:9 | sink | (const char *) | | Curl_getdate_capped | 0 | | string.cpp:17:6:17:9 | sink | (const char *) | | Jim_StrDup | 0 | | string.cpp:17:6:17:9 | sink | (const char *) | | OPENSSL_LH_strhash | 0 | | string.cpp:17:6:17:9 | sink | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -5839,10 +6812,14 @@ signatureMatches | string.cpp:17:6:17:9 | sink | (const char *) | | X509_LOOKUP_meth_new | 0 | | string.cpp:17:6:17:9 | sink | (const char *) | | a2i_IPADDRESS | 0 | | string.cpp:17:6:17:9 | sink | (const char *) | | a2i_IPADDRESS_NC | 0 | +| string.cpp:17:6:17:9 | sink | (const char *) | | last_component | 0 | | string.cpp:17:6:17:9 | sink | (const char *) | | opt_path_end | 0 | | string.cpp:17:6:17:9 | sink | (const char *) | | opt_progname | 0 | | string.cpp:17:6:17:9 | sink | (const char *) | | ossl_lh_strcasehash | 0 | | string.cpp:17:6:17:9 | sink | (const char *) | | strhash | 0 | +| string.cpp:17:6:17:9 | sink | (const char *) | | uc_script_byname | 0 | +| string.cpp:17:6:17:9 | sink | (const char *) | | uv__strdup | 0 | +| string.cpp:17:6:17:9 | sink | (const char *) | | uv_wtf8_length_as_utf16 | 0 | | string.cpp:19:6:19:9 | sink | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 | | string.cpp:19:6:19:9 | sink | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 | | string.cpp:19:6:19:9 | sink | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string_X509 | 1 | @@ -5852,6 +6829,9 @@ signatureMatches | string.cpp:19:6:19:9 | sink | (BIGNUM **,const char *) | | BN_hex2bn | 1 | | string.cpp:19:6:19:9 | sink | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | | string.cpp:19:6:19:9 | sink | (CONF *,const char *) | | _CONF_new_section | 1 | +| string.cpp:19:6:19:9 | sink | (CURLU *,const char *) | | Curl_url_set_authority | 1 | +| string.cpp:19:6:19:9 | sink | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | +| string.cpp:19:6:19:9 | sink | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | | string.cpp:19:6:19:9 | sink | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | | string.cpp:19:6:19:9 | sink | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | | string.cpp:19:6:19:9 | sink | (DSO *,const char *) | | DSO_convert_filename | 1 | @@ -5862,10 +6842,14 @@ signatureMatches | string.cpp:19:6:19:9 | sink | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | | string.cpp:19:6:19:9 | sink | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | | string.cpp:19:6:19:9 | sink | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | +| string.cpp:19:6:19:9 | sink | (GlobalConfig *,const char *) | | setvariable | 1 | | string.cpp:19:6:19:9 | sink | (Jim_Interp *,const char *) | | Jim_Eval | 1 | | string.cpp:19:6:19:9 | sink | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | | string.cpp:19:6:19:9 | sink | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | | string.cpp:19:6:19:9 | sink | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | +| string.cpp:19:6:19:9 | sink | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | +| string.cpp:19:6:19:9 | sink | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | +| string.cpp:19:6:19:9 | sink | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | | string.cpp:19:6:19:9 | sink | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | | string.cpp:19:6:19:9 | sink | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | | string.cpp:19:6:19:9 | sink | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | @@ -5922,15 +6906,25 @@ signatureMatches | string.cpp:19:6:19:9 | sink | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | | string.cpp:19:6:19:9 | sink | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | | string.cpp:19:6:19:9 | sink | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | +| string.cpp:19:6:19:9 | sink | (char **,const char *) | | Curl_setstropt | 1 | | string.cpp:19:6:19:9 | sink | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | +| string.cpp:19:6:19:9 | sink | (const char **,const char *) | | uv__utf8_decode1 | 1 | | string.cpp:19:6:19:9 | sink | (const char *,const char *) | | Configcmp | 0 | | string.cpp:19:6:19:9 | sink | (const char *,const char *) | | Configcmp | 1 | +| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | Curl_timestrcmp | 0 | +| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | Curl_timestrcmp | 1 | | string.cpp:19:6:19:9 | sink | (const char *,const char *) | | DES_crypt | 0 | | string.cpp:19:6:19:9 | sink | (const char *,const char *) | | DES_crypt | 1 | | string.cpp:19:6:19:9 | sink | (const char *,const char *) | | OPENSSL_strcasecmp | 0 | | string.cpp:19:6:19:9 | sink | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | +| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | c_strcasecmp | 0 | +| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | c_strcasecmp | 1 | | string.cpp:19:6:19:9 | sink | (const char *,const char *) | | get_passwd | 0 | | string.cpp:19:6:19:9 | sink | (const char *,const char *) | | get_passwd | 1 | +| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | gzopen | 0 | +| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | gzopen | 1 | +| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | gzopen64 | 0 | +| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | gzopen64 | 1 | | string.cpp:19:6:19:9 | sink | (const char *,const char *) | | openssl_fopen | 0 | | string.cpp:19:6:19:9 | sink | (const char *,const char *) | | openssl_fopen | 1 | | string.cpp:19:6:19:9 | sink | (const char *,const char *) | | ossl_pem_check_suffix | 0 | @@ -5941,9 +6935,25 @@ signatureMatches | string.cpp:19:6:19:9 | sink | (const char *,const char *) | | sqlite3_strglob | 1 | | string.cpp:19:6:19:9 | sink | (const char *,const char *) | | sqlite3_stricmp | 0 | | string.cpp:19:6:19:9 | sink | (const char *,const char *) | | sqlite3_stricmp | 1 | +| string.cpp:19:6:19:9 | sink | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | +| string.cpp:19:6:19:9 | sink | (curl_off_t *,const char *) | | str2offset | 1 | +| string.cpp:19:6:19:9 | sink | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | +| string.cpp:19:6:19:9 | sink | (curl_slist **,const char *) | | add2list | 1 | +| string.cpp:19:6:19:9 | sink | (curl_slist *,const char *) | | curl_slist_append | 1 | +| string.cpp:19:6:19:9 | sink | (dynbuf *,const char *) | | Curl_dyn_add | 1 | +| string.cpp:19:6:19:9 | sink | (dynbuf *,const char *) | | curlx_dyn_add | 1 | +| string.cpp:19:6:19:9 | sink | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | +| string.cpp:19:6:19:9 | sink | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | +| string.cpp:19:6:19:9 | sink | (gzFile,const char *) | | gzputs | 1 | | string.cpp:19:6:19:9 | sink | (int,const char *) | | BIO_meth_new | 1 | +| string.cpp:19:6:19:9 | sink | (int,const char *) | | gzdopen | 1 | | string.cpp:19:6:19:9 | sink | (lemon *,const char *) | | file_makename | 1 | +| string.cpp:19:6:19:9 | sink | (long *,const char *) | | secs2ms | 1 | +| string.cpp:19:6:19:9 | sink | (long *,const char *) | | str2num | 1 | +| string.cpp:19:6:19:9 | sink | (long *,const char *) | | str2unum | 1 | | string.cpp:19:6:19:9 | sink | (size_t *,const char *) | | next_protos_parse | 1 | +| string.cpp:19:6:19:9 | sink | (slist_wc **,const char *) | | easysrc_add | 1 | +| string.cpp:19:6:19:9 | sink | (slist_wc *,const char *) | | slist_wc_append | 1 | | string.cpp:19:6:19:9 | sink | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | | string.cpp:19:6:19:9 | sink | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | | string.cpp:19:6:19:9 | sink | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | @@ -5954,6 +6964,10 @@ signatureMatches | string.cpp:19:6:19:9 | sink | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | | string.cpp:19:6:19:9 | sink | (unsigned long *,const char *) | | set_cert_ex | 1 | | string.cpp:19:6:19:9 | sink | (unsigned long *,const char *) | | set_name_ex | 1 | +| string.cpp:19:6:19:9 | sink | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | +| string.cpp:20:6:20:9 | sink | (char) | | Curl_raw_tolower | 0 | +| string.cpp:20:6:20:9 | sink | (char) | | Curl_raw_toupper | 0 | +| string.cpp:20:6:20:9 | sink | (char) | | findshortopt | 0 | | string.cpp:20:6:20:9 | sink | (char) | | operator+= | 0 | | string.cpp:20:6:20:9 | sink | (char) | CComBSTR | Append | 0 | | string.cpp:20:6:20:9 | sink | (char) | CSimpleStringT | operator+= | 0 | @@ -5975,6 +6989,9 @@ signatureMatches | stringstream.cpp:13:6:13:9 | sink | (int) | | X509_TRUST_get0 | 0 | | stringstream.cpp:13:6:13:9 | sink | (int) | | X509_TRUST_get_by_id | 0 | | stringstream.cpp:13:6:13:9 | sink | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| stringstream.cpp:13:6:13:9 | sink | (int) | | c_tolower | 0 | +| stringstream.cpp:13:6:13:9 | sink | (int) | | c_toupper | 0 | +| stringstream.cpp:13:6:13:9 | sink | (int) | | curlx_sitouz | 0 | | stringstream.cpp:13:6:13:9 | sink | (int) | | evp_pkey_type2name | 0 | | stringstream.cpp:13:6:13:9 | sink | (int) | | ossl_cmp_bodytype_to_string | 0 | | stringstream.cpp:13:6:13:9 | sink | (int) | | ossl_tolower | 0 | @@ -5982,6 +6999,12 @@ signatureMatches | stringstream.cpp:13:6:13:9 | sink | (int) | | sqlite3_compileoption_get | 0 | | stringstream.cpp:13:6:13:9 | sink | (int) | | sqlite3_errstr | 0 | | stringstream.cpp:13:6:13:9 | sink | (int) | | tls13_alert_code | 0 | +| stringstream.cpp:13:6:13:9 | sink | (int) | | uv__accept | 0 | +| stringstream.cpp:13:6:13:9 | sink | (int) | | uv_err_name | 0 | +| stringstream.cpp:13:6:13:9 | sink | (int) | | uv_get_osfhandle | 0 | +| stringstream.cpp:13:6:13:9 | sink | (int) | | uv_strerror | 0 | +| stringstream.cpp:13:6:13:9 | sink | (int) | | uv_translate_sys_error | 0 | +| stringstream.cpp:13:6:13:9 | sink | (int) | | zError | 0 | | stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | ASN1_STRING_type_new | 0 | | stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | ASN1_tag2bit | 0 | | stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | ASN1_tag2str | 0 | @@ -6000,6 +7023,9 @@ signatureMatches | stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | X509_TRUST_get0 | 0 | | stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | X509_TRUST_get_by_id | 0 | | stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | c_tolower | 0 | +| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | c_toupper | 0 | +| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | curlx_sitouz | 0 | | stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | evp_pkey_type2name | 0 | | stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | ossl_cmp_bodytype_to_string | 0 | | stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | ossl_tolower | 0 | @@ -6007,6 +7033,12 @@ signatureMatches | stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | sqlite3_compileoption_get | 0 | | stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | sqlite3_errstr | 0 | | stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | tls13_alert_code | 0 | +| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | uv__accept | 0 | +| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | uv_err_name | 0 | +| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | uv_get_osfhandle | 0 | +| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | uv_strerror | 0 | +| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | uv_translate_sys_error | 0 | +| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | zError | 0 | | stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | ASN1_STRING_type_new | 0 | | stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | ASN1_tag2bit | 0 | | stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | ASN1_tag2str | 0 | @@ -6025,6 +7057,9 @@ signatureMatches | stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | X509_TRUST_get0 | 0 | | stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | X509_TRUST_get_by_id | 0 | | stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | c_tolower | 0 | +| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | c_toupper | 0 | +| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | curlx_sitouz | 0 | | stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | evp_pkey_type2name | 0 | | stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | ossl_cmp_bodytype_to_string | 0 | | stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | ossl_tolower | 0 | @@ -6032,6 +7067,12 @@ signatureMatches | stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | sqlite3_compileoption_get | 0 | | stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | sqlite3_errstr | 0 | | stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | tls13_alert_code | 0 | +| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | uv__accept | 0 | +| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | uv_err_name | 0 | +| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | uv_get_osfhandle | 0 | +| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | uv_strerror | 0 | +| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | uv_translate_sys_error | 0 | +| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | zError | 0 | | structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | ASN1_STRING_type_new | 0 | | structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | ASN1_tag2bit | 0 | | structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | ASN1_tag2str | 0 | @@ -6050,6 +7091,9 @@ signatureMatches | structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | X509_TRUST_get0 | 0 | | structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | X509_TRUST_get_by_id | 0 | | structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | c_tolower | 0 | +| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | c_toupper | 0 | +| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | curlx_sitouz | 0 | | structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | evp_pkey_type2name | 0 | | structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | ossl_cmp_bodytype_to_string | 0 | | structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | ossl_tolower | 0 | @@ -6057,6 +7101,12 @@ signatureMatches | structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | sqlite3_compileoption_get | 0 | | structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | sqlite3_errstr | 0 | | structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | tls13_alert_code | 0 | +| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | uv__accept | 0 | +| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | uv_err_name | 0 | +| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | uv_get_osfhandle | 0 | +| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | uv_strerror | 0 | +| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | uv_translate_sys_error | 0 | +| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | zError | 0 | | taint.cpp:4:6:4:21 | arithAssignments | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (BIGNUM *,int) | | BN_clear_bit | 1 | @@ -6075,6 +7125,8 @@ signatureMatches | taint.cpp:4:6:4:21 | arithAssignments | (BIO *,int) | | TXT_DB_read | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (CURL *,int) | | curl_easy_pause | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (DH *,int) | | DH_clear_flags | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (DH *,int) | | DH_set_flags | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -6118,6 +7170,17 @@ signatureMatches | taint.cpp:4:6:4:21 | arithAssignments | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (LPCOLESTR,int) | CComBSTR | Append | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -6235,8 +7298,10 @@ signatureMatches | taint.cpp:4:6:4:21 | arithAssignments | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (acttab *,int) | | acttab_insert | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (char *,int) | | Curl_str2addr | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (char *,int) | | PEM_proc_type | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (char,int) | CStringT | CStringT | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (const BIGNUM *,int) | | BN_get_flags | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -6303,6 +7368,9 @@ signatureMatches | taint.cpp:4:6:4:21 | arithAssignments | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (gzFile,int) | | gzflush | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (gzFile,int) | | gzputc | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (int *,int) | | X509_PURPOSE_set | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (int *,int) | | X509_TRUST_set | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | BN_security_bits | 0 | @@ -6313,6 +7381,13 @@ signatureMatches | taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | EVP_PKEY_meth_new | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | acttab_alloc | 0 | | taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | acttab_alloc | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (rule *,int) | | Configlist_add | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (rule *,int) | | Configlist_addbasis | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -6347,6 +7422,7 @@ signatureMatches | taint.cpp:4:6:4:21 | arithAssignments | (unsigned char *,int) | | RAND_priv_bytes | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| taint.cpp:4:6:4:21 | arithAssignments | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (void *,int) | | DSO_dsobyaddr | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (void *,int) | | sqlite3_realloc | 1 | | taint.cpp:4:6:4:21 | arithAssignments | (wchar_t,int) | CStringT | CStringT | 1 | @@ -6368,6 +7444,9 @@ signatureMatches | taint.cpp:22:5:22:13 | increment | (int) | | X509_TRUST_get0 | 0 | | taint.cpp:22:5:22:13 | increment | (int) | | X509_TRUST_get_by_id | 0 | | taint.cpp:22:5:22:13 | increment | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| taint.cpp:22:5:22:13 | increment | (int) | | c_tolower | 0 | +| taint.cpp:22:5:22:13 | increment | (int) | | c_toupper | 0 | +| taint.cpp:22:5:22:13 | increment | (int) | | curlx_sitouz | 0 | | taint.cpp:22:5:22:13 | increment | (int) | | evp_pkey_type2name | 0 | | taint.cpp:22:5:22:13 | increment | (int) | | ossl_cmp_bodytype_to_string | 0 | | taint.cpp:22:5:22:13 | increment | (int) | | ossl_tolower | 0 | @@ -6375,6 +7454,12 @@ signatureMatches | taint.cpp:22:5:22:13 | increment | (int) | | sqlite3_compileoption_get | 0 | | taint.cpp:22:5:22:13 | increment | (int) | | sqlite3_errstr | 0 | | taint.cpp:22:5:22:13 | increment | (int) | | tls13_alert_code | 0 | +| taint.cpp:22:5:22:13 | increment | (int) | | uv__accept | 0 | +| taint.cpp:22:5:22:13 | increment | (int) | | uv_err_name | 0 | +| taint.cpp:22:5:22:13 | increment | (int) | | uv_get_osfhandle | 0 | +| taint.cpp:22:5:22:13 | increment | (int) | | uv_strerror | 0 | +| taint.cpp:22:5:22:13 | increment | (int) | | uv_translate_sys_error | 0 | +| taint.cpp:22:5:22:13 | increment | (int) | | zError | 0 | | taint.cpp:23:5:23:8 | zero | (int) | | ASN1_STRING_type_new | 0 | | taint.cpp:23:5:23:8 | zero | (int) | | ASN1_tag2bit | 0 | | taint.cpp:23:5:23:8 | zero | (int) | | ASN1_tag2str | 0 | @@ -6393,6 +7478,9 @@ signatureMatches | taint.cpp:23:5:23:8 | zero | (int) | | X509_TRUST_get0 | 0 | | taint.cpp:23:5:23:8 | zero | (int) | | X509_TRUST_get_by_id | 0 | | taint.cpp:23:5:23:8 | zero | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| taint.cpp:23:5:23:8 | zero | (int) | | c_tolower | 0 | +| taint.cpp:23:5:23:8 | zero | (int) | | c_toupper | 0 | +| taint.cpp:23:5:23:8 | zero | (int) | | curlx_sitouz | 0 | | taint.cpp:23:5:23:8 | zero | (int) | | evp_pkey_type2name | 0 | | taint.cpp:23:5:23:8 | zero | (int) | | ossl_cmp_bodytype_to_string | 0 | | taint.cpp:23:5:23:8 | zero | (int) | | ossl_tolower | 0 | @@ -6400,6 +7488,12 @@ signatureMatches | taint.cpp:23:5:23:8 | zero | (int) | | sqlite3_compileoption_get | 0 | | taint.cpp:23:5:23:8 | zero | (int) | | sqlite3_errstr | 0 | | taint.cpp:23:5:23:8 | zero | (int) | | tls13_alert_code | 0 | +| taint.cpp:23:5:23:8 | zero | (int) | | uv__accept | 0 | +| taint.cpp:23:5:23:8 | zero | (int) | | uv_err_name | 0 | +| taint.cpp:23:5:23:8 | zero | (int) | | uv_get_osfhandle | 0 | +| taint.cpp:23:5:23:8 | zero | (int) | | uv_strerror | 0 | +| taint.cpp:23:5:23:8 | zero | (int) | | uv_translate_sys_error | 0 | +| taint.cpp:23:5:23:8 | zero | (int) | | zError | 0 | | taint.cpp:100:6:100:15 | array_test | (int) | | ASN1_STRING_type_new | 0 | | taint.cpp:100:6:100:15 | array_test | (int) | | ASN1_tag2bit | 0 | | taint.cpp:100:6:100:15 | array_test | (int) | | ASN1_tag2str | 0 | @@ -6418,6 +7512,9 @@ signatureMatches | taint.cpp:100:6:100:15 | array_test | (int) | | X509_TRUST_get0 | 0 | | taint.cpp:100:6:100:15 | array_test | (int) | | X509_TRUST_get_by_id | 0 | | taint.cpp:100:6:100:15 | array_test | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| taint.cpp:100:6:100:15 | array_test | (int) | | c_tolower | 0 | +| taint.cpp:100:6:100:15 | array_test | (int) | | c_toupper | 0 | +| taint.cpp:100:6:100:15 | array_test | (int) | | curlx_sitouz | 0 | | taint.cpp:100:6:100:15 | array_test | (int) | | evp_pkey_type2name | 0 | | taint.cpp:100:6:100:15 | array_test | (int) | | ossl_cmp_bodytype_to_string | 0 | | taint.cpp:100:6:100:15 | array_test | (int) | | ossl_tolower | 0 | @@ -6425,6 +7522,12 @@ signatureMatches | taint.cpp:100:6:100:15 | array_test | (int) | | sqlite3_compileoption_get | 0 | | taint.cpp:100:6:100:15 | array_test | (int) | | sqlite3_errstr | 0 | | taint.cpp:100:6:100:15 | array_test | (int) | | tls13_alert_code | 0 | +| taint.cpp:100:6:100:15 | array_test | (int) | | uv__accept | 0 | +| taint.cpp:100:6:100:15 | array_test | (int) | | uv_err_name | 0 | +| taint.cpp:100:6:100:15 | array_test | (int) | | uv_get_osfhandle | 0 | +| taint.cpp:100:6:100:15 | array_test | (int) | | uv_strerror | 0 | +| taint.cpp:100:6:100:15 | array_test | (int) | | uv_translate_sys_error | 0 | +| taint.cpp:100:6:100:15 | array_test | (int) | | zError | 0 | | taint.cpp:142:5:142:10 | select | (ASN1_BIT_STRING *,int,int) | | ASN1_BIT_STRING_set_bit | 1 | | taint.cpp:142:5:142:10 | select | (ASN1_BIT_STRING *,int,int) | | ASN1_BIT_STRING_set_bit | 2 | | taint.cpp:142:5:142:10 | select | (ASN1_BIT_STRING *,unsigned char *,int) | | ASN1_BIT_STRING_set | 2 | @@ -6451,6 +7554,11 @@ signatureMatches | taint.cpp:142:5:142:10 | select | (BIO *,const RSA *,int) | | RSA_print | 2 | | taint.cpp:142:5:142:10 | select | (CERT *,X509_STORE **,int) | | ssl_cert_get_cert_store | 2 | | taint.cpp:142:5:142:10 | select | (CRYPTO_THREAD_ROUTINE,void *,int) | | ossl_crypto_thread_native_start | 2 | +| taint.cpp:142:5:142:10 | select | (Curl_easy *,connectdata *,int) | | Curl_conn_cf_discard_all | 2 | +| taint.cpp:142:5:142:10 | select | (Curl_easy *,connectdata *,int) | | Curl_http2_may_switch | 2 | +| taint.cpp:142:5:142:10 | select | (Curl_easy *,connectdata *,int) | | Curl_http2_switch | 2 | +| taint.cpp:142:5:142:10 | select | (Curl_easy *,connectdata *,int) | | Curl_ssl_cfilter_add | 2 | +| taint.cpp:142:5:142:10 | select | (Curl_sockaddr_ex *,const Curl_addrinfo *,int) | | Curl_sock_assign_addr | 2 | | taint.cpp:142:5:142:10 | select | (DH *,const OSSL_PARAM[],int) | | ossl_dh_key_fromdata | 2 | | taint.cpp:142:5:142:10 | select | (DSA *,const OSSL_PARAM[],int) | | ossl_dsa_key_fromdata | 2 | | taint.cpp:142:5:142:10 | select | (ECX_KEY *,const OSSL_PARAM[],int) | | ossl_ecx_key_fromdata | 2 | @@ -6487,6 +7595,9 @@ signatureMatches | taint.cpp:142:5:142:10 | select | (Jim_Interp *,const char *,int) | | Jim_MakeTempFile | 2 | | taint.cpp:142:5:142:10 | select | (Jim_Interp *,const char *,int) | | Jim_NewStringObj | 2 | | taint.cpp:142:5:142:10 | select | (Jim_Interp *,const char *,int) | | Jim_NewStringObjUtf8 | 2 | +| taint.cpp:142:5:142:10 | select | (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 1 | +| taint.cpp:142:5:142:10 | select | (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 2 | +| taint.cpp:142:5:142:10 | select | (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int) | | libssh2_sftp_fstat_ex | 2 | | taint.cpp:142:5:142:10 | select | (OCSP_BASICRESP *,OCSP_CERTID *,int) | | OCSP_resp_find | 2 | | taint.cpp:142:5:142:10 | select | (OCSP_BASICRESP *,X509_EXTENSION *,int) | | OCSP_BASICRESP_add_ext | 2 | | taint.cpp:142:5:142:10 | select | (OCSP_BASICRESP *,const ASN1_OBJECT *,int) | | OCSP_BASICRESP_get_ext_by_OBJ | 2 | @@ -6591,6 +7702,7 @@ signatureMatches | taint.cpp:142:5:142:10 | select | (const CMS_SignerInfo *,int,int) | | CMS_signed_get_attr_by_NID | 2 | | taint.cpp:142:5:142:10 | select | (const CMS_SignerInfo *,int,int) | | CMS_unsigned_get_attr_by_NID | 1 | | taint.cpp:142:5:142:10 | select | (const CMS_SignerInfo *,int,int) | | CMS_unsigned_get_attr_by_NID | 2 | +| taint.cpp:142:5:142:10 | select | (const Curl_easy *,const connectdata *,int) | | Curl_conn_is_http2 | 2 | | taint.cpp:142:5:142:10 | select | (const EVP_MD *,const EVP_MD *,int) | | ossl_rsa_pss_params_create | 2 | | taint.cpp:142:5:142:10 | select | (const EVP_PKEY *,const ASN1_OBJECT *,int) | | EVP_PKEY_get_attr_by_OBJ | 2 | | taint.cpp:142:5:142:10 | select | (const EVP_PKEY *,int,int) | | EVP_PKEY_get_attr_by_NID | 1 | @@ -6629,6 +7741,7 @@ signatureMatches | taint.cpp:142:5:142:10 | select | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_critical | 1 | | taint.cpp:142:5:142:10 | select | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_critical | 2 | | taint.cpp:142:5:142:10 | select | (const X509_SIG *,const char *,int) | | PKCS8_decrypt | 2 | +| taint.cpp:142:5:142:10 | select | (const char *,char **,int) | | idn2_to_ascii_8z | 2 | | taint.cpp:142:5:142:10 | select | (const char *,const OSSL_PARAM *,int) | | print_param_types | 2 | | taint.cpp:142:5:142:10 | select | (const char *,const char *,int) | | CRYPTO_strdup | 2 | | taint.cpp:142:5:142:10 | select | (const char *,const char *,int) | | sqlite3_strnicmp | 2 | @@ -6642,9 +7755,17 @@ signatureMatches | taint.cpp:142:5:142:10 | select | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_NID | 2 | | taint.cpp:142:5:142:10 | select | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 1 | | taint.cpp:142:5:142:10 | select | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 2 | +| taint.cpp:142:5:142:10 | select | (const uint8_t *,uint8_t **,int) | | idn2_lookup_u8 | 2 | | taint.cpp:142:5:142:10 | select | (const unsigned char **,unsigned int,int) | | ossl_b2i_DSA_after_header | 2 | | taint.cpp:142:5:142:10 | select | (const unsigned char **,unsigned int,int) | | ossl_b2i_RSA_after_header | 2 | | taint.cpp:142:5:142:10 | select | (const void *,const void *,int) | | ossl_is_partially_overlapping | 2 | +| taint.cpp:142:5:142:10 | select | (curl_mimepart *,curl_mime *,int) | | Curl_mime_set_subparts | 2 | +| taint.cpp:142:5:142:10 | select | (curl_mimepart *,curl_slist *,int) | | curl_mime_headers | 2 | +| taint.cpp:142:5:142:10 | select | (gzFile,char *,int) | | gzgets | 2 | +| taint.cpp:142:5:142:10 | select | (gzFile,int,int) | | gzsetparams | 1 | +| taint.cpp:142:5:142:10 | select | (gzFile,int,int) | | gzsetparams | 2 | +| taint.cpp:142:5:142:10 | select | (gzFile,off64_t,int) | | gzseek64 | 2 | +| taint.cpp:142:5:142:10 | select | (gzFile,off_t,int) | | gzseek | 2 | | taint.cpp:142:5:142:10 | select | (int,BIO_ADDR *,int) | | BIO_accept_ex | 2 | | taint.cpp:142:5:142:10 | select | (int,int,int) | | ASN1_object_size | 0 | | taint.cpp:142:5:142:10 | select | (int,int,int) | | ASN1_object_size | 1 | @@ -6690,7 +7811,16 @@ signatureMatches | taint.cpp:142:5:142:10 | select | (unsigned int,int,int) | | ossl_blob_length | 2 | | taint.cpp:142:5:142:10 | select | (unsigned long *,const BIGNUM *,int) | | bn_copy_words | 2 | | taint.cpp:142:5:142:10 | select | (unsigned long *,const unsigned long *,int) | | bn_sqr_words | 2 | +| taint.cpp:142:5:142:10 | select | (uv__io_t *,uv__io_cb,int) | | uv__io_init | 2 | +| taint.cpp:142:5:142:10 | select | (uv_loop_t *,uv_fs_t *,int) | | uv__iou_fs_read_or_write | 2 | +| taint.cpp:142:5:142:10 | select | (uv_loop_t *,uv_pipe_t *,int) | | uv_pipe_init | 2 | +| taint.cpp:142:5:142:10 | select | (uv_loop_t *,uv_poll_t *,int) | | uv_poll_init | 2 | +| taint.cpp:142:5:142:10 | select | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start | 2 | +| taint.cpp:142:5:142:10 | select | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start_oneshot | 2 | +| taint.cpp:142:5:142:10 | select | (uv_stream_t *,int,int) | | uv__stream_open | 1 | +| taint.cpp:142:5:142:10 | select | (uv_stream_t *,int,int) | | uv__stream_open | 2 | | taint.cpp:142:5:142:10 | select | (void *,const char *,int) | | CRYPTO_secure_free | 2 | +| taint.cpp:142:5:142:10 | select | (void *,curl_off_t,int) | | tool_mime_stdin_seek | 2 | | taint.cpp:150:6:150:12 | fn_test | (int) | | ASN1_STRING_type_new | 0 | | taint.cpp:150:6:150:12 | fn_test | (int) | | ASN1_tag2bit | 0 | | taint.cpp:150:6:150:12 | fn_test | (int) | | ASN1_tag2str | 0 | @@ -6709,6 +7839,9 @@ signatureMatches | taint.cpp:150:6:150:12 | fn_test | (int) | | X509_TRUST_get0 | 0 | | taint.cpp:150:6:150:12 | fn_test | (int) | | X509_TRUST_get_by_id | 0 | | taint.cpp:150:6:150:12 | fn_test | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| taint.cpp:150:6:150:12 | fn_test | (int) | | c_tolower | 0 | +| taint.cpp:150:6:150:12 | fn_test | (int) | | c_toupper | 0 | +| taint.cpp:150:6:150:12 | fn_test | (int) | | curlx_sitouz | 0 | | taint.cpp:150:6:150:12 | fn_test | (int) | | evp_pkey_type2name | 0 | | taint.cpp:150:6:150:12 | fn_test | (int) | | ossl_cmp_bodytype_to_string | 0 | | taint.cpp:150:6:150:12 | fn_test | (int) | | ossl_tolower | 0 | @@ -6716,6 +7849,12 @@ signatureMatches | taint.cpp:150:6:150:12 | fn_test | (int) | | sqlite3_compileoption_get | 0 | | taint.cpp:150:6:150:12 | fn_test | (int) | | sqlite3_errstr | 0 | | taint.cpp:150:6:150:12 | fn_test | (int) | | tls13_alert_code | 0 | +| taint.cpp:150:6:150:12 | fn_test | (int) | | uv__accept | 0 | +| taint.cpp:150:6:150:12 | fn_test | (int) | | uv_err_name | 0 | +| taint.cpp:150:6:150:12 | fn_test | (int) | | uv_get_osfhandle | 0 | +| taint.cpp:150:6:150:12 | fn_test | (int) | | uv_strerror | 0 | +| taint.cpp:150:6:150:12 | fn_test | (int) | | uv_translate_sys_error | 0 | +| taint.cpp:150:6:150:12 | fn_test | (int) | | zError | 0 | | taint.cpp:156:7:156:12 | strcpy | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 | | taint.cpp:156:7:156:12 | strcpy | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 | | taint.cpp:156:7:156:12 | strcpy | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string_X509 | 1 | @@ -6725,6 +7864,9 @@ signatureMatches | taint.cpp:156:7:156:12 | strcpy | (BIGNUM **,const char *) | | BN_hex2bn | 1 | | taint.cpp:156:7:156:12 | strcpy | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | | taint.cpp:156:7:156:12 | strcpy | (CONF *,const char *) | | _CONF_new_section | 1 | +| taint.cpp:156:7:156:12 | strcpy | (CURLU *,const char *) | | Curl_url_set_authority | 1 | +| taint.cpp:156:7:156:12 | strcpy | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | +| taint.cpp:156:7:156:12 | strcpy | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | | taint.cpp:156:7:156:12 | strcpy | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | | taint.cpp:156:7:156:12 | strcpy | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | | taint.cpp:156:7:156:12 | strcpy | (DSO *,const char *) | | DSO_convert_filename | 1 | @@ -6735,10 +7877,14 @@ signatureMatches | taint.cpp:156:7:156:12 | strcpy | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | | taint.cpp:156:7:156:12 | strcpy | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | | taint.cpp:156:7:156:12 | strcpy | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | +| taint.cpp:156:7:156:12 | strcpy | (GlobalConfig *,const char *) | | setvariable | 1 | | taint.cpp:156:7:156:12 | strcpy | (Jim_Interp *,const char *) | | Jim_Eval | 1 | | taint.cpp:156:7:156:12 | strcpy | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | | taint.cpp:156:7:156:12 | strcpy | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | | taint.cpp:156:7:156:12 | strcpy | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | +| taint.cpp:156:7:156:12 | strcpy | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | +| taint.cpp:156:7:156:12 | strcpy | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | +| taint.cpp:156:7:156:12 | strcpy | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | | taint.cpp:156:7:156:12 | strcpy | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | | taint.cpp:156:7:156:12 | strcpy | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | | taint.cpp:156:7:156:12 | strcpy | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | @@ -6795,19 +7941,41 @@ signatureMatches | taint.cpp:156:7:156:12 | strcpy | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | | taint.cpp:156:7:156:12 | strcpy | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | | taint.cpp:156:7:156:12 | strcpy | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | +| taint.cpp:156:7:156:12 | strcpy | (char **,const char *) | | Curl_setstropt | 1 | | taint.cpp:156:7:156:12 | strcpy | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | +| taint.cpp:156:7:156:12 | strcpy | (const char **,const char *) | | uv__utf8_decode1 | 1 | | taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | Configcmp | 1 | +| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | Curl_timestrcmp | 1 | | taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | DES_crypt | 1 | | taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | +| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | c_strcasecmp | 1 | | taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | get_passwd | 1 | +| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | gzopen | 1 | +| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | gzopen64 | 1 | | taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | openssl_fopen | 1 | | taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | ossl_pem_check_suffix | 1 | | taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | ossl_v3_name_cmp | 1 | | taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | sqlite3_strglob | 1 | | taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | sqlite3_stricmp | 1 | +| taint.cpp:156:7:156:12 | strcpy | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | +| taint.cpp:156:7:156:12 | strcpy | (curl_off_t *,const char *) | | str2offset | 1 | +| taint.cpp:156:7:156:12 | strcpy | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | +| taint.cpp:156:7:156:12 | strcpy | (curl_slist **,const char *) | | add2list | 1 | +| taint.cpp:156:7:156:12 | strcpy | (curl_slist *,const char *) | | curl_slist_append | 1 | +| taint.cpp:156:7:156:12 | strcpy | (dynbuf *,const char *) | | Curl_dyn_add | 1 | +| taint.cpp:156:7:156:12 | strcpy | (dynbuf *,const char *) | | curlx_dyn_add | 1 | +| taint.cpp:156:7:156:12 | strcpy | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | +| taint.cpp:156:7:156:12 | strcpy | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | +| taint.cpp:156:7:156:12 | strcpy | (gzFile,const char *) | | gzputs | 1 | | taint.cpp:156:7:156:12 | strcpy | (int,const char *) | | BIO_meth_new | 1 | +| taint.cpp:156:7:156:12 | strcpy | (int,const char *) | | gzdopen | 1 | | taint.cpp:156:7:156:12 | strcpy | (lemon *,const char *) | | file_makename | 1 | +| taint.cpp:156:7:156:12 | strcpy | (long *,const char *) | | secs2ms | 1 | +| taint.cpp:156:7:156:12 | strcpy | (long *,const char *) | | str2num | 1 | +| taint.cpp:156:7:156:12 | strcpy | (long *,const char *) | | str2unum | 1 | | taint.cpp:156:7:156:12 | strcpy | (size_t *,const char *) | | next_protos_parse | 1 | +| taint.cpp:156:7:156:12 | strcpy | (slist_wc **,const char *) | | easysrc_add | 1 | +| taint.cpp:156:7:156:12 | strcpy | (slist_wc *,const char *) | | slist_wc_append | 1 | | taint.cpp:156:7:156:12 | strcpy | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | | taint.cpp:156:7:156:12 | strcpy | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | | taint.cpp:156:7:156:12 | strcpy | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | @@ -6818,6 +7986,7 @@ signatureMatches | taint.cpp:156:7:156:12 | strcpy | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | | taint.cpp:156:7:156:12 | strcpy | (unsigned long *,const char *) | | set_cert_ex | 1 | | taint.cpp:156:7:156:12 | strcpy | (unsigned long *,const char *) | | set_name_ex | 1 | +| taint.cpp:156:7:156:12 | strcpy | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | | taint.cpp:157:7:157:12 | strcat | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 | | taint.cpp:157:7:157:12 | strcat | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 | | taint.cpp:157:7:157:12 | strcat | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string_X509 | 1 | @@ -6827,6 +7996,9 @@ signatureMatches | taint.cpp:157:7:157:12 | strcat | (BIGNUM **,const char *) | | BN_hex2bn | 1 | | taint.cpp:157:7:157:12 | strcat | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | | taint.cpp:157:7:157:12 | strcat | (CONF *,const char *) | | _CONF_new_section | 1 | +| taint.cpp:157:7:157:12 | strcat | (CURLU *,const char *) | | Curl_url_set_authority | 1 | +| taint.cpp:157:7:157:12 | strcat | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | +| taint.cpp:157:7:157:12 | strcat | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | | taint.cpp:157:7:157:12 | strcat | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | | taint.cpp:157:7:157:12 | strcat | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | | taint.cpp:157:7:157:12 | strcat | (DSO *,const char *) | | DSO_convert_filename | 1 | @@ -6837,10 +8009,14 @@ signatureMatches | taint.cpp:157:7:157:12 | strcat | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | | taint.cpp:157:7:157:12 | strcat | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | | taint.cpp:157:7:157:12 | strcat | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | +| taint.cpp:157:7:157:12 | strcat | (GlobalConfig *,const char *) | | setvariable | 1 | | taint.cpp:157:7:157:12 | strcat | (Jim_Interp *,const char *) | | Jim_Eval | 1 | | taint.cpp:157:7:157:12 | strcat | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | | taint.cpp:157:7:157:12 | strcat | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | | taint.cpp:157:7:157:12 | strcat | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | +| taint.cpp:157:7:157:12 | strcat | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | +| taint.cpp:157:7:157:12 | strcat | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | +| taint.cpp:157:7:157:12 | strcat | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | | taint.cpp:157:7:157:12 | strcat | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | | taint.cpp:157:7:157:12 | strcat | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | | taint.cpp:157:7:157:12 | strcat | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | @@ -6897,19 +8073,41 @@ signatureMatches | taint.cpp:157:7:157:12 | strcat | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | | taint.cpp:157:7:157:12 | strcat | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | | taint.cpp:157:7:157:12 | strcat | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | +| taint.cpp:157:7:157:12 | strcat | (char **,const char *) | | Curl_setstropt | 1 | | taint.cpp:157:7:157:12 | strcat | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | +| taint.cpp:157:7:157:12 | strcat | (const char **,const char *) | | uv__utf8_decode1 | 1 | | taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | Configcmp | 1 | +| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | Curl_timestrcmp | 1 | | taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | DES_crypt | 1 | | taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | +| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | c_strcasecmp | 1 | | taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | get_passwd | 1 | +| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | gzopen | 1 | +| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | gzopen64 | 1 | | taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | openssl_fopen | 1 | | taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | ossl_pem_check_suffix | 1 | | taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | ossl_v3_name_cmp | 1 | | taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | sqlite3_strglob | 1 | | taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | sqlite3_stricmp | 1 | +| taint.cpp:157:7:157:12 | strcat | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | +| taint.cpp:157:7:157:12 | strcat | (curl_off_t *,const char *) | | str2offset | 1 | +| taint.cpp:157:7:157:12 | strcat | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | +| taint.cpp:157:7:157:12 | strcat | (curl_slist **,const char *) | | add2list | 1 | +| taint.cpp:157:7:157:12 | strcat | (curl_slist *,const char *) | | curl_slist_append | 1 | +| taint.cpp:157:7:157:12 | strcat | (dynbuf *,const char *) | | Curl_dyn_add | 1 | +| taint.cpp:157:7:157:12 | strcat | (dynbuf *,const char *) | | curlx_dyn_add | 1 | +| taint.cpp:157:7:157:12 | strcat | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | +| taint.cpp:157:7:157:12 | strcat | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | +| taint.cpp:157:7:157:12 | strcat | (gzFile,const char *) | | gzputs | 1 | | taint.cpp:157:7:157:12 | strcat | (int,const char *) | | BIO_meth_new | 1 | +| taint.cpp:157:7:157:12 | strcat | (int,const char *) | | gzdopen | 1 | | taint.cpp:157:7:157:12 | strcat | (lemon *,const char *) | | file_makename | 1 | +| taint.cpp:157:7:157:12 | strcat | (long *,const char *) | | secs2ms | 1 | +| taint.cpp:157:7:157:12 | strcat | (long *,const char *) | | str2num | 1 | +| taint.cpp:157:7:157:12 | strcat | (long *,const char *) | | str2unum | 1 | | taint.cpp:157:7:157:12 | strcat | (size_t *,const char *) | | next_protos_parse | 1 | +| taint.cpp:157:7:157:12 | strcat | (slist_wc **,const char *) | | easysrc_add | 1 | +| taint.cpp:157:7:157:12 | strcat | (slist_wc *,const char *) | | slist_wc_append | 1 | | taint.cpp:157:7:157:12 | strcat | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | | taint.cpp:157:7:157:12 | strcat | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | | taint.cpp:157:7:157:12 | strcat | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | @@ -6920,6 +8118,7 @@ signatureMatches | taint.cpp:157:7:157:12 | strcat | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | | taint.cpp:157:7:157:12 | strcat | (unsigned long *,const char *) | | set_cert_ex | 1 | | taint.cpp:157:7:157:12 | strcat | (unsigned long *,const char *) | | set_name_ex | 1 | +| taint.cpp:157:7:157:12 | strcat | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | | taint.cpp:190:7:190:12 | memcpy | (ASN1_BIT_STRING *,int,int) | | ASN1_BIT_STRING_set_bit | 2 | | taint.cpp:190:7:190:12 | memcpy | (ASN1_BIT_STRING *,unsigned char *,int) | | ASN1_BIT_STRING_set | 2 | | taint.cpp:190:7:190:12 | memcpy | (ASN1_OCTET_STRING **,const unsigned char *,int) | | ossl_cmp_asn1_octet_string_set1_bytes | 2 | @@ -6947,6 +8146,11 @@ signatureMatches | taint.cpp:190:7:190:12 | memcpy | (CERT *,X509_STORE **,int) | | ssl_cert_get_cert_store | 2 | | taint.cpp:190:7:190:12 | memcpy | (CRYPTO_THREAD_ROUTINE,void *,int) | | ossl_crypto_thread_native_start | 1 | | taint.cpp:190:7:190:12 | memcpy | (CRYPTO_THREAD_ROUTINE,void *,int) | | ossl_crypto_thread_native_start | 2 | +| taint.cpp:190:7:190:12 | memcpy | (Curl_easy *,connectdata *,int) | | Curl_conn_cf_discard_all | 2 | +| taint.cpp:190:7:190:12 | memcpy | (Curl_easy *,connectdata *,int) | | Curl_http2_may_switch | 2 | +| taint.cpp:190:7:190:12 | memcpy | (Curl_easy *,connectdata *,int) | | Curl_http2_switch | 2 | +| taint.cpp:190:7:190:12 | memcpy | (Curl_easy *,connectdata *,int) | | Curl_ssl_cfilter_add | 2 | +| taint.cpp:190:7:190:12 | memcpy | (Curl_sockaddr_ex *,const Curl_addrinfo *,int) | | Curl_sock_assign_addr | 2 | | taint.cpp:190:7:190:12 | memcpy | (DH *,const OSSL_PARAM[],int) | | ossl_dh_key_fromdata | 2 | | taint.cpp:190:7:190:12 | memcpy | (DSA *,const OSSL_PARAM[],int) | | ossl_dsa_key_fromdata | 2 | | taint.cpp:190:7:190:12 | memcpy | (ECX_KEY *,const OSSL_PARAM[],int) | | ossl_ecx_key_fromdata | 2 | @@ -6983,6 +8187,8 @@ signatureMatches | taint.cpp:190:7:190:12 | memcpy | (Jim_Interp *,const char *,int) | | Jim_MakeTempFile | 2 | | taint.cpp:190:7:190:12 | memcpy | (Jim_Interp *,const char *,int) | | Jim_NewStringObj | 2 | | taint.cpp:190:7:190:12 | memcpy | (Jim_Interp *,const char *,int) | | Jim_NewStringObjUtf8 | 2 | +| taint.cpp:190:7:190:12 | memcpy | (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 2 | +| taint.cpp:190:7:190:12 | memcpy | (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int) | | libssh2_sftp_fstat_ex | 2 | | taint.cpp:190:7:190:12 | memcpy | (OCSP_BASICRESP *,OCSP_CERTID *,int) | | OCSP_resp_find | 2 | | taint.cpp:190:7:190:12 | memcpy | (OCSP_BASICRESP *,X509_EXTENSION *,int) | | OCSP_BASICRESP_add_ext | 2 | | taint.cpp:190:7:190:12 | memcpy | (OCSP_BASICRESP *,const ASN1_OBJECT *,int) | | OCSP_BASICRESP_get_ext_by_OBJ | 2 | @@ -7071,6 +8277,7 @@ signatureMatches | taint.cpp:190:7:190:12 | memcpy | (const CMS_SignerInfo *,const ASN1_OBJECT *,int) | | CMS_unsigned_get_attr_by_OBJ | 2 | | taint.cpp:190:7:190:12 | memcpy | (const CMS_SignerInfo *,int,int) | | CMS_signed_get_attr_by_NID | 2 | | taint.cpp:190:7:190:12 | memcpy | (const CMS_SignerInfo *,int,int) | | CMS_unsigned_get_attr_by_NID | 2 | +| taint.cpp:190:7:190:12 | memcpy | (const Curl_easy *,const connectdata *,int) | | Curl_conn_is_http2 | 2 | | taint.cpp:190:7:190:12 | memcpy | (const EVP_MD *,const EVP_MD *,int) | | ossl_rsa_pss_params_create | 2 | | taint.cpp:190:7:190:12 | memcpy | (const EVP_PKEY *,const ASN1_OBJECT *,int) | | EVP_PKEY_get_attr_by_OBJ | 2 | | taint.cpp:190:7:190:12 | memcpy | (const EVP_PKEY *,int,int) | | EVP_PKEY_get_attr_by_NID | 2 | @@ -7098,6 +8305,7 @@ signatureMatches | taint.cpp:190:7:190:12 | memcpy | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_NID | 2 | | taint.cpp:190:7:190:12 | memcpy | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_critical | 2 | | taint.cpp:190:7:190:12 | memcpy | (const X509_SIG *,const char *,int) | | PKCS8_decrypt | 2 | +| taint.cpp:190:7:190:12 | memcpy | (const char *,char **,int) | | idn2_to_ascii_8z | 2 | | taint.cpp:190:7:190:12 | memcpy | (const char *,const OSSL_PARAM *,int) | | print_param_types | 2 | | taint.cpp:190:7:190:12 | memcpy | (const char *,const char *,int) | | CRYPTO_strdup | 2 | | taint.cpp:190:7:190:12 | memcpy | (const char *,const char *,int) | | sqlite3_strnicmp | 2 | @@ -7108,9 +8316,16 @@ signatureMatches | taint.cpp:190:7:190:12 | memcpy | (const stack_st_X509_EXTENSION *,const ASN1_OBJECT *,int) | | X509v3_get_ext_by_OBJ | 2 | | taint.cpp:190:7:190:12 | memcpy | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_NID | 2 | | taint.cpp:190:7:190:12 | memcpy | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 2 | +| taint.cpp:190:7:190:12 | memcpy | (const uint8_t *,uint8_t **,int) | | idn2_lookup_u8 | 2 | | taint.cpp:190:7:190:12 | memcpy | (const unsigned char **,unsigned int,int) | | ossl_b2i_DSA_after_header | 2 | | taint.cpp:190:7:190:12 | memcpy | (const unsigned char **,unsigned int,int) | | ossl_b2i_RSA_after_header | 2 | | taint.cpp:190:7:190:12 | memcpy | (const void *,const void *,int) | | ossl_is_partially_overlapping | 2 | +| taint.cpp:190:7:190:12 | memcpy | (curl_mimepart *,curl_mime *,int) | | Curl_mime_set_subparts | 2 | +| taint.cpp:190:7:190:12 | memcpy | (curl_mimepart *,curl_slist *,int) | | curl_mime_headers | 2 | +| taint.cpp:190:7:190:12 | memcpy | (gzFile,char *,int) | | gzgets | 2 | +| taint.cpp:190:7:190:12 | memcpy | (gzFile,int,int) | | gzsetparams | 2 | +| taint.cpp:190:7:190:12 | memcpy | (gzFile,off64_t,int) | | gzseek64 | 2 | +| taint.cpp:190:7:190:12 | memcpy | (gzFile,off_t,int) | | gzseek | 2 | | taint.cpp:190:7:190:12 | memcpy | (int,BIO_ADDR *,int) | | BIO_accept_ex | 2 | | taint.cpp:190:7:190:12 | memcpy | (int,int,int) | | ASN1_object_size | 2 | | taint.cpp:190:7:190:12 | memcpy | (int,int,int) | | EVP_CIPHER_meth_new | 2 | @@ -7143,7 +8358,15 @@ signatureMatches | taint.cpp:190:7:190:12 | memcpy | (unsigned int,int,int) | | ossl_blob_length | 2 | | taint.cpp:190:7:190:12 | memcpy | (unsigned long *,const BIGNUM *,int) | | bn_copy_words | 2 | | taint.cpp:190:7:190:12 | memcpy | (unsigned long *,const unsigned long *,int) | | bn_sqr_words | 2 | +| taint.cpp:190:7:190:12 | memcpy | (uv__io_t *,uv__io_cb,int) | | uv__io_init | 2 | +| taint.cpp:190:7:190:12 | memcpy | (uv_loop_t *,uv_fs_t *,int) | | uv__iou_fs_read_or_write | 2 | +| taint.cpp:190:7:190:12 | memcpy | (uv_loop_t *,uv_pipe_t *,int) | | uv_pipe_init | 2 | +| taint.cpp:190:7:190:12 | memcpy | (uv_loop_t *,uv_poll_t *,int) | | uv_poll_init | 2 | +| taint.cpp:190:7:190:12 | memcpy | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start | 2 | +| taint.cpp:190:7:190:12 | memcpy | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start_oneshot | 2 | +| taint.cpp:190:7:190:12 | memcpy | (uv_stream_t *,int,int) | | uv__stream_open | 2 | | taint.cpp:190:7:190:12 | memcpy | (void *,const char *,int) | | CRYPTO_secure_free | 2 | +| taint.cpp:190:7:190:12 | memcpy | (void *,curl_off_t,int) | | tool_mime_stdin_seek | 2 | | taint.cpp:249:13:249:13 | _FUN | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | | taint.cpp:249:13:249:13 | _FUN | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | | taint.cpp:249:13:249:13 | _FUN | (BIGNUM *,int) | | BN_clear_bit | 1 | @@ -7162,6 +8385,8 @@ signatureMatches | taint.cpp:249:13:249:13 | _FUN | (BIO *,int) | | TXT_DB_read | 1 | | taint.cpp:249:13:249:13 | _FUN | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | taint.cpp:249:13:249:13 | _FUN | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| taint.cpp:249:13:249:13 | _FUN | (CURL *,int) | | curl_easy_pause | 1 | +| taint.cpp:249:13:249:13 | _FUN | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | taint.cpp:249:13:249:13 | _FUN | (DH *,int) | | DH_clear_flags | 1 | | taint.cpp:249:13:249:13 | _FUN | (DH *,int) | | DH_set_flags | 1 | | taint.cpp:249:13:249:13 | _FUN | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -7205,6 +8430,17 @@ signatureMatches | taint.cpp:249:13:249:13 | _FUN | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | taint.cpp:249:13:249:13 | _FUN | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | taint.cpp:249:13:249:13 | _FUN | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | taint.cpp:249:13:249:13 | _FUN | (LPCOLESTR,int) | CComBSTR | Append | 1 | | taint.cpp:249:13:249:13 | _FUN | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | taint.cpp:249:13:249:13 | _FUN | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -7322,8 +8558,10 @@ signatureMatches | taint.cpp:249:13:249:13 | _FUN | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | taint.cpp:249:13:249:13 | _FUN | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | taint.cpp:249:13:249:13 | _FUN | (acttab *,int) | | acttab_insert | 1 | +| taint.cpp:249:13:249:13 | _FUN | (char *,int) | | Curl_str2addr | 1 | | taint.cpp:249:13:249:13 | _FUN | (char *,int) | | PEM_proc_type | 1 | | taint.cpp:249:13:249:13 | _FUN | (char,int) | CStringT | CStringT | 1 | +| taint.cpp:249:13:249:13 | _FUN | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | taint.cpp:249:13:249:13 | _FUN | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | taint.cpp:249:13:249:13 | _FUN | (const BIGNUM *,int) | | BN_get_flags | 1 | | taint.cpp:249:13:249:13 | _FUN | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -7390,6 +8628,9 @@ signatureMatches | taint.cpp:249:13:249:13 | _FUN | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | taint.cpp:249:13:249:13 | _FUN | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | taint.cpp:249:13:249:13 | _FUN | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| taint.cpp:249:13:249:13 | _FUN | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| taint.cpp:249:13:249:13 | _FUN | (gzFile,int) | | gzflush | 1 | +| taint.cpp:249:13:249:13 | _FUN | (gzFile,int) | | gzputc | 1 | | taint.cpp:249:13:249:13 | _FUN | (int *,int) | | X509_PURPOSE_set | 1 | | taint.cpp:249:13:249:13 | _FUN | (int *,int) | | X509_TRUST_set | 1 | | taint.cpp:249:13:249:13 | _FUN | (int,int) | | BN_security_bits | 0 | @@ -7400,6 +8641,13 @@ signatureMatches | taint.cpp:249:13:249:13 | _FUN | (int,int) | | EVP_PKEY_meth_new | 1 | | taint.cpp:249:13:249:13 | _FUN | (int,int) | | acttab_alloc | 0 | | taint.cpp:249:13:249:13 | _FUN | (int,int) | | acttab_alloc | 1 | +| taint.cpp:249:13:249:13 | _FUN | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| taint.cpp:249:13:249:13 | _FUN | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| taint.cpp:249:13:249:13 | _FUN | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| taint.cpp:249:13:249:13 | _FUN | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| taint.cpp:249:13:249:13 | _FUN | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| taint.cpp:249:13:249:13 | _FUN | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| taint.cpp:249:13:249:13 | _FUN | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | taint.cpp:249:13:249:13 | _FUN | (rule *,int) | | Configlist_add | 1 | | taint.cpp:249:13:249:13 | _FUN | (rule *,int) | | Configlist_addbasis | 1 | | taint.cpp:249:13:249:13 | _FUN | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -7434,6 +8682,7 @@ signatureMatches | taint.cpp:249:13:249:13 | _FUN | (unsigned char *,int) | | RAND_priv_bytes | 1 | | taint.cpp:249:13:249:13 | _FUN | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | taint.cpp:249:13:249:13 | _FUN | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| taint.cpp:249:13:249:13 | _FUN | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | taint.cpp:249:13:249:13 | _FUN | (void *,int) | | DSO_dsobyaddr | 1 | | taint.cpp:249:13:249:13 | _FUN | (void *,int) | | sqlite3_realloc | 1 | | taint.cpp:249:13:249:13 | _FUN | (wchar_t,int) | CStringT | CStringT | 1 | @@ -7455,6 +8704,8 @@ signatureMatches | taint.cpp:249:13:249:13 | operator() | (BIO *,int) | | TXT_DB_read | 1 | | taint.cpp:249:13:249:13 | operator() | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | taint.cpp:249:13:249:13 | operator() | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| taint.cpp:249:13:249:13 | operator() | (CURL *,int) | | curl_easy_pause | 1 | +| taint.cpp:249:13:249:13 | operator() | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | taint.cpp:249:13:249:13 | operator() | (DH *,int) | | DH_clear_flags | 1 | | taint.cpp:249:13:249:13 | operator() | (DH *,int) | | DH_set_flags | 1 | | taint.cpp:249:13:249:13 | operator() | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -7498,6 +8749,17 @@ signatureMatches | taint.cpp:249:13:249:13 | operator() | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | taint.cpp:249:13:249:13 | operator() | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | taint.cpp:249:13:249:13 | operator() | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | taint.cpp:249:13:249:13 | operator() | (LPCOLESTR,int) | CComBSTR | Append | 1 | | taint.cpp:249:13:249:13 | operator() | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | taint.cpp:249:13:249:13 | operator() | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -7615,8 +8877,10 @@ signatureMatches | taint.cpp:249:13:249:13 | operator() | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | taint.cpp:249:13:249:13 | operator() | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | taint.cpp:249:13:249:13 | operator() | (acttab *,int) | | acttab_insert | 1 | +| taint.cpp:249:13:249:13 | operator() | (char *,int) | | Curl_str2addr | 1 | | taint.cpp:249:13:249:13 | operator() | (char *,int) | | PEM_proc_type | 1 | | taint.cpp:249:13:249:13 | operator() | (char,int) | CStringT | CStringT | 1 | +| taint.cpp:249:13:249:13 | operator() | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | taint.cpp:249:13:249:13 | operator() | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | taint.cpp:249:13:249:13 | operator() | (const BIGNUM *,int) | | BN_get_flags | 1 | | taint.cpp:249:13:249:13 | operator() | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -7683,6 +8947,9 @@ signatureMatches | taint.cpp:249:13:249:13 | operator() | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | taint.cpp:249:13:249:13 | operator() | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | taint.cpp:249:13:249:13 | operator() | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| taint.cpp:249:13:249:13 | operator() | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| taint.cpp:249:13:249:13 | operator() | (gzFile,int) | | gzflush | 1 | +| taint.cpp:249:13:249:13 | operator() | (gzFile,int) | | gzputc | 1 | | taint.cpp:249:13:249:13 | operator() | (int *,int) | | X509_PURPOSE_set | 1 | | taint.cpp:249:13:249:13 | operator() | (int *,int) | | X509_TRUST_set | 1 | | taint.cpp:249:13:249:13 | operator() | (int,int) | | BN_security_bits | 0 | @@ -7693,6 +8960,13 @@ signatureMatches | taint.cpp:249:13:249:13 | operator() | (int,int) | | EVP_PKEY_meth_new | 1 | | taint.cpp:249:13:249:13 | operator() | (int,int) | | acttab_alloc | 0 | | taint.cpp:249:13:249:13 | operator() | (int,int) | | acttab_alloc | 1 | +| taint.cpp:249:13:249:13 | operator() | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| taint.cpp:249:13:249:13 | operator() | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| taint.cpp:249:13:249:13 | operator() | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| taint.cpp:249:13:249:13 | operator() | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| taint.cpp:249:13:249:13 | operator() | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| taint.cpp:249:13:249:13 | operator() | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| taint.cpp:249:13:249:13 | operator() | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | taint.cpp:249:13:249:13 | operator() | (rule *,int) | | Configlist_add | 1 | | taint.cpp:249:13:249:13 | operator() | (rule *,int) | | Configlist_addbasis | 1 | | taint.cpp:249:13:249:13 | operator() | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -7727,6 +9001,7 @@ signatureMatches | taint.cpp:249:13:249:13 | operator() | (unsigned char *,int) | | RAND_priv_bytes | 1 | | taint.cpp:249:13:249:13 | operator() | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | taint.cpp:249:13:249:13 | operator() | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| taint.cpp:249:13:249:13 | operator() | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | taint.cpp:249:13:249:13 | operator() | (void *,int) | | DSO_dsobyaddr | 1 | | taint.cpp:249:13:249:13 | operator() | (void *,int) | | sqlite3_realloc | 1 | | taint.cpp:249:13:249:13 | operator() | (wchar_t,int) | CStringT | CStringT | 1 | @@ -7748,6 +9023,9 @@ signatureMatches | taint.cpp:266:5:266:6 | id | (int) | | X509_TRUST_get0 | 0 | | taint.cpp:266:5:266:6 | id | (int) | | X509_TRUST_get_by_id | 0 | | taint.cpp:266:5:266:6 | id | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| taint.cpp:266:5:266:6 | id | (int) | | c_tolower | 0 | +| taint.cpp:266:5:266:6 | id | (int) | | c_toupper | 0 | +| taint.cpp:266:5:266:6 | id | (int) | | curlx_sitouz | 0 | | taint.cpp:266:5:266:6 | id | (int) | | evp_pkey_type2name | 0 | | taint.cpp:266:5:266:6 | id | (int) | | ossl_cmp_bodytype_to_string | 0 | | taint.cpp:266:5:266:6 | id | (int) | | ossl_tolower | 0 | @@ -7755,6 +9033,12 @@ signatureMatches | taint.cpp:266:5:266:6 | id | (int) | | sqlite3_compileoption_get | 0 | | taint.cpp:266:5:266:6 | id | (int) | | sqlite3_errstr | 0 | | taint.cpp:266:5:266:6 | id | (int) | | tls13_alert_code | 0 | +| taint.cpp:266:5:266:6 | id | (int) | | uv__accept | 0 | +| taint.cpp:266:5:266:6 | id | (int) | | uv_err_name | 0 | +| taint.cpp:266:5:266:6 | id | (int) | | uv_get_osfhandle | 0 | +| taint.cpp:266:5:266:6 | id | (int) | | uv_strerror | 0 | +| taint.cpp:266:5:266:6 | id | (int) | | uv_translate_sys_error | 0 | +| taint.cpp:266:5:266:6 | id | (int) | | zError | 0 | | taint.cpp:302:6:302:14 | myAssign2 | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (BIGNUM *,int) | | BN_clear_bit | 1 | @@ -7773,6 +9057,8 @@ signatureMatches | taint.cpp:302:6:302:14 | myAssign2 | (BIO *,int) | | TXT_DB_read | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (CURL *,int) | | curl_easy_pause | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (DH *,int) | | DH_clear_flags | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (DH *,int) | | DH_set_flags | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -7816,6 +9102,17 @@ signatureMatches | taint.cpp:302:6:302:14 | myAssign2 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (LPCOLESTR,int) | CComBSTR | Append | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -7933,8 +9230,10 @@ signatureMatches | taint.cpp:302:6:302:14 | myAssign2 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (acttab *,int) | | acttab_insert | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (char *,int) | | Curl_str2addr | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (char *,int) | | PEM_proc_type | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (char,int) | CStringT | CStringT | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (const BIGNUM *,int) | | BN_get_flags | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -8001,12 +9300,22 @@ signatureMatches | taint.cpp:302:6:302:14 | myAssign2 | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (gzFile,int) | | gzflush | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (gzFile,int) | | gzputc | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (int *,int) | | X509_PURPOSE_set | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (int *,int) | | X509_TRUST_set | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (int,int) | | BN_security_bits | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (int,int) | | EVP_MD_meth_new | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (int,int) | | EVP_PKEY_meth_new | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (int,int) | | acttab_alloc | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (rule *,int) | | Configlist_add | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (rule *,int) | | Configlist_addbasis | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -8041,6 +9350,7 @@ signatureMatches | taint.cpp:302:6:302:14 | myAssign2 | (unsigned char *,int) | | RAND_priv_bytes | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| taint.cpp:302:6:302:14 | myAssign2 | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (void *,int) | | DSO_dsobyaddr | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (void *,int) | | sqlite3_realloc | 1 | | taint.cpp:302:6:302:14 | myAssign2 | (wchar_t,int) | CStringT | CStringT | 1 | @@ -8062,6 +9372,8 @@ signatureMatches | taint.cpp:307:6:307:14 | myAssign3 | (BIO *,int) | | TXT_DB_read | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (CURL *,int) | | curl_easy_pause | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (DH *,int) | | DH_clear_flags | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (DH *,int) | | DH_set_flags | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -8105,6 +9417,17 @@ signatureMatches | taint.cpp:307:6:307:14 | myAssign3 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (LPCOLESTR,int) | CComBSTR | Append | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -8222,8 +9545,10 @@ signatureMatches | taint.cpp:307:6:307:14 | myAssign3 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (acttab *,int) | | acttab_insert | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (char *,int) | | Curl_str2addr | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (char *,int) | | PEM_proc_type | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (char,int) | CStringT | CStringT | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (const BIGNUM *,int) | | BN_get_flags | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -8290,6 +9615,9 @@ signatureMatches | taint.cpp:307:6:307:14 | myAssign3 | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (gzFile,int) | | gzflush | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (gzFile,int) | | gzputc | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (int *,int) | | X509_PURPOSE_set | 0 | | taint.cpp:307:6:307:14 | myAssign3 | (int *,int) | | X509_PURPOSE_set | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (int *,int) | | X509_TRUST_set | 0 | @@ -8298,6 +9626,13 @@ signatureMatches | taint.cpp:307:6:307:14 | myAssign3 | (int,int) | | EVP_MD_meth_new | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (int,int) | | EVP_PKEY_meth_new | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (int,int) | | acttab_alloc | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (rule *,int) | | Configlist_add | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (rule *,int) | | Configlist_addbasis | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -8332,6 +9667,7 @@ signatureMatches | taint.cpp:307:6:307:14 | myAssign3 | (unsigned char *,int) | | RAND_priv_bytes | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| taint.cpp:307:6:307:14 | myAssign3 | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (void *,int) | | DSO_dsobyaddr | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (void *,int) | | sqlite3_realloc | 1 | | taint.cpp:307:6:307:14 | myAssign3 | (wchar_t,int) | CStringT | CStringT | 1 | @@ -8353,6 +9689,8 @@ signatureMatches | taint.cpp:312:6:312:14 | myAssign4 | (BIO *,int) | | TXT_DB_read | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (CURL *,int) | | curl_easy_pause | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (DH *,int) | | DH_clear_flags | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (DH *,int) | | DH_set_flags | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -8396,6 +9734,17 @@ signatureMatches | taint.cpp:312:6:312:14 | myAssign4 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (LPCOLESTR,int) | CComBSTR | Append | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -8513,8 +9862,10 @@ signatureMatches | taint.cpp:312:6:312:14 | myAssign4 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (acttab *,int) | | acttab_insert | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (char *,int) | | Curl_str2addr | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (char *,int) | | PEM_proc_type | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (char,int) | CStringT | CStringT | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (const BIGNUM *,int) | | BN_get_flags | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -8581,6 +9932,9 @@ signatureMatches | taint.cpp:312:6:312:14 | myAssign4 | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (gzFile,int) | | gzflush | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (gzFile,int) | | gzputc | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (int *,int) | | X509_PURPOSE_set | 0 | | taint.cpp:312:6:312:14 | myAssign4 | (int *,int) | | X509_PURPOSE_set | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (int *,int) | | X509_TRUST_set | 0 | @@ -8589,6 +9943,13 @@ signatureMatches | taint.cpp:312:6:312:14 | myAssign4 | (int,int) | | EVP_MD_meth_new | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (int,int) | | EVP_PKEY_meth_new | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (int,int) | | acttab_alloc | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (rule *,int) | | Configlist_add | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (rule *,int) | | Configlist_addbasis | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -8623,10 +9984,14 @@ signatureMatches | taint.cpp:312:6:312:14 | myAssign4 | (unsigned char *,int) | | RAND_priv_bytes | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| taint.cpp:312:6:312:14 | myAssign4 | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (void *,int) | | DSO_dsobyaddr | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (void *,int) | | sqlite3_realloc | 1 | | taint.cpp:312:6:312:14 | myAssign4 | (wchar_t,int) | CStringT | CStringT | 1 | | taint.cpp:361:7:361:12 | strdup | (const char *) | | BIO_gethostbyname | 0 | +| taint.cpp:361:7:361:12 | strdup | (const char *) | | Curl_copy_header_value | 0 | +| taint.cpp:361:7:361:12 | strdup | (const char *) | | Curl_get_scheme_handler | 0 | +| taint.cpp:361:7:361:12 | strdup | (const char *) | | Curl_getdate_capped | 0 | | taint.cpp:361:7:361:12 | strdup | (const char *) | | Jim_StrDup | 0 | | taint.cpp:361:7:361:12 | strdup | (const char *) | | OPENSSL_LH_strhash | 0 | | taint.cpp:361:7:361:12 | strdup | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -8637,10 +10002,14 @@ signatureMatches | taint.cpp:361:7:361:12 | strdup | (const char *) | | X509_LOOKUP_meth_new | 0 | | taint.cpp:361:7:361:12 | strdup | (const char *) | | a2i_IPADDRESS | 0 | | taint.cpp:361:7:361:12 | strdup | (const char *) | | a2i_IPADDRESS_NC | 0 | +| taint.cpp:361:7:361:12 | strdup | (const char *) | | last_component | 0 | | taint.cpp:361:7:361:12 | strdup | (const char *) | | opt_path_end | 0 | | taint.cpp:361:7:361:12 | strdup | (const char *) | | opt_progname | 0 | | taint.cpp:361:7:361:12 | strdup | (const char *) | | ossl_lh_strcasehash | 0 | | taint.cpp:361:7:361:12 | strdup | (const char *) | | strhash | 0 | +| taint.cpp:361:7:361:12 | strdup | (const char *) | | uc_script_byname | 0 | +| taint.cpp:361:7:361:12 | strdup | (const char *) | | uv__strdup | 0 | +| taint.cpp:361:7:361:12 | strdup | (const char *) | | uv_wtf8_length_as_utf16 | 0 | | taint.cpp:362:7:362:13 | strndup | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_cert_flags | 1 | | taint.cpp:362:7:362:13 | strndup | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_flags | 1 | | taint.cpp:362:7:362:13 | strndup | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_nm_flags | 1 | @@ -8654,6 +10023,7 @@ signatureMatches | taint.cpp:362:7:362:13 | strndup | (BUF_MEM *,size_t) | | BUF_MEM_grow | 1 | | taint.cpp:362:7:362:13 | strndup | (BUF_MEM *,size_t) | | BUF_MEM_grow_clean | 1 | | taint.cpp:362:7:362:13 | strndup | (CONF_IMODULE *,unsigned long) | | CONF_imodule_set_flags | 1 | +| taint.cpp:362:7:362:13 | strndup | (Curl_hash *,size_t) | | Curl_init_dnscache | 1 | | taint.cpp:362:7:362:13 | strndup | (EVP_CIPHER *,unsigned long) | | EVP_CIPHER_meth_set_flags | 1 | | taint.cpp:362:7:362:13 | strndup | (EVP_MD *,unsigned long) | | EVP_MD_meth_set_flags | 1 | | taint.cpp:362:7:362:13 | strndup | (HMAC_CTX *,unsigned long) | | HMAC_CTX_set_flags | 1 | @@ -8699,16 +10069,58 @@ signatureMatches | taint.cpp:362:7:362:13 | strndup | (X509_STORE_CTX *,unsigned long) | | X509_STORE_CTX_set_flags | 1 | | taint.cpp:362:7:362:13 | strndup | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_clear_flags | 1 | | taint.cpp:362:7:362:13 | strndup | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_set_flags | 1 | +| taint.cpp:362:7:362:13 | strndup | (bufq *,size_t) | | Curl_bufq_skip | 1 | +| taint.cpp:362:7:362:13 | strndup | (bufq *,size_t) | | Curl_bufq_unwrite | 1 | | taint.cpp:362:7:362:13 | strndup | (char *,size_t) | | RAND_file_name | 1 | +| taint.cpp:362:7:362:13 | strndup | (char *,size_t) | | plain_method | 1 | | taint.cpp:362:7:362:13 | strndup | (const BIGNUM *,unsigned long) | | BN_mod_word | 1 | +| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | Curl_getn_scheme_handler | 0 | +| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | Curl_getn_scheme_handler | 1 | +| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | Curl_memdup0 | 0 | +| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | Curl_memdup0 | 1 | | taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | OPENSSL_strnlen | 0 | | taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | OPENSSL_strnlen | 1 | +| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | uv__strndup | 0 | +| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | uv__strndup | 1 | | taint.cpp:362:7:362:13 | strndup | (const uint8_t *,size_t) | | FuzzerTestOneInput | 1 | +| taint.cpp:362:7:362:13 | strndup | (const uint8_t *,size_t) | | nghttp2_hd_huff_encode_count | 1 | | taint.cpp:362:7:362:13 | strndup | (const uint8_t *,size_t) | | ossl_ed448_pubkey_verify | 1 | +| taint.cpp:362:7:362:13 | strndup | (const void *,size_t) | | Curl_memdup | 1 | +| taint.cpp:362:7:362:13 | strndup | (curl_pushheaders *,size_t) | | curl_pushheader_bynum | 1 | +| taint.cpp:362:7:362:13 | strndup | (dynbuf *,size_t) | | Curl_dyn_init | 1 | +| taint.cpp:362:7:362:13 | strndup | (dynbuf *,size_t) | | Curl_dyn_setlen | 1 | +| taint.cpp:362:7:362:13 | strndup | (dynbuf *,size_t) | | Curl_dyn_tail | 1 | +| taint.cpp:362:7:362:13 | strndup | (dynbuf *,size_t) | | curlx_dyn_init | 1 | +| taint.cpp:362:7:362:13 | strndup | (dynbuf *,size_t) | | curlx_dyn_setlen | 1 | +| taint.cpp:362:7:362:13 | strndup | (dynbuf *,size_t) | | curlx_dyn_tail | 1 | +| taint.cpp:362:7:362:13 | strndup | (dynhds *,size_t) | | Curl_dynhds_getn | 1 | +| taint.cpp:362:7:362:13 | strndup | (h1_req_parser *,size_t) | | Curl_h1_req_parse_init | 1 | | taint.cpp:362:7:362:13 | strndup | (int,size_t) | | ossl_calculate_comp_expansion | 1 | +| taint.cpp:362:7:362:13 | strndup | (nghttp2_bufs *,size_t) | | nghttp2_bufs_realloc | 1 | +| taint.cpp:362:7:362:13 | strndup | (nghttp2_frame *,size_t) | | nghttp2_frame_trail_padlen | 1 | +| taint.cpp:362:7:362:13 | strndup | (nghttp2_hd_context *,size_t) | | nghttp2_hd_table_get | 1 | +| taint.cpp:362:7:362:13 | strndup | (nghttp2_hd_deflater **,size_t) | | nghttp2_hd_deflate_new | 1 | +| taint.cpp:362:7:362:13 | strndup | (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_change_table_size | 1 | +| taint.cpp:362:7:362:13 | strndup | (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_get_table_entry | 1 | +| taint.cpp:362:7:362:13 | strndup | (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_change_table_size | 1 | +| taint.cpp:362:7:362:13 | strndup | (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_get_table_entry | 1 | +| taint.cpp:362:7:362:13 | strndup | (nghttp2_option *,size_t) | | nghttp2_option_set_max_continuations | 1 | +| taint.cpp:362:7:362:13 | strndup | (nghttp2_option *,size_t) | | nghttp2_option_set_max_deflate_dynamic_table_size | 1 | +| taint.cpp:362:7:362:13 | strndup | (nghttp2_option *,size_t) | | nghttp2_option_set_max_outbound_ack | 1 | +| taint.cpp:362:7:362:13 | strndup | (nghttp2_option *,size_t) | | nghttp2_option_set_max_send_header_block_length | 1 | +| taint.cpp:362:7:362:13 | strndup | (nghttp2_option *,size_t) | | nghttp2_option_set_max_settings | 1 | +| taint.cpp:362:7:362:13 | strndup | (nghttp2_session *,size_t) | | nghttp2_session_consume_connection | 1 | +| taint.cpp:362:7:362:13 | strndup | (nghttp2_session *,size_t) | | nghttp2_session_update_recv_connection_window_size | 1 | +| taint.cpp:362:7:362:13 | strndup | (nghttp2_stream *,size_t) | | nghttp2_http_on_data_chunk | 1 | +| taint.cpp:362:7:362:13 | strndup | (uint8_t *,size_t) | | nghttp2_downcase | 1 | | taint.cpp:362:7:362:13 | strndup | (uint8_t *,size_t) | | ossl_fnv1a_hash | 1 | | taint.cpp:362:7:362:13 | strndup | (void *,size_t) | | JimDefaultAllocator | 1 | +| taint.cpp:362:7:362:13 | strndup | (void *,size_t) | | uv__random_devurandom | 1 | +| taint.cpp:362:7:362:13 | strndup | (void *,size_t) | | uv__random_getrandom | 1 | | taint.cpp:364:7:364:13 | strdupa | (const char *) | | BIO_gethostbyname | 0 | +| taint.cpp:364:7:364:13 | strdupa | (const char *) | | Curl_copy_header_value | 0 | +| taint.cpp:364:7:364:13 | strdupa | (const char *) | | Curl_get_scheme_handler | 0 | +| taint.cpp:364:7:364:13 | strdupa | (const char *) | | Curl_getdate_capped | 0 | | taint.cpp:364:7:364:13 | strdupa | (const char *) | | Jim_StrDup | 0 | | taint.cpp:364:7:364:13 | strdupa | (const char *) | | OPENSSL_LH_strhash | 0 | | taint.cpp:364:7:364:13 | strdupa | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -8719,10 +10131,14 @@ signatureMatches | taint.cpp:364:7:364:13 | strdupa | (const char *) | | X509_LOOKUP_meth_new | 0 | | taint.cpp:364:7:364:13 | strdupa | (const char *) | | a2i_IPADDRESS | 0 | | taint.cpp:364:7:364:13 | strdupa | (const char *) | | a2i_IPADDRESS_NC | 0 | +| taint.cpp:364:7:364:13 | strdupa | (const char *) | | last_component | 0 | | taint.cpp:364:7:364:13 | strdupa | (const char *) | | opt_path_end | 0 | | taint.cpp:364:7:364:13 | strdupa | (const char *) | | opt_progname | 0 | | taint.cpp:364:7:364:13 | strdupa | (const char *) | | ossl_lh_strcasehash | 0 | | taint.cpp:364:7:364:13 | strdupa | (const char *) | | strhash | 0 | +| taint.cpp:364:7:364:13 | strdupa | (const char *) | | uc_script_byname | 0 | +| taint.cpp:364:7:364:13 | strdupa | (const char *) | | uv__strdup | 0 | +| taint.cpp:364:7:364:13 | strdupa | (const char *) | | uv_wtf8_length_as_utf16 | 0 | | taint.cpp:365:7:365:14 | strndupa | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_cert_flags | 1 | | taint.cpp:365:7:365:14 | strndupa | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_flags | 1 | | taint.cpp:365:7:365:14 | strndupa | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_nm_flags | 1 | @@ -8736,6 +10152,7 @@ signatureMatches | taint.cpp:365:7:365:14 | strndupa | (BUF_MEM *,size_t) | | BUF_MEM_grow | 1 | | taint.cpp:365:7:365:14 | strndupa | (BUF_MEM *,size_t) | | BUF_MEM_grow_clean | 1 | | taint.cpp:365:7:365:14 | strndupa | (CONF_IMODULE *,unsigned long) | | CONF_imodule_set_flags | 1 | +| taint.cpp:365:7:365:14 | strndupa | (Curl_hash *,size_t) | | Curl_init_dnscache | 1 | | taint.cpp:365:7:365:14 | strndupa | (EVP_CIPHER *,unsigned long) | | EVP_CIPHER_meth_set_flags | 1 | | taint.cpp:365:7:365:14 | strndupa | (EVP_MD *,unsigned long) | | EVP_MD_meth_set_flags | 1 | | taint.cpp:365:7:365:14 | strndupa | (HMAC_CTX *,unsigned long) | | HMAC_CTX_set_flags | 1 | @@ -8781,15 +10198,54 @@ signatureMatches | taint.cpp:365:7:365:14 | strndupa | (X509_STORE_CTX *,unsigned long) | | X509_STORE_CTX_set_flags | 1 | | taint.cpp:365:7:365:14 | strndupa | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_clear_flags | 1 | | taint.cpp:365:7:365:14 | strndupa | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_set_flags | 1 | +| taint.cpp:365:7:365:14 | strndupa | (bufq *,size_t) | | Curl_bufq_skip | 1 | +| taint.cpp:365:7:365:14 | strndupa | (bufq *,size_t) | | Curl_bufq_unwrite | 1 | | taint.cpp:365:7:365:14 | strndupa | (char *,size_t) | | RAND_file_name | 1 | +| taint.cpp:365:7:365:14 | strndupa | (char *,size_t) | | plain_method | 1 | | taint.cpp:365:7:365:14 | strndupa | (const BIGNUM *,unsigned long) | | BN_mod_word | 1 | +| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | Curl_getn_scheme_handler | 0 | +| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | Curl_getn_scheme_handler | 1 | +| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | Curl_memdup0 | 0 | +| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | Curl_memdup0 | 1 | | taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | OPENSSL_strnlen | 0 | | taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | OPENSSL_strnlen | 1 | +| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | uv__strndup | 0 | +| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | uv__strndup | 1 | | taint.cpp:365:7:365:14 | strndupa | (const uint8_t *,size_t) | | FuzzerTestOneInput | 1 | +| taint.cpp:365:7:365:14 | strndupa | (const uint8_t *,size_t) | | nghttp2_hd_huff_encode_count | 1 | | taint.cpp:365:7:365:14 | strndupa | (const uint8_t *,size_t) | | ossl_ed448_pubkey_verify | 1 | +| taint.cpp:365:7:365:14 | strndupa | (const void *,size_t) | | Curl_memdup | 1 | +| taint.cpp:365:7:365:14 | strndupa | (curl_pushheaders *,size_t) | | curl_pushheader_bynum | 1 | +| taint.cpp:365:7:365:14 | strndupa | (dynbuf *,size_t) | | Curl_dyn_init | 1 | +| taint.cpp:365:7:365:14 | strndupa | (dynbuf *,size_t) | | Curl_dyn_setlen | 1 | +| taint.cpp:365:7:365:14 | strndupa | (dynbuf *,size_t) | | Curl_dyn_tail | 1 | +| taint.cpp:365:7:365:14 | strndupa | (dynbuf *,size_t) | | curlx_dyn_init | 1 | +| taint.cpp:365:7:365:14 | strndupa | (dynbuf *,size_t) | | curlx_dyn_setlen | 1 | +| taint.cpp:365:7:365:14 | strndupa | (dynbuf *,size_t) | | curlx_dyn_tail | 1 | +| taint.cpp:365:7:365:14 | strndupa | (dynhds *,size_t) | | Curl_dynhds_getn | 1 | +| taint.cpp:365:7:365:14 | strndupa | (h1_req_parser *,size_t) | | Curl_h1_req_parse_init | 1 | | taint.cpp:365:7:365:14 | strndupa | (int,size_t) | | ossl_calculate_comp_expansion | 1 | +| taint.cpp:365:7:365:14 | strndupa | (nghttp2_bufs *,size_t) | | nghttp2_bufs_realloc | 1 | +| taint.cpp:365:7:365:14 | strndupa | (nghttp2_frame *,size_t) | | nghttp2_frame_trail_padlen | 1 | +| taint.cpp:365:7:365:14 | strndupa | (nghttp2_hd_context *,size_t) | | nghttp2_hd_table_get | 1 | +| taint.cpp:365:7:365:14 | strndupa | (nghttp2_hd_deflater **,size_t) | | nghttp2_hd_deflate_new | 1 | +| taint.cpp:365:7:365:14 | strndupa | (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_change_table_size | 1 | +| taint.cpp:365:7:365:14 | strndupa | (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_get_table_entry | 1 | +| taint.cpp:365:7:365:14 | strndupa | (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_change_table_size | 1 | +| taint.cpp:365:7:365:14 | strndupa | (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_get_table_entry | 1 | +| taint.cpp:365:7:365:14 | strndupa | (nghttp2_option *,size_t) | | nghttp2_option_set_max_continuations | 1 | +| taint.cpp:365:7:365:14 | strndupa | (nghttp2_option *,size_t) | | nghttp2_option_set_max_deflate_dynamic_table_size | 1 | +| taint.cpp:365:7:365:14 | strndupa | (nghttp2_option *,size_t) | | nghttp2_option_set_max_outbound_ack | 1 | +| taint.cpp:365:7:365:14 | strndupa | (nghttp2_option *,size_t) | | nghttp2_option_set_max_send_header_block_length | 1 | +| taint.cpp:365:7:365:14 | strndupa | (nghttp2_option *,size_t) | | nghttp2_option_set_max_settings | 1 | +| taint.cpp:365:7:365:14 | strndupa | (nghttp2_session *,size_t) | | nghttp2_session_consume_connection | 1 | +| taint.cpp:365:7:365:14 | strndupa | (nghttp2_session *,size_t) | | nghttp2_session_update_recv_connection_window_size | 1 | +| taint.cpp:365:7:365:14 | strndupa | (nghttp2_stream *,size_t) | | nghttp2_http_on_data_chunk | 1 | +| taint.cpp:365:7:365:14 | strndupa | (uint8_t *,size_t) | | nghttp2_downcase | 1 | | taint.cpp:365:7:365:14 | strndupa | (uint8_t *,size_t) | | ossl_fnv1a_hash | 1 | | taint.cpp:365:7:365:14 | strndupa | (void *,size_t) | | JimDefaultAllocator | 1 | +| taint.cpp:365:7:365:14 | strndupa | (void *,size_t) | | uv__random_devurandom | 1 | +| taint.cpp:365:7:365:14 | strndupa | (void *,size_t) | | uv__random_getrandom | 1 | | taint.cpp:367:6:367:16 | test_strdup | (char *) | | SRP_VBASE_new | 0 | | taint.cpp:367:6:367:16 | test_strdup | (char *) | | defossilize | 0 | | taint.cpp:367:6:367:16 | test_strdup | (char *) | | make_uppercase | 0 | @@ -8813,6 +10269,9 @@ signatureMatches | taint.cpp:379:6:379:17 | test_strndup | (int) | | X509_TRUST_get0 | 0 | | taint.cpp:379:6:379:17 | test_strndup | (int) | | X509_TRUST_get_by_id | 0 | | taint.cpp:379:6:379:17 | test_strndup | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| taint.cpp:379:6:379:17 | test_strndup | (int) | | c_tolower | 0 | +| taint.cpp:379:6:379:17 | test_strndup | (int) | | c_toupper | 0 | +| taint.cpp:379:6:379:17 | test_strndup | (int) | | curlx_sitouz | 0 | | taint.cpp:379:6:379:17 | test_strndup | (int) | | evp_pkey_type2name | 0 | | taint.cpp:379:6:379:17 | test_strndup | (int) | | ossl_cmp_bodytype_to_string | 0 | | taint.cpp:379:6:379:17 | test_strndup | (int) | | ossl_tolower | 0 | @@ -8820,6 +10279,12 @@ signatureMatches | taint.cpp:379:6:379:17 | test_strndup | (int) | | sqlite3_compileoption_get | 0 | | taint.cpp:379:6:379:17 | test_strndup | (int) | | sqlite3_errstr | 0 | | taint.cpp:379:6:379:17 | test_strndup | (int) | | tls13_alert_code | 0 | +| taint.cpp:379:6:379:17 | test_strndup | (int) | | uv__accept | 0 | +| taint.cpp:379:6:379:17 | test_strndup | (int) | | uv_err_name | 0 | +| taint.cpp:379:6:379:17 | test_strndup | (int) | | uv_get_osfhandle | 0 | +| taint.cpp:379:6:379:17 | test_strndup | (int) | | uv_strerror | 0 | +| taint.cpp:379:6:379:17 | test_strndup | (int) | | uv_translate_sys_error | 0 | +| taint.cpp:379:6:379:17 | test_strndup | (int) | | zError | 0 | | taint.cpp:387:6:387:16 | test_wcsdup | (wchar_t *) | CStringT | CStringT | 0 | | taint.cpp:397:6:397:17 | test_strdupa | (char *) | | SRP_VBASE_new | 0 | | taint.cpp:397:6:397:17 | test_strdupa | (char *) | | defossilize | 0 | @@ -8844,6 +10309,9 @@ signatureMatches | taint.cpp:409:6:409:18 | test_strndupa | (int) | | X509_TRUST_get0 | 0 | | taint.cpp:409:6:409:18 | test_strndupa | (int) | | X509_TRUST_get_by_id | 0 | | taint.cpp:409:6:409:18 | test_strndupa | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| taint.cpp:409:6:409:18 | test_strndupa | (int) | | c_tolower | 0 | +| taint.cpp:409:6:409:18 | test_strndupa | (int) | | c_toupper | 0 | +| taint.cpp:409:6:409:18 | test_strndupa | (int) | | curlx_sitouz | 0 | | taint.cpp:409:6:409:18 | test_strndupa | (int) | | evp_pkey_type2name | 0 | | taint.cpp:409:6:409:18 | test_strndupa | (int) | | ossl_cmp_bodytype_to_string | 0 | | taint.cpp:409:6:409:18 | test_strndupa | (int) | | ossl_tolower | 0 | @@ -8851,6 +10319,12 @@ signatureMatches | taint.cpp:409:6:409:18 | test_strndupa | (int) | | sqlite3_compileoption_get | 0 | | taint.cpp:409:6:409:18 | test_strndupa | (int) | | sqlite3_errstr | 0 | | taint.cpp:409:6:409:18 | test_strndupa | (int) | | tls13_alert_code | 0 | +| taint.cpp:409:6:409:18 | test_strndupa | (int) | | uv__accept | 0 | +| taint.cpp:409:6:409:18 | test_strndupa | (int) | | uv_err_name | 0 | +| taint.cpp:409:6:409:18 | test_strndupa | (int) | | uv_get_osfhandle | 0 | +| taint.cpp:409:6:409:18 | test_strndupa | (int) | | uv_strerror | 0 | +| taint.cpp:409:6:409:18 | test_strndupa | (int) | | uv_translate_sys_error | 0 | +| taint.cpp:409:6:409:18 | test_strndupa | (int) | | zError | 0 | | taint.cpp:421:2:421:9 | MyClass2 | (int) | | ASN1_STRING_type_new | 0 | | taint.cpp:421:2:421:9 | MyClass2 | (int) | | ASN1_tag2bit | 0 | | taint.cpp:421:2:421:9 | MyClass2 | (int) | | ASN1_tag2str | 0 | @@ -8869,6 +10343,9 @@ signatureMatches | taint.cpp:421:2:421:9 | MyClass2 | (int) | | X509_TRUST_get0 | 0 | | taint.cpp:421:2:421:9 | MyClass2 | (int) | | X509_TRUST_get_by_id | 0 | | taint.cpp:421:2:421:9 | MyClass2 | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| taint.cpp:421:2:421:9 | MyClass2 | (int) | | c_tolower | 0 | +| taint.cpp:421:2:421:9 | MyClass2 | (int) | | c_toupper | 0 | +| taint.cpp:421:2:421:9 | MyClass2 | (int) | | curlx_sitouz | 0 | | taint.cpp:421:2:421:9 | MyClass2 | (int) | | evp_pkey_type2name | 0 | | taint.cpp:421:2:421:9 | MyClass2 | (int) | | ossl_cmp_bodytype_to_string | 0 | | taint.cpp:421:2:421:9 | MyClass2 | (int) | | ossl_tolower | 0 | @@ -8876,6 +10353,12 @@ signatureMatches | taint.cpp:421:2:421:9 | MyClass2 | (int) | | sqlite3_compileoption_get | 0 | | taint.cpp:421:2:421:9 | MyClass2 | (int) | | sqlite3_errstr | 0 | | taint.cpp:421:2:421:9 | MyClass2 | (int) | | tls13_alert_code | 0 | +| taint.cpp:421:2:421:9 | MyClass2 | (int) | | uv__accept | 0 | +| taint.cpp:421:2:421:9 | MyClass2 | (int) | | uv_err_name | 0 | +| taint.cpp:421:2:421:9 | MyClass2 | (int) | | uv_get_osfhandle | 0 | +| taint.cpp:421:2:421:9 | MyClass2 | (int) | | uv_strerror | 0 | +| taint.cpp:421:2:421:9 | MyClass2 | (int) | | uv_translate_sys_error | 0 | +| taint.cpp:421:2:421:9 | MyClass2 | (int) | | zError | 0 | | taint.cpp:422:7:422:15 | setMember | (int) | | ASN1_STRING_type_new | 0 | | taint.cpp:422:7:422:15 | setMember | (int) | | ASN1_tag2bit | 0 | | taint.cpp:422:7:422:15 | setMember | (int) | | ASN1_tag2str | 0 | @@ -8894,6 +10377,9 @@ signatureMatches | taint.cpp:422:7:422:15 | setMember | (int) | | X509_TRUST_get0 | 0 | | taint.cpp:422:7:422:15 | setMember | (int) | | X509_TRUST_get_by_id | 0 | | taint.cpp:422:7:422:15 | setMember | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| taint.cpp:422:7:422:15 | setMember | (int) | | c_tolower | 0 | +| taint.cpp:422:7:422:15 | setMember | (int) | | c_toupper | 0 | +| taint.cpp:422:7:422:15 | setMember | (int) | | curlx_sitouz | 0 | | taint.cpp:422:7:422:15 | setMember | (int) | | evp_pkey_type2name | 0 | | taint.cpp:422:7:422:15 | setMember | (int) | | ossl_cmp_bodytype_to_string | 0 | | taint.cpp:422:7:422:15 | setMember | (int) | | ossl_tolower | 0 | @@ -8901,7 +10387,16 @@ signatureMatches | taint.cpp:422:7:422:15 | setMember | (int) | | sqlite3_compileoption_get | 0 | | taint.cpp:422:7:422:15 | setMember | (int) | | sqlite3_errstr | 0 | | taint.cpp:422:7:422:15 | setMember | (int) | | tls13_alert_code | 0 | +| taint.cpp:422:7:422:15 | setMember | (int) | | uv__accept | 0 | +| taint.cpp:422:7:422:15 | setMember | (int) | | uv_err_name | 0 | +| taint.cpp:422:7:422:15 | setMember | (int) | | uv_get_osfhandle | 0 | +| taint.cpp:422:7:422:15 | setMember | (int) | | uv_strerror | 0 | +| taint.cpp:422:7:422:15 | setMember | (int) | | uv_translate_sys_error | 0 | +| taint.cpp:422:7:422:15 | setMember | (int) | | zError | 0 | | taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | BIO_gethostbyname | 0 | +| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | Curl_copy_header_value | 0 | +| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | Curl_get_scheme_handler | 0 | +| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | Curl_getdate_capped | 0 | | taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | Jim_StrDup | 0 | | taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | OPENSSL_LH_strhash | 0 | | taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -8912,11 +10407,18 @@ signatureMatches | taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | X509_LOOKUP_meth_new | 0 | | taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | a2i_IPADDRESS | 0 | | taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | a2i_IPADDRESS_NC | 0 | +| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | last_component | 0 | | taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | opt_path_end | 0 | | taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | opt_progname | 0 | | taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | ossl_lh_strcasehash | 0 | | taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | strhash | 0 | +| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | uc_script_byname | 0 | +| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | uv__strdup | 0 | +| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | uv_wtf8_length_as_utf16 | 0 | | taint.cpp:431:7:431:15 | setString | (const char *) | | BIO_gethostbyname | 0 | +| taint.cpp:431:7:431:15 | setString | (const char *) | | Curl_copy_header_value | 0 | +| taint.cpp:431:7:431:15 | setString | (const char *) | | Curl_get_scheme_handler | 0 | +| taint.cpp:431:7:431:15 | setString | (const char *) | | Curl_getdate_capped | 0 | | taint.cpp:431:7:431:15 | setString | (const char *) | | Jim_StrDup | 0 | | taint.cpp:431:7:431:15 | setString | (const char *) | | OPENSSL_LH_strhash | 0 | | taint.cpp:431:7:431:15 | setString | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -8927,10 +10429,15 @@ signatureMatches | taint.cpp:431:7:431:15 | setString | (const char *) | | X509_LOOKUP_meth_new | 0 | | taint.cpp:431:7:431:15 | setString | (const char *) | | a2i_IPADDRESS | 0 | | taint.cpp:431:7:431:15 | setString | (const char *) | | a2i_IPADDRESS_NC | 0 | +| taint.cpp:431:7:431:15 | setString | (const char *) | | last_component | 0 | | taint.cpp:431:7:431:15 | setString | (const char *) | | opt_path_end | 0 | | taint.cpp:431:7:431:15 | setString | (const char *) | | opt_progname | 0 | | taint.cpp:431:7:431:15 | setString | (const char *) | | ossl_lh_strcasehash | 0 | | taint.cpp:431:7:431:15 | setString | (const char *) | | strhash | 0 | +| taint.cpp:431:7:431:15 | setString | (const char *) | | uc_script_byname | 0 | +| taint.cpp:431:7:431:15 | setString | (const char *) | | uv__strdup | 0 | +| taint.cpp:431:7:431:15 | setString | (const char *) | | uv_wtf8_length_as_utf16 | 0 | +| taint.cpp:500:5:500:12 | getdelim | (URLGlob **,char *,curl_off_t *,FILE *) | | glob_url | 3 | | taint.cpp:512:7:512:12 | strtok | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 | | taint.cpp:512:7:512:12 | strtok | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 | | taint.cpp:512:7:512:12 | strtok | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string_X509 | 1 | @@ -8940,6 +10447,9 @@ signatureMatches | taint.cpp:512:7:512:12 | strtok | (BIGNUM **,const char *) | | BN_hex2bn | 1 | | taint.cpp:512:7:512:12 | strtok | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | | taint.cpp:512:7:512:12 | strtok | (CONF *,const char *) | | _CONF_new_section | 1 | +| taint.cpp:512:7:512:12 | strtok | (CURLU *,const char *) | | Curl_url_set_authority | 1 | +| taint.cpp:512:7:512:12 | strtok | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | +| taint.cpp:512:7:512:12 | strtok | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | | taint.cpp:512:7:512:12 | strtok | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | | taint.cpp:512:7:512:12 | strtok | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | | taint.cpp:512:7:512:12 | strtok | (DSO *,const char *) | | DSO_convert_filename | 1 | @@ -8950,10 +10460,14 @@ signatureMatches | taint.cpp:512:7:512:12 | strtok | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | | taint.cpp:512:7:512:12 | strtok | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | | taint.cpp:512:7:512:12 | strtok | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | +| taint.cpp:512:7:512:12 | strtok | (GlobalConfig *,const char *) | | setvariable | 1 | | taint.cpp:512:7:512:12 | strtok | (Jim_Interp *,const char *) | | Jim_Eval | 1 | | taint.cpp:512:7:512:12 | strtok | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | | taint.cpp:512:7:512:12 | strtok | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | | taint.cpp:512:7:512:12 | strtok | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | +| taint.cpp:512:7:512:12 | strtok | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | +| taint.cpp:512:7:512:12 | strtok | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | +| taint.cpp:512:7:512:12 | strtok | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | | taint.cpp:512:7:512:12 | strtok | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | | taint.cpp:512:7:512:12 | strtok | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | | taint.cpp:512:7:512:12 | strtok | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | @@ -9010,19 +10524,41 @@ signatureMatches | taint.cpp:512:7:512:12 | strtok | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | | taint.cpp:512:7:512:12 | strtok | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | | taint.cpp:512:7:512:12 | strtok | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | +| taint.cpp:512:7:512:12 | strtok | (char **,const char *) | | Curl_setstropt | 1 | | taint.cpp:512:7:512:12 | strtok | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | +| taint.cpp:512:7:512:12 | strtok | (const char **,const char *) | | uv__utf8_decode1 | 1 | | taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | Configcmp | 1 | +| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | Curl_timestrcmp | 1 | | taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | DES_crypt | 1 | | taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | +| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | c_strcasecmp | 1 | | taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | get_passwd | 1 | +| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | gzopen | 1 | +| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | gzopen64 | 1 | | taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | openssl_fopen | 1 | | taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | ossl_pem_check_suffix | 1 | | taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | ossl_v3_name_cmp | 1 | | taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | sqlite3_strglob | 1 | | taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | sqlite3_stricmp | 1 | +| taint.cpp:512:7:512:12 | strtok | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | +| taint.cpp:512:7:512:12 | strtok | (curl_off_t *,const char *) | | str2offset | 1 | +| taint.cpp:512:7:512:12 | strtok | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | +| taint.cpp:512:7:512:12 | strtok | (curl_slist **,const char *) | | add2list | 1 | +| taint.cpp:512:7:512:12 | strtok | (curl_slist *,const char *) | | curl_slist_append | 1 | +| taint.cpp:512:7:512:12 | strtok | (dynbuf *,const char *) | | Curl_dyn_add | 1 | +| taint.cpp:512:7:512:12 | strtok | (dynbuf *,const char *) | | curlx_dyn_add | 1 | +| taint.cpp:512:7:512:12 | strtok | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | +| taint.cpp:512:7:512:12 | strtok | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | +| taint.cpp:512:7:512:12 | strtok | (gzFile,const char *) | | gzputs | 1 | | taint.cpp:512:7:512:12 | strtok | (int,const char *) | | BIO_meth_new | 1 | +| taint.cpp:512:7:512:12 | strtok | (int,const char *) | | gzdopen | 1 | | taint.cpp:512:7:512:12 | strtok | (lemon *,const char *) | | file_makename | 1 | +| taint.cpp:512:7:512:12 | strtok | (long *,const char *) | | secs2ms | 1 | +| taint.cpp:512:7:512:12 | strtok | (long *,const char *) | | str2num | 1 | +| taint.cpp:512:7:512:12 | strtok | (long *,const char *) | | str2unum | 1 | | taint.cpp:512:7:512:12 | strtok | (size_t *,const char *) | | next_protos_parse | 1 | +| taint.cpp:512:7:512:12 | strtok | (slist_wc **,const char *) | | easysrc_add | 1 | +| taint.cpp:512:7:512:12 | strtok | (slist_wc *,const char *) | | slist_wc_append | 1 | | taint.cpp:512:7:512:12 | strtok | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | | taint.cpp:512:7:512:12 | strtok | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | | taint.cpp:512:7:512:12 | strtok | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | @@ -9033,6 +10569,7 @@ signatureMatches | taint.cpp:512:7:512:12 | strtok | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | | taint.cpp:512:7:512:12 | strtok | (unsigned long *,const char *) | | set_cert_ex | 1 | | taint.cpp:512:7:512:12 | strtok | (unsigned long *,const char *) | | set_name_ex | 1 | +| taint.cpp:512:7:512:12 | strtok | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | | taint.cpp:514:6:514:16 | test_strtok | (char *) | | SRP_VBASE_new | 0 | | taint.cpp:514:6:514:16 | test_strtok | (char *) | | defossilize | 0 | | taint.cpp:514:6:514:16 | test_strtok | (char *) | | make_uppercase | 0 | @@ -9056,6 +10593,8 @@ signatureMatches | taint.cpp:523:7:523:13 | _strset | (BIO *,int) | | TXT_DB_read | 1 | | taint.cpp:523:7:523:13 | _strset | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | taint.cpp:523:7:523:13 | _strset | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| taint.cpp:523:7:523:13 | _strset | (CURL *,int) | | curl_easy_pause | 1 | +| taint.cpp:523:7:523:13 | _strset | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | taint.cpp:523:7:523:13 | _strset | (DH *,int) | | DH_clear_flags | 1 | | taint.cpp:523:7:523:13 | _strset | (DH *,int) | | DH_set_flags | 1 | | taint.cpp:523:7:523:13 | _strset | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -9099,6 +10638,17 @@ signatureMatches | taint.cpp:523:7:523:13 | _strset | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | taint.cpp:523:7:523:13 | _strset | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | taint.cpp:523:7:523:13 | _strset | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | taint.cpp:523:7:523:13 | _strset | (LPCOLESTR,int) | CComBSTR | Append | 1 | | taint.cpp:523:7:523:13 | _strset | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | taint.cpp:523:7:523:13 | _strset | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -9216,9 +10766,12 @@ signatureMatches | taint.cpp:523:7:523:13 | _strset | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | taint.cpp:523:7:523:13 | _strset | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | taint.cpp:523:7:523:13 | _strset | (acttab *,int) | | acttab_insert | 1 | +| taint.cpp:523:7:523:13 | _strset | (char *,int) | | Curl_str2addr | 0 | +| taint.cpp:523:7:523:13 | _strset | (char *,int) | | Curl_str2addr | 1 | | taint.cpp:523:7:523:13 | _strset | (char *,int) | | PEM_proc_type | 0 | | taint.cpp:523:7:523:13 | _strset | (char *,int) | | PEM_proc_type | 1 | | taint.cpp:523:7:523:13 | _strset | (char,int) | CStringT | CStringT | 1 | +| taint.cpp:523:7:523:13 | _strset | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | taint.cpp:523:7:523:13 | _strset | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | taint.cpp:523:7:523:13 | _strset | (const BIGNUM *,int) | | BN_get_flags | 1 | | taint.cpp:523:7:523:13 | _strset | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -9285,12 +10838,22 @@ signatureMatches | taint.cpp:523:7:523:13 | _strset | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | taint.cpp:523:7:523:13 | _strset | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | taint.cpp:523:7:523:13 | _strset | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| taint.cpp:523:7:523:13 | _strset | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| taint.cpp:523:7:523:13 | _strset | (gzFile,int) | | gzflush | 1 | +| taint.cpp:523:7:523:13 | _strset | (gzFile,int) | | gzputc | 1 | | taint.cpp:523:7:523:13 | _strset | (int *,int) | | X509_PURPOSE_set | 1 | | taint.cpp:523:7:523:13 | _strset | (int *,int) | | X509_TRUST_set | 1 | | taint.cpp:523:7:523:13 | _strset | (int,int) | | BN_security_bits | 1 | | taint.cpp:523:7:523:13 | _strset | (int,int) | | EVP_MD_meth_new | 1 | | taint.cpp:523:7:523:13 | _strset | (int,int) | | EVP_PKEY_meth_new | 1 | | taint.cpp:523:7:523:13 | _strset | (int,int) | | acttab_alloc | 1 | +| taint.cpp:523:7:523:13 | _strset | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| taint.cpp:523:7:523:13 | _strset | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| taint.cpp:523:7:523:13 | _strset | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| taint.cpp:523:7:523:13 | _strset | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| taint.cpp:523:7:523:13 | _strset | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| taint.cpp:523:7:523:13 | _strset | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| taint.cpp:523:7:523:13 | _strset | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | taint.cpp:523:7:523:13 | _strset | (rule *,int) | | Configlist_add | 1 | | taint.cpp:523:7:523:13 | _strset | (rule *,int) | | Configlist_addbasis | 1 | | taint.cpp:523:7:523:13 | _strset | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -9325,9 +10888,11 @@ signatureMatches | taint.cpp:523:7:523:13 | _strset | (unsigned char *,int) | | RAND_priv_bytes | 1 | | taint.cpp:523:7:523:13 | _strset | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | taint.cpp:523:7:523:13 | _strset | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| taint.cpp:523:7:523:13 | _strset | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | taint.cpp:523:7:523:13 | _strset | (void *,int) | | DSO_dsobyaddr | 1 | | taint.cpp:523:7:523:13 | _strset | (void *,int) | | sqlite3_realloc | 1 | | taint.cpp:523:7:523:13 | _strset | (wchar_t,int) | CStringT | CStringT | 1 | +| taint.cpp:525:6:525:18 | test_strset_1 | (char **,char) | | Curl_str_single | 1 | | taint.cpp:525:6:525:18 | test_strset_1 | (const CStringT &,char) | | operator+ | 1 | | taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | SRP_VBASE_new | 0 | | taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | defossilize | 0 | @@ -9352,9 +10917,25 @@ signatureMatches | taint.cpp:538:7:538:13 | mempcpy | (CMAC_CTX *,const void *,size_t) | | CMAC_Update | 1 | | taint.cpp:538:7:538:13 | mempcpy | (CMAC_CTX *,const void *,size_t) | | CMAC_Update | 2 | | taint.cpp:538:7:538:13 | mempcpy | (CMS_RecipientInfo *,const unsigned char *,size_t) | | CMS_RecipientInfo_kekri_id_cmp | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_alnum | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_bytes | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_hex | 2 | | taint.cpp:538:7:538:13 | mempcpy | (DH *,const unsigned char *,size_t) | | ossl_dh_buf2key | 2 | | taint.cpp:538:7:538:13 | mempcpy | (EC_GROUP *,const unsigned char *,size_t) | | EC_GROUP_set_seed | 2 | | taint.cpp:538:7:538:13 | mempcpy | (EC_KEY *,const unsigned char *,size_t) | | ossl_ec_key_simple_oct2priv | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 1 | +| taint.cpp:538:7:538:13 | mempcpy | (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha1_init | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha256_init | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha512_init | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 1 | +| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 1 | +| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 1 | +| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 1 | +| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 2 | | taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX *,const unsigned char *,size_t) | | EVP_DigestVerifyFinal | 2 | | taint.cpp:538:7:538:13 | mempcpy | (EVP_PKEY *,char *,size_t) | | EVP_PKEY_get_default_digest_name | 2 | | taint.cpp:538:7:538:13 | mempcpy | (EVP_RAND_CTX *,unsigned char *,size_t) | | EVP_RAND_nonce | 2 | @@ -9367,6 +10948,9 @@ signatureMatches | taint.cpp:538:7:538:13 | mempcpy | (KECCAK1600_CTX *,const void *,size_t) | | ossl_sha3_update | 2 | | taint.cpp:538:7:538:13 | mempcpy | (KECCAK1600_CTX *,unsigned char *,size_t) | | ossl_sha3_squeeze | 2 | | taint.cpp:538:7:538:13 | mempcpy | (KECCAK1600_CTX *,unsigned char,size_t) | | ossl_sha3_init | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (LIBSSH2_CHANNEL *,const char *,size_t) | | libssh2_channel_signal_ex | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (LIBSSH2_SFTP_HANDLE *,char *,size_t) | | libssh2_sftp_read | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (LIBSSH2_SFTP_HANDLE *,const char *,size_t) | | libssh2_sftp_write | 2 | | taint.cpp:538:7:538:13 | mempcpy | (MD4_CTX *,const void *,size_t) | | MD4_Update | 1 | | taint.cpp:538:7:538:13 | mempcpy | (MD4_CTX *,const void *,size_t) | | MD4_Update | 2 | | taint.cpp:538:7:538:13 | mempcpy | (MD4_CTX *,const void *,size_t) | | md4_block_data_order | 1 | @@ -9378,6 +10962,7 @@ signatureMatches | taint.cpp:538:7:538:13 | mempcpy | (MDC2_CTX *,const unsigned char *,size_t) | | MDC2_Update | 2 | | taint.cpp:538:7:538:13 | mempcpy | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_pk_decode | 2 | | taint.cpp:538:7:538:13 | mempcpy | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_sk_decode | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (MemoryManager *,const uint8_t *,size_t) | | CreatePreparedDictionary | 2 | | taint.cpp:538:7:538:13 | mempcpy | (OCB128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_ocb128_aad | 2 | | taint.cpp:538:7:538:13 | mempcpy | (OCB128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_ocb128_tag | 2 | | taint.cpp:538:7:538:13 | mempcpy | (OSSL_HPKE_CTX *,const unsigned char *,size_t) | | OSSL_HPKE_CTX_set1_ikme | 2 | @@ -9465,8 +11050,16 @@ signatureMatches | taint.cpp:538:7:538:13 | mempcpy | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_email | 2 | | taint.cpp:538:7:538:13 | mempcpy | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_host | 2 | | taint.cpp:538:7:538:13 | mempcpy | (X509_VERIFY_PARAM *,const unsigned char *,size_t) | | X509_VERIFY_PARAM_set1_ip | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (bufc_pool *,size_t,size_t) | | Curl_bufcp_init | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (bufq *,size_t,size_t) | | Curl_bufq_init | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (bufref *,const void *,size_t) | | Curl_bufref_memdup | 1 | +| taint.cpp:538:7:538:13 | mempcpy | (bufref *,const void *,size_t) | | Curl_bufref_memdup | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (char **,size_t *,size_t) | | Curl_str_number | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (char *,const char *,size_t) | | Curl_strntolower | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (char *,const char *,size_t) | | Curl_strntoupper | 2 | | taint.cpp:538:7:538:13 | mempcpy | (char *,const char *,size_t) | | OPENSSL_strlcat | 2 | | taint.cpp:538:7:538:13 | mempcpy | (char *,const char *,size_t) | | OPENSSL_strlcpy | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (char *,const char *,size_t) | | uv__strscpy | 2 | | taint.cpp:538:7:538:13 | mempcpy | (const CTLOG_STORE *,const uint8_t *,size_t) | | CTLOG_STORE_get0_log_by_id | 2 | | taint.cpp:538:7:538:13 | mempcpy | (const EC_KEY *,unsigned char *,size_t) | | ossl_ec_key_simple_priv2oct | 2 | | taint.cpp:538:7:538:13 | mempcpy | (const EVP_MD *,const OSSL_ITEM *,size_t) | | ossl_digest_md_to_nid | 2 | @@ -9480,20 +11073,64 @@ signatureMatches | taint.cpp:538:7:538:13 | mempcpy | (const SSL_SESSION *,unsigned char *,size_t) | | SSL_SESSION_get_master_key | 2 | | taint.cpp:538:7:538:13 | mempcpy | (const char *,char **,size_t) | | OSSL_PARAM_construct_utf8_ptr | 2 | | taint.cpp:538:7:538:13 | mempcpy | (const char *,char *,size_t) | | OSSL_PARAM_construct_utf8_string | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (const char *,char *,size_t) | | getpass_r | 2 | | taint.cpp:538:7:538:13 | mempcpy | (const char *,const char *,size_t) | | OPENSSL_strncasecmp | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (const char *,const char *,size_t) | | c_strncasecmp | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (const char *,uint16_t *,size_t) | | uv_wtf8_to_utf16 | 2 | | taint.cpp:538:7:538:13 | mempcpy | (const char *,unsigned char *,size_t) | | OSSL_PARAM_construct_BN | 2 | | taint.cpp:538:7:538:13 | mempcpy | (const char *,void **,size_t) | | OSSL_PARAM_construct_octet_ptr | 2 | | taint.cpp:538:7:538:13 | mempcpy | (const char *,void *,size_t) | | OSSL_PARAM_construct_octet_string | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (const char *,void *,size_t) | | uv__random_readpath | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (const sockaddr *,char *,size_t) | | uv_ip_name | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (const sockaddr_in6 *,char *,size_t) | | uv_ip6_name | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (const sockaddr_in *,char *,size_t) | | uv_ip4_name | 2 | | taint.cpp:538:7:538:13 | mempcpy | (const unsigned char *,size_t,size_t) | | ossl_rand_pool_attach | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 1 | +| taint.cpp:538:7:538:13 | mempcpy | (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (curl_mimepart *,const char *,size_t) | | curl_mime_data | 2 | | taint.cpp:538:7:538:13 | mempcpy | (curve448_scalar_t,const unsigned char *,size_t) | | ossl_curve448_scalar_decode_long | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 1 | +| taint.cpp:538:7:538:13 | mempcpy | (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 1 | +| taint.cpp:538:7:538:13 | mempcpy | (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (dynhds *,const char *,size_t) | | Curl_dynhds_get | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (dynhds *,const char *,size_t) | | Curl_dynhds_h1_add_line | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (dynhds *,size_t,size_t) | | Curl_dynhds_init | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (int *,const char *,size_t) | | Curl_http_decode_status | 2 | | taint.cpp:538:7:538:13 | mempcpy | (int *,int *,size_t) | | EVP_PBE_get | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (int,char *,size_t) | | Curl_strerror | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (int,char *,size_t) | | uv_err_name_r | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (int,char *,size_t) | | uv_strerror_r | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (int,int,size_t) | | BrotliEncoderEstimatePeakMemoryUsage | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_buf *,uint8_t *,size_t) | | nghttp2_buf_wrap_init | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_extension *,nghttp2_origin_entry *,size_t) | | nghttp2_frame_origin_init | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_extpri_parse_priority | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_http_parse_priority | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_hd_deflater *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_bound | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv2 | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_session *,int32_t,size_t) | | nghttp2_session_consume | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_session *,nghttp2_settings_entry *,size_t) | | nghttp2_session_update_local_settings | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_settings *,nghttp2_settings_entry *,size_t) | | nghttp2_frame_unpack_settings_payload | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (sfparse_parser *,const uint8_t *,size_t) | | sfparse_parser_init | 2 | | taint.cpp:538:7:538:13 | mempcpy | (size_t,OSSL_QTX_IOVEC *,size_t) | | ossl_quic_sstream_adjust_iov | 2 | | taint.cpp:538:7:538:13 | mempcpy | (stack_st_SCT **,const unsigned char **,size_t) | | o2i_SCT_LIST | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (ucs4_t *,const uint8_t *,size_t) | | u8_mbtouc_aux | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (uint8_t *,const nghttp2_settings_entry *,size_t) | | nghttp2_frame_pack_settings_payload | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 1 | +| taint.cpp:538:7:538:13 | mempcpy | (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (unsigned char **,const char *,size_t) | | _libssh2_store_str | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (unsigned char **,const unsigned char *,size_t) | | _libssh2_store_bignum2_bytes | 2 | | taint.cpp:538:7:538:13 | mempcpy | (unsigned char *,const unsigned char *,size_t) | | BUF_reverse | 2 | | taint.cpp:538:7:538:13 | mempcpy | (unsigned char *,int,unsigned long) | | UTF8_putc | 2 | | taint.cpp:538:7:538:13 | mempcpy | (unsigned char *,size_t *,size_t) | | ossl_cipher_padblock | 2 | | taint.cpp:538:7:538:13 | mempcpy | (unsigned char *,size_t *,size_t) | | ossl_cipher_unpadblock | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (uv_thread_t *,char *,size_t) | | uv__thread_getname | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (uv_thread_t *,char *,size_t) | | uv_thread_getaffinity | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (uv_thread_t *,char *,size_t) | | uv_thread_getname | 2 | +| taint.cpp:538:7:538:13 | mempcpy | (void *,size_t,size_t) | | Curl_hash_str | 2 | | taint.cpp:538:7:538:13 | mempcpy | (void *,unsigned char *,size_t) | | ossl_drbg_clear_seed | 2 | +| taint.cpp:548:7:548:13 | memccpy | (BIGNUM **,EVP_PKEY *,const unsigned char *,size_t) | | _libssh2_ecdh_gen_k | 3 | | taint.cpp:548:7:548:13 | memccpy | (BIGNUM *,BIGNUM *,const unsigned char **,size_t) | | ossl_decode_der_dsa_sig | 3 | | taint.cpp:548:7:548:13 | memccpy | (BIO *,X509 *,unsigned long,unsigned long) | | X509_print_ex | 3 | | taint.cpp:548:7:548:13 | memccpy | (BIO *,X509_ACERT *,unsigned long,unsigned long) | | X509_ACERT_print_ex | 3 | @@ -9509,6 +11146,13 @@ signatureMatches | taint.cpp:548:7:548:13 | memccpy | (GCM128_CONTEXT *,const unsigned char *,unsigned char *,size_t) | | CRYPTO_gcm128_decrypt | 3 | | taint.cpp:548:7:548:13 | memccpy | (GCM128_CONTEXT *,const unsigned char *,unsigned char *,size_t) | | CRYPTO_gcm128_encrypt | 3 | | taint.cpp:548:7:548:13 | memccpy | (KECCAK1600_CTX *,unsigned char,size_t,size_t) | | ossl_keccak_init | 3 | +| taint.cpp:548:7:548:13 | memccpy | (LIBSSH2_CHANNEL *,int,char *,size_t) | | _libssh2_channel_read | 3 | +| taint.cpp:548:7:548:13 | memccpy | (LIBSSH2_CHANNEL *,int,char *,size_t) | | libssh2_channel_read_ex | 3 | +| taint.cpp:548:7:548:13 | memccpy | (LIBSSH2_CHANNEL *,int,const char *,size_t) | | libssh2_channel_write_ex | 3 | +| taint.cpp:548:7:548:13 | memccpy | (LIBSSH2_CHANNEL *,int,const unsigned char *,size_t) | | _libssh2_channel_write | 3 | +| taint.cpp:548:7:548:13 | memccpy | (MemoryManager *,HistogramCommand *,uint32_t *,size_t) | | BrotliHistogramReindexCommand | 3 | +| taint.cpp:548:7:548:13 | memccpy | (MemoryManager *,HistogramDistance *,uint32_t *,size_t) | | BrotliHistogramReindexDistance | 3 | +| taint.cpp:548:7:548:13 | memccpy | (MemoryManager *,HistogramLiteral *,uint32_t *,size_t) | | BrotliHistogramReindexLiteral | 3 | | taint.cpp:548:7:548:13 | memccpy | (OCB128_CONTEXT *,const unsigned char *,unsigned char *,size_t) | | CRYPTO_ocb128_decrypt | 3 | | taint.cpp:548:7:548:13 | memccpy | (OCB128_CONTEXT *,const unsigned char *,unsigned char *,size_t) | | CRYPTO_ocb128_encrypt | 3 | | taint.cpp:548:7:548:13 | memccpy | (OSSL_HPKE_CTX *,const char *,const unsigned char *,size_t) | | OSSL_HPKE_CTX_set1_psk | 3 | @@ -9545,16 +11189,31 @@ signatureMatches | taint.cpp:548:7:548:13 | memccpy | (const ML_DSA_KEY *,int,const uint8_t *,size_t) | | ossl_ml_dsa_mu_init | 3 | | taint.cpp:548:7:548:13 | memccpy | (const VECTOR *,uint32_t,uint8_t *,size_t) | | ossl_ml_dsa_w1_encode | 3 | | taint.cpp:548:7:548:13 | memccpy | (const u128[16],uint8_t *,const uint8_t *,size_t) | | ossl_polyval_ghash_hash | 3 | +| taint.cpp:548:7:548:13 | memccpy | (const unsigned char *,size_t,unsigned char *,size_t) | | Curl_hexencode | 3 | | taint.cpp:548:7:548:13 | memccpy | (int *,X509 *,stack_st_X509 *,unsigned long) | | X509_chain_check_suiteb | 3 | | taint.cpp:548:7:548:13 | memccpy | (int,ENGINE *,const unsigned char *,size_t) | | EVP_PKEY_new_raw_private_key | 3 | | taint.cpp:548:7:548:13 | memccpy | (int,ENGINE *,const unsigned char *,size_t) | | EVP_PKEY_new_raw_public_key | 3 | | taint.cpp:548:7:548:13 | memccpy | (int,const regex_t *,char *,size_t) | | jim_regerror | 3 | +| taint.cpp:548:7:548:13 | memccpy | (int,const void *,char *,size_t) | | uv_inet_ntop | 3 | | taint.cpp:548:7:548:13 | memccpy | (int,int,size_t,size_t) | | ossl_rand_pool_new | 3 | +| taint.cpp:548:7:548:13 | memccpy | (nghttp2_extension *,int32_t,uint8_t *,size_t) | | nghttp2_frame_priority_update_init | 3 | +| taint.cpp:548:7:548:13 | memccpy | (nghttp2_goaway *,const uint8_t *,uint8_t *,size_t) | | nghttp2_frame_unpack_goaway_payload | 3 | +| taint.cpp:548:7:548:13 | memccpy | (nghttp2_hd_deflater *,nghttp2_bufs *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_bufs | 3 | +| taint.cpp:548:7:548:13 | memccpy | (nghttp2_session *,int32_t,const nghttp2_nv *,size_t) | | nghttp2_submit_trailer | 3 | +| taint.cpp:548:7:548:13 | memccpy | (nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t) | | nghttp2_session_add_settings | 3 | +| taint.cpp:548:7:548:13 | memccpy | (nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t) | | nghttp2_submit_settings | 3 | +| taint.cpp:548:7:548:13 | memccpy | (nghttp2_settings *,uint8_t,nghttp2_settings_entry *,size_t) | | nghttp2_frame_settings_init | 3 | +| taint.cpp:548:7:548:13 | memccpy | (size_t,size_t,size_t,size_t) | | Curl_multi_handle | 3 | | taint.cpp:548:7:548:13 | memccpy | (u64[2],const u128[16],const u8 *,size_t) | | ossl_gcm_ghash_4bit | 3 | +| taint.cpp:548:7:548:13 | memccpy | (uint8_t *,size_t,const nghttp2_settings_entry *,size_t) | | nghttp2_pack_settings_payload | 3 | +| taint.cpp:548:7:548:13 | memccpy | (uint8_t *,size_t,const nghttp2_settings_entry *,size_t) | | nghttp2_pack_settings_payload2 | 3 | +| taint.cpp:548:7:548:13 | memccpy | (unsigned char *,const unsigned char *,const unsigned char *,size_t) | | _libssh2_xor_data | 3 | +| taint.cpp:548:7:548:13 | memccpy | (unsigned char *,size_t,const unsigned char *,size_t) | | _libssh2_kex_agree_instr | 3 | | taint.cpp:548:7:548:13 | memccpy | (unsigned long *,const unsigned long *,int,unsigned long) | | bn_mul_add_words | 2 | | taint.cpp:548:7:548:13 | memccpy | (unsigned long *,const unsigned long *,int,unsigned long) | | bn_mul_add_words | 3 | | taint.cpp:548:7:548:13 | memccpy | (unsigned long *,const unsigned long *,int,unsigned long) | | bn_mul_words | 2 | | taint.cpp:548:7:548:13 | memccpy | (unsigned long *,const unsigned long *,int,unsigned long) | | bn_mul_words | 3 | +| taint.cpp:548:7:548:13 | memccpy | (uv_thread_t *,char *,char *,size_t) | | uv_thread_setaffinity | 3 | | taint.cpp:548:7:548:13 | memccpy | (void *,unsigned char *,size_t *,size_t) | | ossl_ccm_stream_final | 3 | | taint.cpp:548:7:548:13 | memccpy | (void *,unsigned char *,size_t *,size_t) | | ossl_cipher_generic_block_final | 3 | | taint.cpp:548:7:548:13 | memccpy | (void *,unsigned char *,size_t *,size_t) | | ossl_gcm_stream_final | 3 | @@ -9567,6 +11226,9 @@ signatureMatches | taint.cpp:558:7:558:12 | strcat | (BIGNUM **,const char *) | | BN_hex2bn | 1 | | taint.cpp:558:7:558:12 | strcat | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | | taint.cpp:558:7:558:12 | strcat | (CONF *,const char *) | | _CONF_new_section | 1 | +| taint.cpp:558:7:558:12 | strcat | (CURLU *,const char *) | | Curl_url_set_authority | 1 | +| taint.cpp:558:7:558:12 | strcat | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | +| taint.cpp:558:7:558:12 | strcat | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | | taint.cpp:558:7:558:12 | strcat | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | | taint.cpp:558:7:558:12 | strcat | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | | taint.cpp:558:7:558:12 | strcat | (DSO *,const char *) | | DSO_convert_filename | 1 | @@ -9577,10 +11239,14 @@ signatureMatches | taint.cpp:558:7:558:12 | strcat | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | | taint.cpp:558:7:558:12 | strcat | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | | taint.cpp:558:7:558:12 | strcat | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | +| taint.cpp:558:7:558:12 | strcat | (GlobalConfig *,const char *) | | setvariable | 1 | | taint.cpp:558:7:558:12 | strcat | (Jim_Interp *,const char *) | | Jim_Eval | 1 | | taint.cpp:558:7:558:12 | strcat | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | | taint.cpp:558:7:558:12 | strcat | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | | taint.cpp:558:7:558:12 | strcat | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | +| taint.cpp:558:7:558:12 | strcat | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | +| taint.cpp:558:7:558:12 | strcat | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | +| taint.cpp:558:7:558:12 | strcat | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | | taint.cpp:558:7:558:12 | strcat | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | | taint.cpp:558:7:558:12 | strcat | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | | taint.cpp:558:7:558:12 | strcat | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | @@ -9637,19 +11303,41 @@ signatureMatches | taint.cpp:558:7:558:12 | strcat | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | | taint.cpp:558:7:558:12 | strcat | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | | taint.cpp:558:7:558:12 | strcat | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | +| taint.cpp:558:7:558:12 | strcat | (char **,const char *) | | Curl_setstropt | 1 | | taint.cpp:558:7:558:12 | strcat | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | +| taint.cpp:558:7:558:12 | strcat | (const char **,const char *) | | uv__utf8_decode1 | 1 | | taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | Configcmp | 1 | +| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | Curl_timestrcmp | 1 | | taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | DES_crypt | 1 | | taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | +| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | c_strcasecmp | 1 | | taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | get_passwd | 1 | +| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | gzopen | 1 | +| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | gzopen64 | 1 | | taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | openssl_fopen | 1 | | taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | ossl_pem_check_suffix | 1 | | taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | ossl_v3_name_cmp | 1 | | taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | sqlite3_strglob | 1 | | taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | sqlite3_stricmp | 1 | +| taint.cpp:558:7:558:12 | strcat | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | +| taint.cpp:558:7:558:12 | strcat | (curl_off_t *,const char *) | | str2offset | 1 | +| taint.cpp:558:7:558:12 | strcat | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | +| taint.cpp:558:7:558:12 | strcat | (curl_slist **,const char *) | | add2list | 1 | +| taint.cpp:558:7:558:12 | strcat | (curl_slist *,const char *) | | curl_slist_append | 1 | +| taint.cpp:558:7:558:12 | strcat | (dynbuf *,const char *) | | Curl_dyn_add | 1 | +| taint.cpp:558:7:558:12 | strcat | (dynbuf *,const char *) | | curlx_dyn_add | 1 | +| taint.cpp:558:7:558:12 | strcat | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | +| taint.cpp:558:7:558:12 | strcat | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | +| taint.cpp:558:7:558:12 | strcat | (gzFile,const char *) | | gzputs | 1 | | taint.cpp:558:7:558:12 | strcat | (int,const char *) | | BIO_meth_new | 1 | +| taint.cpp:558:7:558:12 | strcat | (int,const char *) | | gzdopen | 1 | | taint.cpp:558:7:558:12 | strcat | (lemon *,const char *) | | file_makename | 1 | +| taint.cpp:558:7:558:12 | strcat | (long *,const char *) | | secs2ms | 1 | +| taint.cpp:558:7:558:12 | strcat | (long *,const char *) | | str2num | 1 | +| taint.cpp:558:7:558:12 | strcat | (long *,const char *) | | str2unum | 1 | | taint.cpp:558:7:558:12 | strcat | (size_t *,const char *) | | next_protos_parse | 1 | +| taint.cpp:558:7:558:12 | strcat | (slist_wc **,const char *) | | easysrc_add | 1 | +| taint.cpp:558:7:558:12 | strcat | (slist_wc *,const char *) | | slist_wc_append | 1 | | taint.cpp:558:7:558:12 | strcat | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | | taint.cpp:558:7:558:12 | strcat | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | | taint.cpp:558:7:558:12 | strcat | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | @@ -9660,12 +11348,16 @@ signatureMatches | taint.cpp:558:7:558:12 | strcat | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | | taint.cpp:558:7:558:12 | strcat | (unsigned long *,const char *) | | set_cert_ex | 1 | | taint.cpp:558:7:558:12 | strcat | (unsigned long *,const char *) | | set_name_ex | 1 | +| taint.cpp:558:7:558:12 | strcat | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | | taint.cpp:560:6:560:16 | test_strcat | (PKCS7 *,int,long,char *) | | PKCS7_ctrl | 3 | | taint.cpp:560:6:560:16 | test_strcat | (SSL_CTX *,srpsrvparm *,char *,char *) | | set_up_srp_verifier_file | 2 | | taint.cpp:560:6:560:16 | test_strcat | (SSL_CTX *,srpsrvparm *,char *,char *) | | set_up_srp_verifier_file | 3 | | taint.cpp:560:6:560:16 | test_strcat | (SSL_HMAC *,void *,size_t,char *) | | ssl_hmac_init | 3 | | taint.cpp:560:6:560:16 | test_strcat | (SSL_HMAC *,void *,size_t,char *) | | ssl_hmac_old_init | 3 | | taint.cpp:560:6:560:16 | test_strcat | (action **,e_action,symbol *,char *) | | Action_add | 3 | +| taint.cpp:560:6:560:16 | test_strcat | (const char *,const char *,char *,char *) | | uv__idna_toascii | 2 | +| taint.cpp:560:6:560:16 | test_strcat | (const char *,const char *,char *,char *) | | uv__idna_toascii | 3 | +| taint.cpp:570:16:570:25 | _mbsncat_l | (..(*)(..),..(*)(..),..(*)(..),void *) | | libssh2_session_init_ex | 3 | | taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,CMS_ContentInfo **,pem_password_cb *,void *) | | PEM_read_bio_CMS | 3 | | taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,DH **,pem_password_cb *,void *) | | PEM_read_bio_DHparams | 3 | | taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,DSA **,pem_password_cb *,void *) | | PEM_read_bio_DSAPrivateKey | 3 | @@ -9693,6 +11385,9 @@ signatureMatches | taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,X509_SIG **,pem_password_cb *,void *) | | PEM_read_bio_PKCS8 | 3 | | taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,size_t,..(*)(..),void *) | | ossl_quic_demux_new | 3 | | taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,stack_st_X509_INFO *,pem_password_cb *,void *) | | PEM_X509_INFO_read_bio | 3 | +| taint.cpp:570:16:570:25 | _mbsncat_l | (BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *) | | BrotliDecoderStateInit | 3 | +| taint.cpp:570:16:570:25 | _mbsncat_l | (Curl_easy *,connectdata *,Curl_cpool_conn_do_cb *,void *) | | Curl_cpool_do_locked | 3 | +| taint.cpp:570:16:570:25 | _mbsncat_l | (Curl_hash *,void *,size_t,void *) | | Curl_hash_add | 3 | | taint.cpp:570:16:570:25 | _mbsncat_l | (DSO *,int,long,void *) | | DSO_ctrl | 3 | | taint.cpp:570:16:570:25 | _mbsncat_l | (EVP_CIPHER_CTX *,int,int,void *) | | EVP_CIPHER_CTX_ctrl | 2 | | taint.cpp:570:16:570:25 | _mbsncat_l | (EVP_CIPHER_CTX *,int,int,void *) | | EVP_CIPHER_CTX_ctrl | 3 | @@ -9725,6 +11420,7 @@ signatureMatches | taint.cpp:570:16:570:25 | _mbsncat_l | (HT *,size_t,..(*)(..),void *) | | ossl_ht_filter | 3 | | taint.cpp:570:16:570:25 | _mbsncat_l | (MD5_SHA1_CTX *,int,int,void *) | | ossl_md5_sha1_ctrl | 2 | | taint.cpp:570:16:570:25 | _mbsncat_l | (MD5_SHA1_CTX *,int,int,void *) | | ossl_md5_sha1_ctrl | 3 | +| taint.cpp:570:16:570:25 | _mbsncat_l | (MemoryManager *,brotli_alloc_func,brotli_free_func,void *) | | BrotliInitMemoryManager | 3 | | taint.cpp:570:16:570:25 | _mbsncat_l | (OCB128_CONTEXT *,OCB128_CONTEXT *,void *,void *) | | CRYPTO_ocb128_copy_ctx | 3 | | taint.cpp:570:16:570:25 | _mbsncat_l | (OPENSSL_LHASH *,OPENSSL_LH_DOALL_FUNCARG_THUNK,OPENSSL_LH_DOALL_FUNCARG,void *) | | OPENSSL_LH_doall_arg_thunk | 3 | | taint.cpp:570:16:570:25 | _mbsncat_l | (OSSL_PROVIDER *,int,..(*)(..),void *) | | evp_names_do_all | 3 | @@ -9750,8 +11446,14 @@ signatureMatches | taint.cpp:570:16:570:25 | _mbsncat_l | (char *,int,int,void *) | | ossl_pw_pem_password | 3 | | taint.cpp:570:16:570:25 | _mbsncat_l | (char *,int,int,void *) | | ossl_pw_pvk_password | 2 | | taint.cpp:570:16:570:25 | _mbsncat_l | (char *,int,int,void *) | | ossl_pw_pvk_password | 3 | +| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,size_t,size_t,void *) | | Curl_ftp_parselist | 3 | +| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,size_t,size_t,void *) | | Curl_mime_read | 3 | +| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,size_t,size_t,void *) | | tool_header_cb | 3 | +| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,size_t,size_t,void *) | | tool_mime_stdin_read | 3 | +| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,size_t,size_t,void *) | | tool_read_cb | 3 | | taint.cpp:570:16:570:25 | _mbsncat_l | (const OSSL_NAMEMAP *,int,..(*)(..),void *) | | ossl_namemap_doall_names | 3 | | taint.cpp:570:16:570:25 | _mbsncat_l | (int,unsigned long,..(*)(..),void *) | | RSA_generate_key | 3 | +| taint.cpp:570:16:570:25 | _mbsncat_l | (nghttp2_session *,const uint8_t *,size_t,void *) | | nghttp2_session_upgrade | 3 | | taint.cpp:570:16:570:25 | _mbsncat_l | (sqlite3 *,const char *,..(*)(..),void *) | | sqlite3_recover_init_sql | 3 | | taint.cpp:570:16:570:25 | _mbsncat_l | (sqlite3 *,const char *,..(*)(..),void *) | | sqlite3_rtree_geometry_callback | 3 | | taint.cpp:570:16:570:25 | _mbsncat_l | (sqlite3 *,const char *,const sqlite3_module *,void *) | | sqlite3_create_module | 3 | @@ -9761,11 +11463,15 @@ signatureMatches | taint.cpp:570:16:570:25 | _mbsncat_l | (sqlite3 *,unsigned int,..(*)(..),void *) | | sqlite3_trace_v2 | 3 | | taint.cpp:572:6:572:20 | test__mbsncat_l | (ENGINE *,const char *,long,void *,..(*)(..),int) | | ENGINE_ctrl_cmd | 5 | | taint.cpp:572:6:572:20 | test__mbsncat_l | (ENGINE_TABLE **,ENGINE_CLEANUP_CB *,ENGINE *,const int *,int,int) | | engine_table_register | 5 | +| taint.cpp:572:6:572:20 | test__mbsncat_l | (EVP_CIPHER_CTX **,..(*)(..),int,unsigned char *,size_t,int) | | _libssh2_cipher_crypt | 5 | | taint.cpp:572:6:572:20 | test__mbsncat_l | (EVP_CIPHER_CTX *,const EVP_CIPHER *,ENGINE *,const unsigned char *,const unsigned char *,int) | | EVP_CipherInit_ex | 5 | | taint.cpp:572:6:572:20 | test__mbsncat_l | (GENERAL_NAME *,const X509V3_EXT_METHOD *,X509V3_CTX *,int,const char *,int) | | a2i_GENERAL_NAME | 5 | | taint.cpp:572:6:572:20 | test__mbsncat_l | (Jim_Interp *,Jim_Obj *,Jim_Obj *const *,int,Jim_Obj **,int) | | Jim_DictKeysVector | 5 | | taint.cpp:572:6:572:20 | test__mbsncat_l | (Jim_Interp *,Jim_Obj *,Jim_Obj *const *,int,Jim_Obj *,int) | | Jim_SetDictKeysVector | 5 | | taint.cpp:572:6:572:20 | test__mbsncat_l | (Jim_Interp *,Jim_Obj *,const char *const *,int *,const char *,int) | | Jim_GetEnum | 5 | +| taint.cpp:572:6:572:20 | test__mbsncat_l | (LIBSSH2_KNOWNHOSTS *,libssh2_knownhost *,char *,size_t,size_t *,int) | | libssh2_knownhost_writeline | 5 | +| taint.cpp:572:6:572:20 | test__mbsncat_l | (LIBSSH2_SFTP *,const char *,unsigned int,char *,unsigned int,int) | | libssh2_sftp_symlink_ex | 5 | +| taint.cpp:572:6:572:20 | test__mbsncat_l | (LIBSSH2_SFTP *,const char *,unsigned int,unsigned long,long,int) | | libssh2_sftp_open_ex | 5 | | taint.cpp:572:6:572:20 | test__mbsncat_l | (PKCS7 *,stack_st_X509 *,X509_STORE *,BIO *,BIO *,int) | | PKCS7_verify | 5 | | taint.cpp:572:6:572:20 | test__mbsncat_l | (QUIC_STREAM_MAP *,..(*)(..),void *,QUIC_RXFC *,QUIC_RXFC *,int) | | ossl_quic_stream_map_init | 5 | | taint.cpp:572:6:572:20 | test__mbsncat_l | (RSA *,const unsigned char *,const EVP_MD *,const EVP_MD *,const unsigned char *,int) | | RSA_verify_PKCS1_PSS_mgf1 | 5 | @@ -9792,6 +11498,11 @@ signatureMatches | taint.cpp:572:6:572:20 | test__mbsncat_l | (const unsigned char *,unsigned char *,size_t,const SEED_KEY_SCHEDULE *,unsigned char[16],int) | | SEED_cbc_encrypt | 5 | | taint.cpp:572:6:572:20 | test__mbsncat_l | (const void *,const void *,int,int,..(*)(..),int) | | OBJ_bsearch_ex_ | 5 | | taint.cpp:572:6:572:20 | test__mbsncat_l | (const void *,const void *,int,int,..(*)(..),int) | | ossl_bsearch | 5 | +| taint.cpp:572:6:572:20 | test__mbsncat_l | (int,char **,gengetopt_args_info *,int,int,int) | | cmdline_parser2 | 5 | +| taint.cpp:572:6:572:20 | test__mbsncat_l | (nghttp2_hd_inflater *,nghttp2_hd_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd_nv | 5 | +| taint.cpp:572:6:572:20 | test__mbsncat_l | (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd2 | 5 | +| taint.cpp:572:6:572:20 | test__mbsncat_l | (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd3 | 5 | +| taint.cpp:572:6:572:20 | test__mbsncat_l | (nghttp2_hd_inflater *,nghttp2_nv *,int *,uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd | 5 | | taint.cpp:572:6:572:20 | test__mbsncat_l | (unsigned char *,int,const unsigned char *,int,const unsigned char *,int) | | RSA_padding_add_PKCS1_OAEP | 5 | | taint.cpp:589:7:589:12 | strsep | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 | | taint.cpp:589:7:589:12 | strsep | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 | @@ -9802,6 +11513,9 @@ signatureMatches | taint.cpp:589:7:589:12 | strsep | (BIGNUM **,const char *) | | BN_hex2bn | 1 | | taint.cpp:589:7:589:12 | strsep | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | | taint.cpp:589:7:589:12 | strsep | (CONF *,const char *) | | _CONF_new_section | 1 | +| taint.cpp:589:7:589:12 | strsep | (CURLU *,const char *) | | Curl_url_set_authority | 1 | +| taint.cpp:589:7:589:12 | strsep | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | +| taint.cpp:589:7:589:12 | strsep | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | | taint.cpp:589:7:589:12 | strsep | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | | taint.cpp:589:7:589:12 | strsep | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | | taint.cpp:589:7:589:12 | strsep | (DSO *,const char *) | | DSO_convert_filename | 1 | @@ -9812,10 +11526,14 @@ signatureMatches | taint.cpp:589:7:589:12 | strsep | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | | taint.cpp:589:7:589:12 | strsep | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | | taint.cpp:589:7:589:12 | strsep | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | +| taint.cpp:589:7:589:12 | strsep | (GlobalConfig *,const char *) | | setvariable | 1 | | taint.cpp:589:7:589:12 | strsep | (Jim_Interp *,const char *) | | Jim_Eval | 1 | | taint.cpp:589:7:589:12 | strsep | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | | taint.cpp:589:7:589:12 | strsep | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | | taint.cpp:589:7:589:12 | strsep | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | +| taint.cpp:589:7:589:12 | strsep | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | +| taint.cpp:589:7:589:12 | strsep | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | +| taint.cpp:589:7:589:12 | strsep | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | | taint.cpp:589:7:589:12 | strsep | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | | taint.cpp:589:7:589:12 | strsep | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | | taint.cpp:589:7:589:12 | strsep | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | @@ -9872,19 +11590,42 @@ signatureMatches | taint.cpp:589:7:589:12 | strsep | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | | taint.cpp:589:7:589:12 | strsep | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | | taint.cpp:589:7:589:12 | strsep | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | +| taint.cpp:589:7:589:12 | strsep | (char **,const char *) | | Curl_setstropt | 0 | +| taint.cpp:589:7:589:12 | strsep | (char **,const char *) | | Curl_setstropt | 1 | | taint.cpp:589:7:589:12 | strsep | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | +| taint.cpp:589:7:589:12 | strsep | (const char **,const char *) | | uv__utf8_decode1 | 1 | | taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | Configcmp | 1 | +| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | Curl_timestrcmp | 1 | | taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | DES_crypt | 1 | | taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | +| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | c_strcasecmp | 1 | | taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | get_passwd | 1 | +| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | gzopen | 1 | +| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | gzopen64 | 1 | | taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | openssl_fopen | 1 | | taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | ossl_pem_check_suffix | 1 | | taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | ossl_v3_name_cmp | 1 | | taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | sqlite3_strglob | 1 | | taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | sqlite3_stricmp | 1 | +| taint.cpp:589:7:589:12 | strsep | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | +| taint.cpp:589:7:589:12 | strsep | (curl_off_t *,const char *) | | str2offset | 1 | +| taint.cpp:589:7:589:12 | strsep | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | +| taint.cpp:589:7:589:12 | strsep | (curl_slist **,const char *) | | add2list | 1 | +| taint.cpp:589:7:589:12 | strsep | (curl_slist *,const char *) | | curl_slist_append | 1 | +| taint.cpp:589:7:589:12 | strsep | (dynbuf *,const char *) | | Curl_dyn_add | 1 | +| taint.cpp:589:7:589:12 | strsep | (dynbuf *,const char *) | | curlx_dyn_add | 1 | +| taint.cpp:589:7:589:12 | strsep | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | +| taint.cpp:589:7:589:12 | strsep | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | +| taint.cpp:589:7:589:12 | strsep | (gzFile,const char *) | | gzputs | 1 | | taint.cpp:589:7:589:12 | strsep | (int,const char *) | | BIO_meth_new | 1 | +| taint.cpp:589:7:589:12 | strsep | (int,const char *) | | gzdopen | 1 | | taint.cpp:589:7:589:12 | strsep | (lemon *,const char *) | | file_makename | 1 | +| taint.cpp:589:7:589:12 | strsep | (long *,const char *) | | secs2ms | 1 | +| taint.cpp:589:7:589:12 | strsep | (long *,const char *) | | str2num | 1 | +| taint.cpp:589:7:589:12 | strsep | (long *,const char *) | | str2unum | 1 | | taint.cpp:589:7:589:12 | strsep | (size_t *,const char *) | | next_protos_parse | 1 | +| taint.cpp:589:7:589:12 | strsep | (slist_wc **,const char *) | | easysrc_add | 1 | +| taint.cpp:589:7:589:12 | strsep | (slist_wc *,const char *) | | slist_wc_append | 1 | | taint.cpp:589:7:589:12 | strsep | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | | taint.cpp:589:7:589:12 | strsep | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | | taint.cpp:589:7:589:12 | strsep | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | @@ -9895,6 +11636,7 @@ signatureMatches | taint.cpp:589:7:589:12 | strsep | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | | taint.cpp:589:7:589:12 | strsep | (unsigned long *,const char *) | | set_cert_ex | 1 | | taint.cpp:589:7:589:12 | strsep | (unsigned long *,const char *) | | set_name_ex | 1 | +| taint.cpp:589:7:589:12 | strsep | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | | taint.cpp:591:6:591:16 | test_strsep | (char *) | | SRP_VBASE_new | 0 | | taint.cpp:591:6:591:16 | test_strsep | (char *) | | defossilize | 0 | | taint.cpp:591:6:591:16 | test_strsep | (char *) | | make_uppercase | 0 | @@ -9906,11 +11648,13 @@ signatureMatches | taint.cpp:602:7:602:13 | _strinc | (CONF_IMODULE *,void *) | | CONF_imodule_set_usr_data | 1 | | taint.cpp:602:7:602:13 | _strinc | (CONF_MODULE *,void *) | | CONF_module_set_usr_data | 1 | | taint.cpp:602:7:602:13 | _strinc | (CRYPTO_THREAD_LOCAL *,void *) | | CRYPTO_THREAD_set_local | 1 | +| taint.cpp:602:7:602:13 | _strinc | (Curl_tree *,void *) | | Curl_splayset | 1 | | taint.cpp:602:7:602:13 | _strinc | (DH_METHOD *,void *) | | DH_meth_set0_app_data | 1 | | taint.cpp:602:7:602:13 | _strinc | (DSA_METHOD *,void *) | | DSA_meth_set0_app_data | 1 | | taint.cpp:602:7:602:13 | _strinc | (EVP_CIPHER_CTX *,void *) | | EVP_CIPHER_CTX_set_app_data | 1 | | taint.cpp:602:7:602:13 | _strinc | (EVP_CIPHER_CTX *,void *) | | EVP_CIPHER_CTX_set_cipher_data | 1 | | taint.cpp:602:7:602:13 | _strinc | (EVP_KEYMGMT *,void *) | | evp_keymgmt_util_make_pkey | 1 | +| taint.cpp:602:7:602:13 | _strinc | (EVP_MAC_CTX **,void *) | | _libssh2_hmac_final | 1 | | taint.cpp:602:7:602:13 | _strinc | (EVP_PKEY_CTX *,void *) | | EVP_PKEY_CTX_get1_id | 1 | | taint.cpp:602:7:602:13 | _strinc | (EVP_PKEY_CTX *,void *) | | EVP_PKEY_CTX_set_app_data | 1 | | taint.cpp:602:7:602:13 | _strinc | (EVP_PKEY_CTX *,void *) | | EVP_PKEY_CTX_set_data | 1 | @@ -9945,7 +11689,18 @@ signatureMatches | taint.cpp:602:7:602:13 | _strinc | (const char *,void *) | | collect_names | 1 | | taint.cpp:602:7:602:13 | _strinc | (int,void *) | | OSSL_STORE_INFO_new | 1 | | taint.cpp:602:7:602:13 | _strinc | (int,void *) | | sqlite3_randomness | 1 | +| taint.cpp:602:7:602:13 | _strinc | (nghttp2_queue *,void *) | | nghttp2_queue_push | 1 | +| taint.cpp:602:7:602:13 | _strinc | (nghttp2_session *,void *) | | nghttp2_session_set_user_data | 1 | | taint.cpp:602:7:602:13 | _strinc | (unsigned char *,void *) | | pitem_new | 1 | +| taint.cpp:602:7:602:13 | _strinc | (uv_handle_t *,void *) | | uv_handle_set_data | 1 | +| taint.cpp:602:7:602:13 | _strinc | (uv_key_t *,void *) | | uv_key_set | 1 | +| taint.cpp:602:7:602:13 | _strinc | (uv_loop_t *,void *) | | uv_loop_set_data | 1 | +| taint.cpp:602:7:602:13 | _strinc | (uv_req_t *,void *) | | uv_req_set_data | 1 | +| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | | Curl_read16_be | 0 | +| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | | Curl_read16_le | 0 | +| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | | Curl_read32_le | 0 | +| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | | _libssh2_ntohu32 | 0 | +| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | | _libssh2_ntohu64 | 0 | | taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | | ossl_quic_vlint_decode_unchecked | 0 | | taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | CStringT | CStringT | 0 | | taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | CStringT | operator= | 0 | @@ -9954,6 +11709,7 @@ signatureMatches | taint.cpp:604:16:604:22 | _strdec | (SM3_CTX *,const unsigned char *) | | ossl_sm3_transform | 1 | | taint.cpp:604:16:604:22 | _strdec | (TLS_RL_RECORD *,const unsigned char *) | | ossl_tls_rl_record_set_seq_num | 1 | | taint.cpp:606:6:606:17 | test__strinc | (BIO *,const EVP_PKEY *,int,pem_password_cb *,void *) | | i2b_PVK_bio | 4 | +| taint.cpp:606:6:606:17 | test__strinc | (BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *) | | BrotliDecoderSetMetadataCallbacks | 4 | | taint.cpp:606:6:606:17 | test__strinc | (EVP_CIPHER_INFO *,unsigned char *,long *,pem_password_cb *,void *) | | PEM_do_header | 4 | | taint.cpp:606:6:606:17 | test__strinc | (EVP_PKEY *,EVP_KEYMGMT *,void *,OSSL_CALLBACK *,void *) | | evp_keymgmt_util_gen | 4 | | taint.cpp:606:6:606:17 | test__strinc | (EVP_PKEY_CTX *,int,int,int,void *) | | RSA_pkey_ctx_ctrl | 4 | @@ -9963,12 +11719,16 @@ signatureMatches | taint.cpp:606:6:606:17 | test__strinc | (const BIGNUM *,int,..(*)(..),BN_CTX *,void *) | | BN_is_prime | 4 | | taint.cpp:606:6:606:17 | test__strinc | (const char *,const UI_METHOD *,void *,OSSL_STORE_post_process_info_fn,void *) | | OSSL_STORE_open | 4 | | taint.cpp:606:6:606:17 | test__strinc | (const char *,int,int,..(*)(..),void *) | | CONF_parse_list | 4 | +| taint.cpp:606:6:606:17 | test__strinc | (nghttp2_extension *,uint8_t,uint8_t,int32_t,void *) | | nghttp2_frame_extension_init | 4 | +| taint.cpp:606:6:606:17 | test__strinc | (nghttp2_session *,const uint8_t *,size_t,int,void *) | | nghttp2_session_upgrade2 | 4 | +| taint.cpp:606:6:606:17 | test__strinc | (nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *) | | nghttp2_session_open_stream | 4 | | taint.cpp:606:6:606:17 | test__strinc | (sqlite3 *,const char *,const char *,..(*)(..),void *) | | recoverInit | 4 | | taint.cpp:616:6:616:17 | test__mbsinc | (PKCS7 *,int,long,char *) | | PKCS7_ctrl | 3 | | taint.cpp:616:6:616:17 | test__mbsinc | (SSL_CTX *,srpsrvparm *,char *,char *) | | set_up_srp_verifier_file | 3 | | taint.cpp:616:6:616:17 | test__mbsinc | (SSL_HMAC *,void *,size_t,char *) | | ssl_hmac_init | 3 | | taint.cpp:616:6:616:17 | test__mbsinc | (SSL_HMAC *,void *,size_t,char *) | | ssl_hmac_old_init | 3 | | taint.cpp:616:6:616:17 | test__mbsinc | (action **,e_action,symbol *,char *) | | Action_add | 3 | +| taint.cpp:616:6:616:17 | test__mbsinc | (const char *,const char *,char *,char *) | | uv__idna_toascii | 3 | | taint.cpp:626:6:626:17 | test__strdec | (BIO *,const BIGNUM *,const char *,int,unsigned char *) | | print_bignum_var | 4 | | taint.cpp:626:6:626:17 | test__strdec | (OSSL_LIB_CTX *,const char *,const QUIC_PKT_HDR *,const QUIC_CONN_ID *,unsigned char *) | | ossl_quic_calculate_retry_integrity_tag | 4 | | taint.cpp:626:6:626:17 | test__strdec | (QUIC_HDR_PROTECTOR *,const unsigned char *,size_t,unsigned char *,unsigned char *) | | ossl_quic_hdr_protector_decrypt_fields | 3 | @@ -9976,6 +11736,9 @@ signatureMatches | taint.cpp:626:6:626:17 | test__strdec | (QUIC_HDR_PROTECTOR *,const unsigned char *,size_t,unsigned char *,unsigned char *) | | ossl_quic_hdr_protector_encrypt_fields | 3 | | taint.cpp:626:6:626:17 | test__strdec | (QUIC_HDR_PROTECTOR *,const unsigned char *,size_t,unsigned char *,unsigned char *) | | ossl_quic_hdr_protector_encrypt_fields | 4 | | taint.cpp:645:14:645:22 | _strnextc | (const char *) | | BIO_gethostbyname | 0 | +| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | Curl_copy_header_value | 0 | +| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | Curl_get_scheme_handler | 0 | +| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | Curl_getdate_capped | 0 | | taint.cpp:645:14:645:22 | _strnextc | (const char *) | | Jim_StrDup | 0 | | taint.cpp:645:14:645:22 | _strnextc | (const char *) | | OPENSSL_LH_strhash | 0 | | taint.cpp:645:14:645:22 | _strnextc | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -9986,11 +11749,18 @@ signatureMatches | taint.cpp:645:14:645:22 | _strnextc | (const char *) | | X509_LOOKUP_meth_new | 0 | | taint.cpp:645:14:645:22 | _strnextc | (const char *) | | a2i_IPADDRESS | 0 | | taint.cpp:645:14:645:22 | _strnextc | (const char *) | | a2i_IPADDRESS_NC | 0 | +| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | last_component | 0 | | taint.cpp:645:14:645:22 | _strnextc | (const char *) | | opt_path_end | 0 | | taint.cpp:645:14:645:22 | _strnextc | (const char *) | | opt_progname | 0 | | taint.cpp:645:14:645:22 | _strnextc | (const char *) | | ossl_lh_strcasehash | 0 | | taint.cpp:645:14:645:22 | _strnextc | (const char *) | | strhash | 0 | +| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | uc_script_byname | 0 | +| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | uv__strdup | 0 | +| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | uv_wtf8_length_as_utf16 | 0 | | taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | BIO_gethostbyname | 0 | +| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | Curl_copy_header_value | 0 | +| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | Curl_get_scheme_handler | 0 | +| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | Curl_getdate_capped | 0 | | taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | Jim_StrDup | 0 | | taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | OPENSSL_LH_strhash | 0 | | taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | @@ -10001,10 +11771,14 @@ signatureMatches | taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | X509_LOOKUP_meth_new | 0 | | taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | a2i_IPADDRESS | 0 | | taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | a2i_IPADDRESS_NC | 0 | +| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | last_component | 0 | | taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | opt_path_end | 0 | | taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | opt_progname | 0 | | taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | ossl_lh_strcasehash | 0 | | taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | strhash | 0 | +| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | uc_script_byname | 0 | +| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | uv__strdup | 0 | +| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | uv_wtf8_length_as_utf16 | 0 | | taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | SRP_VBASE_new | 0 | | taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | defossilize | 0 | | taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | make_uppercase | 0 | @@ -10015,6 +11789,7 @@ signatureMatches | taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | make_uppercase | 0 | | taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | next_item | 0 | | taint.cpp:677:6:677:27 | test_with_const_member | (char *) | CStringT | CStringT | 0 | +| taint.cpp:683:6:683:20 | argument_source | (void *) | | Curl_cpool_upkeep | 0 | | taint.cpp:683:6:683:20 | argument_source | (void *) | | ossl_kdf_data_new | 0 | | taint.cpp:707:8:707:14 | strncpy | (BIO *,OCSP_REQUEST *,unsigned long) | | OCSP_REQUEST_print | 2 | | taint.cpp:707:8:707:14 | strncpy | (BIO *,OCSP_RESPONSE *,unsigned long) | | OCSP_RESPONSE_print | 2 | @@ -10031,6 +11806,7 @@ signatureMatches | taint.cpp:709:6:709:17 | test_strncpy | (SSL_CTX *,char *) | | SSL_CTX_set_srp_username | 1 | | taint.cpp:709:6:709:17 | test_strncpy | (const char *,char *) | | sha1sum_file | 1 | | taint.cpp:709:6:709:17 | test_strncpy | (const char *,char *) | | sha3sum_file | 1 | +| taint.cpp:709:6:709:17 | test_strncpy | (curl_slist *,char *) | | Curl_slist_append_nodup | 1 | | taint.cpp:709:6:709:17 | test_strncpy | (unsigned long,char *) | | ERR_error_string | 1 | | taint.cpp:725:10:725:15 | strtol | (ASN1_BIT_STRING *,int,int) | | ASN1_BIT_STRING_set_bit | 2 | | taint.cpp:725:10:725:15 | strtol | (ASN1_BIT_STRING *,unsigned char *,int) | | ASN1_BIT_STRING_set | 2 | @@ -10057,6 +11833,11 @@ signatureMatches | taint.cpp:725:10:725:15 | strtol | (BIO *,const RSA *,int) | | RSA_print | 2 | | taint.cpp:725:10:725:15 | strtol | (CERT *,X509_STORE **,int) | | ssl_cert_get_cert_store | 2 | | taint.cpp:725:10:725:15 | strtol | (CRYPTO_THREAD_ROUTINE,void *,int) | | ossl_crypto_thread_native_start | 2 | +| taint.cpp:725:10:725:15 | strtol | (Curl_easy *,connectdata *,int) | | Curl_conn_cf_discard_all | 2 | +| taint.cpp:725:10:725:15 | strtol | (Curl_easy *,connectdata *,int) | | Curl_http2_may_switch | 2 | +| taint.cpp:725:10:725:15 | strtol | (Curl_easy *,connectdata *,int) | | Curl_http2_switch | 2 | +| taint.cpp:725:10:725:15 | strtol | (Curl_easy *,connectdata *,int) | | Curl_ssl_cfilter_add | 2 | +| taint.cpp:725:10:725:15 | strtol | (Curl_sockaddr_ex *,const Curl_addrinfo *,int) | | Curl_sock_assign_addr | 2 | | taint.cpp:725:10:725:15 | strtol | (DH *,const OSSL_PARAM[],int) | | ossl_dh_key_fromdata | 2 | | taint.cpp:725:10:725:15 | strtol | (DSA *,const OSSL_PARAM[],int) | | ossl_dsa_key_fromdata | 2 | | taint.cpp:725:10:725:15 | strtol | (ECX_KEY *,const OSSL_PARAM[],int) | | ossl_ecx_key_fromdata | 2 | @@ -10093,6 +11874,8 @@ signatureMatches | taint.cpp:725:10:725:15 | strtol | (Jim_Interp *,const char *,int) | | Jim_MakeTempFile | 2 | | taint.cpp:725:10:725:15 | strtol | (Jim_Interp *,const char *,int) | | Jim_NewStringObj | 2 | | taint.cpp:725:10:725:15 | strtol | (Jim_Interp *,const char *,int) | | Jim_NewStringObjUtf8 | 2 | +| taint.cpp:725:10:725:15 | strtol | (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 2 | +| taint.cpp:725:10:725:15 | strtol | (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int) | | libssh2_sftp_fstat_ex | 2 | | taint.cpp:725:10:725:15 | strtol | (OCSP_BASICRESP *,OCSP_CERTID *,int) | | OCSP_resp_find | 2 | | taint.cpp:725:10:725:15 | strtol | (OCSP_BASICRESP *,X509_EXTENSION *,int) | | OCSP_BASICRESP_add_ext | 2 | | taint.cpp:725:10:725:15 | strtol | (OCSP_BASICRESP *,const ASN1_OBJECT *,int) | | OCSP_BASICRESP_get_ext_by_OBJ | 2 | @@ -10178,6 +11961,7 @@ signatureMatches | taint.cpp:725:10:725:15 | strtol | (const CMS_SignerInfo *,const ASN1_OBJECT *,int) | | CMS_unsigned_get_attr_by_OBJ | 2 | | taint.cpp:725:10:725:15 | strtol | (const CMS_SignerInfo *,int,int) | | CMS_signed_get_attr_by_NID | 2 | | taint.cpp:725:10:725:15 | strtol | (const CMS_SignerInfo *,int,int) | | CMS_unsigned_get_attr_by_NID | 2 | +| taint.cpp:725:10:725:15 | strtol | (const Curl_easy *,const connectdata *,int) | | Curl_conn_is_http2 | 2 | | taint.cpp:725:10:725:15 | strtol | (const EVP_MD *,const EVP_MD *,int) | | ossl_rsa_pss_params_create | 2 | | taint.cpp:725:10:725:15 | strtol | (const EVP_PKEY *,const ASN1_OBJECT *,int) | | EVP_PKEY_get_attr_by_OBJ | 2 | | taint.cpp:725:10:725:15 | strtol | (const EVP_PKEY *,int,int) | | EVP_PKEY_get_attr_by_NID | 2 | @@ -10205,6 +11989,9 @@ signatureMatches | taint.cpp:725:10:725:15 | strtol | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_NID | 2 | | taint.cpp:725:10:725:15 | strtol | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_critical | 2 | | taint.cpp:725:10:725:15 | strtol | (const X509_SIG *,const char *,int) | | PKCS8_decrypt | 2 | +| taint.cpp:725:10:725:15 | strtol | (const char *,char **,int) | | idn2_to_ascii_8z | 0 | +| taint.cpp:725:10:725:15 | strtol | (const char *,char **,int) | | idn2_to_ascii_8z | 1 | +| taint.cpp:725:10:725:15 | strtol | (const char *,char **,int) | | idn2_to_ascii_8z | 2 | | taint.cpp:725:10:725:15 | strtol | (const char *,const OSSL_PARAM *,int) | | print_param_types | 2 | | taint.cpp:725:10:725:15 | strtol | (const char *,const char *,int) | | CRYPTO_strdup | 2 | | taint.cpp:725:10:725:15 | strtol | (const char *,const char *,int) | | sqlite3_strnicmp | 2 | @@ -10215,9 +12002,16 @@ signatureMatches | taint.cpp:725:10:725:15 | strtol | (const stack_st_X509_EXTENSION *,const ASN1_OBJECT *,int) | | X509v3_get_ext_by_OBJ | 2 | | taint.cpp:725:10:725:15 | strtol | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_NID | 2 | | taint.cpp:725:10:725:15 | strtol | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 2 | +| taint.cpp:725:10:725:15 | strtol | (const uint8_t *,uint8_t **,int) | | idn2_lookup_u8 | 2 | | taint.cpp:725:10:725:15 | strtol | (const unsigned char **,unsigned int,int) | | ossl_b2i_DSA_after_header | 2 | | taint.cpp:725:10:725:15 | strtol | (const unsigned char **,unsigned int,int) | | ossl_b2i_RSA_after_header | 2 | | taint.cpp:725:10:725:15 | strtol | (const void *,const void *,int) | | ossl_is_partially_overlapping | 2 | +| taint.cpp:725:10:725:15 | strtol | (curl_mimepart *,curl_mime *,int) | | Curl_mime_set_subparts | 2 | +| taint.cpp:725:10:725:15 | strtol | (curl_mimepart *,curl_slist *,int) | | curl_mime_headers | 2 | +| taint.cpp:725:10:725:15 | strtol | (gzFile,char *,int) | | gzgets | 2 | +| taint.cpp:725:10:725:15 | strtol | (gzFile,int,int) | | gzsetparams | 2 | +| taint.cpp:725:10:725:15 | strtol | (gzFile,off64_t,int) | | gzseek64 | 2 | +| taint.cpp:725:10:725:15 | strtol | (gzFile,off_t,int) | | gzseek | 2 | | taint.cpp:725:10:725:15 | strtol | (int,BIO_ADDR *,int) | | BIO_accept_ex | 2 | | taint.cpp:725:10:725:15 | strtol | (int,int,int) | | ASN1_object_size | 2 | | taint.cpp:725:10:725:15 | strtol | (int,int,int) | | EVP_CIPHER_meth_new | 2 | @@ -10250,19 +12044,34 @@ signatureMatches | taint.cpp:725:10:725:15 | strtol | (unsigned int,int,int) | | ossl_blob_length | 2 | | taint.cpp:725:10:725:15 | strtol | (unsigned long *,const BIGNUM *,int) | | bn_copy_words | 2 | | taint.cpp:725:10:725:15 | strtol | (unsigned long *,const unsigned long *,int) | | bn_sqr_words | 2 | +| taint.cpp:725:10:725:15 | strtol | (uv__io_t *,uv__io_cb,int) | | uv__io_init | 2 | +| taint.cpp:725:10:725:15 | strtol | (uv_loop_t *,uv_fs_t *,int) | | uv__iou_fs_read_or_write | 2 | +| taint.cpp:725:10:725:15 | strtol | (uv_loop_t *,uv_pipe_t *,int) | | uv_pipe_init | 2 | +| taint.cpp:725:10:725:15 | strtol | (uv_loop_t *,uv_poll_t *,int) | | uv_poll_init | 2 | +| taint.cpp:725:10:725:15 | strtol | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start | 2 | +| taint.cpp:725:10:725:15 | strtol | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start_oneshot | 2 | +| taint.cpp:725:10:725:15 | strtol | (uv_stream_t *,int,int) | | uv__stream_open | 2 | | taint.cpp:725:10:725:15 | strtol | (void *,const char *,int) | | CRYPTO_secure_free | 2 | +| taint.cpp:725:10:725:15 | strtol | (void *,curl_off_t,int) | | tool_mime_stdin_seek | 2 | | taint.cpp:727:6:727:16 | test_strtol | (char *) | | SRP_VBASE_new | 0 | | taint.cpp:727:6:727:16 | test_strtol | (char *) | | defossilize | 0 | | taint.cpp:727:6:727:16 | test_strtol | (char *) | | make_uppercase | 0 | | taint.cpp:727:6:727:16 | test_strtol | (char *) | | next_item | 0 | | taint.cpp:727:6:727:16 | test_strtol | (char *) | CStringT | CStringT | 0 | +| taint.cpp:735:7:735:12 | malloc | (size_t) | | BrotliEncoderMaxCompressedSize | 0 | | taint.cpp:735:7:735:12 | malloc | (size_t) | | EVP_PKEY_meth_get0 | 0 | +| taint.cpp:735:7:735:12 | malloc | (size_t) | | curlx_uztosi | 0 | +| taint.cpp:735:7:735:12 | malloc | (size_t) | | curlx_uztosz | 0 | +| taint.cpp:735:7:735:12 | malloc | (size_t) | | curlx_uztoui | 0 | +| taint.cpp:735:7:735:12 | malloc | (size_t) | | curlx_uztoul | 0 | | taint.cpp:735:7:735:12 | malloc | (size_t) | | ossl_get_extension_type | 0 | | taint.cpp:735:7:735:12 | malloc | (size_t) | | ossl_param_bytes_to_blocks | 0 | | taint.cpp:735:7:735:12 | malloc | (size_t) | | ossl_quic_sstream_new | 0 | | taint.cpp:735:7:735:12 | malloc | (size_t) | | ssl_cert_new | 0 | | taint.cpp:735:7:735:12 | malloc | (unsigned long) | | BN_num_bits_word | 0 | | taint.cpp:735:7:735:12 | malloc | (unsigned long) | | BUF_MEM_new_ex | 0 | +| taint.cpp:735:7:735:12 | malloc | (unsigned long) | | curlx_ultouc | 0 | +| taint.cpp:735:7:735:12 | malloc | (unsigned long) | | curlx_ultous | 0 | | taint.cpp:736:7:736:13 | realloc | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_cert_flags | 1 | | taint.cpp:736:7:736:13 | realloc | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_flags | 1 | | taint.cpp:736:7:736:13 | realloc | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_nm_flags | 1 | @@ -10276,6 +12085,7 @@ signatureMatches | taint.cpp:736:7:736:13 | realloc | (BUF_MEM *,size_t) | | BUF_MEM_grow | 1 | | taint.cpp:736:7:736:13 | realloc | (BUF_MEM *,size_t) | | BUF_MEM_grow_clean | 1 | | taint.cpp:736:7:736:13 | realloc | (CONF_IMODULE *,unsigned long) | | CONF_imodule_set_flags | 1 | +| taint.cpp:736:7:736:13 | realloc | (Curl_hash *,size_t) | | Curl_init_dnscache | 1 | | taint.cpp:736:7:736:13 | realloc | (EVP_CIPHER *,unsigned long) | | EVP_CIPHER_meth_set_flags | 1 | | taint.cpp:736:7:736:13 | realloc | (EVP_MD *,unsigned long) | | EVP_MD_meth_set_flags | 1 | | taint.cpp:736:7:736:13 | realloc | (HMAC_CTX *,unsigned long) | | HMAC_CTX_set_flags | 1 | @@ -10321,17 +12131,57 @@ signatureMatches | taint.cpp:736:7:736:13 | realloc | (X509_STORE_CTX *,unsigned long) | | X509_STORE_CTX_set_flags | 1 | | taint.cpp:736:7:736:13 | realloc | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_clear_flags | 1 | | taint.cpp:736:7:736:13 | realloc | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_set_flags | 1 | +| taint.cpp:736:7:736:13 | realloc | (bufq *,size_t) | | Curl_bufq_skip | 1 | +| taint.cpp:736:7:736:13 | realloc | (bufq *,size_t) | | Curl_bufq_unwrite | 1 | | taint.cpp:736:7:736:13 | realloc | (char *,size_t) | | RAND_file_name | 1 | +| taint.cpp:736:7:736:13 | realloc | (char *,size_t) | | plain_method | 1 | | taint.cpp:736:7:736:13 | realloc | (const BIGNUM *,unsigned long) | | BN_mod_word | 1 | +| taint.cpp:736:7:736:13 | realloc | (const char *,size_t) | | Curl_getn_scheme_handler | 1 | +| taint.cpp:736:7:736:13 | realloc | (const char *,size_t) | | Curl_memdup0 | 1 | | taint.cpp:736:7:736:13 | realloc | (const char *,size_t) | | OPENSSL_strnlen | 1 | +| taint.cpp:736:7:736:13 | realloc | (const char *,size_t) | | uv__strndup | 1 | | taint.cpp:736:7:736:13 | realloc | (const uint8_t *,size_t) | | FuzzerTestOneInput | 1 | +| taint.cpp:736:7:736:13 | realloc | (const uint8_t *,size_t) | | nghttp2_hd_huff_encode_count | 1 | | taint.cpp:736:7:736:13 | realloc | (const uint8_t *,size_t) | | ossl_ed448_pubkey_verify | 1 | +| taint.cpp:736:7:736:13 | realloc | (const void *,size_t) | | Curl_memdup | 1 | +| taint.cpp:736:7:736:13 | realloc | (curl_pushheaders *,size_t) | | curl_pushheader_bynum | 1 | +| taint.cpp:736:7:736:13 | realloc | (dynbuf *,size_t) | | Curl_dyn_init | 1 | +| taint.cpp:736:7:736:13 | realloc | (dynbuf *,size_t) | | Curl_dyn_setlen | 1 | +| taint.cpp:736:7:736:13 | realloc | (dynbuf *,size_t) | | Curl_dyn_tail | 1 | +| taint.cpp:736:7:736:13 | realloc | (dynbuf *,size_t) | | curlx_dyn_init | 1 | +| taint.cpp:736:7:736:13 | realloc | (dynbuf *,size_t) | | curlx_dyn_setlen | 1 | +| taint.cpp:736:7:736:13 | realloc | (dynbuf *,size_t) | | curlx_dyn_tail | 1 | +| taint.cpp:736:7:736:13 | realloc | (dynhds *,size_t) | | Curl_dynhds_getn | 1 | +| taint.cpp:736:7:736:13 | realloc | (h1_req_parser *,size_t) | | Curl_h1_req_parse_init | 1 | | taint.cpp:736:7:736:13 | realloc | (int,size_t) | | ossl_calculate_comp_expansion | 1 | +| taint.cpp:736:7:736:13 | realloc | (nghttp2_bufs *,size_t) | | nghttp2_bufs_realloc | 1 | +| taint.cpp:736:7:736:13 | realloc | (nghttp2_frame *,size_t) | | nghttp2_frame_trail_padlen | 1 | +| taint.cpp:736:7:736:13 | realloc | (nghttp2_hd_context *,size_t) | | nghttp2_hd_table_get | 1 | +| taint.cpp:736:7:736:13 | realloc | (nghttp2_hd_deflater **,size_t) | | nghttp2_hd_deflate_new | 1 | +| taint.cpp:736:7:736:13 | realloc | (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_change_table_size | 1 | +| taint.cpp:736:7:736:13 | realloc | (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_get_table_entry | 1 | +| taint.cpp:736:7:736:13 | realloc | (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_change_table_size | 1 | +| taint.cpp:736:7:736:13 | realloc | (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_get_table_entry | 1 | +| taint.cpp:736:7:736:13 | realloc | (nghttp2_option *,size_t) | | nghttp2_option_set_max_continuations | 1 | +| taint.cpp:736:7:736:13 | realloc | (nghttp2_option *,size_t) | | nghttp2_option_set_max_deflate_dynamic_table_size | 1 | +| taint.cpp:736:7:736:13 | realloc | (nghttp2_option *,size_t) | | nghttp2_option_set_max_outbound_ack | 1 | +| taint.cpp:736:7:736:13 | realloc | (nghttp2_option *,size_t) | | nghttp2_option_set_max_send_header_block_length | 1 | +| taint.cpp:736:7:736:13 | realloc | (nghttp2_option *,size_t) | | nghttp2_option_set_max_settings | 1 | +| taint.cpp:736:7:736:13 | realloc | (nghttp2_session *,size_t) | | nghttp2_session_consume_connection | 1 | +| taint.cpp:736:7:736:13 | realloc | (nghttp2_session *,size_t) | | nghttp2_session_update_recv_connection_window_size | 1 | +| taint.cpp:736:7:736:13 | realloc | (nghttp2_stream *,size_t) | | nghttp2_http_on_data_chunk | 1 | +| taint.cpp:736:7:736:13 | realloc | (uint8_t *,size_t) | | nghttp2_downcase | 1 | | taint.cpp:736:7:736:13 | realloc | (uint8_t *,size_t) | | ossl_fnv1a_hash | 1 | | taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | JimDefaultAllocator | 0 | | taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | JimDefaultAllocator | 1 | +| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | uv__random_devurandom | 0 | +| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | uv__random_devurandom | 1 | +| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | uv__random_getrandom | 0 | +| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | uv__random_getrandom | 1 | +| taint.cpp:758:5:758:11 | sprintf | (CURLSH *,CURLSHoption,...) | | curl_share_setopt | 2 | | taint.cpp:758:5:758:11 | sprintf | (Jim_Interp *,const char *,...) | | Jim_SetResultFormatted | 1 | | taint.cpp:758:5:758:11 | sprintf | (Jim_Interp *,const char *,...) | | Jim_SetResultFormatted | 2 | +| taint.cpp:758:5:758:11 | sprintf | (curl_httppost **,curl_httppost **,...) | | curl_formadd | 2 | | taint.cpp:760:6:760:23 | call_sprintf_twice | (ARGS *,char *) | | chopup_args | 1 | | taint.cpp:760:6:760:23 | call_sprintf_twice | (BIO *,char *) | | BIO_set_callback_arg | 1 | | taint.cpp:760:6:760:23 | call_sprintf_twice | (SRP_VBASE *,char *) | | SRP_VBASE_get1_by_user | 1 | @@ -10340,6 +12190,7 @@ signatureMatches | taint.cpp:760:6:760:23 | call_sprintf_twice | (SSL_CTX *,char *) | | SSL_CTX_set_srp_username | 1 | | taint.cpp:760:6:760:23 | call_sprintf_twice | (const char *,char *) | | sha1sum_file | 1 | | taint.cpp:760:6:760:23 | call_sprintf_twice | (const char *,char *) | | sha3sum_file | 1 | +| taint.cpp:760:6:760:23 | call_sprintf_twice | (curl_slist *,char *) | | Curl_slist_append_nodup | 1 | | taint.cpp:760:6:760:23 | call_sprintf_twice | (unsigned long,char *) | | ERR_error_string | 1 | | taint.cpp:782:7:782:11 | fopen | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 | | taint.cpp:782:7:782:11 | fopen | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 | @@ -10350,6 +12201,9 @@ signatureMatches | taint.cpp:782:7:782:11 | fopen | (BIGNUM **,const char *) | | BN_hex2bn | 1 | | taint.cpp:782:7:782:11 | fopen | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | | taint.cpp:782:7:782:11 | fopen | (CONF *,const char *) | | _CONF_new_section | 1 | +| taint.cpp:782:7:782:11 | fopen | (CURLU *,const char *) | | Curl_url_set_authority | 1 | +| taint.cpp:782:7:782:11 | fopen | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | +| taint.cpp:782:7:782:11 | fopen | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | | taint.cpp:782:7:782:11 | fopen | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | | taint.cpp:782:7:782:11 | fopen | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | | taint.cpp:782:7:782:11 | fopen | (DSO *,const char *) | | DSO_convert_filename | 1 | @@ -10360,10 +12214,14 @@ signatureMatches | taint.cpp:782:7:782:11 | fopen | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | | taint.cpp:782:7:782:11 | fopen | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | | taint.cpp:782:7:782:11 | fopen | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | +| taint.cpp:782:7:782:11 | fopen | (GlobalConfig *,const char *) | | setvariable | 1 | | taint.cpp:782:7:782:11 | fopen | (Jim_Interp *,const char *) | | Jim_Eval | 1 | | taint.cpp:782:7:782:11 | fopen | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | | taint.cpp:782:7:782:11 | fopen | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | | taint.cpp:782:7:782:11 | fopen | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | +| taint.cpp:782:7:782:11 | fopen | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | +| taint.cpp:782:7:782:11 | fopen | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | +| taint.cpp:782:7:782:11 | fopen | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | | taint.cpp:782:7:782:11 | fopen | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | | taint.cpp:782:7:782:11 | fopen | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | | taint.cpp:782:7:782:11 | fopen | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | @@ -10420,15 +12278,25 @@ signatureMatches | taint.cpp:782:7:782:11 | fopen | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | | taint.cpp:782:7:782:11 | fopen | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | | taint.cpp:782:7:782:11 | fopen | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | +| taint.cpp:782:7:782:11 | fopen | (char **,const char *) | | Curl_setstropt | 1 | | taint.cpp:782:7:782:11 | fopen | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | +| taint.cpp:782:7:782:11 | fopen | (const char **,const char *) | | uv__utf8_decode1 | 1 | | taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | Configcmp | 0 | | taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | Configcmp | 1 | +| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | Curl_timestrcmp | 0 | +| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | Curl_timestrcmp | 1 | | taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | DES_crypt | 0 | | taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | DES_crypt | 1 | | taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | OPENSSL_strcasecmp | 0 | | taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | +| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | c_strcasecmp | 0 | +| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | c_strcasecmp | 1 | | taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | get_passwd | 0 | | taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | get_passwd | 1 | +| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | gzopen | 0 | +| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | gzopen | 1 | +| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | gzopen64 | 0 | +| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | gzopen64 | 1 | | taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | openssl_fopen | 0 | | taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | openssl_fopen | 1 | | taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | ossl_pem_check_suffix | 0 | @@ -10439,9 +12307,25 @@ signatureMatches | taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | sqlite3_strglob | 1 | | taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | sqlite3_stricmp | 0 | | taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | sqlite3_stricmp | 1 | +| taint.cpp:782:7:782:11 | fopen | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | +| taint.cpp:782:7:782:11 | fopen | (curl_off_t *,const char *) | | str2offset | 1 | +| taint.cpp:782:7:782:11 | fopen | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | +| taint.cpp:782:7:782:11 | fopen | (curl_slist **,const char *) | | add2list | 1 | +| taint.cpp:782:7:782:11 | fopen | (curl_slist *,const char *) | | curl_slist_append | 1 | +| taint.cpp:782:7:782:11 | fopen | (dynbuf *,const char *) | | Curl_dyn_add | 1 | +| taint.cpp:782:7:782:11 | fopen | (dynbuf *,const char *) | | curlx_dyn_add | 1 | +| taint.cpp:782:7:782:11 | fopen | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | +| taint.cpp:782:7:782:11 | fopen | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | +| taint.cpp:782:7:782:11 | fopen | (gzFile,const char *) | | gzputs | 1 | | taint.cpp:782:7:782:11 | fopen | (int,const char *) | | BIO_meth_new | 1 | +| taint.cpp:782:7:782:11 | fopen | (int,const char *) | | gzdopen | 1 | | taint.cpp:782:7:782:11 | fopen | (lemon *,const char *) | | file_makename | 1 | +| taint.cpp:782:7:782:11 | fopen | (long *,const char *) | | secs2ms | 1 | +| taint.cpp:782:7:782:11 | fopen | (long *,const char *) | | str2num | 1 | +| taint.cpp:782:7:782:11 | fopen | (long *,const char *) | | str2unum | 1 | | taint.cpp:782:7:782:11 | fopen | (size_t *,const char *) | | next_protos_parse | 1 | +| taint.cpp:782:7:782:11 | fopen | (slist_wc **,const char *) | | easysrc_add | 1 | +| taint.cpp:782:7:782:11 | fopen | (slist_wc *,const char *) | | slist_wc_append | 1 | | taint.cpp:782:7:782:11 | fopen | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | | taint.cpp:782:7:782:11 | fopen | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | | taint.cpp:782:7:782:11 | fopen | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | @@ -10452,17 +12336,22 @@ signatureMatches | taint.cpp:782:7:782:11 | fopen | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | | taint.cpp:782:7:782:11 | fopen | (unsigned long *,const char *) | | set_cert_ex | 1 | | taint.cpp:782:7:782:11 | fopen | (unsigned long *,const char *) | | set_name_ex | 1 | +| taint.cpp:782:7:782:11 | fopen | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | | taint.cpp:783:5:783:11 | fopen_s | (CTLOG **,const char *,const char *) | | CTLOG_new_from_base64 | 1 | | taint.cpp:783:5:783:11 | fopen_s | (CTLOG **,const char *,const char *) | | CTLOG_new_from_base64 | 2 | +| taint.cpp:783:5:783:11 | fopen_s | (CURL *,char **,const char *) | | add_file_name_to_url | 2 | | taint.cpp:783:5:783:11 | fopen_s | (ENGINE *,const char *,const char *) | | make_engine_uri | 1 | | taint.cpp:783:5:783:11 | fopen_s | (ENGINE *,const char *,const char *) | | make_engine_uri | 2 | | taint.cpp:783:5:783:11 | fopen_s | (EVP_PKEY_CTX *,const char *,const char *) | | EVP_PKEY_CTX_ctrl_str | 1 | | taint.cpp:783:5:783:11 | fopen_s | (EVP_PKEY_CTX *,const char *,const char *) | | EVP_PKEY_CTX_ctrl_str | 2 | | taint.cpp:783:5:783:11 | fopen_s | (FFC_PARAMS *,const char *,const char *) | | ossl_ffc_set_digest | 1 | | taint.cpp:783:5:783:11 | fopen_s | (FFC_PARAMS *,const char *,const char *) | | ossl_ffc_set_digest | 2 | +| taint.cpp:783:5:783:11 | fopen_s | (GlobalConfig *,char **,const char *) | | get_url_file_name | 2 | | taint.cpp:783:5:783:11 | fopen_s | (Jim_Interp *,Jim_Obj *,const char *) | | Jim_CompareStringImmediate | 2 | | taint.cpp:783:5:783:11 | fopen_s | (Jim_Interp *,const char *,const char *) | | Jim_SetVariableStrWithStr | 1 | | taint.cpp:783:5:783:11 | fopen_s | (Jim_Interp *,const char *,const char *) | | Jim_SetVariableStrWithStr | 2 | +| taint.cpp:783:5:783:11 | fopen_s | (LIBSSH2_SESSION *,int,const char *) | | _libssh2_error | 2 | +| taint.cpp:783:5:783:11 | fopen_s | (LIBSSH2_SESSION *,int,const char *) | | libssh2_session_set_last_error | 2 | | taint.cpp:783:5:783:11 | fopen_s | (OSSL_CMP_MSG *,OSSL_LIB_CTX *,const char *) | | ossl_cmp_msg_set0_libctx | 2 | | taint.cpp:783:5:783:11 | fopen_s | (OSSL_DECODER *,void *,const char *) | | ossl_decoder_instance_new_forprov | 2 | | taint.cpp:783:5:783:11 | fopen_s | (OSSL_LIB_CTX *,EVP_PKEY *,const char *) | | EVP_PKEY_CTX_new_from_pkey | 2 | @@ -10500,8 +12389,13 @@ signatureMatches | taint.cpp:783:5:783:11 | fopen_s | (const QUIC_TSERVER_ARGS *,const char *,const char *) | | ossl_quic_tserver_new | 1 | | taint.cpp:783:5:783:11 | fopen_s | (const QUIC_TSERVER_ARGS *,const char *,const char *) | | ossl_quic_tserver_new | 2 | | taint.cpp:783:5:783:11 | fopen_s | (const X509_ALGOR *,OSSL_LIB_CTX *,const char *) | | ossl_ec_key_param_from_x509_algor | 2 | +| taint.cpp:783:5:783:11 | fopen_s | (const char **,char **,const char *) | | Curl_get_pathname | 2 | | taint.cpp:783:5:783:11 | fopen_s | (const char *,OSSL_LIB_CTX *,const char *) | | OSSL_CMP_MSG_read | 2 | | taint.cpp:783:5:783:11 | fopen_s | (const char *,sqlite3_filename,const char *) | | sqlite3_uri_parameter | 2 | +| taint.cpp:783:5:783:11 | fopen_s | (dynhds *,const char *,const char *) | | Curl_dynhds_cadd | 1 | +| taint.cpp:783:5:783:11 | fopen_s | (dynhds *,const char *,const char *) | | Curl_dynhds_cadd | 2 | +| taint.cpp:783:5:783:11 | fopen_s | (gz_statep,int,const char *) | | gz_error | 2 | +| taint.cpp:783:5:783:11 | fopen_s | (http_resp **,int,const char *) | | Curl_http_resp_make | 2 | | taint.cpp:783:5:783:11 | fopen_s | (int,OSSL_LIB_CTX *,const char *) | | PKCS12_init_ex | 2 | | taint.cpp:783:5:783:11 | fopen_s | (int,int,const char *) | | OSSL_CMP_STATUSINFO_new | 2 | | taint.cpp:783:5:783:11 | fopen_s | (lemon *,const char *,const char *) | | file_open | 1 | @@ -10514,6 +12408,7 @@ signatureMatches | taint.cpp:785:6:785:15 | fopen_test | (char *) | | next_item | 0 | | taint.cpp:785:6:785:15 | fopen_test | (char *) | CStringT | CStringT | 0 | | taint.cpp:801:6:801:26 | SysAllocStringByteLen | (ASN1_STRING *,unsigned int) | | ossl_asn1_string_set_bits_left | 1 | +| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (Curl_easy *,unsigned int) | | Curl_ssl_supports | 1 | | taint.cpp:801:6:801:26 | SysAllocStringByteLen | (EC_KEY *,unsigned int) | | EC_KEY_set_enc_flags | 1 | | taint.cpp:801:6:801:26 | SysAllocStringByteLen | (EVP_ENCODE_CTX *,unsigned int) | | evp_encode_ctx_set_flags | 1 | | taint.cpp:801:6:801:26 | SysAllocStringByteLen | (FFC_PARAMS *,unsigned int) | | ossl_ffc_params_set_flags | 1 | @@ -10529,7 +12424,13 @@ signatureMatches | taint.cpp:801:6:801:26 | SysAllocStringByteLen | (X509_STORE_CTX *,unsigned int) | | X509_STORE_CTX_set_current_reasons | 1 | | taint.cpp:801:6:801:26 | SysAllocStringByteLen | (X509_VERIFY_PARAM *,unsigned int) | | X509_VERIFY_PARAM_set_hostflags | 1 | | taint.cpp:801:6:801:26 | SysAllocStringByteLen | (char *,unsigned int) | | utf8_fromunicode | 1 | +| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (char *,unsigned int) | | uv_buf_init | 1 | +| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (const uv__io_t *,unsigned int) | | uv__io_active | 1 | +| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (const uv_buf_t[],unsigned int) | | uv__count_bufs | 1 | +| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (gzFile,unsigned int) | | gzbuffer | 1 | +| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (z_streamp,unsigned int) | | inflate_fast | 1 | | taint.cpp:802:6:802:22 | SysAllocStringLen | (ASN1_STRING *,unsigned int) | | ossl_asn1_string_set_bits_left | 1 | +| taint.cpp:802:6:802:22 | SysAllocStringLen | (Curl_easy *,unsigned int) | | Curl_ssl_supports | 1 | | taint.cpp:802:6:802:22 | SysAllocStringLen | (EC_KEY *,unsigned int) | | EC_KEY_set_enc_flags | 1 | | taint.cpp:802:6:802:22 | SysAllocStringLen | (EVP_ENCODE_CTX *,unsigned int) | | evp_encode_ctx_set_flags | 1 | | taint.cpp:802:6:802:22 | SysAllocStringLen | (FFC_PARAMS *,unsigned int) | | ossl_ffc_params_set_flags | 1 | @@ -10545,6 +12446,11 @@ signatureMatches | taint.cpp:802:6:802:22 | SysAllocStringLen | (X509_STORE_CTX *,unsigned int) | | X509_STORE_CTX_set_current_reasons | 1 | | taint.cpp:802:6:802:22 | SysAllocStringLen | (X509_VERIFY_PARAM *,unsigned int) | | X509_VERIFY_PARAM_set_hostflags | 1 | | taint.cpp:802:6:802:22 | SysAllocStringLen | (char *,unsigned int) | | utf8_fromunicode | 1 | +| taint.cpp:802:6:802:22 | SysAllocStringLen | (char *,unsigned int) | | uv_buf_init | 1 | +| taint.cpp:802:6:802:22 | SysAllocStringLen | (const uv__io_t *,unsigned int) | | uv__io_active | 1 | +| taint.cpp:802:6:802:22 | SysAllocStringLen | (const uv_buf_t[],unsigned int) | | uv__count_bufs | 1 | +| taint.cpp:802:6:802:22 | SysAllocStringLen | (gzFile,unsigned int) | | gzbuffer | 1 | +| taint.cpp:802:6:802:22 | SysAllocStringLen | (z_streamp,unsigned int) | | inflate_fast | 1 | | taint.cpp:815:7:815:12 | strchr | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | | taint.cpp:815:7:815:12 | strchr | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | | taint.cpp:815:7:815:12 | strchr | (BIGNUM *,int) | | BN_clear_bit | 1 | @@ -10563,6 +12469,8 @@ signatureMatches | taint.cpp:815:7:815:12 | strchr | (BIO *,int) | | TXT_DB_read | 1 | | taint.cpp:815:7:815:12 | strchr | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | taint.cpp:815:7:815:12 | strchr | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| taint.cpp:815:7:815:12 | strchr | (CURL *,int) | | curl_easy_pause | 1 | +| taint.cpp:815:7:815:12 | strchr | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | taint.cpp:815:7:815:12 | strchr | (DH *,int) | | DH_clear_flags | 1 | | taint.cpp:815:7:815:12 | strchr | (DH *,int) | | DH_set_flags | 1 | | taint.cpp:815:7:815:12 | strchr | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -10606,6 +12514,17 @@ signatureMatches | taint.cpp:815:7:815:12 | strchr | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | taint.cpp:815:7:815:12 | strchr | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | taint.cpp:815:7:815:12 | strchr | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | taint.cpp:815:7:815:12 | strchr | (LPCOLESTR,int) | CComBSTR | Append | 1 | | taint.cpp:815:7:815:12 | strchr | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | taint.cpp:815:7:815:12 | strchr | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -10723,8 +12642,10 @@ signatureMatches | taint.cpp:815:7:815:12 | strchr | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | taint.cpp:815:7:815:12 | strchr | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | taint.cpp:815:7:815:12 | strchr | (acttab *,int) | | acttab_insert | 1 | +| taint.cpp:815:7:815:12 | strchr | (char *,int) | | Curl_str2addr | 1 | | taint.cpp:815:7:815:12 | strchr | (char *,int) | | PEM_proc_type | 1 | | taint.cpp:815:7:815:12 | strchr | (char,int) | CStringT | CStringT | 1 | +| taint.cpp:815:7:815:12 | strchr | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | taint.cpp:815:7:815:12 | strchr | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | taint.cpp:815:7:815:12 | strchr | (const BIGNUM *,int) | | BN_get_flags | 1 | | taint.cpp:815:7:815:12 | strchr | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -10797,12 +12718,22 @@ signatureMatches | taint.cpp:815:7:815:12 | strchr | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | taint.cpp:815:7:815:12 | strchr | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | taint.cpp:815:7:815:12 | strchr | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| taint.cpp:815:7:815:12 | strchr | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| taint.cpp:815:7:815:12 | strchr | (gzFile,int) | | gzflush | 1 | +| taint.cpp:815:7:815:12 | strchr | (gzFile,int) | | gzputc | 1 | | taint.cpp:815:7:815:12 | strchr | (int *,int) | | X509_PURPOSE_set | 1 | | taint.cpp:815:7:815:12 | strchr | (int *,int) | | X509_TRUST_set | 1 | | taint.cpp:815:7:815:12 | strchr | (int,int) | | BN_security_bits | 1 | | taint.cpp:815:7:815:12 | strchr | (int,int) | | EVP_MD_meth_new | 1 | | taint.cpp:815:7:815:12 | strchr | (int,int) | | EVP_PKEY_meth_new | 1 | | taint.cpp:815:7:815:12 | strchr | (int,int) | | acttab_alloc | 1 | +| taint.cpp:815:7:815:12 | strchr | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| taint.cpp:815:7:815:12 | strchr | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| taint.cpp:815:7:815:12 | strchr | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| taint.cpp:815:7:815:12 | strchr | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| taint.cpp:815:7:815:12 | strchr | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| taint.cpp:815:7:815:12 | strchr | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| taint.cpp:815:7:815:12 | strchr | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | taint.cpp:815:7:815:12 | strchr | (rule *,int) | | Configlist_add | 1 | | taint.cpp:815:7:815:12 | strchr | (rule *,int) | | Configlist_addbasis | 1 | | taint.cpp:815:7:815:12 | strchr | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -10837,6 +12768,7 @@ signatureMatches | taint.cpp:815:7:815:12 | strchr | (unsigned char *,int) | | RAND_priv_bytes | 1 | | taint.cpp:815:7:815:12 | strchr | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | taint.cpp:815:7:815:12 | strchr | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| taint.cpp:815:7:815:12 | strchr | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | taint.cpp:815:7:815:12 | strchr | (void *,int) | | DSO_dsobyaddr | 1 | | taint.cpp:815:7:815:12 | strchr | (void *,int) | | sqlite3_realloc | 1 | | taint.cpp:815:7:815:12 | strchr | (wchar_t,int) | CStringT | CStringT | 1 | @@ -10853,6 +12785,9 @@ signatureMatches | taint.cpp:822:6:822:19 | take_const_ptr | (BIGNUM **,const char *) | | BN_hex2bn | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (CONF *,const char *) | | _CONF_new_section | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (CURLU *,const char *) | | Curl_url_set_authority | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (DSO *,const char *) | | DSO_convert_filename | 1 | @@ -10863,10 +12798,14 @@ signatureMatches | taint.cpp:822:6:822:19 | take_const_ptr | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (GlobalConfig *,const char *) | | setvariable | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (Jim_Interp *,const char *) | | Jim_Eval | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | @@ -10923,15 +12862,25 @@ signatureMatches | taint.cpp:822:6:822:19 | take_const_ptr | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (char **,const char *) | | Curl_setstropt | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (const char **,const char *) | | uv__utf8_decode1 | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | Configcmp | 0 | | taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | Configcmp | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | Curl_timestrcmp | 0 | +| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | Curl_timestrcmp | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | DES_crypt | 0 | | taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | DES_crypt | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | OPENSSL_strcasecmp | 0 | | taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | c_strcasecmp | 0 | +| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | c_strcasecmp | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | get_passwd | 0 | | taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | get_passwd | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | gzopen | 0 | +| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | gzopen | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | gzopen64 | 0 | +| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | gzopen64 | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | openssl_fopen | 0 | | taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | openssl_fopen | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | ossl_pem_check_suffix | 0 | @@ -10942,9 +12891,25 @@ signatureMatches | taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | sqlite3_strglob | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | sqlite3_stricmp | 0 | | taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | sqlite3_stricmp | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (curl_off_t *,const char *) | | str2offset | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (curl_slist **,const char *) | | add2list | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (curl_slist *,const char *) | | curl_slist_append | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (dynbuf *,const char *) | | Curl_dyn_add | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (dynbuf *,const char *) | | curlx_dyn_add | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (gzFile,const char *) | | gzputs | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (int,const char *) | | BIO_meth_new | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (int,const char *) | | gzdopen | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (lemon *,const char *) | | file_makename | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (long *,const char *) | | secs2ms | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (long *,const char *) | | str2num | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (long *,const char *) | | str2unum | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (size_t *,const char *) | | next_protos_parse | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (slist_wc **,const char *) | | easysrc_add | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (slist_wc *,const char *) | | slist_wc_append | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | @@ -10955,6 +12920,7 @@ signatureMatches | taint.cpp:822:6:822:19 | take_const_ptr | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (unsigned long *,const char *) | | set_cert_ex | 1 | | taint.cpp:822:6:822:19 | take_const_ptr | (unsigned long *,const char *) | | set_name_ex | 1 | +| taint.cpp:822:6:822:19 | take_const_ptr | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | | vector.cpp:13:6:13:9 | sink | (int) | | ASN1_STRING_type_new | 0 | | vector.cpp:13:6:13:9 | sink | (int) | | ASN1_tag2bit | 0 | | vector.cpp:13:6:13:9 | sink | (int) | | ASN1_tag2str | 0 | @@ -10973,6 +12939,9 @@ signatureMatches | vector.cpp:13:6:13:9 | sink | (int) | | X509_TRUST_get0 | 0 | | vector.cpp:13:6:13:9 | sink | (int) | | X509_TRUST_get_by_id | 0 | | vector.cpp:13:6:13:9 | sink | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| vector.cpp:13:6:13:9 | sink | (int) | | c_tolower | 0 | +| vector.cpp:13:6:13:9 | sink | (int) | | c_toupper | 0 | +| vector.cpp:13:6:13:9 | sink | (int) | | curlx_sitouz | 0 | | vector.cpp:13:6:13:9 | sink | (int) | | evp_pkey_type2name | 0 | | vector.cpp:13:6:13:9 | sink | (int) | | ossl_cmp_bodytype_to_string | 0 | | vector.cpp:13:6:13:9 | sink | (int) | | ossl_tolower | 0 | @@ -10980,6 +12949,12 @@ signatureMatches | vector.cpp:13:6:13:9 | sink | (int) | | sqlite3_compileoption_get | 0 | | vector.cpp:13:6:13:9 | sink | (int) | | sqlite3_errstr | 0 | | vector.cpp:13:6:13:9 | sink | (int) | | tls13_alert_code | 0 | +| vector.cpp:13:6:13:9 | sink | (int) | | uv__accept | 0 | +| vector.cpp:13:6:13:9 | sink | (int) | | uv_err_name | 0 | +| vector.cpp:13:6:13:9 | sink | (int) | | uv_get_osfhandle | 0 | +| vector.cpp:13:6:13:9 | sink | (int) | | uv_strerror | 0 | +| vector.cpp:13:6:13:9 | sink | (int) | | uv_translate_sys_error | 0 | +| vector.cpp:13:6:13:9 | sink | (int) | | zError | 0 | | vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | ASN1_STRING_type_new | 0 | | vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | ASN1_tag2bit | 0 | | vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | ASN1_tag2str | 0 | @@ -10998,6 +12973,9 @@ signatureMatches | vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | X509_TRUST_get0 | 0 | | vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | X509_TRUST_get_by_id | 0 | | vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | c_tolower | 0 | +| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | c_toupper | 0 | +| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | curlx_sitouz | 0 | | vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | evp_pkey_type2name | 0 | | vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | ossl_cmp_bodytype_to_string | 0 | | vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | ossl_tolower | 0 | @@ -11005,6 +12983,12 @@ signatureMatches | vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | sqlite3_compileoption_get | 0 | | vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | sqlite3_errstr | 0 | | vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | tls13_alert_code | 0 | +| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | uv__accept | 0 | +| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | uv_err_name | 0 | +| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | uv_get_osfhandle | 0 | +| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | uv_strerror | 0 | +| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | uv_translate_sys_error | 0 | +| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | zError | 0 | | vector.cpp:37:6:37:23 | test_element_taint | (int) | | ASN1_STRING_type_new | 0 | | vector.cpp:37:6:37:23 | test_element_taint | (int) | | ASN1_tag2bit | 0 | | vector.cpp:37:6:37:23 | test_element_taint | (int) | | ASN1_tag2str | 0 | @@ -11023,6 +13007,9 @@ signatureMatches | vector.cpp:37:6:37:23 | test_element_taint | (int) | | X509_TRUST_get0 | 0 | | vector.cpp:37:6:37:23 | test_element_taint | (int) | | X509_TRUST_get_by_id | 0 | | vector.cpp:37:6:37:23 | test_element_taint | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| vector.cpp:37:6:37:23 | test_element_taint | (int) | | c_tolower | 0 | +| vector.cpp:37:6:37:23 | test_element_taint | (int) | | c_toupper | 0 | +| vector.cpp:37:6:37:23 | test_element_taint | (int) | | curlx_sitouz | 0 | | vector.cpp:37:6:37:23 | test_element_taint | (int) | | evp_pkey_type2name | 0 | | vector.cpp:37:6:37:23 | test_element_taint | (int) | | ossl_cmp_bodytype_to_string | 0 | | vector.cpp:37:6:37:23 | test_element_taint | (int) | | ossl_tolower | 0 | @@ -11030,6 +13017,12 @@ signatureMatches | vector.cpp:37:6:37:23 | test_element_taint | (int) | | sqlite3_compileoption_get | 0 | | vector.cpp:37:6:37:23 | test_element_taint | (int) | | sqlite3_errstr | 0 | | vector.cpp:37:6:37:23 | test_element_taint | (int) | | tls13_alert_code | 0 | +| vector.cpp:37:6:37:23 | test_element_taint | (int) | | uv__accept | 0 | +| vector.cpp:37:6:37:23 | test_element_taint | (int) | | uv_err_name | 0 | +| vector.cpp:37:6:37:23 | test_element_taint | (int) | | uv_get_osfhandle | 0 | +| vector.cpp:37:6:37:23 | test_element_taint | (int) | | uv_strerror | 0 | +| vector.cpp:37:6:37:23 | test_element_taint | (int) | | uv_translate_sys_error | 0 | +| vector.cpp:37:6:37:23 | test_element_taint | (int) | | zError | 0 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (BIGNUM *,int) | | BN_clear_bit | 1 | @@ -11048,6 +13041,8 @@ signatureMatches | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (BIO *,int) | | TXT_DB_read | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (CURL *,int) | | curl_easy_pause | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (DH *,int) | | DH_clear_flags | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (DH *,int) | | DH_set_flags | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | @@ -11091,6 +13086,17 @@ signatureMatches | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LPCOLESTR,int) | CComBSTR | Append | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | @@ -11208,8 +13214,10 @@ signatureMatches | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (acttab *,int) | | acttab_insert | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (char *,int) | | Curl_str2addr | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (char *,int) | | PEM_proc_type | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (char,int) | CStringT | CStringT | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (connectdata *,int) | | Curl_conn_is_ssl | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const BIGNUM *,int) | | BN_get_flags | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const BIGNUM *,int) | | BN_is_bit_set | 1 | @@ -11276,12 +13284,22 @@ signatureMatches | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (gzFile,int) | | gzflush | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (gzFile,int) | | gzputc | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int *,int) | | X509_PURPOSE_set | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int *,int) | | X509_TRUST_set | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int,int) | | BN_security_bits | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int,int) | | EVP_MD_meth_new | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int,int) | | EVP_PKEY_meth_new | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int,int) | | acttab_alloc | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (rule *,int) | | Configlist_add | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (rule *,int) | | Configlist_addbasis | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | @@ -11316,6 +13334,7 @@ signatureMatches | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (unsigned char *,int) | | RAND_priv_bytes | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (unsigned short,int) | | dtls1_get_queue_priority | 1 | +| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (void *,int) | | DSO_dsobyaddr | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (void *,int) | | sqlite3_realloc | 1 | | vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (wchar_t,int) | CStringT | CStringT | 1 | @@ -11337,6 +13356,9 @@ signatureMatches | vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | X509_TRUST_get0 | 0 | | vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | X509_TRUST_get_by_id | 0 | | vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | c_tolower | 0 | +| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | c_toupper | 0 | +| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | curlx_sitouz | 0 | | vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | evp_pkey_type2name | 0 | | vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | ossl_cmp_bodytype_to_string | 0 | | vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | ossl_tolower | 0 | @@ -11344,6 +13366,12 @@ signatureMatches | vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | sqlite3_compileoption_get | 0 | | vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | sqlite3_errstr | 0 | | vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | tls13_alert_code | 0 | +| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | uv__accept | 0 | +| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | uv_err_name | 0 | +| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | uv_get_osfhandle | 0 | +| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | uv_strerror | 0 | +| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | uv_translate_sys_error | 0 | +| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | zError | 0 | | vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | SRP_VBASE_new | 0 | | vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | defossilize | 0 | | vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | make_uppercase | 0 | @@ -11367,9 +13395,25 @@ signatureMatches | vector.cpp:454:7:454:12 | memcpy | (CMAC_CTX *,const void *,size_t) | | CMAC_Update | 1 | | vector.cpp:454:7:454:12 | memcpy | (CMAC_CTX *,const void *,size_t) | | CMAC_Update | 2 | | vector.cpp:454:7:454:12 | memcpy | (CMS_RecipientInfo *,const unsigned char *,size_t) | | CMS_RecipientInfo_kekri_id_cmp | 2 | +| vector.cpp:454:7:454:12 | memcpy | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_alnum | 2 | +| vector.cpp:454:7:454:12 | memcpy | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_bytes | 2 | +| vector.cpp:454:7:454:12 | memcpy | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_hex | 2 | | vector.cpp:454:7:454:12 | memcpy | (DH *,const unsigned char *,size_t) | | ossl_dh_buf2key | 2 | | vector.cpp:454:7:454:12 | memcpy | (EC_GROUP *,const unsigned char *,size_t) | | EC_GROUP_set_seed | 2 | | vector.cpp:454:7:454:12 | memcpy | (EC_KEY *,const unsigned char *,size_t) | | ossl_ec_key_simple_oct2priv | 2 | +| vector.cpp:454:7:454:12 | memcpy | (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 1 | +| vector.cpp:454:7:454:12 | memcpy | (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 2 | +| vector.cpp:454:7:454:12 | memcpy | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha1_init | 2 | +| vector.cpp:454:7:454:12 | memcpy | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha256_init | 2 | +| vector.cpp:454:7:454:12 | memcpy | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha512_init | 2 | +| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 1 | +| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 2 | +| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 1 | +| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 2 | +| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 1 | +| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 2 | +| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 1 | +| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 2 | | vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX *,const unsigned char *,size_t) | | EVP_DigestVerifyFinal | 2 | | vector.cpp:454:7:454:12 | memcpy | (EVP_PKEY *,char *,size_t) | | EVP_PKEY_get_default_digest_name | 2 | | vector.cpp:454:7:454:12 | memcpy | (EVP_RAND_CTX *,unsigned char *,size_t) | | EVP_RAND_nonce | 2 | @@ -11382,6 +13426,9 @@ signatureMatches | vector.cpp:454:7:454:12 | memcpy | (KECCAK1600_CTX *,const void *,size_t) | | ossl_sha3_update | 2 | | vector.cpp:454:7:454:12 | memcpy | (KECCAK1600_CTX *,unsigned char *,size_t) | | ossl_sha3_squeeze | 2 | | vector.cpp:454:7:454:12 | memcpy | (KECCAK1600_CTX *,unsigned char,size_t) | | ossl_sha3_init | 2 | +| vector.cpp:454:7:454:12 | memcpy | (LIBSSH2_CHANNEL *,const char *,size_t) | | libssh2_channel_signal_ex | 2 | +| vector.cpp:454:7:454:12 | memcpy | (LIBSSH2_SFTP_HANDLE *,char *,size_t) | | libssh2_sftp_read | 2 | +| vector.cpp:454:7:454:12 | memcpy | (LIBSSH2_SFTP_HANDLE *,const char *,size_t) | | libssh2_sftp_write | 2 | | vector.cpp:454:7:454:12 | memcpy | (MD4_CTX *,const void *,size_t) | | MD4_Update | 1 | | vector.cpp:454:7:454:12 | memcpy | (MD4_CTX *,const void *,size_t) | | MD4_Update | 2 | | vector.cpp:454:7:454:12 | memcpy | (MD4_CTX *,const void *,size_t) | | md4_block_data_order | 1 | @@ -11393,6 +13440,7 @@ signatureMatches | vector.cpp:454:7:454:12 | memcpy | (MDC2_CTX *,const unsigned char *,size_t) | | MDC2_Update | 2 | | vector.cpp:454:7:454:12 | memcpy | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_pk_decode | 2 | | vector.cpp:454:7:454:12 | memcpy | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_sk_decode | 2 | +| vector.cpp:454:7:454:12 | memcpy | (MemoryManager *,const uint8_t *,size_t) | | CreatePreparedDictionary | 2 | | vector.cpp:454:7:454:12 | memcpy | (OCB128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_ocb128_aad | 2 | | vector.cpp:454:7:454:12 | memcpy | (OCB128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_ocb128_tag | 2 | | vector.cpp:454:7:454:12 | memcpy | (OSSL_HPKE_CTX *,const unsigned char *,size_t) | | OSSL_HPKE_CTX_set1_ikme | 2 | @@ -11480,8 +13528,16 @@ signatureMatches | vector.cpp:454:7:454:12 | memcpy | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_email | 2 | | vector.cpp:454:7:454:12 | memcpy | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_host | 2 | | vector.cpp:454:7:454:12 | memcpy | (X509_VERIFY_PARAM *,const unsigned char *,size_t) | | X509_VERIFY_PARAM_set1_ip | 2 | +| vector.cpp:454:7:454:12 | memcpy | (bufc_pool *,size_t,size_t) | | Curl_bufcp_init | 2 | +| vector.cpp:454:7:454:12 | memcpy | (bufq *,size_t,size_t) | | Curl_bufq_init | 2 | +| vector.cpp:454:7:454:12 | memcpy | (bufref *,const void *,size_t) | | Curl_bufref_memdup | 1 | +| vector.cpp:454:7:454:12 | memcpy | (bufref *,const void *,size_t) | | Curl_bufref_memdup | 2 | +| vector.cpp:454:7:454:12 | memcpy | (char **,size_t *,size_t) | | Curl_str_number | 2 | +| vector.cpp:454:7:454:12 | memcpy | (char *,const char *,size_t) | | Curl_strntolower | 2 | +| vector.cpp:454:7:454:12 | memcpy | (char *,const char *,size_t) | | Curl_strntoupper | 2 | | vector.cpp:454:7:454:12 | memcpy | (char *,const char *,size_t) | | OPENSSL_strlcat | 2 | | vector.cpp:454:7:454:12 | memcpy | (char *,const char *,size_t) | | OPENSSL_strlcpy | 2 | +| vector.cpp:454:7:454:12 | memcpy | (char *,const char *,size_t) | | uv__strscpy | 2 | | vector.cpp:454:7:454:12 | memcpy | (const CTLOG_STORE *,const uint8_t *,size_t) | | CTLOG_STORE_get0_log_by_id | 2 | | vector.cpp:454:7:454:12 | memcpy | (const EC_KEY *,unsigned char *,size_t) | | ossl_ec_key_simple_priv2oct | 2 | | vector.cpp:454:7:454:12 | memcpy | (const EVP_MD *,const OSSL_ITEM *,size_t) | | ossl_digest_md_to_nid | 2 | @@ -11495,21 +13551,65 @@ signatureMatches | vector.cpp:454:7:454:12 | memcpy | (const SSL_SESSION *,unsigned char *,size_t) | | SSL_SESSION_get_master_key | 2 | | vector.cpp:454:7:454:12 | memcpy | (const char *,char **,size_t) | | OSSL_PARAM_construct_utf8_ptr | 2 | | vector.cpp:454:7:454:12 | memcpy | (const char *,char *,size_t) | | OSSL_PARAM_construct_utf8_string | 2 | +| vector.cpp:454:7:454:12 | memcpy | (const char *,char *,size_t) | | getpass_r | 2 | | vector.cpp:454:7:454:12 | memcpy | (const char *,const char *,size_t) | | OPENSSL_strncasecmp | 2 | +| vector.cpp:454:7:454:12 | memcpy | (const char *,const char *,size_t) | | c_strncasecmp | 2 | +| vector.cpp:454:7:454:12 | memcpy | (const char *,uint16_t *,size_t) | | uv_wtf8_to_utf16 | 2 | | vector.cpp:454:7:454:12 | memcpy | (const char *,unsigned char *,size_t) | | OSSL_PARAM_construct_BN | 2 | | vector.cpp:454:7:454:12 | memcpy | (const char *,void **,size_t) | | OSSL_PARAM_construct_octet_ptr | 2 | | vector.cpp:454:7:454:12 | memcpy | (const char *,void *,size_t) | | OSSL_PARAM_construct_octet_string | 2 | +| vector.cpp:454:7:454:12 | memcpy | (const char *,void *,size_t) | | uv__random_readpath | 2 | +| vector.cpp:454:7:454:12 | memcpy | (const sockaddr *,char *,size_t) | | uv_ip_name | 2 | +| vector.cpp:454:7:454:12 | memcpy | (const sockaddr_in6 *,char *,size_t) | | uv_ip6_name | 2 | +| vector.cpp:454:7:454:12 | memcpy | (const sockaddr_in *,char *,size_t) | | uv_ip4_name | 2 | | vector.cpp:454:7:454:12 | memcpy | (const unsigned char *,size_t,size_t) | | ossl_rand_pool_attach | 2 | +| vector.cpp:454:7:454:12 | memcpy | (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 1 | +| vector.cpp:454:7:454:12 | memcpy | (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 2 | +| vector.cpp:454:7:454:12 | memcpy | (curl_mimepart *,const char *,size_t) | | curl_mime_data | 2 | | vector.cpp:454:7:454:12 | memcpy | (curve448_scalar_t,const unsigned char *,size_t) | | ossl_curve448_scalar_decode_long | 2 | +| vector.cpp:454:7:454:12 | memcpy | (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 1 | +| vector.cpp:454:7:454:12 | memcpy | (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 2 | +| vector.cpp:454:7:454:12 | memcpy | (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 1 | +| vector.cpp:454:7:454:12 | memcpy | (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 2 | +| vector.cpp:454:7:454:12 | memcpy | (dynhds *,const char *,size_t) | | Curl_dynhds_get | 2 | +| vector.cpp:454:7:454:12 | memcpy | (dynhds *,const char *,size_t) | | Curl_dynhds_h1_add_line | 2 | +| vector.cpp:454:7:454:12 | memcpy | (dynhds *,size_t,size_t) | | Curl_dynhds_init | 2 | +| vector.cpp:454:7:454:12 | memcpy | (int *,const char *,size_t) | | Curl_http_decode_status | 2 | | vector.cpp:454:7:454:12 | memcpy | (int *,int *,size_t) | | EVP_PBE_get | 2 | +| vector.cpp:454:7:454:12 | memcpy | (int,char *,size_t) | | Curl_strerror | 2 | +| vector.cpp:454:7:454:12 | memcpy | (int,char *,size_t) | | uv_err_name_r | 2 | +| vector.cpp:454:7:454:12 | memcpy | (int,char *,size_t) | | uv_strerror_r | 2 | +| vector.cpp:454:7:454:12 | memcpy | (int,int,size_t) | | BrotliEncoderEstimatePeakMemoryUsage | 2 | +| vector.cpp:454:7:454:12 | memcpy | (nghttp2_buf *,uint8_t *,size_t) | | nghttp2_buf_wrap_init | 2 | +| vector.cpp:454:7:454:12 | memcpy | (nghttp2_extension *,nghttp2_origin_entry *,size_t) | | nghttp2_frame_origin_init | 2 | +| vector.cpp:454:7:454:12 | memcpy | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_extpri_parse_priority | 2 | +| vector.cpp:454:7:454:12 | memcpy | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_http_parse_priority | 2 | +| vector.cpp:454:7:454:12 | memcpy | (nghttp2_hd_deflater *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_bound | 2 | +| vector.cpp:454:7:454:12 | memcpy | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv | 2 | +| vector.cpp:454:7:454:12 | memcpy | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv2 | 2 | +| vector.cpp:454:7:454:12 | memcpy | (nghttp2_session *,int32_t,size_t) | | nghttp2_session_consume | 2 | +| vector.cpp:454:7:454:12 | memcpy | (nghttp2_session *,nghttp2_settings_entry *,size_t) | | nghttp2_session_update_local_settings | 2 | +| vector.cpp:454:7:454:12 | memcpy | (nghttp2_settings *,nghttp2_settings_entry *,size_t) | | nghttp2_frame_unpack_settings_payload | 2 | +| vector.cpp:454:7:454:12 | memcpy | (sfparse_parser *,const uint8_t *,size_t) | | sfparse_parser_init | 2 | | vector.cpp:454:7:454:12 | memcpy | (size_t,OSSL_QTX_IOVEC *,size_t) | | ossl_quic_sstream_adjust_iov | 2 | | vector.cpp:454:7:454:12 | memcpy | (stack_st_SCT **,const unsigned char **,size_t) | | o2i_SCT_LIST | 2 | +| vector.cpp:454:7:454:12 | memcpy | (ucs4_t *,const uint8_t *,size_t) | | u8_mbtouc_aux | 2 | +| vector.cpp:454:7:454:12 | memcpy | (uint8_t *,const nghttp2_settings_entry *,size_t) | | nghttp2_frame_pack_settings_payload | 2 | +| vector.cpp:454:7:454:12 | memcpy | (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 1 | +| vector.cpp:454:7:454:12 | memcpy | (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 2 | +| vector.cpp:454:7:454:12 | memcpy | (unsigned char **,const char *,size_t) | | _libssh2_store_str | 2 | +| vector.cpp:454:7:454:12 | memcpy | (unsigned char **,const unsigned char *,size_t) | | _libssh2_store_bignum2_bytes | 2 | | vector.cpp:454:7:454:12 | memcpy | (unsigned char *,const unsigned char *,size_t) | | BUF_reverse | 2 | | vector.cpp:454:7:454:12 | memcpy | (unsigned char *,int,unsigned long) | | UTF8_putc | 2 | | vector.cpp:454:7:454:12 | memcpy | (unsigned char *,size_t *,size_t) | | ossl_cipher_padblock | 2 | | vector.cpp:454:7:454:12 | memcpy | (unsigned char *,size_t *,size_t) | | ossl_cipher_unpadblock | 2 | +| vector.cpp:454:7:454:12 | memcpy | (uv_thread_t *,char *,size_t) | | uv__thread_getname | 2 | +| vector.cpp:454:7:454:12 | memcpy | (uv_thread_t *,char *,size_t) | | uv_thread_getaffinity | 2 | +| vector.cpp:454:7:454:12 | memcpy | (uv_thread_t *,char *,size_t) | | uv_thread_getname | 2 | +| vector.cpp:454:7:454:12 | memcpy | (void *,size_t,size_t) | | Curl_hash_str | 2 | | vector.cpp:454:7:454:12 | memcpy | (void *,unsigned char *,size_t) | | ossl_drbg_clear_seed | 2 | | zmq.cpp:14:5:14:21 | zmq_msg_init_data | (BIO *,const EVP_PKEY *,int,pem_password_cb *,void *) | | i2b_PVK_bio | 4 | +| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *) | | BrotliDecoderSetMetadataCallbacks | 4 | | zmq.cpp:14:5:14:21 | zmq_msg_init_data | (EVP_CIPHER_INFO *,unsigned char *,long *,pem_password_cb *,void *) | | PEM_do_header | 4 | | zmq.cpp:14:5:14:21 | zmq_msg_init_data | (EVP_PKEY *,EVP_KEYMGMT *,void *,OSSL_CALLBACK *,void *) | | evp_keymgmt_util_gen | 4 | | zmq.cpp:14:5:14:21 | zmq_msg_init_data | (EVP_PKEY_CTX *,int,int,int,void *) | | RSA_pkey_ctx_ctrl | 4 | @@ -11519,6 +13619,9 @@ signatureMatches | zmq.cpp:14:5:14:21 | zmq_msg_init_data | (const BIGNUM *,int,..(*)(..),BN_CTX *,void *) | | BN_is_prime | 4 | | zmq.cpp:14:5:14:21 | zmq_msg_init_data | (const char *,const UI_METHOD *,void *,OSSL_STORE_post_process_info_fn,void *) | | OSSL_STORE_open | 4 | | zmq.cpp:14:5:14:21 | zmq_msg_init_data | (const char *,int,int,..(*)(..),void *) | | CONF_parse_list | 4 | +| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (nghttp2_extension *,uint8_t,uint8_t,int32_t,void *) | | nghttp2_frame_extension_init | 4 | +| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (nghttp2_session *,const uint8_t *,size_t,int,void *) | | nghttp2_session_upgrade2 | 4 | +| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *) | | nghttp2_session_open_stream | 4 | | zmq.cpp:14:5:14:21 | zmq_msg_init_data | (sqlite3 *,const char *,const char *,..(*)(..),void *) | | recoverInit | 4 | | zmq.cpp:17:6:17:13 | test_zmc | (BIO *,OCSP_REQUEST *,unsigned long) | | OCSP_REQUEST_print | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (BIO *,OCSP_RESPONSE *,unsigned long) | | OCSP_RESPONSE_print | 2 | @@ -11535,9 +13638,20 @@ signatureMatches | zmq.cpp:17:6:17:13 | test_zmc | (CCM128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_ccm128_tag | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (CMAC_CTX *,const void *,size_t) | | CMAC_Update | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (CMS_RecipientInfo *,const unsigned char *,size_t) | | CMS_RecipientInfo_kekri_id_cmp | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_alnum | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_bytes | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_hex | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (DH *,const unsigned char *,size_t) | | ossl_dh_buf2key | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (EC_GROUP *,const unsigned char *,size_t) | | EC_GROUP_set_seed | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (EC_KEY *,const unsigned char *,size_t) | | ossl_ec_key_simple_oct2priv | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha1_init | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha256_init | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha512_init | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (EVP_MD_CTX *,const unsigned char *,size_t) | | EVP_DigestVerifyFinal | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (EVP_PKEY *,char *,size_t) | | EVP_PKEY_get_default_digest_name | 1 | | zmq.cpp:17:6:17:13 | test_zmc | (EVP_PKEY *,char *,size_t) | | EVP_PKEY_get_default_digest_name | 2 | @@ -11550,6 +13664,10 @@ signatureMatches | zmq.cpp:17:6:17:13 | test_zmc | (KECCAK1600_CTX *,const void *,size_t) | | ossl_sha3_update | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (KECCAK1600_CTX *,unsigned char *,size_t) | | ossl_sha3_squeeze | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (KECCAK1600_CTX *,unsigned char,size_t) | | ossl_sha3_init | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (LIBSSH2_CHANNEL *,const char *,size_t) | | libssh2_channel_signal_ex | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (LIBSSH2_SFTP_HANDLE *,char *,size_t) | | libssh2_sftp_read | 1 | +| zmq.cpp:17:6:17:13 | test_zmc | (LIBSSH2_SFTP_HANDLE *,char *,size_t) | | libssh2_sftp_read | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (LIBSSH2_SFTP_HANDLE *,const char *,size_t) | | libssh2_sftp_write | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (MD4_CTX *,const void *,size_t) | | MD4_Update | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (MD4_CTX *,const void *,size_t) | | md4_block_data_order | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (MD5_CTX *,const void *,size_t) | | MD5_Update | 2 | @@ -11557,6 +13675,7 @@ signatureMatches | zmq.cpp:17:6:17:13 | test_zmc | (MDC2_CTX *,const unsigned char *,size_t) | | MDC2_Update | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_pk_decode | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_sk_decode | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (MemoryManager *,const uint8_t *,size_t) | | CreatePreparedDictionary | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (OCB128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_ocb128_aad | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (OCB128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_ocb128_tag | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (OSSL_HPKE_CTX *,const unsigned char *,size_t) | | OSSL_HPKE_CTX_set1_ikme | 2 | @@ -11627,8 +13746,15 @@ signatureMatches | zmq.cpp:17:6:17:13 | test_zmc | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_email | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_host | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (X509_VERIFY_PARAM *,const unsigned char *,size_t) | | X509_VERIFY_PARAM_set1_ip | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (bufc_pool *,size_t,size_t) | | Curl_bufcp_init | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (bufq *,size_t,size_t) | | Curl_bufq_init | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (bufref *,const void *,size_t) | | Curl_bufref_memdup | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (char **,size_t *,size_t) | | Curl_str_number | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (char *,const char *,size_t) | | Curl_strntolower | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (char *,const char *,size_t) | | Curl_strntoupper | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (char *,const char *,size_t) | | OPENSSL_strlcat | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (char *,const char *,size_t) | | OPENSSL_strlcpy | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (char *,const char *,size_t) | | uv__strscpy | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (const CTLOG_STORE *,const uint8_t *,size_t) | | CTLOG_STORE_get0_log_by_id | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (const EC_KEY *,unsigned char *,size_t) | | ossl_ec_key_simple_priv2oct | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (const EVP_MD *,const OSSL_ITEM *,size_t) | | ossl_digest_md_to_nid | 2 | @@ -11645,19 +13771,68 @@ signatureMatches | zmq.cpp:17:6:17:13 | test_zmc | (const char *,char **,size_t) | | OSSL_PARAM_construct_utf8_ptr | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (const char *,char *,size_t) | | OSSL_PARAM_construct_utf8_string | 1 | | zmq.cpp:17:6:17:13 | test_zmc | (const char *,char *,size_t) | | OSSL_PARAM_construct_utf8_string | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (const char *,char *,size_t) | | getpass_r | 1 | +| zmq.cpp:17:6:17:13 | test_zmc | (const char *,char *,size_t) | | getpass_r | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (const char *,const char *,size_t) | | OPENSSL_strncasecmp | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (const char *,const char *,size_t) | | c_strncasecmp | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (const char *,uint16_t *,size_t) | | uv_wtf8_to_utf16 | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (const char *,unsigned char *,size_t) | | OSSL_PARAM_construct_BN | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (const char *,void **,size_t) | | OSSL_PARAM_construct_octet_ptr | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (const char *,void *,size_t) | | OSSL_PARAM_construct_octet_string | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (const char *,void *,size_t) | | uv__random_readpath | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (const sockaddr *,char *,size_t) | | uv_ip_name | 1 | +| zmq.cpp:17:6:17:13 | test_zmc | (const sockaddr *,char *,size_t) | | uv_ip_name | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (const sockaddr_in6 *,char *,size_t) | | uv_ip6_name | 1 | +| zmq.cpp:17:6:17:13 | test_zmc | (const sockaddr_in6 *,char *,size_t) | | uv_ip6_name | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (const sockaddr_in *,char *,size_t) | | uv_ip4_name | 1 | +| zmq.cpp:17:6:17:13 | test_zmc | (const sockaddr_in *,char *,size_t) | | uv_ip4_name | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (const unsigned char *,size_t,size_t) | | ossl_rand_pool_attach | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (curl_mimepart *,const char *,size_t) | | curl_mime_data | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (curve448_scalar_t,const unsigned char *,size_t) | | ossl_curve448_scalar_decode_long | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (dynhds *,const char *,size_t) | | Curl_dynhds_get | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (dynhds *,const char *,size_t) | | Curl_dynhds_h1_add_line | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (dynhds *,size_t,size_t) | | Curl_dynhds_init | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (int *,const char *,size_t) | | Curl_http_decode_status | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (int *,int *,size_t) | | EVP_PBE_get | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | Curl_strerror | 1 | +| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | Curl_strerror | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | uv_err_name_r | 1 | +| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | uv_err_name_r | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | uv_strerror_r | 1 | +| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | uv_strerror_r | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (int,int,size_t) | | BrotliEncoderEstimatePeakMemoryUsage | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_buf *,uint8_t *,size_t) | | nghttp2_buf_wrap_init | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_extension *,nghttp2_origin_entry *,size_t) | | nghttp2_frame_origin_init | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_extpri_parse_priority | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_http_parse_priority | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_hd_deflater *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_bound | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv2 | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_session *,int32_t,size_t) | | nghttp2_session_consume | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_session *,nghttp2_settings_entry *,size_t) | | nghttp2_session_update_local_settings | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_settings *,nghttp2_settings_entry *,size_t) | | nghttp2_frame_unpack_settings_payload | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (sfparse_parser *,const uint8_t *,size_t) | | sfparse_parser_init | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (size_t,OSSL_QTX_IOVEC *,size_t) | | ossl_quic_sstream_adjust_iov | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (stack_st_SCT **,const unsigned char **,size_t) | | o2i_SCT_LIST | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (ucs4_t *,const uint8_t *,size_t) | | u8_mbtouc_aux | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (uint8_t *,const nghttp2_settings_entry *,size_t) | | nghttp2_frame_pack_settings_payload | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (unsigned char **,const char *,size_t) | | _libssh2_store_str | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (unsigned char **,const unsigned char *,size_t) | | _libssh2_store_bignum2_bytes | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (unsigned char *,const unsigned char *,size_t) | | BUF_reverse | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (unsigned char *,int,unsigned long) | | UTF8_putc | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (unsigned char *,size_t *,size_t) | | ossl_cipher_padblock | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (unsigned char *,size_t *,size_t) | | ossl_cipher_unpadblock | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (uv_thread_t *,char *,size_t) | | uv__thread_getname | 1 | +| zmq.cpp:17:6:17:13 | test_zmc | (uv_thread_t *,char *,size_t) | | uv__thread_getname | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (uv_thread_t *,char *,size_t) | | uv_thread_getaffinity | 1 | +| zmq.cpp:17:6:17:13 | test_zmc | (uv_thread_t *,char *,size_t) | | uv_thread_getaffinity | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (uv_thread_t *,char *,size_t) | | uv_thread_getname | 1 | +| zmq.cpp:17:6:17:13 | test_zmc | (uv_thread_t *,char *,size_t) | | uv_thread_getname | 2 | +| zmq.cpp:17:6:17:13 | test_zmc | (void *,size_t,size_t) | | Curl_hash_str | 2 | | zmq.cpp:17:6:17:13 | test_zmc | (void *,unsigned char *,size_t) | | ossl_drbg_clear_seed | 2 | getSignatureParameterName | (..(*)(..)) | | ASN1_SCTX_new | 0 | ..(*)(..) | @@ -11666,6 +13841,10 @@ getSignatureParameterName | (..(*)(..),..(*)(..),..(*)(..),..(*)(..)) | | X509_CRL_METHOD_new | 1 | ..(*)(..) | | (..(*)(..),..(*)(..),..(*)(..),..(*)(..)) | | X509_CRL_METHOD_new | 2 | ..(*)(..) | | (..(*)(..),..(*)(..),..(*)(..),..(*)(..)) | | X509_CRL_METHOD_new | 3 | ..(*)(..) | +| (..(*)(..),..(*)(..),..(*)(..),void *) | | libssh2_session_init_ex | 0 | ..(*)(..) | +| (..(*)(..),..(*)(..),..(*)(..),void *) | | libssh2_session_init_ex | 1 | ..(*)(..) | +| (..(*)(..),..(*)(..),..(*)(..),void *) | | libssh2_session_init_ex | 2 | ..(*)(..) | +| (..(*)(..),..(*)(..),..(*)(..),void *) | | libssh2_session_init_ex | 3 | void * | | (..(*)(..),d2i_of_void *,BIO *,void **) | | ASN1_d2i_bio | 0 | ..(*)(..) | | (..(*)(..),d2i_of_void *,BIO *,void **) | | ASN1_d2i_bio | 1 | d2i_of_void * | | (..(*)(..),d2i_of_void *,BIO *,void **) | | ASN1_d2i_bio | 2 | BIO * | @@ -12075,12 +14254,31 @@ getSignatureParameterName | (BIGNUM *) | | BN_get_rfc3526_prime_4096 | 0 | BIGNUM * | | (BIGNUM *) | | BN_get_rfc3526_prime_6144 | 0 | BIGNUM * | | (BIGNUM *) | | BN_get_rfc3526_prime_8192 | 0 | BIGNUM * | +| (BIGNUM **) | | _libssh2_dh_dtor | 0 | BIGNUM ** | +| (BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,BN_CTX *) | | _libssh2_dh_secret | 0 | BIGNUM ** | +| (BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,BN_CTX *) | | _libssh2_dh_secret | 1 | BIGNUM * | +| (BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,BN_CTX *) | | _libssh2_dh_secret | 2 | BIGNUM * | +| (BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,BN_CTX *) | | _libssh2_dh_secret | 3 | BIGNUM * | +| (BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,BN_CTX *) | | _libssh2_dh_secret | 4 | BN_CTX * | +| (BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,int,BN_CTX *) | | _libssh2_dh_key_pair | 0 | BIGNUM ** | +| (BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,int,BN_CTX *) | | _libssh2_dh_key_pair | 1 | BIGNUM * | +| (BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,int,BN_CTX *) | | _libssh2_dh_key_pair | 2 | BIGNUM * | +| (BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,int,BN_CTX *) | | _libssh2_dh_key_pair | 3 | BIGNUM * | +| (BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,int,BN_CTX *) | | _libssh2_dh_key_pair | 4 | int | +| (BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,int,BN_CTX *) | | _libssh2_dh_key_pair | 5 | BN_CTX * | +| (BIGNUM **,EVP_PKEY *,const unsigned char *,size_t) | | _libssh2_ecdh_gen_k | 0 | BIGNUM ** | +| (BIGNUM **,EVP_PKEY *,const unsigned char *,size_t) | | _libssh2_ecdh_gen_k | 1 | EVP_PKEY * | +| (BIGNUM **,EVP_PKEY *,const unsigned char *,size_t) | | _libssh2_ecdh_gen_k | 2 | const unsigned char * | +| (BIGNUM **,EVP_PKEY *,const unsigned char *,size_t) | | _libssh2_ecdh_gen_k | 3 | size_t | | (BIGNUM **,const char *) | | BN_asc2bn | 0 | BIGNUM ** | | (BIGNUM **,const char *) | | BN_asc2bn | 1 | const char * | | (BIGNUM **,const char *) | | BN_dec2bn | 0 | BIGNUM ** | | (BIGNUM **,const char *) | | BN_dec2bn | 1 | const char * | | (BIGNUM **,const char *) | | BN_hex2bn | 0 | BIGNUM ** | | (BIGNUM **,const char *) | | BN_hex2bn | 1 | const char * | +| (BIGNUM **,uint8_t[32],uint8_t[32]) | | _libssh2_curve25519_gen_k | 0 | BIGNUM ** | +| (BIGNUM **,uint8_t[32],uint8_t[32]) | | _libssh2_curve25519_gen_k | 1 | uint8_t[32] | +| (BIGNUM **,uint8_t[32],uint8_t[32]) | | _libssh2_curve25519_gen_k | 2 | uint8_t[32] | | (BIGNUM *,ASN1_INTEGER *) | | rand_serial | 0 | BIGNUM * | | (BIGNUM *,ASN1_INTEGER *) | | rand_serial | 1 | ASN1_INTEGER * | | (BIGNUM *,BIGNUM *) | | BN_swap | 0 | BIGNUM * | @@ -13444,6 +15642,106 @@ getSignatureParameterName | (BUF_MEM *,size_t) | | BUF_MEM_grow | 1 | size_t | | (BUF_MEM *,size_t) | | BUF_MEM_grow_clean | 0 | BUF_MEM * | | (BUF_MEM *,size_t) | | BUF_MEM_grow_clean | 1 | size_t | +| (BrotliBitReader *const,uint64_t,uint64_t *) | | BrotliSafeReadBits32Slow | 0 | BrotliBitReader *const | +| (BrotliBitReader *const,uint64_t,uint64_t *) | | BrotliSafeReadBits32Slow | 1 | uint64_t | +| (BrotliBitReader *const,uint64_t,uint64_t *) | | BrotliSafeReadBits32Slow | 2 | uint64_t * | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[]) | | BrotliDecoderAttachDictionary | 0 | BrotliDecoderState * | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[]) | | BrotliDecoderAttachDictionary | 1 | BrotliDecoderStateInternal * | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[]) | | BrotliDecoderAttachDictionary | 2 | BrotliSharedDictionaryType | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[]) | | BrotliDecoderAttachDictionary | 3 | size_t | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[]) | | BrotliDecoderAttachDictionary | 4 | const uint8_t[] | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *) | | BrotliDecoderSetMetadataCallbacks | 0 | BrotliDecoderState * | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *) | | BrotliDecoderSetMetadataCallbacks | 1 | BrotliDecoderStateInternal * | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *) | | BrotliDecoderSetMetadataCallbacks | 2 | brotli_decoder_metadata_start_func | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *) | | BrotliDecoderSetMetadataCallbacks | 3 | brotli_decoder_metadata_chunk_func | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *) | | BrotliDecoderSetMetadataCallbacks | 4 | void * | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *) | | BrotliDecoderTakeOutput | 0 | BrotliDecoderState * | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *) | | BrotliDecoderTakeOutput | 1 | BrotliDecoderStateInternal * | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *) | | BrotliDecoderTakeOutput | 2 | size_t * | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliDecoderDecompressStream | 0 | BrotliDecoderState * | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliDecoderDecompressStream | 1 | BrotliDecoderStateInternal * | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliDecoderDecompressStream | 2 | size_t * | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliDecoderDecompressStream | 3 | const uint8_t ** | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliDecoderDecompressStream | 4 | size_t * | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliDecoderDecompressStream | 5 | uint8_t ** | +| (BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliDecoderDecompressStream | 6 | size_t * | +| (BrotliDecoderStateInternal *,HuffmanTreeGroup *,uint64_t,uint64_t,uint64_t) | | BrotliDecoderHuffmanTreeGroupInit | 0 | BrotliDecoderStateInternal * | +| (BrotliDecoderStateInternal *,HuffmanTreeGroup *,uint64_t,uint64_t,uint64_t) | | BrotliDecoderHuffmanTreeGroupInit | 1 | HuffmanTreeGroup * | +| (BrotliDecoderStateInternal *,HuffmanTreeGroup *,uint64_t,uint64_t,uint64_t) | | BrotliDecoderHuffmanTreeGroupInit | 2 | uint64_t | +| (BrotliDecoderStateInternal *,HuffmanTreeGroup *,uint64_t,uint64_t,uint64_t) | | BrotliDecoderHuffmanTreeGroupInit | 3 | uint64_t | +| (BrotliDecoderStateInternal *,HuffmanTreeGroup *,uint64_t,uint64_t,uint64_t) | | BrotliDecoderHuffmanTreeGroupInit | 4 | uint64_t | +| (BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *) | | BrotliDecoderStateInit | 0 | BrotliDecoderStateInternal * | +| (BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *) | | BrotliDecoderStateInit | 1 | brotli_alloc_func | +| (BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *) | | BrotliDecoderStateInit | 2 | brotli_free_func | +| (BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *) | | BrotliDecoderStateInit | 3 | void * | +| (BrotliDistanceParams *,uint32_t,uint32_t,int) | | BrotliInitDistanceParams | 0 | BrotliDistanceParams * | +| (BrotliDistanceParams *,uint32_t,uint32_t,int) | | BrotliInitDistanceParams | 1 | uint32_t | +| (BrotliDistanceParams *,uint32_t,uint32_t,int) | | BrotliInitDistanceParams | 2 | uint32_t | +| (BrotliDistanceParams *,uint32_t,uint32_t,int) | | BrotliInitDistanceParams | 3 | int | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliEncoderCompressStream | 0 | BrotliEncoderState * | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliEncoderCompressStream | 1 | BrotliEncoderStateInternal * | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliEncoderCompressStream | 2 | BrotliEncoderOperation | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliEncoderCompressStream | 3 | size_t * | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliEncoderCompressStream | 4 | const uint8_t ** | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliEncoderCompressStream | 5 | size_t * | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliEncoderCompressStream | 6 | uint8_t ** | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliEncoderCompressStream | 7 | size_t * | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderParameter,uint32_t) | | BrotliEncoderSetParameter | 0 | BrotliEncoderState * | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderParameter,uint32_t) | | BrotliEncoderSetParameter | 1 | BrotliEncoderStateInternal * | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderParameter,uint32_t) | | BrotliEncoderSetParameter | 2 | BrotliEncoderParameter | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderParameter,uint32_t) | | BrotliEncoderSetParameter | 3 | uint32_t | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,const BrotliEncoderPreparedDictionary *) | | BrotliEncoderAttachPreparedDictionary | 0 | BrotliEncoderState * | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,const BrotliEncoderPreparedDictionary *) | | BrotliEncoderAttachPreparedDictionary | 1 | BrotliEncoderStateInternal * | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,const BrotliEncoderPreparedDictionary *) | | BrotliEncoderAttachPreparedDictionary | 2 | const BrotliEncoderPreparedDictionary * | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,size_t *) | | BrotliEncoderTakeOutput | 0 | BrotliEncoderState * | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,size_t *) | | BrotliEncoderTakeOutput | 1 | BrotliEncoderStateInternal * | +| (BrotliEncoderState *,BrotliEncoderStateInternal *,size_t *) | | BrotliEncoderTakeOutput | 2 | size_t * | +| (BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentFast | 0 | BrotliOnePassArena * | +| (BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentFast | 1 | const uint8_t * | +| (BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentFast | 2 | size_t | +| (BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentFast | 3 | int | +| (BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentFast | 4 | int * | +| (BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentFast | 5 | size_t | +| (BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentFast | 6 | size_t * | +| (BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentFast | 7 | uint8_t * | +| (BrotliSharedDictionaryInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[]) | | BrotliSharedDictionaryAttach | 0 | BrotliSharedDictionaryInternal * | +| (BrotliSharedDictionaryInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[]) | | BrotliSharedDictionaryAttach | 1 | BrotliSharedDictionaryType | +| (BrotliSharedDictionaryInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[]) | | BrotliSharedDictionaryAttach | 2 | size_t | +| (BrotliSharedDictionaryInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[]) | | BrotliSharedDictionaryAttach | 3 | const uint8_t[] | +| (BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *) | | BrotliEncoderPrepareDictionary | 0 | BrotliSharedDictionaryType | +| (BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *) | | BrotliEncoderPrepareDictionary | 1 | size_t | +| (BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *) | | BrotliEncoderPrepareDictionary | 2 | const uint8_t[] | +| (BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *) | | BrotliEncoderPrepareDictionary | 3 | int | +| (BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *) | | BrotliEncoderPrepareDictionary | 4 | brotli_alloc_func | +| (BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *) | | BrotliEncoderPrepareDictionary | 5 | brotli_free_func | +| (BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *) | | BrotliEncoderPrepareDictionary | 6 | void * | +| (BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentTwoPass | 0 | BrotliTwoPassArena * | +| (BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentTwoPass | 1 | const uint8_t * | +| (BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentTwoPass | 2 | size_t | +| (BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentTwoPass | 3 | int | +| (BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentTwoPass | 4 | uint32_t * | +| (BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentTwoPass | 5 | uint8_t * | +| (BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentTwoPass | 6 | int * | +| (BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentTwoPass | 7 | size_t | +| (BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentTwoPass | 8 | size_t * | +| (BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentTwoPass | 9 | uint8_t * | +| (Bytef *,uLongf *,const Bytef *,uLong *) | | uncompress2 | 0 | Bytef * | +| (Bytef *,uLongf *,const Bytef *,uLong *) | | uncompress2 | 1 | uLongf * | +| (Bytef *,uLongf *,const Bytef *,uLong *) | | uncompress2 | 2 | const Bytef * | +| (Bytef *,uLongf *,const Bytef *,uLong *) | | uncompress2 | 3 | uLong * | +| (Bytef *,uLongf *,const Bytef *,uLong) | | compress | 0 | Bytef * | +| (Bytef *,uLongf *,const Bytef *,uLong) | | compress | 1 | uLongf * | +| (Bytef *,uLongf *,const Bytef *,uLong) | | compress | 2 | const Bytef * | +| (Bytef *,uLongf *,const Bytef *,uLong) | | compress | 3 | uLong | +| (Bytef *,uLongf *,const Bytef *,uLong) | | uncompress | 0 | Bytef * | +| (Bytef *,uLongf *,const Bytef *,uLong) | | uncompress | 1 | uLongf * | +| (Bytef *,uLongf *,const Bytef *,uLong) | | uncompress | 2 | const Bytef * | +| (Bytef *,uLongf *,const Bytef *,uLong) | | uncompress | 3 | uLong | +| (Bytef *,uLongf *,const Bytef *,uLong,int) | | compress2 | 0 | Bytef * | +| (Bytef *,uLongf *,const Bytef *,uLong,int) | | compress2 | 1 | uLongf * | +| (Bytef *,uLongf *,const Bytef *,uLong,int) | | compress2 | 2 | const Bytef * | +| (Bytef *,uLongf *,const Bytef *,uLong,int) | | compress2 | 3 | uLong | +| (Bytef *,uLongf *,const Bytef *,uLong,int) | | compress2 | 4 | int | | (CA_DB *,time_t *) | | do_updatedb | 0 | CA_DB * | | (CA_DB *,time_t *) | | do_updatedb | 1 | time_t * | | (CAtlFile &) | CAtlFile | CAtlFile | 0 | CAtlFile & | @@ -13772,6 +16070,529 @@ getSignatureParameterName | (CT_POLICY_EVAL_CTX *,X509 *) | | CT_POLICY_EVAL_CTX_set1_issuer | 1 | X509 * | | (CT_POLICY_EVAL_CTX *,uint64_t) | | CT_POLICY_EVAL_CTX_set_time | 0 | CT_POLICY_EVAL_CTX * | | (CT_POLICY_EVAL_CTX *,uint64_t) | | CT_POLICY_EVAL_CTX_set_time | 1 | uint64_t | +| (CURL *) | | curl_easy_cleanup | 0 | CURL * | +| (CURL *) | | curl_easy_duphandle | 0 | CURL * | +| (CURL *) | | curl_easy_perform | 0 | CURL * | +| (CURL *) | | curl_easy_upkeep | 0 | CURL * | +| (CURL *,GlobalConfig *,const char *,CURLoption,curl_slist *) | | tool_setopt_slist | 0 | CURL * | +| (CURL *,GlobalConfig *,const char *,CURLoption,curl_slist *) | | tool_setopt_slist | 1 | GlobalConfig * | +| (CURL *,GlobalConfig *,const char *,CURLoption,curl_slist *) | | tool_setopt_slist | 2 | const char * | +| (CURL *,GlobalConfig *,const char *,CURLoption,curl_slist *) | | tool_setopt_slist | 3 | CURLoption | +| (CURL *,GlobalConfig *,const char *,CURLoption,curl_slist *) | | tool_setopt_slist | 4 | curl_slist * | +| (CURL *,char **,const char *) | | add_file_name_to_url | 0 | CURL * | +| (CURL *,char **,const char *) | | add_file_name_to_url | 1 | char ** | +| (CURL *,char **,const char *) | | add_file_name_to_url | 2 | const char * | +| (CURL *,const char *,size_t,unsigned int,int,curl_header **) | | curl_easy_header | 0 | CURL * | +| (CURL *,const char *,size_t,unsigned int,int,curl_header **) | | curl_easy_header | 1 | const char * | +| (CURL *,const char *,size_t,unsigned int,int,curl_header **) | | curl_easy_header | 2 | size_t | +| (CURL *,const char *,size_t,unsigned int,int,curl_header **) | | curl_easy_header | 3 | unsigned int | +| (CURL *,const char *,size_t,unsigned int,int,curl_header **) | | curl_easy_header | 4 | int | +| (CURL *,const char *,size_t,unsigned int,int,curl_header **) | | curl_easy_header | 5 | curl_header ** | +| (CURL *,const void *,size_t,size_t *) | | curl_easy_send | 0 | CURL * | +| (CURL *,const void *,size_t,size_t *) | | curl_easy_send | 1 | const void * | +| (CURL *,const void *,size_t,size_t *) | | curl_easy_send | 2 | size_t | +| (CURL *,const void *,size_t,size_t *) | | curl_easy_send | 3 | size_t * | +| (CURL *,const void *,size_t,size_t *,curl_off_t,unsigned int) | | curl_ws_send | 0 | CURL * | +| (CURL *,const void *,size_t,size_t *,curl_off_t,unsigned int) | | curl_ws_send | 1 | const void * | +| (CURL *,const void *,size_t,size_t *,curl_off_t,unsigned int) | | curl_ws_send | 2 | size_t | +| (CURL *,const void *,size_t,size_t *,curl_off_t,unsigned int) | | curl_ws_send | 3 | size_t * | +| (CURL *,const void *,size_t,size_t *,curl_off_t,unsigned int) | | curl_ws_send | 4 | curl_off_t | +| (CURL *,const void *,size_t,size_t *,curl_off_t,unsigned int) | | curl_ws_send | 5 | unsigned int | +| (CURL *,curl_mimepart *,curl_httppost *,curl_read_callback) | | Curl_getformdata | 0 | CURL * | +| (CURL *,curl_mimepart *,curl_httppost *,curl_read_callback) | | Curl_getformdata | 1 | curl_mimepart * | +| (CURL *,curl_mimepart *,curl_httppost *,curl_read_callback) | | Curl_getformdata | 2 | curl_httppost * | +| (CURL *,curl_mimepart *,curl_httppost *,curl_read_callback) | | Curl_getformdata | 3 | curl_read_callback | +| (CURL *,int) | | curl_easy_pause | 0 | CURL * | +| (CURL *,int) | | curl_easy_pause | 1 | int | +| (CURL *,tool_mime *,curl_mime **) | | tool2curlmime | 0 | CURL * | +| (CURL *,tool_mime *,curl_mime **) | | tool2curlmime | 1 | tool_mime * | +| (CURL *,tool_mime *,curl_mime **) | | tool2curlmime | 2 | curl_mime ** | +| (CURL *,unsigned int,int,curl_header *) | | curl_easy_nextheader | 0 | CURL * | +| (CURL *,unsigned int,int,curl_header *) | | curl_easy_nextheader | 1 | unsigned int | +| (CURL *,unsigned int,int,curl_header *) | | curl_easy_nextheader | 2 | int | +| (CURL *,unsigned int,int,curl_header *) | | curl_easy_nextheader | 3 | curl_header * | +| (CURL *,void *,size_t,size_t *) | | curl_easy_recv | 0 | CURL * | +| (CURL *,void *,size_t,size_t *) | | curl_easy_recv | 1 | void * | +| (CURL *,void *,size_t,size_t *) | | curl_easy_recv | 2 | size_t | +| (CURL *,void *,size_t,size_t *) | | curl_easy_recv | 3 | size_t * | +| (CURL *,void *,size_t,size_t *,const curl_ws_frame **) | | curl_ws_recv | 0 | CURL * | +| (CURL *,void *,size_t,size_t *,const curl_ws_frame **) | | curl_ws_recv | 1 | void * | +| (CURL *,void *,size_t,size_t *,const curl_ws_frame **) | | curl_ws_recv | 2 | size_t | +| (CURL *,void *,size_t,size_t *,const curl_ws_frame **) | | curl_ws_recv | 3 | size_t * | +| (CURL *,void *,size_t,size_t *,const curl_ws_frame **) | | curl_ws_recv | 4 | const curl_ws_frame ** | +| (CURLM *,CURL *) | | curl_multi_add_handle | 0 | CURLM * | +| (CURLM *,CURL *) | | curl_multi_add_handle | 1 | CURL * | +| (CURLM *,CURL *) | | curl_multi_remove_handle | 0 | CURLM * | +| (CURLM *,CURL *) | | curl_multi_remove_handle | 1 | CURL * | +| (CURLM *,curl_socket_t,int *) | | curl_multi_socket | 0 | CURLM * | +| (CURLM *,curl_socket_t,int *) | | curl_multi_socket | 1 | curl_socket_t | +| (CURLM *,curl_socket_t,int *) | | curl_multi_socket | 2 | int * | +| (CURLM *,curl_socket_t,int,int *) | | curl_multi_socket_action | 0 | CURLM * | +| (CURLM *,curl_socket_t,int,int *) | | curl_multi_socket_action | 1 | curl_socket_t | +| (CURLM *,curl_socket_t,int,int *) | | curl_multi_socket_action | 2 | int | +| (CURLM *,curl_socket_t,int,int *) | | curl_multi_socket_action | 3 | int * | +| (CURLM *,int *) | | curl_multi_info_read | 0 | CURLM * | +| (CURLM *,int *) | | curl_multi_info_read | 1 | int * | +| (CURLM *,int *) | | curl_multi_perform | 0 | CURLM * | +| (CURLM *,int *) | | curl_multi_perform | 1 | int * | +| (CURLM *,int *) | | curl_multi_socket_all | 0 | CURLM * | +| (CURLM *,int *) | | curl_multi_socket_all | 1 | int * | +| (CURLSH *,CURLSHoption,...) | | curl_share_setopt | 0 | CURLSH * | +| (CURLSH *,CURLSHoption,...) | | curl_share_setopt | 1 | CURLSHoption | +| (CURLSH *,CURLSHoption,...) | | curl_share_setopt | 2 | ... | +| (CURLU *,CURLUPart,const char *,unsigned int) | | curl_url_set | 0 | CURLU * | +| (CURLU *,CURLUPart,const char *,unsigned int) | | curl_url_set | 1 | CURLUPart | +| (CURLU *,CURLUPart,const char *,unsigned int) | | curl_url_set | 2 | const char * | +| (CURLU *,CURLUPart,const char *,unsigned int) | | curl_url_set | 3 | unsigned int | +| (CURLU *,const char *) | | Curl_url_set_authority | 0 | CURLU * | +| (CURLU *,const char *) | | Curl_url_set_authority | 1 | const char * | +| (CURLU *,const char *,char **,OperationConfig *) | | ipfs_url_rewrite | 0 | CURLU * | +| (CURLU *,const char *,char **,OperationConfig *) | | ipfs_url_rewrite | 1 | const char * | +| (CURLU *,const char *,char **,OperationConfig *) | | ipfs_url_rewrite | 2 | char ** | +| (CURLU *,const char *,char **,OperationConfig *) | | ipfs_url_rewrite | 3 | OperationConfig * | +| (CompoundDictionary *,const PreparedDictionary *) | | AttachPreparedDictionary | 0 | CompoundDictionary * | +| (CompoundDictionary *,const PreparedDictionary *) | | AttachPreparedDictionary | 1 | const PreparedDictionary * | +| (Curl_cfilter *) | | Curl_conn_cf_is_ssl | 0 | Curl_cfilter * | +| (Curl_cfilter *) | | Curl_ssl_cf_get_primary_config | 0 | Curl_cfilter * | +| (Curl_cfilter **,Curl_easy *) | | Curl_conn_cf_discard_chain | 0 | Curl_cfilter ** | +| (Curl_cfilter **,Curl_easy *) | | Curl_conn_cf_discard_chain | 1 | Curl_easy * | +| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_tcp_create | 0 | Curl_cfilter ** | +| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_tcp_create | 1 | Curl_easy * | +| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_tcp_create | 2 | connectdata * | +| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_tcp_create | 3 | const Curl_addrinfo * | +| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_tcp_create | 4 | int | +| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_udp_create | 0 | Curl_cfilter ** | +| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_udp_create | 1 | Curl_easy * | +| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_udp_create | 2 | connectdata * | +| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_udp_create | 3 | const Curl_addrinfo * | +| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_udp_create | 4 | int | +| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_unix_create | 0 | Curl_cfilter ** | +| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_unix_create | 1 | Curl_easy * | +| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_unix_create | 2 | connectdata * | +| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_unix_create | 3 | const Curl_addrinfo * | +| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_unix_create | 4 | int | +| (Curl_cfilter **,const Curl_cftype *,void *) | | Curl_cf_create | 0 | Curl_cfilter ** | +| (Curl_cfilter **,const Curl_cftype *,void *) | | Curl_cf_create | 1 | const Curl_cftype * | +| (Curl_cfilter **,const Curl_cftype *,void *) | | Curl_cf_create | 2 | void * | +| (Curl_cfilter *,Curl_cfilter *) | | Curl_conn_cf_insert_after | 0 | Curl_cfilter * | +| (Curl_cfilter *,Curl_cfilter *) | | Curl_conn_cf_insert_after | 1 | Curl_cfilter * | +| (Curl_cfilter *,Curl_easy *) | | Curl_ssl_cf_get_config | 0 | Curl_cfilter * | +| (Curl_cfilter *,Curl_easy *) | | Curl_ssl_cf_get_config | 1 | Curl_easy * | +| (Curl_cfilter *,Curl_easy *,bool,int,int,void *) | | Curl_conn_cf_cntrl | 0 | Curl_cfilter * | +| (Curl_cfilter *,Curl_easy *,bool,int,int,void *) | | Curl_conn_cf_cntrl | 1 | Curl_easy * | +| (Curl_cfilter *,Curl_easy *,bool,int,int,void *) | | Curl_conn_cf_cntrl | 2 | bool | +| (Curl_cfilter *,Curl_easy *,bool,int,int,void *) | | Curl_conn_cf_cntrl | 3 | int | +| (Curl_cfilter *,Curl_easy *,bool,int,int,void *) | | Curl_conn_cf_cntrl | 4 | int | +| (Curl_cfilter *,Curl_easy *,bool,int,int,void *) | | Curl_conn_cf_cntrl | 5 | void * | +| (Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *) | | Curl_ssl_scache_put | 0 | Curl_cfilter * | +| (Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *) | | Curl_ssl_scache_put | 1 | Curl_easy * | +| (Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *) | | Curl_ssl_scache_put | 2 | const char * | +| (Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *) | | Curl_ssl_scache_put | 3 | Curl_ssl_session * | +| (Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *) | | Curl_ssl_scache_return | 0 | Curl_cfilter * | +| (Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *) | | Curl_ssl_scache_return | 1 | Curl_easy * | +| (Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *) | | Curl_ssl_scache_return | 2 | const char * | +| (Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *) | | Curl_ssl_scache_return | 3 | Curl_ssl_session * | +| (Curl_cfilter *,Curl_easy *,const char *,void **) | | Curl_ssl_scache_get_obj | 0 | Curl_cfilter * | +| (Curl_cfilter *,Curl_easy *,const char *,void **) | | Curl_ssl_scache_get_obj | 1 | Curl_easy * | +| (Curl_cfilter *,Curl_easy *,const char *,void **) | | Curl_ssl_scache_get_obj | 2 | const char * | +| (Curl_cfilter *,Curl_easy *,const char *,void **) | | Curl_ssl_scache_get_obj | 3 | void ** | +| (Curl_cfilter *,Curl_easy *,curl_socket_t *,const Curl_sockaddr_ex **,ip_quadruple *) | | Curl_cf_socket_peek | 0 | Curl_cfilter * | +| (Curl_cfilter *,Curl_easy *,curl_socket_t *,const Curl_sockaddr_ex **,ip_quadruple *) | | Curl_cf_socket_peek | 1 | Curl_easy * | +| (Curl_cfilter *,Curl_easy *,curl_socket_t *,const Curl_sockaddr_ex **,ip_quadruple *) | | Curl_cf_socket_peek | 2 | curl_socket_t * | +| (Curl_cfilter *,Curl_easy *,curl_socket_t *,const Curl_sockaddr_ex **,ip_quadruple *) | | Curl_cf_socket_peek | 3 | const Curl_sockaddr_ex ** | +| (Curl_cfilter *,Curl_easy *,curl_socket_t *,const Curl_sockaddr_ex **,ip_quadruple *) | | Curl_cf_socket_peek | 4 | ip_quadruple * | +| (Curl_cfilter *,Curl_easy *,easy_pollset *) | | Curl_conn_cf_adjust_pollset | 0 | Curl_cfilter * | +| (Curl_cfilter *,Curl_easy *,easy_pollset *) | | Curl_conn_cf_adjust_pollset | 1 | Curl_easy * | +| (Curl_cfilter *,Curl_easy *,easy_pollset *) | | Curl_conn_cf_adjust_pollset | 2 | easy_pollset * | +| (Curl_cfilter *,Curl_easy *,ssl_connect_data *,const unsigned char *,size_t) | | Curl_alpn_set_negotiated | 0 | Curl_cfilter * | +| (Curl_cfilter *,Curl_easy *,ssl_connect_data *,const unsigned char *,size_t) | | Curl_alpn_set_negotiated | 1 | Curl_easy * | +| (Curl_cfilter *,Curl_easy *,ssl_connect_data *,const unsigned char *,size_t) | | Curl_alpn_set_negotiated | 2 | ssl_connect_data * | +| (Curl_cfilter *,Curl_easy *,ssl_connect_data *,const unsigned char *,size_t) | | Curl_alpn_set_negotiated | 3 | const unsigned char * | +| (Curl_cfilter *,Curl_easy *,ssl_connect_data *,const unsigned char *,size_t) | | Curl_alpn_set_negotiated | 4 | size_t | +| (Curl_cfilter *,Curl_easy *,timediff_t) | | Curl_conn_cf_poll | 0 | Curl_cfilter * | +| (Curl_cfilter *,Curl_easy *,timediff_t) | | Curl_conn_cf_poll | 1 | Curl_easy * | +| (Curl_cfilter *,Curl_easy *,timediff_t) | | Curl_conn_cf_poll | 2 | timediff_t | +| (Curl_cfilter *,const char **,int *,bool *) | | Curl_http_proxy_get_destination | 0 | Curl_cfilter * | +| (Curl_cfilter *,const char **,int *,bool *) | | Curl_http_proxy_get_destination | 1 | const char ** | +| (Curl_cfilter *,const char **,int *,bool *) | | Curl_http_proxy_get_destination | 2 | int * | +| (Curl_cfilter *,const char **,int *,bool *) | | Curl_http_proxy_get_destination | 3 | bool * | +| (Curl_creader **,Curl_easy *,const Curl_crtype *,Curl_creader_phase) | | Curl_creader_create | 0 | Curl_creader ** | +| (Curl_creader **,Curl_easy *,const Curl_crtype *,Curl_creader_phase) | | Curl_creader_create | 1 | Curl_easy * | +| (Curl_creader **,Curl_easy *,const Curl_crtype *,Curl_creader_phase) | | Curl_creader_create | 2 | const Curl_crtype * | +| (Curl_creader **,Curl_easy *,const Curl_crtype *,Curl_creader_phase) | | Curl_creader_create | 3 | Curl_creader_phase | +| (Curl_cwriter **,Curl_easy *,const Curl_cwtype *,Curl_cwriter_phase) | | Curl_cwriter_create | 0 | Curl_cwriter ** | +| (Curl_cwriter **,Curl_easy *,const Curl_cwtype *,Curl_cwriter_phase) | | Curl_cwriter_create | 1 | Curl_easy * | +| (Curl_cwriter **,Curl_easy *,const Curl_cwtype *,Curl_cwriter_phase) | | Curl_cwriter_create | 2 | const Curl_cwtype * | +| (Curl_cwriter **,Curl_easy *,const Curl_cwtype *,Curl_cwriter_phase) | | Curl_cwriter_create | 3 | Curl_cwriter_phase | +| (Curl_easy *) | | Curl_connect_only_attach | 0 | Curl_easy * | +| (Curl_easy *) | | Curl_cpool_prune_dead | 0 | Curl_easy * | +| (Curl_easy *) | | Curl_creader_will_rewind | 0 | Curl_easy * | +| (Curl_easy *) | | Curl_init_userdefined | 0 | Curl_easy * | +| (Curl_easy *) | | Curl_psl_use | 0 | Curl_easy * | +| (Curl_easy *) | | Curl_req_send_more | 0 | Curl_easy * | +| (Curl_easy *) | | Curl_ssl_easy_config_init | 0 | Curl_easy * | +| (Curl_easy *) | | Curl_updatesocket | 0 | Curl_easy * | +| (Curl_easy **) | | Curl_close | 0 | Curl_easy ** | +| (Curl_easy *,CURLcode,bool) | | Curl_http_done | 0 | Curl_easy * | +| (Curl_easy *,CURLcode,bool) | | Curl_http_done | 1 | CURLcode | +| (Curl_easy *,CURLcode,bool) | | Curl_http_done | 2 | bool | +| (Curl_easy *,CURLoption,va_list) | | Curl_vsetopt | 0 | Curl_easy * | +| (Curl_easy *,CURLoption,va_list) | | Curl_vsetopt | 1 | CURLoption | +| (Curl_easy *,CURLoption,va_list) | | Curl_vsetopt | 2 | va_list | +| (Curl_easy *,CookieInfo *,bool,bool,const char *,const char *,const char *,bool) | | Curl_cookie_add | 0 | Curl_easy * | +| (Curl_easy *,CookieInfo *,bool,bool,const char *,const char *,const char *,bool) | | Curl_cookie_add | 1 | CookieInfo * | +| (Curl_easy *,CookieInfo *,bool,bool,const char *,const char *,const char *,bool) | | Curl_cookie_add | 2 | bool | +| (Curl_easy *,CookieInfo *,bool,bool,const char *,const char *,const char *,bool) | | Curl_cookie_add | 3 | bool | +| (Curl_easy *,CookieInfo *,bool,bool,const char *,const char *,const char *,bool) | | Curl_cookie_add | 4 | const char * | +| (Curl_easy *,CookieInfo *,bool,bool,const char *,const char *,const char *,bool) | | Curl_cookie_add | 5 | const char * | +| (Curl_easy *,CookieInfo *,bool,bool,const char *,const char *,const char *,bool) | | Curl_cookie_add | 6 | const char * | +| (Curl_easy *,CookieInfo *,bool,bool,const char *,const char *,const char *,bool) | | Curl_cookie_add | 7 | bool | +| (Curl_easy *,CookieInfo *,const char *,const char *,bool,Curl_llist *) | | Curl_cookie_getlist | 0 | Curl_easy * | +| (Curl_easy *,CookieInfo *,const char *,const char *,bool,Curl_llist *) | | Curl_cookie_getlist | 1 | CookieInfo * | +| (Curl_easy *,CookieInfo *,const char *,const char *,bool,Curl_llist *) | | Curl_cookie_getlist | 2 | const char * | +| (Curl_easy *,CookieInfo *,const char *,const char *,bool,Curl_llist *) | | Curl_cookie_getlist | 3 | const char * | +| (Curl_easy *,CookieInfo *,const char *,const char *,bool,Curl_llist *) | | Curl_cookie_getlist | 4 | bool | +| (Curl_easy *,CookieInfo *,const char *,const char *,bool,Curl_llist *) | | Curl_cookie_getlist | 5 | Curl_llist * | +| (Curl_easy *,Curl_addrinfo *,const char *,size_t,int,bool) | | Curl_cache_addr | 0 | Curl_easy * | +| (Curl_easy *,Curl_addrinfo *,const char *,size_t,int,bool) | | Curl_cache_addr | 1 | Curl_addrinfo * | +| (Curl_easy *,Curl_addrinfo *,const char *,size_t,int,bool) | | Curl_cache_addr | 2 | const char * | +| (Curl_easy *,Curl_addrinfo *,const char *,size_t,int,bool) | | Curl_cache_addr | 3 | size_t | +| (Curl_easy *,Curl_addrinfo *,const char *,size_t,int,bool) | | Curl_cache_addr | 4 | int | +| (Curl_easy *,Curl_addrinfo *,const char *,size_t,int,bool) | | Curl_cache_addr | 5 | bool | +| (Curl_easy *,Curl_chunker *) | | Curl_httpchunk_free | 0 | Curl_easy * | +| (Curl_easy *,Curl_chunker *) | | Curl_httpchunk_free | 1 | Curl_chunker * | +| (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_init | 0 | Curl_easy * | +| (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_init | 1 | Curl_chunker * | +| (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_init | 2 | bool | +| (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_reset | 0 | Curl_easy * | +| (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_reset | 1 | Curl_chunker * | +| (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_reset | 2 | bool | +| (Curl_easy *,Curl_chunker *,char *,size_t,size_t *) | | Curl_httpchunk_read | 0 | Curl_easy * | +| (Curl_easy *,Curl_chunker *,char *,size_t,size_t *) | | Curl_httpchunk_read | 1 | Curl_chunker * | +| (Curl_easy *,Curl_chunker *,char *,size_t,size_t *) | | Curl_httpchunk_read | 2 | char * | +| (Curl_easy *,Curl_chunker *,char *,size_t,size_t *) | | Curl_httpchunk_read | 3 | size_t | +| (Curl_easy *,Curl_chunker *,char *,size_t,size_t *) | | Curl_httpchunk_read | 4 | size_t * | +| (Curl_easy *,Curl_creader *) | | Curl_creader_add | 0 | Curl_easy * | +| (Curl_easy *,Curl_creader *) | | Curl_creader_add | 1 | Curl_creader * | +| (Curl_easy *,Curl_creader *) | | Curl_creader_set | 0 | Curl_easy * | +| (Curl_easy *,Curl_creader *) | | Curl_creader_set | 1 | Curl_creader * | +| (Curl_easy *,Curl_cwriter *) | | Curl_cwriter_add | 0 | Curl_easy * | +| (Curl_easy *,Curl_cwriter *) | | Curl_cwriter_add | 1 | Curl_cwriter * | +| (Curl_easy *,Curl_dns_entry **) | | Curl_resolv_check | 0 | Curl_easy * | +| (Curl_easy *,Curl_dns_entry **) | | Curl_resolv_check | 1 | Curl_dns_entry ** | +| (Curl_easy *,Curl_dns_entry **) | | Curl_resolv_unlink | 0 | Curl_easy * | +| (Curl_easy *,Curl_dns_entry **) | | Curl_resolv_unlink | 1 | Curl_dns_entry ** | +| (Curl_easy *,altsvcinfo *,const char *,alpnid,const char *,unsigned short) | | Curl_altsvc_parse | 0 | Curl_easy * | +| (Curl_easy *,altsvcinfo *,const char *,alpnid,const char *,unsigned short) | | Curl_altsvc_parse | 1 | altsvcinfo * | +| (Curl_easy *,altsvcinfo *,const char *,alpnid,const char *,unsigned short) | | Curl_altsvc_parse | 2 | const char * | +| (Curl_easy *,altsvcinfo *,const char *,alpnid,const char *,unsigned short) | | Curl_altsvc_parse | 3 | alpnid | +| (Curl_easy *,altsvcinfo *,const char *,alpnid,const char *,unsigned short) | | Curl_altsvc_parse | 4 | const char * | +| (Curl_easy *,altsvcinfo *,const char *,alpnid,const char *,unsigned short) | | Curl_altsvc_parse | 5 | unsigned short | +| (Curl_easy *,bool *) | | Curl_http | 0 | Curl_easy * | +| (Curl_easy *,bool *) | | Curl_http | 1 | bool * | +| (Curl_easy *,bool *) | | Curl_http_connect | 0 | Curl_easy * | +| (Curl_easy *,bool *) | | Curl_http_connect | 1 | bool * | +| (Curl_easy *,bool *) | | Curl_once_resolved | 0 | Curl_easy * | +| (Curl_easy *,bool *) | | Curl_once_resolved | 1 | bool * | +| (Curl_easy *,bool *,bool *) | | Curl_connect | 0 | Curl_easy * | +| (Curl_easy *,bool *,bool *) | | Curl_connect | 1 | bool * | +| (Curl_easy *,bool *,bool *) | | Curl_connect | 2 | bool * | +| (Curl_easy *,bool) | | Curl_creader_set_rewind | 0 | Curl_easy * | +| (Curl_easy *,bool) | | Curl_creader_set_rewind | 1 | bool | +| (Curl_easy *,bool) | | Curl_set_in_callback | 0 | Curl_easy * | +| (Curl_easy *,bool) | | Curl_set_in_callback | 1 | bool | +| (Curl_easy *,bool,dynbuf *) | | Curl_add_custom_headers | 0 | Curl_easy * | +| (Curl_easy *,bool,dynbuf *) | | Curl_add_custom_headers | 1 | bool | +| (Curl_easy *,bool,dynbuf *) | | Curl_add_custom_headers | 2 | dynbuf * | +| (Curl_easy *,char **) | | Curl_retry_request | 0 | Curl_easy * | +| (Curl_easy *,char **) | | Curl_retry_request | 1 | char ** | +| (Curl_easy *,char **,size_t *) | | Curl_multi_xfer_buf_borrow | 0 | Curl_easy * | +| (Curl_easy *,char **,size_t *) | | Curl_multi_xfer_buf_borrow | 1 | char ** | +| (Curl_easy *,char **,size_t *) | | Curl_multi_xfer_buf_borrow | 2 | size_t * | +| (Curl_easy *,char **,size_t *) | | Curl_multi_xfer_ulbuf_borrow | 0 | Curl_easy * | +| (Curl_easy *,char **,size_t *) | | Curl_multi_xfer_ulbuf_borrow | 1 | char ** | +| (Curl_easy *,char **,size_t *) | | Curl_multi_xfer_ulbuf_borrow | 2 | size_t * | +| (Curl_easy *,char *,size_t,size_t *,bool *) | | Curl_client_read | 0 | Curl_easy * | +| (Curl_easy *,char *,size_t,size_t *,bool *) | | Curl_client_read | 1 | char * | +| (Curl_easy *,char *,size_t,size_t *,bool *) | | Curl_client_read | 2 | size_t | +| (Curl_easy *,char *,size_t,size_t *,bool *) | | Curl_client_read | 3 | size_t * | +| (Curl_easy *,char *,size_t,size_t *,bool *) | | Curl_client_read | 4 | bool * | +| (Curl_easy *,connectdata *) | | Curl_attach_connection | 0 | Curl_easy * | +| (Curl_easy *,connectdata *) | | Curl_attach_connection | 1 | connectdata * | +| (Curl_easy *,connectdata *) | | Curl_cpool_add_conn | 0 | Curl_easy * | +| (Curl_easy *,connectdata *) | | Curl_cpool_add_conn | 1 | connectdata * | +| (Curl_easy *,connectdata *) | | Curl_cpool_check_limits | 0 | Curl_easy * | +| (Curl_easy *,connectdata *) | | Curl_cpool_check_limits | 1 | connectdata * | +| (Curl_easy *,connectdata *,Curl_cpool_conn_do_cb *,void *) | | Curl_cpool_do_locked | 0 | Curl_easy * | +| (Curl_easy *,connectdata *,Curl_cpool_conn_do_cb *,void *) | | Curl_cpool_do_locked | 1 | connectdata * | +| (Curl_easy *,connectdata *,Curl_cpool_conn_do_cb *,void *) | | Curl_cpool_do_locked | 2 | Curl_cpool_conn_do_cb * | +| (Curl_easy *,connectdata *,Curl_cpool_conn_do_cb *,void *) | | Curl_cpool_do_locked | 3 | void * | +| (Curl_easy *,connectdata *,bool) | | Curl_cpool_disconnect | 0 | Curl_easy * | +| (Curl_easy *,connectdata *,bool) | | Curl_cpool_disconnect | 1 | connectdata * | +| (Curl_easy *,connectdata *,bool) | | Curl_cpool_disconnect | 2 | bool | +| (Curl_easy *,connectdata *,bool) | | Curl_on_disconnect | 0 | Curl_easy * | +| (Curl_easy *,connectdata *,bool) | | Curl_on_disconnect | 1 | connectdata * | +| (Curl_easy *,connectdata *,bool) | | Curl_on_disconnect | 2 | bool | +| (Curl_easy *,connectdata *,const char **,Curl_HttpReq *) | | Curl_http_method | 0 | Curl_easy * | +| (Curl_easy *,connectdata *,const char **,Curl_HttpReq *) | | Curl_http_method | 1 | connectdata * | +| (Curl_easy *,connectdata *,const char **,Curl_HttpReq *) | | Curl_http_method | 2 | const char ** | +| (Curl_easy *,connectdata *,const char **,Curl_HttpReq *) | | Curl_http_method | 3 | Curl_HttpReq * | +| (Curl_easy *,connectdata *,curl_socket_t *) | | Curl_http_getsock_do | 0 | Curl_easy * | +| (Curl_easy *,connectdata *,curl_socket_t *) | | Curl_http_getsock_do | 1 | connectdata * | +| (Curl_easy *,connectdata *,curl_socket_t *) | | Curl_http_getsock_do | 2 | curl_socket_t * | +| (Curl_easy *,connectdata *,curltime *) | | Curl_conn_upkeep | 0 | Curl_easy * | +| (Curl_easy *,connectdata *,curltime *) | | Curl_conn_upkeep | 1 | connectdata * | +| (Curl_easy *,connectdata *,curltime *) | | Curl_conn_upkeep | 2 | curltime * | +| (Curl_easy *,connectdata *,int) | | Curl_conn_cf_discard_all | 0 | Curl_easy * | +| (Curl_easy *,connectdata *,int) | | Curl_conn_cf_discard_all | 1 | connectdata * | +| (Curl_easy *,connectdata *,int) | | Curl_conn_cf_discard_all | 2 | int | +| (Curl_easy *,connectdata *,int) | | Curl_http2_may_switch | 0 | Curl_easy * | +| (Curl_easy *,connectdata *,int) | | Curl_http2_may_switch | 1 | connectdata * | +| (Curl_easy *,connectdata *,int) | | Curl_http2_may_switch | 2 | int | +| (Curl_easy *,connectdata *,int) | | Curl_http2_switch | 0 | Curl_easy * | +| (Curl_easy *,connectdata *,int) | | Curl_http2_switch | 1 | connectdata * | +| (Curl_easy *,connectdata *,int) | | Curl_http2_switch | 2 | int | +| (Curl_easy *,connectdata *,int) | | Curl_ssl_cfilter_add | 0 | Curl_easy * | +| (Curl_easy *,connectdata *,int) | | Curl_ssl_cfilter_add | 1 | connectdata * | +| (Curl_easy *,connectdata *,int) | | Curl_ssl_cfilter_add | 2 | int | +| (Curl_easy *,connectdata *,int,Curl_cfilter *) | | Curl_conn_cf_add | 0 | Curl_easy * | +| (Curl_easy *,connectdata *,int,Curl_cfilter *) | | Curl_conn_cf_add | 1 | connectdata * | +| (Curl_easy *,connectdata *,int,Curl_cfilter *) | | Curl_conn_cf_add | 2 | int | +| (Curl_easy *,connectdata *,int,Curl_cfilter *) | | Curl_conn_cf_add | 3 | Curl_cfilter * | +| (Curl_easy *,connectdata *,int,const Curl_dns_entry *) | | Curl_cf_https_setup | 0 | Curl_easy * | +| (Curl_easy *,connectdata *,int,const Curl_dns_entry *) | | Curl_cf_https_setup | 1 | connectdata * | +| (Curl_easy *,connectdata *,int,const Curl_dns_entry *) | | Curl_cf_https_setup | 2 | int | +| (Curl_easy *,connectdata *,int,const Curl_dns_entry *) | | Curl_cf_https_setup | 3 | const Curl_dns_entry * | +| (Curl_easy *,connectdata *,int,const Curl_dns_entry *,int) | | Curl_conn_setup | 0 | Curl_easy * | +| (Curl_easy *,connectdata *,int,const Curl_dns_entry *,int) | | Curl_conn_setup | 1 | connectdata * | +| (Curl_easy *,connectdata *,int,const Curl_dns_entry *,int) | | Curl_conn_setup | 2 | int | +| (Curl_easy *,connectdata *,int,const Curl_dns_entry *,int) | | Curl_conn_setup | 3 | const Curl_dns_entry * | +| (Curl_easy *,connectdata *,int,const Curl_dns_entry *,int) | | Curl_conn_setup | 4 | int | +| (Curl_easy *,connectdata *,int,const char *,size_t) | | Curl_http2_upgrade | 0 | Curl_easy * | +| (Curl_easy *,connectdata *,int,const char *,size_t) | | Curl_http2_upgrade | 1 | connectdata * | +| (Curl_easy *,connectdata *,int,const char *,size_t) | | Curl_http2_upgrade | 2 | int | +| (Curl_easy *,connectdata *,int,const char *,size_t) | | Curl_http2_upgrade | 3 | const char * | +| (Curl_easy *,connectdata *,int,const char *,size_t) | | Curl_http2_upgrade | 4 | size_t | +| (Curl_easy *,connectdata *,int,curl_socket_t *) | | Curl_conn_tcp_listen_set | 0 | Curl_easy * | +| (Curl_easy *,connectdata *,int,curl_socket_t *) | | Curl_conn_tcp_listen_set | 1 | connectdata * | +| (Curl_easy *,connectdata *,int,curl_socket_t *) | | Curl_conn_tcp_listen_set | 2 | int | +| (Curl_easy *,connectdata *,int,curl_socket_t *) | | Curl_conn_tcp_listen_set | 3 | curl_socket_t * | +| (Curl_easy *,const Curl_addrinfo *,Curl_sockaddr_ex *,int,curl_socket_t *) | | Curl_socket_open | 0 | Curl_easy * | +| (Curl_easy *,const Curl_addrinfo *,Curl_sockaddr_ex *,int,curl_socket_t *) | | Curl_socket_open | 1 | const Curl_addrinfo * | +| (Curl_easy *,const Curl_addrinfo *,Curl_sockaddr_ex *,int,curl_socket_t *) | | Curl_socket_open | 2 | Curl_sockaddr_ex * | +| (Curl_easy *,const Curl_addrinfo *,Curl_sockaddr_ex *,int,curl_socket_t *) | | Curl_socket_open | 3 | int | +| (Curl_easy *,const Curl_addrinfo *,Curl_sockaddr_ex *,int,curl_socket_t *) | | Curl_socket_open | 4 | curl_socket_t * | +| (Curl_easy *,const Curl_crtype *) | | Curl_creader_get_by_type | 0 | Curl_easy * | +| (Curl_easy *,const Curl_crtype *) | | Curl_creader_get_by_type | 1 | const Curl_crtype * | +| (Curl_easy *,const Curl_cwtype *) | | Curl_cwriter_get_by_type | 0 | Curl_easy * | +| (Curl_easy *,const Curl_cwtype *) | | Curl_cwriter_get_by_type | 1 | const Curl_cwtype * | +| (Curl_easy *,const bufref *,ntlmdata *) | | Curl_auth_decode_ntlm_type2_message | 0 | Curl_easy * | +| (Curl_easy *,const bufref *,ntlmdata *) | | Curl_auth_decode_ntlm_type2_message | 1 | const bufref * | +| (Curl_easy *,const bufref *,ntlmdata *) | | Curl_auth_decode_ntlm_type2_message | 2 | ntlmdata * | +| (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 0 | Curl_easy * | +| (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | const char * | +| (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 0 | Curl_easy * | +| (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | const char * | +| (Curl_easy *,const char *,CookieInfo *,bool) | | Curl_cookie_init | 0 | Curl_easy * | +| (Curl_easy *,const char *,CookieInfo *,bool) | | Curl_cookie_init | 1 | const char * | +| (Curl_easy *,const char *,CookieInfo *,bool) | | Curl_cookie_init | 2 | CookieInfo * | +| (Curl_easy *,const char *,CookieInfo *,bool) | | Curl_cookie_init | 3 | bool | +| (Curl_easy *,const char *,FILE **,char **) | | Curl_fopen | 0 | Curl_easy * | +| (Curl_easy *,const char *,FILE **,char **) | | Curl_fopen | 1 | const char * | +| (Curl_easy *,const char *,FILE **,char **) | | Curl_fopen | 2 | FILE ** | +| (Curl_easy *,const char *,FILE **,char **) | | Curl_fopen | 3 | char ** | +| (Curl_easy *,const char *,const char *,ntlmdata *,bufref *) | | Curl_auth_create_ntlm_type3_message | 0 | Curl_easy * | +| (Curl_easy *,const char *,const char *,ntlmdata *,bufref *) | | Curl_auth_create_ntlm_type3_message | 1 | const char * | +| (Curl_easy *,const char *,const char *,ntlmdata *,bufref *) | | Curl_auth_create_ntlm_type3_message | 2 | const char * | +| (Curl_easy *,const char *,const char *,ntlmdata *,bufref *) | | Curl_auth_create_ntlm_type3_message | 3 | ntlmdata * | +| (Curl_easy *,const char *,const char *,ntlmdata *,bufref *) | | Curl_auth_create_ntlm_type3_message | 4 | bufref * | +| (Curl_easy *,const char *,int,Curl_dns_entry **,timediff_t) | | Curl_resolv_timeout | 0 | Curl_easy * | +| (Curl_easy *,const char *,int,Curl_dns_entry **,timediff_t) | | Curl_resolv_timeout | 1 | const char * | +| (Curl_easy *,const char *,int,Curl_dns_entry **,timediff_t) | | Curl_resolv_timeout | 2 | int | +| (Curl_easy *,const char *,int,Curl_dns_entry **,timediff_t) | | Curl_resolv_timeout | 3 | Curl_dns_entry ** | +| (Curl_easy *,const char *,int,Curl_dns_entry **,timediff_t) | | Curl_resolv_timeout | 4 | timediff_t | +| (Curl_easy *,const char *,int,bool,Curl_dns_entry **) | | Curl_resolv | 0 | Curl_easy * | +| (Curl_easy *,const char *,int,bool,Curl_dns_entry **) | | Curl_resolv | 1 | const char * | +| (Curl_easy *,const char *,int,bool,Curl_dns_entry **) | | Curl_resolv | 2 | int | +| (Curl_easy *,const char *,int,bool,Curl_dns_entry **) | | Curl_resolv | 3 | bool | +| (Curl_easy *,const char *,int,bool,Curl_dns_entry **) | | Curl_resolv | 4 | Curl_dns_entry ** | +| (Curl_easy *,const char *,size_t,bool) | | Curl_http_write_resp_hd | 0 | Curl_easy * | +| (Curl_easy *,const char *,size_t,bool) | | Curl_http_write_resp_hd | 1 | const char * | +| (Curl_easy *,const char *,size_t,bool) | | Curl_http_write_resp_hd | 2 | size_t | +| (Curl_easy *,const char *,size_t,bool) | | Curl_http_write_resp_hd | 3 | bool | +| (Curl_easy *,const char *,size_t,size_t *) | | Curl_http_write_resp_hds | 0 | Curl_easy * | +| (Curl_easy *,const char *,size_t,size_t *) | | Curl_http_write_resp_hds | 1 | const char * | +| (Curl_easy *,const char *,size_t,size_t *) | | Curl_http_write_resp_hds | 2 | size_t | +| (Curl_easy *,const char *,size_t,size_t *) | | Curl_http_write_resp_hds | 3 | size_t * | +| (Curl_easy *,const void *,size_t,bool,size_t *) | | Curl_xfer_send | 0 | Curl_easy * | +| (Curl_easy *,const void *,size_t,bool,size_t *) | | Curl_xfer_send | 1 | const void * | +| (Curl_easy *,const void *,size_t,bool,size_t *) | | Curl_xfer_send | 2 | size_t | +| (Curl_easy *,const void *,size_t,bool,size_t *) | | Curl_xfer_send | 3 | bool | +| (Curl_easy *,const void *,size_t,bool,size_t *) | | Curl_xfer_send | 4 | size_t * | +| (Curl_easy *,const void *,size_t,size_t *) | | Curl_senddata | 0 | Curl_easy * | +| (Curl_easy *,const void *,size_t,size_t *) | | Curl_senddata | 1 | const void * | +| (Curl_easy *,const void *,size_t,size_t *) | | Curl_senddata | 2 | size_t | +| (Curl_easy *,const void *,size_t,size_t *) | | Curl_senddata | 3 | size_t * | +| (Curl_easy *,curl_mimepart *,const curl_mimepart *) | | Curl_mime_duppart | 0 | Curl_easy * | +| (Curl_easy *,curl_mimepart *,const curl_mimepart *) | | Curl_mime_duppart | 1 | curl_mimepart * | +| (Curl_easy *,curl_mimepart *,const curl_mimepart *) | | Curl_mime_duppart | 2 | const curl_mimepart * | +| (Curl_easy *,curl_off_t) | | Curl_pgrsEarlyData | 0 | Curl_easy * | +| (Curl_easy *,curl_off_t) | | Curl_pgrsEarlyData | 1 | curl_off_t | +| (Curl_easy *,curltime *) | | Curl_sendrecv | 0 | Curl_easy * | +| (Curl_easy *,curltime *) | | Curl_sendrecv | 1 | curltime * | +| (Curl_easy *,curltime *,bool) | | Curl_timeleft | 0 | Curl_easy * | +| (Curl_easy *,curltime *,bool) | | Curl_timeleft | 1 | curltime * | +| (Curl_easy *,curltime *,bool) | | Curl_timeleft | 2 | bool | +| (Curl_easy *,curltime) | | Curl_speedcheck | 0 | Curl_easy * | +| (Curl_easy *,curltime) | | Curl_speedcheck | 1 | curltime | +| (Curl_easy *,dynbuf *) | | Curl_req_send | 0 | Curl_easy * | +| (Curl_easy *,dynbuf *) | | Curl_req_send | 1 | dynbuf * | +| (Curl_easy *,easy_pollset *,..(*)(..)) | | Curl_pollset_add_socks | 0 | Curl_easy * | +| (Curl_easy *,easy_pollset *,..(*)(..)) | | Curl_pollset_add_socks | 1 | easy_pollset * | +| (Curl_easy *,easy_pollset *,..(*)(..)) | | Curl_pollset_add_socks | 2 | ..(*)(..) | +| (Curl_easy *,easy_pollset *,curl_socket_t,bool *,bool *) | | Curl_pollset_check | 0 | Curl_easy * | +| (Curl_easy *,easy_pollset *,curl_socket_t,bool *,bool *) | | Curl_pollset_check | 1 | easy_pollset * | +| (Curl_easy *,easy_pollset *,curl_socket_t,bool *,bool *) | | Curl_pollset_check | 2 | curl_socket_t | +| (Curl_easy *,easy_pollset *,curl_socket_t,bool *,bool *) | | Curl_pollset_check | 3 | bool * | +| (Curl_easy *,easy_pollset *,curl_socket_t,bool *,bool *) | | Curl_pollset_check | 4 | bool * | +| (Curl_easy *,easy_pollset *,curl_socket_t,bool,bool) | | Curl_pollset_set | 0 | Curl_easy * | +| (Curl_easy *,easy_pollset *,curl_socket_t,bool,bool) | | Curl_pollset_set | 1 | easy_pollset * | +| (Curl_easy *,easy_pollset *,curl_socket_t,bool,bool) | | Curl_pollset_set | 2 | curl_socket_t | +| (Curl_easy *,easy_pollset *,curl_socket_t,bool,bool) | | Curl_pollset_set | 3 | bool | +| (Curl_easy *,easy_pollset *,curl_socket_t,bool,bool) | | Curl_pollset_set | 4 | bool | +| (Curl_easy *,easy_pollset *,curl_socket_t,int,int) | | Curl_pollset_change | 0 | Curl_easy * | +| (Curl_easy *,easy_pollset *,curl_socket_t,int,int) | | Curl_pollset_change | 1 | easy_pollset * | +| (Curl_easy *,easy_pollset *,curl_socket_t,int,int) | | Curl_pollset_change | 2 | curl_socket_t | +| (Curl_easy *,easy_pollset *,curl_socket_t,int,int) | | Curl_pollset_change | 3 | int | +| (Curl_easy *,easy_pollset *,curl_socket_t,int,int) | | Curl_pollset_change | 4 | int | +| (Curl_easy *,int) | | Curl_conn_get_socket | 0 | Curl_easy * | +| (Curl_easy *,int) | | Curl_conn_get_socket | 1 | int | +| (Curl_easy *,int,Curl_addrinfo *) | | Curl_addrinfo_callback | 0 | Curl_easy * | +| (Curl_easy *,int,Curl_addrinfo *) | | Curl_addrinfo_callback | 1 | int | +| (Curl_easy *,int,Curl_addrinfo *) | | Curl_addrinfo_callback | 2 | Curl_addrinfo * | +| (Curl_easy *,int,bool,bool *) | | Curl_conn_connect | 0 | Curl_easy * | +| (Curl_easy *,int,bool,bool *) | | Curl_conn_connect | 1 | int | +| (Curl_easy *,int,bool,bool *) | | Curl_conn_connect | 2 | bool | +| (Curl_easy *,int,bool,bool *) | | Curl_conn_connect | 3 | bool * | +| (Curl_easy *,int,const char **,const char **,int *) | | Curl_conn_get_host | 0 | Curl_easy * | +| (Curl_easy *,int,const char **,const char **,int *) | | Curl_conn_get_host | 1 | int | +| (Curl_easy *,int,const char **,const char **,int *) | | Curl_conn_get_host | 2 | const char ** | +| (Curl_easy *,int,const char **,const char **,int *) | | Curl_conn_get_host | 3 | const char ** | +| (Curl_easy *,int,const char **,const char **,int *) | | Curl_conn_get_host | 4 | int * | +| (Curl_easy *,int,curltime *) | | Curl_shutdown_start | 0 | Curl_easy * | +| (Curl_easy *,int,curltime *) | | Curl_shutdown_start | 1 | int | +| (Curl_easy *,int,curltime *) | | Curl_shutdown_start | 2 | curltime * | +| (Curl_easy *,int,pingpong *,int *,size_t *) | | Curl_pp_readresp | 0 | Curl_easy * | +| (Curl_easy *,int,pingpong *,int *,size_t *) | | Curl_pp_readresp | 1 | int | +| (Curl_easy *,int,pingpong *,int *,size_t *) | | Curl_pp_readresp | 2 | pingpong * | +| (Curl_easy *,int,pingpong *,int *,size_t *) | | Curl_pp_readresp | 3 | int * | +| (Curl_easy *,int,pingpong *,int *,size_t *) | | Curl_pp_readresp | 4 | size_t * | +| (Curl_easy *,pingpong *) | | Curl_pp_flushsend | 0 | Curl_easy * | +| (Curl_easy *,pingpong *) | | Curl_pp_flushsend | 1 | pingpong * | +| (Curl_easy *,pingpong *,bool) | | Curl_pp_state_timeout | 0 | Curl_easy * | +| (Curl_easy *,pingpong *,bool) | | Curl_pp_state_timeout | 1 | pingpong * | +| (Curl_easy *,pingpong *,bool) | | Curl_pp_state_timeout | 2 | bool | +| (Curl_easy *,pingpong *,const char *,va_list) | | Curl_pp_vsendf | 0 | Curl_easy * | +| (Curl_easy *,pingpong *,const char *,va_list) | | Curl_pp_vsendf | 1 | pingpong * | +| (Curl_easy *,pingpong *,const char *,va_list) | | Curl_pp_vsendf | 2 | const char * | +| (Curl_easy *,pingpong *,const char *,va_list) | | Curl_pp_vsendf | 3 | va_list | +| (Curl_easy *,pingpong *,curl_socket_t *) | | Curl_pp_getsock | 0 | Curl_easy * | +| (Curl_easy *,pingpong *,curl_socket_t *) | | Curl_pp_getsock | 1 | pingpong * | +| (Curl_easy *,pingpong *,curl_socket_t *) | | Curl_pp_getsock | 2 | curl_socket_t * | +| (Curl_easy *,size_t,bool) | | Curl_bump_headersize | 0 | Curl_easy * | +| (Curl_easy *,size_t,bool) | | Curl_bump_headersize | 1 | size_t | +| (Curl_easy *,size_t,bool) | | Curl_bump_headersize | 2 | bool | +| (Curl_easy *,size_t,char **) | | Curl_multi_xfer_sockbuf_borrow | 0 | Curl_easy * | +| (Curl_easy *,size_t,char **) | | Curl_multi_xfer_sockbuf_borrow | 1 | size_t | +| (Curl_easy *,size_t,char **) | | Curl_multi_xfer_sockbuf_borrow | 2 | char ** | +| (Curl_easy *,ssize_t *,int *) | | Curl_GetFTPResponse | 0 | Curl_easy * | +| (Curl_easy *,ssize_t *,int *) | | Curl_GetFTPResponse | 1 | ssize_t * | +| (Curl_easy *,ssize_t *,int *) | | Curl_GetFTPResponse | 2 | int * | +| (Curl_easy *,timerid,curltime) | | Curl_pgrsTimeWas | 0 | Curl_easy * | +| (Curl_easy *,timerid,curltime) | | Curl_pgrsTimeWas | 1 | timerid | +| (Curl_easy *,timerid,curltime) | | Curl_pgrsTimeWas | 2 | curltime | +| (Curl_easy *,unsigned char *,size_t) | | Curl_rand_alnum | 0 | Curl_easy * | +| (Curl_easy *,unsigned char *,size_t) | | Curl_rand_alnum | 1 | unsigned char * | +| (Curl_easy *,unsigned char *,size_t) | | Curl_rand_alnum | 2 | size_t | +| (Curl_easy *,unsigned char *,size_t) | | Curl_rand_bytes | 0 | Curl_easy * | +| (Curl_easy *,unsigned char *,size_t) | | Curl_rand_bytes | 1 | unsigned char * | +| (Curl_easy *,unsigned char *,size_t) | | Curl_rand_bytes | 2 | size_t | +| (Curl_easy *,unsigned char *,size_t) | | Curl_rand_hex | 0 | Curl_easy * | +| (Curl_easy *,unsigned char *,size_t) | | Curl_rand_hex | 1 | unsigned char * | +| (Curl_easy *,unsigned char *,size_t) | | Curl_rand_hex | 2 | size_t | +| (Curl_easy *,unsigned int) | | Curl_ssl_supports | 0 | Curl_easy * | +| (Curl_easy *,unsigned int) | | Curl_ssl_supports | 1 | unsigned int | +| (Curl_easy *,void **) | | Curl_resolver_init | 0 | Curl_easy * | +| (Curl_easy *,void **) | | Curl_resolver_init | 1 | void ** | +| (Curl_easy *,void **,void *) | | Curl_resolver_duphandle | 0 | Curl_easy * | +| (Curl_easy *,void **,void *) | | Curl_resolver_duphandle | 1 | void ** | +| (Curl_easy *,void **,void *) | | Curl_resolver_duphandle | 2 | void * | +| (Curl_hash *) | | Curl_hash_count | 0 | Curl_hash * | +| (Curl_hash *,Curl_hash_iterator *) | | Curl_hash_start_iterate | 0 | Curl_hash * | +| (Curl_hash *,Curl_hash_iterator *) | | Curl_hash_start_iterate | 1 | Curl_hash_iterator * | +| (Curl_hash *,curl_off_t,void *) | | Curl_hash_offt_set | 0 | Curl_hash * | +| (Curl_hash *,curl_off_t,void *) | | Curl_hash_offt_set | 1 | curl_off_t | +| (Curl_hash *,curl_off_t,void *) | | Curl_hash_offt_set | 2 | void * | +| (Curl_hash *,size_t) | | Curl_init_dnscache | 0 | Curl_hash * | +| (Curl_hash *,size_t) | | Curl_init_dnscache | 1 | size_t | +| (Curl_hash *,size_t,Curl_hash_dtor) | | Curl_hash_offt_init | 0 | Curl_hash * | +| (Curl_hash *,size_t,Curl_hash_dtor) | | Curl_hash_offt_init | 1 | size_t | +| (Curl_hash *,size_t,Curl_hash_dtor) | | Curl_hash_offt_init | 2 | Curl_hash_dtor | +| (Curl_hash *,size_t,hash_function,comp_function,Curl_hash_dtor) | | Curl_hash_init | 0 | Curl_hash * | +| (Curl_hash *,size_t,hash_function,comp_function,Curl_hash_dtor) | | Curl_hash_init | 1 | size_t | +| (Curl_hash *,size_t,hash_function,comp_function,Curl_hash_dtor) | | Curl_hash_init | 2 | hash_function | +| (Curl_hash *,size_t,hash_function,comp_function,Curl_hash_dtor) | | Curl_hash_init | 3 | comp_function | +| (Curl_hash *,size_t,hash_function,comp_function,Curl_hash_dtor) | | Curl_hash_init | 4 | Curl_hash_dtor | +| (Curl_hash *,void *,..(*)(..)) | | Curl_hash_clean_with_criterium | 0 | Curl_hash * | +| (Curl_hash *,void *,..(*)(..)) | | Curl_hash_clean_with_criterium | 1 | void * | +| (Curl_hash *,void *,..(*)(..)) | | Curl_hash_clean_with_criterium | 2 | ..(*)(..) | +| (Curl_hash *,void *,size_t,void *) | | Curl_hash_add | 0 | Curl_hash * | +| (Curl_hash *,void *,size_t,void *) | | Curl_hash_add | 1 | void * | +| (Curl_hash *,void *,size_t,void *) | | Curl_hash_add | 2 | size_t | +| (Curl_hash *,void *,size_t,void *) | | Curl_hash_add | 3 | void * | +| (Curl_hash *,void *,size_t,void *,Curl_hash_elem_dtor) | | Curl_hash_add2 | 0 | Curl_hash * | +| (Curl_hash *,void *,size_t,void *,Curl_hash_elem_dtor) | | Curl_hash_add2 | 1 | void * | +| (Curl_hash *,void *,size_t,void *,Curl_hash_elem_dtor) | | Curl_hash_add2 | 2 | size_t | +| (Curl_hash *,void *,size_t,void *,Curl_hash_elem_dtor) | | Curl_hash_add2 | 3 | void * | +| (Curl_hash *,void *,size_t,void *,Curl_hash_elem_dtor) | | Curl_hash_add2 | 4 | Curl_hash_elem_dtor | +| (Curl_hash_iterator *) | | Curl_hash_next_element | 0 | Curl_hash_iterator * | +| (Curl_llist *) | | Curl_llist_count | 0 | Curl_llist * | +| (Curl_llist *) | | Curl_llist_head | 0 | Curl_llist * | +| (Curl_llist *,Curl_llist_dtor) | | Curl_llist_init | 0 | Curl_llist * | +| (Curl_llist *,Curl_llist_dtor) | | Curl_llist_init | 1 | Curl_llist_dtor | +| (Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *) | | Curl_llist_insert_next | 0 | Curl_llist * | +| (Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *) | | Curl_llist_insert_next | 1 | Curl_llist_node * | +| (Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *) | | Curl_llist_insert_next | 2 | const void * | +| (Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *) | | Curl_llist_insert_next | 3 | Curl_llist_node * | +| (Curl_llist *,const void *,Curl_llist_node *) | | Curl_llist_append | 0 | Curl_llist * | +| (Curl_llist *,const void *,Curl_llist_node *) | | Curl_llist_append | 1 | const void * | +| (Curl_llist *,const void *,Curl_llist_node *) | | Curl_llist_append | 2 | Curl_llist_node * | +| (Curl_llist_node *) | | Curl_node_elem | 0 | Curl_llist_node * | +| (Curl_llist_node *) | | Curl_node_llist | 0 | Curl_llist_node * | +| (Curl_llist_node *) | | Curl_node_next | 0 | Curl_llist_node * | +| (Curl_llist_node *) | | Curl_node_take_elem | 0 | Curl_llist_node * | +| (Curl_multi *) | | Curl_multi_max_concurrent_streams | 0 | Curl_multi * | +| (Curl_multi *,Curl_easy *,connectdata *) | | Curl_multi_add_perform | 0 | Curl_multi * | +| (Curl_multi *,Curl_easy *,connectdata *) | | Curl_multi_add_perform | 1 | Curl_easy * | +| (Curl_multi *,Curl_easy *,connectdata *) | | Curl_multi_add_perform | 2 | connectdata * | +| (Curl_multi *,Curl_easy *,easy_pollset *,easy_pollset *) | | Curl_multi_pollset_ev | 0 | Curl_multi * | +| (Curl_multi *,Curl_easy *,easy_pollset *,easy_pollset *) | | Curl_multi_pollset_ev | 1 | Curl_easy * | +| (Curl_multi *,Curl_easy *,easy_pollset *,easy_pollset *) | | Curl_multi_pollset_ev | 2 | easy_pollset * | +| (Curl_multi *,Curl_easy *,easy_pollset *,easy_pollset *) | | Curl_multi_pollset_ev | 3 | easy_pollset * | +| (Curl_sockaddr_ex *,const Curl_addrinfo *,int) | | Curl_sock_assign_addr | 0 | Curl_sockaddr_ex * | +| (Curl_sockaddr_ex *,const Curl_addrinfo *,int) | | Curl_sock_assign_addr | 1 | const Curl_addrinfo * | +| (Curl_sockaddr_ex *,const Curl_addrinfo *,int) | | Curl_sock_assign_addr | 2 | int | +| (Curl_tree *) | | Curl_splayget | 0 | Curl_tree * | +| (Curl_tree *,Curl_tree *,Curl_tree **) | | Curl_splayremove | 0 | Curl_tree * | +| (Curl_tree *,Curl_tree *,Curl_tree **) | | Curl_splayremove | 1 | Curl_tree * | +| (Curl_tree *,Curl_tree *,Curl_tree **) | | Curl_splayremove | 2 | Curl_tree ** | +| (Curl_tree *,void *) | | Curl_splayset | 0 | Curl_tree * | +| (Curl_tree *,void *) | | Curl_splayset | 1 | void * | +| (Curl_waitfds *,curl_waitfd *,unsigned int) | | Curl_waitfds_init | 0 | Curl_waitfds * | +| (Curl_waitfds *,curl_waitfd *,unsigned int) | | Curl_waitfds_init | 1 | curl_waitfd * | +| (Curl_waitfds *,curl_waitfd *,unsigned int) | | Curl_waitfds_init | 2 | unsigned int | +| (Curl_waitfds *,easy_pollset *) | | Curl_waitfds_add_ps | 0 | Curl_waitfds * | +| (Curl_waitfds *,easy_pollset *) | | Curl_waitfds_add_ps | 1 | easy_pollset * | | (DES_LONG *,DES_key_schedule *,DES_key_schedule *,DES_key_schedule *) | | DES_decrypt3 | 0 | DES_LONG * | | (DES_LONG *,DES_key_schedule *,DES_key_schedule *,DES_key_schedule *) | | DES_decrypt3 | 1 | DES_key_schedule * | | (DES_LONG *,DES_key_schedule *,DES_key_schedule *,DES_key_schedule *) | | DES_decrypt3 | 2 | DES_key_schedule * | @@ -14257,6 +17078,17 @@ getSignatureParameterName | (EVP_CIPHER_CTX *) | | EVP_CIPHER_CTX_buf_noconst | 0 | EVP_CIPHER_CTX * | | (EVP_CIPHER_CTX *) | | EVP_CIPHER_CTX_get1_cipher | 0 | EVP_CIPHER_CTX * | | (EVP_CIPHER_CTX *) | | EVP_CIPHER_CTX_iv_noconst | 0 | EVP_CIPHER_CTX * | +| (EVP_CIPHER_CTX **,..(*)(..),int,unsigned char *,size_t,int) | | _libssh2_cipher_crypt | 0 | EVP_CIPHER_CTX ** | +| (EVP_CIPHER_CTX **,..(*)(..),int,unsigned char *,size_t,int) | | _libssh2_cipher_crypt | 1 | ..(*)(..) | +| (EVP_CIPHER_CTX **,..(*)(..),int,unsigned char *,size_t,int) | | _libssh2_cipher_crypt | 2 | int | +| (EVP_CIPHER_CTX **,..(*)(..),int,unsigned char *,size_t,int) | | _libssh2_cipher_crypt | 3 | unsigned char * | +| (EVP_CIPHER_CTX **,..(*)(..),int,unsigned char *,size_t,int) | | _libssh2_cipher_crypt | 4 | size_t | +| (EVP_CIPHER_CTX **,..(*)(..),int,unsigned char *,size_t,int) | | _libssh2_cipher_crypt | 5 | int | +| (EVP_CIPHER_CTX **,..(*)(..),unsigned char *,unsigned char *,int) | | _libssh2_cipher_init | 0 | EVP_CIPHER_CTX ** | +| (EVP_CIPHER_CTX **,..(*)(..),unsigned char *,unsigned char *,int) | | _libssh2_cipher_init | 1 | ..(*)(..) | +| (EVP_CIPHER_CTX **,..(*)(..),unsigned char *,unsigned char *,int) | | _libssh2_cipher_init | 2 | unsigned char * | +| (EVP_CIPHER_CTX **,..(*)(..),unsigned char *,unsigned char *,int) | | _libssh2_cipher_init | 3 | unsigned char * | +| (EVP_CIPHER_CTX **,..(*)(..),unsigned char *,unsigned char *,int) | | _libssh2_cipher_init | 4 | int | | (EVP_CIPHER_CTX *,ASN1_TYPE *) | | EVP_CIPHER_param_to_asn1 | 0 | EVP_CIPHER_CTX * | | (EVP_CIPHER_CTX *,ASN1_TYPE *) | | EVP_CIPHER_param_to_asn1 | 1 | ASN1_TYPE * | | (EVP_CIPHER_CTX *,ASN1_TYPE *) | | EVP_CIPHER_set_asn1_iv | 0 | EVP_CIPHER_CTX * | @@ -14524,12 +17356,27 @@ getSignatureParameterName | (EVP_KEYMGMT *,void *,char *,size_t) | | evp_keymgmt_util_get_deflt_digest_name | 3 | size_t | | (EVP_MAC *) | | EVP_MAC_CTX_new | 0 | EVP_MAC * | | (EVP_MAC_CTX *) | | EVP_MAC_CTX_get0_mac | 0 | EVP_MAC_CTX * | +| (EVP_MAC_CTX **) | | _libssh2_hmac_cleanup | 0 | EVP_MAC_CTX ** | | (EVP_MAC_CTX **,const OSSL_PARAM[],const char *,const char *,const char *,OSSL_LIB_CTX *) | | ossl_prov_macctx_load_from_params | 0 | EVP_MAC_CTX ** | | (EVP_MAC_CTX **,const OSSL_PARAM[],const char *,const char *,const char *,OSSL_LIB_CTX *) | | ossl_prov_macctx_load_from_params | 1 | const OSSL_PARAM[] | | (EVP_MAC_CTX **,const OSSL_PARAM[],const char *,const char *,const char *,OSSL_LIB_CTX *) | | ossl_prov_macctx_load_from_params | 2 | const char * | | (EVP_MAC_CTX **,const OSSL_PARAM[],const char *,const char *,const char *,OSSL_LIB_CTX *) | | ossl_prov_macctx_load_from_params | 3 | const char * | | (EVP_MAC_CTX **,const OSSL_PARAM[],const char *,const char *,const char *,OSSL_LIB_CTX *) | | ossl_prov_macctx_load_from_params | 4 | const char * | | (EVP_MAC_CTX **,const OSSL_PARAM[],const char *,const char *,const char *,OSSL_LIB_CTX *) | | ossl_prov_macctx_load_from_params | 5 | OSSL_LIB_CTX * | +| (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 0 | EVP_MAC_CTX ** | +| (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 1 | const void * | +| (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 2 | size_t | +| (EVP_MAC_CTX **,void *) | | _libssh2_hmac_final | 0 | EVP_MAC_CTX ** | +| (EVP_MAC_CTX **,void *) | | _libssh2_hmac_final | 1 | void * | +| (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha1_init | 0 | EVP_MAC_CTX ** | +| (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha1_init | 1 | void * | +| (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha1_init | 2 | size_t | +| (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha256_init | 0 | EVP_MAC_CTX ** | +| (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha256_init | 1 | void * | +| (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha256_init | 2 | size_t | +| (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha512_init | 0 | EVP_MAC_CTX ** | +| (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha512_init | 1 | void * | +| (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha512_init | 2 | size_t | | (EVP_MAC_CTX *,const OSSL_PARAM[],const char *,const char *,const char *,const char *,const unsigned char *,size_t) | | ossl_prov_set_macctx | 0 | EVP_MAC_CTX * | | (EVP_MAC_CTX *,const OSSL_PARAM[],const char *,const char *,const char *,const char *,const unsigned char *,size_t) | | ossl_prov_set_macctx | 1 | const OSSL_PARAM[] | | (EVP_MAC_CTX *,const OSSL_PARAM[],const char *,const char *,const char *,const char *,const unsigned char *,size_t) | | ossl_prov_set_macctx | 2 | const char * | @@ -14560,6 +17407,30 @@ getSignatureParameterName | (EVP_MD *,unsigned long) | | EVP_MD_meth_set_flags | 1 | unsigned long | | (EVP_MD_CTX *) | | EVP_MD_CTX_get1_md | 0 | EVP_MD_CTX * | | (EVP_MD_CTX *) | | EVP_MD_CTX_update_fn | 0 | EVP_MD_CTX * | +| (EVP_MD_CTX **) | | _libssh2_sha1_init | 0 | EVP_MD_CTX ** | +| (EVP_MD_CTX **) | | _libssh2_sha256_init | 0 | EVP_MD_CTX ** | +| (EVP_MD_CTX **) | | _libssh2_sha384_init | 0 | EVP_MD_CTX ** | +| (EVP_MD_CTX **) | | _libssh2_sha512_init | 0 | EVP_MD_CTX ** | +| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 0 | EVP_MD_CTX ** | +| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 1 | const void * | +| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 2 | size_t | +| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 0 | EVP_MD_CTX ** | +| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 1 | const void * | +| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 2 | size_t | +| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 0 | EVP_MD_CTX ** | +| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 1 | const void * | +| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 2 | size_t | +| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 0 | EVP_MD_CTX ** | +| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 1 | const void * | +| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 2 | size_t | +| (EVP_MD_CTX **,unsigned char *) | | _libssh2_sha1_final | 0 | EVP_MD_CTX ** | +| (EVP_MD_CTX **,unsigned char *) | | _libssh2_sha1_final | 1 | unsigned char * | +| (EVP_MD_CTX **,unsigned char *) | | _libssh2_sha256_final | 0 | EVP_MD_CTX ** | +| (EVP_MD_CTX **,unsigned char *) | | _libssh2_sha256_final | 1 | unsigned char * | +| (EVP_MD_CTX **,unsigned char *) | | _libssh2_sha384_final | 0 | EVP_MD_CTX ** | +| (EVP_MD_CTX **,unsigned char *) | | _libssh2_sha384_final | 1 | unsigned char * | +| (EVP_MD_CTX **,unsigned char *) | | _libssh2_sha512_final | 0 | EVP_MD_CTX ** | +| (EVP_MD_CTX **,unsigned char *) | | _libssh2_sha512_final | 1 | unsigned char * | | (EVP_MD_CTX *,..(*)(..)) | | EVP_MD_CTX_set_update_fn | 0 | EVP_MD_CTX * | | (EVP_MD_CTX *,..(*)(..)) | | EVP_MD_CTX_set_update_fn | 1 | ..(*)(..) | | (EVP_MD_CTX *,BIO *,X509_ALGOR *) | | ossl_cms_DigestAlgorithm_find_ctx | 0 | EVP_MD_CTX * | @@ -14682,6 +17553,24 @@ getSignatureParameterName | (EVP_PKEY *) | | ossl_evp_pkey_get1_ED25519 | 0 | EVP_PKEY * | | (EVP_PKEY *) | | ossl_evp_pkey_get1_X448 | 0 | EVP_PKEY * | | (EVP_PKEY *) | | ossl_evp_pkey_get1_X25519 | 0 | EVP_PKEY * | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private | 0 | EVP_PKEY ** | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private | 1 | LIBSSH2_SESSION * | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private | 2 | const char * | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private | 3 | const unsigned char * | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_rsa_new_private | 0 | EVP_PKEY ** | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_rsa_new_private | 1 | LIBSSH2_SESSION * | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_rsa_new_private | 2 | const char * | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_rsa_new_private | 3 | const unsigned char * | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory | 0 | EVP_PKEY ** | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory | 1 | LIBSSH2_SESSION * | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory | 2 | const char * | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory | 3 | size_t | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory | 4 | const unsigned char * | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_rsa_new_private_frommemory | 0 | EVP_PKEY ** | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_rsa_new_private_frommemory | 1 | LIBSSH2_SESSION * | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_rsa_new_private_frommemory | 2 | const char * | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_rsa_new_private_frommemory | 3 | size_t | +| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_rsa_new_private_frommemory | 4 | const unsigned char * | | (EVP_PKEY **,const EVP_PKEY *) | | evp_pkey_copy_downgraded | 0 | EVP_PKEY ** | | (EVP_PKEY **,const EVP_PKEY *) | | evp_pkey_copy_downgraded | 1 | const EVP_PKEY * | | (EVP_PKEY **,const char *,const char *,const char *,int,OSSL_LIB_CTX *,const char *) | | OSSL_DECODER_CTX_new_for_pkey | 0 | EVP_PKEY ** | @@ -14710,6 +17599,40 @@ getSignatureParameterName | (EVP_PKEY **,const unsigned char **,long,OSSL_LIB_CTX *,const char *) | | d2i_PUBKEY_ex | 2 | long | | (EVP_PKEY **,const unsigned char **,long,OSSL_LIB_CTX *,const char *) | | d2i_PUBKEY_ex | 3 | OSSL_LIB_CTX * | | (EVP_PKEY **,const unsigned char **,long,OSSL_LIB_CTX *,const char *) | | d2i_PUBKEY_ex | 4 | const char * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *) | | _libssh2_ed25519_new_private_sk | 0 | EVP_PKEY ** | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *) | | _libssh2_ed25519_new_private_sk | 1 | unsigned char * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *) | | _libssh2_ed25519_new_private_sk | 2 | const char ** | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *) | | _libssh2_ed25519_new_private_sk | 3 | const unsigned char ** | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *) | | _libssh2_ed25519_new_private_sk | 4 | size_t * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *) | | _libssh2_ed25519_new_private_sk | 5 | LIBSSH2_SESSION * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *) | | _libssh2_ed25519_new_private_sk | 6 | const char * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *) | | _libssh2_ed25519_new_private_sk | 7 | const uint8_t * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private_sk | 0 | EVP_PKEY ** | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private_sk | 1 | unsigned char * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private_sk | 2 | const char ** | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private_sk | 3 | const unsigned char ** | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private_sk | 4 | size_t * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private_sk | 5 | LIBSSH2_SESSION * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private_sk | 6 | const char * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private_sk | 7 | const unsigned char * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory_sk | 0 | EVP_PKEY ** | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory_sk | 1 | unsigned char * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory_sk | 2 | const char ** | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory_sk | 3 | const unsigned char ** | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory_sk | 4 | size_t * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory_sk | 5 | LIBSSH2_SESSION * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory_sk | 6 | const char * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory_sk | 7 | size_t | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory_sk | 8 | const unsigned char * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ed25519_new_private_frommemory_sk | 0 | EVP_PKEY ** | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ed25519_new_private_frommemory_sk | 1 | unsigned char * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ed25519_new_private_frommemory_sk | 2 | const char ** | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ed25519_new_private_frommemory_sk | 3 | const unsigned char ** | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ed25519_new_private_frommemory_sk | 4 | size_t * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ed25519_new_private_frommemory_sk | 5 | LIBSSH2_SESSION * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ed25519_new_private_frommemory_sk | 6 | const char * | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ed25519_new_private_frommemory_sk | 7 | size_t | +| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ed25519_new_private_frommemory_sk | 8 | const unsigned char * | | (EVP_PKEY *,DH *,dh_st *) | | EVP_PKEY_set1_DH | 0 | EVP_PKEY * | | (EVP_PKEY *,DH *,dh_st *) | | EVP_PKEY_set1_DH | 1 | DH * | | (EVP_PKEY *,DH *,dh_st *) | | EVP_PKEY_set1_DH | 2 | dh_st * | @@ -15466,6 +18389,30 @@ getSignatureParameterName | (FILE *,const X509_REQ *) | | i2d_X509_REQ_fp | 1 | const X509_REQ * | | (FILE *,const X509_SIG *) | | PEM_write_PKCS8 | 0 | FILE * | | (FILE *,const X509_SIG *) | | PEM_write_PKCS8 | 1 | const X509_SIG * | +| (FILE *,const char *,const char *,const char *,...) | | version_etc | 0 | FILE * | +| (FILE *,const char *,const char *,const char *,...) | | version_etc | 1 | const char * | +| (FILE *,const char *,const char *,const char *,...) | | version_etc | 2 | const char * | +| (FILE *,const char *,const char *,const char *,...) | | version_etc | 3 | const char * | +| (FILE *,const char *,const char *,const char *,...) | | version_etc | 4 | ... | +| (FILE *,const char *,const char *,const char *,const char *const *) | | version_etc_ar | 0 | FILE * | +| (FILE *,const char *,const char *,const char *,const char *const *) | | version_etc_ar | 1 | const char * | +| (FILE *,const char *,const char *,const char *,const char *const *) | | version_etc_ar | 2 | const char * | +| (FILE *,const char *,const char *,const char *,const char *const *) | | version_etc_ar | 3 | const char * | +| (FILE *,const char *,const char *,const char *,const char *const *) | | version_etc_ar | 4 | const char *const * | +| (FILE *,const char *,const char *,const char *,const char *const *,size_t) | | version_etc_arn | 0 | FILE * | +| (FILE *,const char *,const char *,const char *,const char *const *,size_t) | | version_etc_arn | 1 | const char * | +| (FILE *,const char *,const char *,const char *,const char *const *,size_t) | | version_etc_arn | 2 | const char * | +| (FILE *,const char *,const char *,const char *,const char *const *,size_t) | | version_etc_arn | 3 | const char * | +| (FILE *,const char *,const char *,const char *,const char *const *,size_t) | | version_etc_arn | 4 | const char *const * | +| (FILE *,const char *,const char *,const char *,const char *const *,size_t) | | version_etc_arn | 5 | size_t | +| (FILE *,const char *,const char *,const char *,va_list) | | version_etc_va | 0 | FILE * | +| (FILE *,const char *,const char *,const char *,va_list) | | version_etc_va | 1 | const char * | +| (FILE *,const char *,const char *,const char *,va_list) | | version_etc_va | 2 | const char * | +| (FILE *,const char *,const char *,const char *,va_list) | | version_etc_va | 3 | const char * | +| (FILE *,const char *,const char *,const char *,va_list) | | version_etc_va | 4 | va_list | +| (FILE *,const char *,va_list) | | curl_mvfprintf | 0 | FILE * | +| (FILE *,const char *,va_list) | | curl_mvfprintf | 1 | const char * | +| (FILE *,const char *,va_list) | | curl_mvfprintf | 2 | va_list | | (FILE *,int *) | | tplt_skip_header | 0 | FILE * | | (FILE *,int *) | | tplt_skip_header | 1 | int * | | (FILE *,int,char *) | | tplt_linedir | 0 | FILE * | @@ -15565,6 +18512,24 @@ getSignatureParameterName | (GOST_KX_MESSAGE **,const unsigned char **,long) | | d2i_GOST_KX_MESSAGE | 0 | GOST_KX_MESSAGE ** | | (GOST_KX_MESSAGE **,const unsigned char **,long) | | d2i_GOST_KX_MESSAGE | 1 | const unsigned char ** | | (GOST_KX_MESSAGE **,const unsigned char **,long) | | d2i_GOST_KX_MESSAGE | 2 | long | +| (GlobalConfig *,char **,const char *) | | get_url_file_name | 0 | GlobalConfig * | +| (GlobalConfig *,char **,const char *) | | get_url_file_name | 1 | char ** | +| (GlobalConfig *,char **,const char *) | | get_url_file_name | 2 | const char * | +| (GlobalConfig *,const char *) | | setvariable | 0 | GlobalConfig * | +| (GlobalConfig *,const char *) | | setvariable | 1 | const char * | +| (GlobalConfig *,const char *,dynbuf *,bool *) | | varexpand | 0 | GlobalConfig * | +| (GlobalConfig *,const char *,dynbuf *,bool *) | | varexpand | 1 | const char * | +| (GlobalConfig *,const char *,dynbuf *,bool *) | | varexpand | 2 | dynbuf * | +| (GlobalConfig *,const char *,dynbuf *,bool *) | | varexpand | 3 | bool * | +| (GlobalConfig *,int,char *[]) | | operate | 0 | GlobalConfig * | +| (GlobalConfig *,int,char *[]) | | operate | 1 | int | +| (GlobalConfig *,int,char *[]) | | operate | 2 | char *[] | +| (GlobalConfig *,int,char *[]) | | parse_args | 0 | GlobalConfig * | +| (GlobalConfig *,int,char *[]) | | parse_args | 1 | int | +| (GlobalConfig *,int,char *[]) | | parse_args | 2 | char *[] | +| (GlobalConfig *,timeval *,bool) | | progress_meter | 0 | GlobalConfig * | +| (GlobalConfig *,timeval *,bool) | | progress_meter | 1 | timeval * | +| (GlobalConfig *,timeval *,bool) | | progress_meter | 2 | bool | | (HANDLE) | CAtlFile | CAtlFile | 0 | HANDLE | | (HINSTANCE,UINT) | CComBSTR | LoadString | 0 | HINSTANCE | | (HINSTANCE,UINT) | CComBSTR | LoadString | 1 | UINT | @@ -15582,6 +18547,8 @@ getSignatureParameterName | (HMAC_CTX *,const void *,int,const EVP_MD *,ENGINE *) | | HMAC_Init_ex | 4 | ENGINE * | | (HMAC_CTX *,unsigned long) | | HMAC_CTX_set_flags | 0 | HMAC_CTX * | | (HMAC_CTX *,unsigned long) | | HMAC_CTX_set_flags | 1 | unsigned long | +| (HMAC_context *,unsigned char *) | | Curl_HMAC_final | 0 | HMAC_context * | +| (HMAC_context *,unsigned char *) | | Curl_HMAC_final | 1 | unsigned char * | | (HT *) | | ossl_ht_count | 0 | HT * | | (HT *,..(*)(..),void *) | | ossl_ht_foreach_until | 0 | HT * | | (HT *,..(*)(..),void *) | | ossl_ht_foreach_until | 1 | ..(*)(..) | @@ -15594,6 +18561,55 @@ getSignatureParameterName | (HT *,size_t,..(*)(..),void *) | | ossl_ht_filter | 1 | size_t | | (HT *,size_t,..(*)(..),void *) | | ossl_ht_filter | 2 | ..(*)(..) | | (HT *,size_t,..(*)(..),void *) | | ossl_ht_filter | 3 | void * | +| (HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineCommand | 0 | HistogramCommand * | +| (HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineCommand | 1 | HistogramCommand * | +| (HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineCommand | 2 | uint32_t * | +| (HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineCommand | 3 | uint32_t * | +| (HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineCommand | 4 | uint32_t * | +| (HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineCommand | 5 | HistogramPair * | +| (HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineCommand | 6 | size_t | +| (HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineCommand | 7 | size_t | +| (HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineCommand | 8 | size_t | +| (HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineCommand | 9 | size_t | +| (HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineDistance | 0 | HistogramDistance * | +| (HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineDistance | 1 | HistogramDistance * | +| (HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineDistance | 2 | uint32_t * | +| (HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineDistance | 3 | uint32_t * | +| (HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineDistance | 4 | uint32_t * | +| (HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineDistance | 5 | HistogramPair * | +| (HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineDistance | 6 | size_t | +| (HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineDistance | 7 | size_t | +| (HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineDistance | 8 | size_t | +| (HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineDistance | 9 | size_t | +| (HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineLiteral | 0 | HistogramLiteral * | +| (HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineLiteral | 1 | HistogramLiteral * | +| (HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineLiteral | 2 | uint32_t * | +| (HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineLiteral | 3 | uint32_t * | +| (HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineLiteral | 4 | uint32_t * | +| (HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineLiteral | 5 | HistogramPair * | +| (HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineLiteral | 6 | size_t | +| (HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineLiteral | 7 | size_t | +| (HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineLiteral | 8 | size_t | +| (HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineLiteral | 9 | size_t | +| (HuffmanCode *,const uint8_t *const,uint16_t *) | | BrotliBuildCodeLengthsHuffmanTable | 0 | HuffmanCode * | +| (HuffmanCode *,const uint8_t *const,uint16_t *) | | BrotliBuildCodeLengthsHuffmanTable | 1 | const uint8_t *const | +| (HuffmanCode *,const uint8_t *const,uint16_t *) | | BrotliBuildCodeLengthsHuffmanTable | 2 | uint16_t * | +| (HuffmanCode *,int,const uint16_t *const,uint16_t *) | | BrotliBuildHuffmanTable | 0 | HuffmanCode * | +| (HuffmanCode *,int,const uint16_t *const,uint16_t *) | | BrotliBuildHuffmanTable | 1 | int | +| (HuffmanCode *,int,const uint16_t *const,uint16_t *) | | BrotliBuildHuffmanTable | 2 | const uint16_t *const | +| (HuffmanCode *,int,const uint16_t *const,uint16_t *) | | BrotliBuildHuffmanTable | 3 | uint16_t * | +| (HuffmanCode *,int,uint16_t *,uint32_t) | | BrotliBuildSimpleHuffmanTable | 0 | HuffmanCode * | +| (HuffmanCode *,int,uint16_t *,uint32_t) | | BrotliBuildSimpleHuffmanTable | 1 | int | +| (HuffmanCode *,int,uint16_t *,uint32_t) | | BrotliBuildSimpleHuffmanTable | 2 | uint16_t * | +| (HuffmanCode *,int,uint16_t *,uint32_t) | | BrotliBuildSimpleHuffmanTable | 3 | uint32_t | +| (HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *) | | BrotliBuildAndStoreHuffmanTreeFast | 0 | HuffmanTree * | +| (HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *) | | BrotliBuildAndStoreHuffmanTreeFast | 1 | const uint32_t * | +| (HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *) | | BrotliBuildAndStoreHuffmanTreeFast | 2 | const size_t | +| (HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *) | | BrotliBuildAndStoreHuffmanTreeFast | 3 | const size_t | +| (HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *) | | BrotliBuildAndStoreHuffmanTreeFast | 4 | uint8_t * | +| (HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *) | | BrotliBuildAndStoreHuffmanTreeFast | 5 | uint16_t * | +| (HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *) | | BrotliBuildAndStoreHuffmanTreeFast | 6 | size_t * | +| (HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *) | | BrotliBuildAndStoreHuffmanTreeFast | 7 | uint8_t * | | (IPAddressChoice *) | | IPAddressChoice_free | 0 | IPAddressChoice * | | (IPAddressChoice **,const unsigned char **,long) | | d2i_IPAddressChoice | 0 | IPAddressChoice ** | | (IPAddressChoice **,const unsigned char **,long) | | d2i_IPAddressChoice | 1 | const unsigned char ** | @@ -15970,6 +18986,530 @@ getSignatureParameterName | (KECCAK1600_CTX *,unsigned char,size_t,size_t) | | ossl_keccak_init | 1 | unsigned char | | (KECCAK1600_CTX *,unsigned char,size_t,size_t) | | ossl_keccak_init | 2 | size_t | | (KECCAK1600_CTX *,unsigned char,size_t,size_t) | | ossl_keccak_init | 3 | size_t | +| (LIBSSH2_AGENT *) | | libssh2_agent_get_identity_path | 0 | LIBSSH2_AGENT * | +| (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 0 | LIBSSH2_AGENT * | +| (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | const char * | +| (LIBSSH2_AGENT *,const char *,libssh2_agent_publickey *) | | libssh2_agent_userauth | 0 | LIBSSH2_AGENT * | +| (LIBSSH2_AGENT *,const char *,libssh2_agent_publickey *) | | libssh2_agent_userauth | 1 | const char * | +| (LIBSSH2_AGENT *,const char *,libssh2_agent_publickey *) | | libssh2_agent_userauth | 2 | libssh2_agent_publickey * | +| (LIBSSH2_AGENT *,libssh2_agent_publickey **,libssh2_agent_publickey *) | | libssh2_agent_get_identity | 0 | LIBSSH2_AGENT * | +| (LIBSSH2_AGENT *,libssh2_agent_publickey **,libssh2_agent_publickey *) | | libssh2_agent_get_identity | 1 | libssh2_agent_publickey ** | +| (LIBSSH2_AGENT *,libssh2_agent_publickey **,libssh2_agent_publickey *) | | libssh2_agent_get_identity | 2 | libssh2_agent_publickey * | +| (LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int) | | libssh2_agent_sign | 0 | LIBSSH2_AGENT * | +| (LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int) | | libssh2_agent_sign | 1 | libssh2_agent_publickey * | +| (LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int) | | libssh2_agent_sign | 2 | unsigned char ** | +| (LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int) | | libssh2_agent_sign | 3 | size_t * | +| (LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int) | | libssh2_agent_sign | 4 | const unsigned char * | +| (LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int) | | libssh2_agent_sign | 5 | size_t | +| (LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int) | | libssh2_agent_sign | 6 | const char * | +| (LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int) | | libssh2_agent_sign | 7 | unsigned int | +| (LIBSSH2_CHANNEL *) | | _libssh2_channel_close | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *) | | _libssh2_channel_free | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *) | | libssh2_channel_close | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *) | | libssh2_channel_eof | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *) | | libssh2_channel_free | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *) | | libssh2_channel_get_exit_status | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *) | | libssh2_channel_request_auth_agent | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *) | | libssh2_channel_send_eof | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *) | | libssh2_channel_wait_closed | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *) | | libssh2_channel_wait_eof | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,char **,size_t *,char **,size_t *,char **,size_t *) | | libssh2_channel_get_exit_signal | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,char **,size_t *,char **,size_t *,char **,size_t *) | | libssh2_channel_get_exit_signal | 1 | char ** | +| (LIBSSH2_CHANNEL *,char **,size_t *,char **,size_t *,char **,size_t *) | | libssh2_channel_get_exit_signal | 2 | size_t * | +| (LIBSSH2_CHANNEL *,char **,size_t *,char **,size_t *,char **,size_t *) | | libssh2_channel_get_exit_signal | 3 | char ** | +| (LIBSSH2_CHANNEL *,char **,size_t *,char **,size_t *,char **,size_t *) | | libssh2_channel_get_exit_signal | 4 | size_t * | +| (LIBSSH2_CHANNEL *,char **,size_t *,char **,size_t *,char **,size_t *) | | libssh2_channel_get_exit_signal | 5 | char ** | +| (LIBSSH2_CHANNEL *,char **,size_t *,char **,size_t *,char **,size_t *) | | libssh2_channel_get_exit_signal | 6 | size_t * | +| (LIBSSH2_CHANNEL *,const char *,size_t) | | libssh2_channel_signal_ex | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,const char *,size_t) | | libssh2_channel_signal_ex | 1 | const char * | +| (LIBSSH2_CHANNEL *,const char *,size_t) | | libssh2_channel_signal_ex | 2 | size_t | +| (LIBSSH2_CHANNEL *,const char *,size_t,const char *,size_t) | | _libssh2_channel_process_startup | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,const char *,size_t,const char *,size_t) | | _libssh2_channel_process_startup | 1 | const char * | +| (LIBSSH2_CHANNEL *,const char *,size_t,const char *,size_t) | | _libssh2_channel_process_startup | 2 | size_t | +| (LIBSSH2_CHANNEL *,const char *,size_t,const char *,size_t) | | _libssh2_channel_process_startup | 3 | const char * | +| (LIBSSH2_CHANNEL *,const char *,size_t,const char *,size_t) | | _libssh2_channel_process_startup | 4 | size_t | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int) | | libssh2_channel_process_startup | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int) | | libssh2_channel_process_startup | 1 | const char * | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int) | | libssh2_channel_process_startup | 2 | unsigned int | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int) | | libssh2_channel_process_startup | 3 | const char * | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int) | | libssh2_channel_process_startup | 4 | unsigned int | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int) | | libssh2_channel_setenv_ex | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int) | | libssh2_channel_setenv_ex | 1 | const char * | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int) | | libssh2_channel_setenv_ex | 2 | unsigned int | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int) | | libssh2_channel_setenv_ex | 3 | const char * | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int) | | libssh2_channel_setenv_ex | 4 | unsigned int | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int) | | libssh2_channel_request_pty_ex | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int) | | libssh2_channel_request_pty_ex | 1 | const char * | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int) | | libssh2_channel_request_pty_ex | 2 | unsigned int | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int) | | libssh2_channel_request_pty_ex | 3 | const char * | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int) | | libssh2_channel_request_pty_ex | 4 | unsigned int | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int) | | libssh2_channel_request_pty_ex | 5 | int | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int) | | libssh2_channel_request_pty_ex | 6 | int | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int) | | libssh2_channel_request_pty_ex | 7 | int | +| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int) | | libssh2_channel_request_pty_ex | 8 | int | +| (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | int | +| (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | int | +| (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | int | +| (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | int | +| (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | int | +| (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | int | +| (LIBSSH2_CHANNEL *,int,char *,size_t) | | _libssh2_channel_read | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,int,char *,size_t) | | _libssh2_channel_read | 1 | int | +| (LIBSSH2_CHANNEL *,int,char *,size_t) | | _libssh2_channel_read | 2 | char * | +| (LIBSSH2_CHANNEL *,int,char *,size_t) | | _libssh2_channel_read | 3 | size_t | +| (LIBSSH2_CHANNEL *,int,char *,size_t) | | libssh2_channel_read_ex | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,int,char *,size_t) | | libssh2_channel_read_ex | 1 | int | +| (LIBSSH2_CHANNEL *,int,char *,size_t) | | libssh2_channel_read_ex | 2 | char * | +| (LIBSSH2_CHANNEL *,int,char *,size_t) | | libssh2_channel_read_ex | 3 | size_t | +| (LIBSSH2_CHANNEL *,int,const char *,const char *,int) | | libssh2_channel_x11_req_ex | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,int,const char *,const char *,int) | | libssh2_channel_x11_req_ex | 1 | int | +| (LIBSSH2_CHANNEL *,int,const char *,const char *,int) | | libssh2_channel_x11_req_ex | 2 | const char * | +| (LIBSSH2_CHANNEL *,int,const char *,const char *,int) | | libssh2_channel_x11_req_ex | 3 | const char * | +| (LIBSSH2_CHANNEL *,int,const char *,const char *,int) | | libssh2_channel_x11_req_ex | 4 | int | +| (LIBSSH2_CHANNEL *,int,const char *,size_t) | | libssh2_channel_write_ex | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,int,const char *,size_t) | | libssh2_channel_write_ex | 1 | int | +| (LIBSSH2_CHANNEL *,int,const char *,size_t) | | libssh2_channel_write_ex | 2 | const char * | +| (LIBSSH2_CHANNEL *,int,const char *,size_t) | | libssh2_channel_write_ex | 3 | size_t | +| (LIBSSH2_CHANNEL *,int,const unsigned char *,size_t) | | _libssh2_channel_write | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,int,const unsigned char *,size_t) | | _libssh2_channel_write | 1 | int | +| (LIBSSH2_CHANNEL *,int,const unsigned char *,size_t) | | _libssh2_channel_write | 2 | const unsigned char * | +| (LIBSSH2_CHANNEL *,int,const unsigned char *,size_t) | | _libssh2_channel_write | 3 | size_t | +| (LIBSSH2_CHANNEL *,int,int,int,int) | | libssh2_channel_request_pty_size_ex | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,int,int,int,int) | | libssh2_channel_request_pty_size_ex | 1 | int | +| (LIBSSH2_CHANNEL *,int,int,int,int) | | libssh2_channel_request_pty_size_ex | 2 | int | +| (LIBSSH2_CHANNEL *,int,int,int,int) | | libssh2_channel_request_pty_size_ex | 3 | int | +| (LIBSSH2_CHANNEL *,int,int,int,int) | | libssh2_channel_request_pty_size_ex | 4 | int | +| (LIBSSH2_CHANNEL *,uint32_t,unsigned char,unsigned int *) | | _libssh2_channel_receive_window_adjust | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,uint32_t,unsigned char,unsigned int *) | | _libssh2_channel_receive_window_adjust | 1 | uint32_t | +| (LIBSSH2_CHANNEL *,uint32_t,unsigned char,unsigned int *) | | _libssh2_channel_receive_window_adjust | 2 | unsigned char | +| (LIBSSH2_CHANNEL *,uint32_t,unsigned char,unsigned int *) | | _libssh2_channel_receive_window_adjust | 3 | unsigned int * | +| (LIBSSH2_CHANNEL *,unsigned long *) | | libssh2_channel_window_write_ex | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,unsigned long *) | | libssh2_channel_window_write_ex | 1 | unsigned long * | +| (LIBSSH2_CHANNEL *,unsigned long *,unsigned long *) | | libssh2_channel_window_read_ex | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,unsigned long *,unsigned long *) | | libssh2_channel_window_read_ex | 1 | unsigned long * | +| (LIBSSH2_CHANNEL *,unsigned long *,unsigned long *) | | libssh2_channel_window_read_ex | 2 | unsigned long * | +| (LIBSSH2_CHANNEL *,unsigned long,unsigned char) | | libssh2_channel_receive_window_adjust | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,unsigned long,unsigned char) | | libssh2_channel_receive_window_adjust | 1 | unsigned long | +| (LIBSSH2_CHANNEL *,unsigned long,unsigned char) | | libssh2_channel_receive_window_adjust | 2 | unsigned char | +| (LIBSSH2_CHANNEL *,unsigned long,unsigned char,unsigned int *) | | libssh2_channel_receive_window_adjust2 | 0 | LIBSSH2_CHANNEL * | +| (LIBSSH2_CHANNEL *,unsigned long,unsigned char,unsigned int *) | | libssh2_channel_receive_window_adjust2 | 1 | unsigned long | +| (LIBSSH2_CHANNEL *,unsigned long,unsigned char,unsigned int *) | | libssh2_channel_receive_window_adjust2 | 2 | unsigned char | +| (LIBSSH2_CHANNEL *,unsigned long,unsigned char,unsigned int *) | | libssh2_channel_receive_window_adjust2 | 3 | unsigned int * | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_addc | 0 | LIBSSH2_KNOWNHOSTS * | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_addc | 1 | const char * | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_addc | 2 | const char * | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_addc | 3 | const char * | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_addc | 4 | size_t | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_addc | 5 | const char * | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_addc | 6 | size_t | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_addc | 7 | int | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_addc | 8 | libssh2_knownhost ** | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_add | 0 | LIBSSH2_KNOWNHOSTS * | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_add | 1 | const char * | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_add | 2 | const char * | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_add | 3 | const char * | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_add | 4 | size_t | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_add | 5 | int | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_add | 6 | libssh2_knownhost ** | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_check | 0 | LIBSSH2_KNOWNHOSTS * | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_check | 1 | const char * | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_check | 2 | const char * | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_check | 3 | size_t | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_check | 4 | int | +| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_check | 5 | libssh2_knownhost ** | +| (LIBSSH2_KNOWNHOSTS *,const char *,int,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_checkp | 0 | LIBSSH2_KNOWNHOSTS * | +| (LIBSSH2_KNOWNHOSTS *,const char *,int,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_checkp | 1 | const char * | +| (LIBSSH2_KNOWNHOSTS *,const char *,int,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_checkp | 2 | int | +| (LIBSSH2_KNOWNHOSTS *,const char *,int,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_checkp | 3 | const char * | +| (LIBSSH2_KNOWNHOSTS *,const char *,int,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_checkp | 4 | size_t | +| (LIBSSH2_KNOWNHOSTS *,const char *,int,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_checkp | 5 | int | +| (LIBSSH2_KNOWNHOSTS *,const char *,int,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_checkp | 6 | libssh2_knownhost ** | +| (LIBSSH2_KNOWNHOSTS *,libssh2_knownhost **,libssh2_knownhost *) | | libssh2_knownhost_get | 0 | LIBSSH2_KNOWNHOSTS * | +| (LIBSSH2_KNOWNHOSTS *,libssh2_knownhost **,libssh2_knownhost *) | | libssh2_knownhost_get | 1 | libssh2_knownhost ** | +| (LIBSSH2_KNOWNHOSTS *,libssh2_knownhost **,libssh2_knownhost *) | | libssh2_knownhost_get | 2 | libssh2_knownhost * | +| (LIBSSH2_KNOWNHOSTS *,libssh2_knownhost *,char *,size_t,size_t *,int) | | libssh2_knownhost_writeline | 0 | LIBSSH2_KNOWNHOSTS * | +| (LIBSSH2_KNOWNHOSTS *,libssh2_knownhost *,char *,size_t,size_t *,int) | | libssh2_knownhost_writeline | 1 | libssh2_knownhost * | +| (LIBSSH2_KNOWNHOSTS *,libssh2_knownhost *,char *,size_t,size_t *,int) | | libssh2_knownhost_writeline | 2 | char * | +| (LIBSSH2_KNOWNHOSTS *,libssh2_knownhost *,char *,size_t,size_t *,int) | | libssh2_knownhost_writeline | 3 | size_t | +| (LIBSSH2_KNOWNHOSTS *,libssh2_knownhost *,char *,size_t,size_t *,int) | | libssh2_knownhost_writeline | 4 | size_t * | +| (LIBSSH2_KNOWNHOSTS *,libssh2_knownhost *,char *,size_t,size_t *,int) | | libssh2_knownhost_writeline | 5 | int | +| (LIBSSH2_LISTENER *) | | _libssh2_channel_forward_cancel | 0 | LIBSSH2_LISTENER * | +| (LIBSSH2_LISTENER *) | | libssh2_channel_forward_accept | 0 | LIBSSH2_LISTENER * | +| (LIBSSH2_LISTENER *) | | libssh2_channel_forward_cancel | 0 | LIBSSH2_LISTENER * | +| (LIBSSH2_POLLFD *,unsigned int,long) | | libssh2_poll | 0 | LIBSSH2_POLLFD * | +| (LIBSSH2_POLLFD *,unsigned int,long) | | libssh2_poll | 1 | unsigned int | +| (LIBSSH2_POLLFD *,unsigned int,long) | | libssh2_poll | 2 | long | +| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long) | | libssh2_publickey_remove_ex | 0 | LIBSSH2_PUBLICKEY * | +| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long) | | libssh2_publickey_remove_ex | 1 | const unsigned char * | +| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long) | | libssh2_publickey_remove_ex | 2 | unsigned long | +| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long) | | libssh2_publickey_remove_ex | 3 | const unsigned char * | +| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long) | | libssh2_publickey_remove_ex | 4 | unsigned long | +| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[]) | | libssh2_publickey_add_ex | 0 | LIBSSH2_PUBLICKEY * | +| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[]) | | libssh2_publickey_add_ex | 1 | const unsigned char * | +| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[]) | | libssh2_publickey_add_ex | 2 | unsigned long | +| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[]) | | libssh2_publickey_add_ex | 3 | const unsigned char * | +| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[]) | | libssh2_publickey_add_ex | 4 | unsigned long | +| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[]) | | libssh2_publickey_add_ex | 5 | char | +| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[]) | | libssh2_publickey_add_ex | 6 | unsigned long | +| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[]) | | libssh2_publickey_add_ex | 7 | const libssh2_publickey_attribute[] | +| (LIBSSH2_PUBLICKEY *,unsigned long *,libssh2_publickey_list **) | | libssh2_publickey_list_fetch | 0 | LIBSSH2_PUBLICKEY * | +| (LIBSSH2_PUBLICKEY *,unsigned long *,libssh2_publickey_list **) | | libssh2_publickey_list_fetch | 1 | unsigned long * | +| (LIBSSH2_PUBLICKEY *,unsigned long *,libssh2_publickey_list **) | | libssh2_publickey_list_fetch | 2 | libssh2_publickey_list ** | +| (LIBSSH2_SESSION *) | | _libssh2_channel_nextid | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *) | | _libssh2_transport_read | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *) | | libssh2_agent_init | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *) | | libssh2_knownhost_init | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *) | | libssh2_publickey_init | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *) | | libssh2_session_abstract | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *) | | libssh2_session_banner_get | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *) | | libssh2_session_block_directions | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *) | | libssh2_session_free | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *) | | libssh2_session_get_blocking | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *) | | libssh2_session_get_read_timeout | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *) | | libssh2_session_get_timeout | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *) | | libssh2_session_last_errno | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *) | | libssh2_sftp_init | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,EVP_PKEY **,unsigned char **,size_t *,libssh2_curve_type) | | _libssh2_ecdsa_create_key | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,EVP_PKEY **,unsigned char **,size_t *,libssh2_curve_type) | | _libssh2_ecdsa_create_key | 1 | EVP_PKEY ** | +| (LIBSSH2_SESSION *,EVP_PKEY **,unsigned char **,size_t *,libssh2_curve_type) | | _libssh2_ecdsa_create_key | 2 | unsigned char ** | +| (LIBSSH2_SESSION *,EVP_PKEY **,unsigned char **,size_t *,libssh2_curve_type) | | _libssh2_ecdsa_create_key | 3 | size_t * | +| (LIBSSH2_SESSION *,EVP_PKEY **,unsigned char **,size_t *,libssh2_curve_type) | | _libssh2_ecdsa_create_key | 4 | libssh2_curve_type | +| (LIBSSH2_SESSION *,char **) | | libssh2_userauth_banner | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,char **) | | libssh2_userauth_banner | 1 | char ** | +| (LIBSSH2_SESSION *,char **,int *,int) | | libssh2_session_last_error | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,char **,int *,int) | | libssh2_session_last_error | 1 | char ** | +| (LIBSSH2_SESSION *,char **,int *,int) | | libssh2_session_last_error | 2 | int * | +| (LIBSSH2_SESSION *,char **,int *,int) | | libssh2_session_last_error | 3 | int | +| (LIBSSH2_SESSION *,char **,size_t *,const char *,size_t) | | _libssh2_base64_decode | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,char **,size_t *,const char *,size_t) | | _libssh2_base64_decode | 1 | char ** | +| (LIBSSH2_SESSION *,char **,size_t *,const char *,size_t) | | _libssh2_base64_decode | 2 | size_t * | +| (LIBSSH2_SESSION *,char **,size_t *,const char *,size_t) | | _libssh2_base64_decode | 3 | const char * | +| (LIBSSH2_SESSION *,char **,size_t *,const char *,size_t) | | _libssh2_base64_decode | 4 | size_t | +| (LIBSSH2_SESSION *,char **,unsigned int *,const char *,unsigned int) | | libssh2_base64_decode | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,char **,unsigned int *,const char *,unsigned int) | | libssh2_base64_decode | 1 | char ** | +| (LIBSSH2_SESSION *,char **,unsigned int *,const char *,unsigned int) | | libssh2_base64_decode | 2 | unsigned int * | +| (LIBSSH2_SESSION *,char **,unsigned int *,const char *,unsigned int) | | libssh2_base64_decode | 3 | const char * | +| (LIBSSH2_SESSION *,char **,unsigned int *,const char *,unsigned int) | | libssh2_base64_decode | 4 | unsigned int | +| (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | const char * | +| (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,const char *,const char *,size_t,unsigned char **,size_t *) | | _libssh2_pem_parse_memory | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,const char *,const char *,size_t,unsigned char **,size_t *) | | _libssh2_pem_parse_memory | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,const char *,const char *,size_t,unsigned char **,size_t *) | | _libssh2_pem_parse_memory | 2 | const char * | +| (LIBSSH2_SESSION *,const char *,const char *,const char *,size_t,unsigned char **,size_t *) | | _libssh2_pem_parse_memory | 3 | const char * | +| (LIBSSH2_SESSION *,const char *,const char *,const char *,size_t,unsigned char **,size_t *) | | _libssh2_pem_parse_memory | 4 | size_t | +| (LIBSSH2_SESSION *,const char *,const char *,const char *,size_t,unsigned char **,size_t *) | | _libssh2_pem_parse_memory | 5 | unsigned char ** | +| (LIBSSH2_SESSION *,const char *,const char *,const char *,size_t,unsigned char **,size_t *) | | _libssh2_pem_parse_memory | 6 | size_t * | +| (LIBSSH2_SESSION *,const char *,const char *,const unsigned char *,FILE *,unsigned char **,size_t *) | | _libssh2_pem_parse | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,const char *,const unsigned char *,FILE *,unsigned char **,size_t *) | | _libssh2_pem_parse | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,const char *,const unsigned char *,FILE *,unsigned char **,size_t *) | | _libssh2_pem_parse | 2 | const char * | +| (LIBSSH2_SESSION *,const char *,const char *,const unsigned char *,FILE *,unsigned char **,size_t *) | | _libssh2_pem_parse | 3 | const unsigned char * | +| (LIBSSH2_SESSION *,const char *,const char *,const unsigned char *,FILE *,unsigned char **,size_t *) | | _libssh2_pem_parse | 4 | FILE * | +| (LIBSSH2_SESSION *,const char *,const char *,const unsigned char *,FILE *,unsigned char **,size_t *) | | _libssh2_pem_parse | 5 | unsigned char ** | +| (LIBSSH2_SESSION *,const char *,const char *,const unsigned char *,FILE *,unsigned char **,size_t *) | | _libssh2_pem_parse | 6 | size_t * | +| (LIBSSH2_SESSION *,const char *,const char *,int) | | libssh2_channel_direct_streamlocal_ex | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,const char *,int) | | libssh2_channel_direct_streamlocal_ex | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,const char *,int) | | libssh2_channel_direct_streamlocal_ex | 2 | const char * | +| (LIBSSH2_SESSION *,const char *,const char *,int) | | libssh2_channel_direct_streamlocal_ex | 3 | int | +| (LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **) | | libssh2_userauth_publickey | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **) | | libssh2_userauth_publickey | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **) | | libssh2_userauth_publickey | 2 | const unsigned char * | +| (LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **) | | libssh2_userauth_publickey | 3 | size_t | +| (LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **) | | libssh2_userauth_publickey | 4 | ..(*)(..) | +| (LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **) | | libssh2_userauth_publickey | 5 | void ** | +| (LIBSSH2_SESSION *,const char *,int,const char *,int) | | libssh2_channel_direct_tcpip_ex | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,int,const char *,int) | | libssh2_channel_direct_tcpip_ex | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,int,const char *,int) | | libssh2_channel_direct_tcpip_ex | 2 | int | +| (LIBSSH2_SESSION *,const char *,int,const char *,int) | | libssh2_channel_direct_tcpip_ex | 3 | const char * | +| (LIBSSH2_SESSION *,const char *,int,const char *,int) | | libssh2_channel_direct_tcpip_ex | 4 | int | +| (LIBSSH2_SESSION *,const char *,int,int *,int) | | libssh2_channel_forward_listen_ex | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,int,int *,int) | | libssh2_channel_forward_listen_ex | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,int,int *,int) | | libssh2_channel_forward_listen_ex | 2 | int | +| (LIBSSH2_SESSION *,const char *,int,int *,int) | | libssh2_channel_forward_listen_ex | 3 | int * | +| (LIBSSH2_SESSION *,const char *,int,int *,int) | | libssh2_channel_forward_listen_ex | 4 | int | +| (LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t) | | libssh2_scp_send64 | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t) | | libssh2_scp_send64 | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t) | | libssh2_scp_send64 | 2 | int | +| (LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t) | | libssh2_scp_send64 | 3 | libssh2_int64_t | +| (LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t) | | libssh2_scp_send64 | 4 | time_t | +| (LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t) | | libssh2_scp_send64 | 5 | time_t | +| (LIBSSH2_SESSION *,const char *,int,size_t,long,long) | | libssh2_scp_send_ex | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,int,size_t,long,long) | | libssh2_scp_send_ex | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,int,size_t,long,long) | | libssh2_scp_send_ex | 2 | int | +| (LIBSSH2_SESSION *,const char *,int,size_t,long,long) | | libssh2_scp_send_ex | 3 | size_t | +| (LIBSSH2_SESSION *,const char *,int,size_t,long,long) | | libssh2_scp_send_ex | 4 | long | +| (LIBSSH2_SESSION *,const char *,int,size_t,long,long) | | libssh2_scp_send_ex | 5 | long | +| (LIBSSH2_SESSION *,const char *,libssh2_struct_stat *) | | libssh2_scp_recv2 | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,libssh2_struct_stat *) | | libssh2_scp_recv2 | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,libssh2_struct_stat *) | | libssh2_scp_recv2 | 2 | libssh2_struct_stat * | +| (LIBSSH2_SESSION *,const char *,size_t,const char *,size_t,const char *,size_t,const char *) | | libssh2_userauth_publickey_frommemory | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,size_t,const char *,size_t,const char *,size_t,const char *) | | libssh2_userauth_publickey_frommemory | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,size_t,const char *,size_t,const char *,size_t,const char *) | | libssh2_userauth_publickey_frommemory | 2 | size_t | +| (LIBSSH2_SESSION *,const char *,size_t,const char *,size_t,const char *,size_t,const char *) | | libssh2_userauth_publickey_frommemory | 3 | const char * | +| (LIBSSH2_SESSION *,const char *,size_t,const char *,size_t,const char *,size_t,const char *) | | libssh2_userauth_publickey_frommemory | 4 | size_t | +| (LIBSSH2_SESSION *,const char *,size_t,const char *,size_t,const char *,size_t,const char *) | | libssh2_userauth_publickey_frommemory | 5 | const char * | +| (LIBSSH2_SESSION *,const char *,size_t,const char *,size_t,const char *,size_t,const char *) | | libssh2_userauth_publickey_frommemory | 6 | size_t | +| (LIBSSH2_SESSION *,const char *,size_t,const char *,size_t,const char *,size_t,const char *) | | libssh2_userauth_publickey_frommemory | 7 | const char * | +| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *) | | _libssh2_userauth_publickey | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *) | | _libssh2_userauth_publickey | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *) | | _libssh2_userauth_publickey | 2 | size_t | +| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *) | | _libssh2_userauth_publickey | 3 | const unsigned char * | +| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *) | | _libssh2_userauth_publickey | 4 | size_t | +| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *) | | _libssh2_userauth_publickey | 5 | ..(*)(..) | +| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *) | | _libssh2_userauth_publickey | 6 | void * | +| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **) | | libssh2_userauth_publickey_sk | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **) | | libssh2_userauth_publickey_sk | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **) | | libssh2_userauth_publickey_sk | 2 | size_t | +| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **) | | libssh2_userauth_publickey_sk | 3 | const unsigned char * | +| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **) | | libssh2_userauth_publickey_sk | 4 | size_t | +| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **) | | libssh2_userauth_publickey_sk | 5 | const char * | +| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **) | | libssh2_userauth_publickey_sk | 6 | size_t | +| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **) | | libssh2_userauth_publickey_sk | 7 | const char * | +| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **) | | libssh2_userauth_publickey_sk | 8 | ..(*)(..) | +| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **) | | libssh2_userauth_publickey_sk | 9 | void ** | +| (LIBSSH2_SESSION *,const char *,stat *) | | libssh2_scp_recv | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,stat *) | | libssh2_scp_recv | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,stat *) | | libssh2_scp_recv | 2 | stat * | +| (LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t) | | _libssh2_channel_open | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t) | | _libssh2_channel_open | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t) | | _libssh2_channel_open | 2 | uint32_t | +| (LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t) | | _libssh2_channel_open | 3 | uint32_t | +| (LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t) | | _libssh2_channel_open | 4 | uint32_t | +| (LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t) | | _libssh2_channel_open | 5 | const unsigned char * | +| (LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t) | | _libssh2_channel_open | 6 | size_t | +| (LIBSSH2_SESSION *,const char *,unsigned int) | | libssh2_userauth_list | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,unsigned int) | | libssh2_userauth_list | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,unsigned int) | | libssh2_userauth_list | 2 | unsigned int | +| (LIBSSH2_SESSION *,const char *,unsigned int,..(*)(..)) | | libssh2_userauth_keyboard_interactive_ex | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,unsigned int,..(*)(..)) | | libssh2_userauth_keyboard_interactive_ex | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,unsigned int,..(*)(..)) | | libssh2_userauth_keyboard_interactive_ex | 2 | unsigned int | +| (LIBSSH2_SESSION *,const char *,unsigned int,..(*)(..)) | | libssh2_userauth_keyboard_interactive_ex | 3 | ..(*)(..) | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *) | | libssh2_userauth_publickey_fromfile_ex | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *) | | libssh2_userauth_publickey_fromfile_ex | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *) | | libssh2_userauth_publickey_fromfile_ex | 2 | unsigned int | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *) | | libssh2_userauth_publickey_fromfile_ex | 3 | const char * | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *) | | libssh2_userauth_publickey_fromfile_ex | 4 | const char * | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *) | | libssh2_userauth_publickey_fromfile_ex | 5 | const char * | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int) | | libssh2_userauth_hostbased_fromfile_ex | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int) | | libssh2_userauth_hostbased_fromfile_ex | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int) | | libssh2_userauth_hostbased_fromfile_ex | 2 | unsigned int | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int) | | libssh2_userauth_hostbased_fromfile_ex | 3 | const char * | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int) | | libssh2_userauth_hostbased_fromfile_ex | 4 | const char * | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int) | | libssh2_userauth_hostbased_fromfile_ex | 5 | const char * | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int) | | libssh2_userauth_hostbased_fromfile_ex | 6 | const char * | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int) | | libssh2_userauth_hostbased_fromfile_ex | 7 | unsigned int | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int) | | libssh2_userauth_hostbased_fromfile_ex | 8 | const char * | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int) | | libssh2_userauth_hostbased_fromfile_ex | 9 | unsigned int | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,unsigned int,..(*)(..)) | | libssh2_userauth_password_ex | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,unsigned int,..(*)(..)) | | libssh2_userauth_password_ex | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,unsigned int,..(*)(..)) | | libssh2_userauth_password_ex | 2 | unsigned int | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,unsigned int,..(*)(..)) | | libssh2_userauth_password_ex | 3 | const char * | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,unsigned int,..(*)(..)) | | libssh2_userauth_password_ex | 4 | unsigned int | +| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,unsigned int,..(*)(..)) | | libssh2_userauth_password_ex | 5 | ..(*)(..) | +| (LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int) | | libssh2_channel_open_ex | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int) | | libssh2_channel_open_ex | 1 | const char * | +| (LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int) | | libssh2_channel_open_ex | 2 | unsigned int | +| (LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int) | | libssh2_channel_open_ex | 3 | unsigned int | +| (LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int) | | libssh2_channel_open_ex | 4 | unsigned int | +| (LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int) | | libssh2_channel_open_ex | 5 | const char * | +| (LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int) | | libssh2_channel_open_ex | 6 | unsigned int | +| (LIBSSH2_SESSION *,const unsigned char *,size_t,const unsigned char *,size_t) | | _libssh2_transport_send | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const unsigned char *,size_t,const unsigned char *,size_t) | | _libssh2_transport_send | 1 | const unsigned char * | +| (LIBSSH2_SESSION *,const unsigned char *,size_t,const unsigned char *,size_t) | | _libssh2_transport_send | 2 | size_t | +| (LIBSSH2_SESSION *,const unsigned char *,size_t,const unsigned char *,size_t) | | _libssh2_transport_send | 3 | const unsigned char * | +| (LIBSSH2_SESSION *,const unsigned char *,size_t,const unsigned char *,size_t) | | _libssh2_transport_send | 4 | size_t | +| (LIBSSH2_SESSION *,const unsigned char *,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_requirev_state_t *) | | _libssh2_packet_requirev | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,const unsigned char *,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_requirev_state_t *) | | _libssh2_packet_requirev | 1 | const unsigned char * | +| (LIBSSH2_SESSION *,const unsigned char *,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_requirev_state_t *) | | _libssh2_packet_requirev | 2 | unsigned char ** | +| (LIBSSH2_SESSION *,const unsigned char *,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_requirev_state_t *) | | _libssh2_packet_requirev | 3 | size_t * | +| (LIBSSH2_SESSION *,const unsigned char *,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_requirev_state_t *) | | _libssh2_packet_requirev | 4 | int | +| (LIBSSH2_SESSION *,const unsigned char *,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_requirev_state_t *) | | _libssh2_packet_requirev | 5 | const unsigned char * | +| (LIBSSH2_SESSION *,const unsigned char *,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_requirev_state_t *) | | _libssh2_packet_requirev | 6 | size_t | +| (LIBSSH2_SESSION *,const unsigned char *,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_requirev_state_t *) | | _libssh2_packet_requirev | 7 | packet_requirev_state_t * | +| (LIBSSH2_SESSION *,int *) | | libssh2_keepalive_send | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,int *) | | libssh2_keepalive_send | 1 | int * | +| (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | int | +| (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | int | +| (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | int | +| (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | int | +| (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | int | +| (LIBSSH2_SESSION *,int,const char *) | | _libssh2_error | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,int,const char *) | | _libssh2_error | 1 | int | +| (LIBSSH2_SESSION *,int,const char *) | | _libssh2_error | 2 | const char * | +| (LIBSSH2_SESSION *,int,const char *) | | libssh2_session_set_last_error | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,int,const char *) | | libssh2_session_set_last_error | 1 | int | +| (LIBSSH2_SESSION *,int,const char *) | | libssh2_session_set_last_error | 2 | const char * | +| (LIBSSH2_SESSION *,int,const char ***) | | libssh2_session_supported_algs | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,int,const char ***) | | libssh2_session_supported_algs | 1 | int | +| (LIBSSH2_SESSION *,int,const char ***) | | libssh2_session_supported_algs | 2 | const char *** | +| (LIBSSH2_SESSION *,int,const char *,const char *) | | libssh2_session_disconnect_ex | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,int,const char *,const char *) | | libssh2_session_disconnect_ex | 1 | int | +| (LIBSSH2_SESSION *,int,const char *,const char *) | | libssh2_session_disconnect_ex | 2 | const char * | +| (LIBSSH2_SESSION *,int,const char *,const char *) | | libssh2_session_disconnect_ex | 3 | const char * | +| (LIBSSH2_SESSION *,int,const char *,int) | | _libssh2_error_flags | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,int,const char *,int) | | _libssh2_error_flags | 1 | int | +| (LIBSSH2_SESSION *,int,const char *,int) | | _libssh2_error_flags | 2 | const char * | +| (LIBSSH2_SESSION *,int,const char *,int) | | _libssh2_error_flags | 3 | int | +| (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 1 | int | +| (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 2 | int | +| (LIBSSH2_SESSION *,int,key_exchange_state_t *) | | _libssh2_kex_exchange | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,int,key_exchange_state_t *) | | _libssh2_kex_exchange | 1 | int | +| (LIBSSH2_SESSION *,int,key_exchange_state_t *) | | _libssh2_kex_exchange | 2 | key_exchange_state_t * | +| (LIBSSH2_SESSION *,int,libssh2_cb_generic *) | | libssh2_session_callback_set2 | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,int,libssh2_cb_generic *) | | libssh2_session_callback_set2 | 1 | int | +| (LIBSSH2_SESSION *,int,libssh2_cb_generic *) | | libssh2_session_callback_set2 | 2 | libssh2_cb_generic * | +| (LIBSSH2_SESSION *,int,unsigned int) | | libssh2_keepalive_config | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,int,unsigned int) | | libssh2_keepalive_config | 1 | int | +| (LIBSSH2_SESSION *,int,unsigned int) | | libssh2_keepalive_config | 2 | unsigned int | +| (LIBSSH2_SESSION *,int,void *) | | libssh2_session_callback_set | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,int,void *) | | libssh2_session_callback_set | 1 | int | +| (LIBSSH2_SESSION *,int,void *) | | libssh2_session_callback_set | 2 | void * | +| (LIBSSH2_SESSION *,libssh2_nonblocking_states *) | | _libssh2_packet_burn | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,libssh2_nonblocking_states *) | | _libssh2_packet_burn | 1 | libssh2_nonblocking_states * | +| (LIBSSH2_SESSION *,libssh2_socket_t) | | libssh2_session_handshake | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,libssh2_socket_t) | | libssh2_session_handshake | 1 | libssh2_socket_t | +| (LIBSSH2_SESSION *,long) | | libssh2_session_set_read_timeout | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,long) | | libssh2_session_set_read_timeout | 1 | long | +| (LIBSSH2_SESSION *,long) | | libssh2_session_set_timeout | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,long) | | libssh2_session_set_timeout | 1 | long | +| (LIBSSH2_SESSION *,size_t *,int *) | | libssh2_session_hostkey | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,size_t *,int *) | | libssh2_session_hostkey | 1 | size_t * | +| (LIBSSH2_SESSION *,size_t *,int *) | | libssh2_session_hostkey | 2 | int * | +| (LIBSSH2_SESSION *,string_buf *,unsigned char **,size_t *) | | _libssh2_copy_string | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,string_buf *,unsigned char **,size_t *) | | _libssh2_copy_string | 1 | string_buf * | +| (LIBSSH2_SESSION *,string_buf *,unsigned char **,size_t *) | | _libssh2_copy_string | 2 | unsigned char ** | +| (LIBSSH2_SESSION *,string_buf *,unsigned char **,size_t *) | | _libssh2_copy_string | 3 | size_t * | +| (LIBSSH2_SESSION *,time_t) | | _libssh2_wait_socket | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,time_t) | | _libssh2_wait_socket | 1 | time_t | +| (LIBSSH2_SESSION *,uint32_t) | | _libssh2_channel_locate | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,uint32_t) | | _libssh2_channel_locate | 1 | uint32_t | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **) | | libssh2_sign_sk | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **) | | libssh2_sign_sk | 1 | unsigned char ** | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **) | | libssh2_sign_sk | 2 | size_t * | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **) | | libssh2_sign_sk | 3 | const unsigned char * | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **) | | libssh2_sign_sk | 4 | size_t | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **) | | libssh2_sign_sk | 5 | void ** | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_pub_priv_keyfilememory | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_pub_priv_keyfilememory | 1 | unsigned char ** | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_pub_priv_keyfilememory | 2 | size_t * | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_pub_priv_keyfilememory | 3 | unsigned char ** | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_pub_priv_keyfilememory | 4 | size_t * | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_pub_priv_keyfilememory | 5 | const char * | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_pub_priv_keyfilememory | 6 | size_t | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_pub_priv_keyfilememory | 7 | const char * | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 1 | unsigned char ** | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 2 | size_t * | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 3 | unsigned char ** | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 4 | size_t * | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 5 | int * | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 6 | unsigned char * | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 7 | const char ** | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 8 | const unsigned char ** | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 9 | size_t * | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 10 | const char * | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 11 | size_t | +| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 12 | const char * | +| (LIBSSH2_SESSION *,unsigned char *,size_t,int,uint32_t) | | _libssh2_packet_add | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,unsigned char *,size_t,int,uint32_t) | | _libssh2_packet_add | 1 | unsigned char * | +| (LIBSSH2_SESSION *,unsigned char *,size_t,int,uint32_t) | | _libssh2_packet_add | 2 | size_t | +| (LIBSSH2_SESSION *,unsigned char *,size_t,int,uint32_t) | | _libssh2_packet_add | 3 | int | +| (LIBSSH2_SESSION *,unsigned char *,size_t,int,uint32_t) | | _libssh2_packet_add | 4 | uint32_t | +| (LIBSSH2_SESSION *,unsigned char,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_require_state_t *) | | _libssh2_packet_require | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,unsigned char,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_require_state_t *) | | _libssh2_packet_require | 1 | unsigned char | +| (LIBSSH2_SESSION *,unsigned char,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_require_state_t *) | | _libssh2_packet_require | 2 | unsigned char ** | +| (LIBSSH2_SESSION *,unsigned char,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_require_state_t *) | | _libssh2_packet_require | 3 | size_t * | +| (LIBSSH2_SESSION *,unsigned char,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_require_state_t *) | | _libssh2_packet_require | 4 | int | +| (LIBSSH2_SESSION *,unsigned char,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_require_state_t *) | | _libssh2_packet_require | 5 | const unsigned char * | +| (LIBSSH2_SESSION *,unsigned char,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_require_state_t *) | | _libssh2_packet_require | 6 | size_t | +| (LIBSSH2_SESSION *,unsigned char,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_require_state_t *) | | _libssh2_packet_require | 7 | packet_require_state_t * | +| (LIBSSH2_SESSION *,void **,LIBSSH2_CHANNEL *,void **) | | libssh2_sftp_dtor | 0 | LIBSSH2_SESSION * | +| (LIBSSH2_SESSION *,void **,LIBSSH2_CHANNEL *,void **) | | libssh2_sftp_dtor | 1 | void ** | +| (LIBSSH2_SESSION *,void **,LIBSSH2_CHANNEL *,void **) | | libssh2_sftp_dtor | 2 | LIBSSH2_CHANNEL * | +| (LIBSSH2_SESSION *,void **,LIBSSH2_CHANNEL *,void **) | | libssh2_sftp_dtor | 3 | void ** | +| (LIBSSH2_SFTP *) | | libssh2_sftp_get_channel | 0 | LIBSSH2_SFTP * | +| (LIBSSH2_SFTP *) | | libssh2_sftp_last_error | 0 | LIBSSH2_SFTP * | +| (LIBSSH2_SFTP *,const char *,size_t,LIBSSH2_SFTP_STATVFS *) | | libssh2_sftp_statvfs | 0 | LIBSSH2_SFTP * | +| (LIBSSH2_SFTP *,const char *,size_t,LIBSSH2_SFTP_STATVFS *) | | libssh2_sftp_statvfs | 1 | const char * | +| (LIBSSH2_SFTP *,const char *,size_t,LIBSSH2_SFTP_STATVFS *) | | libssh2_sftp_statvfs | 2 | size_t | +| (LIBSSH2_SFTP *,const char *,size_t,LIBSSH2_SFTP_STATVFS *) | | libssh2_sftp_statvfs | 3 | LIBSSH2_SFTP_STATVFS * | +| (LIBSSH2_SFTP *,const char *,size_t,const char *,size_t) | | libssh2_sftp_posix_rename_ex | 0 | LIBSSH2_SFTP * | +| (LIBSSH2_SFTP *,const char *,size_t,const char *,size_t) | | libssh2_sftp_posix_rename_ex | 1 | const char * | +| (LIBSSH2_SFTP *,const char *,size_t,const char *,size_t) | | libssh2_sftp_posix_rename_ex | 2 | size_t | +| (LIBSSH2_SFTP *,const char *,size_t,const char *,size_t) | | libssh2_sftp_posix_rename_ex | 3 | const char * | +| (LIBSSH2_SFTP *,const char *,size_t,const char *,size_t) | | libssh2_sftp_posix_rename_ex | 4 | size_t | +| (LIBSSH2_SFTP *,const char *,size_t,unsigned long,long,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_open_ex_r | 0 | LIBSSH2_SFTP * | +| (LIBSSH2_SFTP *,const char *,size_t,unsigned long,long,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_open_ex_r | 1 | const char * | +| (LIBSSH2_SFTP *,const char *,size_t,unsigned long,long,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_open_ex_r | 2 | size_t | +| (LIBSSH2_SFTP *,const char *,size_t,unsigned long,long,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_open_ex_r | 3 | unsigned long | +| (LIBSSH2_SFTP *,const char *,size_t,unsigned long,long,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_open_ex_r | 4 | long | +| (LIBSSH2_SFTP *,const char *,size_t,unsigned long,long,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_open_ex_r | 5 | int | +| (LIBSSH2_SFTP *,const char *,size_t,unsigned long,long,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_open_ex_r | 6 | LIBSSH2_SFTP_ATTRIBUTES * | +| (LIBSSH2_SFTP *,const char *,unsigned int) | | libssh2_sftp_rmdir_ex | 0 | LIBSSH2_SFTP * | +| (LIBSSH2_SFTP *,const char *,unsigned int) | | libssh2_sftp_rmdir_ex | 1 | const char * | +| (LIBSSH2_SFTP *,const char *,unsigned int) | | libssh2_sftp_rmdir_ex | 2 | unsigned int | +| (LIBSSH2_SFTP *,const char *,unsigned int) | | libssh2_sftp_unlink_ex | 0 | LIBSSH2_SFTP * | +| (LIBSSH2_SFTP *,const char *,unsigned int) | | libssh2_sftp_unlink_ex | 1 | const char * | +| (LIBSSH2_SFTP *,const char *,unsigned int) | | libssh2_sftp_unlink_ex | 2 | unsigned int | +| (LIBSSH2_SFTP *,const char *,unsigned int,char *,unsigned int,int) | | libssh2_sftp_symlink_ex | 0 | LIBSSH2_SFTP * | +| (LIBSSH2_SFTP *,const char *,unsigned int,char *,unsigned int,int) | | libssh2_sftp_symlink_ex | 1 | const char * | +| (LIBSSH2_SFTP *,const char *,unsigned int,char *,unsigned int,int) | | libssh2_sftp_symlink_ex | 2 | unsigned int | +| (LIBSSH2_SFTP *,const char *,unsigned int,char *,unsigned int,int) | | libssh2_sftp_symlink_ex | 3 | char * | +| (LIBSSH2_SFTP *,const char *,unsigned int,char *,unsigned int,int) | | libssh2_sftp_symlink_ex | 4 | unsigned int | +| (LIBSSH2_SFTP *,const char *,unsigned int,char *,unsigned int,int) | | libssh2_sftp_symlink_ex | 5 | int | +| (LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long) | | libssh2_sftp_rename_ex | 0 | LIBSSH2_SFTP * | +| (LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long) | | libssh2_sftp_rename_ex | 1 | const char * | +| (LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long) | | libssh2_sftp_rename_ex | 2 | unsigned int | +| (LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long) | | libssh2_sftp_rename_ex | 3 | const char * | +| (LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long) | | libssh2_sftp_rename_ex | 4 | unsigned int | +| (LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long) | | libssh2_sftp_rename_ex | 5 | long | +| (LIBSSH2_SFTP *,const char *,unsigned int,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_stat_ex | 0 | LIBSSH2_SFTP * | +| (LIBSSH2_SFTP *,const char *,unsigned int,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_stat_ex | 1 | const char * | +| (LIBSSH2_SFTP *,const char *,unsigned int,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_stat_ex | 2 | unsigned int | +| (LIBSSH2_SFTP *,const char *,unsigned int,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_stat_ex | 3 | int | +| (LIBSSH2_SFTP *,const char *,unsigned int,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_stat_ex | 4 | LIBSSH2_SFTP_ATTRIBUTES * | +| (LIBSSH2_SFTP *,const char *,unsigned int,long) | | libssh2_sftp_mkdir_ex | 0 | LIBSSH2_SFTP * | +| (LIBSSH2_SFTP *,const char *,unsigned int,long) | | libssh2_sftp_mkdir_ex | 1 | const char * | +| (LIBSSH2_SFTP *,const char *,unsigned int,long) | | libssh2_sftp_mkdir_ex | 2 | unsigned int | +| (LIBSSH2_SFTP *,const char *,unsigned int,long) | | libssh2_sftp_mkdir_ex | 3 | long | +| (LIBSSH2_SFTP *,const char *,unsigned int,unsigned long,long,int) | | libssh2_sftp_open_ex | 0 | LIBSSH2_SFTP * | +| (LIBSSH2_SFTP *,const char *,unsigned int,unsigned long,long,int) | | libssh2_sftp_open_ex | 1 | const char * | +| (LIBSSH2_SFTP *,const char *,unsigned int,unsigned long,long,int) | | libssh2_sftp_open_ex | 2 | unsigned int | +| (LIBSSH2_SFTP *,const char *,unsigned int,unsigned long,long,int) | | libssh2_sftp_open_ex | 3 | unsigned long | +| (LIBSSH2_SFTP *,const char *,unsigned int,unsigned long,long,int) | | libssh2_sftp_open_ex | 4 | long | +| (LIBSSH2_SFTP *,const char *,unsigned int,unsigned long,long,int) | | libssh2_sftp_open_ex | 5 | int | +| (LIBSSH2_SFTP_HANDLE *) | | libssh2_sftp_close_handle | 0 | LIBSSH2_SFTP_HANDLE * | +| (LIBSSH2_SFTP_HANDLE *) | | libssh2_sftp_fsync | 0 | LIBSSH2_SFTP_HANDLE * | +| (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int) | | libssh2_sftp_fstat_ex | 0 | LIBSSH2_SFTP_HANDLE * | +| (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int) | | libssh2_sftp_fstat_ex | 1 | LIBSSH2_SFTP_ATTRIBUTES * | +| (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int) | | libssh2_sftp_fstat_ex | 2 | int | +| (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_STATVFS *) | | libssh2_sftp_fstatvfs | 0 | LIBSSH2_SFTP_HANDLE * | +| (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_STATVFS *) | | libssh2_sftp_fstatvfs | 1 | LIBSSH2_SFTP_STATVFS * | +| (LIBSSH2_SFTP_HANDLE *,char *,size_t) | | libssh2_sftp_read | 0 | LIBSSH2_SFTP_HANDLE * | +| (LIBSSH2_SFTP_HANDLE *,char *,size_t) | | libssh2_sftp_read | 1 | char * | +| (LIBSSH2_SFTP_HANDLE *,char *,size_t) | | libssh2_sftp_read | 2 | size_t | +| (LIBSSH2_SFTP_HANDLE *,char *,size_t,char *,size_t,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_readdir_ex | 0 | LIBSSH2_SFTP_HANDLE * | +| (LIBSSH2_SFTP_HANDLE *,char *,size_t,char *,size_t,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_readdir_ex | 1 | char * | +| (LIBSSH2_SFTP_HANDLE *,char *,size_t,char *,size_t,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_readdir_ex | 2 | size_t | +| (LIBSSH2_SFTP_HANDLE *,char *,size_t,char *,size_t,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_readdir_ex | 3 | char * | +| (LIBSSH2_SFTP_HANDLE *,char *,size_t,char *,size_t,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_readdir_ex | 4 | size_t | +| (LIBSSH2_SFTP_HANDLE *,char *,size_t,char *,size_t,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_readdir_ex | 5 | LIBSSH2_SFTP_ATTRIBUTES * | +| (LIBSSH2_SFTP_HANDLE *,const char *,size_t) | | libssh2_sftp_write | 0 | LIBSSH2_SFTP_HANDLE * | +| (LIBSSH2_SFTP_HANDLE *,const char *,size_t) | | libssh2_sftp_write | 1 | const char * | +| (LIBSSH2_SFTP_HANDLE *,const char *,size_t) | | libssh2_sftp_write | 2 | size_t | | (LPCOLESTR) | CComBSTR | Append | 0 | LPCOLESTR | | (LPCOLESTR) | CComBSTR | CComBSTR | 0 | LPCOLESTR | | (LPCOLESTR,int) | CComBSTR | Append | 0 | LPCOLESTR | @@ -16027,6 +19567,152 @@ getSignatureParameterName | (ML_DSA_SIG *,const uint8_t *,size_t,const ML_DSA_PARAMS *) | | ossl_ml_dsa_sig_decode | 1 | const uint8_t * | | (ML_DSA_SIG *,const uint8_t *,size_t,const ML_DSA_PARAMS *) | | ossl_ml_dsa_sig_decode | 2 | size_t | | (ML_DSA_SIG *,const uint8_t *,size_t,const ML_DSA_PARAMS *) | | ossl_ml_dsa_sig_decode | 3 | const ML_DSA_PARAMS * | +| (MemoryManager *,HistogramCommand *,uint32_t *,size_t) | | BrotliHistogramReindexCommand | 0 | MemoryManager * | +| (MemoryManager *,HistogramCommand *,uint32_t *,size_t) | | BrotliHistogramReindexCommand | 1 | HistogramCommand * | +| (MemoryManager *,HistogramCommand *,uint32_t *,size_t) | | BrotliHistogramReindexCommand | 2 | uint32_t * | +| (MemoryManager *,HistogramCommand *,uint32_t *,size_t) | | BrotliHistogramReindexCommand | 3 | size_t | +| (MemoryManager *,HistogramDistance *,uint32_t *,size_t) | | BrotliHistogramReindexDistance | 0 | MemoryManager * | +| (MemoryManager *,HistogramDistance *,uint32_t *,size_t) | | BrotliHistogramReindexDistance | 1 | HistogramDistance * | +| (MemoryManager *,HistogramDistance *,uint32_t *,size_t) | | BrotliHistogramReindexDistance | 2 | uint32_t * | +| (MemoryManager *,HistogramDistance *,uint32_t *,size_t) | | BrotliHistogramReindexDistance | 3 | size_t | +| (MemoryManager *,HistogramLiteral *,uint32_t *,size_t) | | BrotliHistogramReindexLiteral | 0 | MemoryManager * | +| (MemoryManager *,HistogramLiteral *,uint32_t *,size_t) | | BrotliHistogramReindexLiteral | 1 | HistogramLiteral * | +| (MemoryManager *,HistogramLiteral *,uint32_t *,size_t) | | BrotliHistogramReindexLiteral | 2 | uint32_t * | +| (MemoryManager *,HistogramLiteral *,uint32_t *,size_t) | | BrotliHistogramReindexLiteral | 3 | size_t | +| (MemoryManager *,brotli_alloc_func,brotli_free_func,void *) | | BrotliInitMemoryManager | 0 | MemoryManager * | +| (MemoryManager *,brotli_alloc_func,brotli_free_func,void *) | | BrotliInitMemoryManager | 1 | brotli_alloc_func | +| (MemoryManager *,brotli_alloc_func,brotli_free_func,void *) | | BrotliInitMemoryManager | 2 | brotli_free_func | +| (MemoryManager *,brotli_alloc_func,brotli_free_func,void *) | | BrotliInitMemoryManager | 3 | void * | +| (MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *) | | BrotliSplitBlock | 0 | MemoryManager * | +| (MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *) | | BrotliSplitBlock | 1 | const Command * | +| (MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *) | | BrotliSplitBlock | 2 | const size_t | +| (MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *) | | BrotliSplitBlock | 3 | const uint8_t * | +| (MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *) | | BrotliSplitBlock | 4 | const size_t | +| (MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *) | | BrotliSplitBlock | 5 | const size_t | +| (MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *) | | BrotliSplitBlock | 6 | const BrotliEncoderParams * | +| (MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *) | | BrotliSplitBlock | 7 | BlockSplit * | +| (MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *) | | BrotliSplitBlock | 8 | BlockSplit * | +| (MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *) | | BrotliSplitBlock | 9 | BlockSplit * | +| (MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *) | | BrotliClusterHistogramsCommand | 0 | MemoryManager * | +| (MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *) | | BrotliClusterHistogramsCommand | 1 | const HistogramCommand * | +| (MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *) | | BrotliClusterHistogramsCommand | 2 | const size_t | +| (MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *) | | BrotliClusterHistogramsCommand | 3 | size_t | +| (MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *) | | BrotliClusterHistogramsCommand | 4 | HistogramCommand * | +| (MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *) | | BrotliClusterHistogramsCommand | 5 | size_t * | +| (MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *) | | BrotliClusterHistogramsCommand | 6 | uint32_t * | +| (MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *) | | BrotliClusterHistogramsDistance | 0 | MemoryManager * | +| (MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *) | | BrotliClusterHistogramsDistance | 1 | const HistogramDistance * | +| (MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *) | | BrotliClusterHistogramsDistance | 2 | const size_t | +| (MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *) | | BrotliClusterHistogramsDistance | 3 | size_t | +| (MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *) | | BrotliClusterHistogramsDistance | 4 | HistogramDistance * | +| (MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *) | | BrotliClusterHistogramsDistance | 5 | size_t * | +| (MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *) | | BrotliClusterHistogramsDistance | 6 | uint32_t * | +| (MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *) | | BrotliClusterHistogramsLiteral | 0 | MemoryManager * | +| (MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *) | | BrotliClusterHistogramsLiteral | 1 | const HistogramLiteral * | +| (MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *) | | BrotliClusterHistogramsLiteral | 2 | const size_t | +| (MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *) | | BrotliClusterHistogramsLiteral | 3 | size_t | +| (MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *) | | BrotliClusterHistogramsLiteral | 4 | HistogramLiteral * | +| (MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *) | | BrotliClusterHistogramsLiteral | 5 | size_t * | +| (MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *) | | BrotliClusterHistogramsLiteral | 6 | uint32_t * | +| (MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *) | | BrotliBuildMetaBlock | 0 | MemoryManager * | +| (MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *) | | BrotliBuildMetaBlock | 1 | const uint8_t * | +| (MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *) | | BrotliBuildMetaBlock | 2 | const size_t | +| (MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *) | | BrotliBuildMetaBlock | 3 | const size_t | +| (MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *) | | BrotliBuildMetaBlock | 4 | BrotliEncoderParams * | +| (MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *) | | BrotliBuildMetaBlock | 5 | uint8_t | +| (MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *) | | BrotliBuildMetaBlock | 6 | uint8_t | +| (MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *) | | BrotliBuildMetaBlock | 7 | Command * | +| (MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *) | | BrotliBuildMetaBlock | 8 | size_t | +| (MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *) | | BrotliBuildMetaBlock | 9 | ContextType | +| (MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *) | | BrotliBuildMetaBlock | 10 | MetaBlockSplit * | +| (MemoryManager *,const uint8_t *,size_t) | | CreatePreparedDictionary | 0 | MemoryManager * | +| (MemoryManager *,const uint8_t *,size_t) | | CreatePreparedDictionary | 1 | const uint8_t * | +| (MemoryManager *,const uint8_t *,size_t) | | CreatePreparedDictionary | 2 | size_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockFast | 0 | MemoryManager * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockFast | 1 | const uint8_t * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockFast | 2 | size_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockFast | 3 | size_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockFast | 4 | size_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockFast | 5 | int | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockFast | 6 | const BrotliEncoderParams * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockFast | 7 | const Command * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockFast | 8 | size_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockFast | 9 | size_t * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockFast | 10 | uint8_t * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockTrivial | 0 | MemoryManager * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockTrivial | 1 | const uint8_t * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockTrivial | 2 | size_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockTrivial | 3 | size_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockTrivial | 4 | size_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockTrivial | 5 | int | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockTrivial | 6 | const BrotliEncoderParams * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockTrivial | 7 | const Command * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockTrivial | 8 | size_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockTrivial | 9 | size_t * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockTrivial | 10 | uint8_t * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 0 | MemoryManager * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 1 | const uint8_t * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 2 | size_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 3 | size_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 4 | size_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 5 | uint8_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 6 | uint8_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 7 | int | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 8 | const BrotliEncoderParams * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 9 | ContextType | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 10 | const Command * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 11 | size_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 12 | const MetaBlockSplit * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 13 | size_t * | +| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 14 | uint8_t * | +| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 0 | MemoryManager * | +| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 1 | const uint8_t * | +| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 2 | size_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 3 | size_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 4 | uint8_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 5 | uint8_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 6 | ContextLut | +| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 7 | size_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 8 | const uint32_t * | +| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 9 | const Command * | +| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 10 | size_t | +| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 11 | MetaBlockSplit * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 0 | MemoryManager * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 1 | size_t | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 2 | size_t | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 3 | const uint8_t * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 4 | size_t | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 5 | ContextLut | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 6 | const BrotliEncoderParams * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 7 | Hasher * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 8 | int * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 9 | size_t * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 10 | Command * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 11 | size_t * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 12 | size_t * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 0 | MemoryManager * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 1 | size_t | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 2 | size_t | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 3 | const uint8_t * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 4 | size_t | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 5 | ContextLut | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 6 | const BrotliEncoderParams * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 7 | Hasher * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 8 | int * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 9 | size_t * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 10 | Command * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 11 | size_t * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 12 | size_t * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *) | | BrotliZopfliComputeShortestPath | 0 | MemoryManager * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *) | | BrotliZopfliComputeShortestPath | 1 | size_t | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *) | | BrotliZopfliComputeShortestPath | 2 | size_t | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *) | | BrotliZopfliComputeShortestPath | 3 | const uint8_t * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *) | | BrotliZopfliComputeShortestPath | 4 | size_t | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *) | | BrotliZopfliComputeShortestPath | 5 | ContextLut | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *) | | BrotliZopfliComputeShortestPath | 6 | const BrotliEncoderParams * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *) | | BrotliZopfliComputeShortestPath | 7 | const int * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *) | | BrotliZopfliComputeShortestPath | 8 | Hasher * | +| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *) | | BrotliZopfliComputeShortestPath | 9 | ZopfliNode * | | (NAME_CONSTRAINTS *) | | NAME_CONSTRAINTS_free | 0 | NAME_CONSTRAINTS * | | (NAMING_AUTHORITY *) | | NAMING_AUTHORITY_free | 0 | NAMING_AUTHORITY * | | (NAMING_AUTHORITY **,const unsigned char **,long) | | d2i_NAMING_AUTHORITY | 0 | NAMING_AUTHORITY ** | @@ -18012,6 +21698,19 @@ getSignatureParameterName | (OTHERNAME **,const unsigned char **,long) | | d2i_OTHERNAME | 2 | long | | (OTHERNAME *,OTHERNAME *) | | OTHERNAME_cmp | 0 | OTHERNAME * | | (OTHERNAME *,OTHERNAME *) | | OTHERNAME_cmp | 1 | OTHERNAME * | +| (OperationConfig *) | | new_getout | 0 | OperationConfig * | +| (OperationConfig *,HttpReq,HttpReq *) | | SetHTTPrequest | 0 | OperationConfig * | +| (OperationConfig *,HttpReq,HttpReq *) | | SetHTTPrequest | 1 | HttpReq | +| (OperationConfig *,HttpReq,HttpReq *) | | SetHTTPrequest | 2 | HttpReq * | +| (OperationConfig *,const char *,tool_mime **,tool_mime **,bool) | | formparse | 0 | OperationConfig * | +| (OperationConfig *,const char *,tool_mime **,tool_mime **,bool) | | formparse | 1 | const char * | +| (OperationConfig *,const char *,tool_mime **,tool_mime **,bool) | | formparse | 2 | tool_mime ** | +| (OperationConfig *,const char *,tool_mime **,tool_mime **,bool) | | formparse | 3 | tool_mime ** | +| (OperationConfig *,const char *,tool_mime **,tool_mime **,bool) | | formparse | 4 | bool | +| (OperationConfig *,const char *const *,char **,const char *) | | proto2num | 0 | OperationConfig * | +| (OperationConfig *,const char *const *,char **,const char *) | | proto2num | 1 | const char *const * | +| (OperationConfig *,const char *const *,char **,const char *) | | proto2num | 2 | char ** | +| (OperationConfig *,const char *const *,char **,const char *) | | proto2num | 3 | const char * | | (PACKET *) | | ossl_quic_wire_decode_padding | 0 | PACKET * | | (PACKET *,BIGNUM *) | | ossl_decode_der_integer | 0 | PACKET * | | (PACKET *,BIGNUM *) | | ossl_decode_der_integer | 1 | BIGNUM * | @@ -18471,6 +22170,8 @@ getSignatureParameterName | (PROXY_POLICY **,const unsigned char **,long) | | d2i_PROXY_POLICY | 0 | PROXY_POLICY ** | | (PROXY_POLICY **,const unsigned char **,long) | | d2i_PROXY_POLICY | 1 | const unsigned char ** | | (PROXY_POLICY **,const unsigned char **,long) | | d2i_PROXY_POLICY | 2 | long | +| (ProgressData *,OperationConfig *) | | progressbarinit | 0 | ProgressData * | +| (ProgressData *,OperationConfig *) | | progressbarinit | 1 | OperationConfig * | | (QLOG *,BIO *) | | ossl_qlog_set_sink_bio | 0 | QLOG * | | (QLOG *,BIO *) | | ossl_qlog_set_sink_bio | 1 | BIO * | | (QLOG *,OSSL_TIME) | | ossl_qlog_override_time | 0 | QLOG * | @@ -19090,6 +22791,13 @@ getSignatureParameterName | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | int | | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 0 | RSA_PSS_PARAMS_30 * | | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | int | +| (SASL *,Curl_easy *,bool,saslprogress *) | | Curl_sasl_start | 0 | SASL * | +| (SASL *,Curl_easy *,bool,saslprogress *) | | Curl_sasl_start | 1 | Curl_easy * | +| (SASL *,Curl_easy *,bool,saslprogress *) | | Curl_sasl_start | 2 | bool | +| (SASL *,Curl_easy *,bool,saslprogress *) | | Curl_sasl_start | 3 | saslprogress * | +| (SASL *,Curl_easy *,const SASLproto *) | | Curl_sasl_init | 0 | SASL * | +| (SASL *,Curl_easy *,const SASLproto *) | | Curl_sasl_init | 1 | Curl_easy * | +| (SASL *,Curl_easy *,const SASLproto *) | | Curl_sasl_init | 2 | const SASLproto * | | (SCRYPT_PARAMS *) | | SCRYPT_PARAMS_free | 0 | SCRYPT_PARAMS * | | (SCRYPT_PARAMS **,const unsigned char **,long) | | d2i_SCRYPT_PARAMS | 0 | SCRYPT_PARAMS ** | | (SCRYPT_PARAMS **,const unsigned char **,long) | | d2i_SCRYPT_PARAMS | 1 | const unsigned char ** | @@ -20453,6 +24161,13 @@ getSignatureParameterName | (SXNETID **,const unsigned char **,long) | | d2i_SXNETID | 0 | SXNETID ** | | (SXNETID **,const unsigned char **,long) | | d2i_SXNETID | 1 | const unsigned char ** | | (SXNETID **,const unsigned char **,long) | | d2i_SXNETID | 2 | long | +| (SharedEncoderDictionary *) | | BrotliInitSharedEncoderDictionary | 0 | SharedEncoderDictionary * | +| (SingleRequest *,Curl_easy *) | | Curl_req_hard_reset | 0 | SingleRequest * | +| (SingleRequest *,Curl_easy *) | | Curl_req_hard_reset | 1 | Curl_easy * | +| (SingleRequest *,Curl_easy *) | | Curl_req_soft_reset | 0 | SingleRequest * | +| (SingleRequest *,Curl_easy *) | | Curl_req_soft_reset | 1 | Curl_easy * | +| (SingleRequest *,Curl_easy *) | | Curl_req_start | 0 | SingleRequest * | +| (SingleRequest *,Curl_easy *) | | Curl_req_start | 1 | Curl_easy * | | (StrAccum *,sqlite3_str *,const char *,...) | | sqlite3_str_appendf | 0 | StrAccum * | | (StrAccum *,sqlite3_str *,const char *,...) | | sqlite3_str_appendf | 1 | sqlite3_str * | | (StrAccum *,sqlite3_str *,const char *,...) | | sqlite3_str_appendf | 2 | const char * | @@ -20741,6 +24456,11 @@ getSignatureParameterName | (UI_STRING *) | | UI_get_input_flags | 0 | UI_STRING * | | (UI_STRING *) | | UI_get_result_string_length | 0 | UI_STRING * | | (UI_STRING *) | | UI_get_string_type | 0 | UI_STRING * | +| (URLGlob **) | | glob_cleanup | 0 | URLGlob ** | +| (URLGlob **,char *,curl_off_t *,FILE *) | | glob_url | 0 | URLGlob ** | +| (URLGlob **,char *,curl_off_t *,FILE *) | | glob_url | 1 | char * | +| (URLGlob **,char *,curl_off_t *,FILE *) | | glob_url | 2 | curl_off_t * | +| (URLGlob **,char *,curl_off_t *,FILE *) | | glob_url | 3 | FILE * | | (USERNOTICE *) | | USERNOTICE_free | 0 | USERNOTICE * | | (USERNOTICE **,const unsigned char **,long) | | d2i_USERNOTICE | 0 | USERNOTICE ** | | (USERNOTICE **,const unsigned char **,long) | | d2i_USERNOTICE | 1 | const unsigned char ** | @@ -20852,6 +24572,7 @@ getSignatureParameterName | (WPACKET *,unsigned char *,size_t,size_t) | | WPACKET_init_static_len | 3 | size_t | | (WPACKET *,unsigned int) | | WPACKET_set_flags | 0 | WPACKET * | | (WPACKET *,unsigned int) | | WPACKET_set_flags | 1 | unsigned int | +| (WildcardData **) | | Curl_wildcard_dtor | 0 | WildcardData ** | | (X9_62_CHARACTERISTIC_TWO *) | | X9_62_CHARACTERISTIC_TWO_free | 0 | X9_62_CHARACTERISTIC_TWO * | | (X9_62_PENTANOMIAL *) | | X9_62_PENTANOMIAL_free | 0 | X9_62_PENTANOMIAL * | | (X509 *) | | OSSL_STORE_INFO_new_CERT | 0 | X509 * | @@ -21526,22 +25247,160 @@ getSignatureParameterName | (acttab *,int,int) | | acttab_action | 0 | acttab * | | (acttab *,int,int) | | acttab_action | 1 | int | | (acttab *,int,int) | | acttab_action | 2 | int | +| (alpn_proto_buf *,const alpn_spec *) | | Curl_alpn_to_proto_buf | 0 | alpn_proto_buf * | +| (alpn_proto_buf *,const alpn_spec *) | | Curl_alpn_to_proto_buf | 1 | const alpn_spec * | +| (alpn_proto_buf *,const alpn_spec *) | | Curl_alpn_to_proto_str | 0 | alpn_proto_buf * | +| (alpn_proto_buf *,const alpn_spec *) | | Curl_alpn_to_proto_str | 1 | const alpn_spec * | +| (altsvcinfo **) | | Curl_altsvc_cleanup | 0 | altsvcinfo ** | +| (altsvcinfo *,const long) | | Curl_altsvc_ctrl | 0 | altsvcinfo * | +| (altsvcinfo *,const long) | | Curl_altsvc_ctrl | 1 | const long | +| (brotli_alloc_func,brotli_free_func,void *) | | BrotliCreateManagedDictionary | 0 | brotli_alloc_func | +| (brotli_alloc_func,brotli_free_func,void *) | | BrotliCreateManagedDictionary | 1 | brotli_free_func | +| (brotli_alloc_func,brotli_free_func,void *) | | BrotliCreateManagedDictionary | 2 | void * | +| (brotli_alloc_func,brotli_free_func,void *) | | BrotliDecoderCreateInstance | 0 | brotli_alloc_func | +| (brotli_alloc_func,brotli_free_func,void *) | | BrotliDecoderCreateInstance | 1 | brotli_free_func | +| (brotli_alloc_func,brotli_free_func,void *) | | BrotliDecoderCreateInstance | 2 | void * | +| (brotli_alloc_func,brotli_free_func,void *) | | BrotliEncoderCreateInstance | 0 | brotli_alloc_func | +| (brotli_alloc_func,brotli_free_func,void *) | | BrotliEncoderCreateInstance | 1 | brotli_free_func | +| (brotli_alloc_func,brotli_free_func,void *) | | BrotliEncoderCreateInstance | 2 | void * | +| (brotli_alloc_func,brotli_free_func,void *) | | BrotliSharedDictionaryCreateInstance | 0 | brotli_alloc_func | +| (brotli_alloc_func,brotli_free_func,void *) | | BrotliSharedDictionaryCreateInstance | 1 | brotli_free_func | +| (brotli_alloc_func,brotli_free_func,void *) | | BrotliSharedDictionaryCreateInstance | 2 | void * | +| (bufc_pool *,size_t,size_t) | | Curl_bufcp_init | 0 | bufc_pool * | +| (bufc_pool *,size_t,size_t) | | Curl_bufcp_init | 1 | size_t | +| (bufc_pool *,size_t,size_t) | | Curl_bufcp_init | 2 | size_t | +| (bufq *,Curl_bufq_reader *,void *,CURLcode *) | | Curl_bufq_slurp | 0 | bufq * | +| (bufq *,Curl_bufq_reader *,void *,CURLcode *) | | Curl_bufq_slurp | 1 | Curl_bufq_reader * | +| (bufq *,Curl_bufq_reader *,void *,CURLcode *) | | Curl_bufq_slurp | 2 | void * | +| (bufq *,Curl_bufq_reader *,void *,CURLcode *) | | Curl_bufq_slurp | 3 | CURLcode * | +| (bufq *,Curl_bufq_writer *,void *,CURLcode *) | | Curl_bufq_pass | 0 | bufq * | +| (bufq *,Curl_bufq_writer *,void *,CURLcode *) | | Curl_bufq_pass | 1 | Curl_bufq_writer * | +| (bufq *,Curl_bufq_writer *,void *,CURLcode *) | | Curl_bufq_pass | 2 | void * | +| (bufq *,Curl_bufq_writer *,void *,CURLcode *) | | Curl_bufq_pass | 3 | CURLcode * | +| (bufq *,bufc_pool *,size_t,int) | | Curl_bufq_initp | 0 | bufq * | +| (bufq *,bufc_pool *,size_t,int) | | Curl_bufq_initp | 1 | bufc_pool * | +| (bufq *,bufc_pool *,size_t,int) | | Curl_bufq_initp | 2 | size_t | +| (bufq *,bufc_pool *,size_t,int) | | Curl_bufq_initp | 3 | int | +| (bufq *,char *,size_t,size_t *) | | Curl_bufq_cread | 0 | bufq * | +| (bufq *,char *,size_t,size_t *) | | Curl_bufq_cread | 1 | char * | +| (bufq *,char *,size_t,size_t *) | | Curl_bufq_cread | 2 | size_t | +| (bufq *,char *,size_t,size_t *) | | Curl_bufq_cread | 3 | size_t * | +| (bufq *,const char *,size_t,size_t *) | | Curl_bufq_cwrite | 0 | bufq * | +| (bufq *,const char *,size_t,size_t *) | | Curl_bufq_cwrite | 1 | const char * | +| (bufq *,const char *,size_t,size_t *) | | Curl_bufq_cwrite | 2 | size_t | +| (bufq *,const char *,size_t,size_t *) | | Curl_bufq_cwrite | 3 | size_t * | +| (bufq *,const unsigned char **,size_t *) | | Curl_bufq_peek | 0 | bufq * | +| (bufq *,const unsigned char **,size_t *) | | Curl_bufq_peek | 1 | const unsigned char ** | +| (bufq *,const unsigned char **,size_t *) | | Curl_bufq_peek | 2 | size_t * | +| (bufq *,const unsigned char *,size_t,CURLcode *) | | Curl_bufq_write | 0 | bufq * | +| (bufq *,const unsigned char *,size_t,CURLcode *) | | Curl_bufq_write | 1 | const unsigned char * | +| (bufq *,const unsigned char *,size_t,CURLcode *) | | Curl_bufq_write | 2 | size_t | +| (bufq *,const unsigned char *,size_t,CURLcode *) | | Curl_bufq_write | 3 | CURLcode * | +| (bufq *,const unsigned char *,size_t,Curl_bufq_writer *,void *,CURLcode *) | | Curl_bufq_write_pass | 0 | bufq * | +| (bufq *,const unsigned char *,size_t,Curl_bufq_writer *,void *,CURLcode *) | | Curl_bufq_write_pass | 1 | const unsigned char * | +| (bufq *,const unsigned char *,size_t,Curl_bufq_writer *,void *,CURLcode *) | | Curl_bufq_write_pass | 2 | size_t | +| (bufq *,const unsigned char *,size_t,Curl_bufq_writer *,void *,CURLcode *) | | Curl_bufq_write_pass | 3 | Curl_bufq_writer * | +| (bufq *,const unsigned char *,size_t,Curl_bufq_writer *,void *,CURLcode *) | | Curl_bufq_write_pass | 4 | void * | +| (bufq *,const unsigned char *,size_t,Curl_bufq_writer *,void *,CURLcode *) | | Curl_bufq_write_pass | 5 | CURLcode * | +| (bufq *,size_t) | | Curl_bufq_skip | 0 | bufq * | +| (bufq *,size_t) | | Curl_bufq_skip | 1 | size_t | +| (bufq *,size_t) | | Curl_bufq_unwrite | 0 | bufq * | +| (bufq *,size_t) | | Curl_bufq_unwrite | 1 | size_t | +| (bufq *,size_t,Curl_bufq_reader *,void *,CURLcode *) | | Curl_bufq_sipn | 0 | bufq * | +| (bufq *,size_t,Curl_bufq_reader *,void *,CURLcode *) | | Curl_bufq_sipn | 1 | size_t | +| (bufq *,size_t,Curl_bufq_reader *,void *,CURLcode *) | | Curl_bufq_sipn | 2 | Curl_bufq_reader * | +| (bufq *,size_t,Curl_bufq_reader *,void *,CURLcode *) | | Curl_bufq_sipn | 3 | void * | +| (bufq *,size_t,Curl_bufq_reader *,void *,CURLcode *) | | Curl_bufq_sipn | 4 | CURLcode * | +| (bufq *,size_t,const unsigned char **,size_t *) | | Curl_bufq_peek_at | 0 | bufq * | +| (bufq *,size_t,const unsigned char **,size_t *) | | Curl_bufq_peek_at | 1 | size_t | +| (bufq *,size_t,const unsigned char **,size_t *) | | Curl_bufq_peek_at | 2 | const unsigned char ** | +| (bufq *,size_t,const unsigned char **,size_t *) | | Curl_bufq_peek_at | 3 | size_t * | +| (bufq *,size_t,size_t) | | Curl_bufq_init | 0 | bufq * | +| (bufq *,size_t,size_t) | | Curl_bufq_init | 1 | size_t | +| (bufq *,size_t,size_t) | | Curl_bufq_init | 2 | size_t | +| (bufq *,size_t,size_t,int) | | Curl_bufq_init2 | 0 | bufq * | +| (bufq *,size_t,size_t,int) | | Curl_bufq_init2 | 1 | size_t | +| (bufq *,size_t,size_t,int) | | Curl_bufq_init2 | 2 | size_t | +| (bufq *,size_t,size_t,int) | | Curl_bufq_init2 | 3 | int | +| (bufq *,unsigned char *,size_t,CURLcode *) | | Curl_bufq_read | 0 | bufq * | +| (bufq *,unsigned char *,size_t,CURLcode *) | | Curl_bufq_read | 1 | unsigned char * | +| (bufq *,unsigned char *,size_t,CURLcode *) | | Curl_bufq_read | 2 | size_t | +| (bufq *,unsigned char *,size_t,CURLcode *) | | Curl_bufq_read | 3 | CURLcode * | +| (bufref *,const void *,size_t) | | Curl_bufref_memdup | 0 | bufref * | +| (bufref *,const void *,size_t) | | Curl_bufref_memdup | 1 | const void * | +| (bufref *,const void *,size_t) | | Curl_bufref_memdup | 2 | size_t | +| (bufref *,const void *,size_t,..(*)(..)) | | Curl_bufref_set | 0 | bufref * | +| (bufref *,const void *,size_t,..(*)(..)) | | Curl_bufref_set | 1 | const void * | +| (bufref *,const void *,size_t,..(*)(..)) | | Curl_bufref_set | 2 | size_t | +| (bufref *,const void *,size_t,..(*)(..)) | | Curl_bufref_set | 3 | ..(*)(..) | +| (chacha_ctx *,const u8 *,const u8 *) | | chacha_ivsetup | 0 | chacha_ctx * | +| (chacha_ctx *,const u8 *,const u8 *) | | chacha_ivsetup | 1 | const u8 * | +| (chacha_ctx *,const u8 *,const u8 *) | | chacha_ivsetup | 2 | const u8 * | +| (chacha_ctx *,const u8 *,u8 *,u32) | | chacha_encrypt_bytes | 0 | chacha_ctx * | +| (chacha_ctx *,const u8 *,u8 *,u32) | | chacha_encrypt_bytes | 1 | const u8 * | +| (chacha_ctx *,const u8 *,u8 *,u32) | | chacha_encrypt_bytes | 2 | u8 * | +| (chacha_ctx *,const u8 *,u8 *,u32) | | chacha_encrypt_bytes | 3 | u32 | +| (chacha_ctx *,const u8 *,u32) | | chacha_keysetup | 0 | chacha_ctx * | +| (chacha_ctx *,const u8 *,u32) | | chacha_keysetup | 1 | const u8 * | +| (chacha_ctx *,const u8 *,u32) | | chacha_keysetup | 2 | u32 | +| (chachapoly_ctx *,const u_char *,u_int) | | chachapoly_init | 0 | chachapoly_ctx * | +| (chachapoly_ctx *,const u_char *,u_int) | | chachapoly_init | 1 | const u_char * | +| (chachapoly_ctx *,const u_char *,u_int) | | chachapoly_init | 2 | u_int | +| (chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int) | | chachapoly_crypt | 0 | chachapoly_ctx * | +| (chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int) | | chachapoly_crypt | 1 | u_int | +| (chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int) | | chachapoly_crypt | 2 | u_char * | +| (chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int) | | chachapoly_crypt | 3 | const u_char * | +| (chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int) | | chachapoly_crypt | 4 | u_int | +| (chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int) | | chachapoly_crypt | 5 | u_int | +| (chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int) | | chachapoly_crypt | 6 | int | +| (chachapoly_ctx *,unsigned int *,unsigned int,const unsigned char *,unsigned int) | | chachapoly_get_length | 0 | chachapoly_ctx * | +| (chachapoly_ctx *,unsigned int *,unsigned int,const unsigned char *,unsigned int) | | chachapoly_get_length | 1 | unsigned int * | +| (chachapoly_ctx *,unsigned int *,unsigned int,const unsigned char *,unsigned int) | | chachapoly_get_length | 2 | unsigned int | +| (chachapoly_ctx *,unsigned int *,unsigned int,const unsigned char *,unsigned int) | | chachapoly_get_length | 3 | const unsigned char * | +| (chachapoly_ctx *,unsigned int *,unsigned int,const unsigned char *,unsigned int) | | chachapoly_get_length | 4 | unsigned int | | (char *) | | SRP_VBASE_new | 0 | char * | | (char *) | | defossilize | 0 | char * | | (char *) | | make_uppercase | 0 | char * | | (char *) | | next_item | 0 | char * | | (char *) | CStringT | CStringT | 0 | char * | +| (char **) | | Curl_str_newline | 0 | char ** | +| (char **) | | Curl_str_singlespace | 0 | char ** | | (char **) | | OCSP_accept_responses_new | 0 | char ** | | (char **) | | sqlite3_free_table | 0 | char ** | +| (char **,Curl_str *,const size_t) | | Curl_str_quotedword | 0 | char ** | +| (char **,Curl_str *,const size_t) | | Curl_str_quotedword | 1 | Curl_str * | +| (char **,Curl_str *,const size_t) | | Curl_str_quotedword | 2 | const size_t | +| (char **,Curl_str *,const size_t) | | Curl_str_word | 0 | char ** | +| (char **,Curl_str *,const size_t) | | Curl_str_word | 1 | Curl_str * | +| (char **,Curl_str *,const size_t) | | Curl_str_word | 2 | const size_t | +| (char **,Curl_str *,const size_t,char) | | Curl_str_until | 0 | char ** | +| (char **,Curl_str *,const size_t,char) | | Curl_str_until | 1 | Curl_str * | +| (char **,Curl_str *,const size_t,char) | | Curl_str_until | 2 | const size_t | +| (char **,Curl_str *,const size_t,char) | | Curl_str_until | 3 | char | +| (char **,URLGlob *) | | glob_next_url | 0 | char ** | +| (char **,URLGlob *) | | glob_next_url | 1 | URLGlob * | +| (char **,char *,URLGlob *) | | glob_match_url | 0 | char ** | +| (char **,char *,URLGlob *) | | glob_match_url | 1 | char * | +| (char **,char *,URLGlob *) | | glob_match_url | 2 | URLGlob * | +| (char **,char) | | Curl_str_single | 0 | char ** | +| (char **,char) | | Curl_str_single | 1 | char | +| (char **,const char *) | | Curl_setstropt | 0 | char ** | +| (char **,const char *) | | Curl_setstropt | 1 | const char * | | (char **,s_options *,FILE *) | | OptInit | 0 | char ** | | (char **,s_options *,FILE *) | | OptInit | 1 | s_options * | | (char **,s_options *,FILE *) | | OptInit | 2 | FILE * | +| (char **,size_t *,size_t) | | Curl_str_number | 0 | char ** | +| (char **,size_t *,size_t) | | Curl_str_number | 1 | size_t * | +| (char **,size_t *,size_t) | | Curl_str_number | 2 | size_t | | (char *,EVP_CIPHER_INFO *) | | PEM_get_EVP_CIPHER_INFO | 0 | char * | | (char *,EVP_CIPHER_INFO *) | | PEM_get_EVP_CIPHER_INFO | 1 | EVP_CIPHER_INFO * | | (char *,FILE *,FILE *,int *) | | tplt_xfer | 0 | char * | | (char *,FILE *,FILE *,int *) | | tplt_xfer | 1 | FILE * | | (char *,FILE *,FILE *,int *) | | tplt_xfer | 2 | FILE * | | (char *,FILE *,FILE *,int *) | | tplt_xfer | 3 | int * | +| (char *,const char *,char **) | | uv__strtok | 0 | char * | +| (char *,const char *,char **) | | uv__strtok | 1 | const char * | +| (char *,const char *,char **) | | uv__strtok | 2 | char ** | | (char *,const char *,const char *,X509_VERIFY_PARAM *) | | load_certs_multifile | 0 | char * | | (char *,const char *,const char *,X509_VERIFY_PARAM *) | | load_certs_multifile | 1 | const char * | | (char *,const char *,const char *,X509_VERIFY_PARAM *) | | load_certs_multifile | 2 | const char * | @@ -21554,12 +25413,26 @@ getSignatureParameterName | (char *,const char *,int,const char *) | | PEM_dek_info | 1 | const char * | | (char *,const char *,int,const char *) | | PEM_dek_info | 2 | int | | (char *,const char *,int,const char *) | | PEM_dek_info | 3 | const char * | +| (char *,const char *,size_t) | | Curl_strntolower | 0 | char * | +| (char *,const char *,size_t) | | Curl_strntolower | 1 | const char * | +| (char *,const char *,size_t) | | Curl_strntolower | 2 | size_t | +| (char *,const char *,size_t) | | Curl_strntoupper | 0 | char * | +| (char *,const char *,size_t) | | Curl_strntoupper | 1 | const char * | +| (char *,const char *,size_t) | | Curl_strntoupper | 2 | size_t | | (char *,const char *,size_t) | | OPENSSL_strlcat | 0 | char * | | (char *,const char *,size_t) | | OPENSSL_strlcat | 1 | const char * | | (char *,const char *,size_t) | | OPENSSL_strlcat | 2 | size_t | | (char *,const char *,size_t) | | OPENSSL_strlcpy | 0 | char * | | (char *,const char *,size_t) | | OPENSSL_strlcpy | 1 | const char * | | (char *,const char *,size_t) | | OPENSSL_strlcpy | 2 | size_t | +| (char *,const char *,size_t) | | uv__strscpy | 0 | char * | +| (char *,const char *,size_t) | | uv__strscpy | 1 | const char * | +| (char *,const char *,size_t) | | uv__strscpy | 2 | size_t | +| (char *,const char *,va_list) | | curl_mvsprintf | 0 | char * | +| (char *,const char *,va_list) | | curl_mvsprintf | 1 | const char * | +| (char *,const char *,va_list) | | curl_mvsprintf | 2 | va_list | +| (char *,int) | | Curl_str2addr | 0 | char * | +| (char *,int) | | Curl_str2addr | 1 | int | | (char *,int) | | PEM_proc_type | 0 | char * | | (char *,int) | | PEM_proc_type | 1 | int | | (char *,int,const ASN1_OBJECT *) | | i2t_ASN1_OBJECT | 0 | char * | @@ -21581,8 +25454,20 @@ getSignatureParameterName | (char *,int,int,void *) | | ossl_pw_pvk_password | 1 | int | | (char *,int,int,void *) | | ossl_pw_pvk_password | 2 | int | | (char *,int,int,void *) | | ossl_pw_pvk_password | 3 | void * | +| (char *,size_t *) | | uv_cwd | 0 | char * | +| (char *,size_t *) | | uv_cwd | 1 | size_t * | +| (char *,size_t *) | | uv_exepath | 0 | char * | +| (char *,size_t *) | | uv_exepath | 1 | size_t * | +| (char *,size_t *) | | uv_os_gethostname | 0 | char * | +| (char *,size_t *) | | uv_os_gethostname | 1 | size_t * | +| (char *,size_t *) | | uv_os_homedir | 0 | char * | +| (char *,size_t *) | | uv_os_homedir | 1 | size_t * | +| (char *,size_t *) | | uv_os_tmpdir | 0 | char * | +| (char *,size_t *) | | uv_os_tmpdir | 1 | size_t * | | (char *,size_t) | | RAND_file_name | 0 | char * | | (char *,size_t) | | RAND_file_name | 1 | size_t | +| (char *,size_t) | | plain_method | 0 | char * | +| (char *,size_t) | | plain_method | 1 | size_t | | (char *,size_t,const char *,...) | | BIO_snprintf | 0 | char * | | (char *,size_t,const char *,...) | | BIO_snprintf | 1 | size_t | | (char *,size_t,const char *,...) | | BIO_snprintf | 2 | const char * | @@ -21591,6 +25476,10 @@ getSignatureParameterName | (char *,size_t,const char *,va_list) | | BIO_vsnprintf | 1 | size_t | | (char *,size_t,const char *,va_list) | | BIO_vsnprintf | 2 | const char * | | (char *,size_t,const char *,va_list) | | BIO_vsnprintf | 3 | va_list | +| (char *,size_t,const char *,va_list) | | curl_mvsnprintf | 0 | char * | +| (char *,size_t,const char *,va_list) | | curl_mvsnprintf | 1 | size_t | +| (char *,size_t,const char *,va_list) | | curl_mvsnprintf | 2 | const char * | +| (char *,size_t,const char *,va_list) | | curl_mvsnprintf | 3 | va_list | | (char *,size_t,size_t *,const OSSL_PARAM[],int,ossl_passphrase_data_st *) | | ossl_pw_get_passphrase | 0 | char * | | (char *,size_t,size_t *,const OSSL_PARAM[],int,ossl_passphrase_data_st *) | | ossl_pw_get_passphrase | 1 | size_t | | (char *,size_t,size_t *,const OSSL_PARAM[],int,ossl_passphrase_data_st *) | | ossl_pw_get_passphrase | 2 | size_t * | @@ -21613,10 +25502,35 @@ getSignatureParameterName | (char *,size_t,size_t *,const unsigned char *,size_t,const char) | | OPENSSL_buf2hexstr_ex | 3 | const unsigned char * | | (char *,size_t,size_t *,const unsigned char *,size_t,const char) | | OPENSSL_buf2hexstr_ex | 4 | size_t | | (char *,size_t,size_t *,const unsigned char *,size_t,const char) | | OPENSSL_buf2hexstr_ex | 5 | const char | +| (char *,size_t,size_t,void *) | | Curl_ftp_parselist | 0 | char * | +| (char *,size_t,size_t,void *) | | Curl_ftp_parselist | 1 | size_t | +| (char *,size_t,size_t,void *) | | Curl_ftp_parselist | 2 | size_t | +| (char *,size_t,size_t,void *) | | Curl_ftp_parselist | 3 | void * | +| (char *,size_t,size_t,void *) | | Curl_mime_read | 0 | char * | +| (char *,size_t,size_t,void *) | | Curl_mime_read | 1 | size_t | +| (char *,size_t,size_t,void *) | | Curl_mime_read | 2 | size_t | +| (char *,size_t,size_t,void *) | | Curl_mime_read | 3 | void * | +| (char *,size_t,size_t,void *) | | tool_header_cb | 0 | char * | +| (char *,size_t,size_t,void *) | | tool_header_cb | 1 | size_t | +| (char *,size_t,size_t,void *) | | tool_header_cb | 2 | size_t | +| (char *,size_t,size_t,void *) | | tool_header_cb | 3 | void * | +| (char *,size_t,size_t,void *) | | tool_mime_stdin_read | 0 | char * | +| (char *,size_t,size_t,void *) | | tool_mime_stdin_read | 1 | size_t | +| (char *,size_t,size_t,void *) | | tool_mime_stdin_read | 2 | size_t | +| (char *,size_t,size_t,void *) | | tool_mime_stdin_read | 3 | void * | +| (char *,size_t,size_t,void *) | | tool_read_cb | 0 | char * | +| (char *,size_t,size_t,void *) | | tool_read_cb | 1 | size_t | +| (char *,size_t,size_t,void *) | | tool_read_cb | 2 | size_t | +| (char *,size_t,size_t,void *) | | tool_read_cb | 3 | void * | | (char *,uint8_t) | | ossl_to_hex | 0 | char * | | (char *,uint8_t) | | ossl_to_hex | 1 | uint8_t | | (char *,unsigned int) | | utf8_fromunicode | 0 | char * | | (char *,unsigned int) | | utf8_fromunicode | 1 | unsigned int | +| (char *,unsigned int) | | uv_buf_init | 0 | char * | +| (char *,unsigned int) | | uv_buf_init | 1 | unsigned int | +| (char) | | Curl_raw_tolower | 0 | char | +| (char) | | Curl_raw_toupper | 0 | char | +| (char) | | findshortopt | 0 | char | | (char) | | operator+= | 0 | char | | (char) | CComBSTR | Append | 0 | char | | (char) | CSimpleStringT | operator+= | 0 | char | @@ -21624,11 +25538,27 @@ getSignatureParameterName | (char,const CStringT &) | | operator+ | 1 | const CStringT & | | (char,int) | CStringT | CStringT | 0 | char | | (char,int) | CStringT | CStringT | 1 | int | +| (codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *) | | inflate_table | 0 | codetype | +| (codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *) | | inflate_table | 1 | unsigned short * | +| (codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *) | | inflate_table | 2 | unsigned int | +| (codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *) | | inflate_table | 3 | code ** | +| (codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *) | | inflate_table | 4 | unsigned int * | +| (codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *) | | inflate_table | 5 | unsigned short * | | (config *) | | State_find | 0 | config * | | (config *) | | confighash | 0 | config * | | (config *) | | statehash | 0 | config * | | (config *,config *) | | statecmp | 0 | config * | | (config *,config *) | | statecmp | 1 | config * | +| (connectdata *,Curl_easy *,curltime *) | | Curl_conn_seems_dead | 0 | connectdata * | +| (connectdata *,Curl_easy *,curltime *) | | Curl_conn_seems_dead | 1 | Curl_easy * | +| (connectdata *,Curl_easy *,curltime *) | | Curl_conn_seems_dead | 2 | curltime * | +| (connectdata *,curltime *) | | Curl_conn_shutdown_timeleft | 0 | connectdata * | +| (connectdata *,curltime *) | | Curl_conn_shutdown_timeleft | 1 | curltime * | +| (connectdata *,int) | | Curl_conn_is_ssl | 0 | connectdata * | +| (connectdata *,int) | | Curl_conn_is_ssl | 1 | int | +| (connectdata *,int,curltime *) | | Curl_shutdown_timeleft | 0 | connectdata * | +| (connectdata *,int,curltime *) | | Curl_shutdown_timeleft | 1 | int | +| (connectdata *,int,curltime *) | | Curl_shutdown_timeleft | 2 | curltime * | | (const ACCESS_DESCRIPTION *,unsigned char **) | | i2d_ACCESS_DESCRIPTION | 0 | const ACCESS_DESCRIPTION * | | (const ACCESS_DESCRIPTION *,unsigned char **) | | i2d_ACCESS_DESCRIPTION | 1 | unsigned char ** | | (const ADMISSIONS *) | | ADMISSIONS_get0_admissionAuthority | 0 | const ADMISSIONS * | @@ -22067,6 +25997,14 @@ getSignatureParameterName | (const BIO_METHOD *) | | BIO_meth_get_write_ex | 0 | const BIO_METHOD * | | (const BIO_METHOD *) | | BIO_new | 0 | const BIO_METHOD * | | (const BN_BLINDING *) | | BN_BLINDING_get_flags | 0 | const BN_BLINDING * | +| (const BrotliDecoderState *,const BrotliDecoderStateInternal *) | | BrotliDecoderGetErrorCode | 0 | const BrotliDecoderState * | +| (const BrotliDecoderState *,const BrotliDecoderStateInternal *) | | BrotliDecoderGetErrorCode | 1 | const BrotliDecoderStateInternal * | +| (const BrotliEncoderDictionary *,const uint8_t *,size_t,size_t,uint32_t *) | | BrotliFindAllStaticDictionaryMatches | 0 | const BrotliEncoderDictionary * | +| (const BrotliEncoderDictionary *,const uint8_t *,size_t,size_t,uint32_t *) | | BrotliFindAllStaticDictionaryMatches | 1 | const uint8_t * | +| (const BrotliEncoderDictionary *,const uint8_t *,size_t,size_t,uint32_t *) | | BrotliFindAllStaticDictionaryMatches | 2 | size_t | +| (const BrotliEncoderDictionary *,const uint8_t *,size_t,size_t,uint32_t *) | | BrotliFindAllStaticDictionaryMatches | 3 | size_t | +| (const BrotliEncoderDictionary *,const uint8_t *,size_t,size_t,uint32_t *) | | BrotliFindAllStaticDictionaryMatches | 4 | uint32_t * | +| (const BrotliEncoderPreparedDictionary *) | | BrotliEncoderGetPreparedDictionarySize | 0 | const BrotliEncoderPreparedDictionary * | | (const CComBSTR &) | CComBSTR | Append | 0 | const CComBSTR & | | (const CComBSTR &) | CComBSTR | CComBSTR | 0 | const CComBSTR & | | (const CComSafeArray &) | CComSafeArray | CComSafeArray | 0 | const CComSafeArray & | @@ -22148,6 +26086,28 @@ getSignatureParameterName | (const CT_POLICY_EVAL_CTX *) | | CT_POLICY_EVAL_CTX_get0_issuer | 0 | const CT_POLICY_EVAL_CTX * | | (const CT_POLICY_EVAL_CTX *) | | CT_POLICY_EVAL_CTX_get0_log_store | 0 | const CT_POLICY_EVAL_CTX * | | (const CT_POLICY_EVAL_CTX *) | | CT_POLICY_EVAL_CTX_get_time | 0 | const CT_POLICY_EVAL_CTX * | +| (const CURLU *) | | curl_url_dup | 0 | const CURLU * | +| (const CURLU *,CURLUPart,char **,unsigned int) | | curl_url_get | 0 | const CURLU * | +| (const CURLU *,CURLUPart,char **,unsigned int) | | curl_url_get | 1 | CURLUPart | +| (const CURLU *,CURLUPart,char **,unsigned int) | | curl_url_get | 2 | char ** | +| (const CURLU *,CURLUPart,char **,unsigned int) | | curl_url_get | 3 | unsigned int | +| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 0 | const Command * | +| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 1 | const size_t | +| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 2 | const BlockSplit * | +| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 3 | const BlockSplit * | +| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 4 | const BlockSplit * | +| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 5 | const uint8_t * | +| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 6 | size_t | +| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 7 | size_t | +| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 8 | uint8_t | +| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 9 | uint8_t | +| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 10 | const ContextType * | +| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 11 | HistogramLiteral * | +| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 12 | HistogramCommand * | +| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 13 | HistogramDistance * | +| (const Curl_easy *,const connectdata *,int) | | Curl_conn_is_http2 | 0 | const Curl_easy * | +| (const Curl_easy *,const connectdata *,int) | | Curl_conn_is_http2 | 1 | const connectdata * | +| (const Curl_easy *,const connectdata *,int) | | Curl_conn_is_http2 | 2 | int | | (const DH *) | | DH_get0_g | 0 | const DH * | | (const DH *) | | DH_get0_p | 0 | const DH * | | (const DH *) | | DH_get0_priv_key | 0 | const DH * | @@ -23041,7 +27001,73 @@ getSignatureParameterName | (const GOST_KX_MESSAGE *,unsigned char **) | | i2d_GOST_KX_MESSAGE | 1 | unsigned char ** | | (const HMAC_CTX *) | | HMAC_CTX_get_md | 0 | const HMAC_CTX * | | (const HMAC_CTX *) | | HMAC_size | 0 | const HMAC_CTX * | +| (const HMAC_params *,const unsigned char *,const size_t,const unsigned char *,const size_t,unsigned char *) | | Curl_hmacit | 0 | const HMAC_params * | +| (const HMAC_params *,const unsigned char *,const size_t,const unsigned char *,const size_t,unsigned char *) | | Curl_hmacit | 1 | const unsigned char * | +| (const HMAC_params *,const unsigned char *,const size_t,const unsigned char *,const size_t,unsigned char *) | | Curl_hmacit | 2 | const size_t | +| (const HMAC_params *,const unsigned char *,const size_t,const unsigned char *,const size_t,unsigned char *) | | Curl_hmacit | 3 | const unsigned char * | +| (const HMAC_params *,const unsigned char *,const size_t,const unsigned char *,const size_t,unsigned char *) | | Curl_hmacit | 4 | const size_t | +| (const HMAC_params *,const unsigned char *,const size_t,const unsigned char *,const size_t,unsigned char *) | | Curl_hmacit | 5 | unsigned char * | +| (const HMAC_params *,const unsigned char *,unsigned int) | | Curl_HMAC_init | 0 | const HMAC_params * | +| (const HMAC_params *,const unsigned char *,unsigned int) | | Curl_HMAC_init | 1 | const unsigned char * | +| (const HMAC_params *,const unsigned char *,unsigned int) | | Curl_HMAC_init | 2 | unsigned int | | (const HT_CONFIG *) | | ossl_ht_new | 0 | const HT_CONFIG * | +| (const HistogramCommand *) | | BrotliPopulationCostCommand | 0 | const HistogramCommand * | +| (const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueCommand | 0 | const HistogramCommand * | +| (const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueCommand | 1 | HistogramCommand * | +| (const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueCommand | 2 | const uint32_t * | +| (const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueCommand | 3 | uint32_t | +| (const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueCommand | 4 | uint32_t | +| (const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueCommand | 5 | size_t | +| (const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueCommand | 6 | HistogramPair * | +| (const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueCommand | 7 | size_t * | +| (const HistogramCommand *,const HistogramCommand *,HistogramCommand *) | | BrotliHistogramBitCostDistanceCommand | 0 | const HistogramCommand * | +| (const HistogramCommand *,const HistogramCommand *,HistogramCommand *) | | BrotliHistogramBitCostDistanceCommand | 1 | const HistogramCommand * | +| (const HistogramCommand *,const HistogramCommand *,HistogramCommand *) | | BrotliHistogramBitCostDistanceCommand | 2 | HistogramCommand * | +| (const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *) | | BrotliHistogramRemapCommand | 0 | const HistogramCommand * | +| (const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *) | | BrotliHistogramRemapCommand | 1 | size_t | +| (const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *) | | BrotliHistogramRemapCommand | 2 | const uint32_t * | +| (const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *) | | BrotliHistogramRemapCommand | 3 | size_t | +| (const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *) | | BrotliHistogramRemapCommand | 4 | HistogramCommand * | +| (const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *) | | BrotliHistogramRemapCommand | 5 | HistogramCommand * | +| (const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *) | | BrotliHistogramRemapCommand | 6 | uint32_t * | +| (const HistogramDistance *) | | BrotliPopulationCostDistance | 0 | const HistogramDistance * | +| (const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueDistance | 0 | const HistogramDistance * | +| (const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueDistance | 1 | HistogramDistance * | +| (const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueDistance | 2 | const uint32_t * | +| (const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueDistance | 3 | uint32_t | +| (const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueDistance | 4 | uint32_t | +| (const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueDistance | 5 | size_t | +| (const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueDistance | 6 | HistogramPair * | +| (const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueDistance | 7 | size_t * | +| (const HistogramDistance *,const HistogramDistance *,HistogramDistance *) | | BrotliHistogramBitCostDistanceDistance | 0 | const HistogramDistance * | +| (const HistogramDistance *,const HistogramDistance *,HistogramDistance *) | | BrotliHistogramBitCostDistanceDistance | 1 | const HistogramDistance * | +| (const HistogramDistance *,const HistogramDistance *,HistogramDistance *) | | BrotliHistogramBitCostDistanceDistance | 2 | HistogramDistance * | +| (const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *) | | BrotliHistogramRemapDistance | 0 | const HistogramDistance * | +| (const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *) | | BrotliHistogramRemapDistance | 1 | size_t | +| (const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *) | | BrotliHistogramRemapDistance | 2 | const uint32_t * | +| (const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *) | | BrotliHistogramRemapDistance | 3 | size_t | +| (const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *) | | BrotliHistogramRemapDistance | 4 | HistogramDistance * | +| (const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *) | | BrotliHistogramRemapDistance | 5 | HistogramDistance * | +| (const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *) | | BrotliHistogramRemapDistance | 6 | uint32_t * | +| (const HistogramLiteral *) | | BrotliPopulationCostLiteral | 0 | const HistogramLiteral * | +| (const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueLiteral | 0 | const HistogramLiteral * | +| (const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueLiteral | 1 | HistogramLiteral * | +| (const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueLiteral | 2 | const uint32_t * | +| (const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueLiteral | 3 | uint32_t | +| (const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueLiteral | 4 | uint32_t | +| (const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueLiteral | 5 | size_t | +| (const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueLiteral | 6 | HistogramPair * | +| (const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueLiteral | 7 | size_t * | +| (const HistogramLiteral *,const HistogramLiteral *,HistogramLiteral *) | | BrotliHistogramBitCostDistanceLiteral | 0 | const HistogramLiteral * | +| (const HistogramLiteral *,const HistogramLiteral *,HistogramLiteral *) | | BrotliHistogramBitCostDistanceLiteral | 1 | const HistogramLiteral * | +| (const HistogramLiteral *,const HistogramLiteral *,HistogramLiteral *) | | BrotliHistogramBitCostDistanceLiteral | 2 | HistogramLiteral * | +| (const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *) | | BrotliHistogramRemapLiteral | 0 | const HistogramLiteral * | +| (const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *) | | BrotliHistogramRemapLiteral | 1 | size_t | +| (const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *) | | BrotliHistogramRemapLiteral | 2 | const uint32_t * | +| (const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *) | | BrotliHistogramRemapLiteral | 3 | size_t | +| (const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *) | | BrotliHistogramRemapLiteral | 4 | HistogramLiteral * | +| (const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *) | | BrotliHistogramRemapLiteral | 5 | HistogramLiteral * | +| (const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *) | | BrotliHistogramRemapLiteral | 6 | uint32_t * | | (const IPAddressChoice *,unsigned char **) | | i2d_IPAddressChoice | 0 | const IPAddressChoice * | | (const IPAddressChoice *,unsigned char **) | | i2d_IPAddressChoice | 1 | unsigned char ** | | (const IPAddressFamily *) | | X509v3_addr_get_afi | 0 | const IPAddressFamily * | @@ -23058,6 +27084,7 @@ getSignatureParameterName | (const MATRIX *,const VECTOR *,VECTOR *) | | ossl_ml_dsa_matrix_mult_vector | 0 | const MATRIX * | | (const MATRIX *,const VECTOR *,VECTOR *) | | ossl_ml_dsa_matrix_mult_vector | 1 | const VECTOR * | | (const MATRIX *,const VECTOR *,VECTOR *) | | ossl_ml_dsa_matrix_mult_vector | 2 | VECTOR * | +| (const MD5_params *) | | Curl_MD5_init | 0 | const MD5_params * | | (const ML_DSA_KEY *) | | ossl_ml_dsa_key_get0_libctx | 0 | const ML_DSA_KEY * | | (const ML_DSA_KEY *) | | ossl_ml_dsa_key_get_collision_strength_bits | 0 | const ML_DSA_KEY * | | (const ML_DSA_KEY *) | | ossl_ml_dsa_key_get_name | 0 | const ML_DSA_KEY * | @@ -24544,7 +28571,13 @@ getSignatureParameterName | (const YCHAR *,int,IAtlStringMgr *) | CStringT | CStringT | 0 | const YCHAR * | | (const YCHAR *,int,IAtlStringMgr *) | CStringT | CStringT | 1 | int | | (const YCHAR *,int,IAtlStringMgr *) | CStringT | CStringT | 2 | IAtlStringMgr * | +| (const bufq *) | | Curl_bufq_len | 0 | const bufq * | +| (const bufref *) | | Curl_bufref_len | 0 | const bufref * | +| (const bufref *) | | Curl_bufref_ptr | 0 | const bufref * | | (const char *) | | BIO_gethostbyname | 0 | const char * | +| (const char *) | | Curl_copy_header_value | 0 | const char * | +| (const char *) | | Curl_get_scheme_handler | 0 | const char * | +| (const char *) | | Curl_getdate_capped | 0 | const char * | | (const char *) | | Jim_StrDup | 0 | const char * | | (const char *) | | OPENSSL_LH_strhash | 0 | const char * | | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | const char * | @@ -24555,12 +28588,21 @@ getSignatureParameterName | (const char *) | | X509_LOOKUP_meth_new | 0 | const char * | | (const char *) | | a2i_IPADDRESS | 0 | const char * | | (const char *) | | a2i_IPADDRESS_NC | 0 | const char * | +| (const char *) | | last_component | 0 | const char * | | (const char *) | | opt_path_end | 0 | const char * | | (const char *) | | opt_progname | 0 | const char * | | (const char *) | | ossl_lh_strcasehash | 0 | const char * | | (const char *) | | strhash | 0 | const char * | +| (const char *) | | uc_script_byname | 0 | const char * | +| (const char *) | | uv__strdup | 0 | const char * | +| (const char *) | | uv_wtf8_length_as_utf16 | 0 | const char * | | (const char **) | | ERR_peek_error_func | 0 | const char ** | | (const char **) | | ERR_peek_last_error_func | 0 | const char ** | +| (const char **,char **,const char *) | | Curl_get_pathname | 0 | const char ** | +| (const char **,char **,const char *) | | Curl_get_pathname | 1 | char ** | +| (const char **,char **,const char *) | | Curl_get_pathname | 2 | const char * | +| (const char **,const char *) | | uv__utf8_decode1 | 0 | const char ** | +| (const char **,const char *) | | uv__utf8_decode1 | 1 | const char * | | (const char **,int *) | | ERR_get_error_line | 0 | const char ** | | (const char **,int *) | | ERR_get_error_line | 1 | int * | | (const char **,int *) | | ERR_peek_error_data | 0 | const char ** | @@ -24629,6 +28671,8 @@ getSignatureParameterName | (const char *,EVP_MD **) | | opt_md | 1 | EVP_MD ** | | (const char *,EVP_MD **) | | opt_md_silent | 0 | const char * | | (const char *,EVP_MD **) | | opt_md_silent | 1 | EVP_MD ** | +| (const char *,GlobalConfig *) | | parseconfig | 0 | const char * | +| (const char *,GlobalConfig *) | | parseconfig | 1 | GlobalConfig * | | (const char *,OSSL_CMP_severity *,char **,char **,int *) | | ossl_cmp_log_parse_metadata | 0 | const char * | | (const char *,OSSL_CMP_severity *,char **,char **,int *) | | ossl_cmp_log_parse_metadata | 1 | OSSL_CMP_severity * | | (const char *,OSSL_CMP_severity *,char **,char **,int *) | | ossl_cmp_log_parse_metadata | 2 | char ** | @@ -24652,6 +28696,10 @@ getSignatureParameterName | (const char *,X509 **,stack_st_X509 **,int,const char *,const char *,X509_VERIFY_PARAM *) | | load_cert_certs | 4 | const char * | | (const char *,X509 **,stack_st_X509 **,int,const char *,const char *,X509_VERIFY_PARAM *) | | load_cert_certs | 5 | const char * | | (const char *,X509 **,stack_st_X509 **,int,const char *,const char *,X509_VERIFY_PARAM *) | | load_cert_certs | 6 | X509_VERIFY_PARAM * | +| (const char *,bufref *) | | Curl_auth_create_external_message | 0 | const char * | +| (const char *,bufref *) | | Curl_auth_create_external_message | 1 | bufref * | +| (const char *,bufref *) | | Curl_auth_create_login_message | 0 | const char * | +| (const char *,bufref *) | | Curl_auth_create_login_message | 1 | bufref * | | (const char *,char *) | | sha1sum_file | 0 | const char * | | (const char *,char *) | | sha1sum_file | 1 | char * | | (const char *,char *) | | sha3sum_file | 0 | const char * | @@ -24660,6 +28708,10 @@ getSignatureParameterName | (const char *,char **,char **,BIO_hostserv_priorities) | | BIO_parse_hostserv | 1 | char ** | | (const char *,char **,char **,BIO_hostserv_priorities) | | BIO_parse_hostserv | 2 | char ** | | (const char *,char **,char **,BIO_hostserv_priorities) | | BIO_parse_hostserv | 3 | BIO_hostserv_priorities | +| (const char *,char **,char **,char **) | | Curl_parse_interface | 0 | const char * | +| (const char *,char **,char **,char **) | | Curl_parse_interface | 1 | char ** | +| (const char *,char **,char **,char **) | | Curl_parse_interface | 2 | char ** | +| (const char *,char **,char **,char **) | | Curl_parse_interface | 3 | char ** | | (const char *,char **,char **,char **,char **,int *,char **,char **,char **) | | OSSL_parse_url | 0 | const char * | | (const char *,char **,char **,char **,char **,int *,char **,char **,char **) | | OSSL_parse_url | 1 | char ** | | (const char *,char **,char **,char **,char **,int *,char **,char **,char **) | | OSSL_parse_url | 2 | char ** | @@ -24669,6 +28721,13 @@ getSignatureParameterName | (const char *,char **,char **,char **,char **,int *,char **,char **,char **) | | OSSL_parse_url | 6 | char ** | | (const char *,char **,char **,char **,char **,int *,char **,char **,char **) | | OSSL_parse_url | 7 | char ** | | (const char *,char **,char **,char **,char **,int *,char **,char **,char **) | | OSSL_parse_url | 8 | char ** | +| (const char *,char **,int) | | idn2_to_ascii_8z | 0 | const char * | +| (const char *,char **,int) | | idn2_to_ascii_8z | 1 | char ** | +| (const char *,char **,int) | | idn2_to_ascii_8z | 2 | int | +| (const char *,char **,int,curl_off_t *) | | curlx_strtoofft | 0 | const char * | +| (const char *,char **,int,curl_off_t *) | | curlx_strtoofft | 1 | char ** | +| (const char *,char **,int,curl_off_t *) | | curlx_strtoofft | 2 | int | +| (const char *,char **,int,curl_off_t *) | | curlx_strtoofft | 3 | curl_off_t * | | (const char *,char **,int,unsigned long *) | | OPENSSL_strtoul | 0 | const char * | | (const char *,char **,int,unsigned long *) | | OPENSSL_strtoul | 1 | char ** | | (const char *,char **,int,unsigned long *) | | OPENSSL_strtoul | 2 | int | @@ -24676,9 +28735,32 @@ getSignatureParameterName | (const char *,char **,size_t) | | OSSL_PARAM_construct_utf8_ptr | 0 | const char * | | (const char *,char **,size_t) | | OSSL_PARAM_construct_utf8_ptr | 1 | char ** | | (const char *,char **,size_t) | | OSSL_PARAM_construct_utf8_ptr | 2 | size_t | +| (const char *,char *,char *,bool *,GlobalConfig *,OperationConfig *) | | getparameter | 0 | const char * | +| (const char *,char *,char *,bool *,GlobalConfig *,OperationConfig *) | | getparameter | 1 | char * | +| (const char *,char *,char *,bool *,GlobalConfig *,OperationConfig *) | | getparameter | 2 | char * | +| (const char *,char *,char *,bool *,GlobalConfig *,OperationConfig *) | | getparameter | 3 | bool * | +| (const char *,char *,char *,bool *,GlobalConfig *,OperationConfig *) | | getparameter | 4 | GlobalConfig * | +| (const char *,char *,char *,bool *,GlobalConfig *,OperationConfig *) | | getparameter | 5 | OperationConfig * | +| (const char *,char *,char *,const char **) | | Curl_auth_digest_get_pair | 0 | const char * | +| (const char *,char *,char *,const char **) | | Curl_auth_digest_get_pair | 1 | char * | +| (const char *,char *,char *,const char **) | | Curl_auth_digest_get_pair | 2 | char * | +| (const char *,char *,char *,const char **) | | Curl_auth_digest_get_pair | 3 | const char ** | +| (const char *,char *,size_t *) | | uv__search_path | 0 | const char * | +| (const char *,char *,size_t *) | | uv__search_path | 1 | char * | +| (const char *,char *,size_t *) | | uv__search_path | 2 | size_t * | +| (const char *,char *,size_t *) | | uv_os_getenv | 0 | const char * | +| (const char *,char *,size_t *) | | uv_os_getenv | 1 | char * | +| (const char *,char *,size_t *) | | uv_os_getenv | 2 | size_t * | | (const char *,char *,size_t) | | OSSL_PARAM_construct_utf8_string | 0 | const char * | | (const char *,char *,size_t) | | OSSL_PARAM_construct_utf8_string | 1 | char * | | (const char *,char *,size_t) | | OSSL_PARAM_construct_utf8_string | 2 | size_t | +| (const char *,char *,size_t) | | getpass_r | 0 | const char * | +| (const char *,char *,size_t) | | getpass_r | 1 | char * | +| (const char *,char *,size_t) | | getpass_r | 2 | size_t | +| (const char *,char *,size_t,bool) | | Curl_is_absolute_url | 0 | const char * | +| (const char *,char *,size_t,bool) | | Curl_is_absolute_url | 1 | char * | +| (const char *,char *,size_t,bool) | | Curl_is_absolute_url | 2 | size_t | +| (const char *,char *,size_t,bool) | | Curl_is_absolute_url | 3 | bool | | (const char *,const ASN1_INTEGER *,stack_st_CONF_VALUE **) | | X509V3_add_value_int | 0 | const char * | | (const char *,const ASN1_INTEGER *,stack_st_CONF_VALUE **) | | X509V3_add_value_int | 1 | const ASN1_INTEGER * | | (const char *,const ASN1_INTEGER *,stack_st_CONF_VALUE **) | | X509V3_add_value_int | 2 | stack_st_CONF_VALUE ** | @@ -24699,12 +28781,20 @@ getSignatureParameterName | (const char *,const UI_METHOD *,void *,OSSL_STORE_post_process_info_fn,void *) | | OSSL_STORE_open | 4 | void * | | (const char *,const char *) | | Configcmp | 0 | const char * | | (const char *,const char *) | | Configcmp | 1 | const char * | +| (const char *,const char *) | | Curl_timestrcmp | 0 | const char * | +| (const char *,const char *) | | Curl_timestrcmp | 1 | const char * | | (const char *,const char *) | | DES_crypt | 0 | const char * | | (const char *,const char *) | | DES_crypt | 1 | const char * | | (const char *,const char *) | | OPENSSL_strcasecmp | 0 | const char * | | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | const char * | +| (const char *,const char *) | | c_strcasecmp | 0 | const char * | +| (const char *,const char *) | | c_strcasecmp | 1 | const char * | | (const char *,const char *) | | get_passwd | 0 | const char * | | (const char *,const char *) | | get_passwd | 1 | const char * | +| (const char *,const char *) | | gzopen | 0 | const char * | +| (const char *,const char *) | | gzopen | 1 | const char * | +| (const char *,const char *) | | gzopen64 | 0 | const char * | +| (const char *,const char *) | | gzopen64 | 1 | const char * | | (const char *,const char *) | | openssl_fopen | 0 | const char * | | (const char *,const char *) | | openssl_fopen | 1 | const char * | | (const char *,const char *) | | ossl_pem_check_suffix | 0 | const char * | @@ -24792,6 +28882,14 @@ getSignatureParameterName | (const char *,const char *,char **,char **,const char *,const char *,OSSL_LIB_CTX *,const char *) | | SRP_create_verifier_ex | 5 | const char * | | (const char *,const char *,char **,char **,const char *,const char *,OSSL_LIB_CTX *,const char *) | | SRP_create_verifier_ex | 6 | OSSL_LIB_CTX * | | (const char *,const char *,char **,char **,const char *,const char *,OSSL_LIB_CTX *,const char *) | | SRP_create_verifier_ex | 7 | const char * | +| (const char *,const char *,char **,int) | | idn2_register_ul | 0 | const char * | +| (const char *,const char *,char **,int) | | idn2_register_ul | 1 | const char * | +| (const char *,const char *,char **,int) | | idn2_register_ul | 2 | char ** | +| (const char *,const char *,char **,int) | | idn2_register_ul | 3 | int | +| (const char *,const char *,char *,char *) | | uv__idna_toascii | 0 | const char * | +| (const char *,const char *,char *,char *) | | uv__idna_toascii | 1 | const char * | +| (const char *,const char *,char *,char *) | | uv__idna_toascii | 2 | char * | +| (const char *,const char *,char *,char *) | | uv__idna_toascii | 3 | char * | | (const char *,const char *,const BIGNUM *,ASN1_INTEGER **) | | save_serial | 0 | const char * | | (const char *,const char *,const BIGNUM *,ASN1_INTEGER **) | | save_serial | 1 | const char * | | (const char *,const char *,const BIGNUM *,ASN1_INTEGER **) | | save_serial | 2 | const BIGNUM * | @@ -24817,6 +28915,15 @@ getSignatureParameterName | (const char *,const char *,const char *,SSL_CTX *,const stack_st_CONF_VALUE *,long,const char *,const ASN1_ITEM *) | | app_http_get_asn1 | 5 | long | | (const char *,const char *,const char *,SSL_CTX *,const stack_st_CONF_VALUE *,long,const char *,const ASN1_ITEM *) | | app_http_get_asn1 | 6 | const char * | | (const char *,const char *,const char *,SSL_CTX *,const stack_st_CONF_VALUE *,long,const char *,const ASN1_ITEM *) | | app_http_get_asn1 | 7 | const ASN1_ITEM * | +| (const char *,const char *,const char *,bool,iconv_ilseq_handler) | | str_iconveha | 0 | const char * | +| (const char *,const char *,const char *,bool,iconv_ilseq_handler) | | str_iconveha | 1 | const char * | +| (const char *,const char *,const char *,bool,iconv_ilseq_handler) | | str_iconveha | 2 | const char * | +| (const char *,const char *,const char *,bool,iconv_ilseq_handler) | | str_iconveha | 3 | bool | +| (const char *,const char *,const char *,bool,iconv_ilseq_handler) | | str_iconveha | 4 | iconv_ilseq_handler | +| (const char *,const char *,const char *,bufref *) | | Curl_auth_create_plain_message | 0 | const char * | +| (const char *,const char *,const char *,bufref *) | | Curl_auth_create_plain_message | 1 | const char * | +| (const char *,const char *,const char *,bufref *) | | Curl_auth_create_plain_message | 2 | const char * | +| (const char *,const char *,const char *,bufref *) | | Curl_auth_create_plain_message | 3 | bufref * | | (const char *,const char *,const char *,const char *,const char *,SSL_CTX *,const stack_st_CONF_VALUE *,const char *,ASN1_VALUE *,const ASN1_ITEM *,const char *,long,const ASN1_ITEM *) | | app_http_post_asn1 | 0 | const char * | | (const char *,const char *,const char *,const char *,const char *,SSL_CTX *,const stack_st_CONF_VALUE *,const char *,ASN1_VALUE *,const ASN1_ITEM *,const char *,long,const ASN1_ITEM *) | | app_http_post_asn1 | 1 | const char * | | (const char *,const char *,const char *,const char *,const char *,SSL_CTX *,const stack_st_CONF_VALUE *,const char *,ASN1_VALUE *,const ASN1_ITEM *,const char *,long,const ASN1_ITEM *) | | app_http_post_asn1 | 2 | const char * | @@ -24841,6 +28948,10 @@ getSignatureParameterName | (const char *,const char *,const char *,const char *,int,BIO *,BIO *,OSSL_HTTP_bio_cb_t,void *,int,int) | | OSSL_HTTP_open | 8 | void * | | (const char *,const char *,const char *,const char *,int,BIO *,BIO *,OSSL_HTTP_bio_cb_t,void *,int,int) | | OSSL_HTTP_open | 9 | int | | (const char *,const char *,const char *,const char *,int,BIO *,BIO *,OSSL_HTTP_bio_cb_t,void *,int,int) | | OSSL_HTTP_open | 10 | int | +| (const char *,const char *,const char *,iconv_ilseq_handler) | | str_iconveh | 0 | const char * | +| (const char *,const char *,const char *,iconv_ilseq_handler) | | str_iconveh | 1 | const char * | +| (const char *,const char *,const char *,iconv_ilseq_handler) | | str_iconveh | 2 | const char * | +| (const char *,const char *,const char *,iconv_ilseq_handler) | | str_iconveh | 3 | iconv_ilseq_handler | | (const char *,const char *,const char *,int) | | OSSL_HTTP_adapt_proxy | 0 | const char * | | (const char *,const char *,const char *,int) | | OSSL_HTTP_adapt_proxy | 1 | const char * | | (const char *,const char *,const char *,int) | | OSSL_HTTP_adapt_proxy | 2 | const char * | @@ -24861,16 +28972,26 @@ getSignatureParameterName | (const char *,const char *,size_t) | | OPENSSL_strncasecmp | 0 | const char * | | (const char *,const char *,size_t) | | OPENSSL_strncasecmp | 1 | const char * | | (const char *,const char *,size_t) | | OPENSSL_strncasecmp | 2 | size_t | +| (const char *,const char *,size_t) | | c_strncasecmp | 0 | const char * | +| (const char *,const char *,size_t) | | c_strncasecmp | 1 | const char * | +| (const char *,const char *,size_t) | | c_strncasecmp | 2 | size_t | | (const char *,const char *,stack_st_CONF_VALUE **) | | X509V3_add_value | 0 | const char * | | (const char *,const char *,stack_st_CONF_VALUE **) | | X509V3_add_value | 1 | const char * | | (const char *,const char *,stack_st_CONF_VALUE **) | | X509V3_add_value | 2 | stack_st_CONF_VALUE ** | | (const char *,const char *,unsigned int) | | sqlite3_strlike | 0 | const char * | | (const char *,const char *,unsigned int) | | sqlite3_strlike | 1 | const char * | | (const char *,const char *,unsigned int) | | sqlite3_strlike | 2 | unsigned int | +| (const char *,const size_t,char **,char **,char **) | | Curl_parse_login_details | 0 | const char * | +| (const char *,const size_t,char **,char **,char **) | | Curl_parse_login_details | 1 | const size_t | +| (const char *,const size_t,char **,char **,char **) | | Curl_parse_login_details | 2 | char ** | +| (const char *,const size_t,char **,char **,char **) | | Curl_parse_login_details | 3 | char ** | +| (const char *,const size_t,char **,char **,char **) | | Curl_parse_login_details | 4 | char ** | | (const char *,const size_t,unsigned int *,unsigned int *) | | ossl_punycode_decode | 0 | const char * | | (const char *,const size_t,unsigned int *,unsigned int *) | | ossl_punycode_decode | 1 | const size_t | | (const char *,const size_t,unsigned int *,unsigned int *) | | ossl_punycode_decode | 2 | unsigned int * | | (const char *,const size_t,unsigned int *,unsigned int *) | | ossl_punycode_decode | 3 | unsigned int * | +| (const char *,const time_t *) | | curl_getdate | 0 | const char * | +| (const char *,const time_t *) | | curl_getdate | 1 | const time_t * | | (const char *,const unsigned char *,size_t,stack_st_CONF_VALUE **) | | x509v3_add_len_value_uchar | 0 | const char * | | (const char *,const unsigned char *,size_t,stack_st_CONF_VALUE **) | | x509v3_add_len_value_uchar | 1 | const unsigned char * | | (const char *,const unsigned char *,size_t,stack_st_CONF_VALUE **) | | x509v3_add_len_value_uchar | 2 | size_t | @@ -24878,6 +28999,8 @@ getSignatureParameterName | (const char *,const unsigned char *,stack_st_CONF_VALUE **) | | X509V3_add_value_uchar | 0 | const char * | | (const char *,const unsigned char *,stack_st_CONF_VALUE **) | | X509V3_add_value_uchar | 1 | const unsigned char * | | (const char *,const unsigned char *,stack_st_CONF_VALUE **) | | X509V3_add_value_uchar | 2 | stack_st_CONF_VALUE ** | +| (const char *,digestdata *) | | Curl_auth_decode_digest_http_message | 0 | const char * | +| (const char *,digestdata *) | | Curl_auth_decode_digest_http_message | 1 | digestdata * | | (const char *,double *) | | Jim_StringToDouble | 0 | const char * | | (const char *,double *) | | Jim_StringToDouble | 1 | double * | | (const char *,double *) | | OSSL_PARAM_construct_double | 0 | const char * | @@ -24981,12 +29104,55 @@ getSignatureParameterName | (const char *,long *,int) | | Jim_StringToWide | 2 | int | | (const char *,size_t *) | | OSSL_PARAM_construct_size_t | 0 | const char * | | (const char *,size_t *) | | OSSL_PARAM_construct_size_t | 1 | size_t * | +| (const char *,size_t) | | Curl_getn_scheme_handler | 0 | const char * | +| (const char *,size_t) | | Curl_getn_scheme_handler | 1 | size_t | +| (const char *,size_t) | | Curl_memdup0 | 0 | const char * | +| (const char *,size_t) | | Curl_memdup0 | 1 | size_t | | (const char *,size_t) | | OPENSSL_strnlen | 0 | const char * | | (const char *,size_t) | | OPENSSL_strnlen | 1 | size_t | +| (const char *,size_t) | | uv__strndup | 0 | const char * | +| (const char *,size_t) | | uv__strndup | 1 | size_t | +| (const char *,size_t,char **,size_t *,urlreject) | | Curl_urldecode | 0 | const char * | +| (const char *,size_t,char **,size_t *,urlreject) | | Curl_urldecode | 1 | size_t | +| (const char *,size_t,char **,size_t *,urlreject) | | Curl_urldecode | 2 | char ** | +| (const char *,size_t,char **,size_t *,urlreject) | | Curl_urldecode | 3 | size_t * | +| (const char *,size_t,char **,size_t *,urlreject) | | Curl_urldecode | 4 | urlreject | +| (const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveha | 0 | const char * | +| (const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveha | 1 | size_t | +| (const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveha | 2 | const char * | +| (const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveha | 3 | const char * | +| (const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveha | 4 | bool | +| (const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveha | 5 | iconv_ilseq_handler | +| (const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveha | 6 | size_t * | +| (const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveha | 7 | char ** | +| (const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveha | 8 | size_t * | +| (const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveh | 0 | const char * | +| (const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveh | 1 | size_t | +| (const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveh | 2 | const char * | +| (const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveh | 3 | const char * | +| (const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveh | 4 | iconv_ilseq_handler | +| (const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveh | 5 | size_t * | +| (const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveh | 6 | char ** | +| (const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveh | 7 | size_t * | | (const char *,size_t,const char *,int) | | CRYPTO_strndup | 0 | const char * | | (const char *,size_t,const char *,int) | | CRYPTO_strndup | 1 | size_t | | (const char *,size_t,const char *,int) | | CRYPTO_strndup | 2 | const char * | | (const char *,size_t,const char *,int) | | CRYPTO_strndup | 3 | int | +| (const char *,size_t,const iconveh_t *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_cd_iconveh | 0 | const char * | +| (const char *,size_t,const iconveh_t *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_cd_iconveh | 1 | size_t | +| (const char *,size_t,const iconveh_t *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_cd_iconveh | 2 | const iconveh_t * | +| (const char *,size_t,const iconveh_t *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_cd_iconveh | 3 | iconv_ilseq_handler | +| (const char *,size_t,const iconveh_t *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_cd_iconveh | 4 | size_t * | +| (const char *,size_t,const iconveh_t *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_cd_iconveh | 5 | char ** | +| (const char *,size_t,const iconveh_t *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_cd_iconveh | 6 | size_t * | +| (const char *,size_t,dynbuf *,bool) | | jsonquoted | 0 | const char * | +| (const char *,size_t,dynbuf *,bool) | | jsonquoted | 1 | size_t | +| (const char *,size_t,dynbuf *,bool) | | jsonquoted | 2 | dynbuf * | +| (const char *,size_t,dynbuf *,bool) | | jsonquoted | 3 | bool | +| (const char *,size_t,uint32_t *,size_t *) | | idn2_punycode_decode | 0 | const char * | +| (const char *,size_t,uint32_t *,size_t *) | | idn2_punycode_decode | 1 | size_t | +| (const char *,size_t,uint32_t *,size_t *) | | idn2_punycode_decode | 2 | uint32_t * | +| (const char *,size_t,uint32_t *,size_t *) | | idn2_punycode_decode | 3 | size_t * | | (const char *,sqlite3 **,int,const char *) | | sqlite3_open_v2 | 0 | const char * | | (const char *,sqlite3 **,int,const char *) | | sqlite3_open_v2 | 1 | sqlite3 ** | | (const char *,sqlite3 **,int,const char *) | | sqlite3_open_v2 | 2 | int | @@ -25019,10 +29185,17 @@ getSignatureParameterName | (const char *,stack_st_X509_CRL **,const char *,const char *) | | load_crls | 3 | const char * | | (const char *,time_t *) | | OSSL_PARAM_construct_time_t | 0 | const char * | | (const char *,time_t *) | | OSSL_PARAM_construct_time_t | 1 | time_t * | +| (const char *,uint16_t *,size_t) | | uv_wtf8_to_utf16 | 0 | const char * | +| (const char *,uint16_t *,size_t) | | uv_wtf8_to_utf16 | 1 | uint16_t * | +| (const char *,uint16_t *,size_t) | | uv_wtf8_to_utf16 | 2 | size_t | | (const char *,uint32_t *) | | OSSL_PARAM_construct_uint32 | 0 | const char * | | (const char *,uint32_t *) | | OSSL_PARAM_construct_uint32 | 1 | uint32_t * | | (const char *,uint64_t *) | | OSSL_PARAM_construct_uint64 | 0 | const char * | | (const char *,uint64_t *) | | OSSL_PARAM_construct_uint64 | 1 | uint64_t * | +| (const char *,unsigned char *) | | Curl_ntlm_core_mk_lm_hash | 0 | const char * | +| (const char *,unsigned char *) | | Curl_ntlm_core_mk_lm_hash | 1 | unsigned char * | +| (const char *,unsigned char *) | | Curl_ntlm_core_mk_nt_hash | 0 | const char * | +| (const char *,unsigned char *) | | Curl_ntlm_core_mk_nt_hash | 1 | unsigned char * | | (const char *,unsigned char *,size_t) | | OSSL_PARAM_construct_BN | 0 | const char * | | (const char *,unsigned char *,size_t) | | OSSL_PARAM_construct_BN | 1 | unsigned char * | | (const char *,unsigned char *,size_t) | | OSSL_PARAM_construct_BN | 2 | size_t | @@ -25032,6 +29205,10 @@ getSignatureParameterName | (const char *,unsigned long *) | | OSSL_PARAM_construct_ulong | 1 | unsigned long * | | (const char *,unsigned long *) | | opt_ulong | 0 | const char * | | (const char *,unsigned long *) | | opt_ulong | 1 | unsigned long * | +| (const char *,va_list) | | curl_mvaprintf | 0 | const char * | +| (const char *,va_list) | | curl_mvaprintf | 1 | va_list | +| (const char *,va_list) | | curl_mvprintf | 0 | const char * | +| (const char *,va_list) | | curl_mvprintf | 1 | va_list | | (const char *,va_list) | | sqlite3_vmprintf | 0 | const char * | | (const char *,va_list) | | sqlite3_vmprintf | 1 | va_list | | (const char *,void *) | | collect_names | 0 | const char * | @@ -25042,8 +29219,12 @@ getSignatureParameterName | (const char *,void *,size_t) | | OSSL_PARAM_construct_octet_string | 0 | const char * | | (const char *,void *,size_t) | | OSSL_PARAM_construct_octet_string | 1 | void * | | (const char *,void *,size_t) | | OSSL_PARAM_construct_octet_string | 2 | size_t | +| (const char *,void *,size_t) | | uv__random_readpath | 0 | const char * | +| (const char *,void *,size_t) | | uv__random_readpath | 1 | void * | +| (const char *,void *,size_t) | | uv__random_readpath | 2 | size_t | | (const char *const *,const char *const *) | | name_cmp | 0 | const char *const * | | (const char *const *,const char *const *) | | name_cmp | 1 | const char *const * | +| (const curl_easyoption *) | | curl_easy_option_next | 0 | const curl_easyoption * | | (const curve448_point_t) | | ossl_curve448_point_valid | 0 | const curve448_point_t | | (const custom_ext_methods *,ENDPOINT,unsigned int,size_t *) | | custom_ext_find | 0 | const custom_ext_methods * | | (const custom_ext_methods *,ENDPOINT,unsigned int,size_t *) | | custom_ext_find | 1 | ENDPOINT | @@ -25052,6 +29233,12 @@ getSignatureParameterName | (const deque &) | deque | deque | 0 | const deque & | | (const deque &,const Allocator &) | deque | deque | 0 | const deque & | | (const deque &,const Allocator &) | deque | deque | 1 | const class:1 & | +| (const dynbuf *) | | Curl_dyn_len | 0 | const dynbuf * | +| (const dynbuf *) | | Curl_dyn_ptr | 0 | const dynbuf * | +| (const dynbuf *) | | Curl_dyn_uptr | 0 | const dynbuf * | +| (const dynbuf *) | | curlx_dyn_len | 0 | const dynbuf * | +| (const dynbuf *) | | curlx_dyn_ptr | 0 | const dynbuf * | +| (const dynbuf *) | | curlx_dyn_uptr | 0 | const dynbuf * | | (const forward_list &) | forward_list | forward_list | 0 | const forward_list & | | (const forward_list &,const Allocator &) | forward_list | forward_list | 0 | const forward_list & | | (const forward_list &,const Allocator &) | forward_list | forward_list | 1 | const class:1 & | @@ -25066,6 +29253,35 @@ getSignatureParameterName | (const list &) | list | list | 0 | const list & | | (const list &,const Allocator &) | list | list | 0 | const list & | | (const list &,const Allocator &) | list | list | 1 | const class:1 & | +| (const nghttp2_extpri *) | | nghttp2_extpri_to_uint8 | 0 | const nghttp2_extpri * | +| (const nghttp2_map *) | | nghttp2_map_size | 0 | const nghttp2_map * | +| (const nghttp2_map *,..(*)(..),void *) | | nghttp2_map_each | 0 | const nghttp2_map * | +| (const nghttp2_map *,..(*)(..),void *) | | nghttp2_map_each | 1 | ..(*)(..) | +| (const nghttp2_map *,..(*)(..),void *) | | nghttp2_map_each | 2 | void * | +| (const nghttp2_map *,nghttp2_map_key_type) | | nghttp2_map_find | 0 | const nghttp2_map * | +| (const nghttp2_map *,nghttp2_map_key_type) | | nghttp2_map_find | 1 | nghttp2_map_key_type | +| (const nghttp2_nv *,const nghttp2_nv *) | | nghttp2_nv_compare_name | 0 | const nghttp2_nv * | +| (const nghttp2_nv *,const nghttp2_nv *) | | nghttp2_nv_compare_name | 1 | const nghttp2_nv * | +| (const nghttp2_settings_entry *,size_t,nghttp2_mem *) | | nghttp2_frame_iv_copy | 0 | const nghttp2_settings_entry * | +| (const nghttp2_settings_entry *,size_t,nghttp2_mem *) | | nghttp2_frame_iv_copy | 1 | size_t | +| (const nghttp2_settings_entry *,size_t,nghttp2_mem *) | | nghttp2_frame_iv_copy | 2 | nghttp2_mem * | +| (const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *) | | BrotliZopfliCreateCommands | 0 | const size_t | +| (const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *) | | BrotliZopfliCreateCommands | 1 | const size_t | +| (const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *) | | BrotliZopfliCreateCommands | 2 | const ZopfliNode * | +| (const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *) | | BrotliZopfliCreateCommands | 3 | int * | +| (const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *) | | BrotliZopfliCreateCommands | 4 | size_t * | +| (const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *) | | BrotliZopfliCreateCommands | 5 | const BrotliEncoderParams * | +| (const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *) | | BrotliZopfliCreateCommands | 6 | Command * | +| (const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *) | | BrotliZopfliCreateCommands | 7 | size_t * | +| (const sockaddr *,char *,size_t) | | uv_ip_name | 0 | const sockaddr * | +| (const sockaddr *,char *,size_t) | | uv_ip_name | 1 | char * | +| (const sockaddr *,char *,size_t) | | uv_ip_name | 2 | size_t | +| (const sockaddr_in6 *,char *,size_t) | | uv_ip6_name | 0 | const sockaddr_in6 * | +| (const sockaddr_in6 *,char *,size_t) | | uv_ip6_name | 1 | char * | +| (const sockaddr_in6 *,char *,size_t) | | uv_ip6_name | 2 | size_t | +| (const sockaddr_in *,char *,size_t) | | uv_ip4_name | 0 | const sockaddr_in * | +| (const sockaddr_in *,char *,size_t) | | uv_ip4_name | 1 | char * | +| (const sockaddr_in *,char *,size_t) | | uv_ip4_name | 2 | size_t | | (const sqlite3_value *) | | sqlite3_value_dup | 0 | const sqlite3_value * | | (const stack_st_SCT *,unsigned char **) | | i2d_SCT_LIST | 0 | const stack_st_SCT * | | (const stack_st_SCT *,unsigned char **) | | i2d_SCT_LIST | 1 | unsigned char ** | @@ -25099,6 +29315,12 @@ getSignatureParameterName | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 1 | int | | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 2 | int | | (const stack_st_X509_NAME *) | | SSL_dup_CA_list | 0 | const stack_st_X509_NAME * | +| (const stat *) | | get_stat_atime | 0 | const stat * | +| (const stat *) | | get_stat_atime_ns | 0 | const stat * | +| (const stat *) | | get_stat_ctime | 0 | const stat * | +| (const stat *) | | get_stat_ctime_ns | 0 | const stat * | +| (const stat *) | | get_stat_mtime | 0 | const stat * | +| (const stat *) | | get_stat_mtime_ns | 0 | const stat * | | (const time_t *,tm *) | | OPENSSL_gmtime | 0 | const time_t * | | (const time_t *,tm *) | | OPENSSL_gmtime | 1 | tm * | | (const u128[16],uint8_t *,const uint8_t *,size_t) | | ossl_polyval_ghash_hash | 0 | const u128[16] | @@ -25107,6 +29329,10 @@ getSignatureParameterName | (const u128[16],uint8_t *,const uint8_t *,size_t) | | ossl_polyval_ghash_hash | 3 | size_t | | (const uint8_t *,SM4_KEY *) | | ossl_sm4_set_key | 0 | const uint8_t * | | (const uint8_t *,SM4_KEY *) | | ossl_sm4_set_key | 1 | SM4_KEY * | +| (const uint8_t *,const uint8_t *,uint8_t **,int) | | idn2_register_u8 | 0 | const uint8_t * | +| (const uint8_t *,const uint8_t *,uint8_t **,int) | | idn2_register_u8 | 1 | const uint8_t * | +| (const uint8_t *,const uint8_t *,uint8_t **,int) | | idn2_register_u8 | 2 | uint8_t ** | +| (const uint8_t *,const uint8_t *,uint8_t **,int) | | idn2_register_u8 | 3 | int | | (const uint8_t *,int,int,PROV_CTX *,const char *) | | ossl_ml_dsa_d2i_PKCS8 | 0 | const uint8_t * | | (const uint8_t *,int,int,PROV_CTX *,const char *) | | ossl_ml_dsa_d2i_PKCS8 | 1 | int | | (const uint8_t *,int,int,PROV_CTX *,const char *) | | ossl_ml_dsa_d2i_PKCS8 | 2 | int | @@ -25129,8 +29355,15 @@ getSignatureParameterName | (const uint8_t *,int,int,PROV_CTX *,const char *) | | ossl_ml_kem_d2i_PUBKEY | 4 | const char * | | (const uint8_t *,size_t) | | FuzzerTestOneInput | 0 | const uint8_t * | | (const uint8_t *,size_t) | | FuzzerTestOneInput | 1 | size_t | +| (const uint8_t *,size_t) | | nghttp2_hd_huff_encode_count | 0 | const uint8_t * | +| (const uint8_t *,size_t) | | nghttp2_hd_huff_encode_count | 1 | size_t | | (const uint8_t *,size_t) | | ossl_ed448_pubkey_verify | 0 | const uint8_t * | | (const uint8_t *,size_t) | | ossl_ed448_pubkey_verify | 1 | size_t | +| (const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *) | | BrotliStoreHuffmanTree | 0 | const uint8_t * | +| (const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *) | | BrotliStoreHuffmanTree | 1 | size_t | +| (const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *) | | BrotliStoreHuffmanTree | 2 | HuffmanTree * | +| (const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *) | | BrotliStoreHuffmanTree | 3 | size_t * | +| (const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *) | | BrotliStoreHuffmanTree | 4 | uint8_t * | | (const uint8_t *,size_t,ML_KEM_KEY *) | | ossl_ml_kem_parse_private_key | 0 | const uint8_t * | | (const uint8_t *,size_t,ML_KEM_KEY *) | | ossl_ml_kem_parse_private_key | 1 | size_t | | (const uint8_t *,size_t,ML_KEM_KEY *) | | ossl_ml_kem_parse_private_key | 2 | ML_KEM_KEY * | @@ -25140,12 +29373,46 @@ getSignatureParameterName | (const uint8_t *,size_t,ML_KEM_KEY *) | | ossl_ml_kem_set_seed | 0 | const uint8_t * | | (const uint8_t *,size_t,ML_KEM_KEY *) | | ossl_ml_kem_set_seed | 1 | size_t | | (const uint8_t *,size_t,ML_KEM_KEY *) | | ossl_ml_kem_set_seed | 2 | ML_KEM_KEY * | +| (const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *) | | BrotliWriteHuffmanTree | 0 | const uint8_t * | +| (const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *) | | BrotliWriteHuffmanTree | 1 | size_t | +| (const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *) | | BrotliWriteHuffmanTree | 2 | size_t * | +| (const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *) | | BrotliWriteHuffmanTree | 3 | uint8_t * | +| (const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *) | | BrotliWriteHuffmanTree | 4 | uint8_t * | +| (const uint8_t *,size_t,uint16_t *) | | BrotliConvertBitDepthsToSymbols | 0 | const uint8_t * | +| (const uint8_t *,size_t,uint16_t *) | | BrotliConvertBitDepthsToSymbols | 1 | size_t | +| (const uint8_t *,size_t,uint16_t *) | | BrotliConvertBitDepthsToSymbols | 2 | uint16_t * | +| (const uint8_t *,uint8_t **,int) | | idn2_lookup_u8 | 0 | const uint8_t * | +| (const uint8_t *,uint8_t **,int) | | idn2_lookup_u8 | 1 | uint8_t ** | +| (const uint8_t *,uint8_t **,int) | | idn2_lookup_u8 | 2 | int | | (const uint8_t *,uint8_t *,const SM4_KEY *) | | ossl_sm4_decrypt | 0 | const uint8_t * | | (const uint8_t *,uint8_t *,const SM4_KEY *) | | ossl_sm4_decrypt | 1 | uint8_t * | | (const uint8_t *,uint8_t *,const SM4_KEY *) | | ossl_sm4_decrypt | 2 | const SM4_KEY * | | (const uint8_t *,uint8_t *,const SM4_KEY *) | | ossl_sm4_encrypt | 0 | const uint8_t * | | (const uint8_t *,uint8_t *,const SM4_KEY *) | | ossl_sm4_encrypt | 1 | uint8_t * | | (const uint8_t *,uint8_t *,const SM4_KEY *) | | ossl_sm4_encrypt | 2 | const SM4_KEY * | +| (const uint16_t *,ssize_t,char **,size_t *) | | uv_utf16_to_wtf8 | 0 | const uint16_t * | +| (const uint16_t *,ssize_t,char **,size_t *) | | uv_utf16_to_wtf8 | 1 | ssize_t | +| (const uint16_t *,ssize_t,char **,size_t *) | | uv_utf16_to_wtf8 | 2 | char ** | +| (const uint16_t *,ssize_t,char **,size_t *) | | uv_utf16_to_wtf8 | 3 | size_t * | +| (const uint32_t *,const size_t,const int,HuffmanTree *,uint8_t *) | | BrotliCreateHuffmanTree | 0 | const uint32_t * | +| (const uint32_t *,const size_t,const int,HuffmanTree *,uint8_t *) | | BrotliCreateHuffmanTree | 1 | const size_t | +| (const uint32_t *,const size_t,const int,HuffmanTree *,uint8_t *) | | BrotliCreateHuffmanTree | 2 | const int | +| (const uint32_t *,const size_t,const int,HuffmanTree *,uint8_t *) | | BrotliCreateHuffmanTree | 3 | HuffmanTree * | +| (const uint32_t *,const size_t,const int,HuffmanTree *,uint8_t *) | | BrotliCreateHuffmanTree | 4 | uint8_t * | +| (const uint32_t *,size_t,char *,size_t *) | | idn2_punycode_encode | 0 | const uint32_t * | +| (const uint32_t *,size_t,char *,size_t *) | | idn2_punycode_encode | 1 | size_t | +| (const uint32_t *,size_t,char *,size_t *) | | idn2_punycode_encode | 2 | char * | +| (const uint32_t *,size_t,char *,size_t *) | | idn2_punycode_encode | 3 | size_t * | +| (const uint32_t *,size_t,uint32_t *,size_t *,int) | | idn2_to_unicode_44i | 0 | const uint32_t * | +| (const uint32_t *,size_t,uint32_t *,size_t *,int) | | idn2_to_unicode_44i | 1 | size_t | +| (const uint32_t *,size_t,uint32_t *,size_t *,int) | | idn2_to_unicode_44i | 2 | uint32_t * | +| (const uint32_t *,size_t,uint32_t *,size_t *,int) | | idn2_to_unicode_44i | 3 | size_t * | +| (const uint32_t *,size_t,uint32_t *,size_t *,int) | | idn2_to_unicode_44i | 4 | int | +| (const unsigned char *) | | Curl_read16_be | 0 | const unsigned char * | +| (const unsigned char *) | | Curl_read16_le | 0 | const unsigned char * | +| (const unsigned char *) | | Curl_read32_le | 0 | const unsigned char * | +| (const unsigned char *) | | _libssh2_ntohu32 | 0 | const unsigned char * | +| (const unsigned char *) | | _libssh2_ntohu64 | 0 | const unsigned char * | | (const unsigned char *) | | ossl_quic_vlint_decode_unchecked | 0 | const unsigned char * | | (const unsigned char *) | CStringT | CStringT | 0 | const unsigned char * | | (const unsigned char *) | CStringT | operator= | 0 | const unsigned char * | @@ -25164,6 +29431,10 @@ getSignatureParameterName | (const unsigned char **,long,OSSL_LIB_CTX *,const char *) | | ossl_d2i_X509_PUBKEY_INTERNAL | 1 | long | | (const unsigned char **,long,OSSL_LIB_CTX *,const char *) | | ossl_d2i_X509_PUBKEY_INTERNAL | 2 | OSSL_LIB_CTX * | | (const unsigned char **,long,OSSL_LIB_CTX *,const char *) | | ossl_d2i_X509_PUBKEY_INTERNAL | 3 | const char * | +| (const unsigned char **,unsigned char *,const unsigned char *,unsigned int) | | nghttp2_select_alpn | 0 | const unsigned char ** | +| (const unsigned char **,unsigned char *,const unsigned char *,unsigned int) | | nghttp2_select_alpn | 1 | unsigned char * | +| (const unsigned char **,unsigned char *,const unsigned char *,unsigned int) | | nghttp2_select_alpn | 2 | const unsigned char * | +| (const unsigned char **,unsigned char *,const unsigned char *,unsigned int) | | nghttp2_select_alpn | 3 | unsigned int | | (const unsigned char **,unsigned int,int *) | | ossl_b2i | 0 | const unsigned char ** | | (const unsigned char **,unsigned int,int *) | | ossl_b2i | 1 | unsigned int | | (const unsigned char **,unsigned int,int *) | | ossl_b2i | 2 | int * | @@ -25328,6 +29599,10 @@ getSignatureParameterName | (const unsigned char *,size_t,unsigned char *) | | ossl_sha1 | 0 | const unsigned char * | | (const unsigned char *,size_t,unsigned char *) | | ossl_sha1 | 1 | size_t | | (const unsigned char *,size_t,unsigned char *) | | ossl_sha1 | 2 | unsigned char * | +| (const unsigned char *,size_t,unsigned char *,size_t) | | Curl_hexencode | 0 | const unsigned char * | +| (const unsigned char *,size_t,unsigned char *,size_t) | | Curl_hexencode | 1 | size_t | +| (const unsigned char *,size_t,unsigned char *,size_t) | | Curl_hexencode | 2 | unsigned char * | +| (const unsigned char *,size_t,unsigned char *,size_t) | | Curl_hexencode | 3 | size_t | | (const unsigned char *,unsigned char *,IDEA_KEY_SCHEDULE *) | | IDEA_ecb_encrypt | 0 | const unsigned char * | | (const unsigned char *,unsigned char *,IDEA_KEY_SCHEDULE *) | | IDEA_ecb_encrypt | 1 | unsigned char * | | (const unsigned char *,unsigned char *,IDEA_KEY_SCHEDULE *) | | IDEA_ecb_encrypt | 2 | IDEA_KEY_SCHEDULE * | @@ -25706,6 +29981,61 @@ getSignatureParameterName | (const unsigned char[16],unsigned char[16],const SEED_KEY_SCHEDULE *) | | SEED_encrypt | 0 | const unsigned char[16] | | (const unsigned char[16],unsigned char[16],const SEED_KEY_SCHEDULE *) | | SEED_encrypt | 1 | unsigned char[16] | | (const unsigned char[16],unsigned char[16],const SEED_KEY_SCHEDULE *) | | SEED_encrypt | 2 | const SEED_KEY_SCHEDULE * | +| (const uv__io_t *,unsigned int) | | uv__io_active | 0 | const uv__io_t * | +| (const uv__io_t *,unsigned int) | | uv__io_active | 1 | unsigned int | +| (const uv__statx *,uv_stat_t *) | | uv__statx_to_stat | 0 | const uv__statx * | +| (const uv__statx *,uv_stat_t *) | | uv__statx_to_stat | 1 | uv_stat_t * | +| (const uv_buf_t[],unsigned int) | | uv__count_bufs | 0 | const uv_buf_t[] | +| (const uv_buf_t[],unsigned int) | | uv__count_bufs | 1 | unsigned int | +| (const uv_fs_t *) | | uv_fs_get_path | 0 | const uv_fs_t * | +| (const uv_fs_t *) | | uv_fs_get_ptr | 0 | const uv_fs_t * | +| (const uv_fs_t *) | | uv_fs_get_result | 0 | const uv_fs_t * | +| (const uv_fs_t *) | | uv_fs_get_system_error | 0 | const uv_fs_t * | +| (const uv_fs_t *) | | uv_fs_get_type | 0 | const uv_fs_t * | +| (const uv_handle_t *) | | uv_handle_get_data | 0 | const uv_handle_t * | +| (const uv_handle_t *) | | uv_handle_get_loop | 0 | const uv_handle_t * | +| (const uv_handle_t *) | | uv_handle_get_type | 0 | const uv_handle_t * | +| (const uv_handle_t *) | | uv_has_ref | 0 | const uv_handle_t * | +| (const uv_handle_t *) | | uv_is_active | 0 | const uv_handle_t * | +| (const uv_handle_t *) | | uv_is_closing | 0 | const uv_handle_t * | +| (const uv_handle_t *,uv__peersockfunc,sockaddr *,int *) | | uv__getsockpeername | 0 | const uv_handle_t * | +| (const uv_handle_t *,uv__peersockfunc,sockaddr *,int *) | | uv__getsockpeername | 1 | uv__peersockfunc | +| (const uv_handle_t *,uv__peersockfunc,sockaddr *,int *) | | uv__getsockpeername | 2 | sockaddr * | +| (const uv_handle_t *,uv__peersockfunc,sockaddr *,int *) | | uv__getsockpeername | 3 | int * | +| (const uv_handle_t *,uv_os_fd_t *) | | uv_fileno | 0 | const uv_handle_t * | +| (const uv_handle_t *,uv_os_fd_t *) | | uv_fileno | 1 | uv_os_fd_t * | +| (const uv_lib_t *) | | uv_dlerror | 0 | const uv_lib_t * | +| (const uv_loop_t *) | | uv__next_timeout | 0 | const uv_loop_t * | +| (const uv_loop_t *) | | uv_backend_fd | 0 | const uv_loop_t * | +| (const uv_loop_t *) | | uv_backend_timeout | 0 | const uv_loop_t * | +| (const uv_loop_t *) | | uv_loop_get_data | 0 | const uv_loop_t * | +| (const uv_loop_t *) | | uv_now | 0 | const uv_loop_t * | +| (const uv_pipe_t *,char *,size_t *) | | uv_pipe_getpeername | 0 | const uv_pipe_t * | +| (const uv_pipe_t *,char *,size_t *) | | uv_pipe_getpeername | 1 | char * | +| (const uv_pipe_t *,char *,size_t *) | | uv_pipe_getpeername | 2 | size_t * | +| (const uv_pipe_t *,char *,size_t *) | | uv_pipe_getsockname | 0 | const uv_pipe_t * | +| (const uv_pipe_t *,char *,size_t *) | | uv_pipe_getsockname | 1 | char * | +| (const uv_pipe_t *,char *,size_t *) | | uv_pipe_getsockname | 2 | size_t * | +| (const uv_process_t *) | | uv_process_get_pid | 0 | const uv_process_t * | +| (const uv_req_t *) | | uv_req_get_data | 0 | const uv_req_t * | +| (const uv_req_t *) | | uv_req_get_type | 0 | const uv_req_t * | +| (const uv_stream_t *) | | uv_stream_get_write_queue_size | 0 | const uv_stream_t * | +| (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getpeername | 0 | const uv_tcp_t * | +| (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getpeername | 1 | sockaddr * | +| (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getpeername | 2 | int * | +| (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getsockname | 0 | const uv_tcp_t * | +| (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getsockname | 1 | sockaddr * | +| (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getsockname | 2 | int * | +| (const uv_timer_t *) | | uv_timer_get_due_in | 0 | const uv_timer_t * | +| (const uv_timer_t *) | | uv_timer_get_repeat | 0 | const uv_timer_t * | +| (const uv_udp_t *) | | uv_udp_get_send_queue_count | 0 | const uv_udp_t * | +| (const uv_udp_t *) | | uv_udp_get_send_queue_size | 0 | const uv_udp_t * | +| (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getpeername | 0 | const uv_udp_t * | +| (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getpeername | 1 | sockaddr * | +| (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getpeername | 2 | int * | +| (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getsockname | 0 | const uv_udp_t * | +| (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getsockname | 1 | sockaddr * | +| (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getsockname | 2 | int * | | (const vector &) | vector | vector | 0 | const vector & | | (const vector &,const Allocator &) | vector | vector | 0 | const vector & | | (const vector &,const Allocator &) | vector | vector | 1 | const class:1 & | @@ -25731,6 +30061,11 @@ getSignatureParameterName | (const void *,const void *,int,int,..(*)(..),int) | | ossl_bsearch | 3 | int | | (const void *,const void *,int,int,..(*)(..),int) | | ossl_bsearch | 4 | ..(*)(..) | | (const void *,const void *,int,int,..(*)(..),int) | | ossl_bsearch | 5 | int | +| (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 0 | const void * | +| (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 1 | const void * | +| (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 2 | size_t | +| (const void *,size_t) | | Curl_memdup | 0 | const void * | +| (const void *,size_t) | | Curl_memdup | 1 | size_t | | (const void *,size_t,const char *,int) | | CRYPTO_memdup | 0 | const void * | | (const void *,size_t,const char *,int) | | CRYPTO_memdup | 1 | size_t | | (const void *,size_t,const char *,int) | | CRYPTO_memdup | 2 | const char * | @@ -25785,6 +30120,79 @@ getSignatureParameterName | (const_iterator,size_type,const T &) | vector | insert | 0 | const_iterator | | (const_iterator,size_type,const T &) | vector | insert | 1 | size_type | | (const_iterator,size_type,const T &) | vector | insert | 2 | const class:0 & | +| (cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t) | | Curl_cpool_init | 0 | cpool * | +| (cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t) | | Curl_cpool_init | 1 | Curl_cpool_disconnect_cb * | +| (cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t) | | Curl_cpool_init | 2 | Curl_multi * | +| (cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t) | | Curl_cpool_init | 3 | Curl_share * | +| (cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t) | | Curl_cpool_init | 4 | size_t | +| (cpool *,fd_set *,fd_set *,int *) | | Curl_cpool_setfds | 0 | cpool * | +| (cpool *,fd_set *,fd_set *,int *) | | Curl_cpool_setfds | 1 | fd_set * | +| (cpool *,fd_set *,fd_set *,int *) | | Curl_cpool_setfds | 2 | fd_set * | +| (cpool *,fd_set *,fd_set *,int *) | | Curl_cpool_setfds | 3 | int * | +| (curl_blob **,const curl_blob *) | | Curl_setblobopt | 0 | curl_blob ** | +| (curl_blob **,const curl_blob *) | | Curl_setblobopt | 1 | const curl_blob * | +| (curl_httppost **,curl_httppost **,...) | | curl_formadd | 0 | curl_httppost ** | +| (curl_httppost **,curl_httppost **,...) | | curl_formadd | 1 | curl_httppost ** | +| (curl_httppost **,curl_httppost **,...) | | curl_formadd | 2 | ... | +| (curl_mime *) | | curl_mime_addpart | 0 | curl_mime * | +| (curl_mimepart *) | | Curl_mime_cleanpart | 0 | curl_mimepart * | +| (curl_mimepart *,const char *) | | curl_mime_filedata | 0 | curl_mimepart * | +| (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | const char * | +| (curl_mimepart *,const char *,size_t) | | curl_mime_data | 0 | curl_mimepart * | +| (curl_mimepart *,const char *,size_t) | | curl_mime_data | 1 | const char * | +| (curl_mimepart *,const char *,size_t) | | curl_mime_data | 2 | size_t | +| (curl_mimepart *,curl_mime *) | | curl_mime_subparts | 0 | curl_mimepart * | +| (curl_mimepart *,curl_mime *) | | curl_mime_subparts | 1 | curl_mime * | +| (curl_mimepart *,curl_mime *,int) | | Curl_mime_set_subparts | 0 | curl_mimepart * | +| (curl_mimepart *,curl_mime *,int) | | Curl_mime_set_subparts | 1 | curl_mime * | +| (curl_mimepart *,curl_mime *,int) | | Curl_mime_set_subparts | 2 | int | +| (curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *) | | curl_mime_data_cb | 0 | curl_mimepart * | +| (curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *) | | curl_mime_data_cb | 1 | curl_off_t | +| (curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *) | | curl_mime_data_cb | 2 | curl_read_callback | +| (curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *) | | curl_mime_data_cb | 3 | curl_seek_callback | +| (curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *) | | curl_mime_data_cb | 4 | curl_free_callback | +| (curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *) | | curl_mime_data_cb | 5 | void * | +| (curl_mimepart *,curl_slist *,int) | | curl_mime_headers | 0 | curl_mimepart * | +| (curl_mimepart *,curl_slist *,int) | | curl_mime_headers | 1 | curl_slist * | +| (curl_mimepart *,curl_slist *,int) | | curl_mime_headers | 2 | int | +| (curl_off_t *,const char *) | | str2offset | 0 | curl_off_t * | +| (curl_off_t *,const char *) | | str2offset | 1 | const char * | +| (curl_off_t) | | curlx_sotouz | 0 | curl_off_t | +| (curl_pollfds *,curl_socket_t,short) | | Curl_pollfds_add_sock | 0 | curl_pollfds * | +| (curl_pollfds *,curl_socket_t,short) | | Curl_pollfds_add_sock | 1 | curl_socket_t | +| (curl_pollfds *,curl_socket_t,short) | | Curl_pollfds_add_sock | 2 | short | +| (curl_pollfds *,easy_pollset *) | | Curl_pollfds_add_ps | 0 | curl_pollfds * | +| (curl_pollfds *,easy_pollset *) | | Curl_pollfds_add_ps | 1 | easy_pollset * | +| (curl_pollfds *,pollfd *,unsigned int) | | Curl_pollfds_init | 0 | curl_pollfds * | +| (curl_pollfds *,pollfd *,unsigned int) | | Curl_pollfds_init | 1 | pollfd * | +| (curl_pollfds *,pollfd *,unsigned int) | | Curl_pollfds_init | 2 | unsigned int | +| (curl_pushheaders *,const char *) | | curl_pushheader_byname | 0 | curl_pushheaders * | +| (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | const char * | +| (curl_pushheaders *,size_t) | | curl_pushheader_bynum | 0 | curl_pushheaders * | +| (curl_pushheaders *,size_t) | | curl_pushheader_bynum | 1 | size_t | +| (curl_slist *) | | Curl_slist_duplicate | 0 | curl_slist * | +| (curl_slist **,const char *) | | add2list | 0 | curl_slist ** | +| (curl_slist **,const char *) | | add2list | 1 | const char * | +| (curl_slist *,char *) | | Curl_slist_append_nodup | 0 | curl_slist * | +| (curl_slist *,char *) | | Curl_slist_append_nodup | 1 | char * | +| (curl_slist *,const char *) | | curl_slist_append | 0 | curl_slist * | +| (curl_slist *,const char *) | | curl_slist_append | 1 | const char * | +| (curl_socket_t[2],bool) | | Curl_eventfd | 0 | curl_socket_t[2] | +| (curl_socket_t[2],bool) | | Curl_eventfd | 1 | bool | +| (curltime,Curl_tree *) | | Curl_splay | 0 | curltime | +| (curltime,Curl_tree *) | | Curl_splay | 1 | Curl_tree * | +| (curltime,Curl_tree *,Curl_tree *) | | Curl_splayinsert | 0 | curltime | +| (curltime,Curl_tree *,Curl_tree *) | | Curl_splayinsert | 1 | Curl_tree * | +| (curltime,Curl_tree *,Curl_tree *) | | Curl_splayinsert | 2 | Curl_tree * | +| (curltime,Curl_tree *,Curl_tree **) | | Curl_splaygetbest | 0 | curltime | +| (curltime,Curl_tree *,Curl_tree **) | | Curl_splaygetbest | 1 | Curl_tree * | +| (curltime,Curl_tree *,Curl_tree **) | | Curl_splaygetbest | 2 | Curl_tree ** | +| (curltime,curltime) | | Curl_timediff | 0 | curltime | +| (curltime,curltime) | | Curl_timediff | 1 | curltime | +| (curltime,curltime) | | Curl_timediff_ceil | 0 | curltime | +| (curltime,curltime) | | Curl_timediff_ceil | 1 | curltime | +| (curltime,curltime) | | Curl_timediff_us | 0 | curltime | +| (curltime,curltime) | | Curl_timediff_us | 1 | curltime | | (curve448_point_t,const curve448_point_t) | | ossl_curve448_point_double | 0 | curve448_point_t | | (curve448_point_t,const curve448_point_t) | | ossl_curve448_point_double | 1 | const curve448_point_t | | (curve448_point_t,const curve448_precomputed_s *,const curve448_scalar_t) | | ossl_curve448_precomputed_scalarmul | 0 | curve448_point_t | @@ -25826,14 +30234,99 @@ getSignatureParameterName | (d2i_of_void *,const char *,FILE *,void **,pem_password_cb *,void *) | | PEM_ASN1_read | 3 | void ** | | (d2i_of_void *,const char *,FILE *,void **,pem_password_cb *,void *) | | PEM_ASN1_read | 4 | pem_password_cb * | | (d2i_of_void *,const char *,FILE *,void **,pem_password_cb *,void *) | | PEM_ASN1_read | 5 | void * | +| (deflate_state *,charf *,ulg,int) | | _tr_flush_block | 0 | deflate_state * | +| (deflate_state *,charf *,ulg,int) | | _tr_flush_block | 1 | charf * | +| (deflate_state *,charf *,ulg,int) | | _tr_flush_block | 2 | ulg | +| (deflate_state *,charf *,ulg,int) | | _tr_flush_block | 3 | int | +| (deflate_state *,charf *,ulg,int) | | _tr_stored_block | 0 | deflate_state * | +| (deflate_state *,charf *,ulg,int) | | _tr_stored_block | 1 | charf * | +| (deflate_state *,charf *,ulg,int) | | _tr_stored_block | 2 | ulg | +| (deflate_state *,charf *,ulg,int) | | _tr_stored_block | 3 | int | +| (deflate_state *,unsigned int,unsigned int) | | _tr_tally | 0 | deflate_state * | +| (deflate_state *,unsigned int,unsigned int) | | _tr_tally | 1 | unsigned int | +| (deflate_state *,unsigned int,unsigned int) | | _tr_tally | 2 | unsigned int | | (deque &&) | deque | deque | 0 | deque && | | (deque &&,const Allocator &) | deque | deque | 0 | deque && | | (deque &&,const Allocator &) | deque | deque | 1 | const class:1 & | +| (dynbuf *) | | Curl_dyn_free | 0 | dynbuf * | +| (dynbuf *) | | curlx_dyn_free | 0 | dynbuf * | +| (dynbuf *,Curl_easy *) | | Curl_http2_request_upgrade | 0 | dynbuf * | +| (dynbuf *,Curl_easy *) | | Curl_http2_request_upgrade | 1 | Curl_easy * | +| (dynbuf *,FILE *) | | Curl_get_line | 0 | dynbuf * | +| (dynbuf *,FILE *) | | Curl_get_line | 1 | FILE * | +| (dynbuf *,FILE *) | | curlx_get_line | 0 | dynbuf * | +| (dynbuf *,FILE *) | | curlx_get_line | 1 | FILE * | +| (dynbuf *,const char *) | | Curl_dyn_add | 0 | dynbuf * | +| (dynbuf *,const char *) | | Curl_dyn_add | 1 | const char * | +| (dynbuf *,const char *) | | curlx_dyn_add | 0 | dynbuf * | +| (dynbuf *,const char *) | | curlx_dyn_add | 1 | const char * | +| (dynbuf *,const char *,va_list) | | Curl_dyn_vaddf | 0 | dynbuf * | +| (dynbuf *,const char *,va_list) | | Curl_dyn_vaddf | 1 | const char * | +| (dynbuf *,const char *,va_list) | | Curl_dyn_vaddf | 2 | va_list | +| (dynbuf *,const char *,va_list) | | Curl_dyn_vprintf | 0 | dynbuf * | +| (dynbuf *,const char *,va_list) | | Curl_dyn_vprintf | 1 | const char * | +| (dynbuf *,const char *,va_list) | | Curl_dyn_vprintf | 2 | va_list | +| (dynbuf *,const char *,va_list) | | curlx_dyn_vaddf | 0 | dynbuf * | +| (dynbuf *,const char *,va_list) | | curlx_dyn_vaddf | 1 | const char * | +| (dynbuf *,const char *,va_list) | | curlx_dyn_vaddf | 2 | va_list | +| (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 0 | dynbuf * | +| (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 1 | const void * | +| (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 2 | size_t | +| (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 0 | dynbuf * | +| (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 1 | const void * | +| (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 2 | size_t | +| (dynbuf *,size_t *) | | Curl_dyn_take | 0 | dynbuf * | +| (dynbuf *,size_t *) | | Curl_dyn_take | 1 | size_t * | +| (dynbuf *,size_t *) | | curlx_dyn_take | 0 | dynbuf * | +| (dynbuf *,size_t *) | | curlx_dyn_take | 1 | size_t * | +| (dynbuf *,size_t) | | Curl_dyn_init | 0 | dynbuf * | +| (dynbuf *,size_t) | | Curl_dyn_init | 1 | size_t | +| (dynbuf *,size_t) | | Curl_dyn_setlen | 0 | dynbuf * | +| (dynbuf *,size_t) | | Curl_dyn_setlen | 1 | size_t | +| (dynbuf *,size_t) | | Curl_dyn_tail | 0 | dynbuf * | +| (dynbuf *,size_t) | | Curl_dyn_tail | 1 | size_t | +| (dynbuf *,size_t) | | curlx_dyn_init | 0 | dynbuf * | +| (dynbuf *,size_t) | | curlx_dyn_init | 1 | size_t | +| (dynbuf *,size_t) | | curlx_dyn_setlen | 0 | dynbuf * | +| (dynbuf *,size_t) | | curlx_dyn_setlen | 1 | size_t | +| (dynbuf *,size_t) | | curlx_dyn_tail | 0 | dynbuf * | +| (dynbuf *,size_t) | | curlx_dyn_tail | 1 | size_t | +| (dynhds *) | | Curl_dynhds_count | 0 | dynhds * | +| (dynhds *,const char *) | | Curl_dynhds_cget | 0 | dynhds * | +| (dynhds *,const char *) | | Curl_dynhds_cget | 1 | const char * | +| (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 0 | dynhds * | +| (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | const char * | +| (dynhds *,const char *,const char *) | | Curl_dynhds_cadd | 0 | dynhds * | +| (dynhds *,const char *,const char *) | | Curl_dynhds_cadd | 1 | const char * | +| (dynhds *,const char *,const char *) | | Curl_dynhds_cadd | 2 | const char * | +| (dynhds *,const char *,size_t) | | Curl_dynhds_get | 0 | dynhds * | +| (dynhds *,const char *,size_t) | | Curl_dynhds_get | 1 | const char * | +| (dynhds *,const char *,size_t) | | Curl_dynhds_get | 2 | size_t | +| (dynhds *,const char *,size_t) | | Curl_dynhds_h1_add_line | 0 | dynhds * | +| (dynhds *,const char *,size_t) | | Curl_dynhds_h1_add_line | 1 | const char * | +| (dynhds *,const char *,size_t) | | Curl_dynhds_h1_add_line | 2 | size_t | +| (dynhds *,const char *,size_t,const char *,size_t) | | Curl_dynhds_add | 0 | dynhds * | +| (dynhds *,const char *,size_t,const char *,size_t) | | Curl_dynhds_add | 1 | const char * | +| (dynhds *,const char *,size_t,const char *,size_t) | | Curl_dynhds_add | 2 | size_t | +| (dynhds *,const char *,size_t,const char *,size_t) | | Curl_dynhds_add | 3 | const char * | +| (dynhds *,const char *,size_t,const char *,size_t) | | Curl_dynhds_add | 4 | size_t | +| (dynhds *,int) | | Curl_dynhds_set_opts | 0 | dynhds * | +| (dynhds *,int) | | Curl_dynhds_set_opts | 1 | int | +| (dynhds *,size_t *) | | Curl_dynhds_to_nva | 0 | dynhds * | +| (dynhds *,size_t *) | | Curl_dynhds_to_nva | 1 | size_t * | +| (dynhds *,size_t) | | Curl_dynhds_getn | 0 | dynhds * | +| (dynhds *,size_t) | | Curl_dynhds_getn | 1 | size_t | +| (dynhds *,size_t,size_t) | | Curl_dynhds_init | 0 | dynhds * | +| (dynhds *,size_t,size_t) | | Curl_dynhds_init | 1 | size_t | +| (dynhds *,size_t,size_t) | | Curl_dynhds_init | 2 | size_t | +| (fileinfo *) | | Curl_fileinfo_cleanup | 0 | fileinfo * | | (format_string,Args &&) | | format | 0 | format_string | | (format_string,Args &&) | | format | 1 | func:0 && | | (forward_list &&) | forward_list | forward_list | 0 | forward_list && | | (forward_list &&,const Allocator &) | forward_list | forward_list | 0 | forward_list && | | (forward_list &&,const Allocator &) | forward_list | forward_list | 1 | const class:1 & | +| (ftp_parselist_data *) | | Curl_ftp_parselist_geterror | 0 | ftp_parselist_data * | +| (ftp_parselist_data **) | | Curl_ftp_parselist_data_free | 0 | ftp_parselist_data ** | | (gf,const gf,const gf) | | gf_add | 0 | gf | | (gf,const gf,const gf) | | gf_add | 1 | const gf | | (gf,const gf,const gf) | | gf_add | 2 | const gf | @@ -25844,6 +30337,78 @@ getSignatureParameterName | (gf,const uint8_t[56],int,uint8_t) | | gf_deserialize | 1 | const uint8_t[56] | | (gf,const uint8_t[56],int,uint8_t) | | gf_deserialize | 2 | int | | (gf,const uint8_t[56],int,uint8_t) | | gf_deserialize | 3 | uint8_t | +| (gzFile) | | gzclearerr | 0 | gzFile | +| (gzFile) | | gzclose | 0 | gzFile | +| (gzFile) | | gzclose_w | 0 | gzFile | +| (gzFile) | | gzdirect | 0 | gzFile | +| (gzFile) | | gzeof | 0 | gzFile | +| (gzFile) | | gzgetc | 0 | gzFile | +| (gzFile) | | gzgetc_ | 0 | gzFile | +| (gzFile) | | gzoffset | 0 | gzFile | +| (gzFile) | | gzoffset64 | 0 | gzFile | +| (gzFile) | | gzrewind | 0 | gzFile | +| (gzFile) | | gztell | 0 | gzFile | +| (gzFile) | | gztell64 | 0 | gzFile | +| (gzFile,char *,int) | | gzgets | 0 | gzFile | +| (gzFile,char *,int) | | gzgets | 1 | char * | +| (gzFile,char *,int) | | gzgets | 2 | int | +| (gzFile,const char *) | | gzputs | 0 | gzFile | +| (gzFile,const char *) | | gzputs | 1 | const char * | +| (gzFile,const char *,va_list) | | gzvprintf | 0 | gzFile | +| (gzFile,const char *,va_list) | | gzvprintf | 1 | const char * | +| (gzFile,const char *,va_list) | | gzvprintf | 2 | va_list | +| (gzFile,int *) | | gzerror | 0 | gzFile | +| (gzFile,int *) | | gzerror | 1 | int * | +| (gzFile,int) | | gzflush | 0 | gzFile | +| (gzFile,int) | | gzflush | 1 | int | +| (gzFile,int) | | gzputc | 0 | gzFile | +| (gzFile,int) | | gzputc | 1 | int | +| (gzFile,int,int) | | gzsetparams | 0 | gzFile | +| (gzFile,int,int) | | gzsetparams | 1 | int | +| (gzFile,int,int) | | gzsetparams | 2 | int | +| (gzFile,off64_t,int) | | gzseek64 | 0 | gzFile | +| (gzFile,off64_t,int) | | gzseek64 | 1 | off64_t | +| (gzFile,off64_t,int) | | gzseek64 | 2 | int | +| (gzFile,off_t,int) | | gzseek | 0 | gzFile | +| (gzFile,off_t,int) | | gzseek | 1 | off_t | +| (gzFile,off_t,int) | | gzseek | 2 | int | +| (gzFile,unsigned int) | | gzbuffer | 0 | gzFile | +| (gzFile,unsigned int) | | gzbuffer | 1 | unsigned int | +| (gzFile,voidp,unsigned int) | | gzread | 0 | gzFile | +| (gzFile,voidp,unsigned int) | | gzread | 1 | voidp | +| (gzFile,voidp,unsigned int) | | gzread | 2 | unsigned int | +| (gzFile,voidpc,unsigned int) | | gzwrite | 0 | gzFile | +| (gzFile,voidpc,unsigned int) | | gzwrite | 1 | voidpc | +| (gzFile,voidpc,unsigned int) | | gzwrite | 2 | unsigned int | +| (gz_statep,int,const char *) | | gz_error | 0 | gz_statep | +| (gz_statep,int,const char *) | | gz_error | 1 | int | +| (gz_statep,int,const char *) | | gz_error | 2 | const char * | +| (h1_req_parser *,const char *,size_t,const char *,int,CURLcode *) | | Curl_h1_req_parse_read | 0 | h1_req_parser * | +| (h1_req_parser *,const char *,size_t,const char *,int,CURLcode *) | | Curl_h1_req_parse_read | 1 | const char * | +| (h1_req_parser *,const char *,size_t,const char *,int,CURLcode *) | | Curl_h1_req_parse_read | 2 | size_t | +| (h1_req_parser *,const char *,size_t,const char *,int,CURLcode *) | | Curl_h1_req_parse_read | 3 | const char * | +| (h1_req_parser *,const char *,size_t,const char *,int,CURLcode *) | | Curl_h1_req_parse_read | 4 | int | +| (h1_req_parser *,const char *,size_t,const char *,int,CURLcode *) | | Curl_h1_req_parse_read | 5 | CURLcode * | +| (h1_req_parser *,size_t) | | Curl_h1_req_parse_init | 0 | h1_req_parser * | +| (h1_req_parser *,size_t) | | Curl_h1_req_parse_init | 1 | size_t | +| (hsts **) | | Curl_hsts_cleanup | 0 | hsts ** | +| (http_resp **,int,const char *) | | Curl_http_resp_make | 0 | http_resp ** | +| (http_resp **,int,const char *) | | Curl_http_resp_make | 1 | int | +| (http_resp **,int,const char *) | | Curl_http_resp_make | 2 | const char * | +| (httpreq **,const char *,size_t,CURLU *,const char *) | | Curl_http_req_make2 | 0 | httpreq ** | +| (httpreq **,const char *,size_t,CURLU *,const char *) | | Curl_http_req_make2 | 1 | const char * | +| (httpreq **,const char *,size_t,CURLU *,const char *) | | Curl_http_req_make2 | 2 | size_t | +| (httpreq **,const char *,size_t,CURLU *,const char *) | | Curl_http_req_make2 | 3 | CURLU * | +| (httpreq **,const char *,size_t,CURLU *,const char *) | | Curl_http_req_make2 | 4 | const char * | +| (httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t) | | Curl_http_req_make | 0 | httpreq ** | +| (httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t) | | Curl_http_req_make | 1 | const char * | +| (httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t) | | Curl_http_req_make | 2 | size_t | +| (httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t) | | Curl_http_req_make | 3 | const char * | +| (httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t) | | Curl_http_req_make | 4 | size_t | +| (httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t) | | Curl_http_req_make | 5 | const char * | +| (httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t) | | Curl_http_req_make | 6 | size_t | +| (httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t) | | Curl_http_req_make | 7 | const char * | +| (httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t) | | Curl_http_req_make | 8 | size_t | | (i2d_of_void *,BIO *,const void *) | | ASN1_i2d_bio | 0 | i2d_of_void * | | (i2d_of_void *,BIO *,const void *) | | ASN1_i2d_bio | 1 | BIO * | | (i2d_of_void *,BIO *,const void *) | | ASN1_i2d_bio | 2 | const void * | @@ -25878,6 +30443,14 @@ getSignatureParameterName | (i2d_of_void *,d2i_of_void *,const void *) | | ASN1_dup | 0 | i2d_of_void * | | (i2d_of_void *,d2i_of_void *,const void *) | | ASN1_dup | 1 | d2i_of_void * | | (i2d_of_void *,d2i_of_void *,const void *) | | ASN1_dup | 2 | const void * | +| (int32_t *,int32_t *,int32_t *,int32_t *) | | nghttp2_adjust_local_window_size | 0 | int32_t * | +| (int32_t *,int32_t *,int32_t *,int32_t *) | | nghttp2_adjust_local_window_size | 1 | int32_t * | +| (int32_t *,int32_t *,int32_t *,int32_t *) | | nghttp2_adjust_local_window_size | 2 | int32_t * | +| (int32_t *,int32_t *,int32_t *,int32_t *) | | nghttp2_adjust_local_window_size | 3 | int32_t * | +| (int32_t *,int32_t *,int32_t *,int32_t *) | | nghttp2_increase_local_window_size | 0 | int32_t * | +| (int32_t *,int32_t *,int32_t *,int32_t *) | | nghttp2_increase_local_window_size | 1 | int32_t * | +| (int32_t *,int32_t *,int32_t *,int32_t *) | | nghttp2_increase_local_window_size | 2 | int32_t * | +| (int32_t *,int32_t *,int32_t *,int32_t *) | | nghttp2_increase_local_window_size | 3 | int32_t * | | (int64_t *,const ASN1_ENUMERATED *) | | ASN1_ENUMERATED_get_int64 | 0 | int64_t * | | (int64_t *,const ASN1_ENUMERATED *) | | ASN1_ENUMERATED_get_int64 | 1 | const ASN1_ENUMERATED * | | (int64_t *,const ASN1_INTEGER *) | | ASN1_INTEGER_get_int64 | 0 | int64_t * | @@ -25900,6 +30473,9 @@ getSignatureParameterName | (int *,const char *,const char *,const char *,const char *,int,int,int,int,int,BIO_ADDR **) | | init_client | 8 | int | | (int *,const char *,const char *,const char *,const char *,int,int,int,int,int,BIO_ADDR **) | | init_client | 9 | int | | (int *,const char *,const char *,const char *,const char *,int,int,int,int,int,BIO_ADDR **) | | init_client | 10 | BIO_ADDR ** | +| (int *,const char *,size_t) | | Curl_http_decode_status | 0 | int * | +| (int *,const char *,size_t) | | Curl_http_decode_status | 1 | const char * | +| (int *,const char *,size_t) | | Curl_http_decode_status | 2 | size_t | | (int *,int *,const ASN1_TIME *,const ASN1_TIME *) | | ASN1_TIME_diff | 0 | int * | | (int *,int *,const ASN1_TIME *,const ASN1_TIME *) | | ASN1_TIME_diff | 1 | int * | | (int *,int *,const ASN1_TIME *,const ASN1_TIME *) | | ASN1_TIME_diff | 2 | const ASN1_TIME * | @@ -25948,6 +30524,9 @@ getSignatureParameterName | (int) | | X509_TRUST_get0 | 0 | int | | (int) | | X509_TRUST_get_by_id | 0 | int | | (int) | | X509_VERIFY_PARAM_get0 | 0 | int | +| (int) | | c_tolower | 0 | int | +| (int) | | c_toupper | 0 | int | +| (int) | | curlx_sitouz | 0 | int | | (int) | | evp_pkey_type2name | 0 | int | | (int) | | ossl_cmp_bodytype_to_string | 0 | int | | (int) | | ossl_tolower | 0 | int | @@ -25955,6 +30534,12 @@ getSignatureParameterName | (int) | | sqlite3_compileoption_get | 0 | int | | (int) | | sqlite3_errstr | 0 | int | | (int) | | tls13_alert_code | 0 | int | +| (int) | | uv__accept | 0 | int | +| (int) | | uv_err_name | 0 | int | +| (int) | | uv_get_osfhandle | 0 | int | +| (int) | | uv_strerror | 0 | int | +| (int) | | uv_translate_sys_error | 0 | int | +| (int) | | zError | 0 | int | | (int,BIO_ADDR *,int) | | BIO_accept_ex | 0 | int | | (int,BIO_ADDR *,int) | | BIO_accept_ex | 1 | BIO_ADDR * | | (int,BIO_ADDR *,int) | | BIO_accept_ex | 2 | int | @@ -26048,6 +30633,8 @@ getSignatureParameterName | (int,XCHAR) | CStringT | Insert | 1 | XCHAR | | (int,char **) | | BIO_accept | 0 | int | | (int,char **) | | BIO_accept | 1 | char ** | +| (int,char **) | | uv_setup_args | 0 | int | +| (int,char **) | | uv_setup_args | 1 | char ** | | (int,char **,char *[]) | | ca_main | 0 | int | | (int,char **,char *[]) | | ca_main | 1 | char ** | | (int,char **,char *[]) | | ca_main | 2 | char *[] | @@ -26204,6 +30791,19 @@ getSignatureParameterName | (int,char **,const OPTIONS *) | | opt_init | 0 | int | | (int,char **,const OPTIONS *) | | opt_init | 1 | char ** | | (int,char **,const OPTIONS *) | | opt_init | 2 | const OPTIONS * | +| (int,char **,gengetopt_args_info *) | | cmdline_parser | 0 | int | +| (int,char **,gengetopt_args_info *) | | cmdline_parser | 1 | char ** | +| (int,char **,gengetopt_args_info *) | | cmdline_parser | 2 | gengetopt_args_info * | +| (int,char **,gengetopt_args_info *,cmdline_parser_params *) | | cmdline_parser_ext | 0 | int | +| (int,char **,gengetopt_args_info *,cmdline_parser_params *) | | cmdline_parser_ext | 1 | char ** | +| (int,char **,gengetopt_args_info *,cmdline_parser_params *) | | cmdline_parser_ext | 2 | gengetopt_args_info * | +| (int,char **,gengetopt_args_info *,cmdline_parser_params *) | | cmdline_parser_ext | 3 | cmdline_parser_params * | +| (int,char **,gengetopt_args_info *,int,int,int) | | cmdline_parser2 | 0 | int | +| (int,char **,gengetopt_args_info *,int,int,int) | | cmdline_parser2 | 1 | char ** | +| (int,char **,gengetopt_args_info *,int,int,int) | | cmdline_parser2 | 2 | gengetopt_args_info * | +| (int,char **,gengetopt_args_info *,int,int,int) | | cmdline_parser2 | 3 | int | +| (int,char **,gengetopt_args_info *,int,int,int) | | cmdline_parser2 | 4 | int | +| (int,char **,gengetopt_args_info *,int,int,int) | | cmdline_parser2 | 5 | int | | (int,char *,const char *,...) | | sqlite3_snprintf | 0 | int | | (int,char *,const char *,...) | | sqlite3_snprintf | 1 | char * | | (int,char *,const char *,...) | | sqlite3_snprintf | 2 | const char * | @@ -26212,6 +30812,15 @@ getSignatureParameterName | (int,char *,const char *,va_list) | | sqlite3_vsnprintf | 1 | char * | | (int,char *,const char *,va_list) | | sqlite3_vsnprintf | 2 | const char * | | (int,char *,const char *,va_list) | | sqlite3_vsnprintf | 3 | va_list | +| (int,char *,size_t) | | Curl_strerror | 0 | int | +| (int,char *,size_t) | | Curl_strerror | 1 | char * | +| (int,char *,size_t) | | Curl_strerror | 2 | size_t | +| (int,char *,size_t) | | uv_err_name_r | 0 | int | +| (int,char *,size_t) | | uv_err_name_r | 1 | char * | +| (int,char *,size_t) | | uv_err_name_r | 2 | size_t | +| (int,char *,size_t) | | uv_strerror_r | 0 | int | +| (int,char *,size_t) | | uv_strerror_r | 1 | char * | +| (int,char *,size_t) | | uv_strerror_r | 2 | size_t | | (int,const EVP_CIPHER *,const char *,int,unsigned char *,int,int,PKCS8_PRIV_KEY_INFO *) | | PKCS8_encrypt | 0 | int | | (int,const EVP_CIPHER *,const char *,int,unsigned char *,int,int,PKCS8_PRIV_KEY_INFO *) | | PKCS8_encrypt | 1 | const EVP_CIPHER * | | (int,const EVP_CIPHER *,const char *,int,unsigned char *,int,int,PKCS8_PRIV_KEY_INFO *) | | PKCS8_encrypt | 2 | const char * | @@ -26237,6 +30846,8 @@ getSignatureParameterName | (int,const OSSL_STORE_INFO *) | | OSSL_STORE_INFO_get0_data | 1 | const OSSL_STORE_INFO * | | (int,const char *) | | BIO_meth_new | 0 | int | | (int,const char *) | | BIO_meth_new | 1 | const char * | +| (int,const char *) | | gzdopen | 0 | int | +| (int,const char *) | | gzdopen | 1 | const char * | | (int,const char **,int *) | | sqlite3_keyword_name | 0 | int | | (int,const char **,int *) | | sqlite3_keyword_name | 1 | const char ** | | (int,const char **,int *) | | sqlite3_keyword_name | 2 | int * | @@ -26276,6 +30887,13 @@ getSignatureParameterName | (int,const regex_t *,char *,size_t) | | jim_regerror | 1 | const regex_t * | | (int,const regex_t *,char *,size_t) | | jim_regerror | 2 | char * | | (int,const regex_t *,char *,size_t) | | jim_regerror | 3 | size_t | +| (int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__) | | BrotliStoreUncompressedMetaBlock | 0 | int | +| (int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__) | | BrotliStoreUncompressedMetaBlock | 1 | const uint8_t *__restrict__ | +| (int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__) | | BrotliStoreUncompressedMetaBlock | 2 | size_t | +| (int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__) | | BrotliStoreUncompressedMetaBlock | 3 | size_t | +| (int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__) | | BrotliStoreUncompressedMetaBlock | 4 | size_t | +| (int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__) | | BrotliStoreUncompressedMetaBlock | 5 | size_t *__restrict__ | +| (int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__) | | BrotliStoreUncompressedMetaBlock | 6 | uint8_t *__restrict__ | | (int,const unsigned char *,int,const unsigned char *,int,DSA *) | | DSA_verify | 0 | int | | (int,const unsigned char *,int,const unsigned char *,int,DSA *) | | DSA_verify | 1 | const unsigned char * | | (int,const unsigned char *,int,const unsigned char *,int,DSA *) | | DSA_verify | 2 | int | @@ -26320,6 +30938,16 @@ getSignatureParameterName | (int,const unsigned char *,unsigned int,unsigned char *,size_t *,const unsigned char *,size_t,RSA *) | | ossl_rsa_verify | 5 | const unsigned char * | | (int,const unsigned char *,unsigned int,unsigned char *,size_t *,const unsigned char *,size_t,RSA *) | | ossl_rsa_verify | 6 | size_t | | (int,const unsigned char *,unsigned int,unsigned char *,size_t *,const unsigned char *,size_t,RSA *) | | ossl_rsa_verify | 7 | RSA * | +| (int,const void *,char *,size_t) | | uv_inet_ntop | 0 | int | +| (int,const void *,char *,size_t) | | uv_inet_ntop | 1 | const void * | +| (int,const void *,char *,size_t) | | uv_inet_ntop | 2 | char * | +| (int,const void *,char *,size_t) | | uv_inet_ntop | 3 | size_t | +| (int,const void *,const char *,int) | | Curl_ip2addr | 0 | int | +| (int,const void *,const char *,int) | | Curl_ip2addr | 1 | const void * | +| (int,const void *,const char *,int) | | Curl_ip2addr | 2 | const char * | +| (int,const void *,const char *,int) | | Curl_ip2addr | 3 | int | +| (int,gzFile) | | gzungetc | 0 | int | +| (int,gzFile) | | gzungetc | 1 | gzFile | | (int,int *,int *,int) | | sqlite3_status | 0 | int | | (int,int *,int *,int) | | sqlite3_status | 1 | int * | | (int,int *,int *,int) | | sqlite3_status | 2 | int * | @@ -26332,6 +30960,13 @@ getSignatureParameterName | (int,int) | | EVP_PKEY_meth_new | 1 | int | | (int,int) | | acttab_alloc | 0 | int | | (int,int) | | acttab_alloc | 1 | int | +| (int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[]) | | BrotliEncoderCompress | 0 | int | +| (int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[]) | | BrotliEncoderCompress | 1 | int | +| (int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[]) | | BrotliEncoderCompress | 2 | BrotliEncoderMode | +| (int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[]) | | BrotliEncoderCompress | 3 | size_t | +| (int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[]) | | BrotliEncoderCompress | 4 | const uint8_t[] | +| (int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[]) | | BrotliEncoderCompress | 5 | size_t * | +| (int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[]) | | BrotliEncoderCompress | 6 | uint8_t[] | | (int,int,TLS_GROUP_INFO *,size_t,long,stack_st_OPENSSL_CSTRING *) | | tls1_get0_implemented_groups | 0 | int | | (int,int,TLS_GROUP_INFO *,size_t,long,stack_st_OPENSSL_CSTRING *) | | tls1_get0_implemented_groups | 1 | int | | (int,int,TLS_GROUP_INFO *,size_t,long,stack_st_OPENSSL_CSTRING *) | | tls1_get0_implemented_groups | 2 | TLS_GROUP_INFO * | @@ -26374,6 +31009,9 @@ getSignatureParameterName | (int,int,int,const void *,size_t,SSL *,void *) | | SSL_trace | 4 | size_t | | (int,int,int,const void *,size_t,SSL *,void *) | | SSL_trace | 5 | SSL * | | (int,int,int,const void *,size_t,SSL *,void *) | | SSL_trace | 6 | void * | +| (int,int,size_t) | | BrotliEncoderEstimatePeakMemoryUsage | 0 | int | +| (int,int,size_t) | | BrotliEncoderEstimatePeakMemoryUsage | 1 | int | +| (int,int,size_t) | | BrotliEncoderEstimatePeakMemoryUsage | 2 | size_t | | (int,int,size_t,size_t) | | ossl_rand_pool_new | 0 | int | | (int,int,size_t,size_t) | | ossl_rand_pool_new | 1 | int | | (int,int,size_t,size_t) | | ossl_rand_pool_new | 2 | size_t | @@ -26399,6 +31037,8 @@ getSignatureParameterName | (int,sqlite3_int64 *,sqlite3_int64 *,int) | | sqlite3_status64 | 1 | sqlite3_int64 * | | (int,sqlite3_int64 *,sqlite3_int64 *,int) | | sqlite3_status64 | 2 | sqlite3_int64 * | | (int,sqlite3_int64 *,sqlite3_int64 *,int) | | sqlite3_status64 | 3 | int | +| (int,stat *) | | stat_time_normalize | 0 | int | +| (int,stat *) | | stat_time_normalize | 1 | stat * | | (int,unsigned char *,int,const char *,const char *) | | ASN1_OBJECT_create | 0 | int | | (int,unsigned char *,int,const char *,const char *) | | ASN1_OBJECT_create | 1 | unsigned char * | | (int,unsigned char *,int,const char *,const char *) | | ASN1_OBJECT_create | 2 | int | @@ -26449,12 +31089,626 @@ getSignatureParameterName | (list &&) | list | list | 0 | list && | | (list &&,const Allocator &) | list | list | 0 | list && | | (list &&,const Allocator &) | list | list | 1 | const class:1 & | +| (list_head *) | | _libssh2_list_first | 0 | list_head * | +| (list_head *) | | _libssh2_list_init | 0 | list_head * | +| (list_head *,list_node *) | | _libssh2_list_add | 0 | list_head * | +| (list_head *,list_node *) | | _libssh2_list_add | 1 | list_node * | +| (list_node *) | | _libssh2_list_next | 0 | list_node * | +| (list_node *) | | _libssh2_list_prev | 0 | list_node * | +| (long *,const char *) | | secs2ms | 0 | long * | +| (long *,const char *) | | secs2ms | 1 | const char * | +| (long *,const char *) | | str2num | 0 | long * | +| (long *,const char *) | | str2num | 1 | const char * | +| (long *,const char *) | | str2unum | 0 | long * | +| (long *,const char *) | | str2unum | 1 | const char * | +| (long *,const char *,long) | | oct2nummax | 0 | long * | +| (long *,const char *,long) | | oct2nummax | 1 | const char * | +| (long *,const char *,long) | | oct2nummax | 2 | long | +| (long *,const char *,long) | | str2unummax | 0 | long * | +| (long *,const char *,long) | | str2unummax | 1 | const char * | +| (long *,const char *,long) | | str2unummax | 2 | long | +| (long long *) | | uv__get_constrained_cpu | 0 | long long * | +| (long) | | curlx_sltosi | 0 | long | +| (long) | | curlx_sltoui | 0 | long | +| (long) | | curlx_sltous | 0 | long | +| (nghttp2_buf *,size_t,nghttp2_mem *) | | nghttp2_buf_init2 | 0 | nghttp2_buf * | +| (nghttp2_buf *,size_t,nghttp2_mem *) | | nghttp2_buf_init2 | 1 | size_t | +| (nghttp2_buf *,size_t,nghttp2_mem *) | | nghttp2_buf_init2 | 2 | nghttp2_mem * | +| (nghttp2_buf *,size_t,nghttp2_mem *) | | nghttp2_buf_reserve | 0 | nghttp2_buf * | +| (nghttp2_buf *,size_t,nghttp2_mem *) | | nghttp2_buf_reserve | 1 | size_t | +| (nghttp2_buf *,size_t,nghttp2_mem *) | | nghttp2_buf_reserve | 2 | nghttp2_mem * | +| (nghttp2_buf *,uint8_t *,size_t) | | nghttp2_buf_wrap_init | 0 | nghttp2_buf * | +| (nghttp2_buf *,uint8_t *,size_t) | | nghttp2_buf_wrap_init | 1 | uint8_t * | +| (nghttp2_buf *,uint8_t *,size_t) | | nghttp2_buf_wrap_init | 2 | size_t | +| (nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *) | | nghttp2_bufs_wrap_init2 | 0 | nghttp2_bufs * | +| (nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *) | | nghttp2_bufs_wrap_init2 | 1 | const nghttp2_vec * | +| (nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *) | | nghttp2_bufs_wrap_init2 | 2 | size_t | +| (nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *) | | nghttp2_bufs_wrap_init2 | 3 | nghttp2_mem * | +| (nghttp2_bufs *,nghttp2_frame_hd *,size_t,int) | | nghttp2_frame_add_pad | 0 | nghttp2_bufs * | +| (nghttp2_bufs *,nghttp2_frame_hd *,size_t,int) | | nghttp2_frame_add_pad | 1 | nghttp2_frame_hd * | +| (nghttp2_bufs *,nghttp2_frame_hd *,size_t,int) | | nghttp2_frame_add_pad | 2 | size_t | +| (nghttp2_bufs *,nghttp2_frame_hd *,size_t,int) | | nghttp2_frame_add_pad | 3 | int | +| (nghttp2_bufs *,nghttp2_headers *,nghttp2_hd_deflater *) | | nghttp2_frame_pack_headers | 0 | nghttp2_bufs * | +| (nghttp2_bufs *,nghttp2_headers *,nghttp2_hd_deflater *) | | nghttp2_frame_pack_headers | 1 | nghttp2_headers * | +| (nghttp2_bufs *,nghttp2_headers *,nghttp2_hd_deflater *) | | nghttp2_frame_pack_headers | 2 | nghttp2_hd_deflater * | +| (nghttp2_bufs *,nghttp2_push_promise *,nghttp2_hd_deflater *) | | nghttp2_frame_pack_push_promise | 0 | nghttp2_bufs * | +| (nghttp2_bufs *,nghttp2_push_promise *,nghttp2_hd_deflater *) | | nghttp2_frame_pack_push_promise | 1 | nghttp2_push_promise * | +| (nghttp2_bufs *,nghttp2_push_promise *,nghttp2_hd_deflater *) | | nghttp2_frame_pack_push_promise | 2 | nghttp2_hd_deflater * | +| (nghttp2_bufs *,size_t) | | nghttp2_bufs_realloc | 0 | nghttp2_bufs * | +| (nghttp2_bufs *,size_t) | | nghttp2_bufs_realloc | 1 | size_t | +| (nghttp2_bufs *,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init | 0 | nghttp2_bufs * | +| (nghttp2_bufs *,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init | 1 | size_t | +| (nghttp2_bufs *,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init | 2 | size_t | +| (nghttp2_bufs *,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init | 3 | nghttp2_mem * | +| (nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init2 | 0 | nghttp2_bufs * | +| (nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init2 | 1 | size_t | +| (nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init2 | 2 | size_t | +| (nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init2 | 3 | size_t | +| (nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init2 | 4 | nghttp2_mem * | +| (nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init3 | 0 | nghttp2_bufs * | +| (nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init3 | 1 | size_t | +| (nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init3 | 2 | size_t | +| (nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init3 | 3 | size_t | +| (nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init3 | 4 | size_t | +| (nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init3 | 5 | nghttp2_mem * | +| (nghttp2_bufs *,uint8_t *,size_t,nghttp2_mem *) | | nghttp2_bufs_wrap_init | 0 | nghttp2_bufs * | +| (nghttp2_bufs *,uint8_t *,size_t,nghttp2_mem *) | | nghttp2_bufs_wrap_init | 1 | uint8_t * | +| (nghttp2_bufs *,uint8_t *,size_t,nghttp2_mem *) | | nghttp2_bufs_wrap_init | 2 | size_t | +| (nghttp2_bufs *,uint8_t *,size_t,nghttp2_mem *) | | nghttp2_bufs_wrap_init | 3 | nghttp2_mem * | +| (nghttp2_data *,uint8_t,int32_t) | | nghttp2_frame_data_init | 0 | nghttp2_data * | +| (nghttp2_data *,uint8_t,int32_t) | | nghttp2_frame_data_init | 1 | uint8_t | +| (nghttp2_data *,uint8_t,int32_t) | | nghttp2_frame_data_init | 2 | int32_t | +| (nghttp2_data_provider_wrap *,const nghttp2_data_provider2 *) | | nghttp2_data_provider_wrap_v2 | 0 | nghttp2_data_provider_wrap * | +| (nghttp2_data_provider_wrap *,const nghttp2_data_provider2 *) | | nghttp2_data_provider_wrap_v2 | 1 | const nghttp2_data_provider2 * | +| (nghttp2_data_provider_wrap *,const nghttp2_data_provider *) | | nghttp2_data_provider_wrap_v1 | 0 | nghttp2_data_provider_wrap * | +| (nghttp2_data_provider_wrap *,const nghttp2_data_provider *) | | nghttp2_data_provider_wrap_v1 | 1 | const nghttp2_data_provider * | +| (nghttp2_extension *,int32_t,uint8_t *,size_t) | | nghttp2_frame_priority_update_init | 0 | nghttp2_extension * | +| (nghttp2_extension *,int32_t,uint8_t *,size_t) | | nghttp2_frame_priority_update_init | 1 | int32_t | +| (nghttp2_extension *,int32_t,uint8_t *,size_t) | | nghttp2_frame_priority_update_init | 2 | uint8_t * | +| (nghttp2_extension *,int32_t,uint8_t *,size_t) | | nghttp2_frame_priority_update_init | 3 | size_t | +| (nghttp2_extension *,int32_t,uint8_t *,size_t,uint8_t *,size_t) | | nghttp2_frame_altsvc_init | 0 | nghttp2_extension * | +| (nghttp2_extension *,int32_t,uint8_t *,size_t,uint8_t *,size_t) | | nghttp2_frame_altsvc_init | 1 | int32_t | +| (nghttp2_extension *,int32_t,uint8_t *,size_t,uint8_t *,size_t) | | nghttp2_frame_altsvc_init | 2 | uint8_t * | +| (nghttp2_extension *,int32_t,uint8_t *,size_t,uint8_t *,size_t) | | nghttp2_frame_altsvc_init | 3 | size_t | +| (nghttp2_extension *,int32_t,uint8_t *,size_t,uint8_t *,size_t) | | nghttp2_frame_altsvc_init | 4 | uint8_t * | +| (nghttp2_extension *,int32_t,uint8_t *,size_t,uint8_t *,size_t) | | nghttp2_frame_altsvc_init | 5 | size_t | +| (nghttp2_extension *,nghttp2_origin_entry *,size_t) | | nghttp2_frame_origin_init | 0 | nghttp2_extension * | +| (nghttp2_extension *,nghttp2_origin_entry *,size_t) | | nghttp2_frame_origin_init | 1 | nghttp2_origin_entry * | +| (nghttp2_extension *,nghttp2_origin_entry *,size_t) | | nghttp2_frame_origin_init | 2 | size_t | +| (nghttp2_extension *,uint8_t,uint8_t,int32_t,void *) | | nghttp2_frame_extension_init | 0 | nghttp2_extension * | +| (nghttp2_extension *,uint8_t,uint8_t,int32_t,void *) | | nghttp2_frame_extension_init | 1 | uint8_t | +| (nghttp2_extension *,uint8_t,uint8_t,int32_t,void *) | | nghttp2_frame_extension_init | 2 | uint8_t | +| (nghttp2_extension *,uint8_t,uint8_t,int32_t,void *) | | nghttp2_frame_extension_init | 3 | int32_t | +| (nghttp2_extension *,uint8_t,uint8_t,int32_t,void *) | | nghttp2_frame_extension_init | 4 | void * | +| (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_extpri_parse_priority | 0 | nghttp2_extpri * | +| (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_extpri_parse_priority | 1 | const uint8_t * | +| (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_extpri_parse_priority | 2 | size_t | +| (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_http_parse_priority | 0 | nghttp2_extpri * | +| (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_http_parse_priority | 1 | const uint8_t * | +| (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_http_parse_priority | 2 | size_t | +| (nghttp2_extpri *,uint8_t) | | nghttp2_extpri_from_uint8 | 0 | nghttp2_extpri * | +| (nghttp2_extpri *,uint8_t) | | nghttp2_extpri_from_uint8 | 1 | uint8_t | +| (nghttp2_frame *,size_t) | | nghttp2_frame_trail_padlen | 0 | nghttp2_frame * | +| (nghttp2_frame *,size_t) | | nghttp2_frame_trail_padlen | 1 | size_t | +| (nghttp2_frame_hd *,const uint8_t *) | | nghttp2_frame_unpack_frame_hd | 0 | nghttp2_frame_hd * | +| (nghttp2_frame_hd *,const uint8_t *) | | nghttp2_frame_unpack_frame_hd | 1 | const uint8_t * | +| (nghttp2_frame_hd *,size_t,uint8_t,uint8_t,int32_t) | | nghttp2_frame_hd_init | 0 | nghttp2_frame_hd * | +| (nghttp2_frame_hd *,size_t,uint8_t,uint8_t,int32_t) | | nghttp2_frame_hd_init | 1 | size_t | +| (nghttp2_frame_hd *,size_t,uint8_t,uint8_t,int32_t) | | nghttp2_frame_hd_init | 2 | uint8_t | +| (nghttp2_frame_hd *,size_t,uint8_t,uint8_t,int32_t) | | nghttp2_frame_hd_init | 3 | uint8_t | +| (nghttp2_frame_hd *,size_t,uint8_t,uint8_t,int32_t) | | nghttp2_frame_hd_init | 4 | int32_t | +| (nghttp2_goaway *,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_frame_unpack_goaway_payload2 | 0 | nghttp2_goaway * | +| (nghttp2_goaway *,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_frame_unpack_goaway_payload2 | 1 | const uint8_t * | +| (nghttp2_goaway *,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_frame_unpack_goaway_payload2 | 2 | size_t | +| (nghttp2_goaway *,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_frame_unpack_goaway_payload2 | 3 | nghttp2_mem * | +| (nghttp2_goaway *,const uint8_t *,uint8_t *,size_t) | | nghttp2_frame_unpack_goaway_payload | 0 | nghttp2_goaway * | +| (nghttp2_goaway *,const uint8_t *,uint8_t *,size_t) | | nghttp2_frame_unpack_goaway_payload | 1 | const uint8_t * | +| (nghttp2_goaway *,const uint8_t *,uint8_t *,size_t) | | nghttp2_frame_unpack_goaway_payload | 2 | uint8_t * | +| (nghttp2_goaway *,const uint8_t *,uint8_t *,size_t) | | nghttp2_frame_unpack_goaway_payload | 3 | size_t | +| (nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t) | | nghttp2_frame_goaway_init | 0 | nghttp2_goaway * | +| (nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t) | | nghttp2_frame_goaway_init | 1 | int32_t | +| (nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t) | | nghttp2_frame_goaway_init | 2 | uint32_t | +| (nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t) | | nghttp2_frame_goaway_init | 3 | uint8_t * | +| (nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t) | | nghttp2_frame_goaway_init | 4 | size_t | +| (nghttp2_hd_context *,size_t) | | nghttp2_hd_table_get | 0 | nghttp2_hd_context * | +| (nghttp2_hd_context *,size_t) | | nghttp2_hd_table_get | 1 | size_t | +| (nghttp2_hd_deflater *) | | nghttp2_hd_deflate_get_dynamic_table_size | 0 | nghttp2_hd_deflater * | +| (nghttp2_hd_deflater *) | | nghttp2_hd_deflate_get_max_dynamic_table_size | 0 | nghttp2_hd_deflater * | +| (nghttp2_hd_deflater **,size_t) | | nghttp2_hd_deflate_new | 0 | nghttp2_hd_deflater ** | +| (nghttp2_hd_deflater **,size_t) | | nghttp2_hd_deflate_new | 1 | size_t | +| (nghttp2_hd_deflater **,size_t,nghttp2_mem *) | | nghttp2_hd_deflate_new2 | 0 | nghttp2_hd_deflater ** | +| (nghttp2_hd_deflater **,size_t,nghttp2_mem *) | | nghttp2_hd_deflate_new2 | 1 | size_t | +| (nghttp2_hd_deflater **,size_t,nghttp2_mem *) | | nghttp2_hd_deflate_new2 | 2 | nghttp2_mem * | +| (nghttp2_hd_deflater *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_bound | 0 | nghttp2_hd_deflater * | +| (nghttp2_hd_deflater *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_bound | 1 | const nghttp2_nv * | +| (nghttp2_hd_deflater *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_bound | 2 | size_t | +| (nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_vec | 0 | nghttp2_hd_deflater * | +| (nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_vec | 1 | const nghttp2_vec * | +| (nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_vec | 2 | size_t | +| (nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_vec | 3 | const nghttp2_nv * | +| (nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_vec | 4 | size_t | +| (nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_vec2 | 0 | nghttp2_hd_deflater * | +| (nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_vec2 | 1 | const nghttp2_vec * | +| (nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_vec2 | 2 | size_t | +| (nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_vec2 | 3 | const nghttp2_nv * | +| (nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_vec2 | 4 | size_t | +| (nghttp2_hd_deflater *,nghttp2_bufs *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_bufs | 0 | nghttp2_hd_deflater * | +| (nghttp2_hd_deflater *,nghttp2_bufs *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_bufs | 1 | nghttp2_bufs * | +| (nghttp2_hd_deflater *,nghttp2_bufs *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_bufs | 2 | const nghttp2_nv * | +| (nghttp2_hd_deflater *,nghttp2_bufs *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_bufs | 3 | size_t | +| (nghttp2_hd_deflater *,nghttp2_mem *) | | nghttp2_hd_deflate_init | 0 | nghttp2_hd_deflater * | +| (nghttp2_hd_deflater *,nghttp2_mem *) | | nghttp2_hd_deflate_init | 1 | nghttp2_mem * | +| (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_change_table_size | 0 | nghttp2_hd_deflater * | +| (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_change_table_size | 1 | size_t | +| (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_get_table_entry | 0 | nghttp2_hd_deflater * | +| (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_get_table_entry | 1 | size_t | +| (nghttp2_hd_deflater *,size_t,nghttp2_mem *) | | nghttp2_hd_deflate_init2 | 0 | nghttp2_hd_deflater * | +| (nghttp2_hd_deflater *,size_t,nghttp2_mem *) | | nghttp2_hd_deflate_init2 | 1 | size_t | +| (nghttp2_hd_deflater *,size_t,nghttp2_mem *) | | nghttp2_hd_deflate_init2 | 2 | nghttp2_mem * | +| (nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd | 0 | nghttp2_hd_deflater * | +| (nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd | 1 | uint8_t * | +| (nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd | 2 | size_t | +| (nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd | 3 | const nghttp2_nv * | +| (nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd | 4 | size_t | +| (nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd2 | 0 | nghttp2_hd_deflater * | +| (nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd2 | 1 | uint8_t * | +| (nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd2 | 2 | size_t | +| (nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd2 | 3 | const nghttp2_nv * | +| (nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd2 | 4 | size_t | +| (nghttp2_hd_entry *,nghttp2_hd_nv *) | | nghttp2_hd_entry_init | 0 | nghttp2_hd_entry * | +| (nghttp2_hd_entry *,nghttp2_hd_nv *) | | nghttp2_hd_entry_init | 1 | nghttp2_hd_nv * | +| (nghttp2_hd_huff_decode_context *,nghttp2_buf *,const uint8_t *,size_t,int) | | nghttp2_hd_huff_decode | 0 | nghttp2_hd_huff_decode_context * | +| (nghttp2_hd_huff_decode_context *,nghttp2_buf *,const uint8_t *,size_t,int) | | nghttp2_hd_huff_decode | 1 | nghttp2_buf * | +| (nghttp2_hd_huff_decode_context *,nghttp2_buf *,const uint8_t *,size_t,int) | | nghttp2_hd_huff_decode | 2 | const uint8_t * | +| (nghttp2_hd_huff_decode_context *,nghttp2_buf *,const uint8_t *,size_t,int) | | nghttp2_hd_huff_decode | 3 | size_t | +| (nghttp2_hd_huff_decode_context *,nghttp2_buf *,const uint8_t *,size_t,int) | | nghttp2_hd_huff_decode | 4 | int | +| (nghttp2_hd_inflater *) | | nghttp2_hd_inflate_get_dynamic_table_size | 0 | nghttp2_hd_inflater * | +| (nghttp2_hd_inflater *) | | nghttp2_hd_inflate_get_max_dynamic_table_size | 0 | nghttp2_hd_inflater * | +| (nghttp2_hd_inflater **,nghttp2_mem *) | | nghttp2_hd_inflate_new2 | 0 | nghttp2_hd_inflater ** | +| (nghttp2_hd_inflater **,nghttp2_mem *) | | nghttp2_hd_inflate_new2 | 1 | nghttp2_mem * | +| (nghttp2_hd_inflater *,nghttp2_hd_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd_nv | 0 | nghttp2_hd_inflater * | +| (nghttp2_hd_inflater *,nghttp2_hd_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd_nv | 1 | nghttp2_hd_nv * | +| (nghttp2_hd_inflater *,nghttp2_hd_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd_nv | 2 | int * | +| (nghttp2_hd_inflater *,nghttp2_hd_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd_nv | 3 | const uint8_t * | +| (nghttp2_hd_inflater *,nghttp2_hd_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd_nv | 4 | size_t | +| (nghttp2_hd_inflater *,nghttp2_hd_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd_nv | 5 | int | +| (nghttp2_hd_inflater *,nghttp2_mem *) | | nghttp2_hd_inflate_init | 0 | nghttp2_hd_inflater * | +| (nghttp2_hd_inflater *,nghttp2_mem *) | | nghttp2_hd_inflate_init | 1 | nghttp2_mem * | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd2 | 0 | nghttp2_hd_inflater * | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd2 | 1 | nghttp2_nv * | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd2 | 2 | int * | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd2 | 3 | const uint8_t * | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd2 | 4 | size_t | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd2 | 5 | int | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd3 | 0 | nghttp2_hd_inflater * | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd3 | 1 | nghttp2_nv * | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd3 | 2 | int * | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd3 | 3 | const uint8_t * | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd3 | 4 | size_t | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd3 | 5 | int | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd | 0 | nghttp2_hd_inflater * | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd | 1 | nghttp2_nv * | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd | 2 | int * | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd | 3 | uint8_t * | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd | 4 | size_t | +| (nghttp2_hd_inflater *,nghttp2_nv *,int *,uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd | 5 | int | +| (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_change_table_size | 0 | nghttp2_hd_inflater * | +| (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_change_table_size | 1 | size_t | +| (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_get_table_entry | 0 | nghttp2_hd_inflater * | +| (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_get_table_entry | 1 | size_t | +| (nghttp2_headers *,const uint8_t *) | | nghttp2_frame_unpack_headers_payload | 0 | nghttp2_headers * | +| (nghttp2_headers *,const uint8_t *) | | nghttp2_frame_unpack_headers_payload | 1 | const uint8_t * | +| (nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t) | | nghttp2_frame_headers_init | 0 | nghttp2_headers * | +| (nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t) | | nghttp2_frame_headers_init | 1 | uint8_t | +| (nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t) | | nghttp2_frame_headers_init | 2 | int32_t | +| (nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t) | | nghttp2_frame_headers_init | 3 | nghttp2_headers_category | +| (nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t) | | nghttp2_frame_headers_init | 4 | const nghttp2_priority_spec * | +| (nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t) | | nghttp2_frame_headers_init | 5 | nghttp2_nv * | +| (nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t) | | nghttp2_frame_headers_init | 6 | size_t | +| (nghttp2_map *,nghttp2_map_key_type,void *) | | nghttp2_map_insert | 0 | nghttp2_map * | +| (nghttp2_map *,nghttp2_map_key_type,void *) | | nghttp2_map_insert | 1 | nghttp2_map_key_type | +| (nghttp2_map *,nghttp2_map_key_type,void *) | | nghttp2_map_insert | 2 | void * | +| (nghttp2_map *,nghttp2_mem *) | | nghttp2_map_init | 0 | nghttp2_map * | +| (nghttp2_map *,nghttp2_mem *) | | nghttp2_map_init | 1 | nghttp2_mem * | +| (nghttp2_nv **,const nghttp2_nv *,size_t,nghttp2_mem *) | | nghttp2_nv_array_copy | 0 | nghttp2_nv ** | +| (nghttp2_nv **,const nghttp2_nv *,size_t,nghttp2_mem *) | | nghttp2_nv_array_copy | 1 | const nghttp2_nv * | +| (nghttp2_nv **,const nghttp2_nv *,size_t,nghttp2_mem *) | | nghttp2_nv_array_copy | 2 | size_t | +| (nghttp2_nv **,const nghttp2_nv *,size_t,nghttp2_mem *) | | nghttp2_nv_array_copy | 3 | nghttp2_mem * | +| (nghttp2_option **) | | nghttp2_option_new | 0 | nghttp2_option ** | +| (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 0 | nghttp2_option * | +| (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | int | +| (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 0 | nghttp2_option * | +| (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | int | +| (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 0 | nghttp2_option * | +| (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | int | +| (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 0 | nghttp2_option * | +| (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | int | +| (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 0 | nghttp2_option * | +| (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | int | +| (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 0 | nghttp2_option * | +| (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | int | +| (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 0 | nghttp2_option * | +| (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | int | +| (nghttp2_option *,size_t) | | nghttp2_option_set_max_continuations | 0 | nghttp2_option * | +| (nghttp2_option *,size_t) | | nghttp2_option_set_max_continuations | 1 | size_t | +| (nghttp2_option *,size_t) | | nghttp2_option_set_max_deflate_dynamic_table_size | 0 | nghttp2_option * | +| (nghttp2_option *,size_t) | | nghttp2_option_set_max_deflate_dynamic_table_size | 1 | size_t | +| (nghttp2_option *,size_t) | | nghttp2_option_set_max_outbound_ack | 0 | nghttp2_option * | +| (nghttp2_option *,size_t) | | nghttp2_option_set_max_outbound_ack | 1 | size_t | +| (nghttp2_option *,size_t) | | nghttp2_option_set_max_send_header_block_length | 0 | nghttp2_option * | +| (nghttp2_option *,size_t) | | nghttp2_option_set_max_send_header_block_length | 1 | size_t | +| (nghttp2_option *,size_t) | | nghttp2_option_set_max_settings | 0 | nghttp2_option * | +| (nghttp2_option *,size_t) | | nghttp2_option_set_max_settings | 1 | size_t | +| (nghttp2_option *,uint8_t) | | nghttp2_option_set_user_recv_extension_type | 0 | nghttp2_option * | +| (nghttp2_option *,uint8_t) | | nghttp2_option_set_user_recv_extension_type | 1 | uint8_t | +| (nghttp2_option *,uint32_t) | | nghttp2_option_set_max_reserved_remote_streams | 0 | nghttp2_option * | +| (nghttp2_option *,uint32_t) | | nghttp2_option_set_max_reserved_remote_streams | 1 | uint32_t | +| (nghttp2_option *,uint32_t) | | nghttp2_option_set_peer_max_concurrent_streams | 0 | nghttp2_option * | +| (nghttp2_option *,uint32_t) | | nghttp2_option_set_peer_max_concurrent_streams | 1 | uint32_t | +| (nghttp2_option *,uint64_t,uint64_t) | | nghttp2_option_set_stream_reset_rate_limit | 0 | nghttp2_option * | +| (nghttp2_option *,uint64_t,uint64_t) | | nghttp2_option_set_stream_reset_rate_limit | 1 | uint64_t | +| (nghttp2_option *,uint64_t,uint64_t) | | nghttp2_option_set_stream_reset_rate_limit | 2 | uint64_t | +| (nghttp2_outbound_queue *) | | nghttp2_outbound_queue_init | 0 | nghttp2_outbound_queue * | +| (nghttp2_outbound_queue *,nghttp2_outbound_item *) | | nghttp2_outbound_queue_push | 0 | nghttp2_outbound_queue * | +| (nghttp2_outbound_queue *,nghttp2_outbound_item *) | | nghttp2_outbound_queue_push | 1 | nghttp2_outbound_item * | +| (nghttp2_ping *,const uint8_t *) | | nghttp2_frame_unpack_ping_payload | 0 | nghttp2_ping * | +| (nghttp2_ping *,const uint8_t *) | | nghttp2_frame_unpack_ping_payload | 1 | const uint8_t * | +| (nghttp2_ping *,uint8_t,const uint8_t *) | | nghttp2_frame_ping_init | 0 | nghttp2_ping * | +| (nghttp2_ping *,uint8_t,const uint8_t *) | | nghttp2_frame_ping_init | 1 | uint8_t | +| (nghttp2_ping *,uint8_t,const uint8_t *) | | nghttp2_frame_ping_init | 2 | const uint8_t * | +| (nghttp2_pq *) | | nghttp2_pq_size | 0 | nghttp2_pq * | +| (nghttp2_pq *) | | nghttp2_pq_top | 0 | nghttp2_pq * | +| (nghttp2_pq *,nghttp2_less,nghttp2_mem *) | | nghttp2_pq_init | 0 | nghttp2_pq * | +| (nghttp2_pq *,nghttp2_less,nghttp2_mem *) | | nghttp2_pq_init | 1 | nghttp2_less | +| (nghttp2_pq *,nghttp2_less,nghttp2_mem *) | | nghttp2_pq_init | 2 | nghttp2_mem * | +| (nghttp2_pq *,nghttp2_pq_entry *) | | nghttp2_pq_push | 0 | nghttp2_pq * | +| (nghttp2_pq *,nghttp2_pq_entry *) | | nghttp2_pq_push | 1 | nghttp2_pq_entry * | +| (nghttp2_pq *,nghttp2_pq_entry *) | | nghttp2_pq_remove | 0 | nghttp2_pq * | +| (nghttp2_pq *,nghttp2_pq_entry *) | | nghttp2_pq_remove | 1 | nghttp2_pq_entry * | +| (nghttp2_priority *,const uint8_t *) | | nghttp2_frame_unpack_priority_payload | 0 | nghttp2_priority * | +| (nghttp2_priority *,const uint8_t *) | | nghttp2_frame_unpack_priority_payload | 1 | const uint8_t * | +| (nghttp2_priority *,int32_t,const nghttp2_priority_spec *) | | nghttp2_frame_priority_init | 0 | nghttp2_priority * | +| (nghttp2_priority *,int32_t,const nghttp2_priority_spec *) | | nghttp2_frame_priority_init | 1 | int32_t | +| (nghttp2_priority *,int32_t,const nghttp2_priority_spec *) | | nghttp2_frame_priority_init | 2 | const nghttp2_priority_spec * | +| (nghttp2_priority_spec *,const uint8_t *) | | nghttp2_frame_unpack_priority_spec | 0 | nghttp2_priority_spec * | +| (nghttp2_priority_spec *,const uint8_t *) | | nghttp2_frame_unpack_priority_spec | 1 | const uint8_t * | +| (nghttp2_priority_spec *,int32_t,int32_t,int) | | nghttp2_priority_spec_init | 0 | nghttp2_priority_spec * | +| (nghttp2_priority_spec *,int32_t,int32_t,int) | | nghttp2_priority_spec_init | 1 | int32_t | +| (nghttp2_priority_spec *,int32_t,int32_t,int) | | nghttp2_priority_spec_init | 2 | int32_t | +| (nghttp2_priority_spec *,int32_t,int32_t,int) | | nghttp2_priority_spec_init | 3 | int | +| (nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t) | | nghttp2_frame_push_promise_init | 0 | nghttp2_push_promise * | +| (nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t) | | nghttp2_frame_push_promise_init | 1 | uint8_t | +| (nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t) | | nghttp2_frame_push_promise_init | 2 | int32_t | +| (nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t) | | nghttp2_frame_push_promise_init | 3 | int32_t | +| (nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t) | | nghttp2_frame_push_promise_init | 4 | nghttp2_nv * | +| (nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t) | | nghttp2_frame_push_promise_init | 5 | size_t | +| (nghttp2_queue *) | | nghttp2_queue_back | 0 | nghttp2_queue * | +| (nghttp2_queue *) | | nghttp2_queue_front | 0 | nghttp2_queue * | +| (nghttp2_queue *) | | nghttp2_queue_init | 0 | nghttp2_queue * | +| (nghttp2_queue *) | | nghttp2_queue_pop | 0 | nghttp2_queue * | +| (nghttp2_queue *,void *) | | nghttp2_queue_push | 0 | nghttp2_queue * | +| (nghttp2_queue *,void *) | | nghttp2_queue_push | 1 | void * | +| (nghttp2_ratelim *,uint64_t) | | nghttp2_ratelim_drain | 0 | nghttp2_ratelim * | +| (nghttp2_ratelim *,uint64_t) | | nghttp2_ratelim_drain | 1 | uint64_t | +| (nghttp2_ratelim *,uint64_t) | | nghttp2_ratelim_update | 0 | nghttp2_ratelim * | +| (nghttp2_ratelim *,uint64_t) | | nghttp2_ratelim_update | 1 | uint64_t | +| (nghttp2_ratelim *,uint64_t,uint64_t) | | nghttp2_ratelim_init | 0 | nghttp2_ratelim * | +| (nghttp2_ratelim *,uint64_t,uint64_t) | | nghttp2_ratelim_init | 1 | uint64_t | +| (nghttp2_ratelim *,uint64_t,uint64_t) | | nghttp2_ratelim_init | 2 | uint64_t | +| (nghttp2_rcbuf *) | | nghttp2_rcbuf_get_buf | 0 | nghttp2_rcbuf * | +| (nghttp2_rcbuf **,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_rcbuf_new2 | 0 | nghttp2_rcbuf ** | +| (nghttp2_rcbuf **,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_rcbuf_new2 | 1 | const uint8_t * | +| (nghttp2_rcbuf **,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_rcbuf_new2 | 2 | size_t | +| (nghttp2_rcbuf **,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_rcbuf_new2 | 3 | nghttp2_mem * | +| (nghttp2_rcbuf **,size_t,nghttp2_mem *) | | nghttp2_rcbuf_new | 0 | nghttp2_rcbuf ** | +| (nghttp2_rcbuf **,size_t,nghttp2_mem *) | | nghttp2_rcbuf_new | 1 | size_t | +| (nghttp2_rcbuf **,size_t,nghttp2_mem *) | | nghttp2_rcbuf_new | 2 | nghttp2_mem * | +| (nghttp2_rst_stream *,int32_t,uint32_t) | | nghttp2_frame_rst_stream_init | 0 | nghttp2_rst_stream * | +| (nghttp2_rst_stream *,int32_t,uint32_t) | | nghttp2_frame_rst_stream_init | 1 | int32_t | +| (nghttp2_rst_stream *,int32_t,uint32_t) | | nghttp2_frame_rst_stream_init | 2 | uint32_t | +| (nghttp2_session *) | | nghttp2_session_check_server_session | 0 | nghttp2_session * | +| (nghttp2_session *) | | nghttp2_session_get_effective_local_window_size | 0 | nghttp2_session * | +| (nghttp2_session *) | | nghttp2_session_get_effective_recv_data_length | 0 | nghttp2_session * | +| (nghttp2_session *) | | nghttp2_session_get_last_proc_stream_id | 0 | nghttp2_session * | +| (nghttp2_session *) | | nghttp2_session_get_local_window_size | 0 | nghttp2_session * | +| (nghttp2_session *) | | nghttp2_session_get_next_ob_item | 0 | nghttp2_session * | +| (nghttp2_session *) | | nghttp2_session_get_next_stream_id | 0 | nghttp2_session * | +| (nghttp2_session *) | | nghttp2_session_get_outbound_queue_size | 0 | nghttp2_session * | +| (nghttp2_session *) | | nghttp2_session_get_remote_window_size | 0 | nghttp2_session * | +| (nghttp2_session *) | | nghttp2_session_pop_next_ob_item | 0 | nghttp2_session * | +| (nghttp2_session *) | | nghttp2_session_recv | 0 | nghttp2_session * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *) | | nghttp2_session_client_new | 0 | nghttp2_session ** | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *) | | nghttp2_session_client_new | 1 | const nghttp2_session_callbacks * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *) | | nghttp2_session_client_new | 2 | void * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *) | | nghttp2_session_server_new | 0 | nghttp2_session ** | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *) | | nghttp2_session_server_new | 1 | const nghttp2_session_callbacks * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *) | | nghttp2_session_server_new | 2 | void * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *) | | nghttp2_session_client_new2 | 0 | nghttp2_session ** | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *) | | nghttp2_session_client_new2 | 1 | const nghttp2_session_callbacks * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *) | | nghttp2_session_client_new2 | 2 | void * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *) | | nghttp2_session_client_new2 | 3 | const nghttp2_option * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *) | | nghttp2_session_server_new2 | 0 | nghttp2_session ** | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *) | | nghttp2_session_server_new2 | 1 | const nghttp2_session_callbacks * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *) | | nghttp2_session_server_new2 | 2 | void * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *) | | nghttp2_session_server_new2 | 3 | const nghttp2_option * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *) | | nghttp2_session_client_new3 | 0 | nghttp2_session ** | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *) | | nghttp2_session_client_new3 | 1 | const nghttp2_session_callbacks * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *) | | nghttp2_session_client_new3 | 2 | void * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *) | | nghttp2_session_client_new3 | 3 | const nghttp2_option * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *) | | nghttp2_session_client_new3 | 4 | nghttp2_mem * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *) | | nghttp2_session_server_new3 | 0 | nghttp2_session ** | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *) | | nghttp2_session_server_new3 | 1 | const nghttp2_session_callbacks * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *) | | nghttp2_session_server_new3 | 2 | void * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *) | | nghttp2_session_server_new3 | 3 | const nghttp2_option * | +| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *) | | nghttp2_session_server_new3 | 4 | nghttp2_mem * | +| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *,void *) | | nghttp2_submit_request2 | 0 | nghttp2_session * | +| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *,void *) | | nghttp2_submit_request2 | 1 | const nghttp2_priority_spec * | +| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *,void *) | | nghttp2_submit_request2 | 2 | const nghttp2_nv * | +| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *,void *) | | nghttp2_submit_request2 | 3 | size_t | +| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *,void *) | | nghttp2_submit_request2 | 4 | const nghttp2_data_provider2 * | +| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *,void *) | | nghttp2_submit_request2 | 5 | void * | +| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider *,void *) | | nghttp2_submit_request | 0 | nghttp2_session * | +| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider *,void *) | | nghttp2_submit_request | 1 | const nghttp2_priority_spec * | +| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider *,void *) | | nghttp2_submit_request | 2 | const nghttp2_nv * | +| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider *,void *) | | nghttp2_submit_request | 3 | size_t | +| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider *,void *) | | nghttp2_submit_request | 4 | const nghttp2_data_provider * | +| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider *,void *) | | nghttp2_submit_request | 5 | void * | +| (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv | 0 | nghttp2_session * | +| (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv | 1 | const uint8_t * | +| (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv | 2 | size_t | +| (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv2 | 0 | nghttp2_session * | +| (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv2 | 1 | const uint8_t * | +| (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv2 | 2 | size_t | +| (nghttp2_session *,const uint8_t *,size_t,int,void *) | | nghttp2_session_upgrade2 | 0 | nghttp2_session * | +| (nghttp2_session *,const uint8_t *,size_t,int,void *) | | nghttp2_session_upgrade2 | 1 | const uint8_t * | +| (nghttp2_session *,const uint8_t *,size_t,int,void *) | | nghttp2_session_upgrade2 | 2 | size_t | +| (nghttp2_session *,const uint8_t *,size_t,int,void *) | | nghttp2_session_upgrade2 | 3 | int | +| (nghttp2_session *,const uint8_t *,size_t,int,void *) | | nghttp2_session_upgrade2 | 4 | void * | +| (nghttp2_session *,const uint8_t *,size_t,void *) | | nghttp2_session_upgrade | 0 | nghttp2_session * | +| (nghttp2_session *,const uint8_t *,size_t,void *) | | nghttp2_session_upgrade | 1 | const uint8_t * | +| (nghttp2_session *,const uint8_t *,size_t,void *) | | nghttp2_session_upgrade | 2 | size_t | +| (nghttp2_session *,const uint8_t *,size_t,void *) | | nghttp2_session_upgrade | 3 | void * | +| (nghttp2_session *,int32_t) | | nghttp2_session_find_stream | 0 | nghttp2_session * | +| (nghttp2_session *,int32_t) | | nghttp2_session_find_stream | 1 | int32_t | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream | 0 | nghttp2_session * | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream | 1 | int32_t | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_effective_local_window_size | 0 | nghttp2_session * | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_effective_local_window_size | 1 | int32_t | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_effective_recv_data_length | 0 | nghttp2_session * | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_effective_recv_data_length | 1 | int32_t | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_local_close | 0 | nghttp2_session * | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_local_close | 1 | int32_t | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_local_window_size | 0 | nghttp2_session * | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_local_window_size | 1 | int32_t | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_raw | 0 | nghttp2_session * | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_raw | 1 | int32_t | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_remote_close | 0 | nghttp2_session * | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_remote_close | 1 | int32_t | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_remote_window_size | 0 | nghttp2_session * | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_remote_window_size | 1 | int32_t | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_user_data | 0 | nghttp2_session * | +| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_user_data | 1 | int32_t | +| (nghttp2_session *,int32_t) | | nghttp2_session_set_next_stream_id | 0 | nghttp2_session * | +| (nghttp2_session *,int32_t) | | nghttp2_session_set_next_stream_id | 1 | int32_t | +| (nghttp2_session *,int32_t,const nghttp2_extpri *,int) | | nghttp2_session_change_extpri_stream_priority | 0 | nghttp2_session * | +| (nghttp2_session *,int32_t,const nghttp2_extpri *,int) | | nghttp2_session_change_extpri_stream_priority | 1 | int32_t | +| (nghttp2_session *,int32_t,const nghttp2_extpri *,int) | | nghttp2_session_change_extpri_stream_priority | 2 | const nghttp2_extpri * | +| (nghttp2_session *,int32_t,const nghttp2_extpri *,int) | | nghttp2_session_change_extpri_stream_priority | 3 | int | +| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t) | | nghttp2_submit_trailer | 0 | nghttp2_session * | +| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t) | | nghttp2_submit_trailer | 1 | int32_t | +| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t) | | nghttp2_submit_trailer | 2 | const nghttp2_nv * | +| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t) | | nghttp2_submit_trailer | 3 | size_t | +| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *) | | nghttp2_submit_response2 | 0 | nghttp2_session * | +| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *) | | nghttp2_submit_response2 | 1 | int32_t | +| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *) | | nghttp2_submit_response2 | 2 | const nghttp2_nv * | +| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *) | | nghttp2_submit_response2 | 3 | size_t | +| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *) | | nghttp2_submit_response2 | 4 | const nghttp2_data_provider2 * | +| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider *) | | nghttp2_submit_response | 0 | nghttp2_session * | +| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider *) | | nghttp2_submit_response | 1 | int32_t | +| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider *) | | nghttp2_submit_response | 2 | const nghttp2_nv * | +| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider *) | | nghttp2_submit_response | 3 | size_t | +| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider *) | | nghttp2_submit_response | 4 | const nghttp2_data_provider * | +| (nghttp2_session *,int32_t,size_t) | | nghttp2_session_consume | 0 | nghttp2_session * | +| (nghttp2_session *,int32_t,size_t) | | nghttp2_session_consume | 1 | int32_t | +| (nghttp2_session *,int32_t,size_t) | | nghttp2_session_consume | 2 | size_t | +| (nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *) | | nghttp2_session_open_stream | 0 | nghttp2_session * | +| (nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *) | | nghttp2_session_open_stream | 1 | int32_t | +| (nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *) | | nghttp2_session_open_stream | 2 | uint8_t | +| (nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *) | | nghttp2_session_open_stream | 3 | nghttp2_stream_state | +| (nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *) | | nghttp2_session_open_stream | 4 | void * | +| (nghttp2_session *,nghttp2_bufs *,size_t,nghttp2_frame *,nghttp2_data_aux_data *,nghttp2_stream *) | | nghttp2_session_pack_data | 0 | nghttp2_session * | +| (nghttp2_session *,nghttp2_bufs *,size_t,nghttp2_frame *,nghttp2_data_aux_data *,nghttp2_stream *) | | nghttp2_session_pack_data | 1 | nghttp2_bufs * | +| (nghttp2_session *,nghttp2_bufs *,size_t,nghttp2_frame *,nghttp2_data_aux_data *,nghttp2_stream *) | | nghttp2_session_pack_data | 2 | size_t | +| (nghttp2_session *,nghttp2_bufs *,size_t,nghttp2_frame *,nghttp2_data_aux_data *,nghttp2_stream *) | | nghttp2_session_pack_data | 3 | nghttp2_frame * | +| (nghttp2_session *,nghttp2_bufs *,size_t,nghttp2_frame *,nghttp2_data_aux_data *,nghttp2_stream *) | | nghttp2_session_pack_data | 4 | nghttp2_data_aux_data * | +| (nghttp2_session *,nghttp2_bufs *,size_t,nghttp2_frame *,nghttp2_data_aux_data *,nghttp2_stream *) | | nghttp2_session_pack_data | 5 | nghttp2_stream * | +| (nghttp2_session *,nghttp2_extpri *,int32_t) | | nghttp2_session_get_extpri_stream_priority | 0 | nghttp2_session * | +| (nghttp2_session *,nghttp2_extpri *,int32_t) | | nghttp2_session_get_extpri_stream_priority | 1 | nghttp2_extpri * | +| (nghttp2_session *,nghttp2_extpri *,int32_t) | | nghttp2_session_get_extpri_stream_priority | 2 | int32_t | +| (nghttp2_session *,nghttp2_frame *) | | nghttp2_session_on_goaway_received | 0 | nghttp2_session * | +| (nghttp2_session *,nghttp2_frame *) | | nghttp2_session_on_goaway_received | 1 | nghttp2_frame * | +| (nghttp2_session *,nghttp2_frame *) | | nghttp2_session_on_push_promise_received | 0 | nghttp2_session * | +| (nghttp2_session *,nghttp2_frame *) | | nghttp2_session_on_push_promise_received | 1 | nghttp2_frame * | +| (nghttp2_session *,nghttp2_frame *) | | nghttp2_session_on_request_headers_received | 0 | nghttp2_session * | +| (nghttp2_session *,nghttp2_frame *) | | nghttp2_session_on_request_headers_received | 1 | nghttp2_frame * | +| (nghttp2_session *,nghttp2_frame *) | | nghttp2_session_on_window_update_received | 0 | nghttp2_session * | +| (nghttp2_session *,nghttp2_frame *) | | nghttp2_session_on_window_update_received | 1 | nghttp2_frame * | +| (nghttp2_session *,nghttp2_outbound_item *) | | nghttp2_session_add_item | 0 | nghttp2_session * | +| (nghttp2_session *,nghttp2_outbound_item *) | | nghttp2_session_add_item | 1 | nghttp2_outbound_item * | +| (nghttp2_session *,nghttp2_settings_entry *,size_t) | | nghttp2_session_update_local_settings | 0 | nghttp2_session * | +| (nghttp2_session *,nghttp2_settings_entry *,size_t) | | nghttp2_session_update_local_settings | 1 | nghttp2_settings_entry * | +| (nghttp2_session *,nghttp2_settings_entry *,size_t) | | nghttp2_session_update_local_settings | 2 | size_t | +| (nghttp2_session *,nghttp2_settings_id) | | nghttp2_session_get_local_settings | 0 | nghttp2_session * | +| (nghttp2_session *,nghttp2_settings_id) | | nghttp2_session_get_local_settings | 1 | nghttp2_settings_id | +| (nghttp2_session *,nghttp2_settings_id) | | nghttp2_session_get_remote_settings | 0 | nghttp2_session * | +| (nghttp2_session *,nghttp2_settings_id) | | nghttp2_session_get_remote_settings | 1 | nghttp2_settings_id | +| (nghttp2_session *,nghttp2_stream *) | | nghttp2_session_destroy_stream | 0 | nghttp2_session * | +| (nghttp2_session *,nghttp2_stream *) | | nghttp2_session_destroy_stream | 1 | nghttp2_stream * | +| (nghttp2_session *,nghttp2_stream *,nghttp2_frame *,nghttp2_hd_nv *,int) | | nghttp2_http_on_header | 0 | nghttp2_session * | +| (nghttp2_session *,nghttp2_stream *,nghttp2_frame *,nghttp2_hd_nv *,int) | | nghttp2_http_on_header | 1 | nghttp2_stream * | +| (nghttp2_session *,nghttp2_stream *,nghttp2_frame *,nghttp2_hd_nv *,int) | | nghttp2_http_on_header | 2 | nghttp2_frame * | +| (nghttp2_session *,nghttp2_stream *,nghttp2_frame *,nghttp2_hd_nv *,int) | | nghttp2_http_on_header | 3 | nghttp2_hd_nv * | +| (nghttp2_session *,nghttp2_stream *,nghttp2_frame *,nghttp2_hd_nv *,int) | | nghttp2_http_on_header | 4 | int | +| (nghttp2_session *,nghttp2_stream *,size_t,int) | | nghttp2_session_update_recv_stream_window_size | 0 | nghttp2_session * | +| (nghttp2_session *,nghttp2_stream *,size_t,int) | | nghttp2_session_update_recv_stream_window_size | 1 | nghttp2_stream * | +| (nghttp2_session *,nghttp2_stream *,size_t,int) | | nghttp2_session_update_recv_stream_window_size | 2 | size_t | +| (nghttp2_session *,nghttp2_stream *,size_t,int) | | nghttp2_session_update_recv_stream_window_size | 3 | int | +| (nghttp2_session *,size_t) | | nghttp2_session_consume_connection | 0 | nghttp2_session * | +| (nghttp2_session *,size_t) | | nghttp2_session_consume_connection | 1 | size_t | +| (nghttp2_session *,size_t) | | nghttp2_session_update_recv_connection_window_size | 0 | nghttp2_session * | +| (nghttp2_session *,size_t) | | nghttp2_session_update_recv_connection_window_size | 1 | size_t | +| (nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t) | | nghttp2_session_add_settings | 0 | nghttp2_session * | +| (nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t) | | nghttp2_session_add_settings | 1 | uint8_t | +| (nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t) | | nghttp2_session_add_settings | 2 | const nghttp2_settings_entry * | +| (nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t) | | nghttp2_session_add_settings | 3 | size_t | +| (nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t) | | nghttp2_submit_settings | 0 | nghttp2_session * | +| (nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t) | | nghttp2_submit_settings | 1 | uint8_t | +| (nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t) | | nghttp2_submit_settings | 2 | const nghttp2_settings_entry * | +| (nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t) | | nghttp2_submit_settings | 3 | size_t | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider2 *) | | nghttp2_submit_data2 | 0 | nghttp2_session * | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider2 *) | | nghttp2_submit_data2 | 1 | uint8_t | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider2 *) | | nghttp2_submit_data2 | 2 | int32_t | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider2 *) | | nghttp2_submit_data2 | 3 | const nghttp2_data_provider2 * | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider *) | | nghttp2_submit_data | 0 | nghttp2_session * | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider *) | | nghttp2_submit_data | 1 | uint8_t | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider *) | | nghttp2_submit_data | 2 | int32_t | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider *) | | nghttp2_submit_data | 3 | const nghttp2_data_provider * | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider_wrap *) | | nghttp2_submit_data_shared | 0 | nghttp2_session * | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider_wrap *) | | nghttp2_submit_data_shared | 1 | uint8_t | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider_wrap *) | | nghttp2_submit_data_shared | 2 | int32_t | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider_wrap *) | | nghttp2_submit_data_shared | 3 | const nghttp2_data_provider_wrap * | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_push_promise | 0 | nghttp2_session * | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_push_promise | 1 | uint8_t | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_push_promise | 2 | int32_t | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_push_promise | 3 | const nghttp2_nv * | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_push_promise | 4 | size_t | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_push_promise | 5 | void * | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_headers | 0 | nghttp2_session * | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_headers | 1 | uint8_t | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_headers | 2 | int32_t | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_headers | 3 | const nghttp2_priority_spec * | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_headers | 4 | const nghttp2_nv * | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_headers | 5 | size_t | +| (nghttp2_session *,uint8_t,int32_t,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_headers | 6 | void * | +| (nghttp2_session *,uint8_t,int32_t,int32_t) | | nghttp2_session_set_local_window_size | 0 | nghttp2_session * | +| (nghttp2_session *,uint8_t,int32_t,int32_t) | | nghttp2_session_set_local_window_size | 1 | uint8_t | +| (nghttp2_session *,uint8_t,int32_t,int32_t) | | nghttp2_session_set_local_window_size | 2 | int32_t | +| (nghttp2_session *,uint8_t,int32_t,int32_t) | | nghttp2_session_set_local_window_size | 3 | int32_t | +| (nghttp2_session *,uint8_t,int32_t,int32_t) | | nghttp2_submit_window_update | 0 | nghttp2_session * | +| (nghttp2_session *,uint8_t,int32_t,int32_t) | | nghttp2_submit_window_update | 1 | uint8_t | +| (nghttp2_session *,uint8_t,int32_t,int32_t) | | nghttp2_submit_window_update | 2 | int32_t | +| (nghttp2_session *,uint8_t,int32_t,int32_t) | | nghttp2_submit_window_update | 3 | int32_t | +| (nghttp2_session *,void *) | | nghttp2_session_set_user_data | 0 | nghttp2_session * | +| (nghttp2_session *,void *) | | nghttp2_session_set_user_data | 1 | void * | +| (nghttp2_session_callbacks **) | | nghttp2_session_callbacks_new | 0 | nghttp2_session_callbacks ** | +| (nghttp2_session_callbacks *,nghttp2_before_frame_send_callback) | | nghttp2_session_callbacks_set_before_frame_send_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_before_frame_send_callback) | | nghttp2_session_callbacks_set_before_frame_send_callback | 1 | nghttp2_before_frame_send_callback | +| (nghttp2_session_callbacks *,nghttp2_data_source_read_length_callback2) | | nghttp2_session_callbacks_set_data_source_read_length_callback2 | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_data_source_read_length_callback2) | | nghttp2_session_callbacks_set_data_source_read_length_callback2 | 1 | nghttp2_data_source_read_length_callback2 | +| (nghttp2_session_callbacks *,nghttp2_data_source_read_length_callback) | | nghttp2_session_callbacks_set_data_source_read_length_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_data_source_read_length_callback) | | nghttp2_session_callbacks_set_data_source_read_length_callback | 1 | nghttp2_data_source_read_length_callback | +| (nghttp2_session_callbacks *,nghttp2_error_callback2) | | nghttp2_session_callbacks_set_error_callback2 | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_error_callback2) | | nghttp2_session_callbacks_set_error_callback2 | 1 | nghttp2_error_callback2 | +| (nghttp2_session_callbacks *,nghttp2_error_callback) | | nghttp2_session_callbacks_set_error_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_error_callback) | | nghttp2_session_callbacks_set_error_callback | 1 | nghttp2_error_callback | +| (nghttp2_session_callbacks *,nghttp2_on_begin_frame_callback) | | nghttp2_session_callbacks_set_on_begin_frame_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_on_begin_frame_callback) | | nghttp2_session_callbacks_set_on_begin_frame_callback | 1 | nghttp2_on_begin_frame_callback | +| (nghttp2_session_callbacks *,nghttp2_on_begin_headers_callback) | | nghttp2_session_callbacks_set_on_begin_headers_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_on_begin_headers_callback) | | nghttp2_session_callbacks_set_on_begin_headers_callback | 1 | nghttp2_on_begin_headers_callback | +| (nghttp2_session_callbacks *,nghttp2_on_data_chunk_recv_callback) | | nghttp2_session_callbacks_set_on_data_chunk_recv_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_on_data_chunk_recv_callback) | | nghttp2_session_callbacks_set_on_data_chunk_recv_callback | 1 | nghttp2_on_data_chunk_recv_callback | +| (nghttp2_session_callbacks *,nghttp2_on_extension_chunk_recv_callback) | | nghttp2_session_callbacks_set_on_extension_chunk_recv_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_on_extension_chunk_recv_callback) | | nghttp2_session_callbacks_set_on_extension_chunk_recv_callback | 1 | nghttp2_on_extension_chunk_recv_callback | +| (nghttp2_session_callbacks *,nghttp2_on_frame_not_send_callback) | | nghttp2_session_callbacks_set_on_frame_not_send_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_on_frame_not_send_callback) | | nghttp2_session_callbacks_set_on_frame_not_send_callback | 1 | nghttp2_on_frame_not_send_callback | +| (nghttp2_session_callbacks *,nghttp2_on_frame_recv_callback) | | nghttp2_session_callbacks_set_on_frame_recv_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_on_frame_recv_callback) | | nghttp2_session_callbacks_set_on_frame_recv_callback | 1 | nghttp2_on_frame_recv_callback | +| (nghttp2_session_callbacks *,nghttp2_on_frame_send_callback) | | nghttp2_session_callbacks_set_on_frame_send_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_on_frame_send_callback) | | nghttp2_session_callbacks_set_on_frame_send_callback | 1 | nghttp2_on_frame_send_callback | +| (nghttp2_session_callbacks *,nghttp2_on_header_callback2) | | nghttp2_session_callbacks_set_on_header_callback2 | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_on_header_callback2) | | nghttp2_session_callbacks_set_on_header_callback2 | 1 | nghttp2_on_header_callback2 | +| (nghttp2_session_callbacks *,nghttp2_on_header_callback) | | nghttp2_session_callbacks_set_on_header_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_on_header_callback) | | nghttp2_session_callbacks_set_on_header_callback | 1 | nghttp2_on_header_callback | +| (nghttp2_session_callbacks *,nghttp2_on_invalid_frame_recv_callback) | | nghttp2_session_callbacks_set_on_invalid_frame_recv_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_on_invalid_frame_recv_callback) | | nghttp2_session_callbacks_set_on_invalid_frame_recv_callback | 1 | nghttp2_on_invalid_frame_recv_callback | +| (nghttp2_session_callbacks *,nghttp2_on_invalid_header_callback2) | | nghttp2_session_callbacks_set_on_invalid_header_callback2 | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_on_invalid_header_callback2) | | nghttp2_session_callbacks_set_on_invalid_header_callback2 | 1 | nghttp2_on_invalid_header_callback2 | +| (nghttp2_session_callbacks *,nghttp2_on_invalid_header_callback) | | nghttp2_session_callbacks_set_on_invalid_header_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_on_invalid_header_callback) | | nghttp2_session_callbacks_set_on_invalid_header_callback | 1 | nghttp2_on_invalid_header_callback | +| (nghttp2_session_callbacks *,nghttp2_on_stream_close_callback) | | nghttp2_session_callbacks_set_on_stream_close_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_on_stream_close_callback) | | nghttp2_session_callbacks_set_on_stream_close_callback | 1 | nghttp2_on_stream_close_callback | +| (nghttp2_session_callbacks *,nghttp2_pack_extension_callback2) | | nghttp2_session_callbacks_set_pack_extension_callback2 | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_pack_extension_callback2) | | nghttp2_session_callbacks_set_pack_extension_callback2 | 1 | nghttp2_pack_extension_callback2 | +| (nghttp2_session_callbacks *,nghttp2_pack_extension_callback) | | nghttp2_session_callbacks_set_pack_extension_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_pack_extension_callback) | | nghttp2_session_callbacks_set_pack_extension_callback | 1 | nghttp2_pack_extension_callback | +| (nghttp2_session_callbacks *,nghttp2_recv_callback2) | | nghttp2_session_callbacks_set_recv_callback2 | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_recv_callback2) | | nghttp2_session_callbacks_set_recv_callback2 | 1 | nghttp2_recv_callback2 | +| (nghttp2_session_callbacks *,nghttp2_recv_callback) | | nghttp2_session_callbacks_set_recv_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_recv_callback) | | nghttp2_session_callbacks_set_recv_callback | 1 | nghttp2_recv_callback | +| (nghttp2_session_callbacks *,nghttp2_select_padding_callback2) | | nghttp2_session_callbacks_set_select_padding_callback2 | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_select_padding_callback2) | | nghttp2_session_callbacks_set_select_padding_callback2 | 1 | nghttp2_select_padding_callback2 | +| (nghttp2_session_callbacks *,nghttp2_select_padding_callback) | | nghttp2_session_callbacks_set_select_padding_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_select_padding_callback) | | nghttp2_session_callbacks_set_select_padding_callback | 1 | nghttp2_select_padding_callback | +| (nghttp2_session_callbacks *,nghttp2_send_callback2) | | nghttp2_session_callbacks_set_send_callback2 | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_send_callback2) | | nghttp2_session_callbacks_set_send_callback2 | 1 | nghttp2_send_callback2 | +| (nghttp2_session_callbacks *,nghttp2_send_callback) | | nghttp2_session_callbacks_set_send_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_send_callback) | | nghttp2_session_callbacks_set_send_callback | 1 | nghttp2_send_callback | +| (nghttp2_session_callbacks *,nghttp2_send_data_callback) | | nghttp2_session_callbacks_set_send_data_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_send_data_callback) | | nghttp2_session_callbacks_set_send_data_callback | 1 | nghttp2_send_data_callback | +| (nghttp2_session_callbacks *,nghttp2_unpack_extension_callback) | | nghttp2_session_callbacks_set_unpack_extension_callback | 0 | nghttp2_session_callbacks * | +| (nghttp2_session_callbacks *,nghttp2_unpack_extension_callback) | | nghttp2_session_callbacks_set_unpack_extension_callback | 1 | nghttp2_unpack_extension_callback | +| (nghttp2_settings *,nghttp2_settings_entry *,size_t) | | nghttp2_frame_unpack_settings_payload | 0 | nghttp2_settings * | +| (nghttp2_settings *,nghttp2_settings_entry *,size_t) | | nghttp2_frame_unpack_settings_payload | 1 | nghttp2_settings_entry * | +| (nghttp2_settings *,nghttp2_settings_entry *,size_t) | | nghttp2_frame_unpack_settings_payload | 2 | size_t | +| (nghttp2_settings *,uint8_t,nghttp2_settings_entry *,size_t) | | nghttp2_frame_settings_init | 0 | nghttp2_settings * | +| (nghttp2_settings *,uint8_t,nghttp2_settings_entry *,size_t) | | nghttp2_frame_settings_init | 1 | uint8_t | +| (nghttp2_settings *,uint8_t,nghttp2_settings_entry *,size_t) | | nghttp2_frame_settings_init | 2 | nghttp2_settings_entry * | +| (nghttp2_settings *,uint8_t,nghttp2_settings_entry *,size_t) | | nghttp2_frame_settings_init | 3 | size_t | +| (nghttp2_settings_entry **,size_t *,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_frame_unpack_settings_payload2 | 0 | nghttp2_settings_entry ** | +| (nghttp2_settings_entry **,size_t *,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_frame_unpack_settings_payload2 | 1 | size_t * | +| (nghttp2_settings_entry **,size_t *,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_frame_unpack_settings_payload2 | 2 | const uint8_t * | +| (nghttp2_settings_entry **,size_t *,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_frame_unpack_settings_payload2 | 3 | size_t | +| (nghttp2_settings_entry **,size_t *,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_frame_unpack_settings_payload2 | 4 | nghttp2_mem * | +| (nghttp2_stream *) | | nghttp2_stream_get_stream_id | 0 | nghttp2_stream * | +| (nghttp2_stream *,int32_t,int32_t) | | nghttp2_stream_update_local_initial_window_size | 0 | nghttp2_stream * | +| (nghttp2_stream *,int32_t,int32_t) | | nghttp2_stream_update_local_initial_window_size | 1 | int32_t | +| (nghttp2_stream *,int32_t,int32_t) | | nghttp2_stream_update_local_initial_window_size | 2 | int32_t | +| (nghttp2_stream *,int32_t,int32_t) | | nghttp2_stream_update_remote_initial_window_size | 0 | nghttp2_stream * | +| (nghttp2_stream *,int32_t,int32_t) | | nghttp2_stream_update_remote_initial_window_size | 1 | int32_t | +| (nghttp2_stream *,int32_t,int32_t) | | nghttp2_stream_update_remote_initial_window_size | 2 | int32_t | +| (nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *) | | nghttp2_stream_init | 0 | nghttp2_stream * | +| (nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *) | | nghttp2_stream_init | 1 | int32_t | +| (nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *) | | nghttp2_stream_init | 2 | uint8_t | +| (nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *) | | nghttp2_stream_init | 3 | nghttp2_stream_state | +| (nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *) | | nghttp2_stream_init | 4 | int32_t | +| (nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *) | | nghttp2_stream_init | 5 | int32_t | +| (nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *) | | nghttp2_stream_init | 6 | void * | +| (nghttp2_stream *,nghttp2_outbound_item *) | | nghttp2_stream_attach_item | 0 | nghttp2_stream * | +| (nghttp2_stream *,nghttp2_outbound_item *) | | nghttp2_stream_attach_item | 1 | nghttp2_outbound_item * | +| (nghttp2_stream *,nghttp2_shut_flag) | | nghttp2_stream_shutdown | 0 | nghttp2_stream * | +| (nghttp2_stream *,nghttp2_shut_flag) | | nghttp2_stream_shutdown | 1 | nghttp2_shut_flag | +| (nghttp2_stream *,size_t) | | nghttp2_http_on_data_chunk | 0 | nghttp2_stream * | +| (nghttp2_stream *,size_t) | | nghttp2_http_on_data_chunk | 1 | size_t | +| (nghttp2_stream *,uint8_t) | | nghttp2_stream_defer_item | 0 | nghttp2_stream * | +| (nghttp2_stream *,uint8_t) | | nghttp2_stream_defer_item | 1 | uint8_t | +| (nghttp2_stream *,uint8_t) | | nghttp2_stream_resume_deferred_item | 0 | nghttp2_stream * | +| (nghttp2_stream *,uint8_t) | | nghttp2_stream_resume_deferred_item | 1 | uint8_t | +| (nghttp2_window_update *,uint8_t,int32_t,int32_t) | | nghttp2_frame_window_update_init | 0 | nghttp2_window_update * | +| (nghttp2_window_update *,uint8_t,int32_t,int32_t) | | nghttp2_frame_window_update_init | 1 | uint8_t | +| (nghttp2_window_update *,uint8_t,int32_t,int32_t) | | nghttp2_frame_window_update_init | 2 | int32_t | +| (nghttp2_window_update *,uint8_t,int32_t,int32_t) | | nghttp2_frame_window_update_init | 3 | int32_t | +| (pgrs_dir *,curl_off_t,curltime) | | Curl_pgrsLimitWaitTime | 0 | pgrs_dir * | +| (pgrs_dir *,curl_off_t,curltime) | | Curl_pgrsLimitWaitTime | 1 | curl_off_t | +| (pgrs_dir *,curl_off_t,curltime) | | Curl_pgrsLimitWaitTime | 2 | curltime | | (piterator *) | | pqueue_next | 0 | piterator * | | (plink *) | | Plink_delete | 0 | plink * | | (plink **,config *) | | Plink_add | 0 | plink ** | | (plink **,config *) | | Plink_add | 1 | config * | | (plink **,plink *) | | Plink_copy | 0 | plink ** | | (plink **,plink *) | | Plink_copy | 1 | plink * | +| (pollfd[],unsigned int,timediff_t) | | Curl_poll | 0 | pollfd[] | +| (pollfd[],unsigned int,timediff_t) | | Curl_poll | 1 | unsigned int | +| (pollfd[],unsigned int,timediff_t) | | Curl_poll | 2 | timediff_t | | (pqueue *) | | pqueue_iterator | 0 | pqueue * | | (pqueue *) | | pqueue_peek | 0 | pqueue * | | (pqueue *) | | pqueue_pop | 0 | pqueue * | @@ -26462,6 +31716,8 @@ getSignatureParameterName | (pqueue *,pitem *) | | pqueue_insert | 1 | pitem * | | (pqueue *,unsigned char *) | | pqueue_find | 0 | pqueue * | | (pqueue *,unsigned char *) | | pqueue_find | 1 | unsigned char * | +| (pthread_t *) | | Curl_thread_destroy | 0 | pthread_t * | +| (pthread_t **) | | Curl_thread_join | 0 | pthread_t ** | | (regex_t *,const char *,int) | | jim_regcomp | 0 | regex_t * | | (regex_t *,const char *,int) | | jim_regcomp | 1 | const char * | | (regex_t *,const char *,int) | | jim_regcomp | 2 | int | @@ -26474,6 +31730,31 @@ getSignatureParameterName | (rule *,int) | | Configlist_add | 1 | int | | (rule *,int) | | Configlist_addbasis | 0 | rule * | | (rule *,int) | | Configlist_addbasis | 1 | int | +| (scan_ctx *,const char *,const char *,const char *) | | inithelpscan | 0 | scan_ctx * | +| (scan_ctx *,const char *,const char *,const char *) | | inithelpscan | 1 | const char * | +| (scan_ctx *,const char *,const char *,const char *) | | inithelpscan | 2 | const char * | +| (scan_ctx *,const char *,const char *,const char *) | | inithelpscan | 3 | const char * | +| (sfparse_parser *,const uint8_t *,size_t) | | sfparse_parser_init | 0 | sfparse_parser * | +| (sfparse_parser *,const uint8_t *,size_t) | | sfparse_parser_init | 1 | const uint8_t * | +| (sfparse_parser *,const uint8_t *,size_t) | | sfparse_parser_init | 2 | size_t | +| (sfparse_parser *,sfparse_value *) | | sfparse_parser_inner_list | 0 | sfparse_parser * | +| (sfparse_parser *,sfparse_value *) | | sfparse_parser_inner_list | 1 | sfparse_value * | +| (sfparse_parser *,sfparse_value *) | | sfparse_parser_item | 0 | sfparse_parser * | +| (sfparse_parser *,sfparse_value *) | | sfparse_parser_item | 1 | sfparse_value * | +| (sfparse_parser *,sfparse_value *) | | sfparse_parser_list | 0 | sfparse_parser * | +| (sfparse_parser *,sfparse_value *) | | sfparse_parser_list | 1 | sfparse_value * | +| (sfparse_parser *,sfparse_vec *,sfparse_value *) | | sfparse_parser_dict | 0 | sfparse_parser * | +| (sfparse_parser *,sfparse_vec *,sfparse_value *) | | sfparse_parser_dict | 1 | sfparse_vec * | +| (sfparse_parser *,sfparse_vec *,sfparse_value *) | | sfparse_parser_dict | 2 | sfparse_value * | +| (sfparse_parser *,sfparse_vec *,sfparse_value *) | | sfparse_parser_param | 0 | sfparse_parser * | +| (sfparse_parser *,sfparse_vec *,sfparse_value *) | | sfparse_parser_param | 1 | sfparse_vec * | +| (sfparse_parser *,sfparse_vec *,sfparse_value *) | | sfparse_parser_param | 2 | sfparse_value * | +| (sfparse_vec *,const sfparse_vec *) | | sfparse_base64decode | 0 | sfparse_vec * | +| (sfparse_vec *,const sfparse_vec *) | | sfparse_base64decode | 1 | const sfparse_vec * | +| (sfparse_vec *,const sfparse_vec *) | | sfparse_pctdecode | 0 | sfparse_vec * | +| (sfparse_vec *,const sfparse_vec *) | | sfparse_pctdecode | 1 | const sfparse_vec * | +| (sfparse_vec *,const sfparse_vec *) | | sfparse_unescape | 0 | sfparse_vec * | +| (sfparse_vec *,const sfparse_vec *) | | sfparse_unescape | 1 | const sfparse_vec * | | (size_t *,const char *) | | next_protos_parse | 0 | size_t * | | (size_t *,const char *) | | next_protos_parse | 1 | const char * | | (size_t *,size_t,unsigned char *,unsigned char **,int *,size_t,size_t,OSSL_LIB_CTX *) | | ssl3_cbc_remove_padding_and_mac | 0 | size_t * | @@ -26493,7 +31774,12 @@ getSignatureParameterName | (size_t *,size_t,unsigned char *,unsigned char **,int *,size_t,size_t,int,OSSL_LIB_CTX *) | | tls1_cbc_remove_padding_and_mac | 6 | size_t | | (size_t *,size_t,unsigned char *,unsigned char **,int *,size_t,size_t,int,OSSL_LIB_CTX *) | | tls1_cbc_remove_padding_and_mac | 7 | int | | (size_t *,size_t,unsigned char *,unsigned char **,int *,size_t,size_t,int,OSSL_LIB_CTX *) | | tls1_cbc_remove_padding_and_mac | 8 | OSSL_LIB_CTX * | +| (size_t) | | BrotliEncoderMaxCompressedSize | 0 | size_t | | (size_t) | | EVP_PKEY_meth_get0 | 0 | size_t | +| (size_t) | | curlx_uztosi | 0 | size_t | +| (size_t) | | curlx_uztosz | 0 | size_t | +| (size_t) | | curlx_uztoui | 0 | size_t | +| (size_t) | | curlx_uztoul | 0 | size_t | | (size_t) | | ossl_get_extension_type | 0 | size_t | | (size_t) | | ossl_param_bytes_to_blocks | 0 | size_t | | (size_t) | | ossl_quic_sstream_new | 0 | size_t | @@ -26508,11 +31794,51 @@ getSignatureParameterName | (size_t,const char **,size_t *) | | conf_ssl_get | 0 | size_t | | (size_t,const char **,size_t *) | | conf_ssl_get | 1 | const char ** | | (size_t,const char **,size_t *) | | conf_ssl_get | 2 | size_t * | +| (size_t,const char[],size_t *,uint32_t[]) | | _idn2_punycode_decode | 0 | size_t | +| (size_t,const char[],size_t *,uint32_t[]) | | _idn2_punycode_decode | 1 | const char[] | +| (size_t,const char[],size_t *,uint32_t[]) | | _idn2_punycode_decode | 2 | size_t * | +| (size_t,const char[],size_t *,uint32_t[]) | | _idn2_punycode_decode | 3 | uint32_t[] | +| (size_t,const uint8_t[],size_t *,uint8_t[]) | | BrotliDecoderDecompress | 0 | size_t | +| (size_t,const uint8_t[],size_t *,uint8_t[]) | | BrotliDecoderDecompress | 1 | const uint8_t[] | +| (size_t,const uint8_t[],size_t *,uint8_t[]) | | BrotliDecoderDecompress | 2 | size_t * | +| (size_t,const uint8_t[],size_t *,uint8_t[]) | | BrotliDecoderDecompress | 3 | uint8_t[] | +| (size_t,const uint32_t[],size_t *,char[]) | | _idn2_punycode_encode | 0 | size_t | +| (size_t,const uint32_t[],size_t *,char[]) | | _idn2_punycode_encode | 1 | const uint32_t[] | +| (size_t,const uint32_t[],size_t *,char[]) | | _idn2_punycode_encode | 2 | size_t * | +| (size_t,const uint32_t[],size_t *,char[]) | | _idn2_punycode_encode | 3 | char[] | +| (size_t,size_t,Curl_ssl_scache **) | | Curl_ssl_scache_create | 0 | size_t | +| (size_t,size_t,Curl_ssl_scache **) | | Curl_ssl_scache_create | 1 | size_t | +| (size_t,size_t,Curl_ssl_scache **) | | Curl_ssl_scache_create | 2 | Curl_ssl_scache ** | +| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 0 | size_t | +| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 1 | size_t | +| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 2 | const uint8_t * | +| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 3 | size_t | +| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 4 | ContextLut | +| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 5 | const BrotliEncoderParams * | +| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 6 | Hasher * | +| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 7 | int * | +| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 8 | size_t * | +| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 9 | Command * | +| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 10 | size_t * | +| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 11 | size_t * | +| (size_t,size_t,size_t,const uint8_t *,size_t *,float *) | | BrotliEstimateBitCostsForLiterals | 0 | size_t | +| (size_t,size_t,size_t,const uint8_t *,size_t *,float *) | | BrotliEstimateBitCostsForLiterals | 1 | size_t | +| (size_t,size_t,size_t,const uint8_t *,size_t *,float *) | | BrotliEstimateBitCostsForLiterals | 2 | size_t | +| (size_t,size_t,size_t,const uint8_t *,size_t *,float *) | | BrotliEstimateBitCostsForLiterals | 3 | const uint8_t * | +| (size_t,size_t,size_t,const uint8_t *,size_t *,float *) | | BrotliEstimateBitCostsForLiterals | 4 | size_t * | +| (size_t,size_t,size_t,const uint8_t *,size_t *,float *) | | BrotliEstimateBitCostsForLiterals | 5 | float * | +| (size_t,size_t,size_t,size_t) | | Curl_multi_handle | 0 | size_t | +| (size_t,size_t,size_t,size_t) | | Curl_multi_handle | 1 | size_t | +| (size_t,size_t,size_t,size_t) | | Curl_multi_handle | 2 | size_t | +| (size_t,size_t,size_t,size_t) | | Curl_multi_handle | 3 | size_t | | (size_t,size_t,void **,const char *,int) | | CRYPTO_aligned_alloc | 0 | size_t | | (size_t,size_t,void **,const char *,int) | | CRYPTO_aligned_alloc | 1 | size_t | | (size_t,size_t,void **,const char *,int) | | CRYPTO_aligned_alloc | 2 | void ** | | (size_t,size_t,void **,const char *,int) | | CRYPTO_aligned_alloc | 3 | const char * | | (size_t,size_t,void **,const char *,int) | | CRYPTO_aligned_alloc | 4 | int | +| (size_t,uint32_t *,uint8_t *) | | BrotliOptimizeHuffmanCountsForRle | 0 | size_t | +| (size_t,uint32_t *,uint8_t *) | | BrotliOptimizeHuffmanCountsForRle | 1 | uint32_t * | +| (size_t,uint32_t *,uint8_t *) | | BrotliOptimizeHuffmanCountsForRle | 2 | uint8_t * | | (size_type,const T &) | deque | assign | 0 | size_type | | (size_type,const T &) | deque | assign | 1 | const class:0 & | | (size_type,const T &) | forward_list | assign | 0 | size_type | @@ -26533,6 +31859,10 @@ getSignatureParameterName | (size_type,const T &,const Allocator &) | vector | vector | 0 | size_type | | (size_type,const T &,const Allocator &) | vector | vector | 1 | const class:0 & | | (size_type,const T &,const Allocator &) | vector | vector | 2 | const class:1 & | +| (slist_wc **,const char *) | | easysrc_add | 0 | slist_wc ** | +| (slist_wc **,const char *) | | easysrc_add | 1 | const char * | +| (slist_wc *,const char *) | | slist_wc_append | 0 | slist_wc * | +| (slist_wc *,const char *) | | slist_wc_append | 1 | const char * | | (sqlite3 *) | | close_db | 0 | sqlite3 * | | (sqlite3 *) | | sqlite3CompletionVtabInit | 0 | sqlite3 * | | (sqlite3 *) | | sqlite3_changes | 0 | sqlite3 * | @@ -27047,6 +32377,11 @@ getSignatureParameterName | (sqlite3expert *,int,int) | | sqlite3_expert_report | 0 | sqlite3expert * | | (sqlite3expert *,int,int) | | sqlite3_expert_report | 1 | int | | (sqlite3expert *,int,int) | | sqlite3_expert_report | 2 | int | +| (ssize_t) | | curlx_sztosi | 0 | ssize_t | +| (ssl_peer *,Curl_cfilter *,const char *,int) | | Curl_ssl_peer_init | 0 | ssl_peer * | +| (ssl_peer *,Curl_cfilter *,const char *,int) | | Curl_ssl_peer_init | 1 | Curl_cfilter * | +| (ssl_peer *,Curl_cfilter *,const char *,int) | | Curl_ssl_peer_init | 2 | const char * | +| (ssl_peer *,Curl_cfilter *,const char *,int) | | Curl_ssl_peer_init | 3 | int | | (stack_st_ASN1_UTF8STRING *) | | OSSL_CMP_ITAV_new0_certProfile | 0 | stack_st_ASN1_UTF8STRING * | | (stack_st_ASN1_UTF8STRING *,const char *,int) | | ossl_cmp_sk_ASN1_UTF8STRING_push_str | 0 | stack_st_ASN1_UTF8STRING * | | (stack_st_ASN1_UTF8STRING *,const char *,int) | | ossl_cmp_sk_ASN1_UTF8STRING_push_str | 1 | const char * | @@ -27207,8 +32542,31 @@ getSignatureParameterName | (stack_st_X509_POLICY_NODE *,const ASN1_OBJECT *) | | ossl_policy_tree_find_sk | 1 | const ASN1_OBJECT * | | (state *,config *) | | State_insert | 0 | state * | | (state *,config *) | | State_insert | 1 | config * | +| (store_netrc *) | | Curl_netrc_cleanup | 0 | store_netrc * | +| (store_netrc *,const char *,char **,char **,char *) | | Curl_parsenetrc | 0 | store_netrc * | +| (store_netrc *,const char *,char **,char **,char *) | | Curl_parsenetrc | 1 | const char * | +| (store_netrc *,const char *,char **,char **,char *) | | Curl_parsenetrc | 2 | char ** | +| (store_netrc *,const char *,char **,char **,char *) | | Curl_parsenetrc | 3 | char ** | +| (store_netrc *,const char *,char **,char **,char *) | | Curl_parsenetrc | 4 | char * | +| (string_buf *,libssh2_uint64_t *) | | _libssh2_get_u64 | 0 | string_buf * | +| (string_buf *,libssh2_uint64_t *) | | _libssh2_get_u64 | 1 | libssh2_uint64_t * | +| (string_buf *,uint32_t *) | | _libssh2_get_u32 | 0 | string_buf * | +| (string_buf *,uint32_t *) | | _libssh2_get_u32 | 1 | uint32_t * | +| (string_buf *,unsigned char *) | | _libssh2_get_byte | 0 | string_buf * | +| (string_buf *,unsigned char *) | | _libssh2_get_byte | 1 | unsigned char * | +| (string_buf *,unsigned char **,size_t *) | | _libssh2_get_bignum_bytes | 0 | string_buf * | +| (string_buf *,unsigned char **,size_t *) | | _libssh2_get_bignum_bytes | 1 | unsigned char ** | +| (string_buf *,unsigned char **,size_t *) | | _libssh2_get_bignum_bytes | 2 | size_t * | +| (string_buf *,unsigned char **,size_t *) | | _libssh2_get_string | 0 | string_buf * | +| (string_buf *,unsigned char **,size_t *) | | _libssh2_get_string | 1 | unsigned char ** | +| (string_buf *,unsigned char **,size_t *) | | _libssh2_get_string | 2 | size_t * | | (symbol *,lemon *) | | has_destructor | 0 | symbol * | | (symbol *,lemon *) | | has_destructor | 1 | lemon * | +| (timeval *) | | curlx_tvtoms | 0 | timeval * | +| (timeval *,timediff_t) | | curlx_mstotv | 0 | timeval * | +| (timeval *,timediff_t) | | curlx_mstotv | 1 | timediff_t | +| (timeval,timeval) | | tvdiff | 0 | timeval | +| (timeval,timeval) | | tvdiff | 1 | timeval | | (tm *,const ASN1_TIME *) | | ossl_asn1_time_to_tm | 0 | tm * | | (tm *,const ASN1_TIME *) | | ossl_asn1_time_to_tm | 1 | const ASN1_TIME * | | (tm *,const ASN1_UTCTIME *) | | ossl_asn1_utctime_to_tm | 0 | tm * | @@ -27220,6 +32578,75 @@ getSignatureParameterName | (u64[2],const u128[16],const u8 *,size_t) | | ossl_gcm_ghash_4bit | 1 | const u128[16] | | (u64[2],const u128[16],const u8 *,size_t) | | ossl_gcm_ghash_4bit | 2 | const u8 * | | (u64[2],const u128[16],const u8 *,size_t) | | ossl_gcm_ghash_4bit | 3 | size_t | +| (uLong) | | compressBound | 0 | uLong | +| (uLong,const Bytef *,uInt) | | adler32 | 0 | uLong | +| (uLong,const Bytef *,uInt) | | adler32 | 1 | const Bytef * | +| (uLong,const Bytef *,uInt) | | adler32 | 2 | uInt | +| (uLong,const Bytef *,z_size_t) | | adler32_z | 0 | uLong | +| (uLong,const Bytef *,z_size_t) | | adler32_z | 1 | const Bytef * | +| (uLong,const Bytef *,z_size_t) | | adler32_z | 2 | z_size_t | +| (uLong,uLong,off64_t) | | adler32_combine64 | 0 | uLong | +| (uLong,uLong,off64_t) | | adler32_combine64 | 1 | uLong | +| (uLong,uLong,off64_t) | | adler32_combine64 | 2 | off64_t | +| (uLong,uLong,off64_t) | | crc32_combine64 | 0 | uLong | +| (uLong,uLong,off64_t) | | crc32_combine64 | 1 | uLong | +| (uLong,uLong,off64_t) | | crc32_combine64 | 2 | off64_t | +| (uLong,uLong,off_t) | | adler32_combine | 0 | uLong | +| (uLong,uLong,off_t) | | adler32_combine | 1 | uLong | +| (uLong,uLong,off_t) | | adler32_combine | 2 | off_t | +| (uLong,uLong,off_t) | | crc32_combine | 0 | uLong | +| (uLong,uLong,off_t) | | crc32_combine | 1 | uLong | +| (uLong,uLong,off_t) | | crc32_combine | 2 | off_t | +| (uLong,uLong,uLong) | | crc32_combine_op | 0 | uLong | +| (uLong,uLong,uLong) | | crc32_combine_op | 1 | uLong | +| (uLong,uLong,uLong) | | crc32_combine_op | 2 | uLong | +| (uLong,unsigned long,const Bytef *,const unsigned char *,uInt) | | crc32 | 0 | uLong | +| (uLong,unsigned long,const Bytef *,const unsigned char *,uInt) | | crc32 | 1 | unsigned long | +| (uLong,unsigned long,const Bytef *,const unsigned char *,uInt) | | crc32 | 2 | const Bytef * | +| (uLong,unsigned long,const Bytef *,const unsigned char *,uInt) | | crc32 | 3 | const unsigned char * | +| (uLong,unsigned long,const Bytef *,const unsigned char *,uInt) | | crc32 | 4 | uInt | +| (uLong,unsigned long,const Bytef *,const unsigned char *,z_size_t) | | crc32_z | 0 | uLong | +| (uLong,unsigned long,const Bytef *,const unsigned char *,z_size_t) | | crc32_z | 1 | unsigned long | +| (uLong,unsigned long,const Bytef *,const unsigned char *,z_size_t) | | crc32_z | 2 | const Bytef * | +| (uLong,unsigned long,const Bytef *,const unsigned char *,z_size_t) | | crc32_z | 3 | const unsigned char * | +| (uLong,unsigned long,const Bytef *,const unsigned char *,z_size_t) | | crc32_z | 4 | z_size_t | +| (u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32]) | | poly1305_auth | 0 | u_char[16] | +| (u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32]) | | poly1305_auth | 1 | unsigned char[16] | +| (u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32]) | | poly1305_auth | 2 | const u_char * | +| (u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32]) | | poly1305_auth | 3 | const unsigned char * | +| (u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32]) | | poly1305_auth | 4 | size_t | +| (u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32]) | | poly1305_auth | 5 | const u_char[32] | +| (u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32]) | | poly1305_auth | 6 | const unsigned char[32] | +| (ucs4_t *,const uint8_t *,size_t) | | u8_mbtouc_aux | 0 | ucs4_t * | +| (ucs4_t *,const uint8_t *,size_t) | | u8_mbtouc_aux | 1 | const uint8_t * | +| (ucs4_t *,const uint8_t *,size_t) | | u8_mbtouc_aux | 2 | size_t | +| (ucs4_t) | | uc_bidi_category | 0 | ucs4_t | +| (ucs4_t) | | uc_bidi_class | 0 | ucs4_t | +| (ucs4_t) | | uc_combining_class | 0 | ucs4_t | +| (ucs4_t) | | uc_general_category | 0 | ucs4_t | +| (ucs4_t) | | uc_joining_type | 0 | ucs4_t | +| (ucs4_t) | | uc_script | 0 | ucs4_t | +| (ucs4_t,ucs4_t *) | | uc_canonical_decomposition | 0 | ucs4_t | +| (ucs4_t,ucs4_t *) | | uc_canonical_decomposition | 1 | ucs4_t * | +| (ucs4_t,ucs4_t) | | uc_composition | 0 | ucs4_t | +| (ucs4_t,ucs4_t) | | uc_composition | 1 | ucs4_t | +| (ucs4_t,uint32_t) | | uc_is_general_category_withtable | 0 | ucs4_t | +| (ucs4_t,uint32_t) | | uc_is_general_category_withtable | 1 | uint32_t | +| (ucs4_with_ccc *,size_t,ucs4_with_ccc *) | | gl_uninorm_decompose_merge_sort_inplace | 0 | ucs4_with_ccc * | +| (ucs4_with_ccc *,size_t,ucs4_with_ccc *) | | gl_uninorm_decompose_merge_sort_inplace | 1 | size_t | +| (ucs4_with_ccc *,size_t,ucs4_with_ccc *) | | gl_uninorm_decompose_merge_sort_inplace | 2 | ucs4_with_ccc * | +| (uint8_t *,const nghttp2_frame_hd *) | | nghttp2_frame_pack_frame_hd | 0 | uint8_t * | +| (uint8_t *,const nghttp2_frame_hd *) | | nghttp2_frame_pack_frame_hd | 1 | const nghttp2_frame_hd * | +| (uint8_t *,const nghttp2_priority_spec *) | | nghttp2_frame_pack_priority_spec | 0 | uint8_t * | +| (uint8_t *,const nghttp2_priority_spec *) | | nghttp2_frame_pack_priority_spec | 1 | const nghttp2_priority_spec * | +| (uint8_t *,const nghttp2_settings_entry *,size_t) | | nghttp2_frame_pack_settings_payload | 0 | uint8_t * | +| (uint8_t *,const nghttp2_settings_entry *,size_t) | | nghttp2_frame_pack_settings_payload | 1 | const nghttp2_settings_entry * | +| (uint8_t *,const nghttp2_settings_entry *,size_t) | | nghttp2_frame_pack_settings_payload | 2 | size_t | +| (uint8_t *,const uint8_t *,int,const BrotliTransforms *,int) | | BrotliTransformDictionaryWord | 0 | uint8_t * | +| (uint8_t *,const uint8_t *,int,const BrotliTransforms *,int) | | BrotliTransformDictionaryWord | 1 | const uint8_t * | +| (uint8_t *,const uint8_t *,int,const BrotliTransforms *,int) | | BrotliTransformDictionaryWord | 2 | int | +| (uint8_t *,const uint8_t *,int,const BrotliTransforms *,int) | | BrotliTransformDictionaryWord | 3 | const BrotliTransforms * | +| (uint8_t *,const uint8_t *,int,const BrotliTransforms *,int) | | BrotliTransformDictionaryWord | 4 | int | | (uint8_t *,const uint8_t *,size_t,const uint8_t[32],const uint8_t[32],const uint8_t,const uint8_t,const uint8_t,const uint8_t *,size_t,OSSL_LIB_CTX *,const char *) | | ossl_ed25519_sign | 0 | uint8_t * | | (uint8_t *,const uint8_t *,size_t,const uint8_t[32],const uint8_t[32],const uint8_t,const uint8_t,const uint8_t,const uint8_t *,size_t,OSSL_LIB_CTX *,const char *) | | ossl_ed25519_sign | 1 | const uint8_t * | | (uint8_t *,const uint8_t *,size_t,const uint8_t[32],const uint8_t[32],const uint8_t,const uint8_t,const uint8_t,const uint8_t *,size_t,OSSL_LIB_CTX *,const char *) | | ossl_ed25519_sign | 2 | size_t | @@ -27232,6 +32659,11 @@ getSignatureParameterName | (uint8_t *,const uint8_t *,size_t,const uint8_t[32],const uint8_t[32],const uint8_t,const uint8_t,const uint8_t,const uint8_t *,size_t,OSSL_LIB_CTX *,const char *) | | ossl_ed25519_sign | 9 | size_t | | (uint8_t *,const uint8_t *,size_t,const uint8_t[32],const uint8_t[32],const uint8_t,const uint8_t,const uint8_t,const uint8_t *,size_t,OSSL_LIB_CTX *,const char *) | | ossl_ed25519_sign | 10 | OSSL_LIB_CTX * | | (uint8_t *,const uint8_t *,size_t,const uint8_t[32],const uint8_t[32],const uint8_t,const uint8_t,const uint8_t,const uint8_t *,size_t,OSSL_LIB_CTX *,const char *) | | ossl_ed25519_sign | 11 | const char * | +| (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 0 | uint8_t * | +| (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 1 | const void * | +| (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 2 | size_t | +| (uint8_t *,size_t) | | nghttp2_downcase | 0 | uint8_t * | +| (uint8_t *,size_t) | | nghttp2_downcase | 1 | size_t | | (uint8_t *,size_t) | | ossl_fnv1a_hash | 0 | uint8_t * | | (uint8_t *,size_t) | | ossl_fnv1a_hash | 1 | size_t | | (uint8_t *,size_t,ML_KEM_KEY *) | | ossl_ml_kem_genkey | 0 | uint8_t * | @@ -27246,6 +32678,14 @@ getSignatureParameterName | (uint8_t *,size_t,const ML_KEM_KEY *) | | ossl_ml_kem_encode_seed | 0 | uint8_t * | | (uint8_t *,size_t,const ML_KEM_KEY *) | | ossl_ml_kem_encode_seed | 1 | size_t | | (uint8_t *,size_t,const ML_KEM_KEY *) | | ossl_ml_kem_encode_seed | 2 | const ML_KEM_KEY * | +| (uint8_t *,size_t,const nghttp2_settings_entry *,size_t) | | nghttp2_pack_settings_payload | 0 | uint8_t * | +| (uint8_t *,size_t,const nghttp2_settings_entry *,size_t) | | nghttp2_pack_settings_payload | 1 | size_t | +| (uint8_t *,size_t,const nghttp2_settings_entry *,size_t) | | nghttp2_pack_settings_payload | 2 | const nghttp2_settings_entry * | +| (uint8_t *,size_t,const nghttp2_settings_entry *,size_t) | | nghttp2_pack_settings_payload | 3 | size_t | +| (uint8_t *,size_t,const nghttp2_settings_entry *,size_t) | | nghttp2_pack_settings_payload2 | 0 | uint8_t * | +| (uint8_t *,size_t,const nghttp2_settings_entry *,size_t) | | nghttp2_pack_settings_payload2 | 1 | size_t | +| (uint8_t *,size_t,const nghttp2_settings_entry *,size_t) | | nghttp2_pack_settings_payload2 | 2 | const nghttp2_settings_entry * | +| (uint8_t *,size_t,const nghttp2_settings_entry *,size_t) | | nghttp2_pack_settings_payload2 | 3 | size_t | | (uint8_t *,size_t,const uint8_t *,size_t,const ML_KEM_KEY *) | | ossl_ml_kem_decap | 0 | uint8_t * | | (uint8_t *,size_t,const uint8_t *,size_t,const ML_KEM_KEY *) | | ossl_ml_kem_decap | 1 | size_t | | (uint8_t *,size_t,const uint8_t *,size_t,const ML_KEM_KEY *) | | ossl_ml_kem_decap | 2 | const uint8_t * | @@ -27308,6 +32748,16 @@ getSignatureParameterName | (uint32_t *,SSL_CONNECTION *,int) | | ssl_set_sig_mask | 0 | uint32_t * | | (uint32_t *,SSL_CONNECTION *,int) | | ssl_set_sig_mask | 1 | SSL_CONNECTION * | | (uint32_t *,SSL_CONNECTION *,int) | | ssl_set_sig_mask | 2 | int | +| (uint32_t *,const IDNAMap *) | | get_map_data | 0 | uint32_t * | +| (uint32_t *,const IDNAMap *) | | get_map_data | 1 | const IDNAMap * | +| (uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t) | | nghttp2_hd_decode_length | 0 | uint32_t * | +| (uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t) | | nghttp2_hd_decode_length | 1 | size_t * | +| (uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t) | | nghttp2_hd_decode_length | 2 | int * | +| (uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t) | | nghttp2_hd_decode_length | 3 | uint32_t | +| (uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t) | | nghttp2_hd_decode_length | 4 | size_t | +| (uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t) | | nghttp2_hd_decode_length | 5 | uint8_t * | +| (uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t) | | nghttp2_hd_decode_length | 6 | uint8_t * | +| (uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t) | | nghttp2_hd_decode_length | 7 | size_t | | (uint32_t,uint32_t *,uint32_t *) | | ossl_ml_dsa_key_compress_power2_round | 0 | uint32_t | | (uint32_t,uint32_t *,uint32_t *) | | ossl_ml_dsa_key_compress_power2_round | 1 | uint32_t * | | (uint32_t,uint32_t *,uint32_t *) | | ossl_ml_dsa_key_compress_power2_round | 2 | uint32_t * | @@ -27348,17 +32798,31 @@ getSignatureParameterName | (uint64_t *,uint64_t,uint64_t *,CRYPTO_RWLOCK *) | | CRYPTO_atomic_or | 3 | CRYPTO_RWLOCK * | | (uint64_t,uint64_t *) | | ossl_adjust_domain_flags | 0 | uint64_t | | (uint64_t,uint64_t *) | | ossl_adjust_domain_flags | 1 | uint64_t * | +| (uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *) | | u32_normalize | 0 | uninorm_t | +| (uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *) | | u32_normalize | 1 | const uint32_t * | +| (uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *) | | u32_normalize | 2 | size_t | +| (uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *) | | u32_normalize | 3 | uint32_t * | +| (uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *) | | u32_normalize | 4 | uint32_t *__restrict__ | +| (uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *) | | u32_normalize | 5 | size_t * | | (unsigned char *) | CStringT | CStringT | 0 | unsigned char * | | (unsigned char **) | | ASN1_put_eoc | 0 | unsigned char ** | | (unsigned char **,X509_ALGOR *,ASN1_OCTET_STRING *,int) | | CMS_SharedInfo_encode | 0 | unsigned char ** | | (unsigned char **,X509_ALGOR *,ASN1_OCTET_STRING *,int) | | CMS_SharedInfo_encode | 1 | X509_ALGOR * | | (unsigned char **,X509_ALGOR *,ASN1_OCTET_STRING *,int) | | CMS_SharedInfo_encode | 2 | ASN1_OCTET_STRING * | | (unsigned char **,X509_ALGOR *,ASN1_OCTET_STRING *,int) | | CMS_SharedInfo_encode | 3 | int | +| (unsigned char **,const char *,size_t) | | _libssh2_store_str | 0 | unsigned char ** | +| (unsigned char **,const char *,size_t) | | _libssh2_store_str | 1 | const char * | +| (unsigned char **,const char *,size_t) | | _libssh2_store_str | 2 | size_t | +| (unsigned char **,const unsigned char *,size_t) | | _libssh2_store_bignum2_bytes | 0 | unsigned char ** | +| (unsigned char **,const unsigned char *,size_t) | | _libssh2_store_bignum2_bytes | 1 | const unsigned char * | +| (unsigned char **,const unsigned char *,size_t) | | _libssh2_store_bignum2_bytes | 2 | size_t | | (unsigned char **,int,int,int,int) | | ASN1_put_object | 0 | unsigned char ** | | (unsigned char **,int,int,int,int) | | ASN1_put_object | 1 | int | | (unsigned char **,int,int,int,int) | | ASN1_put_object | 2 | int | | (unsigned char **,int,int,int,int) | | ASN1_put_object | 3 | int | | (unsigned char **,int,int,int,int) | | ASN1_put_object | 4 | int | +| (unsigned char **,libssh2_uint64_t) | | _libssh2_store_u64 | 0 | unsigned char ** | +| (unsigned char **,libssh2_uint64_t) | | _libssh2_store_u64 | 1 | libssh2_uint64_t | | (unsigned char **,long *,char **,const char *,BIO *,pem_password_cb *,void *) | | PEM_bytes_read_bio | 0 | unsigned char ** | | (unsigned char **,long *,char **,const char *,BIO *,pem_password_cb *,void *) | | PEM_bytes_read_bio | 1 | long * | | (unsigned char **,long *,char **,const char *,BIO *,pem_password_cb *,void *) | | PEM_bytes_read_bio | 2 | char ** | @@ -27375,10 +32839,22 @@ getSignatureParameterName | (unsigned char **,long *,char **,const char *,BIO *,pem_password_cb *,void *) | | PEM_bytes_read_bio_secmem | 6 | void * | | (unsigned char **,long) | | ASN1_check_infinite_end | 0 | unsigned char ** | | (unsigned char **,long) | | ASN1_check_infinite_end | 1 | long | +| (unsigned char **,size_t *) | | _libssh2_pem_decode_sequence | 0 | unsigned char ** | +| (unsigned char **,size_t *) | | _libssh2_pem_decode_sequence | 1 | size_t * | | (unsigned char **,size_t *,const EC_POINT *,const EC_KEY *) | | ossl_ecdh_simple_compute_key | 0 | unsigned char ** | | (unsigned char **,size_t *,const EC_POINT *,const EC_KEY *) | | ossl_ecdh_simple_compute_key | 1 | size_t * | | (unsigned char **,size_t *,const EC_POINT *,const EC_KEY *) | | ossl_ecdh_simple_compute_key | 2 | const EC_POINT * | | (unsigned char **,size_t *,const EC_POINT *,const EC_KEY *) | | ossl_ecdh_simple_compute_key | 3 | const EC_KEY * | +| (unsigned char **,size_t *,unsigned char **,unsigned int *) | | _libssh2_pem_decode_integer | 0 | unsigned char ** | +| (unsigned char **,size_t *,unsigned char **,unsigned int *) | | _libssh2_pem_decode_integer | 1 | size_t * | +| (unsigned char **,size_t *,unsigned char **,unsigned int *) | | _libssh2_pem_decode_integer | 2 | unsigned char ** | +| (unsigned char **,size_t *,unsigned char **,unsigned int *) | | _libssh2_pem_decode_integer | 3 | unsigned int * | +| (unsigned char **,uint32_t) | | _libssh2_store_u32 | 0 | unsigned char ** | +| (unsigned char **,uint32_t) | | _libssh2_store_u32 | 1 | uint32_t | +| (unsigned char **,unsigned char *,const unsigned char *,unsigned int) | | nghttp2_select_next_protocol | 0 | unsigned char ** | +| (unsigned char **,unsigned char *,const unsigned char *,unsigned int) | | nghttp2_select_next_protocol | 1 | unsigned char * | +| (unsigned char **,unsigned char *,const unsigned char *,unsigned int) | | nghttp2_select_next_protocol | 2 | const unsigned char * | +| (unsigned char **,unsigned char *,const unsigned char *,unsigned int) | | nghttp2_select_next_protocol | 3 | unsigned int | | (unsigned char **,unsigned char *,const unsigned char *,unsigned int,const unsigned char *,unsigned int) | | SSL_select_next_proto | 0 | unsigned char ** | | (unsigned char **,unsigned char *,const unsigned char *,unsigned int,const unsigned char *,unsigned int) | | SSL_select_next_proto | 1 | unsigned char * | | (unsigned char **,unsigned char *,const unsigned char *,unsigned int,const unsigned char *,unsigned int) | | SSL_select_next_proto | 2 | const unsigned char * | @@ -27424,6 +32900,10 @@ getSignatureParameterName | (unsigned char *,const BIGNUM *,DH *) | | ossl_dh_compute_key | 2 | DH * | | (unsigned char *,const char *) | | ossl_a2i_ipadd | 0 | unsigned char * | | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | const char * | +| (unsigned char *,const unsigned char *,const unsigned char *,size_t) | | _libssh2_xor_data | 0 | unsigned char * | +| (unsigned char *,const unsigned char *,const unsigned char *,size_t) | | _libssh2_xor_data | 1 | const unsigned char * | +| (unsigned char *,const unsigned char *,const unsigned char *,size_t) | | _libssh2_xor_data | 2 | const unsigned char * | +| (unsigned char *,const unsigned char *,const unsigned char *,size_t) | | _libssh2_xor_data | 3 | size_t | | (unsigned char *,const unsigned char *,int) | | EVP_DecodeBlock | 0 | unsigned char * | | (unsigned char *,const unsigned char *,int) | | EVP_DecodeBlock | 1 | const unsigned char * | | (unsigned char *,const unsigned char *,int) | | EVP_DecodeBlock | 2 | int | @@ -27562,9 +33042,43 @@ getSignatureParameterName | (unsigned char *,size_t *,size_t,const unsigned char **,size_t *) | | ossl_cipher_trailingdata | 2 | size_t | | (unsigned char *,size_t *,size_t,const unsigned char **,size_t *) | | ossl_cipher_trailingdata | 3 | const unsigned char ** | | (unsigned char *,size_t *,size_t,const unsigned char **,size_t *) | | ossl_cipher_trailingdata | 4 | size_t * | +| (unsigned char *,size_t,const unsigned char *,size_t) | | _libssh2_kex_agree_instr | 0 | unsigned char * | +| (unsigned char *,size_t,const unsigned char *,size_t) | | _libssh2_kex_agree_instr | 1 | size_t | +| (unsigned char *,size_t,const unsigned char *,size_t) | | _libssh2_kex_agree_instr | 2 | const unsigned char * | +| (unsigned char *,size_t,const unsigned char *,size_t) | | _libssh2_kex_agree_instr | 3 | size_t | +| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **) | | Curl_ssl_session_create | 0 | unsigned char * | +| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **) | | Curl_ssl_session_create | 1 | size_t | +| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **) | | Curl_ssl_session_create | 2 | int | +| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **) | | Curl_ssl_session_create | 3 | const char * | +| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **) | | Curl_ssl_session_create | 4 | curl_off_t | +| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **) | | Curl_ssl_session_create | 5 | size_t | +| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **) | | Curl_ssl_session_create | 6 | Curl_ssl_session ** | +| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **) | | Curl_ssl_session_create2 | 0 | unsigned char * | +| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **) | | Curl_ssl_session_create2 | 1 | size_t | +| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **) | | Curl_ssl_session_create2 | 2 | int | +| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **) | | Curl_ssl_session_create2 | 3 | const char * | +| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **) | | Curl_ssl_session_create2 | 4 | curl_off_t | +| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **) | | Curl_ssl_session_create2 | 5 | size_t | +| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **) | | Curl_ssl_session_create2 | 6 | unsigned char * | +| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **) | | Curl_ssl_session_create2 | 7 | size_t | +| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **) | | Curl_ssl_session_create2 | 8 | Curl_ssl_session ** | +| (unsigned char *,size_t,scan_ctx *) | | helpscan | 0 | unsigned char * | +| (unsigned char *,size_t,scan_ctx *) | | helpscan | 1 | size_t | +| (unsigned char *,size_t,scan_ctx *) | | helpscan | 2 | scan_ctx * | +| (unsigned char *,uint32_t) | | _libssh2_htonu32 | 0 | unsigned char * | +| (unsigned char *,uint32_t) | | _libssh2_htonu32 | 1 | uint32_t | | (unsigned char *,uint64_t,int) | | ossl_i2c_uint64_int | 0 | unsigned char * | | (unsigned char *,uint64_t,int) | | ossl_i2c_uint64_int | 1 | uint64_t | | (unsigned char *,uint64_t,int) | | ossl_i2c_uint64_int | 2 | int | +| (unsigned char *,unsigned char *,ntlmdata *,unsigned char **,unsigned int *) | | Curl_ntlm_core_mk_ntlmv2_resp | 0 | unsigned char * | +| (unsigned char *,unsigned char *,ntlmdata *,unsigned char **,unsigned int *) | | Curl_ntlm_core_mk_ntlmv2_resp | 1 | unsigned char * | +| (unsigned char *,unsigned char *,ntlmdata *,unsigned char **,unsigned int *) | | Curl_ntlm_core_mk_ntlmv2_resp | 2 | ntlmdata * | +| (unsigned char *,unsigned char *,ntlmdata *,unsigned char **,unsigned int *) | | Curl_ntlm_core_mk_ntlmv2_resp | 3 | unsigned char ** | +| (unsigned char *,unsigned char *,ntlmdata *,unsigned char **,unsigned int *) | | Curl_ntlm_core_mk_ntlmv2_resp | 4 | unsigned int * | +| (unsigned char *,unsigned char *,unsigned char *,unsigned char *) | | Curl_ntlm_core_mk_lmv2_resp | 0 | unsigned char * | +| (unsigned char *,unsigned char *,unsigned char *,unsigned char *) | | Curl_ntlm_core_mk_lmv2_resp | 1 | unsigned char * | +| (unsigned char *,unsigned char *,unsigned char *,unsigned char *) | | Curl_ntlm_core_mk_lmv2_resp | 2 | unsigned char * | +| (unsigned char *,unsigned char *,unsigned char *,unsigned char *) | | Curl_ntlm_core_mk_lmv2_resp | 3 | unsigned char * | | (unsigned char *,void *) | | pitem_new | 0 | unsigned char * | | (unsigned char *,void *) | | pitem_new | 1 | void * | | (unsigned char) | | operator+= | 0 | unsigned char | @@ -27586,7 +33100,14 @@ getSignatureParameterName | (unsigned int *,const CAST_KEY *) | | CAST_encrypt | 0 | unsigned int * | | (unsigned int *,const CAST_KEY *) | | CAST_encrypt | 1 | const CAST_KEY * | | (unsigned int) | | Jim_IntHashFunction | 0 | unsigned int | +| (unsigned int) | | curlx_uitous | 0 | unsigned int | | (unsigned int) | | ssl3_get_cipher | 0 | unsigned int | +| (unsigned int,char *,size_t *) | | uv_if_indextoiid | 0 | unsigned int | +| (unsigned int,char *,size_t *) | | uv_if_indextoiid | 1 | char * | +| (unsigned int,char *,size_t *) | | uv_if_indextoiid | 2 | size_t * | +| (unsigned int,char *,size_t *) | | uv_if_indextoname | 0 | unsigned int | +| (unsigned int,char *,size_t *) | | uv_if_indextoname | 1 | char * | +| (unsigned int,char *,size_t *) | | uv_if_indextoname | 2 | size_t * | | (unsigned int,int,int) | | ossl_blob_length | 0 | unsigned int | | (unsigned int,int,int) | | ossl_blob_length | 1 | int | | (unsigned int,int,int) | | ossl_blob_length | 2 | int | @@ -27672,6 +33193,8 @@ getSignatureParameterName | (unsigned long *,unsigned long *,unsigned long *,int,unsigned long *) | | bn_mul_low_recursive | 4 | unsigned long * | | (unsigned long) | | BN_num_bits_word | 0 | unsigned long | | (unsigned long) | | BUF_MEM_new_ex | 0 | unsigned long | +| (unsigned long) | | curlx_ultouc | 0 | unsigned long | +| (unsigned long) | | curlx_ultous | 0 | unsigned long | | (unsigned long,BIGNUM *,BIGNUM *,int) | | BN_consttime_swap | 0 | unsigned long | | (unsigned long,BIGNUM *,BIGNUM *,int) | | BN_consttime_swap | 1 | BIGNUM * | | (unsigned long,BIGNUM *,BIGNUM *,int) | | BN_consttime_swap | 2 | BIGNUM * | @@ -27692,9 +33215,524 @@ getSignatureParameterName | (unsigned long[16],const unsigned long[16],const unsigned long[16],const unsigned long[16],const unsigned long[16],unsigned long) | | RSAZ_1024_mod_exp_avx2 | 5 | unsigned long | | (unsigned short,int) | | dtls1_get_queue_priority | 0 | unsigned short | | (unsigned short,int) | | dtls1_get_queue_priority | 1 | int | +| (uv__io_t *,uv__io_cb,int) | | uv__io_init | 0 | uv__io_t * | +| (uv__io_t *,uv__io_cb,int) | | uv__io_init | 1 | uv__io_cb | +| (uv__io_t *,uv__io_cb,int) | | uv__io_init | 2 | int | +| (uv_async_t *) | | uv__work_done | 0 | uv_async_t * | +| (uv_check_t *,uv_check_cb) | | uv_check_start | 0 | uv_check_t * | +| (uv_check_t *,uv_check_cb) | | uv_check_start | 1 | uv_check_cb | +| (uv_connect_t *,uv_pipe_t *,const char *,size_t,unsigned int,uv_connect_cb) | | uv_pipe_connect2 | 0 | uv_connect_t * | +| (uv_connect_t *,uv_pipe_t *,const char *,size_t,unsigned int,uv_connect_cb) | | uv_pipe_connect2 | 1 | uv_pipe_t * | +| (uv_connect_t *,uv_pipe_t *,const char *,size_t,unsigned int,uv_connect_cb) | | uv_pipe_connect2 | 2 | const char * | +| (uv_connect_t *,uv_pipe_t *,const char *,size_t,unsigned int,uv_connect_cb) | | uv_pipe_connect2 | 3 | size_t | +| (uv_connect_t *,uv_pipe_t *,const char *,size_t,unsigned int,uv_connect_cb) | | uv_pipe_connect2 | 4 | unsigned int | +| (uv_connect_t *,uv_pipe_t *,const char *,size_t,unsigned int,uv_connect_cb) | | uv_pipe_connect2 | 5 | uv_connect_cb | +| (uv_connect_t *,uv_pipe_t *,const char *,uv_connect_cb) | | uv_pipe_connect | 0 | uv_connect_t * | +| (uv_connect_t *,uv_pipe_t *,const char *,uv_connect_cb) | | uv_pipe_connect | 1 | uv_pipe_t * | +| (uv_connect_t *,uv_pipe_t *,const char *,uv_connect_cb) | | uv_pipe_connect | 2 | const char * | +| (uv_connect_t *,uv_pipe_t *,const char *,uv_connect_cb) | | uv_pipe_connect | 3 | uv_connect_cb | +| (uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb) | | uv__tcp_connect | 0 | uv_connect_t * | +| (uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb) | | uv__tcp_connect | 1 | uv_tcp_t * | +| (uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb) | | uv__tcp_connect | 2 | const sockaddr * | +| (uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb) | | uv__tcp_connect | 3 | unsigned int | +| (uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb) | | uv__tcp_connect | 4 | uv_connect_cb | +| (uv_connect_t *,uv_tcp_t *,const sockaddr *,uv_connect_cb) | | uv_tcp_connect | 0 | uv_connect_t * | +| (uv_connect_t *,uv_tcp_t *,const sockaddr *,uv_connect_cb) | | uv_tcp_connect | 1 | uv_tcp_t * | +| (uv_connect_t *,uv_tcp_t *,const sockaddr *,uv_connect_cb) | | uv_tcp_connect | 2 | const sockaddr * | +| (uv_connect_t *,uv_tcp_t *,const sockaddr *,uv_connect_cb) | | uv_tcp_connect | 3 | uv_connect_cb | +| (uv_cpu_info_t **,int *) | | uv_cpu_info | 0 | uv_cpu_info_t ** | +| (uv_cpu_info_t **,int *) | | uv_cpu_info | 1 | int * | +| (uv_env_item_t **,int *) | | uv_os_environ | 0 | uv_env_item_t ** | +| (uv_env_item_t **,int *) | | uv_os_environ | 1 | int * | +| (uv_env_item_t *,int) | | uv_os_free_environ | 0 | uv_env_item_t * | +| (uv_env_item_t *,int) | | uv_os_free_environ | 1 | int | +| (uv_fs_event_t *,char *,size_t *) | | uv_fs_event_getpath | 0 | uv_fs_event_t * | +| (uv_fs_event_t *,char *,size_t *) | | uv_fs_event_getpath | 1 | char * | +| (uv_fs_event_t *,char *,size_t *) | | uv_fs_event_getpath | 2 | size_t * | +| (uv_fs_event_t *,uv_fs_event_cb,const char *,unsigned int) | | uv_fs_event_start | 0 | uv_fs_event_t * | +| (uv_fs_event_t *,uv_fs_event_cb,const char *,unsigned int) | | uv_fs_event_start | 1 | uv_fs_event_cb | +| (uv_fs_event_t *,uv_fs_event_cb,const char *,unsigned int) | | uv_fs_event_start | 2 | const char * | +| (uv_fs_event_t *,uv_fs_event_cb,const char *,unsigned int) | | uv_fs_event_start | 3 | unsigned int | +| (uv_fs_poll_t *) | | uv__fs_poll_close | 0 | uv_fs_poll_t * | +| (uv_fs_poll_t *,char *,size_t *) | | uv_fs_poll_getpath | 0 | uv_fs_poll_t * | +| (uv_fs_poll_t *,char *,size_t *) | | uv_fs_poll_getpath | 1 | char * | +| (uv_fs_poll_t *,char *,size_t *) | | uv_fs_poll_getpath | 2 | size_t * | +| (uv_fs_poll_t *,uv_fs_poll_cb,const char *,unsigned int) | | uv_fs_poll_start | 0 | uv_fs_poll_t * | +| (uv_fs_poll_t *,uv_fs_poll_cb,const char *,unsigned int) | | uv_fs_poll_start | 1 | uv_fs_poll_cb | +| (uv_fs_poll_t *,uv_fs_poll_cb,const char *,unsigned int) | | uv_fs_poll_start | 2 | const char * | +| (uv_fs_poll_t *,uv_fs_poll_cb,const char *,unsigned int) | | uv_fs_poll_start | 3 | unsigned int | +| (uv_fs_t *) | | uv_fs_get_statbuf | 0 | uv_fs_t * | +| (uv_fs_t *,uv_dirent_t *) | | uv_fs_scandir_next | 0 | uv_fs_t * | +| (uv_fs_t *,uv_dirent_t *) | | uv_fs_scandir_next | 1 | uv_dirent_t * | +| (uv_handle_t *) | | uv__make_close_pending | 0 | uv_handle_t * | +| (uv_handle_t *,int *) | | uv_recv_buffer_size | 0 | uv_handle_t * | +| (uv_handle_t *,int *) | | uv_recv_buffer_size | 1 | int * | +| (uv_handle_t *,int *) | | uv_send_buffer_size | 0 | uv_handle_t * | +| (uv_handle_t *,int *) | | uv_send_buffer_size | 1 | int * | +| (uv_handle_t *,int,int *) | | uv__socket_sockopt | 0 | uv_handle_t * | +| (uv_handle_t *,int,int *) | | uv__socket_sockopt | 1 | int | +| (uv_handle_t *,int,int *) | | uv__socket_sockopt | 2 | int * | +| (uv_handle_t *,uv_close_cb) | | uv_close | 0 | uv_handle_t * | +| (uv_handle_t *,uv_close_cb) | | uv_close | 1 | uv_close_cb | +| (uv_handle_t *,void *) | | uv_handle_set_data | 0 | uv_handle_t * | +| (uv_handle_t *,void *) | | uv_handle_set_data | 1 | void * | +| (uv_idle_t *,uv_idle_cb) | | uv_idle_start | 0 | uv_idle_t * | +| (uv_idle_t *,uv_idle_cb) | | uv_idle_start | 1 | uv_idle_cb | +| (uv_interface_address_t **,int *) | | uv_interface_addresses | 0 | uv_interface_address_t ** | +| (uv_interface_address_t **,int *) | | uv_interface_addresses | 1 | int * | +| (uv_key_t *) | | uv_key_delete | 0 | uv_key_t * | +| (uv_key_t *) | | uv_key_get | 0 | uv_key_t * | +| (uv_key_t *,void *) | | uv_key_set | 0 | uv_key_t * | +| (uv_key_t *,void *) | | uv_key_set | 1 | void * | +| (uv_lib_t *,const char *,void **) | | uv_dlsym | 0 | uv_lib_t * | +| (uv_lib_t *,const char *,void **) | | uv_dlsym | 1 | const char * | +| (uv_lib_t *,const char *,void **) | | uv_dlsym | 2 | void ** | +| (uv_loop_t *) | | uv__process_init | 0 | uv_loop_t * | +| (uv_loop_t *) | | uv_loop_init | 0 | uv_loop_t * | +| (uv_loop_t *,FILE *) | | uv_print_active_handles | 0 | uv_loop_t * | +| (uv_loop_t *,FILE *) | | uv_print_active_handles | 1 | FILE * | +| (uv_loop_t *,FILE *) | | uv_print_all_handles | 0 | uv_loop_t * | +| (uv_loop_t *,FILE *) | | uv_print_all_handles | 1 | FILE * | +| (uv_loop_t *,uv__io_t *) | | uv__io_close | 0 | uv_loop_t * | +| (uv_loop_t *,uv__io_t *) | | uv__io_close | 1 | uv__io_t * | +| (uv_loop_t *,uv__io_t *) | | uv__io_feed | 0 | uv_loop_t * | +| (uv_loop_t *,uv__io_t *) | | uv__io_feed | 1 | uv__io_t * | +| (uv_loop_t *,uv__io_t *,unsigned int) | | uv__io_start | 0 | uv_loop_t * | +| (uv_loop_t *,uv__io_t *,unsigned int) | | uv__io_start | 1 | uv__io_t * | +| (uv_loop_t *,uv__io_t *,unsigned int) | | uv__io_start | 2 | unsigned int | +| (uv_loop_t *,uv__io_t *,unsigned int) | | uv__io_stop | 0 | uv_loop_t * | +| (uv_loop_t *,uv__io_t *,unsigned int) | | uv__io_stop | 1 | uv__io_t * | +| (uv_loop_t *,uv__io_t *,unsigned int) | | uv__io_stop | 2 | unsigned int | +| (uv_loop_t *,uv__io_t *,unsigned int) | | uv__server_io | 0 | uv_loop_t * | +| (uv_loop_t *,uv__io_t *,unsigned int) | | uv__server_io | 1 | uv__io_t * | +| (uv_loop_t *,uv__io_t *,unsigned int) | | uv__server_io | 2 | unsigned int | +| (uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int) | | uv__io_init_start | 0 | uv_loop_t * | +| (uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int) | | uv__io_init_start | 1 | uv__io_t * | +| (uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int) | | uv__io_init_start | 2 | uv__io_cb | +| (uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int) | | uv__io_init_start | 3 | int | +| (uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int) | | uv__io_init_start | 4 | unsigned int | +| (uv_loop_t *,uv__work *,uv__work_kind,..(*)(..),..(*)(..)) | | uv__work_submit | 0 | uv_loop_t * | +| (uv_loop_t *,uv__work *,uv__work_kind,..(*)(..),..(*)(..)) | | uv__work_submit | 1 | uv__work * | +| (uv_loop_t *,uv__work *,uv__work_kind,..(*)(..),..(*)(..)) | | uv__work_submit | 2 | uv__work_kind | +| (uv_loop_t *,uv__work *,uv__work_kind,..(*)(..),..(*)(..)) | | uv__work_submit | 3 | ..(*)(..) | +| (uv_loop_t *,uv__work *,uv__work_kind,..(*)(..),..(*)(..)) | | uv__work_submit | 4 | ..(*)(..) | +| (uv_loop_t *,uv_async_t *,uv_async_cb) | | uv_async_init | 0 | uv_loop_t * | +| (uv_loop_t *,uv_async_t *,uv_async_cb) | | uv_async_init | 1 | uv_async_t * | +| (uv_loop_t *,uv_async_t *,uv_async_cb) | | uv_async_init | 2 | uv_async_cb | +| (uv_loop_t *,uv_check_t *) | | uv_check_init | 0 | uv_loop_t * | +| (uv_loop_t *,uv_check_t *) | | uv_check_init | 1 | uv_check_t * | +| (uv_loop_t *,uv_fs_event_t *) | | uv_fs_event_init | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_event_t *) | | uv_fs_event_init | 1 | uv_fs_event_t * | +| (uv_loop_t *,uv_fs_poll_t *) | | uv_fs_poll_init | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_poll_t *) | | uv_fs_poll_init | 1 | uv_fs_poll_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__fs_post | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__fs_post | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_close | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_close | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_ftruncate | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_ftruncate | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_link | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_link | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_mkdir | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_mkdir | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_open | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_open | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_rename | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_rename | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_symlink | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_symlink | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_unlink | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_unlink | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_copyfile | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_copyfile | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_copyfile | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_copyfile | 3 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_copyfile | 4 | int | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_copyfile | 5 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_symlink | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_symlink | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_symlink | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_symlink | 3 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_symlink | 4 | int | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_symlink | 5 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb) | | uv_fs_link | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb) | | uv_fs_link | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb) | | uv_fs_link | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb) | | uv_fs_link | 3 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb) | | uv_fs_link | 4 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb) | | uv_fs_rename | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb) | | uv_fs_rename | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb) | | uv_fs_rename | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb) | | uv_fs_rename | 3 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb) | | uv_fs_rename | 4 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_lutime | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_lutime | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_lutime | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_lutime | 3 | double | +| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_lutime | 4 | double | +| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_lutime | 5 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_utime | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_utime | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_utime | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_utime | 3 | double | +| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_utime | 4 | double | +| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_utime | 5 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb) | | uv_fs_open | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb) | | uv_fs_open | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb) | | uv_fs_open | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb) | | uv_fs_open | 3 | int | +| (uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb) | | uv_fs_open | 4 | int | +| (uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb) | | uv_fs_open | 5 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_access | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_access | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_access | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_access | 3 | int | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_access | 4 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_chmod | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_chmod | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_chmod | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_chmod | 3 | int | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_chmod | 4 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_mkdir | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_mkdir | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_mkdir | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_mkdir | 3 | int | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_mkdir | 4 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_scandir | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_scandir | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_scandir | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_scandir | 3 | int | +| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_scandir | 4 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_lstat | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_lstat | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_lstat | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_lstat | 3 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_mkdtemp | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_mkdtemp | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_mkdtemp | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_mkdtemp | 3 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_mkstemp | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_mkstemp | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_mkstemp | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_mkstemp | 3 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_opendir | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_opendir | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_opendir | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_opendir | 3 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_readlink | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_readlink | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_readlink | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_readlink | 3 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_realpath | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_realpath | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_realpath | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_realpath | 3 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_rmdir | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_rmdir | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_rmdir | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_rmdir | 3 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_stat | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_stat | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_stat | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_stat | 3 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_statfs | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_statfs | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_statfs | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_statfs | 3 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_unlink | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_unlink | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_unlink | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_unlink | 3 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_chown | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_chown | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_chown | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_chown | 3 | uv_uid_t | +| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_chown | 4 | uv_gid_t | +| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_chown | 5 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_lchown | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_lchown | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_lchown | 2 | const char * | +| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_lchown | 3 | uv_uid_t | +| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_lchown | 4 | uv_gid_t | +| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_lchown | 5 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,int) | | uv__iou_fs_read_or_write | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,int) | | uv__iou_fs_read_or_write | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,int) | | uv__iou_fs_read_or_write | 2 | int | +| (uv_loop_t *,uv_fs_t *,int,int) | | uv__iou_fs_statx | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,int,int) | | uv__iou_fs_statx | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,int,int) | | uv__iou_fs_statx | 2 | int | +| (uv_loop_t *,uv_fs_t *,int,int) | | uv__iou_fs_statx | 3 | int | +| (uv_loop_t *,uv_fs_t *,uint32_t) | | uv__iou_fs_fsync_or_fdatasync | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,uint32_t) | | uv__iou_fs_fsync_or_fdatasync | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,uint32_t) | | uv__iou_fs_fsync_or_fdatasync | 2 | uint32_t | +| (uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb) | | uv_fs_closedir | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb) | | uv_fs_closedir | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb) | | uv_fs_closedir | 2 | uv_dir_t * | +| (uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb) | | uv_fs_closedir | 3 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb) | | uv_fs_readdir | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb) | | uv_fs_readdir | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb) | | uv_fs_readdir | 2 | uv_dir_t * | +| (uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb) | | uv_fs_readdir | 3 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_read | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_read | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_read | 2 | uv_file | +| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_read | 3 | const uv_buf_t[] | +| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_read | 4 | unsigned int | +| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_read | 5 | int64_t | +| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_read | 6 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_write | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_write | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_write | 2 | uv_file | +| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_write | 3 | const uv_buf_t[] | +| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_write | 4 | unsigned int | +| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_write | 5 | int64_t | +| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_write | 6 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb) | | uv_fs_futime | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb) | | uv_fs_futime | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb) | | uv_fs_futime | 2 | uv_file | +| (uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb) | | uv_fs_futime | 3 | double | +| (uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb) | | uv_fs_futime | 4 | double | +| (uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb) | | uv_fs_futime | 5 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,uv_file,int64_t,uv_fs_cb) | | uv_fs_ftruncate | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,int64_t,uv_fs_cb) | | uv_fs_ftruncate | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,int64_t,uv_fs_cb) | | uv_fs_ftruncate | 2 | uv_file | +| (uv_loop_t *,uv_fs_t *,uv_file,int64_t,uv_fs_cb) | | uv_fs_ftruncate | 3 | int64_t | +| (uv_loop_t *,uv_fs_t *,uv_file,int64_t,uv_fs_cb) | | uv_fs_ftruncate | 4 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,uv_file,int,uv_fs_cb) | | uv_fs_fchmod | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,int,uv_fs_cb) | | uv_fs_fchmod | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,int,uv_fs_cb) | | uv_fs_fchmod | 2 | uv_file | +| (uv_loop_t *,uv_fs_t *,uv_file,int,uv_fs_cb) | | uv_fs_fchmod | 3 | int | +| (uv_loop_t *,uv_fs_t *,uv_file,int,uv_fs_cb) | | uv_fs_fchmod | 4 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb) | | uv_fs_sendfile | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb) | | uv_fs_sendfile | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb) | | uv_fs_sendfile | 2 | uv_file | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb) | | uv_fs_sendfile | 3 | uv_file | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb) | | uv_fs_sendfile | 4 | int64_t | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb) | | uv_fs_sendfile | 5 | size_t | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb) | | uv_fs_sendfile | 6 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_close | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_close | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_close | 2 | uv_file | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_close | 3 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fdatasync | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fdatasync | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fdatasync | 2 | uv_file | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fdatasync | 3 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fstat | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fstat | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fstat | 2 | uv_file | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fstat | 3 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fsync | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fsync | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fsync | 2 | uv_file | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fsync | 3 | uv_fs_cb | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_fchown | 0 | uv_loop_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_fchown | 1 | uv_fs_t * | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_fchown | 2 | uv_file | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_fchown | 3 | uv_uid_t | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_fchown | 4 | uv_gid_t | +| (uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_fchown | 5 | uv_fs_cb | +| (uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *) | | uv_getaddrinfo | 0 | uv_loop_t * | +| (uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *) | | uv_getaddrinfo | 1 | uv_getaddrinfo_t * | +| (uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *) | | uv_getaddrinfo | 2 | uv_getaddrinfo_cb | +| (uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *) | | uv_getaddrinfo | 3 | const char * | +| (uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *) | | uv_getaddrinfo | 4 | const char * | +| (uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *) | | uv_getaddrinfo | 5 | const addrinfo * | +| (uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int) | | uv_getnameinfo | 0 | uv_loop_t * | +| (uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int) | | uv_getnameinfo | 1 | uv_getnameinfo_t * | +| (uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int) | | uv_getnameinfo | 2 | uv_getnameinfo_cb | +| (uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int) | | uv_getnameinfo | 3 | const sockaddr * | +| (uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int) | | uv_getnameinfo | 4 | int | +| (uv_loop_t *,uv_idle_t *) | | uv_idle_init | 0 | uv_loop_t * | +| (uv_loop_t *,uv_idle_t *) | | uv_idle_init | 1 | uv_idle_t * | +| (uv_loop_t *,uv_loop_option,va_list) | | uv__loop_configure | 0 | uv_loop_t * | +| (uv_loop_t *,uv_loop_option,va_list) | | uv__loop_configure | 1 | uv_loop_option | +| (uv_loop_t *,uv_loop_option,va_list) | | uv__loop_configure | 2 | va_list | +| (uv_loop_t *,uv_pipe_t *,int) | | uv_pipe_init | 0 | uv_loop_t * | +| (uv_loop_t *,uv_pipe_t *,int) | | uv_pipe_init | 1 | uv_pipe_t * | +| (uv_loop_t *,uv_pipe_t *,int) | | uv_pipe_init | 2 | int | +| (uv_loop_t *,uv_poll_t *,int) | | uv_poll_init | 0 | uv_loop_t * | +| (uv_loop_t *,uv_poll_t *,int) | | uv_poll_init | 1 | uv_poll_t * | +| (uv_loop_t *,uv_poll_t *,int) | | uv_poll_init | 2 | int | +| (uv_loop_t *,uv_poll_t *,uv_os_sock_t) | | uv_poll_init_socket | 0 | uv_loop_t * | +| (uv_loop_t *,uv_poll_t *,uv_os_sock_t) | | uv_poll_init_socket | 1 | uv_poll_t * | +| (uv_loop_t *,uv_poll_t *,uv_os_sock_t) | | uv_poll_init_socket | 2 | uv_os_sock_t | +| (uv_loop_t *,uv_prepare_t *) | | uv_prepare_init | 0 | uv_loop_t * | +| (uv_loop_t *,uv_prepare_t *) | | uv_prepare_init | 1 | uv_prepare_t * | +| (uv_loop_t *,uv_process_t *,const uv_process_options_t *) | | uv_spawn | 0 | uv_loop_t * | +| (uv_loop_t *,uv_process_t *,const uv_process_options_t *) | | uv_spawn | 1 | uv_process_t * | +| (uv_loop_t *,uv_process_t *,const uv_process_options_t *) | | uv_spawn | 2 | const uv_process_options_t * | +| (uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb) | | uv_random | 0 | uv_loop_t * | +| (uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb) | | uv_random | 1 | uv_random_t * | +| (uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb) | | uv_random | 2 | void * | +| (uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb) | | uv_random | 3 | size_t | +| (uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb) | | uv_random | 4 | unsigned int | +| (uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb) | | uv_random | 5 | uv_random_cb | +| (uv_loop_t *,uv_signal_t *) | | uv_signal_init | 0 | uv_loop_t * | +| (uv_loop_t *,uv_signal_t *) | | uv_signal_init | 1 | uv_signal_t * | +| (uv_loop_t *,uv_stream_t *,uv_handle_type) | | uv__stream_init | 0 | uv_loop_t * | +| (uv_loop_t *,uv_stream_t *,uv_handle_type) | | uv__stream_init | 1 | uv_stream_t * | +| (uv_loop_t *,uv_stream_t *,uv_handle_type) | | uv__stream_init | 2 | uv_handle_type | +| (uv_loop_t *,uv_tcp_t *) | | uv_tcp_init | 0 | uv_loop_t * | +| (uv_loop_t *,uv_tcp_t *) | | uv_tcp_init | 1 | uv_tcp_t * | +| (uv_loop_t *,uv_tcp_t *,unsigned int) | | uv_tcp_init_ex | 0 | uv_loop_t * | +| (uv_loop_t *,uv_tcp_t *,unsigned int) | | uv_tcp_init_ex | 1 | uv_tcp_t * | +| (uv_loop_t *,uv_tcp_t *,unsigned int) | | uv_tcp_init_ex | 2 | unsigned int | +| (uv_loop_t *,uv_timer_t *) | | uv_timer_init | 0 | uv_loop_t * | +| (uv_loop_t *,uv_timer_t *) | | uv_timer_init | 1 | uv_timer_t * | +| (uv_loop_t *,uv_tty_t *,int,uv_file,int) | | uv_tty_init | 0 | uv_loop_t * | +| (uv_loop_t *,uv_tty_t *,int,uv_file,int) | | uv_tty_init | 1 | uv_tty_t * | +| (uv_loop_t *,uv_tty_t *,int,uv_file,int) | | uv_tty_init | 2 | int | +| (uv_loop_t *,uv_tty_t *,int,uv_file,int) | | uv_tty_init | 3 | uv_file | +| (uv_loop_t *,uv_tty_t *,int,uv_file,int) | | uv_tty_init | 4 | int | +| (uv_loop_t *,uv_udp_t *) | | uv_udp_init | 0 | uv_loop_t * | +| (uv_loop_t *,uv_udp_t *) | | uv_udp_init | 1 | uv_udp_t * | +| (uv_loop_t *,uv_udp_t *,unsigned int) | | uv_udp_init_ex | 0 | uv_loop_t * | +| (uv_loop_t *,uv_udp_t *,unsigned int) | | uv_udp_init_ex | 1 | uv_udp_t * | +| (uv_loop_t *,uv_udp_t *,unsigned int) | | uv_udp_init_ex | 2 | unsigned int | +| (uv_loop_t *,uv_udp_t *,unsigned int,int) | | uv__udp_init_ex | 0 | uv_loop_t * | +| (uv_loop_t *,uv_udp_t *,unsigned int,int) | | uv__udp_init_ex | 1 | uv_udp_t * | +| (uv_loop_t *,uv_udp_t *,unsigned int,int) | | uv__udp_init_ex | 2 | unsigned int | +| (uv_loop_t *,uv_udp_t *,unsigned int,int) | | uv__udp_init_ex | 3 | int | +| (uv_loop_t *,uv_work_t *,uv_work_cb,uv_after_work_cb) | | uv_queue_work | 0 | uv_loop_t * | +| (uv_loop_t *,uv_work_t *,uv_work_cb,uv_after_work_cb) | | uv_queue_work | 1 | uv_work_t * | +| (uv_loop_t *,uv_work_t *,uv_work_cb,uv_after_work_cb) | | uv_queue_work | 2 | uv_work_cb | +| (uv_loop_t *,uv_work_t *,uv_work_cb,uv_after_work_cb) | | uv_queue_work | 3 | uv_after_work_cb | +| (uv_loop_t *,void *) | | uv_loop_set_data | 0 | uv_loop_t * | +| (uv_loop_t *,void *) | | uv_loop_set_data | 1 | void * | +| (uv_os_fd_t) | | uv_open_osfhandle | 0 | uv_os_fd_t | +| (uv_pipe_t *) | | uv_pipe_pending_count | 0 | uv_pipe_t * | +| (uv_pipe_t *,const char *) | | uv_pipe_bind | 0 | uv_pipe_t * | +| (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | const char * | +| (uv_pipe_t *,const char *,size_t,unsigned int) | | uv_pipe_bind2 | 0 | uv_pipe_t * | +| (uv_pipe_t *,const char *,size_t,unsigned int) | | uv_pipe_bind2 | 1 | const char * | +| (uv_pipe_t *,const char *,size_t,unsigned int) | | uv_pipe_bind2 | 2 | size_t | +| (uv_pipe_t *,const char *,size_t,unsigned int) | | uv_pipe_bind2 | 3 | unsigned int | +| (uv_pipe_t *,int,uv_connection_cb) | | uv__pipe_listen | 0 | uv_pipe_t * | +| (uv_pipe_t *,int,uv_connection_cb) | | uv__pipe_listen | 1 | int | +| (uv_pipe_t *,int,uv_connection_cb) | | uv__pipe_listen | 2 | uv_connection_cb | +| (uv_pipe_t *,uv_file) | | uv_pipe_open | 0 | uv_pipe_t * | +| (uv_pipe_t *,uv_file) | | uv_pipe_open | 1 | uv_file | +| (uv_poll_t *,int,uv_poll_cb) | | uv_poll_start | 0 | uv_poll_t * | +| (uv_poll_t *,int,uv_poll_cb) | | uv_poll_start | 1 | int | +| (uv_poll_t *,int,uv_poll_cb) | | uv_poll_start | 2 | uv_poll_cb | +| (uv_prepare_t *,uv_prepare_cb) | | uv_prepare_start | 0 | uv_prepare_t * | +| (uv_prepare_t *,uv_prepare_cb) | | uv_prepare_start | 1 | uv_prepare_cb | +| (uv_req_t *,void *) | | uv_req_set_data | 0 | uv_req_t * | +| (uv_req_t *,void *) | | uv_req_set_data | 1 | void * | +| (uv_sem_t *) | | uv_sem_destroy | 0 | uv_sem_t * | +| (uv_sem_t *) | | uv_sem_post | 0 | uv_sem_t * | +| (uv_sem_t *) | | uv_sem_trywait | 0 | uv_sem_t * | +| (uv_sem_t *) | | uv_sem_wait | 0 | uv_sem_t * | +| (uv_shutdown_t *,uv_stream_t *,uv_shutdown_cb) | | uv_shutdown | 0 | uv_shutdown_t * | +| (uv_shutdown_t *,uv_stream_t *,uv_shutdown_cb) | | uv_shutdown | 1 | uv_stream_t * | +| (uv_shutdown_t *,uv_stream_t *,uv_shutdown_cb) | | uv_shutdown | 2 | uv_shutdown_cb | +| (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start | 0 | uv_signal_t * | +| (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start | 1 | uv_signal_cb | +| (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start | 2 | int | +| (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start_oneshot | 0 | uv_signal_t * | +| (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start_oneshot | 1 | uv_signal_cb | +| (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start_oneshot | 2 | int | +| (uv_stream_t *,int,int) | | uv__stream_open | 0 | uv_stream_t * | +| (uv_stream_t *,int,int) | | uv__stream_open | 1 | int | +| (uv_stream_t *,int,int) | | uv__stream_open | 2 | int | +| (uv_stream_t *,int,uv_connection_cb) | | uv_listen | 0 | uv_stream_t * | +| (uv_stream_t *,int,uv_connection_cb) | | uv_listen | 1 | int | +| (uv_stream_t *,int,uv_connection_cb) | | uv_listen | 2 | uv_connection_cb | +| (uv_stream_t *,uv_alloc_cb,uv_read_cb) | | uv__read_start | 0 | uv_stream_t * | +| (uv_stream_t *,uv_alloc_cb,uv_read_cb) | | uv__read_start | 1 | uv_alloc_cb | +| (uv_stream_t *,uv_alloc_cb,uv_read_cb) | | uv__read_start | 2 | uv_read_cb | +| (uv_stream_t *,uv_alloc_cb,uv_read_cb) | | uv_read_start | 0 | uv_stream_t * | +| (uv_stream_t *,uv_alloc_cb,uv_read_cb) | | uv_read_start | 1 | uv_alloc_cb | +| (uv_stream_t *,uv_alloc_cb,uv_read_cb) | | uv_read_start | 2 | uv_read_cb | +| (uv_stream_t *,uv_stream_t *) | | uv_accept | 0 | uv_stream_t * | +| (uv_stream_t *,uv_stream_t *) | | uv_accept | 1 | uv_stream_t * | +| (uv_tcp_t *,int,uv_connection_cb) | | uv__tcp_listen | 0 | uv_tcp_t * | +| (uv_tcp_t *,int,uv_connection_cb) | | uv__tcp_listen | 1 | int | +| (uv_tcp_t *,int,uv_connection_cb) | | uv__tcp_listen | 2 | uv_connection_cb | +| (uv_tcp_t *,uv_close_cb) | | uv_tcp_close_reset | 0 | uv_tcp_t * | +| (uv_tcp_t *,uv_close_cb) | | uv_tcp_close_reset | 1 | uv_close_cb | +| (uv_tcp_t *,uv_os_sock_t) | | uv_tcp_open | 0 | uv_tcp_t * | +| (uv_tcp_t *,uv_os_sock_t) | | uv_tcp_open | 1 | uv_os_sock_t | +| (uv_thread_t *) | | uv_thread_detach | 0 | uv_thread_t * | +| (uv_thread_t *) | | uv_thread_join | 0 | uv_thread_t * | +| (uv_thread_t *,char *,char *,size_t) | | uv_thread_setaffinity | 0 | uv_thread_t * | +| (uv_thread_t *,char *,char *,size_t) | | uv_thread_setaffinity | 1 | char * | +| (uv_thread_t *,char *,char *,size_t) | | uv_thread_setaffinity | 2 | char * | +| (uv_thread_t *,char *,char *,size_t) | | uv_thread_setaffinity | 3 | size_t | +| (uv_thread_t *,char *,size_t) | | uv__thread_getname | 0 | uv_thread_t * | +| (uv_thread_t *,char *,size_t) | | uv__thread_getname | 1 | char * | +| (uv_thread_t *,char *,size_t) | | uv__thread_getname | 2 | size_t | +| (uv_thread_t *,char *,size_t) | | uv_thread_getaffinity | 0 | uv_thread_t * | +| (uv_thread_t *,char *,size_t) | | uv_thread_getaffinity | 1 | char * | +| (uv_thread_t *,char *,size_t) | | uv_thread_getaffinity | 2 | size_t | +| (uv_thread_t *,char *,size_t) | | uv_thread_getname | 0 | uv_thread_t * | +| (uv_thread_t *,char *,size_t) | | uv_thread_getname | 1 | char * | +| (uv_thread_t *,char *,size_t) | | uv_thread_getname | 2 | size_t | +| (uv_timer_t *,uint64_t) | | uv_timer_set_repeat | 0 | uv_timer_t * | +| (uv_timer_t *,uint64_t) | | uv_timer_set_repeat | 1 | uint64_t | +| (uv_timer_t *,uv_timer_cb,uint64_t,uint64_t) | | uv_timer_start | 0 | uv_timer_t * | +| (uv_timer_t *,uv_timer_cb,uint64_t,uint64_t) | | uv_timer_start | 1 | uv_timer_cb | +| (uv_timer_t *,uv_timer_cb,uint64_t,uint64_t) | | uv_timer_start | 2 | uint64_t | +| (uv_timer_t *,uv_timer_cb,uint64_t,uint64_t) | | uv_timer_start | 3 | uint64_t | +| (uv_tty_t *,uv_tty_mode_t) | | uv_tty_set_mode | 0 | uv_tty_t * | +| (uv_tty_t *,uv_tty_mode_t) | | uv_tty_set_mode | 1 | uv_tty_mode_t | +| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb) | | uv__udp_send | 0 | uv_udp_send_t * | +| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb) | | uv__udp_send | 1 | uv_udp_t * | +| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb) | | uv__udp_send | 2 | const uv_buf_t[] | +| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb) | | uv__udp_send | 3 | unsigned int | +| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb) | | uv__udp_send | 4 | const sockaddr * | +| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb) | | uv__udp_send | 5 | unsigned int | +| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb) | | uv__udp_send | 6 | uv_udp_send_cb | +| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb) | | uv_udp_send | 0 | uv_udp_send_t * | +| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb) | | uv_udp_send | 1 | uv_udp_t * | +| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb) | | uv_udp_send | 2 | const uv_buf_t[] | +| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb) | | uv_udp_send | 3 | unsigned int | +| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb) | | uv_udp_send | 4 | const sockaddr * | +| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb) | | uv_udp_send | 5 | uv_udp_send_cb | +| (uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *) | | uv_udp_try_send | 0 | uv_udp_t * | +| (uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *) | | uv_udp_try_send | 1 | const uv_buf_t[] | +| (uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *) | | uv_udp_try_send | 2 | unsigned int | +| (uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *) | | uv_udp_try_send | 3 | const sockaddr * | +| (uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int) | | uv__udp_try_send | 0 | uv_udp_t * | +| (uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int) | | uv__udp_try_send | 1 | const uv_buf_t[] | +| (uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int) | | uv__udp_try_send | 2 | unsigned int | +| (uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int) | | uv__udp_try_send | 3 | const sockaddr * | +| (uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int) | | uv__udp_try_send | 4 | unsigned int | +| (uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[]) | | uv__udp_try_send2 | 0 | uv_udp_t * | +| (uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[]) | | uv__udp_try_send2 | 1 | unsigned int | +| (uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[]) | | uv__udp_try_send2 | 2 | uv_buf_t *[] | +| (uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[]) | | uv__udp_try_send2 | 3 | unsigned int[] | +| (uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[]) | | uv__udp_try_send2 | 4 | sockaddr *[] | +| (uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[],unsigned int) | | uv_udp_try_send2 | 0 | uv_udp_t * | +| (uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[],unsigned int) | | uv_udp_try_send2 | 1 | unsigned int | +| (uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[],unsigned int) | | uv_udp_try_send2 | 2 | uv_buf_t *[] | +| (uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[],unsigned int) | | uv_udp_try_send2 | 3 | unsigned int[] | +| (uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[],unsigned int) | | uv_udp_try_send2 | 4 | sockaddr *[] | +| (uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[],unsigned int) | | uv_udp_try_send2 | 5 | unsigned int | +| (uv_udp_t *,uv_alloc_cb,uv_udp_recv_cb) | | uv__udp_recv_start | 0 | uv_udp_t * | +| (uv_udp_t *,uv_alloc_cb,uv_udp_recv_cb) | | uv__udp_recv_start | 1 | uv_alloc_cb | +| (uv_udp_t *,uv_alloc_cb,uv_udp_recv_cb) | | uv__udp_recv_start | 2 | uv_udp_recv_cb | +| (uv_udp_t *,uv_alloc_cb,uv_udp_recv_cb) | | uv_udp_recv_start | 0 | uv_udp_t * | +| (uv_udp_t *,uv_alloc_cb,uv_udp_recv_cb) | | uv_udp_recv_start | 1 | uv_alloc_cb | +| (uv_udp_t *,uv_alloc_cb,uv_udp_recv_cb) | | uv_udp_recv_start | 2 | uv_udp_recv_cb | +| (uv_udp_t *,uv_os_sock_t) | | uv_udp_open | 0 | uv_udp_t * | +| (uv_udp_t *,uv_os_sock_t) | | uv_udp_open | 1 | uv_os_sock_t | +| (uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb) | | uv_write2 | 0 | uv_write_t * | +| (uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb) | | uv_write2 | 1 | uv_stream_t * | +| (uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb) | | uv_write2 | 2 | const uv_buf_t[] | +| (uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb) | | uv_write2 | 3 | unsigned int | +| (uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb) | | uv_write2 | 4 | uv_stream_t * | +| (uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb) | | uv_write2 | 5 | uv_write_cb | +| (uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb) | | uv_write | 0 | uv_write_t * | +| (uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb) | | uv_write | 1 | uv_stream_t * | +| (uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb) | | uv_write | 2 | const uv_buf_t[] | +| (uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb) | | uv_write | 3 | unsigned int | +| (uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb) | | uv_write | 4 | uv_write_cb | | (vector &&) | vector | vector | 0 | vector && | | (vector &&,const Allocator &) | vector | vector | 0 | vector && | | (vector &&,const Allocator &) | vector | vector | 1 | const class:1 & | +| (void *) | | Curl_cpool_upkeep | 0 | void * | | (void *) | | ossl_kdf_data_new | 0 | void * | | (void *,CRYPTO_THREAD_RETVAL *) | | ossl_crypto_thread_join | 0 | void * | | (void *,CRYPTO_THREAD_RETVAL *) | | ossl_crypto_thread_join | 1 | CRYPTO_THREAD_RETVAL * | @@ -27825,6 +33863,14 @@ getSignatureParameterName | (void *,const unsigned char *,unsigned char *,const unsigned char *,size_t,block128_f) | | CRYPTO_128_wrap_pad | 3 | const unsigned char * | | (void *,const unsigned char *,unsigned char *,const unsigned char *,size_t,block128_f) | | CRYPTO_128_wrap_pad | 4 | size_t | | (void *,const unsigned char *,unsigned char *,const unsigned char *,size_t,block128_f) | | CRYPTO_128_wrap_pad | 5 | block128_f | +| (void *,curl_off_t,curl_off_t,curl_off_t,curl_off_t) | | xferinfo_cb | 0 | void * | +| (void *,curl_off_t,curl_off_t,curl_off_t,curl_off_t) | | xferinfo_cb | 1 | curl_off_t | +| (void *,curl_off_t,curl_off_t,curl_off_t,curl_off_t) | | xferinfo_cb | 2 | curl_off_t | +| (void *,curl_off_t,curl_off_t,curl_off_t,curl_off_t) | | xferinfo_cb | 3 | curl_off_t | +| (void *,curl_off_t,curl_off_t,curl_off_t,curl_off_t) | | xferinfo_cb | 4 | curl_off_t | +| (void *,curl_off_t,int) | | tool_mime_stdin_seek | 0 | void * | +| (void *,curl_off_t,int) | | tool_mime_stdin_seek | 1 | curl_off_t | +| (void *,curl_off_t,int) | | tool_mime_stdin_seek | 2 | int | | (void *,int) | | DSO_dsobyaddr | 0 | void * | | (void *,int) | | DSO_dsobyaddr | 1 | int | | (void *,int) | | sqlite3_realloc | 0 | void * | @@ -27841,6 +33887,10 @@ getSignatureParameterName | (void *,int,size_t,size_t,size_t,uint64_t,const PROV_CIPHER_HW *) | | ossl_tdes_newctx | 6 | const PROV_CIPHER_HW * | | (void *,size_t) | | JimDefaultAllocator | 0 | void * | | (void *,size_t) | | JimDefaultAllocator | 1 | size_t | +| (void *,size_t) | | uv__random_devurandom | 0 | void * | +| (void *,size_t) | | uv__random_devurandom | 1 | size_t | +| (void *,size_t) | | uv__random_getrandom | 0 | void * | +| (void *,size_t) | | uv__random_getrandom | 1 | size_t | | (void *,size_t,const EC_POINT *,const EC_KEY *,..(*)(..)) | | ECDH_compute_key | 0 | void * | | (void *,size_t,const EC_POINT *,const EC_KEY *,..(*)(..)) | | ECDH_compute_key | 1 | size_t | | (void *,size_t,const EC_POINT *,const EC_KEY *,..(*)(..)) | | ECDH_compute_key | 2 | const EC_POINT * | @@ -27850,6 +33900,9 @@ getSignatureParameterName | (void *,size_t,const char *,int) | | CRYPTO_secure_clear_free | 1 | size_t | | (void *,size_t,const char *,int) | | CRYPTO_secure_clear_free | 2 | const char * | | (void *,size_t,const char *,int) | | CRYPTO_secure_clear_free | 3 | int | +| (void *,size_t,size_t) | | Curl_hash_str | 0 | void * | +| (void *,size_t,size_t) | | Curl_hash_str | 1 | size_t | +| (void *,size_t,size_t) | | Curl_hash_str | 2 | size_t | | (void *,size_t,size_t,const char *,int) | | CRYPTO_clear_realloc | 0 | void * | | (void *,size_t,size_t,const char *,int) | | CRYPTO_clear_realloc | 1 | size_t | | (void *,size_t,size_t,const char *,int) | | CRYPTO_clear_realloc | 2 | size_t | @@ -27964,6 +34017,14 @@ getSignatureParameterName | (void *,void *,const unsigned char *,size_t,const OSSL_PARAM[]) | | ossl_cipher_generic_skey_einit | 2 | const unsigned char * | | (void *,void *,const unsigned char *,size_t,const OSSL_PARAM[]) | | ossl_cipher_generic_skey_einit | 3 | size_t | | (void *,void *,const unsigned char *,size_t,const OSSL_PARAM[]) | | ossl_cipher_generic_skey_einit | 4 | const OSSL_PARAM[] | +| (voidp,z_size_t,z_size_t,gzFile) | | gzfread | 0 | voidp | +| (voidp,z_size_t,z_size_t,gzFile) | | gzfread | 1 | z_size_t | +| (voidp,z_size_t,z_size_t,gzFile) | | gzfread | 2 | z_size_t | +| (voidp,z_size_t,z_size_t,gzFile) | | gzfread | 3 | gzFile | +| (voidpc,z_size_t,z_size_t,gzFile) | | gzfwrite | 0 | voidpc | +| (voidpc,z_size_t,z_size_t,gzFile) | | gzfwrite | 1 | z_size_t | +| (voidpc,z_size_t,z_size_t,gzFile) | | gzfwrite | 2 | z_size_t | +| (voidpc,z_size_t,z_size_t,gzFile) | | gzfwrite | 3 | gzFile | | (wchar_t *) | CStringT | CStringT | 0 | wchar_t * | | (wchar_t) | | operator+= | 0 | wchar_t | | (wchar_t) | CComBSTR | Append | 0 | wchar_t | @@ -27974,6 +34035,33 @@ getSignatureParameterName | (wchar_t,const CStringT &) | | operator+ | 1 | const CStringT & | | (wchar_t,int) | CStringT | CStringT | 0 | wchar_t | | (wchar_t,int) | CStringT | CStringT | 1 | int | +| (z_streamp) | | deflateResetKeep | 0 | z_streamp | +| (z_streamp) | | inflateCodesUsed | 0 | z_streamp | +| (z_streamp) | | inflateMark | 0 | z_streamp | +| (z_streamp,Bytef *,uInt *) | | deflateGetDictionary | 0 | z_streamp | +| (z_streamp,Bytef *,uInt *) | | deflateGetDictionary | 1 | Bytef * | +| (z_streamp,Bytef *,uInt *) | | deflateGetDictionary | 2 | uInt * | +| (z_streamp,Bytef *,uInt *) | | inflateGetDictionary | 0 | z_streamp | +| (z_streamp,Bytef *,uInt *) | | inflateGetDictionary | 1 | Bytef * | +| (z_streamp,Bytef *,uInt *) | | inflateGetDictionary | 2 | uInt * | +| (z_streamp,const Bytef *,uInt) | | deflateSetDictionary | 0 | z_streamp | +| (z_streamp,const Bytef *,uInt) | | deflateSetDictionary | 1 | const Bytef * | +| (z_streamp,const Bytef *,uInt) | | deflateSetDictionary | 2 | uInt | +| (z_streamp,gz_headerp) | | deflateSetHeader | 0 | z_streamp | +| (z_streamp,gz_headerp) | | deflateSetHeader | 1 | gz_headerp | +| (z_streamp,int *) | | deflateUsed | 0 | z_streamp | +| (z_streamp,int *) | | deflateUsed | 1 | int * | +| (z_streamp,uLong) | | deflateBound | 0 | z_streamp | +| (z_streamp,uLong) | | deflateBound | 1 | uLong | +| (z_streamp,unsigned int *,int *) | | deflatePending | 0 | z_streamp | +| (z_streamp,unsigned int *,int *) | | deflatePending | 1 | unsigned int * | +| (z_streamp,unsigned int *,int *) | | deflatePending | 2 | int * | +| (z_streamp,unsigned int) | | inflate_fast | 0 | z_streamp | +| (z_streamp,unsigned int) | | inflate_fast | 1 | unsigned int | +| (z_streamp,z_streamp) | | deflateCopy | 0 | z_streamp | +| (z_streamp,z_streamp) | | deflateCopy | 1 | z_streamp | +| (z_streamp,z_streamp) | | inflateCopy | 0 | z_streamp | +| (z_streamp,z_streamp) | | inflateCopy | 1 | z_streamp | getParameterTypeName | arrayassignment.cpp:3:6:3:9 | sink | 0 | int | | arrayassignment.cpp:4:6:4:9 | sink | 0 | MyInt | From fd59a27bd2daf4995ed131cb59e2ea4ed66ecf76 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Fri, 13 Jun 2025 10:44:03 +0200 Subject: [PATCH 061/150] Rust: Add macro expr type inference test --- rust/ql/test/library-tests/type-inference/main.rs | 7 +++++++ .../type-inference/type-inference.expected | 14 +++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index 87bd3b035b8..18e7af8965c 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -1810,6 +1810,12 @@ mod indexers { } } +mod macros { + pub fn f() { + let x = format!("Hello, {}", "World!"); // $ MISSING: type=x:String + } +} + fn main() { field_access::f(); method_impl::f(); @@ -1832,4 +1838,5 @@ fn main() { async_::f(); impl_trait::f(); indexers::f(); + macros::f(); } diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index f97a93d3248..7088bc26f72 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -2642,9 +2642,13 @@ inferType | main.rs:1809:24:1809:25 | xs | | file://:0:0:0:0 | [] | | main.rs:1809:24:1809:25 | xs | [T;...] | main.rs:1764:5:1765:13 | S | | main.rs:1809:24:1809:25 | xs | [T] | main.rs:1764:5:1765:13 | S | -| main.rs:1815:5:1815:20 | ...::f(...) | | main.rs:67:5:67:21 | Foo | -| main.rs:1816:5:1816:60 | ...::g(...) | | main.rs:67:5:67:21 | Foo | -| main.rs:1816:20:1816:38 | ...::Foo {...} | | main.rs:67:5:67:21 | Foo | -| main.rs:1816:41:1816:59 | ...::Foo {...} | | main.rs:67:5:67:21 | Foo | -| main.rs:1832:5:1832:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1815:25:1815:35 | "Hello, {}" | | {EXTERNAL LOCATION} | str | +| main.rs:1815:25:1815:45 | ...::format(...) | | {EXTERNAL LOCATION} | String | +| main.rs:1815:25:1815:45 | { ... } | | {EXTERNAL LOCATION} | String | +| main.rs:1815:38:1815:45 | "World!" | | {EXTERNAL LOCATION} | str | +| main.rs:1821:5:1821:20 | ...::f(...) | | main.rs:67:5:67:21 | Foo | +| main.rs:1822:5:1822:60 | ...::g(...) | | main.rs:67:5:67:21 | Foo | +| main.rs:1822:20:1822:38 | ...::Foo {...} | | main.rs:67:5:67:21 | Foo | +| main.rs:1822:41:1822:59 | ...::Foo {...} | | main.rs:67:5:67:21 | Foo | +| main.rs:1838:5:1838:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | testFailures From 2f698d1590b0551e55b7bf3a79adaa71159eaad9 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Fri, 13 Jun 2025 11:04:39 +0200 Subject: [PATCH 062/150] Rust: Type inference for macro expressions --- rust/ql/lib/codeql/rust/internal/TypeInference.qll | 2 ++ rust/ql/test/library-tests/type-inference/main.rs | 2 +- .../test/library-tests/type-inference/type-inference.expected | 4 ++++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index a8230d04d9d..b15687a225c 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -265,6 +265,8 @@ private predicate typeEquality(AstNode n1, TypePath prefix1, AstNode n2, TypePat n1 = be.getLhs() and n2 = be.getRhs() ) + or + n1 = n2.(MacroExpr).getMacroCall().getMacroCallExpansion() ) or n1 = n2.(RefExpr).getExpr() and diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index 18e7af8965c..ea6165c582a 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -1812,7 +1812,7 @@ mod indexers { mod macros { pub fn f() { - let x = format!("Hello, {}", "World!"); // $ MISSING: type=x:String + let x = format!("Hello, {}", "World!"); // $ MISSING: type=x:String -- needs https://github.com/github/codeql/pull/19658 } } diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index 7088bc26f72..cfa952855d1 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -1021,8 +1021,12 @@ inferType | main.rs:912:19:912:22 | self | Snd | main.rs:910:15:910:17 | Snd | | main.rs:913:43:913:82 | MacroExpr | | main.rs:910:15:910:17 | Snd | | main.rs:913:50:913:81 | "PairNone has no second elemen... | | {EXTERNAL LOCATION} | str | +| main.rs:913:50:913:81 | MacroExpr | | main.rs:910:15:910:17 | Snd | +| main.rs:913:50:913:81 | { ... } | | main.rs:910:15:910:17 | Snd | | main.rs:914:43:914:81 | MacroExpr | | main.rs:910:15:910:17 | Snd | | main.rs:914:50:914:80 | "PairFst has no second element... | | {EXTERNAL LOCATION} | str | +| main.rs:914:50:914:80 | MacroExpr | | main.rs:910:15:910:17 | Snd | +| main.rs:914:50:914:80 | { ... } | | main.rs:910:15:910:17 | Snd | | main.rs:915:37:915:39 | snd | | main.rs:910:15:910:17 | Snd | | main.rs:915:45:915:47 | snd | | main.rs:910:15:910:17 | Snd | | main.rs:916:41:916:43 | snd | | main.rs:910:15:910:17 | Snd | From 6131c680f622f7b91b939d0a47d2591c10698d3c Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 13 Jun 2025 14:07:46 +0200 Subject: [PATCH 063/150] Update java/ql/lib/semmle/code/java/ControlFlowGraph.qll Co-authored-by: Tom Hvitved --- java/ql/lib/semmle/code/java/ControlFlowGraph.qll | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/java/ql/lib/semmle/code/java/ControlFlowGraph.qll b/java/ql/lib/semmle/code/java/ControlFlowGraph.qll index 476c72bc0e0..0d9d685cc71 100644 --- a/java/ql/lib/semmle/code/java/ControlFlowGraph.qll +++ b/java/ql/lib/semmle/code/java/ControlFlowGraph.qll @@ -1123,9 +1123,12 @@ private module ControlFlowGraphImpl { or // `assert` statements may throw completion = ThrowCompletion(assertionError()) and - if exists(assertstmt.getMessage()) - then last(assertstmt.getMessage(), last, NormalCompletion()) - else last(assertstmt.getExpr(), last, BooleanCompletion(false, _)) + ( + last(assertstmt.getMessage(), last, NormalCompletion()) + or + not exists(assertstmt.getMessage()) and + last(assertstmt.getExpr(), last, BooleanCompletion(false, _)) + ) ) or // `throw` statements or throwing calls give rise to `Throw` completion From 5f4d588cd9345ec4071c09c3631f4824416f869b Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Fri, 13 Jun 2025 14:21:02 +0200 Subject: [PATCH 064/150] Rust: Temporarily disable type information to flow into operands --- .../codeql/rust/internal/TypeInference.qll | 4 +- .../type-inference/type-inference.expected | 48 ------------------- 2 files changed, 3 insertions(+), 49 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index a8230d04d9d..b7e29dc46c7 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -765,7 +765,9 @@ private Type inferCallExprBaseType(AstNode n, TypePath path) { TypePath path0 | n = a.getNodeAt(apos) and - result = CallExprBaseMatching::inferAccessType(a, apos, path0) + result = CallExprBaseMatching::inferAccessType(a, apos, path0) and + // temporary workaround until implicit borrows are handled correctly + if a instanceof Operation then apos.isReturn() else any() | if apos.isSelf(_) then diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index f97a93d3248..5ae411d5221 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -2298,12 +2298,8 @@ inferType | main.rs:1594:28:1594:28 | 1 | | {EXTERNAL LOCATION} | i64 | | main.rs:1594:34:1594:34 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:1594:34:1594:34 | 2 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1595:13:1595:14 | v2 | | file://:0:0:0:0 | & | | main.rs:1595:13:1595:14 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1595:13:1595:14 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1595:18:1595:36 | Vec2 {...} | | file://:0:0:0:0 | & | | main.rs:1595:18:1595:36 | Vec2 {...} | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1595:18:1595:36 | Vec2 {...} | &T | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1595:28:1595:28 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:1595:28:1595:28 | 3 | | {EXTERNAL LOCATION} | i64 | | main.rs:1595:34:1595:34 | 4 | | {EXTERNAL LOCATION} | i32 | @@ -2311,122 +2307,84 @@ inferType | main.rs:1598:13:1598:19 | vec2_eq | | {EXTERNAL LOCATION} | bool | | main.rs:1598:23:1598:24 | v1 | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1598:23:1598:30 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1598:29:1598:30 | v2 | | file://:0:0:0:0 | & | | main.rs:1598:29:1598:30 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1598:29:1598:30 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1599:13:1599:19 | vec2_ne | | {EXTERNAL LOCATION} | bool | | main.rs:1599:23:1599:24 | v1 | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1599:23:1599:30 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1599:29:1599:30 | v2 | | file://:0:0:0:0 | & | | main.rs:1599:29:1599:30 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1599:29:1599:30 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1600:13:1600:19 | vec2_lt | | {EXTERNAL LOCATION} | bool | | main.rs:1600:23:1600:24 | v1 | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1600:23:1600:29 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1600:28:1600:29 | v2 | | file://:0:0:0:0 | & | | main.rs:1600:28:1600:29 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1600:28:1600:29 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1601:13:1601:19 | vec2_le | | {EXTERNAL LOCATION} | bool | | main.rs:1601:23:1601:24 | v1 | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1601:23:1601:30 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1601:29:1601:30 | v2 | | file://:0:0:0:0 | & | | main.rs:1601:29:1601:30 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1601:29:1601:30 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1602:13:1602:19 | vec2_gt | | {EXTERNAL LOCATION} | bool | | main.rs:1602:23:1602:24 | v1 | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1602:23:1602:29 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1602:28:1602:29 | v2 | | file://:0:0:0:0 | & | | main.rs:1602:28:1602:29 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1602:28:1602:29 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1603:13:1603:19 | vec2_ge | | {EXTERNAL LOCATION} | bool | | main.rs:1603:23:1603:24 | v1 | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1603:23:1603:30 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1603:29:1603:30 | v2 | | file://:0:0:0:0 | & | | main.rs:1603:29:1603:30 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1603:29:1603:30 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1606:13:1606:20 | vec2_add | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1606:24:1606:25 | v1 | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1606:24:1606:30 | ... + ... | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1606:29:1606:30 | v2 | | file://:0:0:0:0 | & | | main.rs:1606:29:1606:30 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1606:29:1606:30 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1607:13:1607:20 | vec2_sub | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1607:24:1607:25 | v1 | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1607:24:1607:30 | ... - ... | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1607:29:1607:30 | v2 | | file://:0:0:0:0 | & | | main.rs:1607:29:1607:30 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1607:29:1607:30 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1608:13:1608:20 | vec2_mul | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1608:24:1608:25 | v1 | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1608:24:1608:30 | ... * ... | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1608:29:1608:30 | v2 | | file://:0:0:0:0 | & | | main.rs:1608:29:1608:30 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1608:29:1608:30 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1609:13:1609:20 | vec2_div | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1609:24:1609:25 | v1 | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1609:24:1609:30 | ... / ... | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1609:29:1609:30 | v2 | | file://:0:0:0:0 | & | | main.rs:1609:29:1609:30 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1609:29:1609:30 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1610:13:1610:20 | vec2_rem | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1610:24:1610:25 | v1 | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1610:24:1610:30 | ... % ... | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1610:29:1610:30 | v2 | | file://:0:0:0:0 | & | | main.rs:1610:29:1610:30 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1610:29:1610:30 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1613:13:1613:31 | mut vec2_add_assign | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1613:35:1613:36 | v1 | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1614:9:1614:23 | vec2_add_assign | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1614:9:1614:29 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1614:28:1614:29 | v2 | | file://:0:0:0:0 | & | | main.rs:1614:28:1614:29 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1614:28:1614:29 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1616:13:1616:31 | mut vec2_sub_assign | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1616:35:1616:36 | v1 | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1617:9:1617:23 | vec2_sub_assign | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1617:9:1617:29 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1617:28:1617:29 | v2 | | file://:0:0:0:0 | & | | main.rs:1617:28:1617:29 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1617:28:1617:29 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1619:13:1619:31 | mut vec2_mul_assign | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1619:35:1619:36 | v1 | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1620:9:1620:23 | vec2_mul_assign | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1620:9:1620:29 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1620:28:1620:29 | v2 | | file://:0:0:0:0 | & | | main.rs:1620:28:1620:29 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1620:28:1620:29 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1622:13:1622:31 | mut vec2_div_assign | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1622:35:1622:36 | v1 | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1623:9:1623:23 | vec2_div_assign | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1623:9:1623:29 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1623:28:1623:29 | v2 | | file://:0:0:0:0 | & | | main.rs:1623:28:1623:29 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1623:28:1623:29 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1625:13:1625:31 | mut vec2_rem_assign | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1625:35:1625:36 | v1 | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1626:9:1626:23 | vec2_rem_assign | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1626:9:1626:29 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1626:28:1626:29 | v2 | | file://:0:0:0:0 | & | | main.rs:1626:28:1626:29 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1626:28:1626:29 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1629:13:1629:23 | vec2_bitand | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1629:27:1629:28 | v1 | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1629:27:1629:33 | ... & ... | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1629:32:1629:33 | v2 | | file://:0:0:0:0 | & | | main.rs:1629:32:1629:33 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1629:32:1629:33 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1630:13:1630:22 | vec2_bitor | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1630:26:1630:27 | v1 | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1630:26:1630:32 | ... \| ... | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1630:31:1630:32 | v2 | | file://:0:0:0:0 | & | | main.rs:1630:31:1630:32 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1630:31:1630:32 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1631:13:1631:23 | vec2_bitxor | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1631:27:1631:28 | v1 | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1631:27:1631:33 | ... ^ ... | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1631:32:1631:33 | v2 | | file://:0:0:0:0 | & | | main.rs:1631:32:1631:33 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1631:32:1631:33 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1632:13:1632:20 | vec2_shl | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1632:24:1632:25 | v1 | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1632:24:1632:33 | ... << ... | | main.rs:1302:5:1307:5 | Vec2 | @@ -2439,23 +2397,17 @@ inferType | main.rs:1636:38:1636:39 | v1 | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1637:9:1637:26 | vec2_bitand_assign | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1637:9:1637:32 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1637:31:1637:32 | v2 | | file://:0:0:0:0 | & | | main.rs:1637:31:1637:32 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1637:31:1637:32 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1639:13:1639:33 | mut vec2_bitor_assign | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1639:37:1639:38 | v1 | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1640:9:1640:25 | vec2_bitor_assign | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1640:9:1640:31 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1640:30:1640:31 | v2 | | file://:0:0:0:0 | & | | main.rs:1640:30:1640:31 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1640:30:1640:31 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1642:13:1642:34 | mut vec2_bitxor_assign | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1642:38:1642:39 | v1 | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1643:9:1643:26 | vec2_bitxor_assign | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1643:9:1643:32 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1643:31:1643:32 | v2 | | file://:0:0:0:0 | & | | main.rs:1643:31:1643:32 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1643:31:1643:32 | v2 | &T | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1645:13:1645:31 | mut vec2_shl_assign | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1645:35:1645:36 | v1 | | main.rs:1302:5:1307:5 | Vec2 | | main.rs:1646:9:1646:23 | vec2_shl_assign | | main.rs:1302:5:1307:5 | Vec2 | From d1aee7f704293b41b0934c0d9dac0687174d23cb Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Fri, 13 Jun 2025 10:04:13 +0200 Subject: [PATCH 065/150] Rust: Add type inference test --- .../test/library-tests/type-inference/main.rs | 54 +- .../type-inference/type-inference.expected | 2432 +++++++++-------- 2 files changed, 1293 insertions(+), 1193 deletions(-) diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index ea6165c582a..4fd2d45d023 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -1099,6 +1099,7 @@ mod method_call_type_conversion { println!("{:?}", x5.0); // $ fieldof=S let x6 = &S(S2); // $ SPURIOUS: type=x6:&T.&T.S + // explicit dereference println!("{:?}", (*x6).m1()); // $ method=m1 method=deref @@ -1668,9 +1669,7 @@ mod async_ { } fn f2() -> impl Future { - async { - S1 - } + async { S1 } } struct S2; @@ -1678,7 +1677,10 @@ mod async_ { impl Future for S2 { type Output = S1; - fn poll(self: std::pin::Pin<&mut Self>, _cx: &mut std::task::Context<'_>) -> std::task::Poll { + fn poll( + self: std::pin::Pin<&mut Self>, + _cx: &mut std::task::Context<'_>, + ) -> std::task::Poll { std::task::Poll::Ready(S1) } } @@ -1692,14 +1694,11 @@ mod async_ { f2().await.f(); // $ method=S1f f3().await.f(); // $ method=S1f S2.await.f(); // $ method=S1f - let b = async { - S1 - }; + let b = async { S1 }; b.await.f(); // $ method=S1f } } - mod impl_trait { struct S1; struct S2; @@ -1816,6 +1815,44 @@ mod macros { } } +mod method_determined_by_argument_type { + trait MyAdd { + fn my_add(&self, value: T) -> Self; + } + + impl MyAdd for i64 { + // MyAdd::my_add + fn my_add(&self, value: i64) -> Self { + value + } + } + + impl MyAdd<&i64> for i64 { + // MyAdd<&i64>::my_add + fn my_add(&self, value: &i64) -> Self { + *value // $ method=deref + } + } + + impl MyAdd for i64 { + // MyAdd::my_add + fn my_add(&self, value: bool) -> Self { + if value { + 1 + } else { + 0 + } + } + } + + pub fn f() { + let x: i64 = 73; + x.my_add(5i64); // $ method=MyAdd::my_add SPURIOUS: method=MyAdd::my_add SPURIOUS: method=MyAdd<&i64>::my_add + x.my_add(&5i64); // $ method=MyAdd<&i64>::my_add SPURIOUS: method=MyAdd::my_add SPURIOUS: method=MyAdd::my_add + x.my_add(true); // $ method=MyAdd::my_add SPURIOUS: method=MyAdd::my_add SPURIOUS: method=MyAdd<&i64>::my_add + } +} + fn main() { field_access::f(); method_impl::f(); @@ -1839,4 +1876,5 @@ fn main() { impl_trait::f(); indexers::f(); macros::f(); + method_determined_by_argument_type::f(); } diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index 2c883acf39f..18635e885fb 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -1376,1235 +1376,1297 @@ inferType | main.rs:1101:19:1101:23 | S(...) | &T.T | main.rs:1060:5:1061:14 | S2 | | main.rs:1101:19:1101:23 | S(...) | T | main.rs:1060:5:1061:14 | S2 | | main.rs:1101:21:1101:22 | S2 | | main.rs:1060:5:1061:14 | S2 | -| main.rs:1103:18:1103:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1103:26:1103:30 | (...) | | file://:0:0:0:0 | & | -| main.rs:1103:26:1103:30 | (...) | | main.rs:1057:5:1058:19 | S | -| main.rs:1103:26:1103:30 | (...) | &T | main.rs:1057:5:1058:19 | S | -| main.rs:1103:26:1103:30 | (...) | &T.T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1103:26:1103:30 | (...) | T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1103:26:1103:35 | ... .m1() | | main.rs:1060:5:1061:14 | S2 | -| main.rs:1103:27:1103:29 | * ... | | file://:0:0:0:0 | & | -| main.rs:1103:27:1103:29 | * ... | | main.rs:1057:5:1058:19 | S | -| main.rs:1103:27:1103:29 | * ... | &T | main.rs:1057:5:1058:19 | S | -| main.rs:1103:27:1103:29 | * ... | &T.T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1103:27:1103:29 | * ... | T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1103:28:1103:29 | x6 | | file://:0:0:0:0 | & | -| main.rs:1103:28:1103:29 | x6 | &T | file://:0:0:0:0 | & | -| main.rs:1103:28:1103:29 | x6 | &T | main.rs:1057:5:1058:19 | S | -| main.rs:1103:28:1103:29 | x6 | &T.&T | main.rs:1057:5:1058:19 | S | -| main.rs:1103:28:1103:29 | x6 | &T.&T.T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1103:28:1103:29 | x6 | &T.T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1105:13:1105:14 | x7 | | main.rs:1057:5:1058:19 | S | -| main.rs:1105:13:1105:14 | x7 | T | file://:0:0:0:0 | & | -| main.rs:1105:13:1105:14 | x7 | T.&T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1105:18:1105:23 | S(...) | | main.rs:1057:5:1058:19 | S | -| main.rs:1105:18:1105:23 | S(...) | T | file://:0:0:0:0 | & | -| main.rs:1105:18:1105:23 | S(...) | T.&T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1105:20:1105:22 | &S2 | | file://:0:0:0:0 | & | -| main.rs:1105:20:1105:22 | &S2 | &T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1105:21:1105:22 | S2 | | main.rs:1060:5:1061:14 | S2 | -| main.rs:1108:13:1108:13 | t | | file://:0:0:0:0 | & | -| main.rs:1108:13:1108:13 | t | &T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1108:17:1108:18 | x7 | | main.rs:1057:5:1058:19 | S | -| main.rs:1108:17:1108:18 | x7 | T | file://:0:0:0:0 | & | -| main.rs:1108:17:1108:18 | x7 | T.&T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1108:17:1108:23 | x7.m1() | | file://:0:0:0:0 | & | -| main.rs:1108:17:1108:23 | x7.m1() | &T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1109:18:1109:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1109:26:1109:27 | x7 | | main.rs:1057:5:1058:19 | S | -| main.rs:1109:26:1109:27 | x7 | T | file://:0:0:0:0 | & | -| main.rs:1109:26:1109:27 | x7 | T.&T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1111:13:1111:14 | x9 | | {EXTERNAL LOCATION} | String | -| main.rs:1111:27:1111:33 | "Hello" | | {EXTERNAL LOCATION} | str | -| main.rs:1111:27:1111:45 | "Hello".to_string() | | {EXTERNAL LOCATION} | String | -| main.rs:1114:13:1114:13 | u | | {EXTERNAL LOCATION} | Result | -| main.rs:1114:13:1114:13 | u | T | {EXTERNAL LOCATION} | u32 | -| main.rs:1114:17:1114:18 | x9 | | {EXTERNAL LOCATION} | String | -| main.rs:1114:17:1114:33 | x9.parse() | | {EXTERNAL LOCATION} | Result | -| main.rs:1114:17:1114:33 | x9.parse() | T | {EXTERNAL LOCATION} | u32 | -| main.rs:1121:16:1121:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1121:16:1121:20 | SelfParam | &T | main.rs:1119:5:1127:5 | Self [trait MyTrait] | -| main.rs:1124:16:1124:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1124:16:1124:20 | SelfParam | &T | main.rs:1119:5:1127:5 | Self [trait MyTrait] | -| main.rs:1124:32:1126:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1124:32:1126:9 | { ... } | &T | main.rs:1119:5:1127:5 | Self [trait MyTrait] | -| main.rs:1125:13:1125:16 | self | | file://:0:0:0:0 | & | -| main.rs:1125:13:1125:16 | self | &T | main.rs:1119:5:1127:5 | Self [trait MyTrait] | -| main.rs:1125:13:1125:22 | self.foo() | | file://:0:0:0:0 | & | -| main.rs:1125:13:1125:22 | self.foo() | &T | main.rs:1119:5:1127:5 | Self [trait MyTrait] | -| main.rs:1133:16:1133:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1133:16:1133:20 | SelfParam | &T | main.rs:1129:5:1129:20 | MyStruct | -| main.rs:1133:36:1135:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1133:36:1135:9 | { ... } | &T | main.rs:1129:5:1129:20 | MyStruct | -| main.rs:1134:13:1134:16 | self | | file://:0:0:0:0 | & | -| main.rs:1134:13:1134:16 | self | &T | main.rs:1129:5:1129:20 | MyStruct | -| main.rs:1139:13:1139:13 | x | | main.rs:1129:5:1129:20 | MyStruct | -| main.rs:1139:17:1139:24 | MyStruct | | main.rs:1129:5:1129:20 | MyStruct | -| main.rs:1140:9:1140:9 | x | | main.rs:1129:5:1129:20 | MyStruct | -| main.rs:1140:9:1140:15 | x.bar() | | file://:0:0:0:0 | & | -| main.rs:1140:9:1140:15 | x.bar() | &T | main.rs:1129:5:1129:20 | MyStruct | -| main.rs:1150:16:1150:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1150:16:1150:20 | SelfParam | &T | main.rs:1147:5:1147:26 | MyStruct | -| main.rs:1150:16:1150:20 | SelfParam | &T.T | main.rs:1149:10:1149:10 | T | -| main.rs:1150:32:1152:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1150:32:1152:9 | { ... } | &T | main.rs:1147:5:1147:26 | MyStruct | -| main.rs:1150:32:1152:9 | { ... } | &T.T | main.rs:1149:10:1149:10 | T | -| main.rs:1151:13:1151:16 | self | | file://:0:0:0:0 | & | -| main.rs:1151:13:1151:16 | self | &T | main.rs:1147:5:1147:26 | MyStruct | -| main.rs:1151:13:1151:16 | self | &T.T | main.rs:1149:10:1149:10 | T | -| main.rs:1156:13:1156:13 | x | | main.rs:1147:5:1147:26 | MyStruct | -| main.rs:1156:13:1156:13 | x | T | main.rs:1145:5:1145:13 | S | -| main.rs:1156:17:1156:27 | MyStruct(...) | | main.rs:1147:5:1147:26 | MyStruct | -| main.rs:1156:17:1156:27 | MyStruct(...) | T | main.rs:1145:5:1145:13 | S | -| main.rs:1156:26:1156:26 | S | | main.rs:1145:5:1145:13 | S | -| main.rs:1157:9:1157:9 | x | | main.rs:1147:5:1147:26 | MyStruct | -| main.rs:1157:9:1157:9 | x | T | main.rs:1145:5:1145:13 | S | -| main.rs:1157:9:1157:15 | x.foo() | | file://:0:0:0:0 | & | -| main.rs:1157:9:1157:15 | x.foo() | &T | main.rs:1147:5:1147:26 | MyStruct | -| main.rs:1157:9:1157:15 | x.foo() | &T.T | main.rs:1145:5:1145:13 | S | -| main.rs:1168:17:1168:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1168:17:1168:25 | SelfParam | &T | main.rs:1162:5:1165:5 | MyFlag | -| main.rs:1169:13:1169:16 | self | | file://:0:0:0:0 | & | -| main.rs:1169:13:1169:16 | self | &T | main.rs:1162:5:1165:5 | MyFlag | -| main.rs:1169:13:1169:21 | self.bool | | {EXTERNAL LOCATION} | bool | -| main.rs:1169:13:1169:34 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1169:25:1169:34 | ! ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1169:26:1169:29 | self | | file://:0:0:0:0 | & | -| main.rs:1169:26:1169:29 | self | &T | main.rs:1162:5:1165:5 | MyFlag | -| main.rs:1169:26:1169:34 | self.bool | | {EXTERNAL LOCATION} | bool | -| main.rs:1176:15:1176:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1176:15:1176:19 | SelfParam | &T | main.rs:1173:5:1173:13 | S | -| main.rs:1176:31:1178:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1176:31:1178:9 | { ... } | &T | file://:0:0:0:0 | & | -| main.rs:1176:31:1178:9 | { ... } | &T | main.rs:1173:5:1173:13 | S | -| main.rs:1176:31:1178:9 | { ... } | &T.&T | file://:0:0:0:0 | & | -| main.rs:1176:31:1178:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1176:31:1178:9 | { ... } | &T.&T.&T.&T | main.rs:1173:5:1173:13 | S | -| main.rs:1177:13:1177:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1177:13:1177:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1177:13:1177:19 | &... | &T | main.rs:1173:5:1173:13 | S | -| main.rs:1177:13:1177:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1177:13:1177:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1177:13:1177:19 | &... | &T.&T.&T.&T | main.rs:1173:5:1173:13 | S | -| main.rs:1177:14:1177:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1177:14:1177:19 | &... | | main.rs:1173:5:1173:13 | S | -| main.rs:1177:14:1177:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1177:14:1177:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1177:14:1177:19 | &... | &T.&T.&T | main.rs:1173:5:1173:13 | S | -| main.rs:1177:15:1177:19 | &self | | file://:0:0:0:0 | & | -| main.rs:1177:15:1177:19 | &self | &T | file://:0:0:0:0 | & | -| main.rs:1177:15:1177:19 | &self | &T.&T | main.rs:1173:5:1173:13 | S | -| main.rs:1177:16:1177:19 | self | | file://:0:0:0:0 | & | -| main.rs:1177:16:1177:19 | self | &T | main.rs:1173:5:1173:13 | S | -| main.rs:1180:15:1180:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1180:15:1180:25 | SelfParam | &T | main.rs:1173:5:1173:13 | S | -| main.rs:1180:37:1182:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1180:37:1182:9 | { ... } | &T | file://:0:0:0:0 | & | -| main.rs:1180:37:1182:9 | { ... } | &T | main.rs:1173:5:1173:13 | S | -| main.rs:1180:37:1182:9 | { ... } | &T.&T | file://:0:0:0:0 | & | -| main.rs:1180:37:1182:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1180:37:1182:9 | { ... } | &T.&T.&T.&T | main.rs:1173:5:1173:13 | S | -| main.rs:1181:13:1181:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1181:13:1181:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1181:13:1181:19 | &... | &T | main.rs:1173:5:1173:13 | S | -| main.rs:1181:13:1181:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1181:13:1181:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1181:13:1181:19 | &... | &T.&T.&T.&T | main.rs:1173:5:1173:13 | S | -| main.rs:1181:14:1181:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1181:14:1181:19 | &... | | main.rs:1173:5:1173:13 | S | -| main.rs:1181:14:1181:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1181:14:1181:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1181:14:1181:19 | &... | &T.&T.&T | main.rs:1173:5:1173:13 | S | -| main.rs:1181:15:1181:19 | &self | | file://:0:0:0:0 | & | -| main.rs:1181:15:1181:19 | &self | &T | file://:0:0:0:0 | & | -| main.rs:1181:15:1181:19 | &self | &T.&T | main.rs:1173:5:1173:13 | S | -| main.rs:1181:16:1181:19 | self | | file://:0:0:0:0 | & | -| main.rs:1181:16:1181:19 | self | &T | main.rs:1173:5:1173:13 | S | -| main.rs:1184:15:1184:15 | x | | file://:0:0:0:0 | & | -| main.rs:1184:15:1184:15 | x | &T | main.rs:1173:5:1173:13 | S | -| main.rs:1184:34:1186:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1184:34:1186:9 | { ... } | &T | main.rs:1173:5:1173:13 | S | -| main.rs:1185:13:1185:13 | x | | file://:0:0:0:0 | & | -| main.rs:1185:13:1185:13 | x | &T | main.rs:1173:5:1173:13 | S | -| main.rs:1188:15:1188:15 | x | | file://:0:0:0:0 | & | -| main.rs:1188:15:1188:15 | x | &T | main.rs:1173:5:1173:13 | S | -| main.rs:1188:34:1190:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1188:34:1190:9 | { ... } | &T | file://:0:0:0:0 | & | -| main.rs:1188:34:1190:9 | { ... } | &T | main.rs:1173:5:1173:13 | S | -| main.rs:1188:34:1190:9 | { ... } | &T.&T | file://:0:0:0:0 | & | -| main.rs:1188:34:1190:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1188:34:1190:9 | { ... } | &T.&T.&T.&T | main.rs:1173:5:1173:13 | S | -| main.rs:1189:13:1189:16 | &... | | file://:0:0:0:0 | & | -| main.rs:1189:13:1189:16 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1189:13:1189:16 | &... | &T | main.rs:1173:5:1173:13 | S | -| main.rs:1189:13:1189:16 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1189:13:1189:16 | &... | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1189:13:1189:16 | &... | &T.&T.&T.&T | main.rs:1173:5:1173:13 | S | -| main.rs:1189:14:1189:16 | &... | | file://:0:0:0:0 | & | -| main.rs:1189:14:1189:16 | &... | | main.rs:1173:5:1173:13 | S | -| main.rs:1189:14:1189:16 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1189:14:1189:16 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1189:14:1189:16 | &... | &T.&T.&T | main.rs:1173:5:1173:13 | S | -| main.rs:1189:15:1189:16 | &x | | file://:0:0:0:0 | & | -| main.rs:1189:15:1189:16 | &x | &T | file://:0:0:0:0 | & | -| main.rs:1189:15:1189:16 | &x | &T.&T | main.rs:1173:5:1173:13 | S | -| main.rs:1189:16:1189:16 | x | | file://:0:0:0:0 | & | -| main.rs:1189:16:1189:16 | x | &T | main.rs:1173:5:1173:13 | S | -| main.rs:1194:13:1194:13 | x | | main.rs:1173:5:1173:13 | S | -| main.rs:1194:17:1194:20 | S {...} | | main.rs:1173:5:1173:13 | S | -| main.rs:1195:9:1195:9 | x | | main.rs:1173:5:1173:13 | S | -| main.rs:1195:9:1195:14 | x.f1() | | file://:0:0:0:0 | & | -| main.rs:1195:9:1195:14 | x.f1() | &T | main.rs:1173:5:1173:13 | S | -| main.rs:1196:9:1196:9 | x | | main.rs:1173:5:1173:13 | S | -| main.rs:1196:9:1196:14 | x.f2() | | file://:0:0:0:0 | & | -| main.rs:1196:9:1196:14 | x.f2() | &T | main.rs:1173:5:1173:13 | S | -| main.rs:1197:9:1197:17 | ...::f3(...) | | file://:0:0:0:0 | & | -| main.rs:1197:9:1197:17 | ...::f3(...) | &T | main.rs:1173:5:1173:13 | S | -| main.rs:1197:15:1197:16 | &x | | file://:0:0:0:0 | & | -| main.rs:1197:15:1197:16 | &x | &T | main.rs:1173:5:1173:13 | S | -| main.rs:1197:16:1197:16 | x | | main.rs:1173:5:1173:13 | S | -| main.rs:1199:13:1199:13 | n | | {EXTERNAL LOCATION} | bool | -| main.rs:1199:13:1199:13 | n | | file://:0:0:0:0 | & | -| main.rs:1199:17:1199:24 | * ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1199:17:1199:24 | * ... | | file://:0:0:0:0 | & | -| main.rs:1199:18:1199:24 | * ... | | file://:0:0:0:0 | & | -| main.rs:1199:18:1199:24 | * ... | &T | {EXTERNAL LOCATION} | bool | -| main.rs:1199:18:1199:24 | * ... | &T | file://:0:0:0:0 | & | -| main.rs:1199:19:1199:24 | &... | | file://:0:0:0:0 | & | -| main.rs:1199:19:1199:24 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1199:19:1199:24 | &... | &T.&T | {EXTERNAL LOCATION} | bool | -| main.rs:1199:19:1199:24 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1199:20:1199:24 | &true | | file://:0:0:0:0 | & | -| main.rs:1199:20:1199:24 | &true | &T | {EXTERNAL LOCATION} | bool | -| main.rs:1199:20:1199:24 | &true | &T | file://:0:0:0:0 | & | -| main.rs:1199:21:1199:24 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1199:21:1199:24 | true | | file://:0:0:0:0 | & | -| main.rs:1203:13:1203:20 | mut flag | | main.rs:1162:5:1165:5 | MyFlag | -| main.rs:1203:24:1203:41 | ...::default(...) | | main.rs:1162:5:1165:5 | MyFlag | -| main.rs:1204:22:1204:30 | &mut flag | | file://:0:0:0:0 | & | -| main.rs:1204:22:1204:30 | &mut flag | &T | main.rs:1162:5:1165:5 | MyFlag | -| main.rs:1204:27:1204:30 | flag | | main.rs:1162:5:1165:5 | MyFlag | -| main.rs:1205:18:1205:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1205:26:1205:29 | flag | | main.rs:1162:5:1165:5 | MyFlag | -| main.rs:1219:43:1222:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1219:43:1222:5 | { ... } | E | main.rs:1212:5:1213:14 | S1 | -| main.rs:1219:43:1222:5 | { ... } | T | main.rs:1212:5:1213:14 | S1 | -| main.rs:1220:13:1220:13 | x | | main.rs:1212:5:1213:14 | S1 | -| main.rs:1220:17:1220:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1220:17:1220:30 | ...::Ok(...) | T | main.rs:1212:5:1213:14 | S1 | -| main.rs:1220:17:1220:31 | TryExpr | | main.rs:1212:5:1213:14 | S1 | -| main.rs:1220:28:1220:29 | S1 | | main.rs:1212:5:1213:14 | S1 | -| main.rs:1221:9:1221:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1221:9:1221:22 | ...::Ok(...) | E | main.rs:1212:5:1213:14 | S1 | -| main.rs:1221:9:1221:22 | ...::Ok(...) | T | main.rs:1212:5:1213:14 | S1 | -| main.rs:1221:20:1221:21 | S1 | | main.rs:1212:5:1213:14 | S1 | -| main.rs:1225:46:1229:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1225:46:1229:5 | { ... } | E | main.rs:1215:5:1216:14 | S2 | -| main.rs:1225:46:1229:5 | { ... } | T | main.rs:1212:5:1213:14 | S1 | -| main.rs:1226:13:1226:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1226:13:1226:13 | x | T | main.rs:1212:5:1213:14 | S1 | -| main.rs:1226:17:1226:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1226:17:1226:30 | ...::Ok(...) | T | main.rs:1212:5:1213:14 | S1 | -| main.rs:1226:28:1226:29 | S1 | | main.rs:1212:5:1213:14 | S1 | -| main.rs:1227:13:1227:13 | y | | main.rs:1212:5:1213:14 | S1 | -| main.rs:1227:17:1227:17 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1227:17:1227:17 | x | T | main.rs:1212:5:1213:14 | S1 | -| main.rs:1227:17:1227:18 | TryExpr | | main.rs:1212:5:1213:14 | S1 | -| main.rs:1228:9:1228:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1228:9:1228:22 | ...::Ok(...) | E | main.rs:1215:5:1216:14 | S2 | -| main.rs:1228:9:1228:22 | ...::Ok(...) | T | main.rs:1212:5:1213:14 | S1 | -| main.rs:1228:20:1228:21 | S1 | | main.rs:1212:5:1213:14 | S1 | -| main.rs:1232:40:1237:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1232:40:1237:5 | { ... } | E | main.rs:1215:5:1216:14 | S2 | -| main.rs:1232:40:1237:5 | { ... } | T | main.rs:1212:5:1213:14 | S1 | -| main.rs:1233:13:1233:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1233:13:1233:13 | x | T | {EXTERNAL LOCATION} | Result | -| main.rs:1233:13:1233:13 | x | T.T | main.rs:1212:5:1213:14 | S1 | -| main.rs:1233:17:1233:42 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1233:17:1233:42 | ...::Ok(...) | T | {EXTERNAL LOCATION} | Result | -| main.rs:1233:17:1233:42 | ...::Ok(...) | T.T | main.rs:1212:5:1213:14 | S1 | -| main.rs:1233:28:1233:41 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1233:28:1233:41 | ...::Ok(...) | T | main.rs:1212:5:1213:14 | S1 | -| main.rs:1233:39:1233:40 | S1 | | main.rs:1212:5:1213:14 | S1 | -| main.rs:1235:17:1235:17 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1235:17:1235:17 | x | T | {EXTERNAL LOCATION} | Result | -| main.rs:1235:17:1235:17 | x | T.T | main.rs:1212:5:1213:14 | S1 | -| main.rs:1235:17:1235:18 | TryExpr | | {EXTERNAL LOCATION} | Result | -| main.rs:1235:17:1235:18 | TryExpr | T | main.rs:1212:5:1213:14 | S1 | -| main.rs:1235:17:1235:29 | ... .map(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1236:9:1236:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1236:9:1236:22 | ...::Ok(...) | E | main.rs:1215:5:1216:14 | S2 | -| main.rs:1236:9:1236:22 | ...::Ok(...) | T | main.rs:1212:5:1213:14 | S1 | -| main.rs:1236:20:1236:21 | S1 | | main.rs:1212:5:1213:14 | S1 | -| main.rs:1240:30:1240:34 | input | | {EXTERNAL LOCATION} | Result | -| main.rs:1240:30:1240:34 | input | E | main.rs:1212:5:1213:14 | S1 | -| main.rs:1240:30:1240:34 | input | T | main.rs:1240:20:1240:27 | T | -| main.rs:1240:69:1247:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1240:69:1247:5 | { ... } | E | main.rs:1212:5:1213:14 | S1 | -| main.rs:1240:69:1247:5 | { ... } | T | main.rs:1240:20:1240:27 | T | -| main.rs:1241:13:1241:17 | value | | main.rs:1240:20:1240:27 | T | -| main.rs:1241:21:1241:25 | input | | {EXTERNAL LOCATION} | Result | -| main.rs:1241:21:1241:25 | input | E | main.rs:1212:5:1213:14 | S1 | -| main.rs:1241:21:1241:25 | input | T | main.rs:1240:20:1240:27 | T | -| main.rs:1241:21:1241:26 | TryExpr | | main.rs:1240:20:1240:27 | T | -| main.rs:1242:22:1242:38 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1242:22:1242:38 | ...::Ok(...) | T | main.rs:1240:20:1240:27 | T | -| main.rs:1242:22:1245:10 | ... .and_then(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1242:33:1242:37 | value | | main.rs:1240:20:1240:27 | T | -| main.rs:1242:53:1245:9 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1242:53:1245:9 | { ... } | E | main.rs:1212:5:1213:14 | S1 | -| main.rs:1243:22:1243:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1244:13:1244:34 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1244:13:1244:34 | ...::Ok::<...>(...) | E | main.rs:1212:5:1213:14 | S1 | -| main.rs:1246:9:1246:23 | ...::Err(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1246:9:1246:23 | ...::Err(...) | E | main.rs:1212:5:1213:14 | S1 | -| main.rs:1246:9:1246:23 | ...::Err(...) | T | main.rs:1240:20:1240:27 | T | -| main.rs:1246:21:1246:22 | S1 | | main.rs:1212:5:1213:14 | S1 | -| main.rs:1250:37:1250:52 | try_same_error(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1250:37:1250:52 | try_same_error(...) | E | main.rs:1212:5:1213:14 | S1 | -| main.rs:1250:37:1250:52 | try_same_error(...) | T | main.rs:1212:5:1213:14 | S1 | -| main.rs:1251:22:1251:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1254:37:1254:55 | try_convert_error(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1254:37:1254:55 | try_convert_error(...) | E | main.rs:1215:5:1216:14 | S2 | -| main.rs:1254:37:1254:55 | try_convert_error(...) | T | main.rs:1212:5:1213:14 | S1 | -| main.rs:1255:22:1255:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1258:37:1258:49 | try_chained(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1258:37:1258:49 | try_chained(...) | E | main.rs:1215:5:1216:14 | S2 | -| main.rs:1258:37:1258:49 | try_chained(...) | T | main.rs:1212:5:1213:14 | S1 | -| main.rs:1259:22:1259:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1262:37:1262:63 | try_complex(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1262:37:1262:63 | try_complex(...) | E | main.rs:1212:5:1213:14 | S1 | -| main.rs:1262:37:1262:63 | try_complex(...) | T | main.rs:1212:5:1213:14 | S1 | -| main.rs:1262:49:1262:62 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1262:49:1262:62 | ...::Ok(...) | E | main.rs:1212:5:1213:14 | S1 | -| main.rs:1262:49:1262:62 | ...::Ok(...) | T | main.rs:1212:5:1213:14 | S1 | -| main.rs:1262:60:1262:61 | S1 | | main.rs:1212:5:1213:14 | S1 | -| main.rs:1263:22:1263:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1270:13:1270:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1270:22:1270:22 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1271:13:1271:13 | y | | {EXTERNAL LOCATION} | i32 | -| main.rs:1271:17:1271:17 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1272:13:1272:13 | z | | {EXTERNAL LOCATION} | i32 | -| main.rs:1272:17:1272:17 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1272:17:1272:21 | ... + ... | | {EXTERNAL LOCATION} | i32 | -| main.rs:1272:21:1272:21 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:1104:18:1104:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1104:26:1104:30 | (...) | | file://:0:0:0:0 | & | +| main.rs:1104:26:1104:30 | (...) | | main.rs:1057:5:1058:19 | S | +| main.rs:1104:26:1104:30 | (...) | &T | main.rs:1057:5:1058:19 | S | +| main.rs:1104:26:1104:30 | (...) | &T.T | main.rs:1060:5:1061:14 | S2 | +| main.rs:1104:26:1104:30 | (...) | T | main.rs:1060:5:1061:14 | S2 | +| main.rs:1104:26:1104:35 | ... .m1() | | main.rs:1060:5:1061:14 | S2 | +| main.rs:1104:27:1104:29 | * ... | | file://:0:0:0:0 | & | +| main.rs:1104:27:1104:29 | * ... | | main.rs:1057:5:1058:19 | S | +| main.rs:1104:27:1104:29 | * ... | &T | main.rs:1057:5:1058:19 | S | +| main.rs:1104:27:1104:29 | * ... | &T.T | main.rs:1060:5:1061:14 | S2 | +| main.rs:1104:27:1104:29 | * ... | T | main.rs:1060:5:1061:14 | S2 | +| main.rs:1104:28:1104:29 | x6 | | file://:0:0:0:0 | & | +| main.rs:1104:28:1104:29 | x6 | &T | file://:0:0:0:0 | & | +| main.rs:1104:28:1104:29 | x6 | &T | main.rs:1057:5:1058:19 | S | +| main.rs:1104:28:1104:29 | x6 | &T.&T | main.rs:1057:5:1058:19 | S | +| main.rs:1104:28:1104:29 | x6 | &T.&T.T | main.rs:1060:5:1061:14 | S2 | +| main.rs:1104:28:1104:29 | x6 | &T.T | main.rs:1060:5:1061:14 | S2 | +| main.rs:1106:13:1106:14 | x7 | | main.rs:1057:5:1058:19 | S | +| main.rs:1106:13:1106:14 | x7 | T | file://:0:0:0:0 | & | +| main.rs:1106:13:1106:14 | x7 | T.&T | main.rs:1060:5:1061:14 | S2 | +| main.rs:1106:18:1106:23 | S(...) | | main.rs:1057:5:1058:19 | S | +| main.rs:1106:18:1106:23 | S(...) | T | file://:0:0:0:0 | & | +| main.rs:1106:18:1106:23 | S(...) | T.&T | main.rs:1060:5:1061:14 | S2 | +| main.rs:1106:20:1106:22 | &S2 | | file://:0:0:0:0 | & | +| main.rs:1106:20:1106:22 | &S2 | &T | main.rs:1060:5:1061:14 | S2 | +| main.rs:1106:21:1106:22 | S2 | | main.rs:1060:5:1061:14 | S2 | +| main.rs:1109:13:1109:13 | t | | file://:0:0:0:0 | & | +| main.rs:1109:13:1109:13 | t | &T | main.rs:1060:5:1061:14 | S2 | +| main.rs:1109:17:1109:18 | x7 | | main.rs:1057:5:1058:19 | S | +| main.rs:1109:17:1109:18 | x7 | T | file://:0:0:0:0 | & | +| main.rs:1109:17:1109:18 | x7 | T.&T | main.rs:1060:5:1061:14 | S2 | +| main.rs:1109:17:1109:23 | x7.m1() | | file://:0:0:0:0 | & | +| main.rs:1109:17:1109:23 | x7.m1() | &T | main.rs:1060:5:1061:14 | S2 | +| main.rs:1110:18:1110:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1110:26:1110:27 | x7 | | main.rs:1057:5:1058:19 | S | +| main.rs:1110:26:1110:27 | x7 | T | file://:0:0:0:0 | & | +| main.rs:1110:26:1110:27 | x7 | T.&T | main.rs:1060:5:1061:14 | S2 | +| main.rs:1112:13:1112:14 | x9 | | {EXTERNAL LOCATION} | String | +| main.rs:1112:27:1112:33 | "Hello" | | {EXTERNAL LOCATION} | str | +| main.rs:1112:27:1112:45 | "Hello".to_string() | | {EXTERNAL LOCATION} | String | +| main.rs:1115:13:1115:13 | u | | {EXTERNAL LOCATION} | Result | +| main.rs:1115:13:1115:13 | u | T | {EXTERNAL LOCATION} | u32 | +| main.rs:1115:17:1115:18 | x9 | | {EXTERNAL LOCATION} | String | +| main.rs:1115:17:1115:33 | x9.parse() | | {EXTERNAL LOCATION} | Result | +| main.rs:1115:17:1115:33 | x9.parse() | T | {EXTERNAL LOCATION} | u32 | +| main.rs:1122:16:1122:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1122:16:1122:20 | SelfParam | &T | main.rs:1120:5:1128:5 | Self [trait MyTrait] | +| main.rs:1125:16:1125:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1125:16:1125:20 | SelfParam | &T | main.rs:1120:5:1128:5 | Self [trait MyTrait] | +| main.rs:1125:32:1127:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1125:32:1127:9 | { ... } | &T | main.rs:1120:5:1128:5 | Self [trait MyTrait] | +| main.rs:1126:13:1126:16 | self | | file://:0:0:0:0 | & | +| main.rs:1126:13:1126:16 | self | &T | main.rs:1120:5:1128:5 | Self [trait MyTrait] | +| main.rs:1126:13:1126:22 | self.foo() | | file://:0:0:0:0 | & | +| main.rs:1126:13:1126:22 | self.foo() | &T | main.rs:1120:5:1128:5 | Self [trait MyTrait] | +| main.rs:1134:16:1134:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1134:16:1134:20 | SelfParam | &T | main.rs:1130:5:1130:20 | MyStruct | +| main.rs:1134:36:1136:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1134:36:1136:9 | { ... } | &T | main.rs:1130:5:1130:20 | MyStruct | +| main.rs:1135:13:1135:16 | self | | file://:0:0:0:0 | & | +| main.rs:1135:13:1135:16 | self | &T | main.rs:1130:5:1130:20 | MyStruct | +| main.rs:1140:13:1140:13 | x | | main.rs:1130:5:1130:20 | MyStruct | +| main.rs:1140:17:1140:24 | MyStruct | | main.rs:1130:5:1130:20 | MyStruct | +| main.rs:1141:9:1141:9 | x | | main.rs:1130:5:1130:20 | MyStruct | +| main.rs:1141:9:1141:15 | x.bar() | | file://:0:0:0:0 | & | +| main.rs:1141:9:1141:15 | x.bar() | &T | main.rs:1130:5:1130:20 | MyStruct | +| main.rs:1151:16:1151:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1151:16:1151:20 | SelfParam | &T | main.rs:1148:5:1148:26 | MyStruct | +| main.rs:1151:16:1151:20 | SelfParam | &T.T | main.rs:1150:10:1150:10 | T | +| main.rs:1151:32:1153:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1151:32:1153:9 | { ... } | &T | main.rs:1148:5:1148:26 | MyStruct | +| main.rs:1151:32:1153:9 | { ... } | &T.T | main.rs:1150:10:1150:10 | T | +| main.rs:1152:13:1152:16 | self | | file://:0:0:0:0 | & | +| main.rs:1152:13:1152:16 | self | &T | main.rs:1148:5:1148:26 | MyStruct | +| main.rs:1152:13:1152:16 | self | &T.T | main.rs:1150:10:1150:10 | T | +| main.rs:1157:13:1157:13 | x | | main.rs:1148:5:1148:26 | MyStruct | +| main.rs:1157:13:1157:13 | x | T | main.rs:1146:5:1146:13 | S | +| main.rs:1157:17:1157:27 | MyStruct(...) | | main.rs:1148:5:1148:26 | MyStruct | +| main.rs:1157:17:1157:27 | MyStruct(...) | T | main.rs:1146:5:1146:13 | S | +| main.rs:1157:26:1157:26 | S | | main.rs:1146:5:1146:13 | S | +| main.rs:1158:9:1158:9 | x | | main.rs:1148:5:1148:26 | MyStruct | +| main.rs:1158:9:1158:9 | x | T | main.rs:1146:5:1146:13 | S | +| main.rs:1158:9:1158:15 | x.foo() | | file://:0:0:0:0 | & | +| main.rs:1158:9:1158:15 | x.foo() | &T | main.rs:1148:5:1148:26 | MyStruct | +| main.rs:1158:9:1158:15 | x.foo() | &T.T | main.rs:1146:5:1146:13 | S | +| main.rs:1169:17:1169:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1169:17:1169:25 | SelfParam | &T | main.rs:1163:5:1166:5 | MyFlag | +| main.rs:1170:13:1170:16 | self | | file://:0:0:0:0 | & | +| main.rs:1170:13:1170:16 | self | &T | main.rs:1163:5:1166:5 | MyFlag | +| main.rs:1170:13:1170:21 | self.bool | | {EXTERNAL LOCATION} | bool | +| main.rs:1170:13:1170:34 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1170:25:1170:34 | ! ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1170:26:1170:29 | self | | file://:0:0:0:0 | & | +| main.rs:1170:26:1170:29 | self | &T | main.rs:1163:5:1166:5 | MyFlag | +| main.rs:1170:26:1170:34 | self.bool | | {EXTERNAL LOCATION} | bool | +| main.rs:1177:15:1177:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1177:15:1177:19 | SelfParam | &T | main.rs:1174:5:1174:13 | S | +| main.rs:1177:31:1179:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1177:31:1179:9 | { ... } | &T | file://:0:0:0:0 | & | +| main.rs:1177:31:1179:9 | { ... } | &T | main.rs:1174:5:1174:13 | S | +| main.rs:1177:31:1179:9 | { ... } | &T.&T | file://:0:0:0:0 | & | +| main.rs:1177:31:1179:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1177:31:1179:9 | { ... } | &T.&T.&T.&T | main.rs:1174:5:1174:13 | S | +| main.rs:1178:13:1178:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1178:13:1178:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1178:13:1178:19 | &... | &T | main.rs:1174:5:1174:13 | S | +| main.rs:1178:13:1178:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1178:13:1178:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1178:13:1178:19 | &... | &T.&T.&T.&T | main.rs:1174:5:1174:13 | S | +| main.rs:1178:14:1178:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1178:14:1178:19 | &... | | main.rs:1174:5:1174:13 | S | +| main.rs:1178:14:1178:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1178:14:1178:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1178:14:1178:19 | &... | &T.&T.&T | main.rs:1174:5:1174:13 | S | +| main.rs:1178:15:1178:19 | &self | | file://:0:0:0:0 | & | +| main.rs:1178:15:1178:19 | &self | &T | file://:0:0:0:0 | & | +| main.rs:1178:15:1178:19 | &self | &T.&T | main.rs:1174:5:1174:13 | S | +| main.rs:1178:16:1178:19 | self | | file://:0:0:0:0 | & | +| main.rs:1178:16:1178:19 | self | &T | main.rs:1174:5:1174:13 | S | +| main.rs:1181:15:1181:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1181:15:1181:25 | SelfParam | &T | main.rs:1174:5:1174:13 | S | +| main.rs:1181:37:1183:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1181:37:1183:9 | { ... } | &T | file://:0:0:0:0 | & | +| main.rs:1181:37:1183:9 | { ... } | &T | main.rs:1174:5:1174:13 | S | +| main.rs:1181:37:1183:9 | { ... } | &T.&T | file://:0:0:0:0 | & | +| main.rs:1181:37:1183:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1181:37:1183:9 | { ... } | &T.&T.&T.&T | main.rs:1174:5:1174:13 | S | +| main.rs:1182:13:1182:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1182:13:1182:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1182:13:1182:19 | &... | &T | main.rs:1174:5:1174:13 | S | +| main.rs:1182:13:1182:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1182:13:1182:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1182:13:1182:19 | &... | &T.&T.&T.&T | main.rs:1174:5:1174:13 | S | +| main.rs:1182:14:1182:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1182:14:1182:19 | &... | | main.rs:1174:5:1174:13 | S | +| main.rs:1182:14:1182:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1182:14:1182:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1182:14:1182:19 | &... | &T.&T.&T | main.rs:1174:5:1174:13 | S | +| main.rs:1182:15:1182:19 | &self | | file://:0:0:0:0 | & | +| main.rs:1182:15:1182:19 | &self | &T | file://:0:0:0:0 | & | +| main.rs:1182:15:1182:19 | &self | &T.&T | main.rs:1174:5:1174:13 | S | +| main.rs:1182:16:1182:19 | self | | file://:0:0:0:0 | & | +| main.rs:1182:16:1182:19 | self | &T | main.rs:1174:5:1174:13 | S | +| main.rs:1185:15:1185:15 | x | | file://:0:0:0:0 | & | +| main.rs:1185:15:1185:15 | x | &T | main.rs:1174:5:1174:13 | S | +| main.rs:1185:34:1187:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1185:34:1187:9 | { ... } | &T | main.rs:1174:5:1174:13 | S | +| main.rs:1186:13:1186:13 | x | | file://:0:0:0:0 | & | +| main.rs:1186:13:1186:13 | x | &T | main.rs:1174:5:1174:13 | S | +| main.rs:1189:15:1189:15 | x | | file://:0:0:0:0 | & | +| main.rs:1189:15:1189:15 | x | &T | main.rs:1174:5:1174:13 | S | +| main.rs:1189:34:1191:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1189:34:1191:9 | { ... } | &T | file://:0:0:0:0 | & | +| main.rs:1189:34:1191:9 | { ... } | &T | main.rs:1174:5:1174:13 | S | +| main.rs:1189:34:1191:9 | { ... } | &T.&T | file://:0:0:0:0 | & | +| main.rs:1189:34:1191:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1189:34:1191:9 | { ... } | &T.&T.&T.&T | main.rs:1174:5:1174:13 | S | +| main.rs:1190:13:1190:16 | &... | | file://:0:0:0:0 | & | +| main.rs:1190:13:1190:16 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1190:13:1190:16 | &... | &T | main.rs:1174:5:1174:13 | S | +| main.rs:1190:13:1190:16 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1190:13:1190:16 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1190:13:1190:16 | &... | &T.&T.&T.&T | main.rs:1174:5:1174:13 | S | +| main.rs:1190:14:1190:16 | &... | | file://:0:0:0:0 | & | +| main.rs:1190:14:1190:16 | &... | | main.rs:1174:5:1174:13 | S | +| main.rs:1190:14:1190:16 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1190:14:1190:16 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1190:14:1190:16 | &... | &T.&T.&T | main.rs:1174:5:1174:13 | S | +| main.rs:1190:15:1190:16 | &x | | file://:0:0:0:0 | & | +| main.rs:1190:15:1190:16 | &x | &T | file://:0:0:0:0 | & | +| main.rs:1190:15:1190:16 | &x | &T.&T | main.rs:1174:5:1174:13 | S | +| main.rs:1190:16:1190:16 | x | | file://:0:0:0:0 | & | +| main.rs:1190:16:1190:16 | x | &T | main.rs:1174:5:1174:13 | S | +| main.rs:1195:13:1195:13 | x | | main.rs:1174:5:1174:13 | S | +| main.rs:1195:17:1195:20 | S {...} | | main.rs:1174:5:1174:13 | S | +| main.rs:1196:9:1196:9 | x | | main.rs:1174:5:1174:13 | S | +| main.rs:1196:9:1196:14 | x.f1() | | file://:0:0:0:0 | & | +| main.rs:1196:9:1196:14 | x.f1() | &T | main.rs:1174:5:1174:13 | S | +| main.rs:1197:9:1197:9 | x | | main.rs:1174:5:1174:13 | S | +| main.rs:1197:9:1197:14 | x.f2() | | file://:0:0:0:0 | & | +| main.rs:1197:9:1197:14 | x.f2() | &T | main.rs:1174:5:1174:13 | S | +| main.rs:1198:9:1198:17 | ...::f3(...) | | file://:0:0:0:0 | & | +| main.rs:1198:9:1198:17 | ...::f3(...) | &T | main.rs:1174:5:1174:13 | S | +| main.rs:1198:15:1198:16 | &x | | file://:0:0:0:0 | & | +| main.rs:1198:15:1198:16 | &x | &T | main.rs:1174:5:1174:13 | S | +| main.rs:1198:16:1198:16 | x | | main.rs:1174:5:1174:13 | S | +| main.rs:1200:13:1200:13 | n | | {EXTERNAL LOCATION} | bool | +| main.rs:1200:13:1200:13 | n | | file://:0:0:0:0 | & | +| main.rs:1200:17:1200:24 | * ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1200:17:1200:24 | * ... | | file://:0:0:0:0 | & | +| main.rs:1200:18:1200:24 | * ... | | file://:0:0:0:0 | & | +| main.rs:1200:18:1200:24 | * ... | &T | {EXTERNAL LOCATION} | bool | +| main.rs:1200:18:1200:24 | * ... | &T | file://:0:0:0:0 | & | +| main.rs:1200:19:1200:24 | &... | | file://:0:0:0:0 | & | +| main.rs:1200:19:1200:24 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1200:19:1200:24 | &... | &T.&T | {EXTERNAL LOCATION} | bool | +| main.rs:1200:19:1200:24 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1200:20:1200:24 | &true | | file://:0:0:0:0 | & | +| main.rs:1200:20:1200:24 | &true | &T | {EXTERNAL LOCATION} | bool | +| main.rs:1200:20:1200:24 | &true | &T | file://:0:0:0:0 | & | +| main.rs:1200:21:1200:24 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1200:21:1200:24 | true | | file://:0:0:0:0 | & | +| main.rs:1204:13:1204:20 | mut flag | | main.rs:1163:5:1166:5 | MyFlag | +| main.rs:1204:24:1204:41 | ...::default(...) | | main.rs:1163:5:1166:5 | MyFlag | +| main.rs:1205:22:1205:30 | &mut flag | | file://:0:0:0:0 | & | +| main.rs:1205:22:1205:30 | &mut flag | &T | main.rs:1163:5:1166:5 | MyFlag | +| main.rs:1205:27:1205:30 | flag | | main.rs:1163:5:1166:5 | MyFlag | +| main.rs:1206:18:1206:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1206:26:1206:29 | flag | | main.rs:1163:5:1166:5 | MyFlag | +| main.rs:1220:43:1223:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1220:43:1223:5 | { ... } | E | main.rs:1213:5:1214:14 | S1 | +| main.rs:1220:43:1223:5 | { ... } | T | main.rs:1213:5:1214:14 | S1 | +| main.rs:1221:13:1221:13 | x | | main.rs:1213:5:1214:14 | S1 | +| main.rs:1221:17:1221:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1221:17:1221:30 | ...::Ok(...) | T | main.rs:1213:5:1214:14 | S1 | +| main.rs:1221:17:1221:31 | TryExpr | | main.rs:1213:5:1214:14 | S1 | +| main.rs:1221:28:1221:29 | S1 | | main.rs:1213:5:1214:14 | S1 | +| main.rs:1222:9:1222:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1222:9:1222:22 | ...::Ok(...) | E | main.rs:1213:5:1214:14 | S1 | +| main.rs:1222:9:1222:22 | ...::Ok(...) | T | main.rs:1213:5:1214:14 | S1 | +| main.rs:1222:20:1222:21 | S1 | | main.rs:1213:5:1214:14 | S1 | +| main.rs:1226:46:1230:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1226:46:1230:5 | { ... } | E | main.rs:1216:5:1217:14 | S2 | +| main.rs:1226:46:1230:5 | { ... } | T | main.rs:1213:5:1214:14 | S1 | +| main.rs:1227:13:1227:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1227:13:1227:13 | x | T | main.rs:1213:5:1214:14 | S1 | +| main.rs:1227:17:1227:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1227:17:1227:30 | ...::Ok(...) | T | main.rs:1213:5:1214:14 | S1 | +| main.rs:1227:28:1227:29 | S1 | | main.rs:1213:5:1214:14 | S1 | +| main.rs:1228:13:1228:13 | y | | main.rs:1213:5:1214:14 | S1 | +| main.rs:1228:17:1228:17 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1228:17:1228:17 | x | T | main.rs:1213:5:1214:14 | S1 | +| main.rs:1228:17:1228:18 | TryExpr | | main.rs:1213:5:1214:14 | S1 | +| main.rs:1229:9:1229:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1229:9:1229:22 | ...::Ok(...) | E | main.rs:1216:5:1217:14 | S2 | +| main.rs:1229:9:1229:22 | ...::Ok(...) | T | main.rs:1213:5:1214:14 | S1 | +| main.rs:1229:20:1229:21 | S1 | | main.rs:1213:5:1214:14 | S1 | +| main.rs:1233:40:1238:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1233:40:1238:5 | { ... } | E | main.rs:1216:5:1217:14 | S2 | +| main.rs:1233:40:1238:5 | { ... } | T | main.rs:1213:5:1214:14 | S1 | +| main.rs:1234:13:1234:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1234:13:1234:13 | x | T | {EXTERNAL LOCATION} | Result | +| main.rs:1234:13:1234:13 | x | T.T | main.rs:1213:5:1214:14 | S1 | +| main.rs:1234:17:1234:42 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1234:17:1234:42 | ...::Ok(...) | T | {EXTERNAL LOCATION} | Result | +| main.rs:1234:17:1234:42 | ...::Ok(...) | T.T | main.rs:1213:5:1214:14 | S1 | +| main.rs:1234:28:1234:41 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1234:28:1234:41 | ...::Ok(...) | T | main.rs:1213:5:1214:14 | S1 | +| main.rs:1234:39:1234:40 | S1 | | main.rs:1213:5:1214:14 | S1 | +| main.rs:1236:17:1236:17 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1236:17:1236:17 | x | T | {EXTERNAL LOCATION} | Result | +| main.rs:1236:17:1236:17 | x | T.T | main.rs:1213:5:1214:14 | S1 | +| main.rs:1236:17:1236:18 | TryExpr | | {EXTERNAL LOCATION} | Result | +| main.rs:1236:17:1236:18 | TryExpr | T | main.rs:1213:5:1214:14 | S1 | +| main.rs:1236:17:1236:29 | ... .map(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1237:9:1237:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1237:9:1237:22 | ...::Ok(...) | E | main.rs:1216:5:1217:14 | S2 | +| main.rs:1237:9:1237:22 | ...::Ok(...) | T | main.rs:1213:5:1214:14 | S1 | +| main.rs:1237:20:1237:21 | S1 | | main.rs:1213:5:1214:14 | S1 | +| main.rs:1241:30:1241:34 | input | | {EXTERNAL LOCATION} | Result | +| main.rs:1241:30:1241:34 | input | E | main.rs:1213:5:1214:14 | S1 | +| main.rs:1241:30:1241:34 | input | T | main.rs:1241:20:1241:27 | T | +| main.rs:1241:69:1248:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1241:69:1248:5 | { ... } | E | main.rs:1213:5:1214:14 | S1 | +| main.rs:1241:69:1248:5 | { ... } | T | main.rs:1241:20:1241:27 | T | +| main.rs:1242:13:1242:17 | value | | main.rs:1241:20:1241:27 | T | +| main.rs:1242:21:1242:25 | input | | {EXTERNAL LOCATION} | Result | +| main.rs:1242:21:1242:25 | input | E | main.rs:1213:5:1214:14 | S1 | +| main.rs:1242:21:1242:25 | input | T | main.rs:1241:20:1241:27 | T | +| main.rs:1242:21:1242:26 | TryExpr | | main.rs:1241:20:1241:27 | T | +| main.rs:1243:22:1243:38 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1243:22:1243:38 | ...::Ok(...) | T | main.rs:1241:20:1241:27 | T | +| main.rs:1243:22:1246:10 | ... .and_then(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1243:33:1243:37 | value | | main.rs:1241:20:1241:27 | T | +| main.rs:1243:53:1246:9 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1243:53:1246:9 | { ... } | E | main.rs:1213:5:1214:14 | S1 | +| main.rs:1244:22:1244:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1245:13:1245:34 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1245:13:1245:34 | ...::Ok::<...>(...) | E | main.rs:1213:5:1214:14 | S1 | +| main.rs:1247:9:1247:23 | ...::Err(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1247:9:1247:23 | ...::Err(...) | E | main.rs:1213:5:1214:14 | S1 | +| main.rs:1247:9:1247:23 | ...::Err(...) | T | main.rs:1241:20:1241:27 | T | +| main.rs:1247:21:1247:22 | S1 | | main.rs:1213:5:1214:14 | S1 | +| main.rs:1251:37:1251:52 | try_same_error(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1251:37:1251:52 | try_same_error(...) | E | main.rs:1213:5:1214:14 | S1 | +| main.rs:1251:37:1251:52 | try_same_error(...) | T | main.rs:1213:5:1214:14 | S1 | +| main.rs:1252:22:1252:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1255:37:1255:55 | try_convert_error(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1255:37:1255:55 | try_convert_error(...) | E | main.rs:1216:5:1217:14 | S2 | +| main.rs:1255:37:1255:55 | try_convert_error(...) | T | main.rs:1213:5:1214:14 | S1 | +| main.rs:1256:22:1256:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1259:37:1259:49 | try_chained(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1259:37:1259:49 | try_chained(...) | E | main.rs:1216:5:1217:14 | S2 | +| main.rs:1259:37:1259:49 | try_chained(...) | T | main.rs:1213:5:1214:14 | S1 | +| main.rs:1260:22:1260:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1263:37:1263:63 | try_complex(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1263:37:1263:63 | try_complex(...) | E | main.rs:1213:5:1214:14 | S1 | +| main.rs:1263:37:1263:63 | try_complex(...) | T | main.rs:1213:5:1214:14 | S1 | +| main.rs:1263:49:1263:62 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1263:49:1263:62 | ...::Ok(...) | E | main.rs:1213:5:1214:14 | S1 | +| main.rs:1263:49:1263:62 | ...::Ok(...) | T | main.rs:1213:5:1214:14 | S1 | +| main.rs:1263:60:1263:61 | S1 | | main.rs:1213:5:1214:14 | S1 | +| main.rs:1264:22:1264:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1271:13:1271:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1271:22:1271:22 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1272:13:1272:13 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:1272:17:1272:17 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:1273:13:1273:13 | z | | {EXTERNAL LOCATION} | i32 | | main.rs:1273:17:1273:17 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1273:17:1273:23 | x.abs() | | {EXTERNAL LOCATION} | i32 | -| main.rs:1274:13:1274:13 | c | | {EXTERNAL LOCATION} | char | -| main.rs:1274:17:1274:19 | 'c' | | {EXTERNAL LOCATION} | char | -| main.rs:1275:13:1275:17 | hello | | {EXTERNAL LOCATION} | str | -| main.rs:1275:21:1275:27 | "Hello" | | {EXTERNAL LOCATION} | str | -| main.rs:1276:13:1276:13 | f | | {EXTERNAL LOCATION} | f64 | -| main.rs:1276:17:1276:24 | 123.0f64 | | {EXTERNAL LOCATION} | f64 | -| main.rs:1277:13:1277:13 | t | | {EXTERNAL LOCATION} | bool | -| main.rs:1277:17:1277:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1278:13:1278:13 | f | | {EXTERNAL LOCATION} | bool | -| main.rs:1278:17:1278:21 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1285:13:1285:13 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:1285:17:1285:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1285:17:1285:29 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1285:25:1285:29 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1286:13:1286:13 | y | | {EXTERNAL LOCATION} | bool | +| main.rs:1273:17:1273:21 | ... + ... | | {EXTERNAL LOCATION} | i32 | +| main.rs:1273:21:1273:21 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:1274:13:1274:13 | z | | {EXTERNAL LOCATION} | i32 | +| main.rs:1274:17:1274:17 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1274:17:1274:23 | x.abs() | | {EXTERNAL LOCATION} | i32 | +| main.rs:1275:13:1275:13 | c | | {EXTERNAL LOCATION} | char | +| main.rs:1275:17:1275:19 | 'c' | | {EXTERNAL LOCATION} | char | +| main.rs:1276:13:1276:17 | hello | | {EXTERNAL LOCATION} | str | +| main.rs:1276:21:1276:27 | "Hello" | | {EXTERNAL LOCATION} | str | +| main.rs:1277:13:1277:13 | f | | {EXTERNAL LOCATION} | f64 | +| main.rs:1277:17:1277:24 | 123.0f64 | | {EXTERNAL LOCATION} | f64 | +| main.rs:1278:13:1278:13 | t | | {EXTERNAL LOCATION} | bool | +| main.rs:1278:17:1278:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1279:13:1279:13 | f | | {EXTERNAL LOCATION} | bool | +| main.rs:1279:17:1279:21 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1286:13:1286:13 | x | | {EXTERNAL LOCATION} | bool | | main.rs:1286:17:1286:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1286:17:1286:29 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1286:17:1286:29 | ... && ... | | {EXTERNAL LOCATION} | bool | | main.rs:1286:25:1286:29 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1288:13:1288:17 | mut a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1289:13:1289:16 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:1289:20:1289:21 | 34 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1289:20:1289:27 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1289:26:1289:27 | 33 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1290:12:1290:15 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:1291:17:1291:17 | z | | file://:0:0:0:0 | () | -| main.rs:1291:21:1291:27 | (...) | | file://:0:0:0:0 | () | -| main.rs:1291:22:1291:22 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1291:22:1291:26 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1291:26:1291:26 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1293:13:1293:13 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1293:13:1293:17 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1293:17:1293:17 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1295:9:1295:9 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1312:16:1312:19 | SelfParam | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1312:22:1312:24 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1312:41:1317:9 | { ... } | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1313:13:1316:13 | Vec2 {...} | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1314:20:1314:23 | self | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1314:20:1314:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1314:20:1314:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1314:29:1314:31 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1314:29:1314:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1315:20:1315:23 | self | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1315:20:1315:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1287:13:1287:13 | y | | {EXTERNAL LOCATION} | bool | +| main.rs:1287:17:1287:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1287:17:1287:29 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1287:25:1287:29 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1289:13:1289:17 | mut a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1290:13:1290:16 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:1290:20:1290:21 | 34 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1290:20:1290:27 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1290:26:1290:27 | 33 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1291:12:1291:15 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:1292:17:1292:17 | z | | file://:0:0:0:0 | () | +| main.rs:1292:21:1292:27 | (...) | | file://:0:0:0:0 | () | +| main.rs:1292:22:1292:22 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1292:22:1292:26 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1292:26:1292:26 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1294:13:1294:13 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1294:13:1294:17 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1294:17:1294:17 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1296:9:1296:9 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1313:16:1313:19 | SelfParam | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1313:22:1313:24 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1313:41:1318:9 | { ... } | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1314:13:1317:13 | Vec2 {...} | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1315:20:1315:23 | self | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1315:20:1315:25 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1315:20:1315:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1315:29:1315:31 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1315:29:1315:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1322:23:1322:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1322:23:1322:31 | SelfParam | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1322:34:1322:36 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1323:13:1323:16 | self | | file://:0:0:0:0 | & | -| main.rs:1323:13:1323:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1323:13:1323:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1323:13:1323:27 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1323:23:1323:25 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1323:23:1323:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1315:29:1315:31 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1315:29:1315:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1316:20:1316:23 | self | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1316:20:1316:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1316:20:1316:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1316:29:1316:31 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1316:29:1316:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1323:23:1323:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1323:23:1323:31 | SelfParam | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1323:34:1323:36 | rhs | | main.rs:1303:5:1308:5 | Vec2 | | main.rs:1324:13:1324:16 | self | | file://:0:0:0:0 | & | -| main.rs:1324:13:1324:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1324:13:1324:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1324:13:1324:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1324:13:1324:18 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1324:13:1324:27 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1324:23:1324:25 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1324:23:1324:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1330:16:1330:19 | SelfParam | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1330:22:1330:24 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1330:41:1335:9 | { ... } | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1331:13:1334:13 | Vec2 {...} | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1332:20:1332:23 | self | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1332:20:1332:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1332:20:1332:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1332:29:1332:31 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1332:29:1332:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1333:20:1333:23 | self | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1333:20:1333:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1324:23:1324:25 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1324:23:1324:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1325:13:1325:16 | self | | file://:0:0:0:0 | & | +| main.rs:1325:13:1325:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1325:13:1325:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1325:13:1325:27 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1325:23:1325:25 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1325:23:1325:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1331:16:1331:19 | SelfParam | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1331:22:1331:24 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1331:41:1336:9 | { ... } | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1332:13:1335:13 | Vec2 {...} | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1333:20:1333:23 | self | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1333:20:1333:25 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1333:20:1333:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1333:29:1333:31 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1333:29:1333:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1340:23:1340:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1340:23:1340:31 | SelfParam | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1340:34:1340:36 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1341:13:1341:16 | self | | file://:0:0:0:0 | & | -| main.rs:1341:13:1341:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1341:13:1341:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1341:13:1341:27 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1341:23:1341:25 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1341:23:1341:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1333:29:1333:31 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1333:29:1333:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1334:20:1334:23 | self | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1334:20:1334:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1334:20:1334:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1334:29:1334:31 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1334:29:1334:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1341:23:1341:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1341:23:1341:31 | SelfParam | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1341:34:1341:36 | rhs | | main.rs:1303:5:1308:5 | Vec2 | | main.rs:1342:13:1342:16 | self | | file://:0:0:0:0 | & | -| main.rs:1342:13:1342:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1342:13:1342:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1342:13:1342:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1342:13:1342:18 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1342:13:1342:27 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1342:23:1342:25 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1342:23:1342:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1348:16:1348:19 | SelfParam | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1348:22:1348:24 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1348:41:1353:9 | { ... } | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1349:13:1352:13 | Vec2 {...} | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1350:20:1350:23 | self | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1350:20:1350:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1350:20:1350:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1350:29:1350:31 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1350:29:1350:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1351:20:1351:23 | self | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1351:20:1351:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1342:23:1342:25 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1342:23:1342:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1343:13:1343:16 | self | | file://:0:0:0:0 | & | +| main.rs:1343:13:1343:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1343:13:1343:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1343:13:1343:27 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1343:23:1343:25 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1343:23:1343:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1349:16:1349:19 | SelfParam | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1349:22:1349:24 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1349:41:1354:9 | { ... } | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1350:13:1353:13 | Vec2 {...} | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1351:20:1351:23 | self | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1351:20:1351:25 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1351:20:1351:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1351:29:1351:31 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1351:29:1351:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1357:23:1357:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1357:23:1357:31 | SelfParam | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1357:34:1357:36 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1358:13:1358:16 | self | | file://:0:0:0:0 | & | -| main.rs:1358:13:1358:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1358:13:1358:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1358:13:1358:27 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1358:23:1358:25 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1358:23:1358:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1351:29:1351:31 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1351:29:1351:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1352:20:1352:23 | self | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1352:20:1352:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1352:20:1352:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1352:29:1352:31 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1352:29:1352:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1358:23:1358:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1358:23:1358:31 | SelfParam | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1358:34:1358:36 | rhs | | main.rs:1303:5:1308:5 | Vec2 | | main.rs:1359:13:1359:16 | self | | file://:0:0:0:0 | & | -| main.rs:1359:13:1359:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1359:13:1359:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1359:13:1359:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1359:13:1359:18 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1359:13:1359:27 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1359:23:1359:25 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1359:23:1359:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1365:16:1365:19 | SelfParam | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1365:22:1365:24 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1365:41:1370:9 | { ... } | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1366:13:1369:13 | Vec2 {...} | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1367:20:1367:23 | self | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1367:20:1367:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1367:20:1367:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1367:29:1367:31 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1367:29:1367:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1368:20:1368:23 | self | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1368:20:1368:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1359:23:1359:25 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1359:23:1359:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1360:13:1360:16 | self | | file://:0:0:0:0 | & | +| main.rs:1360:13:1360:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1360:13:1360:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1360:13:1360:27 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1360:23:1360:25 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1360:23:1360:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1366:16:1366:19 | SelfParam | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1366:22:1366:24 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1366:41:1371:9 | { ... } | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1367:13:1370:13 | Vec2 {...} | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1368:20:1368:23 | self | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1368:20:1368:25 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1368:20:1368:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1368:29:1368:31 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1368:29:1368:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1374:23:1374:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1374:23:1374:31 | SelfParam | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1374:34:1374:36 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1375:13:1375:16 | self | | file://:0:0:0:0 | & | -| main.rs:1375:13:1375:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1375:13:1375:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1375:13:1375:27 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1375:23:1375:25 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1375:23:1375:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1368:29:1368:31 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1368:29:1368:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1369:20:1369:23 | self | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1369:20:1369:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1369:20:1369:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1369:29:1369:31 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1369:29:1369:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1375:23:1375:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1375:23:1375:31 | SelfParam | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1375:34:1375:36 | rhs | | main.rs:1303:5:1308:5 | Vec2 | | main.rs:1376:13:1376:16 | self | | file://:0:0:0:0 | & | -| main.rs:1376:13:1376:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1376:13:1376:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1376:13:1376:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1376:13:1376:18 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1376:13:1376:27 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1376:23:1376:25 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1376:23:1376:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1382:16:1382:19 | SelfParam | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1382:22:1382:24 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1382:41:1387:9 | { ... } | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1383:13:1386:13 | Vec2 {...} | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1384:20:1384:23 | self | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1384:20:1384:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1384:20:1384:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1384:29:1384:31 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1384:29:1384:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1385:20:1385:23 | self | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1385:20:1385:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1376:23:1376:25 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1376:23:1376:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1377:13:1377:16 | self | | file://:0:0:0:0 | & | +| main.rs:1377:13:1377:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1377:13:1377:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1377:13:1377:27 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1377:23:1377:25 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1377:23:1377:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1383:16:1383:19 | SelfParam | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1383:22:1383:24 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1383:41:1388:9 | { ... } | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1384:13:1387:13 | Vec2 {...} | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1385:20:1385:23 | self | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1385:20:1385:25 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1385:20:1385:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1385:29:1385:31 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1385:29:1385:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1391:23:1391:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1391:23:1391:31 | SelfParam | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1391:34:1391:36 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1392:13:1392:16 | self | | file://:0:0:0:0 | & | -| main.rs:1392:13:1392:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1392:13:1392:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1392:13:1392:27 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1392:23:1392:25 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1392:23:1392:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1385:29:1385:31 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1385:29:1385:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1386:20:1386:23 | self | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1386:20:1386:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1386:20:1386:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1386:29:1386:31 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1386:29:1386:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1392:23:1392:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1392:23:1392:31 | SelfParam | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1392:34:1392:36 | rhs | | main.rs:1303:5:1308:5 | Vec2 | | main.rs:1393:13:1393:16 | self | | file://:0:0:0:0 | & | -| main.rs:1393:13:1393:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1393:13:1393:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1393:13:1393:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1393:13:1393:18 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1393:13:1393:27 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1393:23:1393:25 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1393:23:1393:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1399:19:1399:22 | SelfParam | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1399:25:1399:27 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1399:44:1404:9 | { ... } | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1400:13:1403:13 | Vec2 {...} | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1401:20:1401:23 | self | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1401:20:1401:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1401:20:1401:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1401:29:1401:31 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1401:29:1401:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1402:20:1402:23 | self | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1402:20:1402:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1393:23:1393:25 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1393:23:1393:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1394:13:1394:16 | self | | file://:0:0:0:0 | & | +| main.rs:1394:13:1394:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1394:13:1394:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1394:13:1394:27 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1394:23:1394:25 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1394:23:1394:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1400:19:1400:22 | SelfParam | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1400:25:1400:27 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1400:44:1405:9 | { ... } | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1401:13:1404:13 | Vec2 {...} | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1402:20:1402:23 | self | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1402:20:1402:25 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1402:20:1402:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1402:29:1402:31 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1402:29:1402:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1408:26:1408:34 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1408:26:1408:34 | SelfParam | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1408:37:1408:39 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1409:13:1409:16 | self | | file://:0:0:0:0 | & | -| main.rs:1409:13:1409:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1409:13:1409:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1409:13:1409:27 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1409:23:1409:25 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1409:23:1409:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1402:29:1402:31 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1402:29:1402:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1403:20:1403:23 | self | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1403:20:1403:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1403:20:1403:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1403:29:1403:31 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1403:29:1403:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1409:26:1409:34 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1409:26:1409:34 | SelfParam | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1409:37:1409:39 | rhs | | main.rs:1303:5:1308:5 | Vec2 | | main.rs:1410:13:1410:16 | self | | file://:0:0:0:0 | & | -| main.rs:1410:13:1410:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1410:13:1410:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1410:13:1410:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1410:13:1410:18 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1410:13:1410:27 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1410:23:1410:25 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1410:23:1410:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1416:18:1416:21 | SelfParam | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1416:24:1416:26 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1416:43:1421:9 | { ... } | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1417:13:1420:13 | Vec2 {...} | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1418:20:1418:23 | self | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1418:20:1418:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1418:20:1418:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1418:29:1418:31 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1418:29:1418:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1419:20:1419:23 | self | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1419:20:1419:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1410:23:1410:25 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1410:23:1410:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1411:13:1411:16 | self | | file://:0:0:0:0 | & | +| main.rs:1411:13:1411:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1411:13:1411:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1411:13:1411:27 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1411:23:1411:25 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1411:23:1411:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1417:18:1417:21 | SelfParam | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1417:24:1417:26 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1417:43:1422:9 | { ... } | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1418:13:1421:13 | Vec2 {...} | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1419:20:1419:23 | self | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1419:20:1419:25 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1419:20:1419:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1419:29:1419:31 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1419:29:1419:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1425:25:1425:33 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1425:25:1425:33 | SelfParam | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1425:36:1425:38 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1426:13:1426:16 | self | | file://:0:0:0:0 | & | -| main.rs:1426:13:1426:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1426:13:1426:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1426:13:1426:27 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1426:23:1426:25 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1426:23:1426:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1419:29:1419:31 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1419:29:1419:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1420:20:1420:23 | self | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1420:20:1420:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1420:20:1420:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1420:29:1420:31 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1420:29:1420:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1426:25:1426:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1426:25:1426:33 | SelfParam | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1426:36:1426:38 | rhs | | main.rs:1303:5:1308:5 | Vec2 | | main.rs:1427:13:1427:16 | self | | file://:0:0:0:0 | & | -| main.rs:1427:13:1427:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1427:13:1427:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1427:13:1427:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1427:13:1427:18 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1427:13:1427:27 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1427:23:1427:25 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1427:23:1427:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1433:19:1433:22 | SelfParam | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1433:25:1433:27 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1433:44:1438:9 | { ... } | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1434:13:1437:13 | Vec2 {...} | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1435:20:1435:23 | self | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1435:20:1435:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1435:20:1435:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1435:29:1435:31 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1435:29:1435:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1436:20:1436:23 | self | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1436:20:1436:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1427:23:1427:25 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1427:23:1427:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1428:13:1428:16 | self | | file://:0:0:0:0 | & | +| main.rs:1428:13:1428:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1428:13:1428:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1428:13:1428:27 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1428:23:1428:25 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1428:23:1428:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1434:19:1434:22 | SelfParam | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1434:25:1434:27 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1434:44:1439:9 | { ... } | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1435:13:1438:13 | Vec2 {...} | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1436:20:1436:23 | self | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1436:20:1436:25 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1436:20:1436:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1436:29:1436:31 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1436:29:1436:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1442:26:1442:34 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1442:26:1442:34 | SelfParam | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1442:37:1442:39 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1443:13:1443:16 | self | | file://:0:0:0:0 | & | -| main.rs:1443:13:1443:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1443:13:1443:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1443:13:1443:27 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1443:23:1443:25 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1443:23:1443:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1436:29:1436:31 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1436:29:1436:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1437:20:1437:23 | self | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1437:20:1437:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1437:20:1437:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1437:29:1437:31 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1437:29:1437:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1443:26:1443:34 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1443:26:1443:34 | SelfParam | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1443:37:1443:39 | rhs | | main.rs:1303:5:1308:5 | Vec2 | | main.rs:1444:13:1444:16 | self | | file://:0:0:0:0 | & | -| main.rs:1444:13:1444:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1444:13:1444:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1444:13:1444:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1444:13:1444:18 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1444:13:1444:27 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1444:23:1444:25 | rhs | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1444:23:1444:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1450:16:1450:19 | SelfParam | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1450:22:1450:24 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1450:40:1455:9 | { ... } | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1451:13:1454:13 | Vec2 {...} | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1452:20:1452:23 | self | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1452:20:1452:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1452:20:1452:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1452:30:1452:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1453:20:1453:23 | self | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1453:20:1453:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1444:23:1444:25 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1444:23:1444:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1445:13:1445:16 | self | | file://:0:0:0:0 | & | +| main.rs:1445:13:1445:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1445:13:1445:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1445:13:1445:27 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1445:23:1445:25 | rhs | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1445:23:1445:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1451:16:1451:19 | SelfParam | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1451:22:1451:24 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1451:40:1456:9 | { ... } | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1452:13:1455:13 | Vec2 {...} | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1453:20:1453:23 | self | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1453:20:1453:25 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1453:20:1453:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | | main.rs:1453:30:1453:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1459:23:1459:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1459:23:1459:31 | SelfParam | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1459:34:1459:36 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1460:13:1460:16 | self | | file://:0:0:0:0 | & | -| main.rs:1460:13:1460:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1460:13:1460:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1460:13:1460:26 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1460:24:1460:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1454:20:1454:23 | self | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1454:20:1454:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1454:20:1454:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1454:30:1454:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1460:23:1460:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1460:23:1460:31 | SelfParam | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1460:34:1460:36 | rhs | | {EXTERNAL LOCATION} | u32 | | main.rs:1461:13:1461:16 | self | | file://:0:0:0:0 | & | -| main.rs:1461:13:1461:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1461:13:1461:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1461:13:1461:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1461:13:1461:18 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1461:13:1461:26 | ... <<= ... | | file://:0:0:0:0 | () | | main.rs:1461:24:1461:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1467:16:1467:19 | SelfParam | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1467:22:1467:24 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1467:40:1472:9 | { ... } | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1468:13:1471:13 | Vec2 {...} | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1469:20:1469:23 | self | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1469:20:1469:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1469:20:1469:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1469:30:1469:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1470:20:1470:23 | self | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1470:20:1470:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1462:13:1462:16 | self | | file://:0:0:0:0 | & | +| main.rs:1462:13:1462:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1462:13:1462:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1462:13:1462:26 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:1462:24:1462:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1468:16:1468:19 | SelfParam | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1468:22:1468:24 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1468:40:1473:9 | { ... } | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1469:13:1472:13 | Vec2 {...} | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1470:20:1470:23 | self | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1470:20:1470:25 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1470:20:1470:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | | main.rs:1470:30:1470:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1476:23:1476:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1476:23:1476:31 | SelfParam | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1476:34:1476:36 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1477:13:1477:16 | self | | file://:0:0:0:0 | & | -| main.rs:1477:13:1477:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1477:13:1477:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1477:13:1477:26 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1477:24:1477:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1471:20:1471:23 | self | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1471:20:1471:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1471:20:1471:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1471:30:1471:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1477:23:1477:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1477:23:1477:31 | SelfParam | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1477:34:1477:36 | rhs | | {EXTERNAL LOCATION} | u32 | | main.rs:1478:13:1478:16 | self | | file://:0:0:0:0 | & | -| main.rs:1478:13:1478:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1478:13:1478:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1478:13:1478:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1478:13:1478:18 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1478:13:1478:26 | ... >>= ... | | file://:0:0:0:0 | () | | main.rs:1478:24:1478:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1484:16:1484:19 | SelfParam | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1484:30:1489:9 | { ... } | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1485:13:1488:13 | Vec2 {...} | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1486:20:1486:26 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1486:21:1486:24 | self | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1486:21:1486:26 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1479:13:1479:16 | self | | file://:0:0:0:0 | & | +| main.rs:1479:13:1479:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1479:13:1479:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1479:13:1479:26 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:1479:24:1479:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1485:16:1485:19 | SelfParam | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1485:30:1490:9 | { ... } | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1486:13:1489:13 | Vec2 {...} | | main.rs:1303:5:1308:5 | Vec2 | | main.rs:1487:20:1487:26 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1487:21:1487:24 | self | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1487:21:1487:26 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1494:16:1494:19 | SelfParam | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1494:30:1499:9 | { ... } | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1495:13:1498:13 | Vec2 {...} | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1496:20:1496:26 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1496:21:1496:24 | self | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1496:21:1496:26 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1487:21:1487:24 | self | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1487:21:1487:26 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1488:20:1488:26 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1488:21:1488:24 | self | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1488:21:1488:26 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1495:16:1495:19 | SelfParam | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1495:30:1500:9 | { ... } | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1496:13:1499:13 | Vec2 {...} | | main.rs:1303:5:1308:5 | Vec2 | | main.rs:1497:20:1497:26 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1497:21:1497:24 | self | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1497:21:1497:26 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1503:15:1503:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1503:15:1503:19 | SelfParam | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1503:22:1503:26 | other | | file://:0:0:0:0 | & | -| main.rs:1503:22:1503:26 | other | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1503:44:1505:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1504:13:1504:16 | self | | file://:0:0:0:0 | & | -| main.rs:1504:13:1504:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1504:13:1504:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1504:13:1504:29 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1504:13:1504:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1504:23:1504:27 | other | | file://:0:0:0:0 | & | -| main.rs:1504:23:1504:27 | other | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1504:23:1504:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1504:34:1504:37 | self | | file://:0:0:0:0 | & | -| main.rs:1504:34:1504:37 | self | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1504:34:1504:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1504:34:1504:50 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1504:44:1504:48 | other | | file://:0:0:0:0 | & | -| main.rs:1504:44:1504:48 | other | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1504:44:1504:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1507:15:1507:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1507:15:1507:19 | SelfParam | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1507:22:1507:26 | other | | file://:0:0:0:0 | & | -| main.rs:1507:22:1507:26 | other | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1507:44:1509:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1508:13:1508:16 | self | | file://:0:0:0:0 | & | -| main.rs:1508:13:1508:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1508:13:1508:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1508:13:1508:29 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1508:13:1508:50 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1508:23:1508:27 | other | | file://:0:0:0:0 | & | -| main.rs:1508:23:1508:27 | other | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1508:23:1508:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1508:34:1508:37 | self | | file://:0:0:0:0 | & | -| main.rs:1508:34:1508:37 | self | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1508:34:1508:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1508:34:1508:50 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1508:44:1508:48 | other | | file://:0:0:0:0 | & | -| main.rs:1508:44:1508:48 | other | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1508:44:1508:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1513:24:1513:28 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1513:24:1513:28 | SelfParam | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1513:31:1513:35 | other | | file://:0:0:0:0 | & | -| main.rs:1513:31:1513:35 | other | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1513:75:1515:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:1513:75:1515:9 | { ... } | T | {EXTERNAL LOCATION} | Ordering | -| main.rs:1514:13:1514:29 | (...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1514:13:1514:63 | ... .partial_cmp(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:1514:13:1514:63 | ... .partial_cmp(...) | T | {EXTERNAL LOCATION} | Ordering | -| main.rs:1514:14:1514:17 | self | | file://:0:0:0:0 | & | -| main.rs:1514:14:1514:17 | self | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1514:14:1514:19 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1514:14:1514:28 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1514:23:1514:26 | self | | file://:0:0:0:0 | & | -| main.rs:1514:23:1514:26 | self | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1514:23:1514:28 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1514:43:1514:62 | &... | | file://:0:0:0:0 | & | -| main.rs:1514:43:1514:62 | &... | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:1514:44:1514:62 | (...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1514:45:1514:49 | other | | file://:0:0:0:0 | & | -| main.rs:1514:45:1514:49 | other | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1514:45:1514:51 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1514:45:1514:61 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1514:55:1514:59 | other | | file://:0:0:0:0 | & | -| main.rs:1514:55:1514:59 | other | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1514:55:1514:61 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1517:15:1517:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1517:15:1517:19 | SelfParam | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1517:22:1517:26 | other | | file://:0:0:0:0 | & | -| main.rs:1517:22:1517:26 | other | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1517:44:1519:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1518:13:1518:16 | self | | file://:0:0:0:0 | & | -| main.rs:1518:13:1518:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1518:13:1518:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1518:13:1518:28 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1518:13:1518:48 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1497:21:1497:24 | self | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1497:21:1497:26 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1498:20:1498:26 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1498:21:1498:24 | self | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1498:21:1498:26 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1504:15:1504:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1504:15:1504:19 | SelfParam | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1504:22:1504:26 | other | | file://:0:0:0:0 | & | +| main.rs:1504:22:1504:26 | other | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1504:44:1506:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1505:13:1505:16 | self | | file://:0:0:0:0 | & | +| main.rs:1505:13:1505:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1505:13:1505:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1505:13:1505:29 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1505:13:1505:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1505:23:1505:27 | other | | file://:0:0:0:0 | & | +| main.rs:1505:23:1505:27 | other | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1505:23:1505:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1505:34:1505:37 | self | | file://:0:0:0:0 | & | +| main.rs:1505:34:1505:37 | self | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1505:34:1505:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1505:34:1505:50 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1505:44:1505:48 | other | | file://:0:0:0:0 | & | +| main.rs:1505:44:1505:48 | other | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1505:44:1505:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1508:15:1508:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1508:15:1508:19 | SelfParam | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1508:22:1508:26 | other | | file://:0:0:0:0 | & | +| main.rs:1508:22:1508:26 | other | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1508:44:1510:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1509:13:1509:16 | self | | file://:0:0:0:0 | & | +| main.rs:1509:13:1509:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1509:13:1509:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1509:13:1509:29 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1509:13:1509:50 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1509:23:1509:27 | other | | file://:0:0:0:0 | & | +| main.rs:1509:23:1509:27 | other | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1509:23:1509:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1509:34:1509:37 | self | | file://:0:0:0:0 | & | +| main.rs:1509:34:1509:37 | self | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1509:34:1509:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1509:34:1509:50 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1509:44:1509:48 | other | | file://:0:0:0:0 | & | +| main.rs:1509:44:1509:48 | other | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1509:44:1509:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1514:24:1514:28 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1514:24:1514:28 | SelfParam | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1514:31:1514:35 | other | | file://:0:0:0:0 | & | +| main.rs:1514:31:1514:35 | other | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1514:75:1516:9 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:1514:75:1516:9 | { ... } | T | {EXTERNAL LOCATION} | Ordering | +| main.rs:1515:13:1515:29 | (...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1515:13:1515:63 | ... .partial_cmp(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:1515:13:1515:63 | ... .partial_cmp(...) | T | {EXTERNAL LOCATION} | Ordering | +| main.rs:1515:14:1515:17 | self | | file://:0:0:0:0 | & | +| main.rs:1515:14:1515:17 | self | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1515:14:1515:19 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1515:14:1515:28 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1515:23:1515:26 | self | | file://:0:0:0:0 | & | +| main.rs:1515:23:1515:26 | self | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1515:23:1515:28 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1515:43:1515:62 | &... | | file://:0:0:0:0 | & | +| main.rs:1515:43:1515:62 | &... | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1515:44:1515:62 | (...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1515:45:1515:49 | other | | file://:0:0:0:0 | & | +| main.rs:1515:45:1515:49 | other | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1515:45:1515:51 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1515:45:1515:61 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1515:55:1515:59 | other | | file://:0:0:0:0 | & | +| main.rs:1515:55:1515:59 | other | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1515:55:1515:61 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1518:15:1518:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1518:15:1518:19 | SelfParam | &T | main.rs:1303:5:1308:5 | Vec2 | | main.rs:1518:22:1518:26 | other | | file://:0:0:0:0 | & | -| main.rs:1518:22:1518:26 | other | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1518:22:1518:28 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1518:33:1518:36 | self | | file://:0:0:0:0 | & | -| main.rs:1518:33:1518:36 | self | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1518:33:1518:38 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1518:33:1518:48 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1518:42:1518:46 | other | | file://:0:0:0:0 | & | -| main.rs:1518:42:1518:46 | other | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1518:42:1518:48 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1521:15:1521:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1521:15:1521:19 | SelfParam | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1521:22:1521:26 | other | | file://:0:0:0:0 | & | -| main.rs:1521:22:1521:26 | other | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1521:44:1523:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1522:13:1522:16 | self | | file://:0:0:0:0 | & | -| main.rs:1522:13:1522:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1522:13:1522:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1522:13:1522:29 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1522:13:1522:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1522:23:1522:27 | other | | file://:0:0:0:0 | & | -| main.rs:1522:23:1522:27 | other | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1522:23:1522:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1522:34:1522:37 | self | | file://:0:0:0:0 | & | -| main.rs:1522:34:1522:37 | self | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1522:34:1522:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1522:34:1522:50 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1522:44:1522:48 | other | | file://:0:0:0:0 | & | -| main.rs:1522:44:1522:48 | other | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1522:44:1522:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1525:15:1525:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1525:15:1525:19 | SelfParam | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1525:22:1525:26 | other | | file://:0:0:0:0 | & | -| main.rs:1525:22:1525:26 | other | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1525:44:1527:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1526:13:1526:16 | self | | file://:0:0:0:0 | & | -| main.rs:1526:13:1526:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1526:13:1526:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1526:13:1526:28 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1526:13:1526:48 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1518:22:1518:26 | other | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1518:44:1520:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1519:13:1519:16 | self | | file://:0:0:0:0 | & | +| main.rs:1519:13:1519:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1519:13:1519:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1519:13:1519:28 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1519:13:1519:48 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1519:22:1519:26 | other | | file://:0:0:0:0 | & | +| main.rs:1519:22:1519:26 | other | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1519:22:1519:28 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1519:33:1519:36 | self | | file://:0:0:0:0 | & | +| main.rs:1519:33:1519:36 | self | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1519:33:1519:38 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1519:33:1519:48 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1519:42:1519:46 | other | | file://:0:0:0:0 | & | +| main.rs:1519:42:1519:46 | other | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1519:42:1519:48 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1522:15:1522:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1522:15:1522:19 | SelfParam | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1522:22:1522:26 | other | | file://:0:0:0:0 | & | +| main.rs:1522:22:1522:26 | other | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1522:44:1524:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1523:13:1523:16 | self | | file://:0:0:0:0 | & | +| main.rs:1523:13:1523:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1523:13:1523:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1523:13:1523:29 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1523:13:1523:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1523:23:1523:27 | other | | file://:0:0:0:0 | & | +| main.rs:1523:23:1523:27 | other | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1523:23:1523:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1523:34:1523:37 | self | | file://:0:0:0:0 | & | +| main.rs:1523:34:1523:37 | self | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1523:34:1523:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1523:34:1523:50 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1523:44:1523:48 | other | | file://:0:0:0:0 | & | +| main.rs:1523:44:1523:48 | other | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1523:44:1523:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1526:15:1526:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1526:15:1526:19 | SelfParam | &T | main.rs:1303:5:1308:5 | Vec2 | | main.rs:1526:22:1526:26 | other | | file://:0:0:0:0 | & | -| main.rs:1526:22:1526:26 | other | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1526:22:1526:28 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1526:33:1526:36 | self | | file://:0:0:0:0 | & | -| main.rs:1526:33:1526:36 | self | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1526:33:1526:38 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1526:33:1526:48 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1526:42:1526:46 | other | | file://:0:0:0:0 | & | -| main.rs:1526:42:1526:46 | other | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1526:42:1526:48 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1529:15:1529:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1529:15:1529:19 | SelfParam | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1529:22:1529:26 | other | | file://:0:0:0:0 | & | -| main.rs:1529:22:1529:26 | other | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1529:44:1531:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1530:13:1530:16 | self | | file://:0:0:0:0 | & | -| main.rs:1530:13:1530:16 | self | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1530:13:1530:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1530:13:1530:29 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1530:13:1530:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1530:23:1530:27 | other | | file://:0:0:0:0 | & | -| main.rs:1530:23:1530:27 | other | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1530:23:1530:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1530:34:1530:37 | self | | file://:0:0:0:0 | & | -| main.rs:1530:34:1530:37 | self | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1530:34:1530:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1530:34:1530:50 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1530:44:1530:48 | other | | file://:0:0:0:0 | & | -| main.rs:1530:44:1530:48 | other | &T | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1530:44:1530:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1537:13:1537:18 | i64_eq | | {EXTERNAL LOCATION} | bool | -| main.rs:1537:22:1537:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1537:23:1537:26 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1537:23:1537:34 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1537:31:1537:34 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1538:13:1538:18 | i64_ne | | {EXTERNAL LOCATION} | bool | +| main.rs:1526:22:1526:26 | other | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1526:44:1528:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1527:13:1527:16 | self | | file://:0:0:0:0 | & | +| main.rs:1527:13:1527:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1527:13:1527:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1527:13:1527:28 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1527:13:1527:48 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1527:22:1527:26 | other | | file://:0:0:0:0 | & | +| main.rs:1527:22:1527:26 | other | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1527:22:1527:28 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1527:33:1527:36 | self | | file://:0:0:0:0 | & | +| main.rs:1527:33:1527:36 | self | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1527:33:1527:38 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1527:33:1527:48 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1527:42:1527:46 | other | | file://:0:0:0:0 | & | +| main.rs:1527:42:1527:46 | other | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1527:42:1527:48 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1530:15:1530:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1530:15:1530:19 | SelfParam | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1530:22:1530:26 | other | | file://:0:0:0:0 | & | +| main.rs:1530:22:1530:26 | other | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1530:44:1532:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1531:13:1531:16 | self | | file://:0:0:0:0 | & | +| main.rs:1531:13:1531:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1531:13:1531:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1531:13:1531:29 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1531:13:1531:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1531:23:1531:27 | other | | file://:0:0:0:0 | & | +| main.rs:1531:23:1531:27 | other | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1531:23:1531:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1531:34:1531:37 | self | | file://:0:0:0:0 | & | +| main.rs:1531:34:1531:37 | self | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1531:34:1531:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1531:34:1531:50 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1531:44:1531:48 | other | | file://:0:0:0:0 | & | +| main.rs:1531:44:1531:48 | other | &T | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1531:44:1531:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1538:13:1538:18 | i64_eq | | {EXTERNAL LOCATION} | bool | | main.rs:1538:22:1538:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1538:23:1538:26 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1538:23:1538:34 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1538:31:1538:34 | 4i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1539:13:1539:18 | i64_lt | | {EXTERNAL LOCATION} | bool | -| main.rs:1539:22:1539:34 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1539:23:1539:26 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1539:23:1539:33 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1539:30:1539:33 | 6i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1540:13:1540:18 | i64_le | | {EXTERNAL LOCATION} | bool | -| main.rs:1540:22:1540:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1540:23:1540:26 | 7i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1540:23:1540:34 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1540:31:1540:34 | 8i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1541:13:1541:18 | i64_gt | | {EXTERNAL LOCATION} | bool | +| main.rs:1538:23:1538:26 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1538:23:1538:34 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1538:31:1538:34 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1539:13:1539:18 | i64_ne | | {EXTERNAL LOCATION} | bool | +| main.rs:1539:22:1539:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1539:23:1539:26 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1539:23:1539:34 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1539:31:1539:34 | 4i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1540:13:1540:18 | i64_lt | | {EXTERNAL LOCATION} | bool | +| main.rs:1540:22:1540:34 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1540:23:1540:26 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1540:23:1540:33 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1540:30:1540:33 | 6i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1541:13:1541:18 | i64_le | | {EXTERNAL LOCATION} | bool | | main.rs:1541:22:1541:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1541:23:1541:26 | 9i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1541:23:1541:34 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1541:30:1541:34 | 10i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1542:13:1542:18 | i64_ge | | {EXTERNAL LOCATION} | bool | -| main.rs:1542:22:1542:37 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1542:23:1542:27 | 11i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1542:23:1542:36 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1542:32:1542:36 | 12i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1545:13:1545:19 | i64_add | | {EXTERNAL LOCATION} | i64 | -| main.rs:1545:23:1545:27 | 13i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1545:23:1545:35 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1545:31:1545:35 | 14i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1546:13:1546:19 | i64_sub | | {EXTERNAL LOCATION} | i64 | -| main.rs:1546:23:1546:27 | 15i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1546:23:1546:35 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1546:31:1546:35 | 16i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1547:13:1547:19 | i64_mul | | {EXTERNAL LOCATION} | i64 | -| main.rs:1547:23:1547:27 | 17i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1547:23:1547:35 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1547:31:1547:35 | 18i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1548:13:1548:19 | i64_div | | {EXTERNAL LOCATION} | i64 | -| main.rs:1548:23:1548:27 | 19i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1548:23:1548:35 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1548:31:1548:35 | 20i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1549:13:1549:19 | i64_rem | | {EXTERNAL LOCATION} | i64 | -| main.rs:1549:23:1549:27 | 21i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1549:23:1549:35 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1549:31:1549:35 | 22i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1552:13:1552:30 | mut i64_add_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1552:34:1552:38 | 23i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1553:9:1553:22 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1553:9:1553:31 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1553:27:1553:31 | 24i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1555:13:1555:30 | mut i64_sub_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1555:34:1555:38 | 25i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1556:9:1556:22 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1556:9:1556:31 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1556:27:1556:31 | 26i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1558:13:1558:30 | mut i64_mul_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1558:34:1558:38 | 27i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1559:9:1559:22 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1559:9:1559:31 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1559:27:1559:31 | 28i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1561:13:1561:30 | mut i64_div_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1561:34:1561:38 | 29i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1562:9:1562:22 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1562:9:1562:31 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1562:27:1562:31 | 30i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1564:13:1564:30 | mut i64_rem_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1564:34:1564:38 | 31i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1565:9:1565:22 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1565:9:1565:31 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1565:27:1565:31 | 32i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1568:13:1568:22 | i64_bitand | | {EXTERNAL LOCATION} | i64 | -| main.rs:1568:26:1568:30 | 33i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1568:26:1568:38 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1568:34:1568:38 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1569:13:1569:21 | i64_bitor | | {EXTERNAL LOCATION} | i64 | -| main.rs:1569:25:1569:29 | 35i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1569:25:1569:37 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1569:33:1569:37 | 36i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1570:13:1570:22 | i64_bitxor | | {EXTERNAL LOCATION} | i64 | -| main.rs:1570:26:1570:30 | 37i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1570:26:1570:38 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1570:34:1570:38 | 38i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1571:13:1571:19 | i64_shl | | {EXTERNAL LOCATION} | i64 | -| main.rs:1571:23:1571:27 | 39i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1571:23:1571:36 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1571:32:1571:36 | 40i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1572:13:1572:19 | i64_shr | | {EXTERNAL LOCATION} | i64 | -| main.rs:1572:23:1572:27 | 41i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1572:23:1572:36 | ... >> ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1572:32:1572:36 | 42i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1575:13:1575:33 | mut i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1575:37:1575:41 | 43i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1576:9:1576:25 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1576:9:1576:34 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1576:30:1576:34 | 44i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1578:13:1578:32 | mut i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1578:36:1578:40 | 45i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1579:9:1579:24 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1579:9:1579:33 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1579:29:1579:33 | 46i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1581:13:1581:33 | mut i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1581:37:1581:41 | 47i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1582:9:1582:25 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1582:9:1582:34 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1582:30:1582:34 | 48i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1584:13:1584:30 | mut i64_shl_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1584:34:1584:38 | 49i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1585:9:1585:22 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1585:9:1585:32 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1585:28:1585:32 | 50i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1587:13:1587:30 | mut i64_shr_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1587:34:1587:38 | 51i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1588:9:1588:22 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1588:9:1588:32 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1588:28:1588:32 | 52i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1590:13:1590:19 | i64_neg | | {EXTERNAL LOCATION} | i64 | -| main.rs:1590:23:1590:28 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1590:24:1590:28 | 53i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1591:13:1591:19 | i64_not | | {EXTERNAL LOCATION} | i64 | -| main.rs:1591:23:1591:28 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1591:24:1591:28 | 54i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1594:13:1594:14 | v1 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1594:18:1594:36 | Vec2 {...} | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1594:28:1594:28 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1594:28:1594:28 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1594:34:1594:34 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1594:34:1594:34 | 2 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1595:13:1595:14 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1595:18:1595:36 | Vec2 {...} | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1595:28:1595:28 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1595:28:1595:28 | 3 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1595:34:1595:34 | 4 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1595:34:1595:34 | 4 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1598:13:1598:19 | vec2_eq | | {EXTERNAL LOCATION} | bool | -| main.rs:1598:23:1598:24 | v1 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1598:23:1598:30 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1598:29:1598:30 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1599:13:1599:19 | vec2_ne | | {EXTERNAL LOCATION} | bool | -| main.rs:1599:23:1599:24 | v1 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1599:23:1599:30 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1599:29:1599:30 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1600:13:1600:19 | vec2_lt | | {EXTERNAL LOCATION} | bool | -| main.rs:1600:23:1600:24 | v1 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1600:23:1600:29 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1600:28:1600:29 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1601:13:1601:19 | vec2_le | | {EXTERNAL LOCATION} | bool | -| main.rs:1601:23:1601:24 | v1 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1601:23:1601:30 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1601:29:1601:30 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1602:13:1602:19 | vec2_gt | | {EXTERNAL LOCATION} | bool | -| main.rs:1602:23:1602:24 | v1 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1602:23:1602:29 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1602:28:1602:29 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1603:13:1603:19 | vec2_ge | | {EXTERNAL LOCATION} | bool | -| main.rs:1603:23:1603:24 | v1 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1603:23:1603:30 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1603:29:1603:30 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1606:13:1606:20 | vec2_add | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1606:24:1606:25 | v1 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1606:24:1606:30 | ... + ... | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1606:29:1606:30 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1607:13:1607:20 | vec2_sub | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1607:24:1607:25 | v1 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1607:24:1607:30 | ... - ... | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1607:29:1607:30 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1608:13:1608:20 | vec2_mul | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1608:24:1608:25 | v1 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1608:24:1608:30 | ... * ... | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1608:29:1608:30 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1609:13:1609:20 | vec2_div | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1609:24:1609:25 | v1 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1609:24:1609:30 | ... / ... | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1609:29:1609:30 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1610:13:1610:20 | vec2_rem | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1610:24:1610:25 | v1 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1610:24:1610:30 | ... % ... | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1610:29:1610:30 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1613:13:1613:31 | mut vec2_add_assign | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1613:35:1613:36 | v1 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1614:9:1614:23 | vec2_add_assign | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1614:9:1614:29 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1614:28:1614:29 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1616:13:1616:31 | mut vec2_sub_assign | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1616:35:1616:36 | v1 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1617:9:1617:23 | vec2_sub_assign | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1617:9:1617:29 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1617:28:1617:29 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1619:13:1619:31 | mut vec2_mul_assign | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1619:35:1619:36 | v1 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1620:9:1620:23 | vec2_mul_assign | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1620:9:1620:29 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1620:28:1620:29 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1622:13:1622:31 | mut vec2_div_assign | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1622:35:1622:36 | v1 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1623:9:1623:23 | vec2_div_assign | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1623:9:1623:29 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1623:28:1623:29 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1625:13:1625:31 | mut vec2_rem_assign | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1625:35:1625:36 | v1 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1626:9:1626:23 | vec2_rem_assign | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1626:9:1626:29 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1626:28:1626:29 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1629:13:1629:23 | vec2_bitand | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1629:27:1629:28 | v1 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1629:27:1629:33 | ... & ... | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1629:32:1629:33 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1630:13:1630:22 | vec2_bitor | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1630:26:1630:27 | v1 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1630:26:1630:32 | ... \| ... | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1630:31:1630:32 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1631:13:1631:23 | vec2_bitxor | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1631:27:1631:28 | v1 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1631:27:1631:33 | ... ^ ... | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1631:32:1631:33 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1632:13:1632:20 | vec2_shl | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1632:24:1632:25 | v1 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1632:24:1632:33 | ... << ... | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1632:30:1632:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:1633:13:1633:20 | vec2_shr | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1633:24:1633:25 | v1 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1633:24:1633:33 | ... >> ... | | main.rs:1302:5:1307:5 | Vec2 | +| main.rs:1541:23:1541:26 | 7i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1541:23:1541:34 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1541:31:1541:34 | 8i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1542:13:1542:18 | i64_gt | | {EXTERNAL LOCATION} | bool | +| main.rs:1542:22:1542:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1542:23:1542:26 | 9i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1542:23:1542:34 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1542:30:1542:34 | 10i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1543:13:1543:18 | i64_ge | | {EXTERNAL LOCATION} | bool | +| main.rs:1543:22:1543:37 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1543:23:1543:27 | 11i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1543:23:1543:36 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1543:32:1543:36 | 12i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1546:13:1546:19 | i64_add | | {EXTERNAL LOCATION} | i64 | +| main.rs:1546:23:1546:27 | 13i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1546:23:1546:35 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1546:31:1546:35 | 14i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1547:13:1547:19 | i64_sub | | {EXTERNAL LOCATION} | i64 | +| main.rs:1547:23:1547:27 | 15i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1547:23:1547:35 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1547:31:1547:35 | 16i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1548:13:1548:19 | i64_mul | | {EXTERNAL LOCATION} | i64 | +| main.rs:1548:23:1548:27 | 17i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1548:23:1548:35 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1548:31:1548:35 | 18i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1549:13:1549:19 | i64_div | | {EXTERNAL LOCATION} | i64 | +| main.rs:1549:23:1549:27 | 19i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1549:23:1549:35 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1549:31:1549:35 | 20i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1550:13:1550:19 | i64_rem | | {EXTERNAL LOCATION} | i64 | +| main.rs:1550:23:1550:27 | 21i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1550:23:1550:35 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1550:31:1550:35 | 22i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1553:13:1553:30 | mut i64_add_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1553:34:1553:38 | 23i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1554:9:1554:22 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1554:9:1554:31 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1554:27:1554:31 | 24i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1556:13:1556:30 | mut i64_sub_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1556:34:1556:38 | 25i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1557:9:1557:22 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1557:9:1557:31 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1557:27:1557:31 | 26i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1559:13:1559:30 | mut i64_mul_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1559:34:1559:38 | 27i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1560:9:1560:22 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1560:9:1560:31 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1560:27:1560:31 | 28i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1562:13:1562:30 | mut i64_div_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1562:34:1562:38 | 29i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1563:9:1563:22 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1563:9:1563:31 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1563:27:1563:31 | 30i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1565:13:1565:30 | mut i64_rem_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1565:34:1565:38 | 31i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1566:9:1566:22 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1566:9:1566:31 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1566:27:1566:31 | 32i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1569:13:1569:22 | i64_bitand | | {EXTERNAL LOCATION} | i64 | +| main.rs:1569:26:1569:30 | 33i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1569:26:1569:38 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1569:34:1569:38 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1570:13:1570:21 | i64_bitor | | {EXTERNAL LOCATION} | i64 | +| main.rs:1570:25:1570:29 | 35i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1570:25:1570:37 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1570:33:1570:37 | 36i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1571:13:1571:22 | i64_bitxor | | {EXTERNAL LOCATION} | i64 | +| main.rs:1571:26:1571:30 | 37i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1571:26:1571:38 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1571:34:1571:38 | 38i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1572:13:1572:19 | i64_shl | | {EXTERNAL LOCATION} | i64 | +| main.rs:1572:23:1572:27 | 39i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1572:23:1572:36 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1572:32:1572:36 | 40i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1573:13:1573:19 | i64_shr | | {EXTERNAL LOCATION} | i64 | +| main.rs:1573:23:1573:27 | 41i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1573:23:1573:36 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1573:32:1573:36 | 42i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1576:13:1576:33 | mut i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1576:37:1576:41 | 43i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1577:9:1577:25 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1577:9:1577:34 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1577:30:1577:34 | 44i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1579:13:1579:32 | mut i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1579:36:1579:40 | 45i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1580:9:1580:24 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1580:9:1580:33 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1580:29:1580:33 | 46i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1582:13:1582:33 | mut i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1582:37:1582:41 | 47i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1583:9:1583:25 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1583:9:1583:34 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1583:30:1583:34 | 48i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1585:13:1585:30 | mut i64_shl_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1585:34:1585:38 | 49i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1586:9:1586:22 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1586:9:1586:32 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:1586:28:1586:32 | 50i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1588:13:1588:30 | mut i64_shr_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1588:34:1588:38 | 51i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1589:9:1589:22 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1589:9:1589:32 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:1589:28:1589:32 | 52i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1591:13:1591:19 | i64_neg | | {EXTERNAL LOCATION} | i64 | +| main.rs:1591:23:1591:28 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1591:24:1591:28 | 53i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1592:13:1592:19 | i64_not | | {EXTERNAL LOCATION} | i64 | +| main.rs:1592:23:1592:28 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1592:24:1592:28 | 54i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1595:13:1595:14 | v1 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1595:18:1595:36 | Vec2 {...} | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1595:28:1595:28 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1595:28:1595:28 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1595:34:1595:34 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1595:34:1595:34 | 2 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1596:13:1596:14 | v2 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1596:18:1596:36 | Vec2 {...} | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1596:28:1596:28 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1596:28:1596:28 | 3 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1596:34:1596:34 | 4 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1596:34:1596:34 | 4 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1599:13:1599:19 | vec2_eq | | {EXTERNAL LOCATION} | bool | +| main.rs:1599:23:1599:24 | v1 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1599:23:1599:30 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1599:29:1599:30 | v2 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1600:13:1600:19 | vec2_ne | | {EXTERNAL LOCATION} | bool | +| main.rs:1600:23:1600:24 | v1 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1600:23:1600:30 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1600:29:1600:30 | v2 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1601:13:1601:19 | vec2_lt | | {EXTERNAL LOCATION} | bool | +| main.rs:1601:23:1601:24 | v1 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1601:23:1601:29 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1601:28:1601:29 | v2 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1602:13:1602:19 | vec2_le | | {EXTERNAL LOCATION} | bool | +| main.rs:1602:23:1602:24 | v1 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1602:23:1602:30 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1602:29:1602:30 | v2 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1603:13:1603:19 | vec2_gt | | {EXTERNAL LOCATION} | bool | +| main.rs:1603:23:1603:24 | v1 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1603:23:1603:29 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1603:28:1603:29 | v2 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1604:13:1604:19 | vec2_ge | | {EXTERNAL LOCATION} | bool | +| main.rs:1604:23:1604:24 | v1 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1604:23:1604:30 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1604:29:1604:30 | v2 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1607:13:1607:20 | vec2_add | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1607:24:1607:25 | v1 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1607:24:1607:30 | ... + ... | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1607:29:1607:30 | v2 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1608:13:1608:20 | vec2_sub | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1608:24:1608:25 | v1 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1608:24:1608:30 | ... - ... | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1608:29:1608:30 | v2 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1609:13:1609:20 | vec2_mul | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1609:24:1609:25 | v1 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1609:24:1609:30 | ... * ... | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1609:29:1609:30 | v2 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1610:13:1610:20 | vec2_div | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1610:24:1610:25 | v1 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1610:24:1610:30 | ... / ... | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1610:29:1610:30 | v2 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1611:13:1611:20 | vec2_rem | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1611:24:1611:25 | v1 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1611:24:1611:30 | ... % ... | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1611:29:1611:30 | v2 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1614:13:1614:31 | mut vec2_add_assign | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1614:35:1614:36 | v1 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1615:9:1615:23 | vec2_add_assign | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1615:9:1615:29 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1615:28:1615:29 | v2 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1617:13:1617:31 | mut vec2_sub_assign | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1617:35:1617:36 | v1 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1618:9:1618:23 | vec2_sub_assign | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1618:9:1618:29 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1618:28:1618:29 | v2 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1620:13:1620:31 | mut vec2_mul_assign | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1620:35:1620:36 | v1 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1621:9:1621:23 | vec2_mul_assign | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1621:9:1621:29 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1621:28:1621:29 | v2 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1623:13:1623:31 | mut vec2_div_assign | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1623:35:1623:36 | v1 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1624:9:1624:23 | vec2_div_assign | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1624:9:1624:29 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1624:28:1624:29 | v2 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1626:13:1626:31 | mut vec2_rem_assign | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1626:35:1626:36 | v1 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1627:9:1627:23 | vec2_rem_assign | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1627:9:1627:29 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1627:28:1627:29 | v2 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1630:13:1630:23 | vec2_bitand | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1630:27:1630:28 | v1 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1630:27:1630:33 | ... & ... | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1630:32:1630:33 | v2 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1631:13:1631:22 | vec2_bitor | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1631:26:1631:27 | v1 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1631:26:1631:32 | ... \| ... | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1631:31:1631:32 | v2 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1632:13:1632:23 | vec2_bitxor | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1632:27:1632:28 | v1 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1632:27:1632:33 | ... ^ ... | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1632:32:1632:33 | v2 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1633:13:1633:20 | vec2_shl | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1633:24:1633:25 | v1 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1633:24:1633:33 | ... << ... | | main.rs:1303:5:1308:5 | Vec2 | | main.rs:1633:30:1633:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:1636:13:1636:34 | mut vec2_bitand_assign | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1636:38:1636:39 | v1 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1637:9:1637:26 | vec2_bitand_assign | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1637:9:1637:32 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1637:31:1637:32 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1639:13:1639:33 | mut vec2_bitor_assign | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1639:37:1639:38 | v1 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1640:9:1640:25 | vec2_bitor_assign | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1640:9:1640:31 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1640:30:1640:31 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1642:13:1642:34 | mut vec2_bitxor_assign | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1642:38:1642:39 | v1 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1643:9:1643:26 | vec2_bitxor_assign | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1643:9:1643:32 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1643:31:1643:32 | v2 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1645:13:1645:31 | mut vec2_shl_assign | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1645:35:1645:36 | v1 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1646:9:1646:23 | vec2_shl_assign | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1646:9:1646:32 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1646:29:1646:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:1648:13:1648:31 | mut vec2_shr_assign | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1648:35:1648:36 | v1 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1649:9:1649:23 | vec2_shr_assign | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1649:9:1649:32 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1649:29:1649:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:1652:13:1652:20 | vec2_neg | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1652:24:1652:26 | - ... | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1652:25:1652:26 | v1 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1653:13:1653:20 | vec2_not | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1653:24:1653:26 | ! ... | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1653:25:1653:26 | v1 | | main.rs:1302:5:1307:5 | Vec2 | -| main.rs:1663:18:1663:21 | SelfParam | | main.rs:1660:5:1660:14 | S1 | -| main.rs:1666:25:1668:5 | { ... } | | main.rs:1660:5:1660:14 | S1 | -| main.rs:1667:9:1667:10 | S1 | | main.rs:1660:5:1660:14 | S1 | -| main.rs:1670:41:1674:5 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:1670:41:1674:5 | { ... } | | main.rs:1670:16:1670:39 | ImplTraitTypeRepr | -| main.rs:1670:41:1674:5 | { ... } | Output | main.rs:1660:5:1660:14 | S1 | -| main.rs:1671:9:1673:9 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:1671:9:1673:9 | { ... } | | main.rs:1670:16:1670:39 | ImplTraitTypeRepr | -| main.rs:1671:9:1673:9 | { ... } | Output | main.rs:1660:5:1660:14 | S1 | -| main.rs:1672:13:1672:14 | S1 | | main.rs:1660:5:1660:14 | S1 | -| main.rs:1681:17:1681:46 | SelfParam | | {EXTERNAL LOCATION} | Pin | -| main.rs:1681:17:1681:46 | SelfParam | Ptr | file://:0:0:0:0 | & | -| main.rs:1681:17:1681:46 | SelfParam | Ptr.&T | main.rs:1676:5:1676:14 | S2 | -| main.rs:1681:49:1681:51 | _cx | | file://:0:0:0:0 | & | -| main.rs:1681:49:1681:51 | _cx | &T | {EXTERNAL LOCATION} | Context | -| main.rs:1681:116:1683:9 | { ... } | | {EXTERNAL LOCATION} | Poll | -| main.rs:1681:116:1683:9 | { ... } | T | main.rs:1660:5:1660:14 | S1 | -| main.rs:1682:13:1682:38 | ...::Ready(...) | | {EXTERNAL LOCATION} | Poll | -| main.rs:1682:13:1682:38 | ...::Ready(...) | T | main.rs:1660:5:1660:14 | S1 | -| main.rs:1682:36:1682:37 | S1 | | main.rs:1660:5:1660:14 | S1 | -| main.rs:1686:41:1688:5 | { ... } | | main.rs:1676:5:1676:14 | S2 | -| main.rs:1686:41:1688:5 | { ... } | | main.rs:1686:16:1686:39 | ImplTraitTypeRepr | -| main.rs:1687:9:1687:10 | S2 | | main.rs:1676:5:1676:14 | S2 | -| main.rs:1687:9:1687:10 | S2 | | main.rs:1686:16:1686:39 | ImplTraitTypeRepr | -| main.rs:1691:9:1691:12 | f1(...) | | {EXTERNAL LOCATION} | trait Future | -| main.rs:1691:9:1691:12 | f1(...) | Output | main.rs:1660:5:1660:14 | S1 | -| main.rs:1691:9:1691:18 | await ... | | main.rs:1660:5:1660:14 | S1 | -| main.rs:1692:9:1692:12 | f2(...) | | main.rs:1670:16:1670:39 | ImplTraitTypeRepr | -| main.rs:1692:9:1692:18 | await ... | | main.rs:1660:5:1660:14 | S1 | -| main.rs:1693:9:1693:12 | f3(...) | | main.rs:1686:16:1686:39 | ImplTraitTypeRepr | -| main.rs:1693:9:1693:18 | await ... | | main.rs:1660:5:1660:14 | S1 | -| main.rs:1694:9:1694:10 | S2 | | main.rs:1676:5:1676:14 | S2 | -| main.rs:1694:9:1694:16 | await S2 | | main.rs:1660:5:1660:14 | S1 | -| main.rs:1695:13:1695:13 | b | | {EXTERNAL LOCATION} | trait Future | -| main.rs:1695:13:1695:13 | b | Output | main.rs:1660:5:1660:14 | S1 | -| main.rs:1695:17:1697:9 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:1695:17:1697:9 | { ... } | Output | main.rs:1660:5:1660:14 | S1 | -| main.rs:1696:13:1696:14 | S1 | | main.rs:1660:5:1660:14 | S1 | +| main.rs:1634:13:1634:20 | vec2_shr | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1634:24:1634:25 | v1 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1634:24:1634:33 | ... >> ... | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1634:30:1634:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:1637:13:1637:34 | mut vec2_bitand_assign | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1637:38:1637:39 | v1 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1638:9:1638:26 | vec2_bitand_assign | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1638:9:1638:32 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1638:31:1638:32 | v2 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1640:13:1640:33 | mut vec2_bitor_assign | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1640:37:1640:38 | v1 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1641:9:1641:25 | vec2_bitor_assign | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1641:9:1641:31 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1641:30:1641:31 | v2 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1643:13:1643:34 | mut vec2_bitxor_assign | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1643:38:1643:39 | v1 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1644:9:1644:26 | vec2_bitxor_assign | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1644:9:1644:32 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1644:31:1644:32 | v2 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1646:13:1646:31 | mut vec2_shl_assign | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1646:35:1646:36 | v1 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1647:9:1647:23 | vec2_shl_assign | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1647:9:1647:32 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:1647:29:1647:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:1649:13:1649:31 | mut vec2_shr_assign | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1649:35:1649:36 | v1 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1650:9:1650:23 | vec2_shr_assign | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1650:9:1650:32 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:1650:29:1650:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:1653:13:1653:20 | vec2_neg | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1653:24:1653:26 | - ... | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1653:25:1653:26 | v1 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1654:13:1654:20 | vec2_not | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1654:24:1654:26 | ! ... | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1654:25:1654:26 | v1 | | main.rs:1303:5:1308:5 | Vec2 | +| main.rs:1664:18:1664:21 | SelfParam | | main.rs:1661:5:1661:14 | S1 | +| main.rs:1667:25:1669:5 | { ... } | | main.rs:1661:5:1661:14 | S1 | +| main.rs:1668:9:1668:10 | S1 | | main.rs:1661:5:1661:14 | S1 | +| main.rs:1671:41:1673:5 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1671:41:1673:5 | { ... } | | main.rs:1671:16:1671:39 | ImplTraitTypeRepr | +| main.rs:1671:41:1673:5 | { ... } | Output | main.rs:1661:5:1661:14 | S1 | +| main.rs:1672:9:1672:20 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1672:9:1672:20 | { ... } | | main.rs:1671:16:1671:39 | ImplTraitTypeRepr | +| main.rs:1672:9:1672:20 | { ... } | Output | main.rs:1661:5:1661:14 | S1 | +| main.rs:1672:17:1672:18 | S1 | | main.rs:1661:5:1661:14 | S1 | +| main.rs:1681:13:1681:42 | SelfParam | | {EXTERNAL LOCATION} | Pin | +| main.rs:1681:13:1681:42 | SelfParam | Ptr | file://:0:0:0:0 | & | +| main.rs:1681:13:1681:42 | SelfParam | Ptr.&T | main.rs:1675:5:1675:14 | S2 | +| main.rs:1682:13:1682:15 | _cx | | file://:0:0:0:0 | & | +| main.rs:1682:13:1682:15 | _cx | &T | {EXTERNAL LOCATION} | Context | +| main.rs:1683:44:1685:9 | { ... } | | {EXTERNAL LOCATION} | Poll | +| main.rs:1683:44:1685:9 | { ... } | T | main.rs:1661:5:1661:14 | S1 | +| main.rs:1684:13:1684:38 | ...::Ready(...) | | {EXTERNAL LOCATION} | Poll | +| main.rs:1684:13:1684:38 | ...::Ready(...) | T | main.rs:1661:5:1661:14 | S1 | +| main.rs:1684:36:1684:37 | S1 | | main.rs:1661:5:1661:14 | S1 | +| main.rs:1688:41:1690:5 | { ... } | | main.rs:1675:5:1675:14 | S2 | +| main.rs:1688:41:1690:5 | { ... } | | main.rs:1688:16:1688:39 | ImplTraitTypeRepr | +| main.rs:1689:9:1689:10 | S2 | | main.rs:1675:5:1675:14 | S2 | +| main.rs:1689:9:1689:10 | S2 | | main.rs:1688:16:1688:39 | ImplTraitTypeRepr | +| main.rs:1693:9:1693:12 | f1(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1693:9:1693:12 | f1(...) | Output | main.rs:1661:5:1661:14 | S1 | +| main.rs:1693:9:1693:18 | await ... | | main.rs:1661:5:1661:14 | S1 | +| main.rs:1694:9:1694:12 | f2(...) | | main.rs:1671:16:1671:39 | ImplTraitTypeRepr | +| main.rs:1694:9:1694:18 | await ... | | main.rs:1661:5:1661:14 | S1 | +| main.rs:1695:9:1695:12 | f3(...) | | main.rs:1688:16:1688:39 | ImplTraitTypeRepr | +| main.rs:1695:9:1695:18 | await ... | | main.rs:1661:5:1661:14 | S1 | +| main.rs:1696:9:1696:10 | S2 | | main.rs:1675:5:1675:14 | S2 | +| main.rs:1696:9:1696:16 | await S2 | | main.rs:1661:5:1661:14 | S1 | +| main.rs:1697:13:1697:13 | b | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1697:13:1697:13 | b | Output | main.rs:1661:5:1661:14 | S1 | +| main.rs:1697:17:1697:28 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1697:17:1697:28 | { ... } | Output | main.rs:1661:5:1661:14 | S1 | +| main.rs:1697:25:1697:26 | S1 | | main.rs:1661:5:1661:14 | S1 | | main.rs:1698:9:1698:9 | b | | {EXTERNAL LOCATION} | trait Future | -| main.rs:1698:9:1698:9 | b | Output | main.rs:1660:5:1660:14 | S1 | -| main.rs:1698:9:1698:15 | await b | | main.rs:1660:5:1660:14 | S1 | -| main.rs:1708:15:1708:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1708:15:1708:19 | SelfParam | &T | main.rs:1707:5:1709:5 | Self [trait Trait1] | -| main.rs:1712:15:1712:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1712:15:1712:19 | SelfParam | &T | main.rs:1711:5:1713:5 | Self [trait Trait2] | -| main.rs:1716:15:1716:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1716:15:1716:19 | SelfParam | &T | main.rs:1704:5:1704:14 | S1 | -| main.rs:1720:15:1720:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1720:15:1720:19 | SelfParam | &T | main.rs:1704:5:1704:14 | S1 | -| main.rs:1723:37:1725:5 | { ... } | | main.rs:1704:5:1704:14 | S1 | -| main.rs:1723:37:1725:5 | { ... } | | main.rs:1723:16:1723:35 | ImplTraitTypeRepr | -| main.rs:1724:9:1724:10 | S1 | | main.rs:1704:5:1704:14 | S1 | -| main.rs:1724:9:1724:10 | S1 | | main.rs:1723:16:1723:35 | ImplTraitTypeRepr | -| main.rs:1728:18:1728:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1728:18:1728:22 | SelfParam | &T | main.rs:1727:5:1729:5 | Self [trait MyTrait] | -| main.rs:1732:18:1732:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1732:18:1732:22 | SelfParam | &T | main.rs:1704:5:1704:14 | S1 | -| main.rs:1732:31:1734:9 | { ... } | | main.rs:1705:5:1705:14 | S2 | -| main.rs:1733:13:1733:14 | S2 | | main.rs:1705:5:1705:14 | S2 | -| main.rs:1737:45:1739:5 | { ... } | | main.rs:1704:5:1704:14 | S1 | -| main.rs:1737:45:1739:5 | { ... } | | main.rs:1737:28:1737:43 | ImplTraitTypeRepr | -| main.rs:1738:9:1738:10 | S1 | | main.rs:1704:5:1704:14 | S1 | -| main.rs:1738:9:1738:10 | S1 | | main.rs:1737:28:1737:43 | ImplTraitTypeRepr | -| main.rs:1741:41:1741:41 | t | | main.rs:1741:26:1741:38 | B | -| main.rs:1741:52:1743:5 | { ... } | | main.rs:1741:23:1741:23 | A | -| main.rs:1742:9:1742:9 | t | | main.rs:1741:26:1741:38 | B | -| main.rs:1742:9:1742:17 | t.get_a() | | main.rs:1741:23:1741:23 | A | -| main.rs:1745:26:1745:26 | t | | main.rs:1745:29:1745:43 | ImplTraitTypeRepr | -| main.rs:1745:51:1747:5 | { ... } | | main.rs:1745:23:1745:23 | A | -| main.rs:1746:9:1746:9 | t | | main.rs:1745:29:1745:43 | ImplTraitTypeRepr | -| main.rs:1746:9:1746:17 | t.get_a() | | main.rs:1745:23:1745:23 | A | -| main.rs:1750:13:1750:13 | x | | main.rs:1723:16:1723:35 | ImplTraitTypeRepr | -| main.rs:1750:17:1750:20 | f1(...) | | main.rs:1723:16:1723:35 | ImplTraitTypeRepr | -| main.rs:1751:9:1751:9 | x | | main.rs:1723:16:1723:35 | ImplTraitTypeRepr | -| main.rs:1752:9:1752:9 | x | | main.rs:1723:16:1723:35 | ImplTraitTypeRepr | -| main.rs:1753:13:1753:13 | a | | main.rs:1737:28:1737:43 | ImplTraitTypeRepr | -| main.rs:1753:17:1753:32 | get_a_my_trait(...) | | main.rs:1737:28:1737:43 | ImplTraitTypeRepr | -| main.rs:1754:13:1754:13 | b | | main.rs:1705:5:1705:14 | S2 | -| main.rs:1754:17:1754:33 | uses_my_trait1(...) | | main.rs:1705:5:1705:14 | S2 | -| main.rs:1754:32:1754:32 | a | | main.rs:1737:28:1737:43 | ImplTraitTypeRepr | -| main.rs:1755:13:1755:13 | a | | main.rs:1737:28:1737:43 | ImplTraitTypeRepr | -| main.rs:1755:17:1755:32 | get_a_my_trait(...) | | main.rs:1737:28:1737:43 | ImplTraitTypeRepr | -| main.rs:1756:13:1756:13 | c | | main.rs:1705:5:1705:14 | S2 | -| main.rs:1756:17:1756:33 | uses_my_trait2(...) | | main.rs:1705:5:1705:14 | S2 | -| main.rs:1756:32:1756:32 | a | | main.rs:1737:28:1737:43 | ImplTraitTypeRepr | -| main.rs:1757:13:1757:13 | d | | main.rs:1705:5:1705:14 | S2 | -| main.rs:1757:17:1757:34 | uses_my_trait2(...) | | main.rs:1705:5:1705:14 | S2 | -| main.rs:1757:32:1757:33 | S1 | | main.rs:1704:5:1704:14 | S1 | -| main.rs:1768:16:1768:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1768:16:1768:20 | SelfParam | &T | main.rs:1764:5:1765:13 | S | -| main.rs:1768:31:1770:9 | { ... } | | main.rs:1764:5:1765:13 | S | -| main.rs:1769:13:1769:13 | S | | main.rs:1764:5:1765:13 | S | -| main.rs:1779:26:1781:9 | { ... } | | main.rs:1773:5:1776:5 | MyVec | -| main.rs:1779:26:1781:9 | { ... } | T | main.rs:1778:10:1778:10 | T | -| main.rs:1780:13:1780:38 | MyVec {...} | | main.rs:1773:5:1776:5 | MyVec | -| main.rs:1780:13:1780:38 | MyVec {...} | T | main.rs:1778:10:1778:10 | T | -| main.rs:1780:27:1780:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:1780:27:1780:36 | ...::new(...) | T | main.rs:1778:10:1778:10 | T | -| main.rs:1783:17:1783:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1783:17:1783:25 | SelfParam | &T | main.rs:1773:5:1776:5 | MyVec | -| main.rs:1783:17:1783:25 | SelfParam | &T.T | main.rs:1778:10:1778:10 | T | -| main.rs:1783:28:1783:32 | value | | main.rs:1778:10:1778:10 | T | -| main.rs:1784:13:1784:16 | self | | file://:0:0:0:0 | & | -| main.rs:1784:13:1784:16 | self | &T | main.rs:1773:5:1776:5 | MyVec | -| main.rs:1784:13:1784:16 | self | &T.T | main.rs:1778:10:1778:10 | T | -| main.rs:1784:13:1784:21 | self.data | | {EXTERNAL LOCATION} | Vec | -| main.rs:1784:13:1784:21 | self.data | T | main.rs:1778:10:1778:10 | T | -| main.rs:1784:28:1784:32 | value | | main.rs:1778:10:1778:10 | T | -| main.rs:1792:18:1792:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1792:18:1792:22 | SelfParam | &T | main.rs:1773:5:1776:5 | MyVec | -| main.rs:1792:18:1792:22 | SelfParam | &T.T | main.rs:1788:10:1788:10 | T | -| main.rs:1792:25:1792:29 | index | | {EXTERNAL LOCATION} | usize | -| main.rs:1792:56:1794:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1792:56:1794:9 | { ... } | &T | main.rs:1788:10:1788:10 | T | -| main.rs:1793:13:1793:29 | &... | | file://:0:0:0:0 | & | -| main.rs:1793:13:1793:29 | &... | &T | main.rs:1788:10:1788:10 | T | -| main.rs:1793:14:1793:17 | self | | file://:0:0:0:0 | & | -| main.rs:1793:14:1793:17 | self | &T | main.rs:1773:5:1776:5 | MyVec | -| main.rs:1793:14:1793:17 | self | &T.T | main.rs:1788:10:1788:10 | T | -| main.rs:1793:14:1793:22 | self.data | | {EXTERNAL LOCATION} | Vec | -| main.rs:1793:14:1793:22 | self.data | T | main.rs:1788:10:1788:10 | T | -| main.rs:1793:14:1793:29 | ...[index] | | main.rs:1788:10:1788:10 | T | -| main.rs:1793:24:1793:28 | index | | {EXTERNAL LOCATION} | usize | -| main.rs:1797:22:1797:26 | slice | | file://:0:0:0:0 | & | -| main.rs:1797:22:1797:26 | slice | &T | file://:0:0:0:0 | [] | -| main.rs:1797:22:1797:26 | slice | &T.[T] | main.rs:1764:5:1765:13 | S | -| main.rs:1798:13:1798:13 | x | | main.rs:1764:5:1765:13 | S | -| main.rs:1798:17:1798:21 | slice | | file://:0:0:0:0 | & | -| main.rs:1798:17:1798:21 | slice | &T | file://:0:0:0:0 | [] | -| main.rs:1798:17:1798:21 | slice | &T.[T] | main.rs:1764:5:1765:13 | S | -| main.rs:1798:17:1798:24 | slice[0] | | main.rs:1764:5:1765:13 | S | -| main.rs:1798:17:1798:30 | ... .foo() | | main.rs:1764:5:1765:13 | S | -| main.rs:1798:23:1798:23 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1802:13:1802:19 | mut vec | | main.rs:1773:5:1776:5 | MyVec | -| main.rs:1802:13:1802:19 | mut vec | T | main.rs:1764:5:1765:13 | S | -| main.rs:1802:23:1802:34 | ...::new(...) | | main.rs:1773:5:1776:5 | MyVec | -| main.rs:1802:23:1802:34 | ...::new(...) | T | main.rs:1764:5:1765:13 | S | -| main.rs:1803:9:1803:11 | vec | | main.rs:1773:5:1776:5 | MyVec | -| main.rs:1803:9:1803:11 | vec | T | main.rs:1764:5:1765:13 | S | -| main.rs:1803:18:1803:18 | S | | main.rs:1764:5:1765:13 | S | -| main.rs:1804:9:1804:11 | vec | | main.rs:1773:5:1776:5 | MyVec | -| main.rs:1804:9:1804:11 | vec | T | main.rs:1764:5:1765:13 | S | -| main.rs:1804:13:1804:13 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1806:13:1806:14 | xs | | file://:0:0:0:0 | [] | -| main.rs:1806:13:1806:14 | xs | | file://:0:0:0:0 | [] | -| main.rs:1806:13:1806:14 | xs | [T;...] | main.rs:1764:5:1765:13 | S | -| main.rs:1806:13:1806:14 | xs | [T] | main.rs:1764:5:1765:13 | S | -| main.rs:1806:21:1806:21 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1806:26:1806:28 | [...] | | file://:0:0:0:0 | [] | -| main.rs:1806:26:1806:28 | [...] | | file://:0:0:0:0 | [] | -| main.rs:1806:26:1806:28 | [...] | [T;...] | main.rs:1764:5:1765:13 | S | -| main.rs:1806:26:1806:28 | [...] | [T] | main.rs:1764:5:1765:13 | S | -| main.rs:1806:27:1806:27 | S | | main.rs:1764:5:1765:13 | S | -| main.rs:1807:13:1807:13 | x | | main.rs:1764:5:1765:13 | S | -| main.rs:1807:17:1807:18 | xs | | file://:0:0:0:0 | [] | -| main.rs:1807:17:1807:18 | xs | | file://:0:0:0:0 | [] | -| main.rs:1807:17:1807:18 | xs | [T;...] | main.rs:1764:5:1765:13 | S | -| main.rs:1807:17:1807:18 | xs | [T] | main.rs:1764:5:1765:13 | S | -| main.rs:1807:17:1807:21 | xs[0] | | main.rs:1764:5:1765:13 | S | -| main.rs:1807:17:1807:27 | ... .foo() | | main.rs:1764:5:1765:13 | S | -| main.rs:1807:20:1807:20 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1809:23:1809:25 | &xs | | file://:0:0:0:0 | & | -| main.rs:1809:23:1809:25 | &xs | &T | file://:0:0:0:0 | [] | -| main.rs:1809:23:1809:25 | &xs | &T | file://:0:0:0:0 | [] | -| main.rs:1809:23:1809:25 | &xs | &T.[T;...] | main.rs:1764:5:1765:13 | S | -| main.rs:1809:23:1809:25 | &xs | &T.[T] | main.rs:1764:5:1765:13 | S | -| main.rs:1809:24:1809:25 | xs | | file://:0:0:0:0 | [] | -| main.rs:1809:24:1809:25 | xs | | file://:0:0:0:0 | [] | -| main.rs:1809:24:1809:25 | xs | [T;...] | main.rs:1764:5:1765:13 | S | -| main.rs:1809:24:1809:25 | xs | [T] | main.rs:1764:5:1765:13 | S | -| main.rs:1815:25:1815:35 | "Hello, {}" | | {EXTERNAL LOCATION} | str | -| main.rs:1815:25:1815:45 | ...::format(...) | | {EXTERNAL LOCATION} | String | -| main.rs:1815:25:1815:45 | { ... } | | {EXTERNAL LOCATION} | String | -| main.rs:1815:38:1815:45 | "World!" | | {EXTERNAL LOCATION} | str | -| main.rs:1821:5:1821:20 | ...::f(...) | | main.rs:67:5:67:21 | Foo | -| main.rs:1822:5:1822:60 | ...::g(...) | | main.rs:67:5:67:21 | Foo | -| main.rs:1822:20:1822:38 | ...::Foo {...} | | main.rs:67:5:67:21 | Foo | -| main.rs:1822:41:1822:59 | ...::Foo {...} | | main.rs:67:5:67:21 | Foo | -| main.rs:1838:5:1838:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1698:9:1698:9 | b | Output | main.rs:1661:5:1661:14 | S1 | +| main.rs:1698:9:1698:15 | await b | | main.rs:1661:5:1661:14 | S1 | +| main.rs:1707:15:1707:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1707:15:1707:19 | SelfParam | &T | main.rs:1706:5:1708:5 | Self [trait Trait1] | +| main.rs:1711:15:1711:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1711:15:1711:19 | SelfParam | &T | main.rs:1710:5:1712:5 | Self [trait Trait2] | +| main.rs:1715:15:1715:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1715:15:1715:19 | SelfParam | &T | main.rs:1703:5:1703:14 | S1 | +| main.rs:1719:15:1719:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1719:15:1719:19 | SelfParam | &T | main.rs:1703:5:1703:14 | S1 | +| main.rs:1722:37:1724:5 | { ... } | | main.rs:1703:5:1703:14 | S1 | +| main.rs:1722:37:1724:5 | { ... } | | main.rs:1722:16:1722:35 | ImplTraitTypeRepr | +| main.rs:1723:9:1723:10 | S1 | | main.rs:1703:5:1703:14 | S1 | +| main.rs:1723:9:1723:10 | S1 | | main.rs:1722:16:1722:35 | ImplTraitTypeRepr | +| main.rs:1727:18:1727:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1727:18:1727:22 | SelfParam | &T | main.rs:1726:5:1728:5 | Self [trait MyTrait] | +| main.rs:1731:18:1731:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1731:18:1731:22 | SelfParam | &T | main.rs:1703:5:1703:14 | S1 | +| main.rs:1731:31:1733:9 | { ... } | | main.rs:1704:5:1704:14 | S2 | +| main.rs:1732:13:1732:14 | S2 | | main.rs:1704:5:1704:14 | S2 | +| main.rs:1736:45:1738:5 | { ... } | | main.rs:1703:5:1703:14 | S1 | +| main.rs:1736:45:1738:5 | { ... } | | main.rs:1736:28:1736:43 | ImplTraitTypeRepr | +| main.rs:1737:9:1737:10 | S1 | | main.rs:1703:5:1703:14 | S1 | +| main.rs:1737:9:1737:10 | S1 | | main.rs:1736:28:1736:43 | ImplTraitTypeRepr | +| main.rs:1740:41:1740:41 | t | | main.rs:1740:26:1740:38 | B | +| main.rs:1740:52:1742:5 | { ... } | | main.rs:1740:23:1740:23 | A | +| main.rs:1741:9:1741:9 | t | | main.rs:1740:26:1740:38 | B | +| main.rs:1741:9:1741:17 | t.get_a() | | main.rs:1740:23:1740:23 | A | +| main.rs:1744:26:1744:26 | t | | main.rs:1744:29:1744:43 | ImplTraitTypeRepr | +| main.rs:1744:51:1746:5 | { ... } | | main.rs:1744:23:1744:23 | A | +| main.rs:1745:9:1745:9 | t | | main.rs:1744:29:1744:43 | ImplTraitTypeRepr | +| main.rs:1745:9:1745:17 | t.get_a() | | main.rs:1744:23:1744:23 | A | +| main.rs:1749:13:1749:13 | x | | main.rs:1722:16:1722:35 | ImplTraitTypeRepr | +| main.rs:1749:17:1749:20 | f1(...) | | main.rs:1722:16:1722:35 | ImplTraitTypeRepr | +| main.rs:1750:9:1750:9 | x | | main.rs:1722:16:1722:35 | ImplTraitTypeRepr | +| main.rs:1751:9:1751:9 | x | | main.rs:1722:16:1722:35 | ImplTraitTypeRepr | +| main.rs:1752:13:1752:13 | a | | main.rs:1736:28:1736:43 | ImplTraitTypeRepr | +| main.rs:1752:17:1752:32 | get_a_my_trait(...) | | main.rs:1736:28:1736:43 | ImplTraitTypeRepr | +| main.rs:1753:13:1753:13 | b | | main.rs:1704:5:1704:14 | S2 | +| main.rs:1753:17:1753:33 | uses_my_trait1(...) | | main.rs:1704:5:1704:14 | S2 | +| main.rs:1753:32:1753:32 | a | | main.rs:1736:28:1736:43 | ImplTraitTypeRepr | +| main.rs:1754:13:1754:13 | a | | main.rs:1736:28:1736:43 | ImplTraitTypeRepr | +| main.rs:1754:17:1754:32 | get_a_my_trait(...) | | main.rs:1736:28:1736:43 | ImplTraitTypeRepr | +| main.rs:1755:13:1755:13 | c | | main.rs:1704:5:1704:14 | S2 | +| main.rs:1755:17:1755:33 | uses_my_trait2(...) | | main.rs:1704:5:1704:14 | S2 | +| main.rs:1755:32:1755:32 | a | | main.rs:1736:28:1736:43 | ImplTraitTypeRepr | +| main.rs:1756:13:1756:13 | d | | main.rs:1704:5:1704:14 | S2 | +| main.rs:1756:17:1756:34 | uses_my_trait2(...) | | main.rs:1704:5:1704:14 | S2 | +| main.rs:1756:32:1756:33 | S1 | | main.rs:1703:5:1703:14 | S1 | +| main.rs:1767:16:1767:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1767:16:1767:20 | SelfParam | &T | main.rs:1763:5:1764:13 | S | +| main.rs:1767:31:1769:9 | { ... } | | main.rs:1763:5:1764:13 | S | +| main.rs:1768:13:1768:13 | S | | main.rs:1763:5:1764:13 | S | +| main.rs:1778:26:1780:9 | { ... } | | main.rs:1772:5:1775:5 | MyVec | +| main.rs:1778:26:1780:9 | { ... } | T | main.rs:1777:10:1777:10 | T | +| main.rs:1779:13:1779:38 | MyVec {...} | | main.rs:1772:5:1775:5 | MyVec | +| main.rs:1779:13:1779:38 | MyVec {...} | T | main.rs:1777:10:1777:10 | T | +| main.rs:1779:27:1779:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:1779:27:1779:36 | ...::new(...) | T | main.rs:1777:10:1777:10 | T | +| main.rs:1782:17:1782:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1782:17:1782:25 | SelfParam | &T | main.rs:1772:5:1775:5 | MyVec | +| main.rs:1782:17:1782:25 | SelfParam | &T.T | main.rs:1777:10:1777:10 | T | +| main.rs:1782:28:1782:32 | value | | main.rs:1777:10:1777:10 | T | +| main.rs:1783:13:1783:16 | self | | file://:0:0:0:0 | & | +| main.rs:1783:13:1783:16 | self | &T | main.rs:1772:5:1775:5 | MyVec | +| main.rs:1783:13:1783:16 | self | &T.T | main.rs:1777:10:1777:10 | T | +| main.rs:1783:13:1783:21 | self.data | | {EXTERNAL LOCATION} | Vec | +| main.rs:1783:13:1783:21 | self.data | T | main.rs:1777:10:1777:10 | T | +| main.rs:1783:28:1783:32 | value | | main.rs:1777:10:1777:10 | T | +| main.rs:1791:18:1791:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1791:18:1791:22 | SelfParam | &T | main.rs:1772:5:1775:5 | MyVec | +| main.rs:1791:18:1791:22 | SelfParam | &T.T | main.rs:1787:10:1787:10 | T | +| main.rs:1791:25:1791:29 | index | | {EXTERNAL LOCATION} | usize | +| main.rs:1791:56:1793:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1791:56:1793:9 | { ... } | &T | main.rs:1787:10:1787:10 | T | +| main.rs:1792:13:1792:29 | &... | | file://:0:0:0:0 | & | +| main.rs:1792:13:1792:29 | &... | &T | main.rs:1787:10:1787:10 | T | +| main.rs:1792:14:1792:17 | self | | file://:0:0:0:0 | & | +| main.rs:1792:14:1792:17 | self | &T | main.rs:1772:5:1775:5 | MyVec | +| main.rs:1792:14:1792:17 | self | &T.T | main.rs:1787:10:1787:10 | T | +| main.rs:1792:14:1792:22 | self.data | | {EXTERNAL LOCATION} | Vec | +| main.rs:1792:14:1792:22 | self.data | T | main.rs:1787:10:1787:10 | T | +| main.rs:1792:14:1792:29 | ...[index] | | main.rs:1787:10:1787:10 | T | +| main.rs:1792:24:1792:28 | index | | {EXTERNAL LOCATION} | usize | +| main.rs:1796:22:1796:26 | slice | | file://:0:0:0:0 | & | +| main.rs:1796:22:1796:26 | slice | &T | file://:0:0:0:0 | [] | +| main.rs:1796:22:1796:26 | slice | &T.[T] | main.rs:1763:5:1764:13 | S | +| main.rs:1797:13:1797:13 | x | | main.rs:1763:5:1764:13 | S | +| main.rs:1797:17:1797:21 | slice | | file://:0:0:0:0 | & | +| main.rs:1797:17:1797:21 | slice | &T | file://:0:0:0:0 | [] | +| main.rs:1797:17:1797:21 | slice | &T.[T] | main.rs:1763:5:1764:13 | S | +| main.rs:1797:17:1797:24 | slice[0] | | main.rs:1763:5:1764:13 | S | +| main.rs:1797:17:1797:30 | ... .foo() | | main.rs:1763:5:1764:13 | S | +| main.rs:1797:23:1797:23 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1801:13:1801:19 | mut vec | | main.rs:1772:5:1775:5 | MyVec | +| main.rs:1801:13:1801:19 | mut vec | T | main.rs:1763:5:1764:13 | S | +| main.rs:1801:23:1801:34 | ...::new(...) | | main.rs:1772:5:1775:5 | MyVec | +| main.rs:1801:23:1801:34 | ...::new(...) | T | main.rs:1763:5:1764:13 | S | +| main.rs:1802:9:1802:11 | vec | | main.rs:1772:5:1775:5 | MyVec | +| main.rs:1802:9:1802:11 | vec | T | main.rs:1763:5:1764:13 | S | +| main.rs:1802:18:1802:18 | S | | main.rs:1763:5:1764:13 | S | +| main.rs:1803:9:1803:11 | vec | | main.rs:1772:5:1775:5 | MyVec | +| main.rs:1803:9:1803:11 | vec | T | main.rs:1763:5:1764:13 | S | +| main.rs:1803:13:1803:13 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1805:13:1805:14 | xs | | file://:0:0:0:0 | [] | +| main.rs:1805:13:1805:14 | xs | | file://:0:0:0:0 | [] | +| main.rs:1805:13:1805:14 | xs | [T;...] | main.rs:1763:5:1764:13 | S | +| main.rs:1805:13:1805:14 | xs | [T] | main.rs:1763:5:1764:13 | S | +| main.rs:1805:21:1805:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1805:26:1805:28 | [...] | | file://:0:0:0:0 | [] | +| main.rs:1805:26:1805:28 | [...] | | file://:0:0:0:0 | [] | +| main.rs:1805:26:1805:28 | [...] | [T;...] | main.rs:1763:5:1764:13 | S | +| main.rs:1805:26:1805:28 | [...] | [T] | main.rs:1763:5:1764:13 | S | +| main.rs:1805:27:1805:27 | S | | main.rs:1763:5:1764:13 | S | +| main.rs:1806:13:1806:13 | x | | main.rs:1763:5:1764:13 | S | +| main.rs:1806:17:1806:18 | xs | | file://:0:0:0:0 | [] | +| main.rs:1806:17:1806:18 | xs | | file://:0:0:0:0 | [] | +| main.rs:1806:17:1806:18 | xs | [T;...] | main.rs:1763:5:1764:13 | S | +| main.rs:1806:17:1806:18 | xs | [T] | main.rs:1763:5:1764:13 | S | +| main.rs:1806:17:1806:21 | xs[0] | | main.rs:1763:5:1764:13 | S | +| main.rs:1806:17:1806:27 | ... .foo() | | main.rs:1763:5:1764:13 | S | +| main.rs:1806:20:1806:20 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1808:23:1808:25 | &xs | | file://:0:0:0:0 | & | +| main.rs:1808:23:1808:25 | &xs | &T | file://:0:0:0:0 | [] | +| main.rs:1808:23:1808:25 | &xs | &T | file://:0:0:0:0 | [] | +| main.rs:1808:23:1808:25 | &xs | &T.[T;...] | main.rs:1763:5:1764:13 | S | +| main.rs:1808:23:1808:25 | &xs | &T.[T] | main.rs:1763:5:1764:13 | S | +| main.rs:1808:24:1808:25 | xs | | file://:0:0:0:0 | [] | +| main.rs:1808:24:1808:25 | xs | | file://:0:0:0:0 | [] | +| main.rs:1808:24:1808:25 | xs | [T;...] | main.rs:1763:5:1764:13 | S | +| main.rs:1808:24:1808:25 | xs | [T] | main.rs:1763:5:1764:13 | S | +| main.rs:1814:25:1814:35 | "Hello, {}" | | {EXTERNAL LOCATION} | str | +| main.rs:1814:25:1814:45 | ...::format(...) | | {EXTERNAL LOCATION} | String | +| main.rs:1814:25:1814:45 | { ... } | | {EXTERNAL LOCATION} | String | +| main.rs:1814:38:1814:45 | "World!" | | {EXTERNAL LOCATION} | str | +| main.rs:1820:19:1820:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1820:19:1820:23 | SelfParam | &T | main.rs:1819:5:1821:5 | Self [trait MyAdd] | +| main.rs:1820:26:1820:30 | value | | main.rs:1819:17:1819:17 | T | +| main.rs:1825:19:1825:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1825:19:1825:23 | SelfParam | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1825:26:1825:30 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:1825:46:1827:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1826:13:1826:17 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:1832:19:1832:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1832:19:1832:23 | SelfParam | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1832:26:1832:30 | value | | file://:0:0:0:0 | & | +| main.rs:1832:26:1832:30 | value | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1832:26:1832:30 | value | &T | file://:0:0:0:0 | & | +| main.rs:1832:47:1834:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1832:47:1834:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1833:13:1833:18 | * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1833:13:1833:18 | * ... | | file://:0:0:0:0 | & | +| main.rs:1833:14:1833:18 | value | | file://:0:0:0:0 | & | +| main.rs:1833:14:1833:18 | value | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1833:14:1833:18 | value | &T | file://:0:0:0:0 | & | +| main.rs:1839:19:1839:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1839:19:1839:23 | SelfParam | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1839:26:1839:30 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:1839:47:1845:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:1839:47:1845:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1840:13:1844:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| main.rs:1840:13:1844:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | +| main.rs:1840:16:1840:20 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:1840:22:1842:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:1840:22:1842:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1841:17:1841:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1841:17:1841:17 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1842:20:1844:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:1842:20:1844:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1843:17:1843:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1843:17:1843:17 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1849:13:1849:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1849:13:1849:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1849:22:1849:23 | 73 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1849:22:1849:23 | 73 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1850:9:1850:9 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1850:9:1850:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1850:9:1850:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1850:18:1850:21 | 5i64 | | {EXTERNAL LOCATION} | bool | +| main.rs:1850:18:1850:21 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1850:18:1850:21 | 5i64 | | file://:0:0:0:0 | & | +| main.rs:1850:18:1850:21 | 5i64 | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1851:9:1851:9 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1851:9:1851:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1851:9:1851:23 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1851:18:1851:22 | &5i64 | | {EXTERNAL LOCATION} | bool | +| main.rs:1851:18:1851:22 | &5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1851:18:1851:22 | &5i64 | | file://:0:0:0:0 | & | +| main.rs:1851:18:1851:22 | &5i64 | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1851:19:1851:22 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1852:9:1852:9 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1852:9:1852:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1852:9:1852:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1852:18:1852:21 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1852:18:1852:21 | true | | {EXTERNAL LOCATION} | i64 | +| main.rs:1852:18:1852:21 | true | | file://:0:0:0:0 | & | +| main.rs:1852:18:1852:21 | true | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1858:5:1858:20 | ...::f(...) | | main.rs:67:5:67:21 | Foo | +| main.rs:1859:5:1859:60 | ...::g(...) | | main.rs:67:5:67:21 | Foo | +| main.rs:1859:20:1859:38 | ...::Foo {...} | | main.rs:67:5:67:21 | Foo | +| main.rs:1859:41:1859:59 | ...::Foo {...} | | main.rs:67:5:67:21 | Foo | +| main.rs:1875:5:1875:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | testFailures From eacf034dded0ec50632ff0c67d64d83049b0f1de Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Fri, 13 Jun 2025 10:22:16 +0200 Subject: [PATCH 066/150] Rust: Disambiguate some method calls based on argument types --- .../codeql/rust/internal/TypeInference.qll | 115 ++++++++++++++++++ .../test/library-tests/type-inference/main.rs | 6 +- .../type-inference/type-inference.expected | 8 -- .../PathResolutionConsistency.expected | 9 -- 4 files changed, 118 insertions(+), 20 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index 85fe4f8d7fd..0d39620710f 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -1231,11 +1231,126 @@ private Function getTypeParameterMethod(TypeParameter tp, string name) { result = getMethodSuccessor(tp.(ImplTraitTypeTypeParameter).getImplTraitTypeRepr(), name) } +bindingset[t1, t2] +private predicate typeMentionEqual(TypeMention t1, TypeMention t2) { + forex(TypePath path, Type type | t1.resolveTypeAt(path) = type | t2.resolveTypeAt(path) = type) +} + +pragma[nomagic] +private predicate implSiblingCandidate( + Impl impl, TraitItemNode trait, Type rootType, TypeMention selfTy +) { + trait = impl.(ImplItemNode).resolveTraitTy() and + not exists(impl.getAttributeMacroExpansion()) and + // We use this for resolving methods, so exclude traits that do not have methods. + exists(Function f | f = trait.getASuccessor(_) and f.getParamList().hasSelfParam()) and + selfTy = impl.getSelfTy() and + rootType = selfTy.resolveType() +} + +/** + * Holds if `impl1` and `impl2` are a sibling implementations of `trait`. We + * consider implementations to be siblings if they implement the same trait for + * the same type. In that case `Self` is the same type in both implementations, + * and method calls to the implementations cannot be resolved unambiguously + * based only on the receiver type. + */ +pragma[inline] +private predicate implSiblings(TraitItemNode trait, Impl impl1, Impl impl2) { + exists(Type rootType, TypeMention selfTy1, TypeMention selfTy2 | + impl1 != impl2 and + implSiblingCandidate(impl1, trait, rootType, selfTy1) and + implSiblingCandidate(impl2, trait, rootType, selfTy2) and + // In principle the second conjunct below should be superflous, but we still + // have ill-formed type mentions for types that we don't understand. For + // those checking both directions restricts further. Note also that we check + // syntactic equality, whereas equality up to renaming would be more + // correct. + typeMentionEqual(selfTy1, selfTy2) and + typeMentionEqual(selfTy2, selfTy1) + ) +} + +/** + * Holds if `impl` is an implementation of `trait` and if another implementation + * exists for the same type. + */ +pragma[nomagic] +private predicate implHasSibling(Impl impl, Trait trait) { implSiblings(trait, impl, _) } + +/** + * Holds if a type parameter of `trait` occurs in the method with the name + * `methodName` at the `pos`th parameter at `path`. + */ +bindingset[trait] +pragma[inline_late] +private predicate traitTypeParameterOccurrence( + TraitItemNode trait, string methodName, int pos, TypePath path +) { + exists(Function f | f = trait.getASuccessor(methodName) | + f.getParam(pos).getTypeRepr().(TypeMention).resolveTypeAt(path) = + trait.(TraitTypeAbstraction).getATypeParameter() + ) +} + +bindingset[f, pos, path] +pragma[inline_late] +private predicate methodTypeAtPath(Function f, int pos, TypePath path, Type type) { + f.getParam(pos).getTypeRepr().(TypeMention).resolveTypeAt(path) = type +} + +/** + * Holds if resolving the method in `impl` with the name `methodName` requires + * inspecting the types of applied _arguments_ in order to determine whether it + * is the correct resolution. + */ +private predicate methodResolutionDependsOnArgument( + Impl impl, string methodName, int pos, TypePath path, Type type +) { + /* + * As seen in the example below, when an implementation has a sibling for a + * trait we find occurrences of a type parameter of the trait in a method + * signature in the trait. We then find the type given in the implementation + * at the same position, which is a position that might disambiguate the + * method from its siblings. + * + * ```rust + * trait MyTrait { + * fn method(&self, value: Foo) -> Self; + * // ^^^^^^^^^^^^^ `pos` = 0 + * // ^ `path` = "T" + * } + * impl MyAdd for i64 { + * fn method(&self, value: i64) -> Self { ... } + * // ^^^ `type` = i64 + * } + * ``` + * + * Note that we only check the root type symbol at the position. If the type + * at that position is a type constructor (for instance `Vec<..>`) then + * inspecting the entire type tree could be necessary to disambiguate the + * method. In that case we will still resolve several methods. + */ + + exists(TraitItemNode trait | + implHasSibling(impl, trait) and + traitTypeParameterOccurrence(trait, methodName, pos, path) and + methodTypeAtPath(getMethodSuccessor(impl, methodName), pos, path, type) + ) +} + /** Gets a method from an `impl` block that matches the method call `mc`. */ private Function getMethodFromImpl(MethodCall mc) { exists(Impl impl | IsInstantiationOf::isInstantiationOf(mc, impl, _) and result = getMethodSuccessor(impl, mc.getMethodName()) + | + not methodResolutionDependsOnArgument(impl, _, _, _, _) + or + exists(int pos, TypePath path, Type type | + methodResolutionDependsOnArgument(impl, mc.getMethodName(), pos, path, type) and + inferType(mc.getArgument(pos), path) = type + ) ) } diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index 4fd2d45d023..0d5c377b0dc 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -1847,9 +1847,9 @@ mod method_determined_by_argument_type { pub fn f() { let x: i64 = 73; - x.my_add(5i64); // $ method=MyAdd::my_add SPURIOUS: method=MyAdd::my_add SPURIOUS: method=MyAdd<&i64>::my_add - x.my_add(&5i64); // $ method=MyAdd<&i64>::my_add SPURIOUS: method=MyAdd::my_add SPURIOUS: method=MyAdd::my_add - x.my_add(true); // $ method=MyAdd::my_add SPURIOUS: method=MyAdd::my_add SPURIOUS: method=MyAdd<&i64>::my_add + x.my_add(5i64); // $ method=MyAdd::my_add + x.my_add(&5i64); // $ method=MyAdd<&i64>::my_add + x.my_add(true); // $ method=MyAdd::my_add } } diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index 18635e885fb..21f5ec0d466 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -2645,15 +2645,10 @@ inferType | main.rs:1850:9:1850:9 | x | | {EXTERNAL LOCATION} | i32 | | main.rs:1850:9:1850:9 | x | | {EXTERNAL LOCATION} | i64 | | main.rs:1850:9:1850:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1850:18:1850:21 | 5i64 | | {EXTERNAL LOCATION} | bool | | main.rs:1850:18:1850:21 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1850:18:1850:21 | 5i64 | | file://:0:0:0:0 | & | -| main.rs:1850:18:1850:21 | 5i64 | &T | {EXTERNAL LOCATION} | i64 | | main.rs:1851:9:1851:9 | x | | {EXTERNAL LOCATION} | i32 | | main.rs:1851:9:1851:9 | x | | {EXTERNAL LOCATION} | i64 | | main.rs:1851:9:1851:23 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1851:18:1851:22 | &5i64 | | {EXTERNAL LOCATION} | bool | -| main.rs:1851:18:1851:22 | &5i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:1851:18:1851:22 | &5i64 | | file://:0:0:0:0 | & | | main.rs:1851:18:1851:22 | &5i64 | &T | {EXTERNAL LOCATION} | i64 | | main.rs:1851:19:1851:22 | 5i64 | | {EXTERNAL LOCATION} | i64 | @@ -2661,9 +2656,6 @@ inferType | main.rs:1852:9:1852:9 | x | | {EXTERNAL LOCATION} | i64 | | main.rs:1852:9:1852:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | | main.rs:1852:18:1852:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1852:18:1852:21 | true | | {EXTERNAL LOCATION} | i64 | -| main.rs:1852:18:1852:21 | true | | file://:0:0:0:0 | & | -| main.rs:1852:18:1852:21 | true | &T | {EXTERNAL LOCATION} | i64 | | main.rs:1858:5:1858:20 | ...::f(...) | | main.rs:67:5:67:21 | Foo | | main.rs:1859:5:1859:60 | ...::g(...) | | main.rs:67:5:67:21 | Foo | | main.rs:1859:20:1859:38 | ...::Foo {...} | | main.rs:67:5:67:21 | Foo | diff --git a/rust/ql/test/library-tests/variables/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/variables/CONSISTENCY/PathResolutionConsistency.expected index 85a794a0410..82fc38ae2fa 100644 --- a/rust/ql/test/library-tests/variables/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/variables/CONSISTENCY/PathResolutionConsistency.expected @@ -1,12 +1,3 @@ -multipleMethodCallTargets -| main.rs:374:5:374:27 | ... .add_assign(...) | file://:0:0:0:0 | fn add_assign | -| main.rs:374:5:374:27 | ... .add_assign(...) | file://:0:0:0:0 | fn add_assign | -| main.rs:374:5:374:27 | ... .add_assign(...) | file://:0:0:0:0 | fn add_assign | -| main.rs:374:5:374:27 | ... .add_assign(...) | file://:0:0:0:0 | fn add_assign | -| main.rs:459:9:459:23 | z.add_assign(...) | file://:0:0:0:0 | fn add_assign | -| main.rs:459:9:459:23 | z.add_assign(...) | file://:0:0:0:0 | fn add_assign | -| main.rs:459:9:459:23 | z.add_assign(...) | file://:0:0:0:0 | fn add_assign | -| main.rs:459:9:459:23 | z.add_assign(...) | file://:0:0:0:0 | fn add_assign | multiplePathResolutions | main.rs:85:19:85:30 | ...::from | file://:0:0:0:0 | fn from | | main.rs:85:19:85:30 | ...::from | file://:0:0:0:0 | fn from | From ef15df35c6b640e1dcf8b6e763b3a075e1254a93 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Fri, 13 Jun 2025 14:53:54 +0200 Subject: [PATCH 067/150] Rust: Apply review suggestions --- .../codeql/rust/internal/TypeInference.qll | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index 0d39620710f..49eb11743c1 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -1241,6 +1241,10 @@ private predicate implSiblingCandidate( Impl impl, TraitItemNode trait, Type rootType, TypeMention selfTy ) { trait = impl.(ImplItemNode).resolveTraitTy() and + // If `impl` has an expansion from a macro attribute, then it's been + // superseded by the output of the expansion (and usually the expansion + // contains the same `impl` block so considering both would give spurious + // siblings). not exists(impl.getAttributeMacroExpansion()) and // We use this for resolving methods, so exclude traits that do not have methods. exists(Function f | f = trait.getASuccessor(_) and f.getParamList().hasSelfParam()) and @@ -1300,12 +1304,13 @@ private predicate methodTypeAtPath(Function f, int pos, TypePath path, Type type } /** - * Holds if resolving the method in `impl` with the name `methodName` requires - * inspecting the types of applied _arguments_ in order to determine whether it - * is the correct resolution. + * Holds if resolving the method `f` in `impl` with the name `methodName` + * requires inspecting the types of applied _arguments_ in order to determine + * whether it is the correct resolution. */ +pragma[nomagic] private predicate methodResolutionDependsOnArgument( - Impl impl, string methodName, int pos, TypePath path, Type type + Impl impl, string methodName, Function f, int pos, TypePath path, Type type ) { /* * As seen in the example below, when an implementation has a sibling for a @@ -1321,8 +1326,8 @@ private predicate methodResolutionDependsOnArgument( * // ^ `path` = "T" * } * impl MyAdd for i64 { - * fn method(&self, value: i64) -> Self { ... } - * // ^^^ `type` = i64 + * fn method(&self, value: Foo) -> Self { ... } + * // ^^^ `type` = i64 * } * ``` * @@ -1335,7 +1340,8 @@ private predicate methodResolutionDependsOnArgument( exists(TraitItemNode trait | implHasSibling(impl, trait) and traitTypeParameterOccurrence(trait, methodName, pos, path) and - methodTypeAtPath(getMethodSuccessor(impl, methodName), pos, path, type) + methodTypeAtPath(getMethodSuccessor(impl, methodName), pos, path, type) and + f = getMethodSuccessor(impl, methodName) ) } @@ -1345,10 +1351,11 @@ private Function getMethodFromImpl(MethodCall mc) { IsInstantiationOf::isInstantiationOf(mc, impl, _) and result = getMethodSuccessor(impl, mc.getMethodName()) | - not methodResolutionDependsOnArgument(impl, _, _, _, _) + not methodResolutionDependsOnArgument(impl, _, _, _, _, _) and + result = getMethodSuccessor(impl, mc.getMethodName()) or exists(int pos, TypePath path, Type type | - methodResolutionDependsOnArgument(impl, mc.getMethodName(), pos, path, type) and + methodResolutionDependsOnArgument(impl, mc.getMethodName(), result, pos, path, type) and inferType(mc.getArgument(pos), path) = type ) ) From 0038d0f17c9f30fb92d0047a5cf5c3c5effe89ba Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Tue, 10 Dec 2024 14:44:58 +0100 Subject: [PATCH 068/150] C++: Deprecate `ThrowingFunction` and no longer use in IR --- .../cpp/ir/implementation/raw/internal/TranslatedCall.qll | 4 ---- cpp/ql/lib/semmle/code/cpp/models/interfaces/Throwing.qll | 4 +++- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll index 4f8932c4a28..f34ef0054c2 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll @@ -363,14 +363,10 @@ class TranslatedFunctionCall extends TranslatedCallExpr, TranslatedDirectCall { } final override predicate mayThrowException() { - expr.getTarget().(ThrowingFunction).mayThrowException(_) - or expr.getTarget() instanceof AlwaysSehThrowingFunction } final override predicate mustThrowException() { - expr.getTarget().(ThrowingFunction).mayThrowException(true) - or expr.getTarget() instanceof AlwaysSehThrowingFunction } } diff --git a/cpp/ql/lib/semmle/code/cpp/models/interfaces/Throwing.qll b/cpp/ql/lib/semmle/code/cpp/models/interfaces/Throwing.qll index cc294806709..111b9953395 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/interfaces/Throwing.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/interfaces/Throwing.qll @@ -12,8 +12,10 @@ import semmle.code.cpp.models.interfaces.FunctionInputsAndOutputs /** * A function that is known to raise an exception. + * + * DEPRECATED: use `AlwaysSehThrowingFunction` instead. */ -abstract class ThrowingFunction extends Function { +abstract deprecated class ThrowingFunction extends Function { /** * Holds if this function may throw an exception during evaluation. * If `unconditional` is `true` the function always throws an exception. From 6f41d3c4e316e9e353aeca452dcb25c6f8221f66 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Tue, 10 Dec 2024 15:01:07 +0100 Subject: [PATCH 069/150] C++: Use SEH exception edges for functions that unconditionally throw those --- .../raw/internal/TranslatedCall.qll | 26 +++++++++---------- .../raw/internal/TranslatedExpr.qll | 8 +++--- .../raw/internal/TranslatedFunction.qll | 2 +- .../library-tests/ir/ir/aliased_ir.expected | 14 +++++----- .../test/library-tests/ir/ir/raw_ir.expected | 14 +++++----- 5 files changed, 31 insertions(+), 33 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll index f34ef0054c2..15fa13242f9 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll @@ -84,11 +84,10 @@ abstract class TranslatedCall extends TranslatedExpr { this.getEnclosingFunction().getFunction() = instr.getEnclosingFunction() ) else ( - not this.mustThrowException() and + not this.mustThrowException(_) and result = this.getParent().getChildSuccessor(this, kind) or - this.mayThrowException() and - kind instanceof CppExceptionEdge and + this.mayThrowException(kind) and result = this.getParent().getExceptionSuccessorInstruction(any(GotoEdge edge)) ) } @@ -117,14 +116,14 @@ abstract class TranslatedCall extends TranslatedExpr { final override Instruction getResult() { result = this.getInstruction(CallTag()) } /** - * Holds if the evaluation of this call may throw an exception. + * Holds if the evaluation of this call may throw an exception of the kind represented by the `ExceptionEdge`. */ - abstract predicate mayThrowException(); + abstract predicate mayThrowException(ExceptionEdge e); /** - * Holds if the evaluation of this call always throws an exception. + * Holds if the evaluation of this call always throws an exception of the kind represented by the `ExceptionEdge`. */ - abstract predicate mustThrowException(); + abstract predicate mustThrowException(ExceptionEdge e); /** * Gets the result type of the call. @@ -332,14 +331,14 @@ class TranslatedExprCall extends TranslatedCallExpr { result = getTranslatedExpr(expr.getExpr().getFullyConverted()) } - final override predicate mayThrowException() { + final override predicate mayThrowException(ExceptionEdge e) { // We assume that a call to a function pointer will not throw an exception. // This is not sound in general, but this will greatly reduce the number of // exceptional edges. none() } - final override predicate mustThrowException() { none() } + final override predicate mustThrowException(ExceptionEdge e) { none() } } /** @@ -362,12 +361,11 @@ class TranslatedFunctionCall extends TranslatedCallExpr, TranslatedDirectCall { not exists(MemberFunction func | expr.getTarget() = func and func.isStatic()) } - final override predicate mayThrowException() { - expr.getTarget() instanceof AlwaysSehThrowingFunction - } + final override predicate mayThrowException(ExceptionEdge e) { this.mustThrowException(e) } - final override predicate mustThrowException() { - expr.getTarget() instanceof AlwaysSehThrowingFunction + final override predicate mustThrowException(ExceptionEdge e) { + expr.getTarget() instanceof AlwaysSehThrowingFunction and + e instanceof SehExceptionEdge } } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll index f21f4495676..ef2096e9b39 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll @@ -2483,14 +2483,14 @@ class TranslatedAllocatorCall extends TTranslatedAllocatorCall, TranslatedDirect result = getTranslatedExpr(expr.getAllocatorCall().getArgument(index).getFullyConverted()) } - final override predicate mayThrowException() { + final override predicate mayThrowException(ExceptionEdge e) { // We assume that a call to `new` or `new[]` will never throw. This is not // sound in general, but this will greatly reduce the number of exceptional // edges. none() } - final override predicate mustThrowException() { none() } + final override predicate mustThrowException(ExceptionEdge e) { none() } } TranslatedAllocatorCall getTranslatedAllocatorCall(NewOrNewArrayExpr newExpr) { @@ -2556,14 +2556,14 @@ class TranslatedDeleteOrDeleteArrayExpr extends TranslatedNonConstantExpr, Trans result = getTranslatedExpr(expr.getExprWithReuse().getFullyConverted()) } - final override predicate mayThrowException() { + final override predicate mayThrowException(ExceptionEdge e) { // We assume that a call to `delete` or `delete[]` will never throw. This is not // sound in general, but this will greatly reduce the number of exceptional // edges. none() } - final override predicate mustThrowException() { none() } + final override predicate mustThrowException(ExceptionEdge e) { none() } } TranslatedDeleteOrDeleteArrayExpr getTranslatedDeleteOrDeleteArray(DeleteOrDeleteArrayExpr newExpr) { diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedFunction.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedFunction.qll index 57f718bcb6a..83736ae98d0 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedFunction.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedFunction.qll @@ -214,7 +214,7 @@ class TranslatedFunction extends TranslatedRootElement, TTranslatedFunction { exists(ThrowExpr throw | throw.getEnclosingFunction() = func) or exists(FunctionCall call | call.getEnclosingFunction() = func | - getTranslatedExpr(call).(TranslatedCallExpr).mayThrowException() + getTranslatedExpr(call).(TranslatedCallExpr).mayThrowException(_) ) ) or diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected index fbd0db5e796..a83adf6e74c 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected @@ -3244,7 +3244,7 @@ ir.c: # 25| v25_4(void) = Call[ExRaiseAccessViolation] : func:r25_1, 0:r25_3 # 25| m25_5(unknown) = ^CallSideEffect : ~m21_4 # 25| m25_6(unknown) = Chi : total:m21_4, partial:m25_5 -#-----| C++ Exception -> Block 3 +#-----| SEH Exception -> Block 3 # 26| Block 1 # 26| r26_1(int) = Constant[0] : @@ -3291,7 +3291,7 @@ ir.c: # 36| v36_3(void) = Call[ExRaiseAccessViolation] : func:r36_1, 0:r36_2 # 36| m36_4(unknown) = ^CallSideEffect : ~m32_4 # 36| m36_5(unknown) = Chi : total:m32_4, partial:m36_4 -#-----| C++ Exception -> Block 4 +#-----| SEH Exception -> Block 4 # 32| Block 1 # 32| v32_5(void) = Unwind : @@ -3326,7 +3326,7 @@ ir.c: # 40| v40_3(void) = Call[ExRaiseAccessViolation] : func:r40_1, 0:r40_2 # 40| m40_4(unknown) = ^CallSideEffect : ~m36_5 # 40| m40_5(unknown) = Chi : total:m36_5, partial:m40_4 -#-----| C++ Exception -> Block 1 +#-----| SEH Exception -> Block 1 # 32| Block 6 # 32| v32_8(void) = Unreached : @@ -3365,7 +3365,7 @@ ir.c: # 62| v62_3(void) = Call[ExRaiseAccessViolation] : func:r62_1, 0:r62_2 # 62| m62_4(unknown) = ^CallSideEffect : ~m57_4 # 62| m62_5(unknown) = Chi : total:m57_4, partial:m62_4 -#-----| C++ Exception -> Block 1 +#-----| SEH Exception -> Block 1 # 66| Block 1 # 66| r66_1(int) = Constant[1] : @@ -3387,7 +3387,7 @@ ir.c: # 73| v73_3(void) = Call[ExRaiseAccessViolation] : func:r73_1, 0:r73_2 # 73| m73_4(unknown) = ^CallSideEffect : ~m70_4 # 73| m73_5(unknown) = Chi : total:m70_4, partial:m73_4 -#-----| C++ Exception -> Block 2 +#-----| SEH Exception -> Block 2 # 70| Block 1 # 70| v70_5(void) = Unwind : @@ -3400,7 +3400,7 @@ ir.c: # 76| v76_3(void) = Call[ExRaiseAccessViolation] : func:r76_1, 0:r76_2 # 76| m76_4(unknown) = ^CallSideEffect : ~m73_5 # 76| m76_5(unknown) = Chi : total:m73_5, partial:m76_4 -#-----| C++ Exception -> Block 1 +#-----| SEH Exception -> Block 1 # 80| void raise_access_violation() # 80| Block 0 @@ -3413,7 +3413,7 @@ ir.c: # 81| v81_3(void) = Call[ExRaiseAccessViolation] : func:r81_1, 0:r81_2 # 81| m81_4(unknown) = ^CallSideEffect : ~m80_4 # 81| m81_5(unknown) = Chi : total:m80_4, partial:m81_4 -#-----| C++ Exception -> Block 1 +#-----| SEH Exception -> Block 1 # 80| Block 1 # 80| v80_5(void) = Unwind : diff --git a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected index 978d05d4b16..ecd1c2deaed 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -3000,7 +3000,7 @@ ir.c: # 25| r25_3(int) = Load[x] : &:r25_2, ~m? # 25| v25_4(void) = Call[ExRaiseAccessViolation] : func:r25_1, 0:r25_3 # 25| mu25_5(unknown) = ^CallSideEffect : ~m? -#-----| C++ Exception -> Block 6 +#-----| SEH Exception -> Block 6 # 21| Block 1 # 21| v21_6(void) = AliasedUse : ~m? @@ -3057,7 +3057,7 @@ ir.c: # 36| r36_2(int) = Constant[0] : # 36| v36_3(void) = Call[ExRaiseAccessViolation] : func:r36_1, 0:r36_2 # 36| mu36_4(unknown) = ^CallSideEffect : ~m? -#-----| C++ Exception -> Block 5 +#-----| SEH Exception -> Block 5 # 32| Block 1 # 32| v32_4(void) = AliasedUse : ~m? @@ -3093,7 +3093,7 @@ ir.c: # 40| r40_2(int) = Constant[1] : # 40| v40_3(void) = Call[ExRaiseAccessViolation] : func:r40_1, 0:r40_2 # 40| mu40_4(unknown) = ^CallSideEffect : ~m? -#-----| C++ Exception -> Block 2 +#-----| SEH Exception -> Block 2 # 42| Block 7 # 42| v42_1(void) = NoOp : @@ -3138,7 +3138,7 @@ ir.c: # 62| r62_2(int) = Constant[0] : # 62| v62_3(void) = Call[ExRaiseAccessViolation] : func:r62_1, 0:r62_2 # 62| mu62_4(unknown) = ^CallSideEffect : ~m? -#-----| C++ Exception -> Block 3 +#-----| SEH Exception -> Block 3 # 57| Block 1 # 57| v57_4(void) = AliasedUse : ~m? @@ -3165,7 +3165,7 @@ ir.c: # 73| r73_2(int) = Constant[0] : # 73| v73_3(void) = Call[ExRaiseAccessViolation] : func:r73_1, 0:r73_2 # 73| mu73_4(unknown) = ^CallSideEffect : ~m? -#-----| C++ Exception -> Block 3 +#-----| SEH Exception -> Block 3 # 70| Block 1 # 70| v70_4(void) = AliasedUse : ~m? @@ -3180,7 +3180,7 @@ ir.c: # 76| r76_2(int) = Constant[0] : # 76| v76_3(void) = Call[ExRaiseAccessViolation] : func:r76_1, 0:r76_2 # 76| mu76_4(unknown) = ^CallSideEffect : ~m? -#-----| C++ Exception -> Block 2 +#-----| SEH Exception -> Block 2 # 78| Block 4 # 78| v78_1(void) = NoOp : @@ -3196,7 +3196,7 @@ ir.c: # 81| r81_2(int) = Constant[1] : # 81| v81_3(void) = Call[ExRaiseAccessViolation] : func:r81_1, 0:r81_2 # 81| mu81_4(unknown) = ^CallSideEffect : ~m? -#-----| C++ Exception -> Block 2 +#-----| SEH Exception -> Block 2 # 80| Block 1 # 80| v80_4(void) = AliasedUse : ~m? From 400424f13c7bb2e7e1a4f7c058089a237c07beeb Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Fri, 13 Dec 2024 10:44:40 +0100 Subject: [PATCH 070/150] C++: Add change note --- cpp/ql/lib/change-notes/2014-12-13-deprecate-throwing.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 cpp/ql/lib/change-notes/2014-12-13-deprecate-throwing.md diff --git a/cpp/ql/lib/change-notes/2014-12-13-deprecate-throwing.md b/cpp/ql/lib/change-notes/2014-12-13-deprecate-throwing.md new file mode 100644 index 00000000000..9a46cc7da8f --- /dev/null +++ b/cpp/ql/lib/change-notes/2014-12-13-deprecate-throwing.md @@ -0,0 +1,4 @@ +--- +category: deprecated +--- +* The `ThrowingFunction` class (`semmle.code.cpp.models.interfaces.Throwing`) has been deprecated. Please use the `AlwaysSehThrowingFunction` class instead. From c7a744776814e767541c8692492854ed5e0129cf Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Tue, 10 Dec 2024 16:36:49 +0100 Subject: [PATCH 071/150] C++: Generate an SEH exception edge for each call inside a SEH block --- .../raw/internal/TranslatedCall.qll | 7 +- .../library-tests/ir/ir/aliased_ir.expected | 409 +++++++++++++----- .../ir/ir/raw_consistency.expected | 8 - .../test/library-tests/ir/ir/raw_ir.expected | 211 +++++---- 4 files changed, 433 insertions(+), 202 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll index 15fa13242f9..a1d76bb6491 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll @@ -361,7 +361,12 @@ class TranslatedFunctionCall extends TranslatedCallExpr, TranslatedDirectCall { not exists(MemberFunction func | expr.getTarget() = func and func.isStatic()) } - final override predicate mayThrowException(ExceptionEdge e) { this.mustThrowException(e) } + final override predicate mayThrowException(ExceptionEdge e) { + this.mustThrowException(e) + or + expr.getEnclosingStmt().getParentStmt*() instanceof MicrosoftTryStmt and + e instanceof SehExceptionEdge + } final override predicate mustThrowException(ExceptionEdge e) { expr.getTarget() instanceof AlwaysSehThrowingFunction and diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected index a83adf6e74c..b52912f783e 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected @@ -39018,20 +39018,33 @@ struct_init.cpp: try_except.c: # 6| void f() # 6| Block 0 -# 6| v6_1(void) = EnterFunction : -# 6| m6_2(unknown) = AliasedDefinition : -# 6| m6_3(unknown) = InitializeNonLocal : -# 6| m6_4(unknown) = Chi : total:m6_2, partial:m6_3 -# 7| r7_1(glval) = VariableAddress[x] : -# 7| m7_2(int) = Uninitialized[x] : &:r7_1 -# 7| r7_3(glval) = VariableAddress[y] : -# 7| r7_4(int) = Constant[0] : -# 7| m7_5(int) = Store[y] : &:r7_3, r7_4 -# 9| r9_1(glval) = FunctionAddress[ProbeFunction] : -# 9| r9_2(int) = Constant[0] : -# 9| v9_3(void) = Call[ProbeFunction] : func:r9_1, 0:r9_2 -# 9| m9_4(unknown) = ^CallSideEffect : ~m6_4 -# 9| m9_5(unknown) = Chi : total:m6_4, partial:m9_4 +# 6| v6_1(void) = EnterFunction : +# 6| m6_2(unknown) = AliasedDefinition : +# 6| m6_3(unknown) = InitializeNonLocal : +# 6| m6_4(unknown) = Chi : total:m6_2, partial:m6_3 +# 7| r7_1(glval) = VariableAddress[x] : +# 7| m7_2(int) = Uninitialized[x] : &:r7_1 +# 7| r7_3(glval) = VariableAddress[y] : +# 7| r7_4(int) = Constant[0] : +# 7| m7_5(int) = Store[y] : &:r7_3, r7_4 +# 9| r9_1(glval) = FunctionAddress[ProbeFunction] : +# 9| r9_2(int) = Constant[0] : +# 9| v9_3(void) = Call[ProbeFunction] : func:r9_1, 0:r9_2 +# 9| m9_4(unknown) = ^CallSideEffect : ~m6_4 +# 9| m9_5(unknown) = Chi : total:m6_4, partial:m9_4 +#-----| Goto -> Block 3 +#-----| SEH Exception -> Block 5 + +# 6| Block 1 +# 6| m6_5(unknown) = Phi : from 2:~m13_4, from 6:~m11_5 +# 6| v6_6(void) = AliasedUse : ~m6_5 +# 6| v6_7(void) = ExitFunction : + +# 6| Block 2 +# 6| v6_8(void) = Unwind : +#-----| Goto -> Block 1 + +# 10| Block 3 # 10| r10_1(glval) = VariableAddress[y] : # 10| r10_2(int) = Load[y] : &:r10_1, m7_5 # 10| r10_3(glval) = VariableAddress[x] : @@ -39041,13 +39054,32 @@ try_except.c: # 11| v11_3(void) = Call[ProbeFunction] : func:r11_1, 0:r11_2 # 11| m11_4(unknown) = ^CallSideEffect : ~m9_5 # 11| m11_5(unknown) = Chi : total:m9_5, partial:m11_4 -# 16| v16_1(void) = NoOp : -# 6| v6_5(void) = ReturnVoid : -# 6| v6_6(void) = AliasedUse : ~m11_5 -# 6| v6_7(void) = ExitFunction : +#-----| Goto -> Block 6 +#-----| SEH Exception -> Block 5 -# 6| Block 1 -# 6| v6_8(void) = Unreached : +# 13| Block 4 +# 13| r13_1(int) = Constant[0] : +# 13| r13_2(bool) = CompareEQ : r13_5, r13_1 +# 13| v13_3(void) = ConditionalBranch : r13_2 +#-----| False -> Block 7 +#-----| True -> Block 2 + +# 13| Block 5 +# 13| m13_4(unknown) = Phi : from 0:~m9_5, from 3:~m11_5 +# 13| r13_5(int) = Constant[0] : +# 13| r13_6(int) = Constant[-1] : +# 13| r13_7(bool) = CompareEQ : r13_5, r13_6 +# 13| v13_8(void) = ConditionalBranch : r13_7 +#-----| False -> Block 4 +#-----| True -> Block 7 + +# 16| Block 6 +# 16| v16_1(void) = NoOp : +# 6| v6_9(void) = ReturnVoid : +#-----| Goto -> Block 1 + +# 6| Block 7 +# 6| v6_10(void) = Unreached : # 18| void g() # 18| Block 0 @@ -39065,6 +39097,18 @@ try_except.c: # 21| v21_3(void) = Call[ProbeFunction] : func:r21_1, 0:r21_2 # 21| m21_4(unknown) = ^CallSideEffect : ~m18_4 # 21| m21_5(unknown) = Chi : total:m18_4, partial:m21_4 +#-----| Goto -> Block 3 +#-----| SEH Exception -> Block 4 + +# 18| Block 1 +# 18| v18_5(void) = AliasedUse : ~m26_8 +# 18| v18_6(void) = ExitFunction : + +# 18| Block 2 +# 18| v18_7(void) = Unwind : +#-----| Goto -> Block 1 + +# 22| Block 3 # 22| r22_1(glval) = VariableAddress[y] : # 22| r22_2(int) = Load[y] : &:r22_1, m19_5 # 22| r22_3(glval) = VariableAddress[x] : @@ -39074,16 +39118,24 @@ try_except.c: # 23| v23_3(void) = Call[ProbeFunction] : func:r23_1, 0:r23_2 # 23| m23_4(unknown) = ^CallSideEffect : ~m21_5 # 23| m23_5(unknown) = Chi : total:m21_5, partial:m23_4 -# 26| r26_1(glval) = FunctionAddress[sink] : -# 26| r26_2(glval) = VariableAddress[x] : -# 26| r26_3(int) = Load[x] : &:r26_2, m22_4 -# 26| v26_4(void) = Call[sink] : func:r26_1, 0:r26_3 -# 26| m26_5(unknown) = ^CallSideEffect : ~m23_5 -# 26| m26_6(unknown) = Chi : total:m23_5, partial:m26_5 -# 28| v28_1(void) = NoOp : -# 18| v18_5(void) = ReturnVoid : -# 18| v18_6(void) = AliasedUse : ~m26_6 -# 18| v18_7(void) = ExitFunction : +#-----| Goto|SEH Exception -> Block 4 + +# 26| Block 4 +# 26| m26_1(unknown) = Phi : from 0:~m21_5, from 3:~m23_5 +# 26| m26_2(int) = Phi : from 0:m19_2, from 3:m22_4 +# 26| r26_3(glval) = FunctionAddress[sink] : +# 26| r26_4(glval) = VariableAddress[x] : +# 26| r26_5(int) = Load[x] : &:r26_4, m26_2 +# 26| v26_6(void) = Call[sink] : func:r26_3, 0:r26_5 +# 26| m26_7(unknown) = ^CallSideEffect : ~m26_1 +# 26| m26_8(unknown) = Chi : total:m26_1, partial:m26_7 +#-----| Goto -> Block 5 +#-----| SEH Exception -> Block 2 + +# 28| Block 5 +# 28| v28_1(void) = NoOp : +# 18| v18_8(void) = ReturnVoid : +#-----| Goto -> Block 1 # 32| void h(int) # 32| Block 0 @@ -39101,43 +39153,97 @@ try_except.c: # 35| r35_3(int) = Constant[0] : # 35| r35_4(bool) = CompareNE : r35_2, r35_3 # 35| v35_5(void) = ConditionalBranch : r35_4 -#-----| False -> Block 2 -#-----| True -> Block 1 +#-----| False -> Block 8 +#-----| True -> Block 3 -# 36| Block 1 +# 32| Block 1 +# 32| m32_7(unknown) = Phi : from 2:~m40_6, from 8:~m42_1 +# 32| v32_8(void) = AliasedUse : ~m32_7 +# 32| v32_9(void) = ExitFunction : + +# 32| Block 2 +# 32| v32_10(void) = Unwind : +#-----| Goto -> Block 1 + +# 36| Block 3 # 36| r36_1(glval) = FunctionAddress[AfxThrowMemoryException] : # 36| v36_2(void) = Call[AfxThrowMemoryException] : func:r36_1 # 36| m36_3(unknown) = ^CallSideEffect : ~m32_4 # 36| m36_4(unknown) = Chi : total:m32_4, partial:m36_3 -#-----| Goto -> Block 2 +#-----| Goto -> Block 8 +#-----| SEH Exception -> Block 6 -# 42| Block 2 -# 42| m42_1(unknown) = Phi : from 0:~m32_4, from 1:~m36_4 -# 42| v42_2(void) = NoOp : -# 32| v32_7(void) = ReturnVoid : -# 32| v32_8(void) = AliasedUse : ~m42_1 -# 32| v32_9(void) = ExitFunction : +# 39| Block 4 +# 39| r39_1(int) = Constant[0] : +# 39| r39_2(bool) = CompareEQ : r39_7, r39_1 +# 39| v39_3(void) = ConditionalBranch : r39_2 +#-----| False -> Block 5 +#-----| True -> Block 9 -# 32| Block 3 -# 32| v32_10(void) = Unreached : +# 39| Block 5 +# 39| r39_4(int) = Constant[1] : +# 39| r39_5(bool) = CompareEQ : r39_7, r39_4 +# 39| v39_6(void) = ConditionalBranch : r39_5 +#-----| False -> Block 9 +#-----| True -> Block 7 + +# 39| Block 6 +# 39| r39_7(int) = Constant[1] : +# 39| r39_8(int) = Constant[-1] : +# 39| r39_9(bool) = CompareEQ : r39_7, r39_8 +# 39| v39_10(void) = ConditionalBranch : r39_9 +#-----| False -> Block 4 +#-----| True -> Block 9 + +# 40| Block 7 +# 40| r40_1(glval) = FunctionAddress[sink] : +# 40| r40_2(glval) = VariableAddress[x] : +# 40| r40_3(int) = Load[x] : &:r40_2, m33_3 +# 40| v40_4(void) = Call[sink] : func:r40_1, 0:r40_3 +# 40| m40_5(unknown) = ^CallSideEffect : ~m36_4 +# 40| m40_6(unknown) = Chi : total:m36_4, partial:m40_5 +#-----| Goto -> Block 8 +#-----| SEH Exception -> Block 2 + +# 42| Block 8 +# 42| m42_1(unknown) = Phi : from 0:~m32_4, from 3:~m36_4, from 7:~m40_6 +# 42| v42_2(void) = NoOp : +# 32| v32_11(void) = ReturnVoid : +#-----| Goto -> Block 1 + +# 32| Block 9 +# 32| v32_12(void) = Unreached : try_except.cpp: # 6| void f_cpp() # 6| Block 0 -# 6| v6_1(void) = EnterFunction : -# 6| m6_2(unknown) = AliasedDefinition : -# 6| m6_3(unknown) = InitializeNonLocal : -# 6| m6_4(unknown) = Chi : total:m6_2, partial:m6_3 -# 7| r7_1(glval) = VariableAddress[x] : -# 7| m7_2(int) = Uninitialized[x] : &:r7_1 -# 7| r7_3(glval) = VariableAddress[y] : -# 7| r7_4(int) = Constant[0] : -# 7| m7_5(int) = Store[y] : &:r7_3, r7_4 -# 9| r9_1(glval) = FunctionAddress[ProbeFunction] : -# 9| r9_2(int) = Constant[0] : -# 9| v9_3(void) = Call[ProbeFunction] : func:r9_1, 0:r9_2 -# 9| m9_4(unknown) = ^CallSideEffect : ~m6_4 -# 9| m9_5(unknown) = Chi : total:m6_4, partial:m9_4 +# 6| v6_1(void) = EnterFunction : +# 6| m6_2(unknown) = AliasedDefinition : +# 6| m6_3(unknown) = InitializeNonLocal : +# 6| m6_4(unknown) = Chi : total:m6_2, partial:m6_3 +# 7| r7_1(glval) = VariableAddress[x] : +# 7| m7_2(int) = Uninitialized[x] : &:r7_1 +# 7| r7_3(glval) = VariableAddress[y] : +# 7| r7_4(int) = Constant[0] : +# 7| m7_5(int) = Store[y] : &:r7_3, r7_4 +# 9| r9_1(glval) = FunctionAddress[ProbeFunction] : +# 9| r9_2(int) = Constant[0] : +# 9| v9_3(void) = Call[ProbeFunction] : func:r9_1, 0:r9_2 +# 9| m9_4(unknown) = ^CallSideEffect : ~m6_4 +# 9| m9_5(unknown) = Chi : total:m6_4, partial:m9_4 +#-----| Goto -> Block 3 +#-----| SEH Exception -> Block 5 + +# 6| Block 1 +# 6| m6_5(unknown) = Phi : from 2:~m13_4, from 6:~m11_5 +# 6| v6_6(void) = AliasedUse : ~m6_5 +# 6| v6_7(void) = ExitFunction : + +# 6| Block 2 +# 6| v6_8(void) = Unwind : +#-----| Goto -> Block 1 + +# 10| Block 3 # 10| r10_1(glval) = VariableAddress[y] : # 10| r10_2(int) = Load[y] : &:r10_1, m7_5 # 10| r10_3(glval) = VariableAddress[x] : @@ -39147,13 +39253,32 @@ try_except.cpp: # 11| v11_3(void) = Call[ProbeFunction] : func:r11_1, 0:r11_2 # 11| m11_4(unknown) = ^CallSideEffect : ~m9_5 # 11| m11_5(unknown) = Chi : total:m9_5, partial:m11_4 -# 16| v16_1(void) = NoOp : -# 6| v6_5(void) = ReturnVoid : -# 6| v6_6(void) = AliasedUse : ~m11_5 -# 6| v6_7(void) = ExitFunction : +#-----| Goto -> Block 6 +#-----| SEH Exception -> Block 5 -# 6| Block 1 -# 6| v6_8(void) = Unreached : +# 13| Block 4 +# 13| r13_1(int) = Constant[0] : +# 13| r13_2(bool) = CompareEQ : r13_5, r13_1 +# 13| v13_3(void) = ConditionalBranch : r13_2 +#-----| False -> Block 7 +#-----| True -> Block 2 + +# 13| Block 5 +# 13| m13_4(unknown) = Phi : from 0:~m9_5, from 3:~m11_5 +# 13| r13_5(int) = Constant[0] : +# 13| r13_6(int) = Constant[-1] : +# 13| r13_7(bool) = CompareEQ : r13_5, r13_6 +# 13| v13_8(void) = ConditionalBranch : r13_7 +#-----| False -> Block 4 +#-----| True -> Block 7 + +# 16| Block 6 +# 16| v16_1(void) = NoOp : +# 6| v6_9(void) = ReturnVoid : +#-----| Goto -> Block 1 + +# 6| Block 7 +# 6| v6_10(void) = Unreached : # 18| void g_cpp() # 18| Block 0 @@ -39171,6 +39296,18 @@ try_except.cpp: # 21| v21_3(void) = Call[ProbeFunction] : func:r21_1, 0:r21_2 # 21| m21_4(unknown) = ^CallSideEffect : ~m18_4 # 21| m21_5(unknown) = Chi : total:m18_4, partial:m21_4 +#-----| Goto -> Block 3 +#-----| SEH Exception -> Block 4 + +# 18| Block 1 +# 18| v18_5(void) = AliasedUse : ~m26_8 +# 18| v18_6(void) = ExitFunction : + +# 18| Block 2 +# 18| v18_7(void) = Unwind : +#-----| Goto -> Block 1 + +# 22| Block 3 # 22| r22_1(glval) = VariableAddress[y] : # 22| r22_2(int) = Load[y] : &:r22_1, m19_5 # 22| r22_3(glval) = VariableAddress[x] : @@ -39180,16 +39317,24 @@ try_except.cpp: # 23| v23_3(void) = Call[ProbeFunction] : func:r23_1, 0:r23_2 # 23| m23_4(unknown) = ^CallSideEffect : ~m21_5 # 23| m23_5(unknown) = Chi : total:m21_5, partial:m23_4 -# 26| r26_1(glval) = FunctionAddress[sink] : -# 26| r26_2(glval) = VariableAddress[x] : -# 26| r26_3(int) = Load[x] : &:r26_2, m22_4 -# 26| v26_4(void) = Call[sink] : func:r26_1, 0:r26_3 -# 26| m26_5(unknown) = ^CallSideEffect : ~m23_5 -# 26| m26_6(unknown) = Chi : total:m23_5, partial:m26_5 -# 28| v28_1(void) = NoOp : -# 18| v18_5(void) = ReturnVoid : -# 18| v18_6(void) = AliasedUse : ~m26_6 -# 18| v18_7(void) = ExitFunction : +#-----| Goto|SEH Exception -> Block 4 + +# 26| Block 4 +# 26| m26_1(unknown) = Phi : from 0:~m21_5, from 3:~m23_5 +# 26| m26_2(int) = Phi : from 0:m19_2, from 3:m22_4 +# 26| r26_3(glval) = FunctionAddress[sink] : +# 26| r26_4(glval) = VariableAddress[x] : +# 26| r26_5(int) = Load[x] : &:r26_4, m26_2 +# 26| v26_6(void) = Call[sink] : func:r26_3, 0:r26_5 +# 26| m26_7(unknown) = ^CallSideEffect : ~m26_1 +# 26| m26_8(unknown) = Chi : total:m26_1, partial:m26_7 +#-----| Goto -> Block 5 +#-----| SEH Exception -> Block 2 + +# 28| Block 5 +# 28| v28_1(void) = NoOp : +# 18| v18_8(void) = ReturnVoid : +#-----| Goto -> Block 1 # 32| void h_cpp(int) # 32| Block 0 @@ -39207,25 +39352,66 @@ try_except.cpp: # 35| r35_3(int) = Constant[0] : # 35| r35_4(bool) = CompareNE : r35_2, r35_3 # 35| v35_5(void) = ConditionalBranch : r35_4 -#-----| False -> Block 2 -#-----| True -> Block 1 +#-----| False -> Block 8 +#-----| True -> Block 3 -# 36| Block 1 +# 32| Block 1 +# 32| m32_7(unknown) = Phi : from 2:~m40_6, from 8:~m42_1 +# 32| v32_8(void) = AliasedUse : ~m32_7 +# 32| v32_9(void) = ExitFunction : + +# 32| Block 2 +# 32| v32_10(void) = Unwind : +#-----| Goto -> Block 1 + +# 36| Block 3 # 36| r36_1(glval) = FunctionAddress[AfxThrowMemoryException] : # 36| v36_2(void) = Call[AfxThrowMemoryException] : func:r36_1 # 36| m36_3(unknown) = ^CallSideEffect : ~m32_4 # 36| m36_4(unknown) = Chi : total:m32_4, partial:m36_3 -#-----| Goto -> Block 2 +#-----| Goto -> Block 8 +#-----| SEH Exception -> Block 6 -# 42| Block 2 -# 42| m42_1(unknown) = Phi : from 0:~m32_4, from 1:~m36_4 -# 42| v42_2(void) = NoOp : -# 32| v32_7(void) = ReturnVoid : -# 32| v32_8(void) = AliasedUse : ~m42_1 -# 32| v32_9(void) = ExitFunction : +# 39| Block 4 +# 39| r39_1(int) = Constant[0] : +# 39| r39_2(bool) = CompareEQ : r39_7, r39_1 +# 39| v39_3(void) = ConditionalBranch : r39_2 +#-----| False -> Block 5 +#-----| True -> Block 9 -# 32| Block 3 -# 32| v32_10(void) = Unreached : +# 39| Block 5 +# 39| r39_4(int) = Constant[1] : +# 39| r39_5(bool) = CompareEQ : r39_7, r39_4 +# 39| v39_6(void) = ConditionalBranch : r39_5 +#-----| False -> Block 9 +#-----| True -> Block 7 + +# 39| Block 6 +# 39| r39_7(int) = Constant[1] : +# 39| r39_8(int) = Constant[-1] : +# 39| r39_9(bool) = CompareEQ : r39_7, r39_8 +# 39| v39_10(void) = ConditionalBranch : r39_9 +#-----| False -> Block 4 +#-----| True -> Block 9 + +# 40| Block 7 +# 40| r40_1(glval) = FunctionAddress[sink] : +# 40| r40_2(glval) = VariableAddress[x] : +# 40| r40_3(int) = Load[x] : &:r40_2, m33_3 +# 40| v40_4(void) = Call[sink] : func:r40_1, 0:r40_3 +# 40| m40_5(unknown) = ^CallSideEffect : ~m36_4 +# 40| m40_6(unknown) = Chi : total:m36_4, partial:m40_5 +#-----| Goto -> Block 8 +#-----| SEH Exception -> Block 2 + +# 42| Block 8 +# 42| m42_1(unknown) = Phi : from 0:~m32_4, from 3:~m36_4, from 7:~m40_6 +# 42| v42_2(void) = NoOp : +# 32| v32_11(void) = ReturnVoid : +#-----| Goto -> Block 1 + +# 32| Block 9 +# 32| v32_12(void) = Unreached : # 44| void throw_cpp(int) # 44| Block 0 @@ -39243,53 +39429,62 @@ try_except.cpp: # 47| r47_3(int) = Constant[0] : # 47| r47_4(bool) = CompareNE : r47_2, r47_3 # 47| v47_5(void) = ConditionalBranch : r47_4 -#-----| False -> Block 6 -#-----| True -> Block 1 +#-----| False -> Block 8 +#-----| True -> Block 3 -# 48| Block 1 +# 44| Block 1 +# 44| m44_7(unknown) = Phi : from 2:~m52_6, from 8:~m54_1 +# 44| v44_8(void) = AliasedUse : ~m44_7 +# 44| v44_9(void) = ExitFunction : + +# 44| Block 2 +# 44| v44_10(void) = Unwind : +#-----| Goto -> Block 1 + +# 48| Block 3 # 48| r48_1(glval) = VariableAddress[#throw48:13] : # 48| r48_2(int) = Constant[1] : # 48| m48_3(int) = Store[#throw48:13] : &:r48_1, r48_2 # 48| v48_4(void) = ThrowValue : &:r48_1, m48_3 -#-----| C++ Exception -> Block 4 +#-----| C++ Exception -> Block 6 -# 51| Block 2 +# 51| Block 4 # 51| r51_1(int) = Constant[0] : # 51| r51_2(bool) = CompareEQ : r51_7, r51_1 # 51| v51_3(void) = ConditionalBranch : r51_2 -#-----| False -> Block 3 -#-----| True -> Block 7 +#-----| False -> Block 5 +#-----| True -> Block 9 -# 51| Block 3 +# 51| Block 5 # 51| r51_4(int) = Constant[1] : # 51| r51_5(bool) = CompareEQ : r51_7, r51_4 # 51| v51_6(void) = ConditionalBranch : r51_5 -#-----| False -> Block 7 -#-----| True -> Block 5 +#-----| False -> Block 9 +#-----| True -> Block 7 -# 51| Block 4 +# 51| Block 6 # 51| r51_7(int) = Constant[1] : # 51| r51_8(int) = Constant[-1] : # 51| r51_9(bool) = CompareEQ : r51_7, r51_8 # 51| v51_10(void) = ConditionalBranch : r51_9 -#-----| False -> Block 2 -#-----| True -> Block 7 +#-----| False -> Block 4 +#-----| True -> Block 9 -# 52| Block 5 +# 52| Block 7 # 52| r52_1(glval) = FunctionAddress[sink] : # 52| r52_2(glval) = VariableAddress[x] : # 52| r52_3(int) = Load[x] : &:r52_2, m45_3 # 52| v52_4(void) = Call[sink] : func:r52_1, 0:r52_3 # 52| m52_5(unknown) = ^CallSideEffect : ~m44_4 # 52| m52_6(unknown) = Chi : total:m44_4, partial:m52_5 -#-----| Goto -> Block 6 +#-----| Goto -> Block 8 +#-----| SEH Exception -> Block 2 -# 54| Block 6 -# 54| m54_1(unknown) = Phi : from 0:~m44_4, from 5:~m52_6 -# 54| v54_2(void) = NoOp : -# 44| v44_7(void) = ReturnVoid : -# 44| v44_8(void) = AliasedUse : ~m54_1 -# 44| v44_9(void) = ExitFunction : +# 54| Block 8 +# 54| m54_1(unknown) = Phi : from 0:~m44_4, from 7:~m52_6 +# 54| v54_2(void) = NoOp : +# 44| v44_11(void) = ReturnVoid : +#-----| Goto -> Block 1 -# 44| Block 7 -# 44| v44_10(void) = Unreached : +# 44| Block 9 +# 44| v44_12(void) = Unreached : diff --git a/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected b/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected index ee6f9f2073a..e30106d3520 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected @@ -21,14 +21,6 @@ lostReachability backEdgeCountMismatch useNotDominatedByDefinition | ir.cpp:1535:8:1535:8 | Unary | Operand 'Unary' is not dominated by its definition in function '$@'. | ir.cpp:1535:8:1535:8 | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() | -| try_except.c:13:13:13:13 | Left | Operand 'Left' is not dominated by its definition in function '$@'. | try_except.c:6:6:6:6 | void f() | void f() | -| try_except.c:13:13:13:13 | Left | Operand 'Left' is not dominated by its definition in function '$@'. | try_except.c:6:6:6:6 | void f() | void f() | -| try_except.c:39:15:39:15 | Left | Operand 'Left' is not dominated by its definition in function '$@'. | try_except.c:32:6:32:6 | void h(int) | void h(int) | -| try_except.c:39:15:39:15 | Left | Operand 'Left' is not dominated by its definition in function '$@'. | try_except.c:32:6:32:6 | void h(int) | void h(int) | -| try_except.cpp:13:13:13:13 | Left | Operand 'Left' is not dominated by its definition in function '$@'. | try_except.cpp:6:6:6:10 | void f_cpp() | void f_cpp() | -| try_except.cpp:13:13:13:13 | Left | Operand 'Left' is not dominated by its definition in function '$@'. | try_except.cpp:6:6:6:10 | void f_cpp() | void f_cpp() | -| try_except.cpp:39:15:39:15 | Left | Operand 'Left' is not dominated by its definition in function '$@'. | try_except.cpp:32:6:32:10 | void h_cpp(int) | void h_cpp(int) | -| try_except.cpp:39:15:39:15 | Left | Operand 'Left' is not dominated by its definition in function '$@'. | try_except.cpp:32:6:32:10 | void h_cpp(int) | void h_cpp(int) | switchInstructionWithoutDefaultEdge notMarkedAsConflated wronglyMarkedAsConflated diff --git a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected index ecd1c2deaed..ce9de06c34b 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -37288,27 +37288,20 @@ struct_init.cpp: try_except.c: # 6| void f() # 6| Block 0 -# 6| v6_1(void) = EnterFunction : -# 6| mu6_2(unknown) = AliasedDefinition : -# 6| mu6_3(unknown) = InitializeNonLocal : -# 7| r7_1(glval) = VariableAddress[x] : -# 7| mu7_2(int) = Uninitialized[x] : &:r7_1 -# 7| r7_3(glval) = VariableAddress[y] : -# 7| r7_4(int) = Constant[0] : -# 7| mu7_5(int) = Store[y] : &:r7_3, r7_4 -# 9| r9_1(glval) = FunctionAddress[ProbeFunction] : -# 9| r9_2(int) = Constant[0] : -# 9| v9_3(void) = Call[ProbeFunction] : func:r9_1, 0:r9_2 -# 9| mu9_4(unknown) = ^CallSideEffect : ~m? -# 10| r10_1(glval) = VariableAddress[y] : -# 10| r10_2(int) = Load[y] : &:r10_1, ~m? -# 10| r10_3(glval) = VariableAddress[x] : -# 10| mu10_4(int) = Store[x] : &:r10_3, r10_2 -# 11| r11_1(glval) = FunctionAddress[ProbeFunction] : -# 11| r11_2(int) = Constant[0] : -# 11| v11_3(void) = Call[ProbeFunction] : func:r11_1, 0:r11_2 -# 11| mu11_4(unknown) = ^CallSideEffect : ~m? -#-----| Goto -> Block 7 +# 6| v6_1(void) = EnterFunction : +# 6| mu6_2(unknown) = AliasedDefinition : +# 6| mu6_3(unknown) = InitializeNonLocal : +# 7| r7_1(glval) = VariableAddress[x] : +# 7| mu7_2(int) = Uninitialized[x] : &:r7_1 +# 7| r7_3(glval) = VariableAddress[y] : +# 7| r7_4(int) = Constant[0] : +# 7| mu7_5(int) = Store[y] : &:r7_3, r7_4 +# 9| r9_1(glval) = FunctionAddress[ProbeFunction] : +# 9| r9_2(int) = Constant[0] : +# 9| v9_3(void) = Call[ProbeFunction] : func:r9_1, 0:r9_2 +# 9| mu9_4(unknown) = ^CallSideEffect : ~m? +#-----| Goto -> Block 3 +#-----| SEH Exception -> Block 6 # 6| Block 1 # 6| v6_4(void) = AliasedUse : ~m? @@ -37318,36 +37311,49 @@ try_except.c: # 6| v6_6(void) = Unwind : #-----| Goto -> Block 1 -# 13| Block 3 +# 10| Block 3 +# 10| r10_1(glval) = VariableAddress[y] : +# 10| r10_2(int) = Load[y] : &:r10_1, ~m? +# 10| r10_3(glval) = VariableAddress[x] : +# 10| mu10_4(int) = Store[x] : &:r10_3, r10_2 +# 11| r11_1(glval) = FunctionAddress[ProbeFunction] : +# 11| r11_2(int) = Constant[0] : +# 11| v11_3(void) = Call[ProbeFunction] : func:r11_1, 0:r11_2 +# 11| mu11_4(unknown) = ^CallSideEffect : ~m? +#-----| Goto -> Block 8 +#-----| SEH Exception -> Block 6 + +# 13| Block 4 # 13| r13_1(int) = Constant[0] : # 13| r13_2(bool) = CompareEQ : r13_7, r13_1 # 13| v13_3(void) = ConditionalBranch : r13_2 -#-----| False -> Block 4 +#-----| False -> Block 5 #-----| True -> Block 2 -# 13| Block 4 +# 13| Block 5 # 13| r13_4(int) = Constant[1] : # 13| r13_5(bool) = CompareEQ : r13_7, r13_4 # 13| v13_6(void) = ConditionalBranch : r13_5 -#-----| True -> Block 6 +#-----| True -> Block 7 -# 13| Block 5 +# 13| Block 6 # 13| r13_7(int) = Constant[0] : # 13| r13_8(int) = Constant[-1] : # 13| r13_9(bool) = CompareEQ : r13_7, r13_8 # 13| v13_10(void) = ConditionalBranch : r13_9 -#-----| False -> Block 3 +#-----| False -> Block 4 #-----| True -> Block 2 -# 14| Block 6 +# 14| Block 7 # 14| r14_1(glval) = FunctionAddress[sink] : # 14| r14_2(glval) = VariableAddress[x] : # 14| r14_3(int) = Load[x] : &:r14_2, ~m? # 14| v14_4(void) = Call[sink] : func:r14_1, 0:r14_3 # 14| mu14_5(unknown) = ^CallSideEffect : ~m? -#-----| Goto -> Block 7 +#-----| Goto -> Block 8 +#-----| SEH Exception -> Block 2 -# 16| Block 7 +# 16| Block 8 # 16| v16_1(void) = NoOp : # 6| v6_7(void) = ReturnVoid : #-----| Goto -> Block 1 @@ -37366,6 +37372,18 @@ try_except.c: # 21| r21_2(int) = Constant[0] : # 21| v21_3(void) = Call[ProbeFunction] : func:r21_1, 0:r21_2 # 21| mu21_4(unknown) = ^CallSideEffect : ~m? +#-----| Goto -> Block 3 +#-----| SEH Exception -> Block 4 + +# 18| Block 1 +# 18| v18_4(void) = AliasedUse : ~m? +# 18| v18_5(void) = ExitFunction : + +# 18| Block 2 +# 18| v18_6(void) = Unwind : +#-----| Goto -> Block 1 + +# 22| Block 3 # 22| r22_1(glval) = VariableAddress[y] : # 22| r22_2(int) = Load[y] : &:r22_1, ~m? # 22| r22_3(glval) = VariableAddress[x] : @@ -37374,21 +37392,20 @@ try_except.c: # 23| r23_2(int) = Constant[0] : # 23| v23_3(void) = Call[ProbeFunction] : func:r23_1, 0:r23_2 # 23| mu23_4(unknown) = ^CallSideEffect : ~m? -# 26| r26_1(glval) = FunctionAddress[sink] : -# 26| r26_2(glval) = VariableAddress[x] : -# 26| r26_3(int) = Load[x] : &:r26_2, ~m? -# 26| v26_4(void) = Call[sink] : func:r26_1, 0:r26_3 -# 26| mu26_5(unknown) = ^CallSideEffect : ~m? -# 28| v28_1(void) = NoOp : -# 18| v18_4(void) = ReturnVoid : -#-----| Goto -> Block 1 +#-----| Goto|SEH Exception -> Block 4 -# 18| Block 1 -# 18| v18_5(void) = AliasedUse : ~m? -# 18| v18_6(void) = ExitFunction : +# 26| Block 4 +# 26| r26_1(glval) = FunctionAddress[sink] : +# 26| r26_2(glval) = VariableAddress[x] : +# 26| r26_3(int) = Load[x] : &:r26_2, ~m? +# 26| v26_4(void) = Call[sink] : func:r26_1, 0:r26_3 +# 26| mu26_5(unknown) = ^CallSideEffect : ~m? +#-----| Goto -> Block 5 +#-----| SEH Exception -> Block 2 -# 18| Block 2 -# 18| v18_7(void) = Unwind : +# 28| Block 5 +# 28| v28_1(void) = NoOp : +# 18| v18_7(void) = ReturnVoid : #-----| Goto -> Block 1 # 32| void h(int) @@ -37422,6 +37439,7 @@ try_except.c: # 36| v36_2(void) = Call[AfxThrowMemoryException] : func:r36_1 # 36| mu36_3(unknown) = ^CallSideEffect : ~m? #-----| Goto -> Block 8 +#-----| SEH Exception -> Block 6 # 39| Block 4 # 39| r39_1(int) = Constant[0] : @@ -37451,6 +37469,7 @@ try_except.c: # 40| v40_4(void) = Call[sink] : func:r40_1, 0:r40_3 # 40| mu40_5(unknown) = ^CallSideEffect : ~m? #-----| Goto -> Block 8 +#-----| SEH Exception -> Block 2 # 42| Block 8 # 42| v42_1(void) = NoOp : @@ -37460,27 +37479,20 @@ try_except.c: try_except.cpp: # 6| void f_cpp() # 6| Block 0 -# 6| v6_1(void) = EnterFunction : -# 6| mu6_2(unknown) = AliasedDefinition : -# 6| mu6_3(unknown) = InitializeNonLocal : -# 7| r7_1(glval) = VariableAddress[x] : -# 7| mu7_2(int) = Uninitialized[x] : &:r7_1 -# 7| r7_3(glval) = VariableAddress[y] : -# 7| r7_4(int) = Constant[0] : -# 7| mu7_5(int) = Store[y] : &:r7_3, r7_4 -# 9| r9_1(glval) = FunctionAddress[ProbeFunction] : -# 9| r9_2(int) = Constant[0] : -# 9| v9_3(void) = Call[ProbeFunction] : func:r9_1, 0:r9_2 -# 9| mu9_4(unknown) = ^CallSideEffect : ~m? -# 10| r10_1(glval) = VariableAddress[y] : -# 10| r10_2(int) = Load[y] : &:r10_1, ~m? -# 10| r10_3(glval) = VariableAddress[x] : -# 10| mu10_4(int) = Store[x] : &:r10_3, r10_2 -# 11| r11_1(glval) = FunctionAddress[ProbeFunction] : -# 11| r11_2(int) = Constant[0] : -# 11| v11_3(void) = Call[ProbeFunction] : func:r11_1, 0:r11_2 -# 11| mu11_4(unknown) = ^CallSideEffect : ~m? -#-----| Goto -> Block 7 +# 6| v6_1(void) = EnterFunction : +# 6| mu6_2(unknown) = AliasedDefinition : +# 6| mu6_3(unknown) = InitializeNonLocal : +# 7| r7_1(glval) = VariableAddress[x] : +# 7| mu7_2(int) = Uninitialized[x] : &:r7_1 +# 7| r7_3(glval) = VariableAddress[y] : +# 7| r7_4(int) = Constant[0] : +# 7| mu7_5(int) = Store[y] : &:r7_3, r7_4 +# 9| r9_1(glval) = FunctionAddress[ProbeFunction] : +# 9| r9_2(int) = Constant[0] : +# 9| v9_3(void) = Call[ProbeFunction] : func:r9_1, 0:r9_2 +# 9| mu9_4(unknown) = ^CallSideEffect : ~m? +#-----| Goto -> Block 3 +#-----| SEH Exception -> Block 6 # 6| Block 1 # 6| v6_4(void) = AliasedUse : ~m? @@ -37490,36 +37502,49 @@ try_except.cpp: # 6| v6_6(void) = Unwind : #-----| Goto -> Block 1 -# 13| Block 3 +# 10| Block 3 +# 10| r10_1(glval) = VariableAddress[y] : +# 10| r10_2(int) = Load[y] : &:r10_1, ~m? +# 10| r10_3(glval) = VariableAddress[x] : +# 10| mu10_4(int) = Store[x] : &:r10_3, r10_2 +# 11| r11_1(glval) = FunctionAddress[ProbeFunction] : +# 11| r11_2(int) = Constant[0] : +# 11| v11_3(void) = Call[ProbeFunction] : func:r11_1, 0:r11_2 +# 11| mu11_4(unknown) = ^CallSideEffect : ~m? +#-----| Goto -> Block 8 +#-----| SEH Exception -> Block 6 + +# 13| Block 4 # 13| r13_1(int) = Constant[0] : # 13| r13_2(bool) = CompareEQ : r13_7, r13_1 # 13| v13_3(void) = ConditionalBranch : r13_2 -#-----| False -> Block 4 +#-----| False -> Block 5 #-----| True -> Block 2 -# 13| Block 4 +# 13| Block 5 # 13| r13_4(int) = Constant[1] : # 13| r13_5(bool) = CompareEQ : r13_7, r13_4 # 13| v13_6(void) = ConditionalBranch : r13_5 -#-----| True -> Block 6 +#-----| True -> Block 7 -# 13| Block 5 +# 13| Block 6 # 13| r13_7(int) = Constant[0] : # 13| r13_8(int) = Constant[-1] : # 13| r13_9(bool) = CompareEQ : r13_7, r13_8 # 13| v13_10(void) = ConditionalBranch : r13_9 -#-----| False -> Block 3 +#-----| False -> Block 4 #-----| True -> Block 2 -# 14| Block 6 +# 14| Block 7 # 14| r14_1(glval) = FunctionAddress[sink] : # 14| r14_2(glval) = VariableAddress[x] : # 14| r14_3(int) = Load[x] : &:r14_2, ~m? # 14| v14_4(void) = Call[sink] : func:r14_1, 0:r14_3 # 14| mu14_5(unknown) = ^CallSideEffect : ~m? -#-----| Goto -> Block 7 +#-----| Goto -> Block 8 +#-----| SEH Exception -> Block 2 -# 16| Block 7 +# 16| Block 8 # 16| v16_1(void) = NoOp : # 6| v6_7(void) = ReturnVoid : #-----| Goto -> Block 1 @@ -37538,6 +37563,18 @@ try_except.cpp: # 21| r21_2(int) = Constant[0] : # 21| v21_3(void) = Call[ProbeFunction] : func:r21_1, 0:r21_2 # 21| mu21_4(unknown) = ^CallSideEffect : ~m? +#-----| Goto -> Block 3 +#-----| SEH Exception -> Block 4 + +# 18| Block 1 +# 18| v18_4(void) = AliasedUse : ~m? +# 18| v18_5(void) = ExitFunction : + +# 18| Block 2 +# 18| v18_6(void) = Unwind : +#-----| Goto -> Block 1 + +# 22| Block 3 # 22| r22_1(glval) = VariableAddress[y] : # 22| r22_2(int) = Load[y] : &:r22_1, ~m? # 22| r22_3(glval) = VariableAddress[x] : @@ -37546,21 +37583,20 @@ try_except.cpp: # 23| r23_2(int) = Constant[0] : # 23| v23_3(void) = Call[ProbeFunction] : func:r23_1, 0:r23_2 # 23| mu23_4(unknown) = ^CallSideEffect : ~m? -# 26| r26_1(glval) = FunctionAddress[sink] : -# 26| r26_2(glval) = VariableAddress[x] : -# 26| r26_3(int) = Load[x] : &:r26_2, ~m? -# 26| v26_4(void) = Call[sink] : func:r26_1, 0:r26_3 -# 26| mu26_5(unknown) = ^CallSideEffect : ~m? -# 28| v28_1(void) = NoOp : -# 18| v18_4(void) = ReturnVoid : -#-----| Goto -> Block 1 +#-----| Goto|SEH Exception -> Block 4 -# 18| Block 1 -# 18| v18_5(void) = AliasedUse : ~m? -# 18| v18_6(void) = ExitFunction : +# 26| Block 4 +# 26| r26_1(glval) = FunctionAddress[sink] : +# 26| r26_2(glval) = VariableAddress[x] : +# 26| r26_3(int) = Load[x] : &:r26_2, ~m? +# 26| v26_4(void) = Call[sink] : func:r26_1, 0:r26_3 +# 26| mu26_5(unknown) = ^CallSideEffect : ~m? +#-----| Goto -> Block 5 +#-----| SEH Exception -> Block 2 -# 18| Block 2 -# 18| v18_7(void) = Unwind : +# 28| Block 5 +# 28| v28_1(void) = NoOp : +# 18| v18_7(void) = ReturnVoid : #-----| Goto -> Block 1 # 32| void h_cpp(int) @@ -37594,6 +37630,7 @@ try_except.cpp: # 36| v36_2(void) = Call[AfxThrowMemoryException] : func:r36_1 # 36| mu36_3(unknown) = ^CallSideEffect : ~m? #-----| Goto -> Block 8 +#-----| SEH Exception -> Block 6 # 39| Block 4 # 39| r39_1(int) = Constant[0] : @@ -37623,6 +37660,7 @@ try_except.cpp: # 40| v40_4(void) = Call[sink] : func:r40_1, 0:r40_3 # 40| mu40_5(unknown) = ^CallSideEffect : ~m? #-----| Goto -> Block 8 +#-----| SEH Exception -> Block 2 # 42| Block 8 # 42| v42_1(void) = NoOp : @@ -37690,6 +37728,7 @@ try_except.cpp: # 52| v52_4(void) = Call[sink] : func:r52_1, 0:r52_3 # 52| mu52_5(unknown) = ^CallSideEffect : ~m? #-----| Goto -> Block 8 +#-----| SEH Exception -> Block 2 # 54| Block 8 # 54| v54_1(void) = NoOp : From cf2f0f16b874a50221d98612a752b0e539d687d8 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Fri, 13 Jun 2025 11:52:37 -0400 Subject: [PATCH 072/150] Crypto: Initial model of signatures. Still incomplete for verification and correct handling of MACs. --- .../OpenSSLAlgorithmInstances.qll | 1 + .../Operations/EVPPKeyCtxInitializer.qll | 1 + .../Operations/EVPSignatureOperation.qll | 263 ++++++++---------- .../Operations/OpenSSLOperationBase.qll | 26 ++ .../OpenSSL/Operations/OpenSSLOperations.qll | 2 +- .../quantum/signature_algorithms.expected | 5 - .../quantum/signature_algorithms.ql | 6 - .../quantum/signature_key_sources.expected | 5 - .../quantum/signature_key_sources.ql | 6 - .../signature_message_sources.expected | 4 - .../quantum/signature_message_sources.ql | 6 - 11 files changed, 152 insertions(+), 173 deletions(-) delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/signature_algorithms.expected delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/signature_algorithms.ql delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/signature_key_sources.expected delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/signature_key_sources.ql delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/signature_message_sources.expected delete mode 100644 cpp/ql/test/experimental/library-tests/quantum/signature_message_sources.ql diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/OpenSSLAlgorithmInstances.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/OpenSSLAlgorithmInstances.qll index f169ca28c0d..a779f531f94 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/OpenSSLAlgorithmInstances.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/OpenSSLAlgorithmInstances.qll @@ -5,3 +5,4 @@ import BlockAlgorithmInstance import HashAlgorithmInstance import EllipticCurveAlgorithmInstance import SignatureAlgorithmInstance +import MACAlgorithmInstance diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPPKeyCtxInitializer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPPKeyCtxInitializer.qll index 1c48d6f8865..5f2f96e371a 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPPKeyCtxInitializer.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPPKeyCtxInitializer.qll @@ -7,6 +7,7 @@ import cpp private import experimental.quantum.OpenSSL.CtxFlow +private import OpenSSLOperations private import OpenSSLOperationBase /** diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPSignatureOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPSignatureOperation.qll index 0d9c2625221..9fb0ebc9bb6 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPSignatureOperation.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPSignatureOperation.qll @@ -4,113 +4,63 @@ private import experimental.quantum.Language private import OpenSSLOperationBase +private import experimental.quantum.OpenSSL.AvcFlow private import experimental.quantum.OpenSSL.CtxFlow private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers private import experimental.quantum.OpenSSL.Operations.OpenSSLOperations -module OpenSSLKeyGenToArgConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { - exists(Crypto::KeyGenerationOperationInstance keygen | keygen.getOutputKeyArtifact() = source) - } - - predicate isSink(DataFlow::Node sink) { exists(Call c | c.getAnArgument() = sink.asExpr()) } -} - -module OpenSSLKeyGenToArgFlow = TaintTracking::Global; - // TODO: verification functions -class EVP_Signature_Initializer extends EVPInitialize { - EVP_Signature_Initializer() { - this.(Call).getTarget().getName() in [ - "EVP_DigestSignInit", "EVP_DigestSignInit_ex", "EVP_SignInit", "EVP_SignInit_ex", - "EVP_PKEY_sign_init", "EVP_PKEY_sign_init_ex", "EVP_PKEY_sign_init_ex2", - "EVP_PKEY_sign_message_init" - ] - } +class EvpSignatureDigestInitializer extends EvpHashAlgorithmInitializer { + Expr arg; - /** - * Gets the algorithm associated with this initialization by following - * where the algorithm is set through the context argument. - */ - Expr getAlgorithmArgFromCtx() { - // exists(EVPPKeyAlgorithmConsumer source, DataFlow::Node sink | - // result = source.getInputNode().asExpr() and - // sink.asExpr() = this.getContextArg() and - // OpenSSLCtxSourceToArgumentFlow::flow(source.getResultNode(), sink) - // ) - // or - result = this.getAlgorithmArgFromKey(this.getKeyArgFromCtx()) - } - - Expr getAlgorithmArgFromKey(Expr keyArg) { - exists(Crypto::KeyGenerationOperationInstance keygen | - OpenSSLKeyGenToArgFlow::flow(keygen.getOutputKeyArtifact(), DataFlow::exprNode(keyArg)) and - result = keygen.(OpenSSLOperation).getAlgorithmArg() - ) - } - - /** - * Gets the argument ingesting a key - * by tracing the context arg back to a context creation - */ - Expr getKeyArgFromCtx() { - exists(Call contextCreationCall | - ctxArgOrRetFlowsToCtxArg(contextCreationCall, this.getContextArg()) and - ( - contextCreationCall.getTarget().getName() = "EVP_PKEY_CTX_new" and - result = contextCreationCall.getArgument(0) - or - contextCreationCall.getTarget().getName() = "EVP_PKEY_CTX_new_from_pkey" and - result = contextCreationCall.getArgument(1) - ) - ) - } - - override Expr getAlgorithmArg() { - // explicit algorithm as argument - this.(Call).getTarget().getName() in ["EVP_PKEY_sign_init_ex2", "EVP_PKEY_sign_message_init"] and - result = this.(Call).getArgument(1) - // or - // // algorithm (and key) specified in the context - // this.(Call).getTarget().getName() in ["EVP_PKEY_sign_init", "EVP_PKEY_sign_init_ex"] and - // result = getAlgorithmArgFromCtx() - // or - // // algorithm specified by the key - // this.(Call).getTarget().getName() in ["EVP_DigestSignInit", "EVP_DigestSignInit_ex"] and - // result = getAlgorithmArgFromKey() - // // NOTE: for EVP_SignInit and EVP_SignInit_ex the algorithm is not specified - // // rather the algorithm is specified by the key used for signing later in a final call. - } - - /** - * Returns the key argument if there is one. - * If the key was provided via the context, we track it to the context. - */ - override Expr getKeyArg() { - this.(Call).getTarget().getName() = "EVP_DigestSignInit" and - result = this.(Call).getArgument(4) + EvpSignatureDigestInitializer() { + this.(Call).getTarget().getName() in ["EVP_DigestSignInit_ex", "EVP_DigestSignInit"] and + arg = this.(Call).getArgument(2) or - this.(Call).getTarget().getName() = "EVP_DigestSignInit_ex" and - result = this.(Call).getArgument(5) - or - this.(Call).getTarget().getName().matches("EVP_PKEY_%") and - result = this.getKeyArgFromCtx() + this.(Call).getTarget().getName() in ["EVP_SignInit", "EVP_SignInit_ex"] and + arg = this.(Call).getArgument(1) } - /** - * Signing, verification or unknown. - */ - override Crypto::KeyOperationSubtype getKeyOperationSubtype() { - if this.(Call).getTarget().getName().toLowerCase().matches("%sign%") - then result instanceof Crypto::TSignMode - else - if this.(Call).getTarget().getName().toLowerCase().matches("%verify%") - then result instanceof Crypto::TVerifyMode - else result instanceof Crypto::TUnknownKeyOperationMode - } + override Expr getHashAlgorithmArg() { result = arg } + + override CtxPointerSource getContext() { result = this.(Call).getArgument(0) } } -class EVP_Signature_Update_Call extends EVPUpdate { +class EvpSignatureKeyInitializer extends EvpKeyInitializer { + Expr arg; + + EvpSignatureKeyInitializer() { + this.(Call).getTarget().getName() = "EVP_DigestSignInit_ex" and + arg = this.(Call).getArgument(5) + or + this.(Call).getTarget().getName() = "EVP_DigestSignInit" and + arg = this.(Call).getArgument(4) + } + + override Expr getKeyArg() { result = arg } + + override CtxPointerSource getContext() { result = this.(Call).getArgument(0) } +} + +class EvpSignaturePrimaryAlgorithmInitializer extends EvpPrimaryAlgorithmInitializer { + Expr arg; + + EvpSignaturePrimaryAlgorithmInitializer() { + // signature algorithm + this.(Call).getTarget().getName() in ["EVP_PKEY_sign_init_ex2", "EVP_PKEY_sign_message_init"] and + arg = this.(Call).getArgument(1) + or + // configuration through the context argument + this.(Call).getTarget().getName() in ["EVP_PKEY_sign_init", "EVP_PKEY_sign_init_ex"] and + arg = this.getContext() + } + + override Expr getAlgorithmArg() { result = arg } + + override CtxPointerSource getContext() { result = this.(Call).getArgument(0) } +} + +class EVP_Signature_Update_Call extends EvpUpdate { EVP_Signature_Update_Call() { this.(Call).getTarget().getName() in [ "EVP_DigestSignUpdate", "EVP_SignUpdate", "EVP_PKEY_sign_message_update" @@ -121,6 +71,8 @@ class EVP_Signature_Update_Call extends EVPUpdate { * Input is the message to sign. */ override Expr getInputArg() { result = this.(Call).getArgument(1) } + + override CtxPointerSource getContext() { result = this.(Call).getArgument(0) } } /** @@ -131,22 +83,37 @@ private Expr signatureOperationOutputArg(Call call) { if call.getTarget().getName() = "EVP_SignFinal_ex" then result = call.getArgument(2) else result = call.getArgument(1) + ////*******todo get rid of this predicate */ } /** * Base configuration for all EVP signature operations. */ -abstract class EVP_Signature_Operation extends EVPOperation, Crypto::SignatureOperationInstance { - EVP_Signature_Operation() { +abstract class EvpSignatureOperation extends EvpOperation, Crypto::SignatureOperationInstance { + EvpSignatureOperation() { this.(Call).getTarget().getName().matches("EVP_%") and // NULL output argument means the call is to get the size of the signature and such call is not an operation ( + // ******TODO review logic not exists(signatureOperationOutputArg(this).getValue()) or signatureOperationOutputArg(this).getValue() != "0" ) } + Expr getHashAlgorithmArg() { + this.getInitCall().(EvpHashAlgorithmInitializer).getHashAlgorithmArg() = result + } + + override Expr getAlgorithmArg() { + this.getInitCall().(EvpPrimaryAlgorithmInitializer).getAlgorithmArg() = result + } + + override Crypto::AlgorithmValueConsumer getHashAlgorithmValueConsumer() { + AvcToCallArgFlow::flow(result.(OpenSSLAlgorithmValueConsumer).getResultNode(), + DataFlow::exprNode(this.getHashAlgorithmArg())) + } + /** * Signing, verification or unknown. */ @@ -170,15 +137,15 @@ abstract class EVP_Signature_Operation extends EVPOperation, Crypto::SignatureOp * Keys in explicit arguments are found by overriden methods in extending classes. */ override Crypto::ConsumerInputDataFlowNode getKeyConsumer() { - result = DataFlow::exprNode(this.getInitCall().getKeyArg()) + result = DataFlow::exprNode(this.getInitCall().(EvpKeyInitializer).getKeyArg()) } override Crypto::ArtifactOutputDataFlowNode getOutputArtifact() { - result = EVPOperation.super.getOutputArtifact() + result = EvpOperation.super.getOutputArtifact() } override Crypto::ConsumerInputDataFlowNode getInputConsumer() { - result = EVPOperation.super.getInputConsumer() + result = EvpOperation.super.getInputConsumer() } /** @@ -186,42 +153,58 @@ abstract class EVP_Signature_Operation extends EVPOperation, Crypto::SignatureOp */ override Crypto::ConsumerInputDataFlowNode getSignatureConsumer() { none() } } -// class EVP_Signature_Call extends EVPOperation, EVP_Signature_Operation { -// EVP_Signature_Call() { this.(Call).getTarget().getName() in ["EVP_DigestSign", "EVP_PKEY_sign"] } -// /** -// * Output is the signature. -// */ -// override Expr getOutputArg() { result = signatureOperationOutputArg(this) } -// /** -// * Input is the message to sign. -// */ -// override Expr getInputArg() { result = this.(Call).getArgument(3) } -// } -// class EVP_Signature_Final_Call extends EVPFinal, EVP_Signature_Operation { -// EVP_Signature_Final_Call() { -// this.(Call).getTarget().getName() in [ -// "EVP_DigestSignFinal", "EVP_SignFinal_ex", "EVP_SignFinal", "EVP_PKEY_sign_message_final" -// ] -// } -// override Expr getAlgorithmArg() { -// none() -// // // algorithm specified by the key and the key is provided in this operation -// // if this.(Call).getTarget().getName() in ["EVP_SignFinal", "EVP_SignFinal_ex"] -// // then result = getAlgorithmFromKey(this.getKeyConsumer().asExpr()) -// // else -// // // or find algorithm in the initialization call -// // result = EVP_Signature_Operation.super.getAlgorithmArg() -// } -// override Crypto::ConsumerInputDataFlowNode getKeyConsumer() { -// // key provided as an argument -// if this.(Call).getTarget().getName() in ["EVP_SignFinal", "EVP_SignFinal_ex"] -// then result = DataFlow::exprNode(this.(Call).getArgument(3)) -// else -// // or find key in the initialization call -// result = EVP_Signature_Operation.super.getKeyConsumer() -// } -// /** -// * Output is the signature. -// */ -// override Expr getOutputArg() { result = signatureOperationOutputArg(this) } -// } + +class EVP_Signature_Call extends EvpSignatureOperation { + EVP_Signature_Call() { this.(Call).getTarget().getName() in ["EVP_DigestSign", "EVP_PKEY_sign"] } + + /** + * Output is the signature. + */ + override Expr getOutputArg() { result = signatureOperationOutputArg(this) } + + override CtxPointerSource getContext() { result = this.(Call).getArgument(0) } + + /** + * Input is the message to sign. + */ + override Expr getInputArg() { result = this.(Call).getArgument(3) } +} + +class EVP_Signature_Final_Call extends EVPFinal, EvpSignatureOperation { + EVP_Signature_Final_Call() { + this.(Call).getTarget().getName() in [ + "EVP_DigestSignFinal", + "EVP_SignFinal_ex", + "EVP_SignFinal", + "EVP_PKEY_sign_message_final" + ] + } + + override CtxPointerSource getContext() { result = this.(Call).getArgument(0) } + + //***********TODO: the algorithm arg might nto be the right type, can't use the initializer the same way if there + // are two initializers for two different algorithms */ + override Expr getAlgorithmArg() { + this.getInitCall().(EvpPrimaryAlgorithmInitializer).getAlgorithmArg() = result + // // algorithm specified by the key and the key is provided in this operation + // if this.(Call).getTarget().getName() in ["EVP_SignFinal", "EVP_SignFinal_ex"] + // then result = getAlgorithmFromKey(this.getKeyConsumer().asExpr()) + // else + // // or find algorithm in the initialization call + // result = EVP_Signature_Operation.super.getAlgorithmArg() + } + + override Crypto::ConsumerInputDataFlowNode getKeyConsumer() { + // key provided as an argument + this.(Call).getTarget().getName() in ["EVP_SignFinal", "EVP_SignFinal_ex"] and + result = DataFlow::exprNode(this.(Call).getArgument(3)) + or + // or find key in the initialization call + result = EvpSignatureOperation.super.getKeyConsumer() + } + + /** + * Output is the signature. + */ + override Expr getOutputArg() { result = signatureOperationOutputArg(this) } +} diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll index cc0b79b8dcc..8cdac627518 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll @@ -145,6 +145,32 @@ class EvpInitializerThroughKey extends EvpPrimaryAlgorithmInitializer, EvpKeySiz Expr getKeyArg() { result = EvpKeyInitializer.super.getKeyArg() } } +/** + * A default initializer for any key operation that accepts a key as input. + * A key initializer allows for a mechanic to go backwards to the key creation operation + * and find the algorithm and key size. + * If a user were to stipualte a key consumer for an operation but fail to indicate it as an + * initializer, automatic tracing to the creation operation would not occur. + * USERS SHOULD NOT NEED TO USE OR EXTEND THIS CLASS DIRECTLY. + * + * TODO: re-evaluate this approach + */ +class DefaultKeyInitializer extends EvpKeyInitializer instanceof Crypto::KeyOperationInstance { + Expr arg; + + DefaultKeyInitializer() { + exists(Call c | + c.getAChild*() = arg and + arg = this.(Crypto::KeyOperationInstance).getKeyConsumer().asExpr() and + c = this + ) + } + + override Expr getKeyArg() { result = arg } + + override CtxPointerSource getContext() { result = this.(EvpOperation).getContext() } +} + abstract class EvpIVInitializer extends EvpInitializer { abstract Expr getIVArg(); } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperations.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperations.qll index 1f1cae28668..efaf71e7e36 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperations.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperations.qll @@ -2,6 +2,6 @@ import OpenSSLOperationBase import EVPCipherOperation import EVPHashOperation import ECKeyGenOperation -//import EVPSignatureOperation +import EVPSignatureOperation import EVPKeyGenOperation import EVPPKeyCtxInitializer diff --git a/cpp/ql/test/experimental/library-tests/quantum/signature_algorithms.expected b/cpp/ql/test/experimental/library-tests/quantum/signature_algorithms.expected deleted file mode 100644 index ffb0ac4ad87..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/signature_algorithms.expected +++ /dev/null @@ -1,5 +0,0 @@ -| openssl_signature.c:565:50:565:54 | dsa | DSA | openssl_signature.c:565:17:565:42 | call to EVP_PKEY_CTX_new_from_name | -| openssl_signature.c:702:60:702:71 | RSA-SHA256 | RSA | openssl_signature.c:323:11:323:29 | call to EVP_SIGNATURE_fetch | -| openssl_signature.c:702:60:702:71 | RSA-SHA256 | RSA | openssl_signature.c:359:11:359:29 | call to EVP_SIGNATURE_fetch | -| openssl_signature.c:758:60:758:64 | dsa | DSA | openssl_signature.c:323:11:323:29 | call to EVP_SIGNATURE_fetch | -| openssl_signature.c:758:60:758:64 | dsa | DSA | openssl_signature.c:359:11:359:29 | call to EVP_SIGNATURE_fetch | diff --git a/cpp/ql/test/experimental/library-tests/quantum/signature_algorithms.ql b/cpp/ql/test/experimental/library-tests/quantum/signature_algorithms.ql deleted file mode 100644 index 113fba415c9..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/signature_algorithms.ql +++ /dev/null @@ -1,6 +0,0 @@ -import cpp -import experimental.quantum.Language -import experimental.quantum.OpenSSL.AlgorithmInstances.SignatureAlgorithmInstance - -from KnownOpenSSLSignatureConstantAlgorithmInstance algoInstance -select algoInstance, algoInstance.getAlgorithmType(), algoInstance.getAVC() diff --git a/cpp/ql/test/experimental/library-tests/quantum/signature_key_sources.expected b/cpp/ql/test/experimental/library-tests/quantum/signature_key_sources.expected deleted file mode 100644 index 43b25361cd3..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/signature_key_sources.expected +++ /dev/null @@ -1,5 +0,0 @@ -| openssl_signature.c:89:9:89:21 | SignOperation | openssl_signature.c:89:53:89:56 | Key | -| openssl_signature.c:151:9:151:27 | SignOperation | openssl_signature.c:142:52:142:55 | Key | -| openssl_signature.c:213:9:213:27 | SignOperation | openssl_signature.c:199:57:199:60 | Key | -| openssl_signature.c:279:9:279:21 | SignOperation | openssl_signature.c:269:39:269:42 | Key | -| openssl_signature.c:343:9:343:35 | SignOperation | openssl_signature.c:330:39:330:42 | Key | \ No newline at end of file diff --git a/cpp/ql/test/experimental/library-tests/quantum/signature_key_sources.ql b/cpp/ql/test/experimental/library-tests/quantum/signature_key_sources.ql deleted file mode 100644 index e622ad8d84a..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/signature_key_sources.ql +++ /dev/null @@ -1,6 +0,0 @@ -import cpp -import experimental.quantum.Language - -from Crypto::SignatureOperationNode op, Crypto::KeyArtifactNode key -where op.getAKey() = key -select op, key diff --git a/cpp/ql/test/experimental/library-tests/quantum/signature_message_sources.expected b/cpp/ql/test/experimental/library-tests/quantum/signature_message_sources.expected deleted file mode 100644 index 091715de297..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/signature_message_sources.expected +++ /dev/null @@ -1,4 +0,0 @@ -| openssl_signature.c:89:9:89:21 | SignOperation | openssl_signature.c:79:32:79:38 | Message | openssl_signature.c:611:37:611:77 | Constant | -| openssl_signature.c:151:9:151:27 | SignOperation | openssl_signature.c:143:38:143:44 | Message | openssl_signature.c:611:37:611:77 | Constant | -| openssl_signature.c:213:9:213:27 | SignOperation | openssl_signature.c:205:38:205:44 | Message | openssl_signature.c:611:37:611:77 | Constant | -| openssl_signature.c:343:9:343:35 | SignOperation | openssl_signature.c:335:48:335:54 | Message | openssl_signature.c:611:37:611:77 | Constant | \ No newline at end of file diff --git a/cpp/ql/test/experimental/library-tests/quantum/signature_message_sources.ql b/cpp/ql/test/experimental/library-tests/quantum/signature_message_sources.ql deleted file mode 100644 index 904cfdf1d9b..00000000000 --- a/cpp/ql/test/experimental/library-tests/quantum/signature_message_sources.ql +++ /dev/null @@ -1,6 +0,0 @@ -import cpp -import experimental.quantum.Language - -from Crypto::SignatureOperationNode n, Crypto::MessageArtifactNode m -where n.getAnInputArtifact() = m -select n, m, m.getSourceNode() From fb495bf665c79f329919bb996c3d2acce6d71dd5 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Fri, 13 Jun 2025 12:02:57 -0400 Subject: [PATCH 073/150] Crypto: Update expected files. There are failures, but accepting them for now and noting the issue for a future PR. --- .../library-tests/quantum/node_edges.expected | 63 +++++++++++++++++++ .../quantum/node_properties.expected | 17 ++++- .../library-tests/quantum/nodes.expected | 30 ++++++++- 3 files changed, 108 insertions(+), 2 deletions(-) diff --git a/cpp/ql/test/experimental/library-tests/quantum/node_edges.expected b/cpp/ql/test/experimental/library-tests/quantum/node_edges.expected index daeb0bf1efb..e9e3bf868ae 100644 --- a/cpp/ql/test/experimental/library-tests/quantum/node_edges.expected +++ b/cpp/ql/test/experimental/library-tests/quantum/node_edges.expected @@ -30,6 +30,16 @@ | openssl_basic.c:144:13:144:22 | HashOperation | Message | openssl_basic.c:144:24:144:30 | Message | | openssl_basic.c:144:24:144:30 | Message | Source | openssl_basic.c:181:49:181:87 | Constant | | openssl_basic.c:144:46:144:51 | Digest | Source | openssl_basic.c:144:46:144:51 | Digest | +| openssl_basic.c:155:22:155:41 | KeyGeneration | Algorithm | openssl_basic.c:155:22:155:41 | KeyGeneration | +| openssl_basic.c:155:22:155:41 | KeyGeneration | Output | openssl_basic.c:155:22:155:41 | Key | +| openssl_basic.c:155:43:155:55 | MACAlgorithm | H | openssl_basic.c:160:39:160:48 | HashAlgorithm | +| openssl_basic.c:160:59:160:62 | Key | Source | openssl_basic.c:155:22:155:41 | Key | +| openssl_basic.c:163:35:163:41 | Message | Source | openssl_basic.c:181:49:181:87 | Constant | +| openssl_basic.c:167:9:167:27 | SignOperation | Algorithm | openssl_basic.c:167:9:167:27 | SignOperation | +| openssl_basic.c:167:9:167:27 | SignOperation | HashAlgorithm | openssl_basic.c:160:39:160:48 | HashAlgorithm | +| openssl_basic.c:167:9:167:27 | SignOperation | Input | openssl_basic.c:163:35:163:41 | Message | +| openssl_basic.c:167:9:167:27 | SignOperation | Key | openssl_basic.c:160:59:160:62 | Key | +| openssl_basic.c:167:9:167:27 | SignOperation | Output | openssl_basic.c:167:34:167:36 | SignatureOutput | | openssl_pkey.c:21:10:21:28 | KeyOperationAlgorithm | Mode | openssl_pkey.c:21:10:21:28 | KeyOperationAlgorithm | | openssl_pkey.c:21:10:21:28 | KeyOperationAlgorithm | Padding | openssl_pkey.c:21:10:21:28 | KeyOperationAlgorithm | | openssl_pkey.c:50:31:50:42 | KeyOperationAlgorithm | Mode | openssl_pkey.c:50:31:50:42 | KeyOperationAlgorithm | @@ -52,6 +62,59 @@ | openssl_signature.c:23:9:23:26 | HashOperation | Digest | openssl_signature.c:23:36:23:41 | Digest | | openssl_signature.c:23:9:23:26 | HashOperation | Message | openssl_signature.c:22:34:22:40 | Message | | openssl_signature.c:23:36:23:41 | Digest | Source | openssl_signature.c:23:36:23:41 | Digest | +| openssl_signature.c:70:32:70:38 | Message | Source | openssl_signature.c:602:37:602:77 | Constant | +| openssl_signature.c:75:28:75:36 | Message | Source | openssl_signature.c:75:28:75:36 | Message | +| openssl_signature.c:80:9:80:21 | SignOperation | Algorithm | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | +| openssl_signature.c:80:9:80:21 | SignOperation | Algorithm | openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm | +| openssl_signature.c:80:9:80:21 | SignOperation | HashAlgorithm | openssl_signature.c:684:24:684:33 | HashAlgorithm | +| openssl_signature.c:80:9:80:21 | SignOperation | HashAlgorithm | openssl_signature.c:740:24:740:33 | HashAlgorithm | +| openssl_signature.c:80:9:80:21 | SignOperation | Input | openssl_signature.c:70:32:70:38 | Message | +| openssl_signature.c:80:9:80:21 | SignOperation | Input | openssl_signature.c:75:28:75:36 | Message | +| openssl_signature.c:80:9:80:21 | SignOperation | Key | openssl_signature.c:80:53:80:56 | Key | +| openssl_signature.c:80:9:80:21 | SignOperation | Output | openssl_signature.c:80:31:80:40 | SignatureOutput | +| openssl_signature.c:80:53:80:56 | Key | Source | openssl_signature.c:548:34:548:37 | Key | +| openssl_signature.c:80:53:80:56 | Key | Source | openssl_signature.c:578:34:578:37 | Key | +| openssl_signature.c:133:52:133:55 | Key | Source | openssl_signature.c:548:34:548:37 | Key | +| openssl_signature.c:133:52:133:55 | Key | Source | openssl_signature.c:578:34:578:37 | Key | +| openssl_signature.c:134:38:134:44 | Message | Source | openssl_signature.c:602:37:602:77 | Constant | +| openssl_signature.c:142:9:142:27 | SignOperation | Algorithm | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | +| openssl_signature.c:142:9:142:27 | SignOperation | Algorithm | openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm | +| openssl_signature.c:142:9:142:27 | SignOperation | HashAlgorithm | openssl_signature.c:684:24:684:33 | HashAlgorithm | +| openssl_signature.c:142:9:142:27 | SignOperation | HashAlgorithm | openssl_signature.c:740:24:740:33 | HashAlgorithm | +| openssl_signature.c:142:9:142:27 | SignOperation | Input | openssl_signature.c:134:38:134:44 | Message | +| openssl_signature.c:142:9:142:27 | SignOperation | Key | openssl_signature.c:133:52:133:55 | Key | +| openssl_signature.c:142:9:142:27 | SignOperation | Output | openssl_signature.c:142:37:142:46 | SignatureOutput | +| openssl_signature.c:190:57:190:60 | Key | Source | openssl_signature.c:548:34:548:37 | Key | +| openssl_signature.c:190:57:190:60 | Key | Source | openssl_signature.c:578:34:578:37 | Key | +| openssl_signature.c:196:38:196:44 | Message | Source | openssl_signature.c:602:37:602:77 | Constant | +| openssl_signature.c:204:9:204:27 | SignOperation | Algorithm | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | +| openssl_signature.c:204:9:204:27 | SignOperation | Algorithm | openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm | +| openssl_signature.c:204:9:204:27 | SignOperation | HashAlgorithm | openssl_signature.c:684:24:684:33 | HashAlgorithm | +| openssl_signature.c:204:9:204:27 | SignOperation | HashAlgorithm | openssl_signature.c:740:24:740:33 | HashAlgorithm | +| openssl_signature.c:204:9:204:27 | SignOperation | Input | openssl_signature.c:196:38:196:44 | Message | +| openssl_signature.c:204:9:204:27 | SignOperation | Key | openssl_signature.c:190:57:190:60 | Key | +| openssl_signature.c:204:9:204:27 | SignOperation | Output | openssl_signature.c:204:37:204:46 | SignatureOutput | +| openssl_signature.c:260:39:260:42 | Key | Source | openssl_signature.c:548:34:548:37 | Key | +| openssl_signature.c:260:39:260:42 | Key | Source | openssl_signature.c:578:34:578:37 | Key | +| openssl_signature.c:270:9:270:21 | SignOperation | Algorithm | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | +| openssl_signature.c:270:9:270:21 | SignOperation | Algorithm | openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm | +| openssl_signature.c:270:9:270:21 | SignOperation | HashAlgorithm | openssl_signature.c:684:24:684:33 | HashAlgorithm | +| openssl_signature.c:270:9:270:21 | SignOperation | HashAlgorithm | openssl_signature.c:740:24:740:33 | HashAlgorithm | +| openssl_signature.c:270:9:270:21 | SignOperation | Input | openssl_signature.c:270:60:270:65 | Message | +| openssl_signature.c:270:9:270:21 | SignOperation | Key | openssl_signature.c:260:39:260:42 | Key | +| openssl_signature.c:270:9:270:21 | SignOperation | Output | openssl_signature.c:270:33:270:42 | SignatureOutput | +| openssl_signature.c:270:60:270:65 | Message | Source | openssl_signature.c:270:60:270:65 | Message | +| openssl_signature.c:321:39:321:42 | Key | Source | openssl_signature.c:548:34:548:37 | Key | +| openssl_signature.c:321:39:321:42 | Key | Source | openssl_signature.c:578:34:578:37 | Key | +| openssl_signature.c:326:48:326:54 | Message | Source | openssl_signature.c:602:37:602:77 | Constant | +| openssl_signature.c:334:9:334:35 | SignOperation | Algorithm | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | +| openssl_signature.c:334:9:334:35 | SignOperation | Algorithm | openssl_signature.c:565:50:565:54 | KeyOperationAlgorithm | +| openssl_signature.c:334:9:334:35 | SignOperation | Algorithm | openssl_signature.c:702:60:702:71 | KeyOperationAlgorithm | +| openssl_signature.c:334:9:334:35 | SignOperation | Algorithm | openssl_signature.c:758:60:758:64 | KeyOperationAlgorithm | +| openssl_signature.c:334:9:334:35 | SignOperation | HashAlgorithm | openssl_signature.c:334:9:334:35 | SignOperation | +| openssl_signature.c:334:9:334:35 | SignOperation | Input | openssl_signature.c:326:48:326:54 | Message | +| openssl_signature.c:334:9:334:35 | SignOperation | Key | openssl_signature.c:321:39:321:42 | Key | +| openssl_signature.c:334:9:334:35 | SignOperation | Output | openssl_signature.c:334:47:334:56 | SignatureOutput | | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | Mode | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | Padding | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | | openssl_signature.c:548:9:548:23 | KeyGeneration | Algorithm | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | diff --git a/cpp/ql/test/experimental/library-tests/quantum/node_properties.expected b/cpp/ql/test/experimental/library-tests/quantum/node_properties.expected index 58a95ec0469..1ac047ad334 100644 --- a/cpp/ql/test/experimental/library-tests/quantum/node_properties.expected +++ b/cpp/ql/test/experimental/library-tests/quantum/node_properties.expected @@ -20,13 +20,18 @@ | openssl_basic.c:144:67:144:73 | HashAlgorithm | DigestSize | 128 | openssl_basic.c:144:67:144:73 | openssl_basic.c:144:67:144:73 | | openssl_basic.c:144:67:144:73 | HashAlgorithm | Name | MD5 | openssl_basic.c:144:67:144:73 | openssl_basic.c:144:67:144:73 | | openssl_basic.c:144:67:144:73 | HashAlgorithm | RawName | EVP_md5 | openssl_basic.c:144:67:144:73 | openssl_basic.c:144:67:144:73 | -| openssl_basic.c:155:43:155:55 | Constant | Description | 855 | openssl_basic.c:155:43:155:55 | openssl_basic.c:155:43:155:55 | +| openssl_basic.c:155:22:155:41 | Key | KeyType | Symmetric | openssl_basic.c:155:22:155:41 | openssl_basic.c:155:22:155:41 | +| openssl_basic.c:155:43:155:55 | MACAlgorithm | Name | HMAC | openssl_basic.c:155:43:155:55 | openssl_basic.c:155:43:155:55 | +| openssl_basic.c:155:43:155:55 | MACAlgorithm | RawName | 855 | openssl_basic.c:155:43:155:55 | openssl_basic.c:155:43:155:55 | | openssl_basic.c:160:39:160:48 | HashAlgorithm | DigestSize | 256 | openssl_basic.c:160:39:160:48 | openssl_basic.c:160:39:160:48 | | openssl_basic.c:160:39:160:48 | HashAlgorithm | Name | SHA2 | openssl_basic.c:160:39:160:48 | openssl_basic.c:160:39:160:48 | | openssl_basic.c:160:39:160:48 | HashAlgorithm | RawName | EVP_sha256 | openssl_basic.c:160:39:160:48 | openssl_basic.c:160:39:160:48 | +| openssl_basic.c:160:59:160:62 | Key | KeyType | Unknown | openssl_basic.c:160:59:160:62 | openssl_basic.c:160:59:160:62 | +| openssl_basic.c:167:9:167:27 | SignOperation | KeyOperationSubtype | Sign | openssl_basic.c:167:9:167:27 | openssl_basic.c:167:9:167:27 | | openssl_basic.c:179:43:179:76 | Constant | Description | 01234567890123456789012345678901 | openssl_basic.c:179:43:179:76 | openssl_basic.c:179:43:179:76 | | openssl_basic.c:180:42:180:59 | Constant | Description | 0123456789012345 | openssl_basic.c:180:42:180:59 | openssl_basic.c:180:42:180:59 | | openssl_basic.c:181:49:181:87 | Constant | Description | This is a test message for encryption | openssl_basic.c:181:49:181:87 | openssl_basic.c:181:49:181:87 | +| openssl_basic.c:218:32:218:33 | Constant | Description | 32 | openssl_basic.c:218:32:218:33 | openssl_basic.c:218:32:218:33 | | openssl_pkey.c:21:10:21:28 | KeyOperationAlgorithm | Name | RSA | openssl_pkey.c:21:10:21:28 | openssl_pkey.c:21:10:21:28 | | openssl_pkey.c:21:10:21:28 | KeyOperationAlgorithm | RawName | RSA_generate_key_ex | openssl_pkey.c:21:10:21:28 | openssl_pkey.c:21:10:21:28 | | openssl_pkey.c:45:49:45:65 | Constant | Description | Hello, OpenSSL! | openssl_pkey.c:45:49:45:65 | openssl_pkey.c:45:49:45:65 | @@ -36,6 +41,16 @@ | openssl_pkey.c:55:30:55:34 | Key | KeyType | Asymmetric | openssl_pkey.c:55:30:55:34 | openssl_pkey.c:55:30:55:34 | | openssl_pkey.c:60:28:60:31 | Key | KeyType | Unknown | openssl_pkey.c:60:28:60:31 | openssl_pkey.c:60:28:60:31 | | openssl_pkey.c:64:9:64:24 | EncryptOperation | KeyOperationSubtype | Encrypt | openssl_pkey.c:64:9:64:24 | openssl_pkey.c:64:9:64:24 | +| openssl_signature.c:80:9:80:21 | SignOperation | KeyOperationSubtype | Sign | openssl_signature.c:80:9:80:21 | openssl_signature.c:80:9:80:21 | +| openssl_signature.c:80:53:80:56 | Key | KeyType | Unknown | openssl_signature.c:80:53:80:56 | openssl_signature.c:80:53:80:56 | +| openssl_signature.c:133:52:133:55 | Key | KeyType | Unknown | openssl_signature.c:133:52:133:55 | openssl_signature.c:133:52:133:55 | +| openssl_signature.c:142:9:142:27 | SignOperation | KeyOperationSubtype | Sign | openssl_signature.c:142:9:142:27 | openssl_signature.c:142:9:142:27 | +| openssl_signature.c:190:57:190:60 | Key | KeyType | Unknown | openssl_signature.c:190:57:190:60 | openssl_signature.c:190:57:190:60 | +| openssl_signature.c:204:9:204:27 | SignOperation | KeyOperationSubtype | Sign | openssl_signature.c:204:9:204:27 | openssl_signature.c:204:9:204:27 | +| openssl_signature.c:260:39:260:42 | Key | KeyType | Unknown | openssl_signature.c:260:39:260:42 | openssl_signature.c:260:39:260:42 | +| openssl_signature.c:270:9:270:21 | SignOperation | KeyOperationSubtype | Sign | openssl_signature.c:270:9:270:21 | openssl_signature.c:270:9:270:21 | +| openssl_signature.c:321:39:321:42 | Key | KeyType | Unknown | openssl_signature.c:321:39:321:42 | openssl_signature.c:321:39:321:42 | +| openssl_signature.c:334:9:334:35 | SignOperation | KeyOperationSubtype | Sign | openssl_signature.c:334:9:334:35 | openssl_signature.c:334:9:334:35 | | openssl_signature.c:521:46:521:66 | PaddingAlgorithm | Name | PSS | openssl_signature.c:521:46:521:66 | openssl_signature.c:521:46:521:66 | | openssl_signature.c:521:46:521:66 | PaddingAlgorithm | RawName | 6 | openssl_signature.c:521:46:521:66 | openssl_signature.c:521:46:521:66 | | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | Name | RSA | openssl_signature.c:543:35:543:46 | openssl_signature.c:543:35:543:46 | diff --git a/cpp/ql/test/experimental/library-tests/quantum/nodes.expected b/cpp/ql/test/experimental/library-tests/quantum/nodes.expected index e5451874eb5..5c3b212b080 100644 --- a/cpp/ql/test/experimental/library-tests/quantum/nodes.expected +++ b/cpp/ql/test/experimental/library-tests/quantum/nodes.expected @@ -22,11 +22,18 @@ | openssl_basic.c:144:24:144:30 | Message | | openssl_basic.c:144:46:144:51 | Digest | | openssl_basic.c:144:67:144:73 | HashAlgorithm | -| openssl_basic.c:155:43:155:55 | Constant | +| openssl_basic.c:155:22:155:41 | Key | +| openssl_basic.c:155:22:155:41 | KeyGeneration | +| openssl_basic.c:155:43:155:55 | MACAlgorithm | | openssl_basic.c:160:39:160:48 | HashAlgorithm | +| openssl_basic.c:160:59:160:62 | Key | +| openssl_basic.c:163:35:163:41 | Message | +| openssl_basic.c:167:9:167:27 | SignOperation | +| openssl_basic.c:167:34:167:36 | SignatureOutput | | openssl_basic.c:179:43:179:76 | Constant | | openssl_basic.c:180:42:180:59 | Constant | | openssl_basic.c:181:49:181:87 | Constant | +| openssl_basic.c:218:32:218:33 | Constant | | openssl_pkey.c:21:10:21:28 | KeyOperationAlgorithm | | openssl_pkey.c:45:49:45:65 | Constant | | openssl_pkey.c:50:31:50:42 | KeyOperationAlgorithm | @@ -40,6 +47,27 @@ | openssl_signature.c:22:34:22:40 | Message | | openssl_signature.c:23:9:23:26 | HashOperation | | openssl_signature.c:23:36:23:41 | Digest | +| openssl_signature.c:70:32:70:38 | Message | +| openssl_signature.c:75:28:75:36 | Message | +| openssl_signature.c:80:9:80:21 | SignOperation | +| openssl_signature.c:80:31:80:40 | SignatureOutput | +| openssl_signature.c:80:53:80:56 | Key | +| openssl_signature.c:133:52:133:55 | Key | +| openssl_signature.c:134:38:134:44 | Message | +| openssl_signature.c:142:9:142:27 | SignOperation | +| openssl_signature.c:142:37:142:46 | SignatureOutput | +| openssl_signature.c:190:57:190:60 | Key | +| openssl_signature.c:196:38:196:44 | Message | +| openssl_signature.c:204:9:204:27 | SignOperation | +| openssl_signature.c:204:37:204:46 | SignatureOutput | +| openssl_signature.c:260:39:260:42 | Key | +| openssl_signature.c:270:9:270:21 | SignOperation | +| openssl_signature.c:270:33:270:42 | SignatureOutput | +| openssl_signature.c:270:60:270:65 | Message | +| openssl_signature.c:321:39:321:42 | Key | +| openssl_signature.c:326:48:326:54 | Message | +| openssl_signature.c:334:9:334:35 | SignOperation | +| openssl_signature.c:334:47:334:56 | SignatureOutput | | openssl_signature.c:521:46:521:66 | PaddingAlgorithm | | openssl_signature.c:543:35:543:46 | KeyOperationAlgorithm | | openssl_signature.c:547:51:547:54 | Constant | From 1882db7d8681f41c7cd63ac08d0a64284ff57c46 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Fri, 13 Jun 2025 12:07:03 -0400 Subject: [PATCH 074/150] Crypto: EVP Signature Operation cleanup. --- .../OpenSSL/Operations/EVPSignatureOperation.qll | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPSignatureOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPSignatureOperation.qll index 9fb0ebc9bb6..a07c5715043 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPSignatureOperation.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPSignatureOperation.qll @@ -79,11 +79,11 @@ class EVP_Signature_Update_Call extends EvpUpdate { * We model output explicit output arguments as predicate to use it in constructors. * The predicate must cover all EVP_Signature_Operation subclasses. */ +pragma[inline] private Expr signatureOperationOutputArg(Call call) { if call.getTarget().getName() = "EVP_SignFinal_ex" then result = call.getArgument(2) else result = call.getArgument(1) - ////*******todo get rid of this predicate */ } /** @@ -94,7 +94,6 @@ abstract class EvpSignatureOperation extends EvpOperation, Crypto::SignatureOper this.(Call).getTarget().getName().matches("EVP_%") and // NULL output argument means the call is to get the size of the signature and such call is not an operation ( - // ******TODO review logic not exists(signatureOperationOutputArg(this).getValue()) or signatureOperationOutputArg(this).getValue() != "0" @@ -182,16 +181,8 @@ class EVP_Signature_Final_Call extends EVPFinal, EvpSignatureOperation { override CtxPointerSource getContext() { result = this.(Call).getArgument(0) } - //***********TODO: the algorithm arg might nto be the right type, can't use the initializer the same way if there - // are two initializers for two different algorithms */ override Expr getAlgorithmArg() { this.getInitCall().(EvpPrimaryAlgorithmInitializer).getAlgorithmArg() = result - // // algorithm specified by the key and the key is provided in this operation - // if this.(Call).getTarget().getName() in ["EVP_SignFinal", "EVP_SignFinal_ex"] - // then result = getAlgorithmFromKey(this.getKeyConsumer().asExpr()) - // else - // // or find algorithm in the initialization call - // result = EVP_Signature_Operation.super.getAlgorithmArg() } override Crypto::ConsumerInputDataFlowNode getKeyConsumer() { From fe1e562f8d2bc9b85ec51f29d3796717f38497c8 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Fri, 13 Jun 2025 18:19:30 +0200 Subject: [PATCH 075/150] CI: fix python version Turns out this is important for the black formatting tool to work correctly. The formatting won't generally change between python versions (it only depends on `black`'s version), but the formatted code needs to be parseable by the system python version. One script uses ```python def foo[T](x: T) -> T: ``` syntax, which is only supported in Python 3.12 and later. Running `pre-commit` will now require a python 3.12 installation (which is already what we mandate for internal developer environment setup). The error in case of absence of such a version is pretty clear though. --- .github/workflows/python-tooling.yml | 3 +++ .pre-commit-config.yaml | 2 ++ misc/scripts/models-as-data/bulk_generate_mad.py | 6 ++---- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.github/workflows/python-tooling.yml b/.github/workflows/python-tooling.yml index 75fdd75299d..19059070878 100644 --- a/.github/workflows/python-tooling.yml +++ b/.github/workflows/python-tooling.yml @@ -22,6 +22,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.12' - uses: pre-commit/action@646c83fcd040023954eafda54b4db0192ce70507 name: Check that python code is properly formatted with: diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index bc07fb78987..ced5d5021ca 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,5 +1,7 @@ # See https://pre-commit.com for more information # See https://pre-commit.com/hooks.html for more hooks +default_language_version: + python: python3.12 repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v3.2.0 diff --git a/misc/scripts/models-as-data/bulk_generate_mad.py b/misc/scripts/models-as-data/bulk_generate_mad.py index a00dc31b05e..91286c52526 100755 --- a/misc/scripts/models-as-data/bulk_generate_mad.py +++ b/misc/scripts/models-as-data/bulk_generate_mad.py @@ -116,9 +116,7 @@ def clone_project(project: Project) -> str: return target_dir -def run_in_parallel[ - T, U -]( +def run_in_parallel[T, U]( func: Callable[[T], U], items: List[T], *, @@ -516,7 +514,7 @@ if __name__ == "__main__": "--dca", type=str, help="Name of a DCA run that built all the projects. Can be repeated, with sources taken from all provided runs, " - "the last provided ones having priority", + "the last provided ones having priority", action="append", ) parser.add_argument( From 4a42ca8c69a2c2682456bf143a8b778276d9ec6b Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Fri, 13 Jun 2025 20:34:35 +0200 Subject: [PATCH 076/150] C++: Limit SEH exception edges to calls in `__try` blocks --- .../raw/internal/TranslatedCall.qll | 2 +- .../library-tests/ir/ir/aliased_ir.expected | 231 +++++++----------- .../test/library-tests/ir/ir/raw_ir.expected | 21 +- 3 files changed, 96 insertions(+), 158 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll index a1d76bb6491..9859f0eab0a 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll @@ -364,7 +364,7 @@ class TranslatedFunctionCall extends TranslatedCallExpr, TranslatedDirectCall { final override predicate mayThrowException(ExceptionEdge e) { this.mustThrowException(e) or - expr.getEnclosingStmt().getParentStmt*() instanceof MicrosoftTryStmt and + exists(MicrosoftTryStmt tryStmt | tryStmt.getStmt().getAChild*() = expr) and e instanceof SehExceptionEdge } diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected index b52912f783e..707f81d1438 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected @@ -39097,18 +39097,10 @@ try_except.c: # 21| v21_3(void) = Call[ProbeFunction] : func:r21_1, 0:r21_2 # 21| m21_4(unknown) = ^CallSideEffect : ~m18_4 # 21| m21_5(unknown) = Chi : total:m18_4, partial:m21_4 -#-----| Goto -> Block 3 -#-----| SEH Exception -> Block 4 - -# 18| Block 1 -# 18| v18_5(void) = AliasedUse : ~m26_8 -# 18| v18_6(void) = ExitFunction : - -# 18| Block 2 -# 18| v18_7(void) = Unwind : #-----| Goto -> Block 1 +#-----| SEH Exception -> Block 2 -# 22| Block 3 +# 22| Block 1 # 22| r22_1(glval) = VariableAddress[y] : # 22| r22_2(int) = Load[y] : &:r22_1, m19_5 # 22| r22_3(glval) = VariableAddress[x] : @@ -39118,24 +39110,21 @@ try_except.c: # 23| v23_3(void) = Call[ProbeFunction] : func:r23_1, 0:r23_2 # 23| m23_4(unknown) = ^CallSideEffect : ~m21_5 # 23| m23_5(unknown) = Chi : total:m21_5, partial:m23_4 -#-----| Goto|SEH Exception -> Block 4 +#-----| Goto|SEH Exception -> Block 2 -# 26| Block 4 -# 26| m26_1(unknown) = Phi : from 0:~m21_5, from 3:~m23_5 -# 26| m26_2(int) = Phi : from 0:m19_2, from 3:m22_4 +# 26| Block 2 +# 26| m26_1(unknown) = Phi : from 0:~m21_5, from 1:~m23_5 +# 26| m26_2(int) = Phi : from 0:m19_2, from 1:m22_4 # 26| r26_3(glval) = FunctionAddress[sink] : # 26| r26_4(glval) = VariableAddress[x] : # 26| r26_5(int) = Load[x] : &:r26_4, m26_2 # 26| v26_6(void) = Call[sink] : func:r26_3, 0:r26_5 # 26| m26_7(unknown) = ^CallSideEffect : ~m26_1 # 26| m26_8(unknown) = Chi : total:m26_1, partial:m26_7 -#-----| Goto -> Block 5 -#-----| SEH Exception -> Block 2 - -# 28| Block 5 -# 28| v28_1(void) = NoOp : -# 18| v18_8(void) = ReturnVoid : -#-----| Goto -> Block 1 +# 28| v28_1(void) = NoOp : +# 18| v18_5(void) = ReturnVoid : +# 18| v18_6(void) = AliasedUse : ~m26_8 +# 18| v18_7(void) = ExitFunction : # 32| void h(int) # 32| Block 0 @@ -39153,66 +39142,57 @@ try_except.c: # 35| r35_3(int) = Constant[0] : # 35| r35_4(bool) = CompareNE : r35_2, r35_3 # 35| v35_5(void) = ConditionalBranch : r35_4 -#-----| False -> Block 8 -#-----| True -> Block 3 +#-----| False -> Block 6 +#-----| True -> Block 1 -# 32| Block 1 -# 32| m32_7(unknown) = Phi : from 2:~m40_6, from 8:~m42_1 -# 32| v32_8(void) = AliasedUse : ~m32_7 -# 32| v32_9(void) = ExitFunction : - -# 32| Block 2 -# 32| v32_10(void) = Unwind : -#-----| Goto -> Block 1 - -# 36| Block 3 +# 36| Block 1 # 36| r36_1(glval) = FunctionAddress[AfxThrowMemoryException] : # 36| v36_2(void) = Call[AfxThrowMemoryException] : func:r36_1 # 36| m36_3(unknown) = ^CallSideEffect : ~m32_4 # 36| m36_4(unknown) = Chi : total:m32_4, partial:m36_3 -#-----| Goto -> Block 8 -#-----| SEH Exception -> Block 6 +#-----| Goto -> Block 6 +#-----| SEH Exception -> Block 4 -# 39| Block 4 +# 39| Block 2 # 39| r39_1(int) = Constant[0] : # 39| r39_2(bool) = CompareEQ : r39_7, r39_1 # 39| v39_3(void) = ConditionalBranch : r39_2 -#-----| False -> Block 5 -#-----| True -> Block 9 +#-----| False -> Block 3 +#-----| True -> Block 7 -# 39| Block 5 +# 39| Block 3 # 39| r39_4(int) = Constant[1] : # 39| r39_5(bool) = CompareEQ : r39_7, r39_4 # 39| v39_6(void) = ConditionalBranch : r39_5 -#-----| False -> Block 9 -#-----| True -> Block 7 +#-----| False -> Block 7 +#-----| True -> Block 5 -# 39| Block 6 +# 39| Block 4 # 39| r39_7(int) = Constant[1] : # 39| r39_8(int) = Constant[-1] : # 39| r39_9(bool) = CompareEQ : r39_7, r39_8 # 39| v39_10(void) = ConditionalBranch : r39_9 -#-----| False -> Block 4 -#-----| True -> Block 9 +#-----| False -> Block 2 +#-----| True -> Block 7 -# 40| Block 7 +# 40| Block 5 # 40| r40_1(glval) = FunctionAddress[sink] : # 40| r40_2(glval) = VariableAddress[x] : # 40| r40_3(int) = Load[x] : &:r40_2, m33_3 # 40| v40_4(void) = Call[sink] : func:r40_1, 0:r40_3 # 40| m40_5(unknown) = ^CallSideEffect : ~m36_4 # 40| m40_6(unknown) = Chi : total:m36_4, partial:m40_5 -#-----| Goto -> Block 8 -#-----| SEH Exception -> Block 2 +#-----| Goto -> Block 6 -# 42| Block 8 -# 42| m42_1(unknown) = Phi : from 0:~m32_4, from 3:~m36_4, from 7:~m40_6 -# 42| v42_2(void) = NoOp : -# 32| v32_11(void) = ReturnVoid : -#-----| Goto -> Block 1 +# 42| Block 6 +# 42| m42_1(unknown) = Phi : from 0:~m32_4, from 1:~m36_4, from 5:~m40_6 +# 42| v42_2(void) = NoOp : +# 32| v32_7(void) = ReturnVoid : +# 32| v32_8(void) = AliasedUse : ~m42_1 +# 32| v32_9(void) = ExitFunction : -# 32| Block 9 -# 32| v32_12(void) = Unreached : +# 32| Block 7 +# 32| v32_10(void) = Unreached : try_except.cpp: # 6| void f_cpp() @@ -39296,18 +39276,10 @@ try_except.cpp: # 21| v21_3(void) = Call[ProbeFunction] : func:r21_1, 0:r21_2 # 21| m21_4(unknown) = ^CallSideEffect : ~m18_4 # 21| m21_5(unknown) = Chi : total:m18_4, partial:m21_4 -#-----| Goto -> Block 3 -#-----| SEH Exception -> Block 4 - -# 18| Block 1 -# 18| v18_5(void) = AliasedUse : ~m26_8 -# 18| v18_6(void) = ExitFunction : - -# 18| Block 2 -# 18| v18_7(void) = Unwind : #-----| Goto -> Block 1 +#-----| SEH Exception -> Block 2 -# 22| Block 3 +# 22| Block 1 # 22| r22_1(glval) = VariableAddress[y] : # 22| r22_2(int) = Load[y] : &:r22_1, m19_5 # 22| r22_3(glval) = VariableAddress[x] : @@ -39317,24 +39289,21 @@ try_except.cpp: # 23| v23_3(void) = Call[ProbeFunction] : func:r23_1, 0:r23_2 # 23| m23_4(unknown) = ^CallSideEffect : ~m21_5 # 23| m23_5(unknown) = Chi : total:m21_5, partial:m23_4 -#-----| Goto|SEH Exception -> Block 4 +#-----| Goto|SEH Exception -> Block 2 -# 26| Block 4 -# 26| m26_1(unknown) = Phi : from 0:~m21_5, from 3:~m23_5 -# 26| m26_2(int) = Phi : from 0:m19_2, from 3:m22_4 +# 26| Block 2 +# 26| m26_1(unknown) = Phi : from 0:~m21_5, from 1:~m23_5 +# 26| m26_2(int) = Phi : from 0:m19_2, from 1:m22_4 # 26| r26_3(glval) = FunctionAddress[sink] : # 26| r26_4(glval) = VariableAddress[x] : # 26| r26_5(int) = Load[x] : &:r26_4, m26_2 # 26| v26_6(void) = Call[sink] : func:r26_3, 0:r26_5 # 26| m26_7(unknown) = ^CallSideEffect : ~m26_1 # 26| m26_8(unknown) = Chi : total:m26_1, partial:m26_7 -#-----| Goto -> Block 5 -#-----| SEH Exception -> Block 2 - -# 28| Block 5 -# 28| v28_1(void) = NoOp : -# 18| v18_8(void) = ReturnVoid : -#-----| Goto -> Block 1 +# 28| v28_1(void) = NoOp : +# 18| v18_5(void) = ReturnVoid : +# 18| v18_6(void) = AliasedUse : ~m26_8 +# 18| v18_7(void) = ExitFunction : # 32| void h_cpp(int) # 32| Block 0 @@ -39352,66 +39321,57 @@ try_except.cpp: # 35| r35_3(int) = Constant[0] : # 35| r35_4(bool) = CompareNE : r35_2, r35_3 # 35| v35_5(void) = ConditionalBranch : r35_4 -#-----| False -> Block 8 -#-----| True -> Block 3 +#-----| False -> Block 6 +#-----| True -> Block 1 -# 32| Block 1 -# 32| m32_7(unknown) = Phi : from 2:~m40_6, from 8:~m42_1 -# 32| v32_8(void) = AliasedUse : ~m32_7 -# 32| v32_9(void) = ExitFunction : - -# 32| Block 2 -# 32| v32_10(void) = Unwind : -#-----| Goto -> Block 1 - -# 36| Block 3 +# 36| Block 1 # 36| r36_1(glval) = FunctionAddress[AfxThrowMemoryException] : # 36| v36_2(void) = Call[AfxThrowMemoryException] : func:r36_1 # 36| m36_3(unknown) = ^CallSideEffect : ~m32_4 # 36| m36_4(unknown) = Chi : total:m32_4, partial:m36_3 -#-----| Goto -> Block 8 -#-----| SEH Exception -> Block 6 +#-----| Goto -> Block 6 +#-----| SEH Exception -> Block 4 -# 39| Block 4 +# 39| Block 2 # 39| r39_1(int) = Constant[0] : # 39| r39_2(bool) = CompareEQ : r39_7, r39_1 # 39| v39_3(void) = ConditionalBranch : r39_2 -#-----| False -> Block 5 -#-----| True -> Block 9 +#-----| False -> Block 3 +#-----| True -> Block 7 -# 39| Block 5 +# 39| Block 3 # 39| r39_4(int) = Constant[1] : # 39| r39_5(bool) = CompareEQ : r39_7, r39_4 # 39| v39_6(void) = ConditionalBranch : r39_5 -#-----| False -> Block 9 -#-----| True -> Block 7 +#-----| False -> Block 7 +#-----| True -> Block 5 -# 39| Block 6 +# 39| Block 4 # 39| r39_7(int) = Constant[1] : # 39| r39_8(int) = Constant[-1] : # 39| r39_9(bool) = CompareEQ : r39_7, r39_8 # 39| v39_10(void) = ConditionalBranch : r39_9 -#-----| False -> Block 4 -#-----| True -> Block 9 +#-----| False -> Block 2 +#-----| True -> Block 7 -# 40| Block 7 +# 40| Block 5 # 40| r40_1(glval) = FunctionAddress[sink] : # 40| r40_2(glval) = VariableAddress[x] : # 40| r40_3(int) = Load[x] : &:r40_2, m33_3 # 40| v40_4(void) = Call[sink] : func:r40_1, 0:r40_3 # 40| m40_5(unknown) = ^CallSideEffect : ~m36_4 # 40| m40_6(unknown) = Chi : total:m36_4, partial:m40_5 -#-----| Goto -> Block 8 -#-----| SEH Exception -> Block 2 +#-----| Goto -> Block 6 -# 42| Block 8 -# 42| m42_1(unknown) = Phi : from 0:~m32_4, from 3:~m36_4, from 7:~m40_6 -# 42| v42_2(void) = NoOp : -# 32| v32_11(void) = ReturnVoid : -#-----| Goto -> Block 1 +# 42| Block 6 +# 42| m42_1(unknown) = Phi : from 0:~m32_4, from 1:~m36_4, from 5:~m40_6 +# 42| v42_2(void) = NoOp : +# 32| v32_7(void) = ReturnVoid : +# 32| v32_8(void) = AliasedUse : ~m42_1 +# 32| v32_9(void) = ExitFunction : -# 32| Block 9 -# 32| v32_12(void) = Unreached : +# 32| Block 7 +# 32| v32_10(void) = Unreached : # 44| void throw_cpp(int) # 44| Block 0 @@ -39429,62 +39389,53 @@ try_except.cpp: # 47| r47_3(int) = Constant[0] : # 47| r47_4(bool) = CompareNE : r47_2, r47_3 # 47| v47_5(void) = ConditionalBranch : r47_4 -#-----| False -> Block 8 -#-----| True -> Block 3 +#-----| False -> Block 6 +#-----| True -> Block 1 -# 44| Block 1 -# 44| m44_7(unknown) = Phi : from 2:~m52_6, from 8:~m54_1 -# 44| v44_8(void) = AliasedUse : ~m44_7 -# 44| v44_9(void) = ExitFunction : - -# 44| Block 2 -# 44| v44_10(void) = Unwind : -#-----| Goto -> Block 1 - -# 48| Block 3 +# 48| Block 1 # 48| r48_1(glval) = VariableAddress[#throw48:13] : # 48| r48_2(int) = Constant[1] : # 48| m48_3(int) = Store[#throw48:13] : &:r48_1, r48_2 # 48| v48_4(void) = ThrowValue : &:r48_1, m48_3 -#-----| C++ Exception -> Block 6 +#-----| C++ Exception -> Block 4 -# 51| Block 4 +# 51| Block 2 # 51| r51_1(int) = Constant[0] : # 51| r51_2(bool) = CompareEQ : r51_7, r51_1 # 51| v51_3(void) = ConditionalBranch : r51_2 -#-----| False -> Block 5 -#-----| True -> Block 9 +#-----| False -> Block 3 +#-----| True -> Block 7 -# 51| Block 5 +# 51| Block 3 # 51| r51_4(int) = Constant[1] : # 51| r51_5(bool) = CompareEQ : r51_7, r51_4 # 51| v51_6(void) = ConditionalBranch : r51_5 -#-----| False -> Block 9 -#-----| True -> Block 7 +#-----| False -> Block 7 +#-----| True -> Block 5 -# 51| Block 6 +# 51| Block 4 # 51| r51_7(int) = Constant[1] : # 51| r51_8(int) = Constant[-1] : # 51| r51_9(bool) = CompareEQ : r51_7, r51_8 # 51| v51_10(void) = ConditionalBranch : r51_9 -#-----| False -> Block 4 -#-----| True -> Block 9 +#-----| False -> Block 2 +#-----| True -> Block 7 -# 52| Block 7 +# 52| Block 5 # 52| r52_1(glval) = FunctionAddress[sink] : # 52| r52_2(glval) = VariableAddress[x] : # 52| r52_3(int) = Load[x] : &:r52_2, m45_3 # 52| v52_4(void) = Call[sink] : func:r52_1, 0:r52_3 # 52| m52_5(unknown) = ^CallSideEffect : ~m44_4 # 52| m52_6(unknown) = Chi : total:m44_4, partial:m52_5 -#-----| Goto -> Block 8 -#-----| SEH Exception -> Block 2 +#-----| Goto -> Block 6 -# 54| Block 8 -# 54| m54_1(unknown) = Phi : from 0:~m44_4, from 7:~m52_6 -# 54| v54_2(void) = NoOp : -# 44| v44_11(void) = ReturnVoid : -#-----| Goto -> Block 1 +# 54| Block 6 +# 54| m54_1(unknown) = Phi : from 0:~m44_4, from 5:~m52_6 +# 54| v54_2(void) = NoOp : +# 44| v44_7(void) = ReturnVoid : +# 44| v44_8(void) = AliasedUse : ~m54_1 +# 44| v44_9(void) = ExitFunction : -# 44| Block 9 -# 44| v44_12(void) = Unreached : +# 44| Block 7 +# 44| v44_10(void) = Unreached : diff --git a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected index ce9de06c34b..dec67c41f71 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -37351,7 +37351,6 @@ try_except.c: # 14| v14_4(void) = Call[sink] : func:r14_1, 0:r14_3 # 14| mu14_5(unknown) = ^CallSideEffect : ~m? #-----| Goto -> Block 8 -#-----| SEH Exception -> Block 2 # 16| Block 8 # 16| v16_1(void) = NoOp : @@ -37400,12 +37399,8 @@ try_except.c: # 26| r26_3(int) = Load[x] : &:r26_2, ~m? # 26| v26_4(void) = Call[sink] : func:r26_1, 0:r26_3 # 26| mu26_5(unknown) = ^CallSideEffect : ~m? -#-----| Goto -> Block 5 -#-----| SEH Exception -> Block 2 - -# 28| Block 5 -# 28| v28_1(void) = NoOp : -# 18| v18_7(void) = ReturnVoid : +# 28| v28_1(void) = NoOp : +# 18| v18_7(void) = ReturnVoid : #-----| Goto -> Block 1 # 32| void h(int) @@ -37469,7 +37464,6 @@ try_except.c: # 40| v40_4(void) = Call[sink] : func:r40_1, 0:r40_3 # 40| mu40_5(unknown) = ^CallSideEffect : ~m? #-----| Goto -> Block 8 -#-----| SEH Exception -> Block 2 # 42| Block 8 # 42| v42_1(void) = NoOp : @@ -37542,7 +37536,6 @@ try_except.cpp: # 14| v14_4(void) = Call[sink] : func:r14_1, 0:r14_3 # 14| mu14_5(unknown) = ^CallSideEffect : ~m? #-----| Goto -> Block 8 -#-----| SEH Exception -> Block 2 # 16| Block 8 # 16| v16_1(void) = NoOp : @@ -37591,12 +37584,8 @@ try_except.cpp: # 26| r26_3(int) = Load[x] : &:r26_2, ~m? # 26| v26_4(void) = Call[sink] : func:r26_1, 0:r26_3 # 26| mu26_5(unknown) = ^CallSideEffect : ~m? -#-----| Goto -> Block 5 -#-----| SEH Exception -> Block 2 - -# 28| Block 5 -# 28| v28_1(void) = NoOp : -# 18| v18_7(void) = ReturnVoid : +# 28| v28_1(void) = NoOp : +# 18| v18_7(void) = ReturnVoid : #-----| Goto -> Block 1 # 32| void h_cpp(int) @@ -37660,7 +37649,6 @@ try_except.cpp: # 40| v40_4(void) = Call[sink] : func:r40_1, 0:r40_3 # 40| mu40_5(unknown) = ^CallSideEffect : ~m? #-----| Goto -> Block 8 -#-----| SEH Exception -> Block 2 # 42| Block 8 # 42| v42_1(void) = NoOp : @@ -37728,7 +37716,6 @@ try_except.cpp: # 52| v52_4(void) = Call[sink] : func:r52_1, 0:r52_3 # 52| mu52_5(unknown) = ^CallSideEffect : ~m? #-----| Goto -> Block 8 -#-----| SEH Exception -> Block 2 # 54| Block 8 # 54| v54_1(void) = NoOp : From 815ae37a7e3934905a0dccd78fc21eb8f7d14e3c Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Sat, 14 Jun 2025 00:05:00 +0200 Subject: [PATCH 077/150] C++: Add test case with call in initialization Fix formatting while here. --- .../library-tests/ir/ir/PrintAST.expected | 37 ++++++++++ .../library-tests/ir/ir/aliased_ir.expected | 33 +++++++-- .../ir/ir/raw_consistency.expected | 2 + .../test/library-tests/ir/ir/raw_ir.expected | 67 +++++++++++++++++-- cpp/ql/test/library-tests/ir/ir/try_except.c | 28 +++++--- .../test/library-tests/ir/ir/try_except.cpp | 28 ++++---- 6 files changed, 165 insertions(+), 30 deletions(-) diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index b9ffaf71656..bde0ac73675 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -49652,6 +49652,43 @@ try_except.c: # 40| Type = [IntType] int # 40| ValueCategory = prvalue(load) # 42| getStmt(2): [ReturnStmt] return ... +# 44| [TopLevelFunction] int i() +# 44| : +# 46| [TopLevelFunction] void j(int) +# 46| : +# 46| getParameter(0): [Parameter] b +# 46| Type = [IntType] int +# 46| getEntryPoint(): [BlockStmt] { ... } +# 47| getStmt(0): [DeclStmt] declaration +# 47| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 47| Type = [IntType] int +# 47| getVariable().getInitializer(): [Initializer] initializer for x +# 47| getExpr(): [Literal] 0 +# 47| Type = [IntType] int +# 47| Value = [Literal] 0 +# 47| ValueCategory = prvalue +# 48| getStmt(1): [MicrosoftTryExceptStmt] __try { ... } __except( ... ) { ... } +# 48| getStmt(): [BlockStmt] { ... } +# 49| getStmt(0): [DeclStmt] declaration +# 49| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 49| Type = [IntType] int +# 49| getVariable().getInitializer(): [Initializer] initializer for y +# 49| getExpr(): [FunctionCall] call to i +# 49| Type = [IntType] int +# 49| ValueCategory = prvalue +# 51| getCondition(): [Literal] 1 +# 51| Type = [IntType] int +# 51| Value = [Literal] 1 +# 51| ValueCategory = prvalue +# 51| getExcept(): [BlockStmt] { ... } +# 52| getStmt(0): [ExprStmt] ExprStmt +# 52| getExpr(): [FunctionCall] call to sink +# 52| Type = [VoidType] void +# 52| ValueCategory = prvalue +# 52| getArgument(0): [VariableAccess] x +# 52| Type = [IntType] int +# 52| ValueCategory = prvalue(load) +# 54| getStmt(2): [ReturnStmt] return ... try_except.cpp: # 3| [TopLevelFunction] void ProbeFunction() # 3| : diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected index 707f81d1438..3062676daa1 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected @@ -39194,6 +39194,31 @@ try_except.c: # 32| Block 7 # 32| v32_10(void) = Unreached : +# 46| void j(int) +# 46| Block 0 +# 46| v46_1(void) = EnterFunction : +# 46| m46_2(unknown) = AliasedDefinition : +# 46| m46_3(unknown) = InitializeNonLocal : +# 46| m46_4(unknown) = Chi : total:m46_2, partial:m46_3 +# 46| r46_5(glval) = VariableAddress[b] : +# 46| m46_6(int) = InitializeParameter[b] : &:r46_5 +# 47| r47_1(glval) = VariableAddress[x] : +# 47| r47_2(int) = Constant[0] : +# 47| m47_3(int) = Store[x] : &:r47_1, r47_2 +# 49| r49_1(glval) = VariableAddress[y] : +# 49| r49_2(glval) = FunctionAddress[i] : +# 49| r49_3(int) = Call[i] : func:r49_2 +# 49| m49_4(unknown) = ^CallSideEffect : ~m46_4 +# 49| m49_5(unknown) = Chi : total:m46_4, partial:m49_4 +# 49| m49_6(int) = Store[y] : &:r49_1, r49_3 +# 54| v54_1(void) = NoOp : +# 46| v46_7(void) = ReturnVoid : +# 46| v46_8(void) = AliasedUse : ~m49_5 +# 46| v46_9(void) = ExitFunction : + +# 46| Block 1 +# 46| v46_10(void) = Unreached : + try_except.cpp: # 6| void f_cpp() # 6| Block 0 @@ -39393,10 +39418,10 @@ try_except.cpp: #-----| True -> Block 1 # 48| Block 1 -# 48| r48_1(glval) = VariableAddress[#throw48:13] : -# 48| r48_2(int) = Constant[1] : -# 48| m48_3(int) = Store[#throw48:13] : &:r48_1, r48_2 -# 48| v48_4(void) = ThrowValue : &:r48_1, m48_3 +# 48| r48_1(glval) = VariableAddress[#throw48:7] : +# 48| r48_2(int) = Constant[1] : +# 48| m48_3(int) = Store[#throw48:7] : &:r48_1, r48_2 +# 48| v48_4(void) = ThrowValue : &:r48_1, m48_3 #-----| C++ Exception -> Block 4 # 51| Block 2 diff --git a/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected b/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected index e30106d3520..7c4038e8ef4 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected @@ -21,6 +21,8 @@ lostReachability backEdgeCountMismatch useNotDominatedByDefinition | ir.cpp:1535:8:1535:8 | Unary | Operand 'Unary' is not dominated by its definition in function '$@'. | ir.cpp:1535:8:1535:8 | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() | +| try_except.c:51:13:51:13 | Left | Operand 'Left' is not dominated by its definition in function '$@'. | try_except.c:46:6:46:6 | void j(int) | void j(int) | +| try_except.c:51:13:51:13 | Left | Operand 'Left' is not dominated by its definition in function '$@'. | try_except.c:46:6:46:6 | void j(int) | void j(int) | switchInstructionWithoutDefaultEdge notMarkedAsConflated wronglyMarkedAsConflated diff --git a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected index dec67c41f71..6e1bd39b20a 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -37470,6 +37470,65 @@ try_except.c: # 32| v32_9(void) = ReturnVoid : #-----| Goto -> Block 1 +# 46| void j(int) +# 46| Block 0 +# 46| v46_1(void) = EnterFunction : +# 46| mu46_2(unknown) = AliasedDefinition : +# 46| mu46_3(unknown) = InitializeNonLocal : +# 46| r46_4(glval) = VariableAddress[b] : +# 46| mu46_5(int) = InitializeParameter[b] : &:r46_4 +# 47| r47_1(glval) = VariableAddress[x] : +# 47| r47_2(int) = Constant[0] : +# 47| mu47_3(int) = Store[x] : &:r47_1, r47_2 +# 49| r49_1(glval) = VariableAddress[y] : +# 49| r49_2(glval) = FunctionAddress[i] : +# 49| r49_3(int) = Call[i] : func:r49_2 +# 49| mu49_4(unknown) = ^CallSideEffect : ~m? +# 49| mu49_5(int) = Store[y] : &:r49_1, r49_3 +#-----| Goto -> Block 7 + +# 46| Block 1 +# 46| v46_6(void) = AliasedUse : ~m? +# 46| v46_7(void) = ExitFunction : + +# 46| Block 2 +# 46| v46_8(void) = Unwind : +#-----| Goto -> Block 1 + +# 51| Block 3 +# 51| r51_1(int) = Constant[0] : +# 51| r51_2(bool) = CompareEQ : r51_7, r51_1 +# 51| v51_3(void) = ConditionalBranch : r51_2 +#-----| False -> Block 4 +#-----| True -> Block 2 + +# 51| Block 4 +# 51| r51_4(int) = Constant[1] : +# 51| r51_5(bool) = CompareEQ : r51_7, r51_4 +# 51| v51_6(void) = ConditionalBranch : r51_5 +#-----| True -> Block 6 + +# 51| Block 5 +# 51| r51_7(int) = Constant[1] : +# 51| r51_8(int) = Constant[-1] : +# 51| r51_9(bool) = CompareEQ : r51_7, r51_8 +# 51| v51_10(void) = ConditionalBranch : r51_9 +#-----| False -> Block 3 +#-----| True -> Block 2 + +# 52| Block 6 +# 52| r52_1(glval) = FunctionAddress[sink] : +# 52| r52_2(glval) = VariableAddress[x] : +# 52| r52_3(int) = Load[x] : &:r52_2, ~m? +# 52| v52_4(void) = Call[sink] : func:r52_1, 0:r52_3 +# 52| mu52_5(unknown) = ^CallSideEffect : ~m? +#-----| Goto -> Block 7 + +# 54| Block 7 +# 54| v54_1(void) = NoOp : +# 46| v46_9(void) = ReturnVoid : +#-----| Goto -> Block 1 + try_except.cpp: # 6| void f_cpp() # 6| Block 0 @@ -37682,10 +37741,10 @@ try_except.cpp: #-----| Goto -> Block 1 # 48| Block 3 -# 48| r48_1(glval) = VariableAddress[#throw48:13] : -# 48| r48_2(int) = Constant[1] : -# 48| mu48_3(int) = Store[#throw48:13] : &:r48_1, r48_2 -# 48| v48_4(void) = ThrowValue : &:r48_1, ~m? +# 48| r48_1(glval) = VariableAddress[#throw48:7] : +# 48| r48_2(int) = Constant[1] : +# 48| mu48_3(int) = Store[#throw48:7] : &:r48_1, r48_2 +# 48| v48_4(void) = ThrowValue : &:r48_1, ~m? #-----| C++ Exception -> Block 6 # 51| Block 4 diff --git a/cpp/ql/test/library-tests/ir/ir/try_except.c b/cpp/ql/test/library-tests/ir/ir/try_except.c index 410068dae5e..48f3227bf07 100644 --- a/cpp/ql/test/library-tests/ir/ir/try_except.c +++ b/cpp/ql/test/library-tests/ir/ir/try_except.c @@ -31,12 +31,24 @@ void AfxThrowMemoryException(); void h(int b) { int x = 0; - __try { - if (b) { - AfxThrowMemoryException(); - } + __try { + if (b) { + AfxThrowMemoryException(); } - __except (1) { - sink(x); - } -} \ No newline at end of file + } + __except (1) { + sink(x); + } +} + +int i(); + +void j(int b) { + int x = 0; + __try { + int y = i(); + } + __except (1) { + sink(x); + } +} diff --git a/cpp/ql/test/library-tests/ir/ir/try_except.cpp b/cpp/ql/test/library-tests/ir/ir/try_except.cpp index 9bf297263b7..d1e33de0ba0 100644 --- a/cpp/ql/test/library-tests/ir/ir/try_except.cpp +++ b/cpp/ql/test/library-tests/ir/ir/try_except.cpp @@ -31,24 +31,24 @@ void AfxThrowMemoryException(); void h_cpp(int b) { int x = 0; - __try { - if (b) { - AfxThrowMemoryException(); - } - } - __except (1) { - sink(x); + __try { + if (b) { + AfxThrowMemoryException(); } + } + __except (1) { + sink(x); + } } void throw_cpp(int b) { int x = 0; - __try { - if (b) { - throw 1; - } - } - __except (1) { - sink(x); + __try { + if (b) { + throw 1; } + } + __except (1) { + sink(x); + } } From 1b2813dcf6c8ed158b484c58427dd935f588da69 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Sat, 14 Jun 2025 00:16:47 +0200 Subject: [PATCH 078/150] C++: Also generate an SEH edge for calls in initializers --- .../raw/internal/TranslatedCall.qll | 2 +- .../library-tests/ir/ir/aliased_ir.expected | 51 ++++++++++++++++--- .../ir/ir/raw_consistency.expected | 2 - .../test/library-tests/ir/ir/raw_ir.expected | 26 ++++++---- 4 files changed, 61 insertions(+), 20 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll index 9859f0eab0a..db46f6807cd 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll @@ -364,7 +364,7 @@ class TranslatedFunctionCall extends TranslatedCallExpr, TranslatedDirectCall { final override predicate mayThrowException(ExceptionEdge e) { this.mustThrowException(e) or - exists(MicrosoftTryStmt tryStmt | tryStmt.getStmt().getAChild*() = expr) and + exists(MicrosoftTryStmt tryStmt | tryStmt.getStmt() = expr.getEnclosingStmt().getParent*()) and e instanceof SehExceptionEdge } diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected index 3062676daa1..4f35e4f6209 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected @@ -39210,13 +39210,52 @@ try_except.c: # 49| r49_3(int) = Call[i] : func:r49_2 # 49| m49_4(unknown) = ^CallSideEffect : ~m46_4 # 49| m49_5(unknown) = Chi : total:m46_4, partial:m49_4 -# 49| m49_6(int) = Store[y] : &:r49_1, r49_3 -# 54| v54_1(void) = NoOp : -# 46| v46_7(void) = ReturnVoid : -# 46| v46_8(void) = AliasedUse : ~m49_5 -# 46| v46_9(void) = ExitFunction : +#-----| Goto -> Block 1 +#-----| SEH Exception -> Block 4 -# 46| Block 1 +# 49| Block 1 +# 49| m49_6(int) = Store[y] : &:r49_1, r49_3 +#-----| Goto -> Block 6 + +# 51| Block 2 +# 51| r51_1(int) = Constant[0] : +# 51| r51_2(bool) = CompareEQ : r51_7, r51_1 +# 51| v51_3(void) = ConditionalBranch : r51_2 +#-----| False -> Block 3 +#-----| True -> Block 7 + +# 51| Block 3 +# 51| r51_4(int) = Constant[1] : +# 51| r51_5(bool) = CompareEQ : r51_7, r51_4 +# 51| v51_6(void) = ConditionalBranch : r51_5 +#-----| False -> Block 7 +#-----| True -> Block 5 + +# 51| Block 4 +# 51| r51_7(int) = Constant[1] : +# 51| r51_8(int) = Constant[-1] : +# 51| r51_9(bool) = CompareEQ : r51_7, r51_8 +# 51| v51_10(void) = ConditionalBranch : r51_9 +#-----| False -> Block 2 +#-----| True -> Block 7 + +# 52| Block 5 +# 52| r52_1(glval) = FunctionAddress[sink] : +# 52| r52_2(glval) = VariableAddress[x] : +# 52| r52_3(int) = Load[x] : &:r52_2, m47_3 +# 52| v52_4(void) = Call[sink] : func:r52_1, 0:r52_3 +# 52| m52_5(unknown) = ^CallSideEffect : ~m49_5 +# 52| m52_6(unknown) = Chi : total:m49_5, partial:m52_5 +#-----| Goto -> Block 6 + +# 54| Block 6 +# 54| m54_1(unknown) = Phi : from 1:~m49_5, from 5:~m52_6 +# 54| v54_2(void) = NoOp : +# 46| v46_7(void) = ReturnVoid : +# 46| v46_8(void) = AliasedUse : ~m54_1 +# 46| v46_9(void) = ExitFunction : + +# 46| Block 7 # 46| v46_10(void) = Unreached : try_except.cpp: diff --git a/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected b/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected index 7c4038e8ef4..e30106d3520 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected @@ -21,8 +21,6 @@ lostReachability backEdgeCountMismatch useNotDominatedByDefinition | ir.cpp:1535:8:1535:8 | Unary | Operand 'Unary' is not dominated by its definition in function '$@'. | ir.cpp:1535:8:1535:8 | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() | -| try_except.c:51:13:51:13 | Left | Operand 'Left' is not dominated by its definition in function '$@'. | try_except.c:46:6:46:6 | void j(int) | void j(int) | -| try_except.c:51:13:51:13 | Left | Operand 'Left' is not dominated by its definition in function '$@'. | try_except.c:46:6:46:6 | void j(int) | void j(int) | switchInstructionWithoutDefaultEdge notMarkedAsConflated wronglyMarkedAsConflated diff --git a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected index 6e1bd39b20a..26b6d8a1817 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -37484,8 +37484,8 @@ try_except.c: # 49| r49_2(glval) = FunctionAddress[i] : # 49| r49_3(int) = Call[i] : func:r49_2 # 49| mu49_4(unknown) = ^CallSideEffect : ~m? -# 49| mu49_5(int) = Store[y] : &:r49_1, r49_3 -#-----| Goto -> Block 7 +#-----| Goto -> Block 3 +#-----| SEH Exception -> Block 6 # 46| Block 1 # 46| v46_6(void) = AliasedUse : ~m? @@ -37495,36 +37495,40 @@ try_except.c: # 46| v46_8(void) = Unwind : #-----| Goto -> Block 1 -# 51| Block 3 +# 49| Block 3 +# 49| mu49_5(int) = Store[y] : &:r49_1, r49_3 +#-----| Goto -> Block 8 + +# 51| Block 4 # 51| r51_1(int) = Constant[0] : # 51| r51_2(bool) = CompareEQ : r51_7, r51_1 # 51| v51_3(void) = ConditionalBranch : r51_2 -#-----| False -> Block 4 +#-----| False -> Block 5 #-----| True -> Block 2 -# 51| Block 4 +# 51| Block 5 # 51| r51_4(int) = Constant[1] : # 51| r51_5(bool) = CompareEQ : r51_7, r51_4 # 51| v51_6(void) = ConditionalBranch : r51_5 -#-----| True -> Block 6 +#-----| True -> Block 7 -# 51| Block 5 +# 51| Block 6 # 51| r51_7(int) = Constant[1] : # 51| r51_8(int) = Constant[-1] : # 51| r51_9(bool) = CompareEQ : r51_7, r51_8 # 51| v51_10(void) = ConditionalBranch : r51_9 -#-----| False -> Block 3 +#-----| False -> Block 4 #-----| True -> Block 2 -# 52| Block 6 +# 52| Block 7 # 52| r52_1(glval) = FunctionAddress[sink] : # 52| r52_2(glval) = VariableAddress[x] : # 52| r52_3(int) = Load[x] : &:r52_2, ~m? # 52| v52_4(void) = Call[sink] : func:r52_1, 0:r52_3 # 52| mu52_5(unknown) = ^CallSideEffect : ~m? -#-----| Goto -> Block 7 +#-----| Goto -> Block 8 -# 54| Block 7 +# 54| Block 8 # 54| v54_1(void) = NoOp : # 46| v46_9(void) = ReturnVoid : #-----| Goto -> Block 1 From a96ea182c7cf72c9209a34e95826ce1c4d3969c4 Mon Sep 17 00:00:00 2001 From: Napalys Klicius Date: Mon, 16 Jun 2025 09:30:40 +0200 Subject: [PATCH 079/150] JS: add test cases for `serialize-javascript` with tainted object properties --- .../Security/CWE-079/ReflectedXss/tst2.js | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/tst2.js b/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/tst2.js index 66074333884..20149bea1e7 100644 --- a/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/tst2.js +++ b/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/tst2.js @@ -87,4 +87,28 @@ app.get('/baz', function(req, res) { res.send(p); // $ Alert res.send(other.p); // $ Alert -}); \ No newline at end of file +}); + +app.get('/baz', function(req, res) { + let { p } = req.params; // $ MISSING: Source + + var serialized = serializeJavaScript(p); + + res.send(serialized); + + var unsafe = serializeJavaScript({someProperty: p}, {unsafe: true}); + + res.send(unsafe); // $ MISSING: Alert +}); + +app.get('/baz', function(req, res) { + let { p } = req.params; // $ MISSING: Source + + var serialized = serializeJavaScript(p); + + res.send(serialized); + let obj = {someProperty: p}; + var unsafe = serializeJavaScript(obj, {unsafe: true}); + + res.send(unsafe); // $ MISSING: Alert +}); From 1425bb8b087a3c7e45246260a7a36827343cc2e6 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Fri, 13 Jun 2025 14:18:37 +0200 Subject: [PATCH 080/150] Rust: Add type inference tests with default for type parameters --- .../test/library-tests/type-inference/main.rs | 27 +- .../type-inference/type-inference.expected | 5288 +++++++++-------- 2 files changed, 2675 insertions(+), 2640 deletions(-) diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index 0d5c377b0dc..4acc2c14f3f 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -14,7 +14,7 @@ mod field_access { } #[derive(Debug)] - struct GenericThing { + struct GenericThing { a: A, } @@ -27,6 +27,11 @@ mod field_access { println!("{:?}", x.a); // $ fieldof=MyThing } + fn default_field_access(x: GenericThing) { + let a = x.a; // $ fieldof=GenericThing MISSING: type=a:bool + println!("{:?}", a); + } + fn generic_field_access() { // Explicit type argument let x = GenericThing:: { a: S }; // $ type=x:A.S @@ -472,7 +477,7 @@ mod type_parameter_bounds { println!("{:?}", s); // $ type=s:S1 } - trait Pair { + trait Pair { fn fst(self) -> P1; fn snd(self) -> P2; @@ -480,8 +485,8 @@ mod type_parameter_bounds { fn call_trait_per_bound_with_type_1>(x: T, y: T) { // The type in the type parameter bound determines the return type. - let s1 = x.fst(); // $ method=fst - let s2 = y.snd(); // $ method=snd + let s1 = x.fst(); // $ method=fst type=s1:S1 + let s2 = y.snd(); // $ method=snd type=s2:S2 println!("{:?}, {:?}", s1, s2); } @@ -491,6 +496,20 @@ mod type_parameter_bounds { let s2 = y.snd(); // $ method=snd println!("{:?}, {:?}", s1, s2); } + + fn call_trait_per_bound_with_type_3(x: T, y: T) { + // The type in the type parameter bound determines the return type. + let s1 = x.fst(); // $ method=fst MISSING: type=s1:bool + let s2 = y.snd(); // $ method=snd MISSING: type=s2:i64 + println!("{:?}, {:?}", s1, s2); + } + + fn call_trait_per_bound_with_type_4>(x: T, y: T) { + // The type in the type parameter bound determines the return type. + let s1 = x.fst(); // $ method=fst type=s1:u8 + let s2 = y.snd(); // $ method=snd MISSING: type=s2:i64 + println!("{:?}, {:?}", s1, s2); + } } mod function_trait_bounds { diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index 21f5ec0d466..7323d621e28 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -8,2657 +8,2673 @@ inferType | main.rs:27:18:27:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:27:26:27:26 | x | | main.rs:5:5:8:5 | MyThing | | main.rs:27:26:27:28 | x.a | | main.rs:2:5:3:13 | S | -| main.rs:32:13:32:13 | x | | main.rs:16:5:19:5 | GenericThing | -| main.rs:32:13:32:13 | x | A | main.rs:2:5:3:13 | S | -| main.rs:32:17:32:42 | GenericThing::<...> {...} | | main.rs:16:5:19:5 | GenericThing | -| main.rs:32:17:32:42 | GenericThing::<...> {...} | A | main.rs:2:5:3:13 | S | -| main.rs:32:40:32:40 | S | | main.rs:2:5:3:13 | S | -| main.rs:33:18:33:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:33:26:33:26 | x | | main.rs:16:5:19:5 | GenericThing | -| main.rs:33:26:33:26 | x | A | main.rs:2:5:3:13 | S | -| main.rs:33:26:33:28 | x.a | | main.rs:2:5:3:13 | S | -| main.rs:36:13:36:13 | y | | main.rs:16:5:19:5 | GenericThing | -| main.rs:36:13:36:13 | y | A | main.rs:2:5:3:13 | S | -| main.rs:36:17:36:37 | GenericThing {...} | | main.rs:16:5:19:5 | GenericThing | -| main.rs:36:17:36:37 | GenericThing {...} | A | main.rs:2:5:3:13 | S | -| main.rs:36:35:36:35 | S | | main.rs:2:5:3:13 | S | -| main.rs:37:18:37:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:37:26:37:26 | x | | main.rs:16:5:19:5 | GenericThing | -| main.rs:37:26:37:26 | x | A | main.rs:2:5:3:13 | S | -| main.rs:37:26:37:28 | x.a | | main.rs:2:5:3:13 | S | -| main.rs:41:13:41:13 | x | | main.rs:21:5:23:5 | OptionS | -| main.rs:41:17:43:9 | OptionS {...} | | main.rs:21:5:23:5 | OptionS | -| main.rs:42:16:42:33 | ...::MyNone(...) | | main.rs:10:5:14:5 | MyOption | -| main.rs:42:16:42:33 | ...::MyNone(...) | T | main.rs:2:5:3:13 | S | -| main.rs:44:18:44:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:44:26:44:26 | x | | main.rs:21:5:23:5 | OptionS | -| main.rs:44:26:44:28 | x.a | | main.rs:10:5:14:5 | MyOption | -| main.rs:44:26:44:28 | x.a | T | main.rs:2:5:3:13 | S | -| main.rs:47:13:47:13 | x | | main.rs:16:5:19:5 | GenericThing | -| main.rs:47:13:47:13 | x | A | main.rs:10:5:14:5 | MyOption | -| main.rs:47:13:47:13 | x | A.T | main.rs:2:5:3:13 | S | -| main.rs:47:17:49:9 | GenericThing::<...> {...} | | main.rs:16:5:19:5 | GenericThing | -| main.rs:47:17:49:9 | GenericThing::<...> {...} | A | main.rs:10:5:14:5 | MyOption | -| main.rs:47:17:49:9 | GenericThing::<...> {...} | A.T | main.rs:2:5:3:13 | S | -| main.rs:48:16:48:33 | ...::MyNone(...) | | main.rs:10:5:14:5 | MyOption | -| main.rs:48:16:48:33 | ...::MyNone(...) | T | main.rs:2:5:3:13 | S | -| main.rs:50:18:50:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:50:26:50:26 | x | | main.rs:16:5:19:5 | GenericThing | -| main.rs:50:26:50:26 | x | A | main.rs:10:5:14:5 | MyOption | -| main.rs:50:26:50:26 | x | A.T | main.rs:2:5:3:13 | S | -| main.rs:50:26:50:28 | x.a | | main.rs:10:5:14:5 | MyOption | -| main.rs:50:26:50:28 | x.a | T | main.rs:2:5:3:13 | S | -| main.rs:52:13:52:17 | mut x | | main.rs:16:5:19:5 | GenericThing | -| main.rs:52:13:52:17 | mut x | A | main.rs:10:5:14:5 | MyOption | -| main.rs:52:13:52:17 | mut x | A.T | main.rs:2:5:3:13 | S | -| main.rs:52:21:54:9 | GenericThing {...} | | main.rs:16:5:19:5 | GenericThing | -| main.rs:52:21:54:9 | GenericThing {...} | A | main.rs:10:5:14:5 | MyOption | -| main.rs:52:21:54:9 | GenericThing {...} | A.T | main.rs:2:5:3:13 | S | +| main.rs:30:29:30:29 | x | | main.rs:16:5:19:5 | GenericThing | +| main.rs:31:17:31:17 | x | | main.rs:16:5:19:5 | GenericThing | +| main.rs:32:18:32:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:37:13:37:13 | x | | main.rs:16:5:19:5 | GenericThing | +| main.rs:37:13:37:13 | x | A | main.rs:2:5:3:13 | S | +| main.rs:37:17:37:42 | GenericThing::<...> {...} | | main.rs:16:5:19:5 | GenericThing | +| main.rs:37:17:37:42 | GenericThing::<...> {...} | A | main.rs:2:5:3:13 | S | +| main.rs:37:40:37:40 | S | | main.rs:2:5:3:13 | S | +| main.rs:38:18:38:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:38:26:38:26 | x | | main.rs:16:5:19:5 | GenericThing | +| main.rs:38:26:38:26 | x | A | main.rs:2:5:3:13 | S | +| main.rs:38:26:38:28 | x.a | | main.rs:2:5:3:13 | S | +| main.rs:41:13:41:13 | y | | main.rs:16:5:19:5 | GenericThing | +| main.rs:41:13:41:13 | y | A | main.rs:2:5:3:13 | S | +| main.rs:41:17:41:37 | GenericThing {...} | | main.rs:16:5:19:5 | GenericThing | +| main.rs:41:17:41:37 | GenericThing {...} | A | main.rs:2:5:3:13 | S | +| main.rs:41:35:41:35 | S | | main.rs:2:5:3:13 | S | +| main.rs:42:18:42:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:42:26:42:26 | x | | main.rs:16:5:19:5 | GenericThing | +| main.rs:42:26:42:26 | x | A | main.rs:2:5:3:13 | S | +| main.rs:42:26:42:28 | x.a | | main.rs:2:5:3:13 | S | +| main.rs:46:13:46:13 | x | | main.rs:21:5:23:5 | OptionS | +| main.rs:46:17:48:9 | OptionS {...} | | main.rs:21:5:23:5 | OptionS | +| main.rs:47:16:47:33 | ...::MyNone(...) | | main.rs:10:5:14:5 | MyOption | +| main.rs:47:16:47:33 | ...::MyNone(...) | T | main.rs:2:5:3:13 | S | +| main.rs:49:18:49:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:49:26:49:26 | x | | main.rs:21:5:23:5 | OptionS | +| main.rs:49:26:49:28 | x.a | | main.rs:10:5:14:5 | MyOption | +| main.rs:49:26:49:28 | x.a | T | main.rs:2:5:3:13 | S | +| main.rs:52:13:52:13 | x | | main.rs:16:5:19:5 | GenericThing | +| main.rs:52:13:52:13 | x | A | main.rs:10:5:14:5 | MyOption | +| main.rs:52:13:52:13 | x | A.T | main.rs:2:5:3:13 | S | +| main.rs:52:17:54:9 | GenericThing::<...> {...} | | main.rs:16:5:19:5 | GenericThing | +| main.rs:52:17:54:9 | GenericThing::<...> {...} | A | main.rs:10:5:14:5 | MyOption | +| main.rs:52:17:54:9 | GenericThing::<...> {...} | A.T | main.rs:2:5:3:13 | S | | main.rs:53:16:53:33 | ...::MyNone(...) | | main.rs:10:5:14:5 | MyOption | | main.rs:53:16:53:33 | ...::MyNone(...) | T | main.rs:2:5:3:13 | S | -| main.rs:56:13:56:13 | a | | main.rs:10:5:14:5 | MyOption | -| main.rs:56:13:56:13 | a | T | main.rs:2:5:3:13 | S | -| main.rs:56:30:56:30 | x | | main.rs:16:5:19:5 | GenericThing | -| main.rs:56:30:56:30 | x | A | main.rs:10:5:14:5 | MyOption | -| main.rs:56:30:56:30 | x | A.T | main.rs:2:5:3:13 | S | -| main.rs:56:30:56:32 | x.a | | main.rs:10:5:14:5 | MyOption | -| main.rs:56:30:56:32 | x.a | T | main.rs:2:5:3:13 | S | -| main.rs:57:18:57:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:57:26:57:26 | a | | main.rs:10:5:14:5 | MyOption | -| main.rs:57:26:57:26 | a | T | main.rs:2:5:3:13 | S | -| main.rs:70:19:70:22 | SelfParam | | main.rs:67:5:67:21 | Foo | -| main.rs:70:33:72:9 | { ... } | | main.rs:67:5:67:21 | Foo | -| main.rs:71:13:71:16 | self | | main.rs:67:5:67:21 | Foo | -| main.rs:74:19:74:22 | SelfParam | | main.rs:67:5:67:21 | Foo | -| main.rs:74:32:76:9 | { ... } | | main.rs:67:5:67:21 | Foo | -| main.rs:75:13:75:16 | self | | main.rs:67:5:67:21 | Foo | -| main.rs:79:23:84:5 | { ... } | | main.rs:67:5:67:21 | Foo | -| main.rs:80:18:80:33 | "main.rs::m1::f\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:81:13:81:13 | x | | main.rs:67:5:67:21 | Foo | -| main.rs:81:17:81:22 | Foo {...} | | main.rs:67:5:67:21 | Foo | -| main.rs:82:13:82:13 | y | | main.rs:67:5:67:21 | Foo | -| main.rs:82:20:82:25 | Foo {...} | | main.rs:67:5:67:21 | Foo | -| main.rs:83:9:83:9 | x | | main.rs:67:5:67:21 | Foo | -| main.rs:86:14:86:14 | x | | main.rs:67:5:67:21 | Foo | -| main.rs:86:22:86:22 | y | | main.rs:67:5:67:21 | Foo | -| main.rs:86:37:90:5 | { ... } | | main.rs:67:5:67:21 | Foo | -| main.rs:87:18:87:33 | "main.rs::m1::g\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:88:9:88:9 | x | | main.rs:67:5:67:21 | Foo | -| main.rs:88:9:88:14 | x.m1() | | main.rs:67:5:67:21 | Foo | -| main.rs:89:9:89:9 | y | | main.rs:67:5:67:21 | Foo | -| main.rs:89:9:89:14 | y.m2() | | main.rs:67:5:67:21 | Foo | -| main.rs:100:25:100:28 | SelfParam | | main.rs:99:5:101:5 | Self [trait MyTrait] | -| main.rs:105:25:105:28 | SelfParam | | main.rs:94:5:97:5 | MyThing | -| main.rs:105:39:107:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:106:13:106:16 | self | | main.rs:94:5:97:5 | MyThing | -| main.rs:106:13:106:22 | self.field | | {EXTERNAL LOCATION} | bool | -| main.rs:111:13:111:13 | x | | main.rs:94:5:97:5 | MyThing | -| main.rs:111:17:111:39 | MyThing {...} | | main.rs:94:5:97:5 | MyThing | -| main.rs:111:34:111:37 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:112:13:112:13 | a | | {EXTERNAL LOCATION} | bool | -| main.rs:112:17:112:17 | x | | main.rs:94:5:97:5 | MyThing | -| main.rs:112:17:112:32 | x.trait_method() | | {EXTERNAL LOCATION} | bool | -| main.rs:114:13:114:13 | y | | main.rs:94:5:97:5 | MyThing | -| main.rs:114:17:114:40 | MyThing {...} | | main.rs:94:5:97:5 | MyThing | -| main.rs:114:34:114:38 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:115:13:115:13 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:115:17:115:40 | ...::trait_method(...) | | {EXTERNAL LOCATION} | bool | -| main.rs:115:39:115:39 | y | | main.rs:94:5:97:5 | MyThing | -| main.rs:132:15:132:18 | SelfParam | | main.rs:120:5:123:5 | MyThing | -| main.rs:132:15:132:18 | SelfParam | A | main.rs:125:5:126:14 | S1 | -| main.rs:132:27:134:9 | { ... } | | main.rs:125:5:126:14 | S1 | -| main.rs:133:13:133:16 | self | | main.rs:120:5:123:5 | MyThing | -| main.rs:133:13:133:16 | self | A | main.rs:125:5:126:14 | S1 | -| main.rs:133:13:133:18 | self.a | | main.rs:125:5:126:14 | S1 | -| main.rs:139:15:139:18 | SelfParam | | main.rs:120:5:123:5 | MyThing | -| main.rs:139:15:139:18 | SelfParam | A | main.rs:127:5:128:14 | S2 | -| main.rs:139:29:141:9 | { ... } | | main.rs:120:5:123:5 | MyThing | -| main.rs:139:29:141:9 | { ... } | A | main.rs:127:5:128:14 | S2 | -| main.rs:140:13:140:30 | Self {...} | | main.rs:120:5:123:5 | MyThing | -| main.rs:140:13:140:30 | Self {...} | A | main.rs:127:5:128:14 | S2 | -| main.rs:140:23:140:26 | self | | main.rs:120:5:123:5 | MyThing | -| main.rs:140:23:140:26 | self | A | main.rs:127:5:128:14 | S2 | -| main.rs:140:23:140:28 | self.a | | main.rs:127:5:128:14 | S2 | -| main.rs:145:15:145:18 | SelfParam | | main.rs:120:5:123:5 | MyThing | -| main.rs:145:15:145:18 | SelfParam | A | main.rs:144:10:144:10 | T | -| main.rs:145:26:147:9 | { ... } | | main.rs:144:10:144:10 | T | -| main.rs:146:13:146:16 | self | | main.rs:120:5:123:5 | MyThing | -| main.rs:146:13:146:16 | self | A | main.rs:144:10:144:10 | T | -| main.rs:146:13:146:18 | self.a | | main.rs:144:10:144:10 | T | -| main.rs:151:13:151:13 | x | | main.rs:120:5:123:5 | MyThing | -| main.rs:151:13:151:13 | x | A | main.rs:125:5:126:14 | S1 | -| main.rs:151:17:151:33 | MyThing {...} | | main.rs:120:5:123:5 | MyThing | -| main.rs:151:17:151:33 | MyThing {...} | A | main.rs:125:5:126:14 | S1 | -| main.rs:151:30:151:31 | S1 | | main.rs:125:5:126:14 | S1 | -| main.rs:152:13:152:13 | y | | main.rs:120:5:123:5 | MyThing | -| main.rs:152:13:152:13 | y | A | main.rs:127:5:128:14 | S2 | -| main.rs:152:17:152:33 | MyThing {...} | | main.rs:120:5:123:5 | MyThing | -| main.rs:152:17:152:33 | MyThing {...} | A | main.rs:127:5:128:14 | S2 | -| main.rs:152:30:152:31 | S2 | | main.rs:127:5:128:14 | S2 | -| main.rs:155:18:155:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:155:26:155:26 | x | | main.rs:120:5:123:5 | MyThing | -| main.rs:155:26:155:26 | x | A | main.rs:125:5:126:14 | S1 | -| main.rs:155:26:155:28 | x.a | | main.rs:125:5:126:14 | S1 | -| main.rs:156:18:156:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:156:26:156:26 | y | | main.rs:120:5:123:5 | MyThing | -| main.rs:156:26:156:26 | y | A | main.rs:127:5:128:14 | S2 | -| main.rs:156:26:156:28 | y.a | | main.rs:127:5:128:14 | S2 | -| main.rs:158:18:158:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:158:26:158:26 | x | | main.rs:120:5:123:5 | MyThing | -| main.rs:158:26:158:26 | x | A | main.rs:125:5:126:14 | S1 | -| main.rs:158:26:158:31 | x.m1() | | main.rs:125:5:126:14 | S1 | -| main.rs:159:18:159:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:159:26:159:26 | y | | main.rs:120:5:123:5 | MyThing | -| main.rs:159:26:159:26 | y | A | main.rs:127:5:128:14 | S2 | -| main.rs:159:26:159:31 | y.m1() | | main.rs:120:5:123:5 | MyThing | -| main.rs:159:26:159:31 | y.m1() | A | main.rs:127:5:128:14 | S2 | -| main.rs:159:26:159:33 | ... .a | | main.rs:127:5:128:14 | S2 | -| main.rs:161:13:161:13 | x | | main.rs:120:5:123:5 | MyThing | -| main.rs:161:13:161:13 | x | A | main.rs:125:5:126:14 | S1 | -| main.rs:161:17:161:33 | MyThing {...} | | main.rs:120:5:123:5 | MyThing | -| main.rs:161:17:161:33 | MyThing {...} | A | main.rs:125:5:126:14 | S1 | -| main.rs:161:30:161:31 | S1 | | main.rs:125:5:126:14 | S1 | -| main.rs:162:13:162:13 | y | | main.rs:120:5:123:5 | MyThing | -| main.rs:162:13:162:13 | y | A | main.rs:127:5:128:14 | S2 | -| main.rs:162:17:162:33 | MyThing {...} | | main.rs:120:5:123:5 | MyThing | -| main.rs:162:17:162:33 | MyThing {...} | A | main.rs:127:5:128:14 | S2 | -| main.rs:162:30:162:31 | S2 | | main.rs:127:5:128:14 | S2 | +| main.rs:55:18:55:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:55:26:55:26 | x | | main.rs:16:5:19:5 | GenericThing | +| main.rs:55:26:55:26 | x | A | main.rs:10:5:14:5 | MyOption | +| main.rs:55:26:55:26 | x | A.T | main.rs:2:5:3:13 | S | +| main.rs:55:26:55:28 | x.a | | main.rs:10:5:14:5 | MyOption | +| main.rs:55:26:55:28 | x.a | T | main.rs:2:5:3:13 | S | +| main.rs:57:13:57:17 | mut x | | main.rs:16:5:19:5 | GenericThing | +| main.rs:57:13:57:17 | mut x | A | main.rs:10:5:14:5 | MyOption | +| main.rs:57:13:57:17 | mut x | A.T | main.rs:2:5:3:13 | S | +| main.rs:57:21:59:9 | GenericThing {...} | | main.rs:16:5:19:5 | GenericThing | +| main.rs:57:21:59:9 | GenericThing {...} | A | main.rs:10:5:14:5 | MyOption | +| main.rs:57:21:59:9 | GenericThing {...} | A.T | main.rs:2:5:3:13 | S | +| main.rs:58:16:58:33 | ...::MyNone(...) | | main.rs:10:5:14:5 | MyOption | +| main.rs:58:16:58:33 | ...::MyNone(...) | T | main.rs:2:5:3:13 | S | +| main.rs:61:13:61:13 | a | | main.rs:10:5:14:5 | MyOption | +| main.rs:61:13:61:13 | a | T | main.rs:2:5:3:13 | S | +| main.rs:61:30:61:30 | x | | main.rs:16:5:19:5 | GenericThing | +| main.rs:61:30:61:30 | x | A | main.rs:10:5:14:5 | MyOption | +| main.rs:61:30:61:30 | x | A.T | main.rs:2:5:3:13 | S | +| main.rs:61:30:61:32 | x.a | | main.rs:10:5:14:5 | MyOption | +| main.rs:61:30:61:32 | x.a | T | main.rs:2:5:3:13 | S | +| main.rs:62:18:62:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:62:26:62:26 | a | | main.rs:10:5:14:5 | MyOption | +| main.rs:62:26:62:26 | a | T | main.rs:2:5:3:13 | S | +| main.rs:75:19:75:22 | SelfParam | | main.rs:72:5:72:21 | Foo | +| main.rs:75:33:77:9 | { ... } | | main.rs:72:5:72:21 | Foo | +| main.rs:76:13:76:16 | self | | main.rs:72:5:72:21 | Foo | +| main.rs:79:19:79:22 | SelfParam | | main.rs:72:5:72:21 | Foo | +| main.rs:79:32:81:9 | { ... } | | main.rs:72:5:72:21 | Foo | +| main.rs:80:13:80:16 | self | | main.rs:72:5:72:21 | Foo | +| main.rs:84:23:89:5 | { ... } | | main.rs:72:5:72:21 | Foo | +| main.rs:85:18:85:33 | "main.rs::m1::f\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:86:13:86:13 | x | | main.rs:72:5:72:21 | Foo | +| main.rs:86:17:86:22 | Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:87:13:87:13 | y | | main.rs:72:5:72:21 | Foo | +| main.rs:87:20:87:25 | Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:88:9:88:9 | x | | main.rs:72:5:72:21 | Foo | +| main.rs:91:14:91:14 | x | | main.rs:72:5:72:21 | Foo | +| main.rs:91:22:91:22 | y | | main.rs:72:5:72:21 | Foo | +| main.rs:91:37:95:5 | { ... } | | main.rs:72:5:72:21 | Foo | +| main.rs:92:18:92:33 | "main.rs::m1::g\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:93:9:93:9 | x | | main.rs:72:5:72:21 | Foo | +| main.rs:93:9:93:14 | x.m1() | | main.rs:72:5:72:21 | Foo | +| main.rs:94:9:94:9 | y | | main.rs:72:5:72:21 | Foo | +| main.rs:94:9:94:14 | y.m2() | | main.rs:72:5:72:21 | Foo | +| main.rs:105:25:105:28 | SelfParam | | main.rs:104:5:106:5 | Self [trait MyTrait] | +| main.rs:110:25:110:28 | SelfParam | | main.rs:99:5:102:5 | MyThing | +| main.rs:110:39:112:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:111:13:111:16 | self | | main.rs:99:5:102:5 | MyThing | +| main.rs:111:13:111:22 | self.field | | {EXTERNAL LOCATION} | bool | +| main.rs:116:13:116:13 | x | | main.rs:99:5:102:5 | MyThing | +| main.rs:116:17:116:39 | MyThing {...} | | main.rs:99:5:102:5 | MyThing | +| main.rs:116:34:116:37 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:117:13:117:13 | a | | {EXTERNAL LOCATION} | bool | +| main.rs:117:17:117:17 | x | | main.rs:99:5:102:5 | MyThing | +| main.rs:117:17:117:32 | x.trait_method() | | {EXTERNAL LOCATION} | bool | +| main.rs:119:13:119:13 | y | | main.rs:99:5:102:5 | MyThing | +| main.rs:119:17:119:40 | MyThing {...} | | main.rs:99:5:102:5 | MyThing | +| main.rs:119:34:119:38 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:120:13:120:13 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:120:17:120:40 | ...::trait_method(...) | | {EXTERNAL LOCATION} | bool | +| main.rs:120:39:120:39 | y | | main.rs:99:5:102:5 | MyThing | +| main.rs:137:15:137:18 | SelfParam | | main.rs:125:5:128:5 | MyThing | +| main.rs:137:15:137:18 | SelfParam | A | main.rs:130:5:131:14 | S1 | +| main.rs:137:27:139:9 | { ... } | | main.rs:130:5:131:14 | S1 | +| main.rs:138:13:138:16 | self | | main.rs:125:5:128:5 | MyThing | +| main.rs:138:13:138:16 | self | A | main.rs:130:5:131:14 | S1 | +| main.rs:138:13:138:18 | self.a | | main.rs:130:5:131:14 | S1 | +| main.rs:144:15:144:18 | SelfParam | | main.rs:125:5:128:5 | MyThing | +| main.rs:144:15:144:18 | SelfParam | A | main.rs:132:5:133:14 | S2 | +| main.rs:144:29:146:9 | { ... } | | main.rs:125:5:128:5 | MyThing | +| main.rs:144:29:146:9 | { ... } | A | main.rs:132:5:133:14 | S2 | +| main.rs:145:13:145:30 | Self {...} | | main.rs:125:5:128:5 | MyThing | +| main.rs:145:13:145:30 | Self {...} | A | main.rs:132:5:133:14 | S2 | +| main.rs:145:23:145:26 | self | | main.rs:125:5:128:5 | MyThing | +| main.rs:145:23:145:26 | self | A | main.rs:132:5:133:14 | S2 | +| main.rs:145:23:145:28 | self.a | | main.rs:132:5:133:14 | S2 | +| main.rs:150:15:150:18 | SelfParam | | main.rs:125:5:128:5 | MyThing | +| main.rs:150:15:150:18 | SelfParam | A | main.rs:149:10:149:10 | T | +| main.rs:150:26:152:9 | { ... } | | main.rs:149:10:149:10 | T | +| main.rs:151:13:151:16 | self | | main.rs:125:5:128:5 | MyThing | +| main.rs:151:13:151:16 | self | A | main.rs:149:10:149:10 | T | +| main.rs:151:13:151:18 | self.a | | main.rs:149:10:149:10 | T | +| main.rs:156:13:156:13 | x | | main.rs:125:5:128:5 | MyThing | +| main.rs:156:13:156:13 | x | A | main.rs:130:5:131:14 | S1 | +| main.rs:156:17:156:33 | MyThing {...} | | main.rs:125:5:128:5 | MyThing | +| main.rs:156:17:156:33 | MyThing {...} | A | main.rs:130:5:131:14 | S1 | +| main.rs:156:30:156:31 | S1 | | main.rs:130:5:131:14 | S1 | +| main.rs:157:13:157:13 | y | | main.rs:125:5:128:5 | MyThing | +| main.rs:157:13:157:13 | y | A | main.rs:132:5:133:14 | S2 | +| main.rs:157:17:157:33 | MyThing {...} | | main.rs:125:5:128:5 | MyThing | +| main.rs:157:17:157:33 | MyThing {...} | A | main.rs:132:5:133:14 | S2 | +| main.rs:157:30:157:31 | S2 | | main.rs:132:5:133:14 | S2 | +| main.rs:160:18:160:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:160:26:160:26 | x | | main.rs:125:5:128:5 | MyThing | +| main.rs:160:26:160:26 | x | A | main.rs:130:5:131:14 | S1 | +| main.rs:160:26:160:28 | x.a | | main.rs:130:5:131:14 | S1 | +| main.rs:161:18:161:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:161:26:161:26 | y | | main.rs:125:5:128:5 | MyThing | +| main.rs:161:26:161:26 | y | A | main.rs:132:5:133:14 | S2 | +| main.rs:161:26:161:28 | y.a | | main.rs:132:5:133:14 | S2 | +| main.rs:163:18:163:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:163:26:163:26 | x | | main.rs:125:5:128:5 | MyThing | +| main.rs:163:26:163:26 | x | A | main.rs:130:5:131:14 | S1 | +| main.rs:163:26:163:31 | x.m1() | | main.rs:130:5:131:14 | S1 | | main.rs:164:18:164:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:164:26:164:26 | x | | main.rs:120:5:123:5 | MyThing | -| main.rs:164:26:164:26 | x | A | main.rs:125:5:126:14 | S1 | -| main.rs:164:26:164:31 | x.m2() | | main.rs:125:5:126:14 | S1 | -| main.rs:165:18:165:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:165:26:165:26 | y | | main.rs:120:5:123:5 | MyThing | -| main.rs:165:26:165:26 | y | A | main.rs:127:5:128:14 | S2 | -| main.rs:165:26:165:31 | y.m2() | | main.rs:127:5:128:14 | S2 | -| main.rs:189:15:189:18 | SelfParam | | main.rs:188:5:197:5 | Self [trait MyTrait] | -| main.rs:191:15:191:18 | SelfParam | | main.rs:188:5:197:5 | Self [trait MyTrait] | -| main.rs:194:9:196:9 | { ... } | | main.rs:188:5:197:5 | Self [trait MyTrait] | -| main.rs:195:13:195:16 | self | | main.rs:188:5:197:5 | Self [trait MyTrait] | -| main.rs:201:16:201:19 | SelfParam | | main.rs:199:5:204:5 | Self [trait MyProduct] | -| main.rs:203:16:203:19 | SelfParam | | main.rs:199:5:204:5 | Self [trait MyProduct] | -| main.rs:206:43:206:43 | x | | main.rs:206:26:206:40 | T2 | -| main.rs:206:56:208:5 | { ... } | | main.rs:206:22:206:23 | T1 | -| main.rs:207:9:207:9 | x | | main.rs:206:26:206:40 | T2 | -| main.rs:207:9:207:14 | x.m1() | | main.rs:206:22:206:23 | T1 | -| main.rs:212:15:212:18 | SelfParam | | main.rs:170:5:173:5 | MyThing | -| main.rs:212:15:212:18 | SelfParam | A | main.rs:181:5:182:14 | S1 | -| main.rs:212:27:214:9 | { ... } | | main.rs:181:5:182:14 | S1 | -| main.rs:213:13:213:16 | self | | main.rs:170:5:173:5 | MyThing | -| main.rs:213:13:213:16 | self | A | main.rs:181:5:182:14 | S1 | -| main.rs:213:13:213:18 | self.a | | main.rs:181:5:182:14 | S1 | -| main.rs:219:15:219:18 | SelfParam | | main.rs:170:5:173:5 | MyThing | -| main.rs:219:15:219:18 | SelfParam | A | main.rs:183:5:184:14 | S2 | -| main.rs:219:29:221:9 | { ... } | | main.rs:170:5:173:5 | MyThing | -| main.rs:219:29:221:9 | { ... } | A | main.rs:183:5:184:14 | S2 | -| main.rs:220:13:220:30 | Self {...} | | main.rs:170:5:173:5 | MyThing | -| main.rs:220:13:220:30 | Self {...} | A | main.rs:183:5:184:14 | S2 | -| main.rs:220:23:220:26 | self | | main.rs:170:5:173:5 | MyThing | -| main.rs:220:23:220:26 | self | A | main.rs:183:5:184:14 | S2 | -| main.rs:220:23:220:28 | self.a | | main.rs:183:5:184:14 | S2 | -| main.rs:231:15:231:18 | SelfParam | | main.rs:170:5:173:5 | MyThing | -| main.rs:231:15:231:18 | SelfParam | A | main.rs:185:5:186:14 | S3 | -| main.rs:231:27:233:9 | { ... } | | main.rs:226:10:226:11 | TD | -| main.rs:232:13:232:25 | ...::default(...) | | main.rs:226:10:226:11 | TD | -| main.rs:238:15:238:18 | SelfParam | | main.rs:175:5:179:5 | MyPair | -| main.rs:238:15:238:18 | SelfParam | P1 | main.rs:236:10:236:10 | I | -| main.rs:238:15:238:18 | SelfParam | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:238:26:240:9 | { ... } | | main.rs:236:10:236:10 | I | -| main.rs:239:13:239:16 | self | | main.rs:175:5:179:5 | MyPair | -| main.rs:239:13:239:16 | self | P1 | main.rs:236:10:236:10 | I | -| main.rs:239:13:239:16 | self | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:239:13:239:19 | self.p1 | | main.rs:236:10:236:10 | I | -| main.rs:245:15:245:18 | SelfParam | | main.rs:175:5:179:5 | MyPair | -| main.rs:245:15:245:18 | SelfParam | P1 | main.rs:181:5:182:14 | S1 | -| main.rs:245:15:245:18 | SelfParam | P2 | main.rs:183:5:184:14 | S2 | -| main.rs:245:27:247:9 | { ... } | | main.rs:185:5:186:14 | S3 | -| main.rs:246:13:246:14 | S3 | | main.rs:185:5:186:14 | S3 | -| main.rs:252:15:252:18 | SelfParam | | main.rs:175:5:179:5 | MyPair | -| main.rs:252:15:252:18 | SelfParam | P1 | main.rs:170:5:173:5 | MyThing | -| main.rs:252:15:252:18 | SelfParam | P1.A | main.rs:250:10:250:11 | TT | -| main.rs:252:15:252:18 | SelfParam | P2 | main.rs:185:5:186:14 | S3 | -| main.rs:252:27:255:9 | { ... } | | main.rs:250:10:250:11 | TT | -| main.rs:253:17:253:21 | alpha | | main.rs:170:5:173:5 | MyThing | -| main.rs:253:17:253:21 | alpha | A | main.rs:250:10:250:11 | TT | -| main.rs:253:25:253:28 | self | | main.rs:175:5:179:5 | MyPair | -| main.rs:253:25:253:28 | self | P1 | main.rs:170:5:173:5 | MyThing | -| main.rs:253:25:253:28 | self | P1.A | main.rs:250:10:250:11 | TT | -| main.rs:253:25:253:28 | self | P2 | main.rs:185:5:186:14 | S3 | -| main.rs:253:25:253:31 | self.p1 | | main.rs:170:5:173:5 | MyThing | -| main.rs:253:25:253:31 | self.p1 | A | main.rs:250:10:250:11 | TT | -| main.rs:254:13:254:17 | alpha | | main.rs:170:5:173:5 | MyThing | -| main.rs:254:13:254:17 | alpha | A | main.rs:250:10:250:11 | TT | -| main.rs:254:13:254:19 | alpha.a | | main.rs:250:10:250:11 | TT | -| main.rs:261:16:261:19 | SelfParam | | main.rs:175:5:179:5 | MyPair | -| main.rs:261:16:261:19 | SelfParam | P1 | main.rs:259:10:259:10 | A | -| main.rs:261:16:261:19 | SelfParam | P2 | main.rs:259:10:259:10 | A | -| main.rs:261:27:263:9 | { ... } | | main.rs:259:10:259:10 | A | -| main.rs:262:13:262:16 | self | | main.rs:175:5:179:5 | MyPair | -| main.rs:262:13:262:16 | self | P1 | main.rs:259:10:259:10 | A | -| main.rs:262:13:262:16 | self | P2 | main.rs:259:10:259:10 | A | -| main.rs:262:13:262:19 | self.p1 | | main.rs:259:10:259:10 | A | -| main.rs:266:16:266:19 | SelfParam | | main.rs:175:5:179:5 | MyPair | -| main.rs:266:16:266:19 | SelfParam | P1 | main.rs:259:10:259:10 | A | -| main.rs:266:16:266:19 | SelfParam | P2 | main.rs:259:10:259:10 | A | -| main.rs:266:27:268:9 | { ... } | | main.rs:259:10:259:10 | A | -| main.rs:267:13:267:16 | self | | main.rs:175:5:179:5 | MyPair | -| main.rs:267:13:267:16 | self | P1 | main.rs:259:10:259:10 | A | -| main.rs:267:13:267:16 | self | P2 | main.rs:259:10:259:10 | A | -| main.rs:267:13:267:19 | self.p2 | | main.rs:259:10:259:10 | A | -| main.rs:274:16:274:19 | SelfParam | | main.rs:175:5:179:5 | MyPair | -| main.rs:274:16:274:19 | SelfParam | P1 | main.rs:183:5:184:14 | S2 | -| main.rs:274:16:274:19 | SelfParam | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:274:28:276:9 | { ... } | | main.rs:181:5:182:14 | S1 | -| main.rs:275:13:275:16 | self | | main.rs:175:5:179:5 | MyPair | -| main.rs:275:13:275:16 | self | P1 | main.rs:183:5:184:14 | S2 | -| main.rs:275:13:275:16 | self | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:275:13:275:19 | self.p2 | | main.rs:181:5:182:14 | S1 | -| main.rs:279:16:279:19 | SelfParam | | main.rs:175:5:179:5 | MyPair | -| main.rs:279:16:279:19 | SelfParam | P1 | main.rs:183:5:184:14 | S2 | -| main.rs:279:16:279:19 | SelfParam | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:279:28:281:9 | { ... } | | main.rs:183:5:184:14 | S2 | -| main.rs:280:13:280:16 | self | | main.rs:175:5:179:5 | MyPair | -| main.rs:280:13:280:16 | self | P1 | main.rs:183:5:184:14 | S2 | -| main.rs:280:13:280:16 | self | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:280:13:280:19 | self.p1 | | main.rs:183:5:184:14 | S2 | -| main.rs:284:46:284:46 | p | | main.rs:284:24:284:43 | P | -| main.rs:284:58:286:5 | { ... } | | main.rs:284:16:284:17 | V1 | -| main.rs:285:9:285:9 | p | | main.rs:284:24:284:43 | P | -| main.rs:285:9:285:15 | p.fst() | | main.rs:284:16:284:17 | V1 | -| main.rs:288:46:288:46 | p | | main.rs:288:24:288:43 | P | -| main.rs:288:58:290:5 | { ... } | | main.rs:288:20:288:21 | V2 | -| main.rs:289:9:289:9 | p | | main.rs:288:24:288:43 | P | -| main.rs:289:9:289:15 | p.snd() | | main.rs:288:20:288:21 | V2 | -| main.rs:292:54:292:54 | p | | main.rs:175:5:179:5 | MyPair | -| main.rs:292:54:292:54 | p | P1 | main.rs:292:20:292:21 | V0 | -| main.rs:292:54:292:54 | p | P2 | main.rs:292:32:292:51 | P | -| main.rs:292:78:294:5 | { ... } | | main.rs:292:24:292:25 | V1 | -| main.rs:293:9:293:9 | p | | main.rs:175:5:179:5 | MyPair | -| main.rs:293:9:293:9 | p | P1 | main.rs:292:20:292:21 | V0 | -| main.rs:293:9:293:9 | p | P2 | main.rs:292:32:292:51 | P | -| main.rs:293:9:293:12 | p.p2 | | main.rs:292:32:292:51 | P | -| main.rs:293:9:293:18 | ... .fst() | | main.rs:292:24:292:25 | V1 | -| main.rs:298:23:298:26 | SelfParam | | main.rs:296:5:299:5 | Self [trait ConvertTo] | -| main.rs:303:23:303:26 | SelfParam | | main.rs:301:10:301:23 | T | -| main.rs:303:35:305:9 | { ... } | | main.rs:181:5:182:14 | S1 | -| main.rs:304:13:304:16 | self | | main.rs:301:10:301:23 | T | -| main.rs:304:13:304:21 | self.m1() | | main.rs:181:5:182:14 | S1 | -| main.rs:308:41:308:45 | thing | | main.rs:308:23:308:38 | T | -| main.rs:308:57:310:5 | { ... } | | main.rs:308:19:308:20 | TS | -| main.rs:309:9:309:13 | thing | | main.rs:308:23:308:38 | T | -| main.rs:309:9:309:26 | thing.convert_to() | | main.rs:308:19:308:20 | TS | -| main.rs:312:56:312:60 | thing | | main.rs:312:39:312:53 | TP | -| main.rs:312:73:315:5 | { ... } | | main.rs:181:5:182:14 | S1 | -| main.rs:314:9:314:13 | thing | | main.rs:312:39:312:53 | TP | -| main.rs:314:9:314:26 | thing.convert_to() | | main.rs:181:5:182:14 | S1 | -| main.rs:318:13:318:20 | thing_s1 | | main.rs:170:5:173:5 | MyThing | -| main.rs:318:13:318:20 | thing_s1 | A | main.rs:181:5:182:14 | S1 | -| main.rs:318:24:318:40 | MyThing {...} | | main.rs:170:5:173:5 | MyThing | -| main.rs:318:24:318:40 | MyThing {...} | A | main.rs:181:5:182:14 | S1 | -| main.rs:318:37:318:38 | S1 | | main.rs:181:5:182:14 | S1 | -| main.rs:319:13:319:20 | thing_s2 | | main.rs:170:5:173:5 | MyThing | -| main.rs:319:13:319:20 | thing_s2 | A | main.rs:183:5:184:14 | S2 | -| main.rs:319:24:319:40 | MyThing {...} | | main.rs:170:5:173:5 | MyThing | -| main.rs:319:24:319:40 | MyThing {...} | A | main.rs:183:5:184:14 | S2 | -| main.rs:319:37:319:38 | S2 | | main.rs:183:5:184:14 | S2 | -| main.rs:320:13:320:20 | thing_s3 | | main.rs:170:5:173:5 | MyThing | -| main.rs:320:13:320:20 | thing_s3 | A | main.rs:185:5:186:14 | S3 | -| main.rs:320:24:320:40 | MyThing {...} | | main.rs:170:5:173:5 | MyThing | -| main.rs:320:24:320:40 | MyThing {...} | A | main.rs:185:5:186:14 | S3 | -| main.rs:320:37:320:38 | S3 | | main.rs:185:5:186:14 | S3 | -| main.rs:324:18:324:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:324:26:324:33 | thing_s1 | | main.rs:170:5:173:5 | MyThing | -| main.rs:324:26:324:33 | thing_s1 | A | main.rs:181:5:182:14 | S1 | -| main.rs:324:26:324:38 | thing_s1.m1() | | main.rs:181:5:182:14 | S1 | -| main.rs:325:18:325:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:325:26:325:33 | thing_s2 | | main.rs:170:5:173:5 | MyThing | -| main.rs:325:26:325:33 | thing_s2 | A | main.rs:183:5:184:14 | S2 | -| main.rs:325:26:325:38 | thing_s2.m1() | | main.rs:170:5:173:5 | MyThing | -| main.rs:325:26:325:38 | thing_s2.m1() | A | main.rs:183:5:184:14 | S2 | -| main.rs:325:26:325:40 | ... .a | | main.rs:183:5:184:14 | S2 | -| main.rs:326:13:326:14 | s3 | | main.rs:185:5:186:14 | S3 | -| main.rs:326:22:326:29 | thing_s3 | | main.rs:170:5:173:5 | MyThing | -| main.rs:326:22:326:29 | thing_s3 | A | main.rs:185:5:186:14 | S3 | -| main.rs:326:22:326:34 | thing_s3.m1() | | main.rs:185:5:186:14 | S3 | -| main.rs:327:18:327:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:327:26:327:27 | s3 | | main.rs:185:5:186:14 | S3 | -| main.rs:329:13:329:14 | p1 | | main.rs:175:5:179:5 | MyPair | -| main.rs:329:13:329:14 | p1 | P1 | main.rs:181:5:182:14 | S1 | -| main.rs:329:13:329:14 | p1 | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:329:18:329:42 | MyPair {...} | | main.rs:175:5:179:5 | MyPair | -| main.rs:329:18:329:42 | MyPair {...} | P1 | main.rs:181:5:182:14 | S1 | -| main.rs:329:18:329:42 | MyPair {...} | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:329:31:329:32 | S1 | | main.rs:181:5:182:14 | S1 | -| main.rs:329:39:329:40 | S1 | | main.rs:181:5:182:14 | S1 | +| main.rs:164:26:164:26 | y | | main.rs:125:5:128:5 | MyThing | +| main.rs:164:26:164:26 | y | A | main.rs:132:5:133:14 | S2 | +| main.rs:164:26:164:31 | y.m1() | | main.rs:125:5:128:5 | MyThing | +| main.rs:164:26:164:31 | y.m1() | A | main.rs:132:5:133:14 | S2 | +| main.rs:164:26:164:33 | ... .a | | main.rs:132:5:133:14 | S2 | +| main.rs:166:13:166:13 | x | | main.rs:125:5:128:5 | MyThing | +| main.rs:166:13:166:13 | x | A | main.rs:130:5:131:14 | S1 | +| main.rs:166:17:166:33 | MyThing {...} | | main.rs:125:5:128:5 | MyThing | +| main.rs:166:17:166:33 | MyThing {...} | A | main.rs:130:5:131:14 | S1 | +| main.rs:166:30:166:31 | S1 | | main.rs:130:5:131:14 | S1 | +| main.rs:167:13:167:13 | y | | main.rs:125:5:128:5 | MyThing | +| main.rs:167:13:167:13 | y | A | main.rs:132:5:133:14 | S2 | +| main.rs:167:17:167:33 | MyThing {...} | | main.rs:125:5:128:5 | MyThing | +| main.rs:167:17:167:33 | MyThing {...} | A | main.rs:132:5:133:14 | S2 | +| main.rs:167:30:167:31 | S2 | | main.rs:132:5:133:14 | S2 | +| main.rs:169:18:169:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:169:26:169:26 | x | | main.rs:125:5:128:5 | MyThing | +| main.rs:169:26:169:26 | x | A | main.rs:130:5:131:14 | S1 | +| main.rs:169:26:169:31 | x.m2() | | main.rs:130:5:131:14 | S1 | +| main.rs:170:18:170:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:170:26:170:26 | y | | main.rs:125:5:128:5 | MyThing | +| main.rs:170:26:170:26 | y | A | main.rs:132:5:133:14 | S2 | +| main.rs:170:26:170:31 | y.m2() | | main.rs:132:5:133:14 | S2 | +| main.rs:194:15:194:18 | SelfParam | | main.rs:193:5:202:5 | Self [trait MyTrait] | +| main.rs:196:15:196:18 | SelfParam | | main.rs:193:5:202:5 | Self [trait MyTrait] | +| main.rs:199:9:201:9 | { ... } | | main.rs:193:5:202:5 | Self [trait MyTrait] | +| main.rs:200:13:200:16 | self | | main.rs:193:5:202:5 | Self [trait MyTrait] | +| main.rs:206:16:206:19 | SelfParam | | main.rs:204:5:209:5 | Self [trait MyProduct] | +| main.rs:208:16:208:19 | SelfParam | | main.rs:204:5:209:5 | Self [trait MyProduct] | +| main.rs:211:43:211:43 | x | | main.rs:211:26:211:40 | T2 | +| main.rs:211:56:213:5 | { ... } | | main.rs:211:22:211:23 | T1 | +| main.rs:212:9:212:9 | x | | main.rs:211:26:211:40 | T2 | +| main.rs:212:9:212:14 | x.m1() | | main.rs:211:22:211:23 | T1 | +| main.rs:217:15:217:18 | SelfParam | | main.rs:175:5:178:5 | MyThing | +| main.rs:217:15:217:18 | SelfParam | A | main.rs:186:5:187:14 | S1 | +| main.rs:217:27:219:9 | { ... } | | main.rs:186:5:187:14 | S1 | +| main.rs:218:13:218:16 | self | | main.rs:175:5:178:5 | MyThing | +| main.rs:218:13:218:16 | self | A | main.rs:186:5:187:14 | S1 | +| main.rs:218:13:218:18 | self.a | | main.rs:186:5:187:14 | S1 | +| main.rs:224:15:224:18 | SelfParam | | main.rs:175:5:178:5 | MyThing | +| main.rs:224:15:224:18 | SelfParam | A | main.rs:188:5:189:14 | S2 | +| main.rs:224:29:226:9 | { ... } | | main.rs:175:5:178:5 | MyThing | +| main.rs:224:29:226:9 | { ... } | A | main.rs:188:5:189:14 | S2 | +| main.rs:225:13:225:30 | Self {...} | | main.rs:175:5:178:5 | MyThing | +| main.rs:225:13:225:30 | Self {...} | A | main.rs:188:5:189:14 | S2 | +| main.rs:225:23:225:26 | self | | main.rs:175:5:178:5 | MyThing | +| main.rs:225:23:225:26 | self | A | main.rs:188:5:189:14 | S2 | +| main.rs:225:23:225:28 | self.a | | main.rs:188:5:189:14 | S2 | +| main.rs:236:15:236:18 | SelfParam | | main.rs:175:5:178:5 | MyThing | +| main.rs:236:15:236:18 | SelfParam | A | main.rs:190:5:191:14 | S3 | +| main.rs:236:27:238:9 | { ... } | | main.rs:231:10:231:11 | TD | +| main.rs:237:13:237:25 | ...::default(...) | | main.rs:231:10:231:11 | TD | +| main.rs:243:15:243:18 | SelfParam | | main.rs:180:5:184:5 | MyPair | +| main.rs:243:15:243:18 | SelfParam | P1 | main.rs:241:10:241:10 | I | +| main.rs:243:15:243:18 | SelfParam | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:243:26:245:9 | { ... } | | main.rs:241:10:241:10 | I | +| main.rs:244:13:244:16 | self | | main.rs:180:5:184:5 | MyPair | +| main.rs:244:13:244:16 | self | P1 | main.rs:241:10:241:10 | I | +| main.rs:244:13:244:16 | self | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:244:13:244:19 | self.p1 | | main.rs:241:10:241:10 | I | +| main.rs:250:15:250:18 | SelfParam | | main.rs:180:5:184:5 | MyPair | +| main.rs:250:15:250:18 | SelfParam | P1 | main.rs:186:5:187:14 | S1 | +| main.rs:250:15:250:18 | SelfParam | P2 | main.rs:188:5:189:14 | S2 | +| main.rs:250:27:252:9 | { ... } | | main.rs:190:5:191:14 | S3 | +| main.rs:251:13:251:14 | S3 | | main.rs:190:5:191:14 | S3 | +| main.rs:257:15:257:18 | SelfParam | | main.rs:180:5:184:5 | MyPair | +| main.rs:257:15:257:18 | SelfParam | P1 | main.rs:175:5:178:5 | MyThing | +| main.rs:257:15:257:18 | SelfParam | P1.A | main.rs:255:10:255:11 | TT | +| main.rs:257:15:257:18 | SelfParam | P2 | main.rs:190:5:191:14 | S3 | +| main.rs:257:27:260:9 | { ... } | | main.rs:255:10:255:11 | TT | +| main.rs:258:17:258:21 | alpha | | main.rs:175:5:178:5 | MyThing | +| main.rs:258:17:258:21 | alpha | A | main.rs:255:10:255:11 | TT | +| main.rs:258:25:258:28 | self | | main.rs:180:5:184:5 | MyPair | +| main.rs:258:25:258:28 | self | P1 | main.rs:175:5:178:5 | MyThing | +| main.rs:258:25:258:28 | self | P1.A | main.rs:255:10:255:11 | TT | +| main.rs:258:25:258:28 | self | P2 | main.rs:190:5:191:14 | S3 | +| main.rs:258:25:258:31 | self.p1 | | main.rs:175:5:178:5 | MyThing | +| main.rs:258:25:258:31 | self.p1 | A | main.rs:255:10:255:11 | TT | +| main.rs:259:13:259:17 | alpha | | main.rs:175:5:178:5 | MyThing | +| main.rs:259:13:259:17 | alpha | A | main.rs:255:10:255:11 | TT | +| main.rs:259:13:259:19 | alpha.a | | main.rs:255:10:255:11 | TT | +| main.rs:266:16:266:19 | SelfParam | | main.rs:180:5:184:5 | MyPair | +| main.rs:266:16:266:19 | SelfParam | P1 | main.rs:264:10:264:10 | A | +| main.rs:266:16:266:19 | SelfParam | P2 | main.rs:264:10:264:10 | A | +| main.rs:266:27:268:9 | { ... } | | main.rs:264:10:264:10 | A | +| main.rs:267:13:267:16 | self | | main.rs:180:5:184:5 | MyPair | +| main.rs:267:13:267:16 | self | P1 | main.rs:264:10:264:10 | A | +| main.rs:267:13:267:16 | self | P2 | main.rs:264:10:264:10 | A | +| main.rs:267:13:267:19 | self.p1 | | main.rs:264:10:264:10 | A | +| main.rs:271:16:271:19 | SelfParam | | main.rs:180:5:184:5 | MyPair | +| main.rs:271:16:271:19 | SelfParam | P1 | main.rs:264:10:264:10 | A | +| main.rs:271:16:271:19 | SelfParam | P2 | main.rs:264:10:264:10 | A | +| main.rs:271:27:273:9 | { ... } | | main.rs:264:10:264:10 | A | +| main.rs:272:13:272:16 | self | | main.rs:180:5:184:5 | MyPair | +| main.rs:272:13:272:16 | self | P1 | main.rs:264:10:264:10 | A | +| main.rs:272:13:272:16 | self | P2 | main.rs:264:10:264:10 | A | +| main.rs:272:13:272:19 | self.p2 | | main.rs:264:10:264:10 | A | +| main.rs:279:16:279:19 | SelfParam | | main.rs:180:5:184:5 | MyPair | +| main.rs:279:16:279:19 | SelfParam | P1 | main.rs:188:5:189:14 | S2 | +| main.rs:279:16:279:19 | SelfParam | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:279:28:281:9 | { ... } | | main.rs:186:5:187:14 | S1 | +| main.rs:280:13:280:16 | self | | main.rs:180:5:184:5 | MyPair | +| main.rs:280:13:280:16 | self | P1 | main.rs:188:5:189:14 | S2 | +| main.rs:280:13:280:16 | self | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:280:13:280:19 | self.p2 | | main.rs:186:5:187:14 | S1 | +| main.rs:284:16:284:19 | SelfParam | | main.rs:180:5:184:5 | MyPair | +| main.rs:284:16:284:19 | SelfParam | P1 | main.rs:188:5:189:14 | S2 | +| main.rs:284:16:284:19 | SelfParam | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:284:28:286:9 | { ... } | | main.rs:188:5:189:14 | S2 | +| main.rs:285:13:285:16 | self | | main.rs:180:5:184:5 | MyPair | +| main.rs:285:13:285:16 | self | P1 | main.rs:188:5:189:14 | S2 | +| main.rs:285:13:285:16 | self | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:285:13:285:19 | self.p1 | | main.rs:188:5:189:14 | S2 | +| main.rs:289:46:289:46 | p | | main.rs:289:24:289:43 | P | +| main.rs:289:58:291:5 | { ... } | | main.rs:289:16:289:17 | V1 | +| main.rs:290:9:290:9 | p | | main.rs:289:24:289:43 | P | +| main.rs:290:9:290:15 | p.fst() | | main.rs:289:16:289:17 | V1 | +| main.rs:293:46:293:46 | p | | main.rs:293:24:293:43 | P | +| main.rs:293:58:295:5 | { ... } | | main.rs:293:20:293:21 | V2 | +| main.rs:294:9:294:9 | p | | main.rs:293:24:293:43 | P | +| main.rs:294:9:294:15 | p.snd() | | main.rs:293:20:293:21 | V2 | +| main.rs:297:54:297:54 | p | | main.rs:180:5:184:5 | MyPair | +| main.rs:297:54:297:54 | p | P1 | main.rs:297:20:297:21 | V0 | +| main.rs:297:54:297:54 | p | P2 | main.rs:297:32:297:51 | P | +| main.rs:297:78:299:5 | { ... } | | main.rs:297:24:297:25 | V1 | +| main.rs:298:9:298:9 | p | | main.rs:180:5:184:5 | MyPair | +| main.rs:298:9:298:9 | p | P1 | main.rs:297:20:297:21 | V0 | +| main.rs:298:9:298:9 | p | P2 | main.rs:297:32:297:51 | P | +| main.rs:298:9:298:12 | p.p2 | | main.rs:297:32:297:51 | P | +| main.rs:298:9:298:18 | ... .fst() | | main.rs:297:24:297:25 | V1 | +| main.rs:303:23:303:26 | SelfParam | | main.rs:301:5:304:5 | Self [trait ConvertTo] | +| main.rs:308:23:308:26 | SelfParam | | main.rs:306:10:306:23 | T | +| main.rs:308:35:310:9 | { ... } | | main.rs:186:5:187:14 | S1 | +| main.rs:309:13:309:16 | self | | main.rs:306:10:306:23 | T | +| main.rs:309:13:309:21 | self.m1() | | main.rs:186:5:187:14 | S1 | +| main.rs:313:41:313:45 | thing | | main.rs:313:23:313:38 | T | +| main.rs:313:57:315:5 | { ... } | | main.rs:313:19:313:20 | TS | +| main.rs:314:9:314:13 | thing | | main.rs:313:23:313:38 | T | +| main.rs:314:9:314:26 | thing.convert_to() | | main.rs:313:19:313:20 | TS | +| main.rs:317:56:317:60 | thing | | main.rs:317:39:317:53 | TP | +| main.rs:317:73:320:5 | { ... } | | main.rs:186:5:187:14 | S1 | +| main.rs:319:9:319:13 | thing | | main.rs:317:39:317:53 | TP | +| main.rs:319:9:319:26 | thing.convert_to() | | main.rs:186:5:187:14 | S1 | +| main.rs:323:13:323:20 | thing_s1 | | main.rs:175:5:178:5 | MyThing | +| main.rs:323:13:323:20 | thing_s1 | A | main.rs:186:5:187:14 | S1 | +| main.rs:323:24:323:40 | MyThing {...} | | main.rs:175:5:178:5 | MyThing | +| main.rs:323:24:323:40 | MyThing {...} | A | main.rs:186:5:187:14 | S1 | +| main.rs:323:37:323:38 | S1 | | main.rs:186:5:187:14 | S1 | +| main.rs:324:13:324:20 | thing_s2 | | main.rs:175:5:178:5 | MyThing | +| main.rs:324:13:324:20 | thing_s2 | A | main.rs:188:5:189:14 | S2 | +| main.rs:324:24:324:40 | MyThing {...} | | main.rs:175:5:178:5 | MyThing | +| main.rs:324:24:324:40 | MyThing {...} | A | main.rs:188:5:189:14 | S2 | +| main.rs:324:37:324:38 | S2 | | main.rs:188:5:189:14 | S2 | +| main.rs:325:13:325:20 | thing_s3 | | main.rs:175:5:178:5 | MyThing | +| main.rs:325:13:325:20 | thing_s3 | A | main.rs:190:5:191:14 | S3 | +| main.rs:325:24:325:40 | MyThing {...} | | main.rs:175:5:178:5 | MyThing | +| main.rs:325:24:325:40 | MyThing {...} | A | main.rs:190:5:191:14 | S3 | +| main.rs:325:37:325:38 | S3 | | main.rs:190:5:191:14 | S3 | +| main.rs:329:18:329:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:329:26:329:33 | thing_s1 | | main.rs:175:5:178:5 | MyThing | +| main.rs:329:26:329:33 | thing_s1 | A | main.rs:186:5:187:14 | S1 | +| main.rs:329:26:329:38 | thing_s1.m1() | | main.rs:186:5:187:14 | S1 | | main.rs:330:18:330:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:330:26:330:27 | p1 | | main.rs:175:5:179:5 | MyPair | -| main.rs:330:26:330:27 | p1 | P1 | main.rs:181:5:182:14 | S1 | -| main.rs:330:26:330:27 | p1 | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:330:26:330:32 | p1.m1() | | main.rs:181:5:182:14 | S1 | -| main.rs:332:13:332:14 | p2 | | main.rs:175:5:179:5 | MyPair | -| main.rs:332:13:332:14 | p2 | P1 | main.rs:181:5:182:14 | S1 | -| main.rs:332:13:332:14 | p2 | P2 | main.rs:183:5:184:14 | S2 | -| main.rs:332:18:332:42 | MyPair {...} | | main.rs:175:5:179:5 | MyPair | -| main.rs:332:18:332:42 | MyPair {...} | P1 | main.rs:181:5:182:14 | S1 | -| main.rs:332:18:332:42 | MyPair {...} | P2 | main.rs:183:5:184:14 | S2 | -| main.rs:332:31:332:32 | S1 | | main.rs:181:5:182:14 | S1 | -| main.rs:332:39:332:40 | S2 | | main.rs:183:5:184:14 | S2 | -| main.rs:333:18:333:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:333:26:333:27 | p2 | | main.rs:175:5:179:5 | MyPair | -| main.rs:333:26:333:27 | p2 | P1 | main.rs:181:5:182:14 | S1 | -| main.rs:333:26:333:27 | p2 | P2 | main.rs:183:5:184:14 | S2 | -| main.rs:333:26:333:32 | p2.m1() | | main.rs:185:5:186:14 | S3 | -| main.rs:335:13:335:14 | p3 | | main.rs:175:5:179:5 | MyPair | -| main.rs:335:13:335:14 | p3 | P1 | main.rs:170:5:173:5 | MyThing | -| main.rs:335:13:335:14 | p3 | P1.A | main.rs:181:5:182:14 | S1 | -| main.rs:335:13:335:14 | p3 | P2 | main.rs:185:5:186:14 | S3 | -| main.rs:335:18:338:9 | MyPair {...} | | main.rs:175:5:179:5 | MyPair | -| main.rs:335:18:338:9 | MyPair {...} | P1 | main.rs:170:5:173:5 | MyThing | -| main.rs:335:18:338:9 | MyPair {...} | P1.A | main.rs:181:5:182:14 | S1 | -| main.rs:335:18:338:9 | MyPair {...} | P2 | main.rs:185:5:186:14 | S3 | -| main.rs:336:17:336:33 | MyThing {...} | | main.rs:170:5:173:5 | MyThing | -| main.rs:336:17:336:33 | MyThing {...} | A | main.rs:181:5:182:14 | S1 | -| main.rs:336:30:336:31 | S1 | | main.rs:181:5:182:14 | S1 | -| main.rs:337:17:337:18 | S3 | | main.rs:185:5:186:14 | S3 | -| main.rs:339:18:339:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:339:26:339:27 | p3 | | main.rs:175:5:179:5 | MyPair | -| main.rs:339:26:339:27 | p3 | P1 | main.rs:170:5:173:5 | MyThing | -| main.rs:339:26:339:27 | p3 | P1.A | main.rs:181:5:182:14 | S1 | -| main.rs:339:26:339:27 | p3 | P2 | main.rs:185:5:186:14 | S3 | -| main.rs:339:26:339:32 | p3.m1() | | main.rs:181:5:182:14 | S1 | -| main.rs:342:13:342:13 | a | | main.rs:175:5:179:5 | MyPair | -| main.rs:342:13:342:13 | a | P1 | main.rs:181:5:182:14 | S1 | -| main.rs:342:13:342:13 | a | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:342:17:342:41 | MyPair {...} | | main.rs:175:5:179:5 | MyPair | -| main.rs:342:17:342:41 | MyPair {...} | P1 | main.rs:181:5:182:14 | S1 | -| main.rs:342:17:342:41 | MyPair {...} | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:342:30:342:31 | S1 | | main.rs:181:5:182:14 | S1 | -| main.rs:342:38:342:39 | S1 | | main.rs:181:5:182:14 | S1 | -| main.rs:343:13:343:13 | x | | main.rs:181:5:182:14 | S1 | -| main.rs:343:17:343:17 | a | | main.rs:175:5:179:5 | MyPair | -| main.rs:343:17:343:17 | a | P1 | main.rs:181:5:182:14 | S1 | -| main.rs:343:17:343:17 | a | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:343:17:343:23 | a.fst() | | main.rs:181:5:182:14 | S1 | +| main.rs:330:26:330:33 | thing_s2 | | main.rs:175:5:178:5 | MyThing | +| main.rs:330:26:330:33 | thing_s2 | A | main.rs:188:5:189:14 | S2 | +| main.rs:330:26:330:38 | thing_s2.m1() | | main.rs:175:5:178:5 | MyThing | +| main.rs:330:26:330:38 | thing_s2.m1() | A | main.rs:188:5:189:14 | S2 | +| main.rs:330:26:330:40 | ... .a | | main.rs:188:5:189:14 | S2 | +| main.rs:331:13:331:14 | s3 | | main.rs:190:5:191:14 | S3 | +| main.rs:331:22:331:29 | thing_s3 | | main.rs:175:5:178:5 | MyThing | +| main.rs:331:22:331:29 | thing_s3 | A | main.rs:190:5:191:14 | S3 | +| main.rs:331:22:331:34 | thing_s3.m1() | | main.rs:190:5:191:14 | S3 | +| main.rs:332:18:332:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:332:26:332:27 | s3 | | main.rs:190:5:191:14 | S3 | +| main.rs:334:13:334:14 | p1 | | main.rs:180:5:184:5 | MyPair | +| main.rs:334:13:334:14 | p1 | P1 | main.rs:186:5:187:14 | S1 | +| main.rs:334:13:334:14 | p1 | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:334:18:334:42 | MyPair {...} | | main.rs:180:5:184:5 | MyPair | +| main.rs:334:18:334:42 | MyPair {...} | P1 | main.rs:186:5:187:14 | S1 | +| main.rs:334:18:334:42 | MyPair {...} | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:334:31:334:32 | S1 | | main.rs:186:5:187:14 | S1 | +| main.rs:334:39:334:40 | S1 | | main.rs:186:5:187:14 | S1 | +| main.rs:335:18:335:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:335:26:335:27 | p1 | | main.rs:180:5:184:5 | MyPair | +| main.rs:335:26:335:27 | p1 | P1 | main.rs:186:5:187:14 | S1 | +| main.rs:335:26:335:27 | p1 | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:335:26:335:32 | p1.m1() | | main.rs:186:5:187:14 | S1 | +| main.rs:337:13:337:14 | p2 | | main.rs:180:5:184:5 | MyPair | +| main.rs:337:13:337:14 | p2 | P1 | main.rs:186:5:187:14 | S1 | +| main.rs:337:13:337:14 | p2 | P2 | main.rs:188:5:189:14 | S2 | +| main.rs:337:18:337:42 | MyPair {...} | | main.rs:180:5:184:5 | MyPair | +| main.rs:337:18:337:42 | MyPair {...} | P1 | main.rs:186:5:187:14 | S1 | +| main.rs:337:18:337:42 | MyPair {...} | P2 | main.rs:188:5:189:14 | S2 | +| main.rs:337:31:337:32 | S1 | | main.rs:186:5:187:14 | S1 | +| main.rs:337:39:337:40 | S2 | | main.rs:188:5:189:14 | S2 | +| main.rs:338:18:338:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:338:26:338:27 | p2 | | main.rs:180:5:184:5 | MyPair | +| main.rs:338:26:338:27 | p2 | P1 | main.rs:186:5:187:14 | S1 | +| main.rs:338:26:338:27 | p2 | P2 | main.rs:188:5:189:14 | S2 | +| main.rs:338:26:338:32 | p2.m1() | | main.rs:190:5:191:14 | S3 | +| main.rs:340:13:340:14 | p3 | | main.rs:180:5:184:5 | MyPair | +| main.rs:340:13:340:14 | p3 | P1 | main.rs:175:5:178:5 | MyThing | +| main.rs:340:13:340:14 | p3 | P1.A | main.rs:186:5:187:14 | S1 | +| main.rs:340:13:340:14 | p3 | P2 | main.rs:190:5:191:14 | S3 | +| main.rs:340:18:343:9 | MyPair {...} | | main.rs:180:5:184:5 | MyPair | +| main.rs:340:18:343:9 | MyPair {...} | P1 | main.rs:175:5:178:5 | MyThing | +| main.rs:340:18:343:9 | MyPair {...} | P1.A | main.rs:186:5:187:14 | S1 | +| main.rs:340:18:343:9 | MyPair {...} | P2 | main.rs:190:5:191:14 | S3 | +| main.rs:341:17:341:33 | MyThing {...} | | main.rs:175:5:178:5 | MyThing | +| main.rs:341:17:341:33 | MyThing {...} | A | main.rs:186:5:187:14 | S1 | +| main.rs:341:30:341:31 | S1 | | main.rs:186:5:187:14 | S1 | +| main.rs:342:17:342:18 | S3 | | main.rs:190:5:191:14 | S3 | | main.rs:344:18:344:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:344:26:344:26 | x | | main.rs:181:5:182:14 | S1 | -| main.rs:345:13:345:13 | y | | main.rs:181:5:182:14 | S1 | -| main.rs:345:17:345:17 | a | | main.rs:175:5:179:5 | MyPair | -| main.rs:345:17:345:17 | a | P1 | main.rs:181:5:182:14 | S1 | -| main.rs:345:17:345:17 | a | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:345:17:345:23 | a.snd() | | main.rs:181:5:182:14 | S1 | -| main.rs:346:18:346:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:346:26:346:26 | y | | main.rs:181:5:182:14 | S1 | -| main.rs:352:13:352:13 | b | | main.rs:175:5:179:5 | MyPair | -| main.rs:352:13:352:13 | b | P1 | main.rs:183:5:184:14 | S2 | -| main.rs:352:13:352:13 | b | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:352:17:352:41 | MyPair {...} | | main.rs:175:5:179:5 | MyPair | -| main.rs:352:17:352:41 | MyPair {...} | P1 | main.rs:183:5:184:14 | S2 | -| main.rs:352:17:352:41 | MyPair {...} | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:352:30:352:31 | S2 | | main.rs:183:5:184:14 | S2 | -| main.rs:352:38:352:39 | S1 | | main.rs:181:5:182:14 | S1 | -| main.rs:353:13:353:13 | x | | main.rs:181:5:182:14 | S1 | -| main.rs:353:17:353:17 | b | | main.rs:175:5:179:5 | MyPair | -| main.rs:353:17:353:17 | b | P1 | main.rs:183:5:184:14 | S2 | -| main.rs:353:17:353:17 | b | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:353:17:353:23 | b.fst() | | main.rs:181:5:182:14 | S1 | -| main.rs:354:18:354:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:354:26:354:26 | x | | main.rs:181:5:182:14 | S1 | -| main.rs:355:13:355:13 | y | | main.rs:183:5:184:14 | S2 | -| main.rs:355:17:355:17 | b | | main.rs:175:5:179:5 | MyPair | -| main.rs:355:17:355:17 | b | P1 | main.rs:183:5:184:14 | S2 | -| main.rs:355:17:355:17 | b | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:355:17:355:23 | b.snd() | | main.rs:183:5:184:14 | S2 | -| main.rs:356:18:356:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:356:26:356:26 | y | | main.rs:183:5:184:14 | S2 | -| main.rs:360:13:360:13 | x | | main.rs:181:5:182:14 | S1 | -| main.rs:360:17:360:39 | call_trait_m1(...) | | main.rs:181:5:182:14 | S1 | -| main.rs:360:31:360:38 | thing_s1 | | main.rs:170:5:173:5 | MyThing | -| main.rs:360:31:360:38 | thing_s1 | A | main.rs:181:5:182:14 | S1 | +| main.rs:344:26:344:27 | p3 | | main.rs:180:5:184:5 | MyPair | +| main.rs:344:26:344:27 | p3 | P1 | main.rs:175:5:178:5 | MyThing | +| main.rs:344:26:344:27 | p3 | P1.A | main.rs:186:5:187:14 | S1 | +| main.rs:344:26:344:27 | p3 | P2 | main.rs:190:5:191:14 | S3 | +| main.rs:344:26:344:32 | p3.m1() | | main.rs:186:5:187:14 | S1 | +| main.rs:347:13:347:13 | a | | main.rs:180:5:184:5 | MyPair | +| main.rs:347:13:347:13 | a | P1 | main.rs:186:5:187:14 | S1 | +| main.rs:347:13:347:13 | a | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:347:17:347:41 | MyPair {...} | | main.rs:180:5:184:5 | MyPair | +| main.rs:347:17:347:41 | MyPair {...} | P1 | main.rs:186:5:187:14 | S1 | +| main.rs:347:17:347:41 | MyPair {...} | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:347:30:347:31 | S1 | | main.rs:186:5:187:14 | S1 | +| main.rs:347:38:347:39 | S1 | | main.rs:186:5:187:14 | S1 | +| main.rs:348:13:348:13 | x | | main.rs:186:5:187:14 | S1 | +| main.rs:348:17:348:17 | a | | main.rs:180:5:184:5 | MyPair | +| main.rs:348:17:348:17 | a | P1 | main.rs:186:5:187:14 | S1 | +| main.rs:348:17:348:17 | a | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:348:17:348:23 | a.fst() | | main.rs:186:5:187:14 | S1 | +| main.rs:349:18:349:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:349:26:349:26 | x | | main.rs:186:5:187:14 | S1 | +| main.rs:350:13:350:13 | y | | main.rs:186:5:187:14 | S1 | +| main.rs:350:17:350:17 | a | | main.rs:180:5:184:5 | MyPair | +| main.rs:350:17:350:17 | a | P1 | main.rs:186:5:187:14 | S1 | +| main.rs:350:17:350:17 | a | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:350:17:350:23 | a.snd() | | main.rs:186:5:187:14 | S1 | +| main.rs:351:18:351:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:351:26:351:26 | y | | main.rs:186:5:187:14 | S1 | +| main.rs:357:13:357:13 | b | | main.rs:180:5:184:5 | MyPair | +| main.rs:357:13:357:13 | b | P1 | main.rs:188:5:189:14 | S2 | +| main.rs:357:13:357:13 | b | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:357:17:357:41 | MyPair {...} | | main.rs:180:5:184:5 | MyPair | +| main.rs:357:17:357:41 | MyPair {...} | P1 | main.rs:188:5:189:14 | S2 | +| main.rs:357:17:357:41 | MyPair {...} | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:357:30:357:31 | S2 | | main.rs:188:5:189:14 | S2 | +| main.rs:357:38:357:39 | S1 | | main.rs:186:5:187:14 | S1 | +| main.rs:358:13:358:13 | x | | main.rs:186:5:187:14 | S1 | +| main.rs:358:17:358:17 | b | | main.rs:180:5:184:5 | MyPair | +| main.rs:358:17:358:17 | b | P1 | main.rs:188:5:189:14 | S2 | +| main.rs:358:17:358:17 | b | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:358:17:358:23 | b.fst() | | main.rs:186:5:187:14 | S1 | +| main.rs:359:18:359:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:359:26:359:26 | x | | main.rs:186:5:187:14 | S1 | +| main.rs:360:13:360:13 | y | | main.rs:188:5:189:14 | S2 | +| main.rs:360:17:360:17 | b | | main.rs:180:5:184:5 | MyPair | +| main.rs:360:17:360:17 | b | P1 | main.rs:188:5:189:14 | S2 | +| main.rs:360:17:360:17 | b | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:360:17:360:23 | b.snd() | | main.rs:188:5:189:14 | S2 | | main.rs:361:18:361:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:361:26:361:26 | x | | main.rs:181:5:182:14 | S1 | -| main.rs:362:13:362:13 | y | | main.rs:170:5:173:5 | MyThing | -| main.rs:362:13:362:13 | y | A | main.rs:183:5:184:14 | S2 | -| main.rs:362:17:362:39 | call_trait_m1(...) | | main.rs:170:5:173:5 | MyThing | -| main.rs:362:17:362:39 | call_trait_m1(...) | A | main.rs:183:5:184:14 | S2 | -| main.rs:362:31:362:38 | thing_s2 | | main.rs:170:5:173:5 | MyThing | -| main.rs:362:31:362:38 | thing_s2 | A | main.rs:183:5:184:14 | S2 | -| main.rs:363:18:363:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:363:26:363:26 | y | | main.rs:170:5:173:5 | MyThing | -| main.rs:363:26:363:26 | y | A | main.rs:183:5:184:14 | S2 | -| main.rs:363:26:363:28 | y.a | | main.rs:183:5:184:14 | S2 | -| main.rs:366:13:366:13 | a | | main.rs:175:5:179:5 | MyPair | -| main.rs:366:13:366:13 | a | P1 | main.rs:181:5:182:14 | S1 | -| main.rs:366:13:366:13 | a | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:366:17:366:41 | MyPair {...} | | main.rs:175:5:179:5 | MyPair | -| main.rs:366:17:366:41 | MyPair {...} | P1 | main.rs:181:5:182:14 | S1 | -| main.rs:366:17:366:41 | MyPair {...} | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:366:30:366:31 | S1 | | main.rs:181:5:182:14 | S1 | -| main.rs:366:38:366:39 | S1 | | main.rs:181:5:182:14 | S1 | -| main.rs:367:13:367:13 | x | | main.rs:181:5:182:14 | S1 | -| main.rs:367:17:367:26 | get_fst(...) | | main.rs:181:5:182:14 | S1 | -| main.rs:367:25:367:25 | a | | main.rs:175:5:179:5 | MyPair | -| main.rs:367:25:367:25 | a | P1 | main.rs:181:5:182:14 | S1 | -| main.rs:367:25:367:25 | a | P2 | main.rs:181:5:182:14 | S1 | +| main.rs:361:26:361:26 | y | | main.rs:188:5:189:14 | S2 | +| main.rs:365:13:365:13 | x | | main.rs:186:5:187:14 | S1 | +| main.rs:365:17:365:39 | call_trait_m1(...) | | main.rs:186:5:187:14 | S1 | +| main.rs:365:31:365:38 | thing_s1 | | main.rs:175:5:178:5 | MyThing | +| main.rs:365:31:365:38 | thing_s1 | A | main.rs:186:5:187:14 | S1 | +| main.rs:366:18:366:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:366:26:366:26 | x | | main.rs:186:5:187:14 | S1 | +| main.rs:367:13:367:13 | y | | main.rs:175:5:178:5 | MyThing | +| main.rs:367:13:367:13 | y | A | main.rs:188:5:189:14 | S2 | +| main.rs:367:17:367:39 | call_trait_m1(...) | | main.rs:175:5:178:5 | MyThing | +| main.rs:367:17:367:39 | call_trait_m1(...) | A | main.rs:188:5:189:14 | S2 | +| main.rs:367:31:367:38 | thing_s2 | | main.rs:175:5:178:5 | MyThing | +| main.rs:367:31:367:38 | thing_s2 | A | main.rs:188:5:189:14 | S2 | | main.rs:368:18:368:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:368:26:368:26 | x | | main.rs:181:5:182:14 | S1 | -| main.rs:369:13:369:13 | y | | main.rs:181:5:182:14 | S1 | -| main.rs:369:17:369:26 | get_snd(...) | | main.rs:181:5:182:14 | S1 | -| main.rs:369:25:369:25 | a | | main.rs:175:5:179:5 | MyPair | -| main.rs:369:25:369:25 | a | P1 | main.rs:181:5:182:14 | S1 | -| main.rs:369:25:369:25 | a | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:370:18:370:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:370:26:370:26 | y | | main.rs:181:5:182:14 | S1 | -| main.rs:373:13:373:13 | b | | main.rs:175:5:179:5 | MyPair | -| main.rs:373:13:373:13 | b | P1 | main.rs:183:5:184:14 | S2 | -| main.rs:373:13:373:13 | b | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:373:17:373:41 | MyPair {...} | | main.rs:175:5:179:5 | MyPair | -| main.rs:373:17:373:41 | MyPair {...} | P1 | main.rs:183:5:184:14 | S2 | -| main.rs:373:17:373:41 | MyPair {...} | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:373:30:373:31 | S2 | | main.rs:183:5:184:14 | S2 | -| main.rs:373:38:373:39 | S1 | | main.rs:181:5:182:14 | S1 | -| main.rs:374:13:374:13 | x | | main.rs:181:5:182:14 | S1 | -| main.rs:374:17:374:26 | get_fst(...) | | main.rs:181:5:182:14 | S1 | -| main.rs:374:25:374:25 | b | | main.rs:175:5:179:5 | MyPair | -| main.rs:374:25:374:25 | b | P1 | main.rs:183:5:184:14 | S2 | -| main.rs:374:25:374:25 | b | P2 | main.rs:181:5:182:14 | S1 | +| main.rs:368:26:368:26 | y | | main.rs:175:5:178:5 | MyThing | +| main.rs:368:26:368:26 | y | A | main.rs:188:5:189:14 | S2 | +| main.rs:368:26:368:28 | y.a | | main.rs:188:5:189:14 | S2 | +| main.rs:371:13:371:13 | a | | main.rs:180:5:184:5 | MyPair | +| main.rs:371:13:371:13 | a | P1 | main.rs:186:5:187:14 | S1 | +| main.rs:371:13:371:13 | a | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:371:17:371:41 | MyPair {...} | | main.rs:180:5:184:5 | MyPair | +| main.rs:371:17:371:41 | MyPair {...} | P1 | main.rs:186:5:187:14 | S1 | +| main.rs:371:17:371:41 | MyPair {...} | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:371:30:371:31 | S1 | | main.rs:186:5:187:14 | S1 | +| main.rs:371:38:371:39 | S1 | | main.rs:186:5:187:14 | S1 | +| main.rs:372:13:372:13 | x | | main.rs:186:5:187:14 | S1 | +| main.rs:372:17:372:26 | get_fst(...) | | main.rs:186:5:187:14 | S1 | +| main.rs:372:25:372:25 | a | | main.rs:180:5:184:5 | MyPair | +| main.rs:372:25:372:25 | a | P1 | main.rs:186:5:187:14 | S1 | +| main.rs:372:25:372:25 | a | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:373:18:373:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:373:26:373:26 | x | | main.rs:186:5:187:14 | S1 | +| main.rs:374:13:374:13 | y | | main.rs:186:5:187:14 | S1 | +| main.rs:374:17:374:26 | get_snd(...) | | main.rs:186:5:187:14 | S1 | +| main.rs:374:25:374:25 | a | | main.rs:180:5:184:5 | MyPair | +| main.rs:374:25:374:25 | a | P1 | main.rs:186:5:187:14 | S1 | +| main.rs:374:25:374:25 | a | P2 | main.rs:186:5:187:14 | S1 | | main.rs:375:18:375:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:375:26:375:26 | x | | main.rs:181:5:182:14 | S1 | -| main.rs:376:13:376:13 | y | | main.rs:183:5:184:14 | S2 | -| main.rs:376:17:376:26 | get_snd(...) | | main.rs:183:5:184:14 | S2 | -| main.rs:376:25:376:25 | b | | main.rs:175:5:179:5 | MyPair | -| main.rs:376:25:376:25 | b | P1 | main.rs:183:5:184:14 | S2 | -| main.rs:376:25:376:25 | b | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:377:18:377:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:377:26:377:26 | y | | main.rs:183:5:184:14 | S2 | -| main.rs:379:13:379:13 | c | | main.rs:175:5:179:5 | MyPair | -| main.rs:379:13:379:13 | c | P1 | main.rs:185:5:186:14 | S3 | -| main.rs:379:13:379:13 | c | P2 | main.rs:175:5:179:5 | MyPair | -| main.rs:379:13:379:13 | c | P2.P1 | main.rs:183:5:184:14 | S2 | -| main.rs:379:13:379:13 | c | P2.P2 | main.rs:181:5:182:14 | S1 | -| main.rs:379:17:382:9 | MyPair {...} | | main.rs:175:5:179:5 | MyPair | -| main.rs:379:17:382:9 | MyPair {...} | P1 | main.rs:185:5:186:14 | S3 | -| main.rs:379:17:382:9 | MyPair {...} | P2 | main.rs:175:5:179:5 | MyPair | -| main.rs:379:17:382:9 | MyPair {...} | P2.P1 | main.rs:183:5:184:14 | S2 | -| main.rs:379:17:382:9 | MyPair {...} | P2.P2 | main.rs:181:5:182:14 | S1 | -| main.rs:380:17:380:18 | S3 | | main.rs:185:5:186:14 | S3 | -| main.rs:381:17:381:41 | MyPair {...} | | main.rs:175:5:179:5 | MyPair | -| main.rs:381:17:381:41 | MyPair {...} | P1 | main.rs:183:5:184:14 | S2 | -| main.rs:381:17:381:41 | MyPair {...} | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:381:30:381:31 | S2 | | main.rs:183:5:184:14 | S2 | -| main.rs:381:38:381:39 | S1 | | main.rs:181:5:182:14 | S1 | -| main.rs:383:13:383:13 | x | | main.rs:181:5:182:14 | S1 | -| main.rs:383:17:383:30 | get_snd_fst(...) | | main.rs:181:5:182:14 | S1 | -| main.rs:383:29:383:29 | c | | main.rs:175:5:179:5 | MyPair | -| main.rs:383:29:383:29 | c | P1 | main.rs:185:5:186:14 | S3 | -| main.rs:383:29:383:29 | c | P2 | main.rs:175:5:179:5 | MyPair | -| main.rs:383:29:383:29 | c | P2.P1 | main.rs:183:5:184:14 | S2 | -| main.rs:383:29:383:29 | c | P2.P2 | main.rs:181:5:182:14 | S1 | -| main.rs:385:13:385:17 | thing | | main.rs:170:5:173:5 | MyThing | -| main.rs:385:13:385:17 | thing | A | main.rs:181:5:182:14 | S1 | -| main.rs:385:21:385:37 | MyThing {...} | | main.rs:170:5:173:5 | MyThing | -| main.rs:385:21:385:37 | MyThing {...} | A | main.rs:181:5:182:14 | S1 | -| main.rs:385:34:385:35 | S1 | | main.rs:181:5:182:14 | S1 | -| main.rs:386:17:386:21 | thing | | main.rs:170:5:173:5 | MyThing | -| main.rs:386:17:386:21 | thing | A | main.rs:181:5:182:14 | S1 | -| main.rs:387:13:387:13 | j | | main.rs:181:5:182:14 | S1 | -| main.rs:387:17:387:33 | convert_to(...) | | main.rs:181:5:182:14 | S1 | -| main.rs:387:28:387:32 | thing | | main.rs:170:5:173:5 | MyThing | -| main.rs:387:28:387:32 | thing | A | main.rs:181:5:182:14 | S1 | -| main.rs:396:26:396:29 | SelfParam | | main.rs:395:5:399:5 | Self [trait OverlappingTrait] | -| main.rs:398:28:398:31 | SelfParam | | main.rs:395:5:399:5 | Self [trait OverlappingTrait] | -| main.rs:398:34:398:35 | s1 | | main.rs:392:5:393:14 | S1 | -| main.rs:403:26:403:29 | SelfParam | | main.rs:392:5:393:14 | S1 | -| main.rs:403:38:405:9 | { ... } | | main.rs:392:5:393:14 | S1 | -| main.rs:404:20:404:31 | "not called" | | {EXTERNAL LOCATION} | str | -| main.rs:408:28:408:31 | SelfParam | | main.rs:392:5:393:14 | S1 | -| main.rs:408:34:408:35 | s1 | | main.rs:392:5:393:14 | S1 | -| main.rs:408:48:410:9 | { ... } | | main.rs:392:5:393:14 | S1 | +| main.rs:375:26:375:26 | y | | main.rs:186:5:187:14 | S1 | +| main.rs:378:13:378:13 | b | | main.rs:180:5:184:5 | MyPair | +| main.rs:378:13:378:13 | b | P1 | main.rs:188:5:189:14 | S2 | +| main.rs:378:13:378:13 | b | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:378:17:378:41 | MyPair {...} | | main.rs:180:5:184:5 | MyPair | +| main.rs:378:17:378:41 | MyPair {...} | P1 | main.rs:188:5:189:14 | S2 | +| main.rs:378:17:378:41 | MyPair {...} | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:378:30:378:31 | S2 | | main.rs:188:5:189:14 | S2 | +| main.rs:378:38:378:39 | S1 | | main.rs:186:5:187:14 | S1 | +| main.rs:379:13:379:13 | x | | main.rs:186:5:187:14 | S1 | +| main.rs:379:17:379:26 | get_fst(...) | | main.rs:186:5:187:14 | S1 | +| main.rs:379:25:379:25 | b | | main.rs:180:5:184:5 | MyPair | +| main.rs:379:25:379:25 | b | P1 | main.rs:188:5:189:14 | S2 | +| main.rs:379:25:379:25 | b | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:380:18:380:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:380:26:380:26 | x | | main.rs:186:5:187:14 | S1 | +| main.rs:381:13:381:13 | y | | main.rs:188:5:189:14 | S2 | +| main.rs:381:17:381:26 | get_snd(...) | | main.rs:188:5:189:14 | S2 | +| main.rs:381:25:381:25 | b | | main.rs:180:5:184:5 | MyPair | +| main.rs:381:25:381:25 | b | P1 | main.rs:188:5:189:14 | S2 | +| main.rs:381:25:381:25 | b | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:382:18:382:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:382:26:382:26 | y | | main.rs:188:5:189:14 | S2 | +| main.rs:384:13:384:13 | c | | main.rs:180:5:184:5 | MyPair | +| main.rs:384:13:384:13 | c | P1 | main.rs:190:5:191:14 | S3 | +| main.rs:384:13:384:13 | c | P2 | main.rs:180:5:184:5 | MyPair | +| main.rs:384:13:384:13 | c | P2.P1 | main.rs:188:5:189:14 | S2 | +| main.rs:384:13:384:13 | c | P2.P2 | main.rs:186:5:187:14 | S1 | +| main.rs:384:17:387:9 | MyPair {...} | | main.rs:180:5:184:5 | MyPair | +| main.rs:384:17:387:9 | MyPair {...} | P1 | main.rs:190:5:191:14 | S3 | +| main.rs:384:17:387:9 | MyPair {...} | P2 | main.rs:180:5:184:5 | MyPair | +| main.rs:384:17:387:9 | MyPair {...} | P2.P1 | main.rs:188:5:189:14 | S2 | +| main.rs:384:17:387:9 | MyPair {...} | P2.P2 | main.rs:186:5:187:14 | S1 | +| main.rs:385:17:385:18 | S3 | | main.rs:190:5:191:14 | S3 | +| main.rs:386:17:386:41 | MyPair {...} | | main.rs:180:5:184:5 | MyPair | +| main.rs:386:17:386:41 | MyPair {...} | P1 | main.rs:188:5:189:14 | S2 | +| main.rs:386:17:386:41 | MyPair {...} | P2 | main.rs:186:5:187:14 | S1 | +| main.rs:386:30:386:31 | S2 | | main.rs:188:5:189:14 | S2 | +| main.rs:386:38:386:39 | S1 | | main.rs:186:5:187:14 | S1 | +| main.rs:388:13:388:13 | x | | main.rs:186:5:187:14 | S1 | +| main.rs:388:17:388:30 | get_snd_fst(...) | | main.rs:186:5:187:14 | S1 | +| main.rs:388:29:388:29 | c | | main.rs:180:5:184:5 | MyPair | +| main.rs:388:29:388:29 | c | P1 | main.rs:190:5:191:14 | S3 | +| main.rs:388:29:388:29 | c | P2 | main.rs:180:5:184:5 | MyPair | +| main.rs:388:29:388:29 | c | P2.P1 | main.rs:188:5:189:14 | S2 | +| main.rs:388:29:388:29 | c | P2.P2 | main.rs:186:5:187:14 | S1 | +| main.rs:390:13:390:17 | thing | | main.rs:175:5:178:5 | MyThing | +| main.rs:390:13:390:17 | thing | A | main.rs:186:5:187:14 | S1 | +| main.rs:390:21:390:37 | MyThing {...} | | main.rs:175:5:178:5 | MyThing | +| main.rs:390:21:390:37 | MyThing {...} | A | main.rs:186:5:187:14 | S1 | +| main.rs:390:34:390:35 | S1 | | main.rs:186:5:187:14 | S1 | +| main.rs:391:17:391:21 | thing | | main.rs:175:5:178:5 | MyThing | +| main.rs:391:17:391:21 | thing | A | main.rs:186:5:187:14 | S1 | +| main.rs:392:13:392:13 | j | | main.rs:186:5:187:14 | S1 | +| main.rs:392:17:392:33 | convert_to(...) | | main.rs:186:5:187:14 | S1 | +| main.rs:392:28:392:32 | thing | | main.rs:175:5:178:5 | MyThing | +| main.rs:392:28:392:32 | thing | A | main.rs:186:5:187:14 | S1 | +| main.rs:401:26:401:29 | SelfParam | | main.rs:400:5:404:5 | Self [trait OverlappingTrait] | +| main.rs:403:28:403:31 | SelfParam | | main.rs:400:5:404:5 | Self [trait OverlappingTrait] | +| main.rs:403:34:403:35 | s1 | | main.rs:397:5:398:14 | S1 | +| main.rs:408:26:408:29 | SelfParam | | main.rs:397:5:398:14 | S1 | +| main.rs:408:38:410:9 | { ... } | | main.rs:397:5:398:14 | S1 | | main.rs:409:20:409:31 | "not called" | | {EXTERNAL LOCATION} | str | -| main.rs:415:26:415:29 | SelfParam | | main.rs:392:5:393:14 | S1 | -| main.rs:415:38:417:9 | { ... } | | main.rs:392:5:393:14 | S1 | -| main.rs:416:13:416:16 | self | | main.rs:392:5:393:14 | S1 | -| main.rs:420:28:420:31 | SelfParam | | main.rs:392:5:393:14 | S1 | -| main.rs:420:40:422:9 | { ... } | | main.rs:392:5:393:14 | S1 | -| main.rs:421:13:421:16 | self | | main.rs:392:5:393:14 | S1 | -| main.rs:426:13:426:13 | x | | main.rs:392:5:393:14 | S1 | -| main.rs:426:17:426:18 | S1 | | main.rs:392:5:393:14 | S1 | -| main.rs:427:18:427:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:427:26:427:26 | x | | main.rs:392:5:393:14 | S1 | -| main.rs:427:26:427:42 | x.common_method() | | main.rs:392:5:393:14 | S1 | -| main.rs:428:18:428:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:428:26:428:26 | x | | main.rs:392:5:393:14 | S1 | -| main.rs:428:26:428:44 | x.common_method_2() | | main.rs:392:5:393:14 | S1 | -| main.rs:445:19:445:22 | SelfParam | | main.rs:443:5:446:5 | Self [trait FirstTrait] | -| main.rs:450:19:450:22 | SelfParam | | main.rs:448:5:451:5 | Self [trait SecondTrait] | -| main.rs:453:64:453:64 | x | | main.rs:453:45:453:61 | T | -| main.rs:455:13:455:14 | s1 | | main.rs:453:35:453:42 | I | -| main.rs:455:18:455:18 | x | | main.rs:453:45:453:61 | T | -| main.rs:455:18:455:27 | x.method() | | main.rs:453:35:453:42 | I | -| main.rs:456:18:456:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:456:26:456:27 | s1 | | main.rs:453:35:453:42 | I | -| main.rs:459:65:459:65 | x | | main.rs:459:46:459:62 | T | -| main.rs:461:13:461:14 | s2 | | main.rs:459:36:459:43 | I | -| main.rs:461:18:461:18 | x | | main.rs:459:46:459:62 | T | -| main.rs:461:18:461:27 | x.method() | | main.rs:459:36:459:43 | I | -| main.rs:462:18:462:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:462:26:462:27 | s2 | | main.rs:459:36:459:43 | I | -| main.rs:465:49:465:49 | x | | main.rs:465:30:465:46 | T | -| main.rs:466:13:466:13 | s | | main.rs:435:5:436:14 | S1 | -| main.rs:466:17:466:17 | x | | main.rs:465:30:465:46 | T | -| main.rs:466:17:466:26 | x.method() | | main.rs:435:5:436:14 | S1 | +| main.rs:413:28:413:31 | SelfParam | | main.rs:397:5:398:14 | S1 | +| main.rs:413:34:413:35 | s1 | | main.rs:397:5:398:14 | S1 | +| main.rs:413:48:415:9 | { ... } | | main.rs:397:5:398:14 | S1 | +| main.rs:414:20:414:31 | "not called" | | {EXTERNAL LOCATION} | str | +| main.rs:420:26:420:29 | SelfParam | | main.rs:397:5:398:14 | S1 | +| main.rs:420:38:422:9 | { ... } | | main.rs:397:5:398:14 | S1 | +| main.rs:421:13:421:16 | self | | main.rs:397:5:398:14 | S1 | +| main.rs:425:28:425:31 | SelfParam | | main.rs:397:5:398:14 | S1 | +| main.rs:425:40:427:9 | { ... } | | main.rs:397:5:398:14 | S1 | +| main.rs:426:13:426:16 | self | | main.rs:397:5:398:14 | S1 | +| main.rs:431:13:431:13 | x | | main.rs:397:5:398:14 | S1 | +| main.rs:431:17:431:18 | S1 | | main.rs:397:5:398:14 | S1 | +| main.rs:432:18:432:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:432:26:432:26 | x | | main.rs:397:5:398:14 | S1 | +| main.rs:432:26:432:42 | x.common_method() | | main.rs:397:5:398:14 | S1 | +| main.rs:433:18:433:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:433:26:433:26 | x | | main.rs:397:5:398:14 | S1 | +| main.rs:433:26:433:44 | x.common_method_2() | | main.rs:397:5:398:14 | S1 | +| main.rs:450:19:450:22 | SelfParam | | main.rs:448:5:451:5 | Self [trait FirstTrait] | +| main.rs:455:19:455:22 | SelfParam | | main.rs:453:5:456:5 | Self [trait SecondTrait] | +| main.rs:458:64:458:64 | x | | main.rs:458:45:458:61 | T | +| main.rs:460:13:460:14 | s1 | | main.rs:458:35:458:42 | I | +| main.rs:460:18:460:18 | x | | main.rs:458:45:458:61 | T | +| main.rs:460:18:460:27 | x.method() | | main.rs:458:35:458:42 | I | +| main.rs:461:18:461:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:461:26:461:27 | s1 | | main.rs:458:35:458:42 | I | +| main.rs:464:65:464:65 | x | | main.rs:464:46:464:62 | T | +| main.rs:466:13:466:14 | s2 | | main.rs:464:36:464:43 | I | +| main.rs:466:18:466:18 | x | | main.rs:464:46:464:62 | T | +| main.rs:466:18:466:27 | x.method() | | main.rs:464:36:464:43 | I | | main.rs:467:18:467:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:467:26:467:26 | s | | main.rs:435:5:436:14 | S1 | -| main.rs:470:53:470:53 | x | | main.rs:470:34:470:50 | T | -| main.rs:471:13:471:13 | s | | main.rs:435:5:436:14 | S1 | -| main.rs:471:17:471:17 | x | | main.rs:470:34:470:50 | T | -| main.rs:471:17:471:26 | x.method() | | main.rs:435:5:436:14 | S1 | +| main.rs:467:26:467:27 | s2 | | main.rs:464:36:464:43 | I | +| main.rs:470:49:470:49 | x | | main.rs:470:30:470:46 | T | +| main.rs:471:13:471:13 | s | | main.rs:440:5:441:14 | S1 | +| main.rs:471:17:471:17 | x | | main.rs:470:30:470:46 | T | +| main.rs:471:17:471:26 | x.method() | | main.rs:440:5:441:14 | S1 | | main.rs:472:18:472:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:472:26:472:26 | s | | main.rs:435:5:436:14 | S1 | -| main.rs:476:16:476:19 | SelfParam | | main.rs:475:5:479:5 | Self [trait Pair] | -| main.rs:478:16:478:19 | SelfParam | | main.rs:475:5:479:5 | Self [trait Pair] | -| main.rs:481:58:481:58 | x | | main.rs:481:41:481:55 | T | -| main.rs:481:64:481:64 | y | | main.rs:481:41:481:55 | T | -| main.rs:483:13:483:14 | s1 | | main.rs:435:5:436:14 | S1 | -| main.rs:483:18:483:18 | x | | main.rs:481:41:481:55 | T | -| main.rs:483:18:483:24 | x.fst() | | main.rs:435:5:436:14 | S1 | -| main.rs:484:13:484:14 | s2 | | main.rs:438:5:439:14 | S2 | -| main.rs:484:18:484:18 | y | | main.rs:481:41:481:55 | T | -| main.rs:484:18:484:24 | y.snd() | | main.rs:438:5:439:14 | S2 | -| main.rs:485:18:485:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:485:32:485:33 | s1 | | main.rs:435:5:436:14 | S1 | -| main.rs:485:36:485:37 | s2 | | main.rs:438:5:439:14 | S2 | -| main.rs:488:69:488:69 | x | | main.rs:488:52:488:66 | T | -| main.rs:488:75:488:75 | y | | main.rs:488:52:488:66 | T | -| main.rs:490:13:490:14 | s1 | | main.rs:435:5:436:14 | S1 | -| main.rs:490:18:490:18 | x | | main.rs:488:52:488:66 | T | -| main.rs:490:18:490:24 | x.fst() | | main.rs:435:5:436:14 | S1 | -| main.rs:491:13:491:14 | s2 | | main.rs:488:41:488:49 | T2 | -| main.rs:491:18:491:18 | y | | main.rs:488:52:488:66 | T | -| main.rs:491:18:491:24 | y.snd() | | main.rs:488:41:488:49 | T2 | -| main.rs:492:18:492:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:492:32:492:33 | s1 | | main.rs:435:5:436:14 | S1 | -| main.rs:492:36:492:37 | s2 | | main.rs:488:41:488:49 | T2 | -| main.rs:508:15:508:18 | SelfParam | | main.rs:507:5:516:5 | Self [trait MyTrait] | -| main.rs:510:15:510:18 | SelfParam | | main.rs:507:5:516:5 | Self [trait MyTrait] | -| main.rs:513:9:515:9 | { ... } | | main.rs:507:19:507:19 | A | -| main.rs:514:13:514:16 | self | | main.rs:507:5:516:5 | Self [trait MyTrait] | -| main.rs:514:13:514:21 | self.m1() | | main.rs:507:19:507:19 | A | -| main.rs:519:43:519:43 | x | | main.rs:519:26:519:40 | T2 | -| main.rs:519:56:521:5 | { ... } | | main.rs:519:22:519:23 | T1 | -| main.rs:520:9:520:9 | x | | main.rs:519:26:519:40 | T2 | -| main.rs:520:9:520:14 | x.m1() | | main.rs:519:22:519:23 | T1 | -| main.rs:524:49:524:49 | x | | main.rs:497:5:500:5 | MyThing | -| main.rs:524:49:524:49 | x | T | main.rs:524:32:524:46 | T2 | -| main.rs:524:71:526:5 | { ... } | | main.rs:524:28:524:29 | T1 | -| main.rs:525:9:525:9 | x | | main.rs:497:5:500:5 | MyThing | -| main.rs:525:9:525:9 | x | T | main.rs:524:32:524:46 | T2 | -| main.rs:525:9:525:11 | x.a | | main.rs:524:32:524:46 | T2 | -| main.rs:525:9:525:16 | ... .m1() | | main.rs:524:28:524:29 | T1 | -| main.rs:529:15:529:18 | SelfParam | | main.rs:497:5:500:5 | MyThing | -| main.rs:529:15:529:18 | SelfParam | T | main.rs:528:10:528:10 | T | -| main.rs:529:26:531:9 | { ... } | | main.rs:528:10:528:10 | T | -| main.rs:530:13:530:16 | self | | main.rs:497:5:500:5 | MyThing | -| main.rs:530:13:530:16 | self | T | main.rs:528:10:528:10 | T | -| main.rs:530:13:530:18 | self.a | | main.rs:528:10:528:10 | T | -| main.rs:535:13:535:13 | x | | main.rs:497:5:500:5 | MyThing | -| main.rs:535:13:535:13 | x | T | main.rs:502:5:503:14 | S1 | -| main.rs:535:17:535:33 | MyThing {...} | | main.rs:497:5:500:5 | MyThing | -| main.rs:535:17:535:33 | MyThing {...} | T | main.rs:502:5:503:14 | S1 | -| main.rs:535:30:535:31 | S1 | | main.rs:502:5:503:14 | S1 | -| main.rs:536:13:536:13 | y | | main.rs:497:5:500:5 | MyThing | -| main.rs:536:13:536:13 | y | T | main.rs:504:5:505:14 | S2 | -| main.rs:536:17:536:33 | MyThing {...} | | main.rs:497:5:500:5 | MyThing | -| main.rs:536:17:536:33 | MyThing {...} | T | main.rs:504:5:505:14 | S2 | -| main.rs:536:30:536:31 | S2 | | main.rs:504:5:505:14 | S2 | -| main.rs:538:18:538:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:538:26:538:26 | x | | main.rs:497:5:500:5 | MyThing | -| main.rs:538:26:538:26 | x | T | main.rs:502:5:503:14 | S1 | -| main.rs:538:26:538:31 | x.m1() | | main.rs:502:5:503:14 | S1 | -| main.rs:539:18:539:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:539:26:539:26 | y | | main.rs:497:5:500:5 | MyThing | -| main.rs:539:26:539:26 | y | T | main.rs:504:5:505:14 | S2 | -| main.rs:539:26:539:31 | y.m1() | | main.rs:504:5:505:14 | S2 | -| main.rs:541:13:541:13 | x | | main.rs:497:5:500:5 | MyThing | -| main.rs:541:13:541:13 | x | T | main.rs:502:5:503:14 | S1 | -| main.rs:541:17:541:33 | MyThing {...} | | main.rs:497:5:500:5 | MyThing | -| main.rs:541:17:541:33 | MyThing {...} | T | main.rs:502:5:503:14 | S1 | -| main.rs:541:30:541:31 | S1 | | main.rs:502:5:503:14 | S1 | -| main.rs:542:13:542:13 | y | | main.rs:497:5:500:5 | MyThing | -| main.rs:542:13:542:13 | y | T | main.rs:504:5:505:14 | S2 | -| main.rs:542:17:542:33 | MyThing {...} | | main.rs:497:5:500:5 | MyThing | -| main.rs:542:17:542:33 | MyThing {...} | T | main.rs:504:5:505:14 | S2 | -| main.rs:542:30:542:31 | S2 | | main.rs:504:5:505:14 | S2 | -| main.rs:544:18:544:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:544:26:544:26 | x | | main.rs:497:5:500:5 | MyThing | -| main.rs:544:26:544:26 | x | T | main.rs:502:5:503:14 | S1 | -| main.rs:544:26:544:31 | x.m2() | | main.rs:502:5:503:14 | S1 | -| main.rs:545:18:545:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:545:26:545:26 | y | | main.rs:497:5:500:5 | MyThing | -| main.rs:545:26:545:26 | y | T | main.rs:504:5:505:14 | S2 | -| main.rs:545:26:545:31 | y.m2() | | main.rs:504:5:505:14 | S2 | -| main.rs:547:13:547:14 | x2 | | main.rs:497:5:500:5 | MyThing | -| main.rs:547:13:547:14 | x2 | T | main.rs:502:5:503:14 | S1 | -| main.rs:547:18:547:34 | MyThing {...} | | main.rs:497:5:500:5 | MyThing | -| main.rs:547:18:547:34 | MyThing {...} | T | main.rs:502:5:503:14 | S1 | -| main.rs:547:31:547:32 | S1 | | main.rs:502:5:503:14 | S1 | -| main.rs:548:13:548:14 | y2 | | main.rs:497:5:500:5 | MyThing | -| main.rs:548:13:548:14 | y2 | T | main.rs:504:5:505:14 | S2 | -| main.rs:548:18:548:34 | MyThing {...} | | main.rs:497:5:500:5 | MyThing | -| main.rs:548:18:548:34 | MyThing {...} | T | main.rs:504:5:505:14 | S2 | -| main.rs:548:31:548:32 | S2 | | main.rs:504:5:505:14 | S2 | -| main.rs:550:18:550:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:550:26:550:42 | call_trait_m1(...) | | main.rs:502:5:503:14 | S1 | -| main.rs:550:40:550:41 | x2 | | main.rs:497:5:500:5 | MyThing | -| main.rs:550:40:550:41 | x2 | T | main.rs:502:5:503:14 | S1 | -| main.rs:551:18:551:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:551:26:551:42 | call_trait_m1(...) | | main.rs:504:5:505:14 | S2 | -| main.rs:551:40:551:41 | y2 | | main.rs:497:5:500:5 | MyThing | -| main.rs:551:40:551:41 | y2 | T | main.rs:504:5:505:14 | S2 | -| main.rs:553:13:553:14 | x3 | | main.rs:497:5:500:5 | MyThing | -| main.rs:553:13:553:14 | x3 | T | main.rs:497:5:500:5 | MyThing | -| main.rs:553:13:553:14 | x3 | T.T | main.rs:502:5:503:14 | S1 | -| main.rs:553:18:555:9 | MyThing {...} | | main.rs:497:5:500:5 | MyThing | -| main.rs:553:18:555:9 | MyThing {...} | T | main.rs:497:5:500:5 | MyThing | -| main.rs:553:18:555:9 | MyThing {...} | T.T | main.rs:502:5:503:14 | S1 | -| main.rs:554:16:554:32 | MyThing {...} | | main.rs:497:5:500:5 | MyThing | -| main.rs:554:16:554:32 | MyThing {...} | T | main.rs:502:5:503:14 | S1 | -| main.rs:554:29:554:30 | S1 | | main.rs:502:5:503:14 | S1 | -| main.rs:556:13:556:14 | y3 | | main.rs:497:5:500:5 | MyThing | -| main.rs:556:13:556:14 | y3 | T | main.rs:497:5:500:5 | MyThing | -| main.rs:556:13:556:14 | y3 | T.T | main.rs:504:5:505:14 | S2 | -| main.rs:556:18:558:9 | MyThing {...} | | main.rs:497:5:500:5 | MyThing | -| main.rs:556:18:558:9 | MyThing {...} | T | main.rs:497:5:500:5 | MyThing | -| main.rs:556:18:558:9 | MyThing {...} | T.T | main.rs:504:5:505:14 | S2 | -| main.rs:557:16:557:32 | MyThing {...} | | main.rs:497:5:500:5 | MyThing | -| main.rs:557:16:557:32 | MyThing {...} | T | main.rs:504:5:505:14 | S2 | -| main.rs:557:29:557:30 | S2 | | main.rs:504:5:505:14 | S2 | -| main.rs:560:13:560:13 | a | | main.rs:502:5:503:14 | S1 | -| main.rs:560:17:560:39 | call_trait_thing_m1(...) | | main.rs:502:5:503:14 | S1 | -| main.rs:560:37:560:38 | x3 | | main.rs:497:5:500:5 | MyThing | -| main.rs:560:37:560:38 | x3 | T | main.rs:497:5:500:5 | MyThing | -| main.rs:560:37:560:38 | x3 | T.T | main.rs:502:5:503:14 | S1 | -| main.rs:561:18:561:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:561:26:561:26 | a | | main.rs:502:5:503:14 | S1 | -| main.rs:562:13:562:13 | b | | main.rs:504:5:505:14 | S2 | -| main.rs:562:17:562:39 | call_trait_thing_m1(...) | | main.rs:504:5:505:14 | S2 | -| main.rs:562:37:562:38 | y3 | | main.rs:497:5:500:5 | MyThing | -| main.rs:562:37:562:38 | y3 | T | main.rs:497:5:500:5 | MyThing | -| main.rs:562:37:562:38 | y3 | T.T | main.rs:504:5:505:14 | S2 | +| main.rs:472:26:472:26 | s | | main.rs:440:5:441:14 | S1 | +| main.rs:475:53:475:53 | x | | main.rs:475:34:475:50 | T | +| main.rs:476:13:476:13 | s | | main.rs:440:5:441:14 | S1 | +| main.rs:476:17:476:17 | x | | main.rs:475:34:475:50 | T | +| main.rs:476:17:476:26 | x.method() | | main.rs:440:5:441:14 | S1 | +| main.rs:477:18:477:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:477:26:477:26 | s | | main.rs:440:5:441:14 | S1 | +| main.rs:481:16:481:19 | SelfParam | | main.rs:480:5:484:5 | Self [trait Pair] | +| main.rs:483:16:483:19 | SelfParam | | main.rs:480:5:484:5 | Self [trait Pair] | +| main.rs:486:58:486:58 | x | | main.rs:486:41:486:55 | T | +| main.rs:486:64:486:64 | y | | main.rs:486:41:486:55 | T | +| main.rs:488:13:488:14 | s1 | | main.rs:440:5:441:14 | S1 | +| main.rs:488:18:488:18 | x | | main.rs:486:41:486:55 | T | +| main.rs:488:18:488:24 | x.fst() | | main.rs:440:5:441:14 | S1 | +| main.rs:489:13:489:14 | s2 | | main.rs:443:5:444:14 | S2 | +| main.rs:489:18:489:18 | y | | main.rs:486:41:486:55 | T | +| main.rs:489:18:489:24 | y.snd() | | main.rs:443:5:444:14 | S2 | +| main.rs:490:18:490:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:490:32:490:33 | s1 | | main.rs:440:5:441:14 | S1 | +| main.rs:490:36:490:37 | s2 | | main.rs:443:5:444:14 | S2 | +| main.rs:493:69:493:69 | x | | main.rs:493:52:493:66 | T | +| main.rs:493:75:493:75 | y | | main.rs:493:52:493:66 | T | +| main.rs:495:13:495:14 | s1 | | main.rs:440:5:441:14 | S1 | +| main.rs:495:18:495:18 | x | | main.rs:493:52:493:66 | T | +| main.rs:495:18:495:24 | x.fst() | | main.rs:440:5:441:14 | S1 | +| main.rs:496:13:496:14 | s2 | | main.rs:493:41:493:49 | T2 | +| main.rs:496:18:496:18 | y | | main.rs:493:52:493:66 | T | +| main.rs:496:18:496:24 | y.snd() | | main.rs:493:41:493:49 | T2 | +| main.rs:497:18:497:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:497:32:497:33 | s1 | | main.rs:440:5:441:14 | S1 | +| main.rs:497:36:497:37 | s2 | | main.rs:493:41:493:49 | T2 | +| main.rs:500:50:500:50 | x | | main.rs:500:41:500:47 | T | +| main.rs:500:56:500:56 | y | | main.rs:500:41:500:47 | T | +| main.rs:502:18:502:18 | x | | main.rs:500:41:500:47 | T | +| main.rs:503:18:503:18 | y | | main.rs:500:41:500:47 | T | +| main.rs:504:18:504:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:507:54:507:54 | x | | main.rs:507:41:507:51 | T | +| main.rs:507:60:507:60 | y | | main.rs:507:41:507:51 | T | +| main.rs:509:13:509:14 | s1 | | {EXTERNAL LOCATION} | u8 | +| main.rs:509:18:509:18 | x | | main.rs:507:41:507:51 | T | +| main.rs:509:18:509:24 | x.fst() | | {EXTERNAL LOCATION} | u8 | +| main.rs:510:18:510:18 | y | | main.rs:507:41:507:51 | T | +| main.rs:511:18:511:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:511:32:511:33 | s1 | | {EXTERNAL LOCATION} | u8 | +| main.rs:527:15:527:18 | SelfParam | | main.rs:526:5:535:5 | Self [trait MyTrait] | +| main.rs:529:15:529:18 | SelfParam | | main.rs:526:5:535:5 | Self [trait MyTrait] | +| main.rs:532:9:534:9 | { ... } | | main.rs:526:19:526:19 | A | +| main.rs:533:13:533:16 | self | | main.rs:526:5:535:5 | Self [trait MyTrait] | +| main.rs:533:13:533:21 | self.m1() | | main.rs:526:19:526:19 | A | +| main.rs:538:43:538:43 | x | | main.rs:538:26:538:40 | T2 | +| main.rs:538:56:540:5 | { ... } | | main.rs:538:22:538:23 | T1 | +| main.rs:539:9:539:9 | x | | main.rs:538:26:538:40 | T2 | +| main.rs:539:9:539:14 | x.m1() | | main.rs:538:22:538:23 | T1 | +| main.rs:543:49:543:49 | x | | main.rs:516:5:519:5 | MyThing | +| main.rs:543:49:543:49 | x | T | main.rs:543:32:543:46 | T2 | +| main.rs:543:71:545:5 | { ... } | | main.rs:543:28:543:29 | T1 | +| main.rs:544:9:544:9 | x | | main.rs:516:5:519:5 | MyThing | +| main.rs:544:9:544:9 | x | T | main.rs:543:32:543:46 | T2 | +| main.rs:544:9:544:11 | x.a | | main.rs:543:32:543:46 | T2 | +| main.rs:544:9:544:16 | ... .m1() | | main.rs:543:28:543:29 | T1 | +| main.rs:548:15:548:18 | SelfParam | | main.rs:516:5:519:5 | MyThing | +| main.rs:548:15:548:18 | SelfParam | T | main.rs:547:10:547:10 | T | +| main.rs:548:26:550:9 | { ... } | | main.rs:547:10:547:10 | T | +| main.rs:549:13:549:16 | self | | main.rs:516:5:519:5 | MyThing | +| main.rs:549:13:549:16 | self | T | main.rs:547:10:547:10 | T | +| main.rs:549:13:549:18 | self.a | | main.rs:547:10:547:10 | T | +| main.rs:554:13:554:13 | x | | main.rs:516:5:519:5 | MyThing | +| main.rs:554:13:554:13 | x | T | main.rs:521:5:522:14 | S1 | +| main.rs:554:17:554:33 | MyThing {...} | | main.rs:516:5:519:5 | MyThing | +| main.rs:554:17:554:33 | MyThing {...} | T | main.rs:521:5:522:14 | S1 | +| main.rs:554:30:554:31 | S1 | | main.rs:521:5:522:14 | S1 | +| main.rs:555:13:555:13 | y | | main.rs:516:5:519:5 | MyThing | +| main.rs:555:13:555:13 | y | T | main.rs:523:5:524:14 | S2 | +| main.rs:555:17:555:33 | MyThing {...} | | main.rs:516:5:519:5 | MyThing | +| main.rs:555:17:555:33 | MyThing {...} | T | main.rs:523:5:524:14 | S2 | +| main.rs:555:30:555:31 | S2 | | main.rs:523:5:524:14 | S2 | +| main.rs:557:18:557:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:557:26:557:26 | x | | main.rs:516:5:519:5 | MyThing | +| main.rs:557:26:557:26 | x | T | main.rs:521:5:522:14 | S1 | +| main.rs:557:26:557:31 | x.m1() | | main.rs:521:5:522:14 | S1 | +| main.rs:558:18:558:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:558:26:558:26 | y | | main.rs:516:5:519:5 | MyThing | +| main.rs:558:26:558:26 | y | T | main.rs:523:5:524:14 | S2 | +| main.rs:558:26:558:31 | y.m1() | | main.rs:523:5:524:14 | S2 | +| main.rs:560:13:560:13 | x | | main.rs:516:5:519:5 | MyThing | +| main.rs:560:13:560:13 | x | T | main.rs:521:5:522:14 | S1 | +| main.rs:560:17:560:33 | MyThing {...} | | main.rs:516:5:519:5 | MyThing | +| main.rs:560:17:560:33 | MyThing {...} | T | main.rs:521:5:522:14 | S1 | +| main.rs:560:30:560:31 | S1 | | main.rs:521:5:522:14 | S1 | +| main.rs:561:13:561:13 | y | | main.rs:516:5:519:5 | MyThing | +| main.rs:561:13:561:13 | y | T | main.rs:523:5:524:14 | S2 | +| main.rs:561:17:561:33 | MyThing {...} | | main.rs:516:5:519:5 | MyThing | +| main.rs:561:17:561:33 | MyThing {...} | T | main.rs:523:5:524:14 | S2 | +| main.rs:561:30:561:31 | S2 | | main.rs:523:5:524:14 | S2 | | main.rs:563:18:563:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:563:26:563:26 | b | | main.rs:504:5:505:14 | S2 | -| main.rs:574:19:574:22 | SelfParam | | main.rs:568:5:571:5 | Wrapper | -| main.rs:574:19:574:22 | SelfParam | A | main.rs:573:10:573:10 | A | -| main.rs:574:30:576:9 | { ... } | | main.rs:573:10:573:10 | A | -| main.rs:575:13:575:16 | self | | main.rs:568:5:571:5 | Wrapper | -| main.rs:575:13:575:16 | self | A | main.rs:573:10:573:10 | A | -| main.rs:575:13:575:22 | self.field | | main.rs:573:10:573:10 | A | -| main.rs:583:15:583:18 | SelfParam | | main.rs:579:5:593:5 | Self [trait MyTrait] | -| main.rs:585:15:585:18 | SelfParam | | main.rs:579:5:593:5 | Self [trait MyTrait] | -| main.rs:589:9:592:9 | { ... } | | main.rs:580:9:580:28 | AssociatedType | -| main.rs:590:13:590:16 | self | | main.rs:579:5:593:5 | Self [trait MyTrait] | -| main.rs:590:13:590:21 | self.m1() | | main.rs:580:9:580:28 | AssociatedType | -| main.rs:591:13:591:43 | ...::default(...) | | main.rs:580:9:580:28 | AssociatedType | -| main.rs:599:19:599:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:599:19:599:23 | SelfParam | &T | main.rs:595:5:605:5 | Self [trait MyTraitAssoc2] | -| main.rs:599:26:599:26 | a | | main.rs:599:16:599:16 | A | -| main.rs:601:22:601:26 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:601:22:601:26 | SelfParam | &T | main.rs:595:5:605:5 | Self [trait MyTraitAssoc2] | -| main.rs:601:29:601:29 | a | | main.rs:601:19:601:19 | A | -| main.rs:601:35:601:35 | b | | main.rs:601:19:601:19 | A | -| main.rs:601:75:604:9 | { ... } | | main.rs:596:9:596:52 | GenericAssociatedType | -| main.rs:602:13:602:16 | self | | file://:0:0:0:0 | & | -| main.rs:602:13:602:16 | self | &T | main.rs:595:5:605:5 | Self [trait MyTraitAssoc2] | -| main.rs:602:13:602:23 | self.put(...) | | main.rs:596:9:596:52 | GenericAssociatedType | -| main.rs:602:22:602:22 | a | | main.rs:601:19:601:19 | A | -| main.rs:603:13:603:16 | self | | file://:0:0:0:0 | & | -| main.rs:603:13:603:16 | self | &T | main.rs:595:5:605:5 | Self [trait MyTraitAssoc2] | -| main.rs:603:13:603:23 | self.put(...) | | main.rs:596:9:596:52 | GenericAssociatedType | -| main.rs:603:22:603:22 | b | | main.rs:601:19:601:19 | A | -| main.rs:612:21:612:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:612:21:612:25 | SelfParam | &T | main.rs:607:5:617:5 | Self [trait TraitMultipleAssoc] | -| main.rs:614:20:614:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:614:20:614:24 | SelfParam | &T | main.rs:607:5:617:5 | Self [trait TraitMultipleAssoc] | -| main.rs:616:20:616:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:616:20:616:24 | SelfParam | &T | main.rs:607:5:617:5 | Self [trait TraitMultipleAssoc] | -| main.rs:632:15:632:18 | SelfParam | | main.rs:619:5:620:13 | S | -| main.rs:632:45:634:9 | { ... } | | main.rs:625:5:626:14 | AT | -| main.rs:633:13:633:14 | AT | | main.rs:625:5:626:14 | AT | -| main.rs:642:19:642:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:642:19:642:23 | SelfParam | &T | main.rs:619:5:620:13 | S | -| main.rs:642:26:642:26 | a | | main.rs:642:16:642:16 | A | -| main.rs:642:46:644:9 | { ... } | | main.rs:568:5:571:5 | Wrapper | -| main.rs:642:46:644:9 | { ... } | A | main.rs:642:16:642:16 | A | -| main.rs:643:13:643:32 | Wrapper {...} | | main.rs:568:5:571:5 | Wrapper | -| main.rs:643:13:643:32 | Wrapper {...} | A | main.rs:642:16:642:16 | A | -| main.rs:643:30:643:30 | a | | main.rs:642:16:642:16 | A | -| main.rs:651:15:651:18 | SelfParam | | main.rs:622:5:623:14 | S2 | -| main.rs:651:45:653:9 | { ... } | | main.rs:568:5:571:5 | Wrapper | -| main.rs:651:45:653:9 | { ... } | A | main.rs:622:5:623:14 | S2 | -| main.rs:652:13:652:35 | Wrapper {...} | | main.rs:568:5:571:5 | Wrapper | -| main.rs:652:13:652:35 | Wrapper {...} | A | main.rs:622:5:623:14 | S2 | -| main.rs:652:30:652:33 | self | | main.rs:622:5:623:14 | S2 | -| main.rs:658:30:660:9 | { ... } | | main.rs:568:5:571:5 | Wrapper | -| main.rs:658:30:660:9 | { ... } | A | main.rs:622:5:623:14 | S2 | -| main.rs:659:13:659:33 | Wrapper {...} | | main.rs:568:5:571:5 | Wrapper | -| main.rs:659:13:659:33 | Wrapper {...} | A | main.rs:622:5:623:14 | S2 | -| main.rs:659:30:659:31 | S2 | | main.rs:622:5:623:14 | S2 | -| main.rs:664:22:664:26 | thing | | main.rs:664:10:664:19 | T | -| main.rs:665:9:665:13 | thing | | main.rs:664:10:664:19 | T | -| main.rs:672:21:672:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:672:21:672:25 | SelfParam | &T | main.rs:625:5:626:14 | AT | -| main.rs:672:34:674:9 | { ... } | | main.rs:625:5:626:14 | AT | -| main.rs:673:13:673:14 | AT | | main.rs:625:5:626:14 | AT | -| main.rs:676:20:676:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:676:20:676:24 | SelfParam | &T | main.rs:625:5:626:14 | AT | -| main.rs:676:43:678:9 | { ... } | | main.rs:619:5:620:13 | S | -| main.rs:677:13:677:13 | S | | main.rs:619:5:620:13 | S | -| main.rs:680:20:680:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:680:20:680:24 | SelfParam | &T | main.rs:625:5:626:14 | AT | -| main.rs:680:43:682:9 | { ... } | | main.rs:622:5:623:14 | S2 | -| main.rs:681:13:681:14 | S2 | | main.rs:622:5:623:14 | S2 | -| main.rs:686:13:686:14 | x1 | | main.rs:619:5:620:13 | S | -| main.rs:686:18:686:18 | S | | main.rs:619:5:620:13 | S | -| main.rs:688:18:688:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:688:26:688:27 | x1 | | main.rs:619:5:620:13 | S | -| main.rs:688:26:688:32 | x1.m1() | | main.rs:625:5:626:14 | AT | -| main.rs:690:13:690:14 | x2 | | main.rs:619:5:620:13 | S | -| main.rs:690:18:690:18 | S | | main.rs:619:5:620:13 | S | -| main.rs:692:13:692:13 | y | | main.rs:625:5:626:14 | AT | -| main.rs:692:17:692:18 | x2 | | main.rs:619:5:620:13 | S | -| main.rs:692:17:692:23 | x2.m2() | | main.rs:625:5:626:14 | AT | -| main.rs:693:18:693:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:693:26:693:26 | y | | main.rs:625:5:626:14 | AT | -| main.rs:695:13:695:14 | x3 | | main.rs:619:5:620:13 | S | -| main.rs:695:18:695:18 | S | | main.rs:619:5:620:13 | S | -| main.rs:697:18:697:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:697:26:697:27 | x3 | | main.rs:619:5:620:13 | S | -| main.rs:697:26:697:34 | x3.put(...) | | main.rs:568:5:571:5 | Wrapper | -| main.rs:697:26:697:34 | x3.put(...) | A | {EXTERNAL LOCATION} | i32 | -| main.rs:697:26:697:43 | ... .unwrap() | | {EXTERNAL LOCATION} | i32 | -| main.rs:697:33:697:33 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:700:18:700:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:700:26:700:27 | x3 | | main.rs:619:5:620:13 | S | -| main.rs:700:26:700:40 | x3.putTwo(...) | | main.rs:568:5:571:5 | Wrapper | -| main.rs:700:26:700:40 | x3.putTwo(...) | A | main.rs:639:36:639:50 | AssociatedParam | -| main.rs:700:26:700:49 | ... .unwrap() | | main.rs:639:36:639:50 | AssociatedParam | -| main.rs:700:36:700:36 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:700:39:700:39 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:702:20:702:20 | S | | main.rs:619:5:620:13 | S | -| main.rs:703:18:703:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:705:13:705:14 | x5 | | main.rs:622:5:623:14 | S2 | -| main.rs:705:18:705:19 | S2 | | main.rs:622:5:623:14 | S2 | -| main.rs:706:18:706:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:706:26:706:27 | x5 | | main.rs:622:5:623:14 | S2 | -| main.rs:706:26:706:32 | x5.m1() | | main.rs:568:5:571:5 | Wrapper | -| main.rs:706:26:706:32 | x5.m1() | A | main.rs:622:5:623:14 | S2 | -| main.rs:707:13:707:14 | x6 | | main.rs:622:5:623:14 | S2 | -| main.rs:707:18:707:19 | S2 | | main.rs:622:5:623:14 | S2 | -| main.rs:708:18:708:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:708:26:708:27 | x6 | | main.rs:622:5:623:14 | S2 | -| main.rs:708:26:708:32 | x6.m2() | | main.rs:568:5:571:5 | Wrapper | -| main.rs:708:26:708:32 | x6.m2() | A | main.rs:622:5:623:14 | S2 | -| main.rs:710:13:710:22 | assoc_zero | | main.rs:625:5:626:14 | AT | -| main.rs:710:26:710:27 | AT | | main.rs:625:5:626:14 | AT | -| main.rs:710:26:710:38 | AT.get_zero() | | main.rs:625:5:626:14 | AT | -| main.rs:711:13:711:21 | assoc_one | | main.rs:619:5:620:13 | S | -| main.rs:711:25:711:26 | AT | | main.rs:625:5:626:14 | AT | -| main.rs:711:25:711:36 | AT.get_one() | | main.rs:619:5:620:13 | S | -| main.rs:712:13:712:21 | assoc_two | | main.rs:622:5:623:14 | S2 | -| main.rs:712:25:712:26 | AT | | main.rs:625:5:626:14 | AT | -| main.rs:712:25:712:36 | AT.get_two() | | main.rs:622:5:623:14 | S2 | -| main.rs:729:15:729:18 | SelfParam | | main.rs:717:5:721:5 | MyEnum | -| main.rs:729:15:729:18 | SelfParam | A | main.rs:728:10:728:10 | T | -| main.rs:729:26:734:9 | { ... } | | main.rs:728:10:728:10 | T | -| main.rs:730:13:733:13 | match self { ... } | | main.rs:728:10:728:10 | T | -| main.rs:730:19:730:22 | self | | main.rs:717:5:721:5 | MyEnum | -| main.rs:730:19:730:22 | self | A | main.rs:728:10:728:10 | T | -| main.rs:731:28:731:28 | a | | main.rs:728:10:728:10 | T | -| main.rs:731:34:731:34 | a | | main.rs:728:10:728:10 | T | -| main.rs:732:30:732:30 | a | | main.rs:728:10:728:10 | T | -| main.rs:732:37:732:37 | a | | main.rs:728:10:728:10 | T | -| main.rs:738:13:738:13 | x | | main.rs:717:5:721:5 | MyEnum | -| main.rs:738:13:738:13 | x | A | main.rs:723:5:724:14 | S1 | -| main.rs:738:17:738:30 | ...::C1(...) | | main.rs:717:5:721:5 | MyEnum | -| main.rs:738:17:738:30 | ...::C1(...) | A | main.rs:723:5:724:14 | S1 | -| main.rs:738:28:738:29 | S1 | | main.rs:723:5:724:14 | S1 | -| main.rs:739:13:739:13 | y | | main.rs:717:5:721:5 | MyEnum | -| main.rs:739:13:739:13 | y | A | main.rs:725:5:726:14 | S2 | -| main.rs:739:17:739:36 | ...::C2 {...} | | main.rs:717:5:721:5 | MyEnum | -| main.rs:739:17:739:36 | ...::C2 {...} | A | main.rs:725:5:726:14 | S2 | -| main.rs:739:33:739:34 | S2 | | main.rs:725:5:726:14 | S2 | -| main.rs:741:18:741:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:741:26:741:26 | x | | main.rs:717:5:721:5 | MyEnum | -| main.rs:741:26:741:26 | x | A | main.rs:723:5:724:14 | S1 | -| main.rs:741:26:741:31 | x.m1() | | main.rs:723:5:724:14 | S1 | -| main.rs:742:18:742:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:742:26:742:26 | y | | main.rs:717:5:721:5 | MyEnum | -| main.rs:742:26:742:26 | y | A | main.rs:725:5:726:14 | S2 | -| main.rs:742:26:742:31 | y.m1() | | main.rs:725:5:726:14 | S2 | -| main.rs:764:15:764:18 | SelfParam | | main.rs:762:5:765:5 | Self [trait MyTrait1] | -| main.rs:769:15:769:18 | SelfParam | | main.rs:767:5:779:5 | Self [trait MyTrait2] | -| main.rs:772:9:778:9 | { ... } | | main.rs:767:20:767:22 | Tr2 | -| main.rs:773:13:777:13 | if ... {...} else {...} | | main.rs:767:20:767:22 | Tr2 | -| main.rs:773:16:773:16 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:773:16:773:20 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:773:20:773:20 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:773:22:775:13 | { ... } | | main.rs:767:20:767:22 | Tr2 | -| main.rs:774:17:774:20 | self | | main.rs:767:5:779:5 | Self [trait MyTrait2] | -| main.rs:774:17:774:25 | self.m1() | | main.rs:767:20:767:22 | Tr2 | -| main.rs:775:20:777:13 | { ... } | | main.rs:767:20:767:22 | Tr2 | -| main.rs:776:17:776:30 | ...::m1(...) | | main.rs:767:20:767:22 | Tr2 | -| main.rs:776:26:776:29 | self | | main.rs:767:5:779:5 | Self [trait MyTrait2] | -| main.rs:783:15:783:18 | SelfParam | | main.rs:781:5:793:5 | Self [trait MyTrait3] | -| main.rs:786:9:792:9 | { ... } | | main.rs:781:20:781:22 | Tr3 | -| main.rs:787:13:791:13 | if ... {...} else {...} | | main.rs:781:20:781:22 | Tr3 | -| main.rs:787:16:787:16 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:787:16:787:20 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:787:20:787:20 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:787:22:789:13 | { ... } | | main.rs:781:20:781:22 | Tr3 | -| main.rs:788:17:788:20 | self | | main.rs:781:5:793:5 | Self [trait MyTrait3] | -| main.rs:788:17:788:25 | self.m2() | | main.rs:747:5:750:5 | MyThing | -| main.rs:788:17:788:25 | self.m2() | A | main.rs:781:20:781:22 | Tr3 | -| main.rs:788:17:788:27 | ... .a | | main.rs:781:20:781:22 | Tr3 | -| main.rs:789:20:791:13 | { ... } | | main.rs:781:20:781:22 | Tr3 | -| main.rs:790:17:790:30 | ...::m2(...) | | main.rs:747:5:750:5 | MyThing | -| main.rs:790:17:790:30 | ...::m2(...) | A | main.rs:781:20:781:22 | Tr3 | -| main.rs:790:17:790:32 | ... .a | | main.rs:781:20:781:22 | Tr3 | -| main.rs:790:26:790:29 | self | | main.rs:781:5:793:5 | Self [trait MyTrait3] | -| main.rs:797:15:797:18 | SelfParam | | main.rs:747:5:750:5 | MyThing | -| main.rs:797:15:797:18 | SelfParam | A | main.rs:795:10:795:10 | T | -| main.rs:797:26:799:9 | { ... } | | main.rs:795:10:795:10 | T | -| main.rs:798:13:798:16 | self | | main.rs:747:5:750:5 | MyThing | -| main.rs:798:13:798:16 | self | A | main.rs:795:10:795:10 | T | -| main.rs:798:13:798:18 | self.a | | main.rs:795:10:795:10 | T | -| main.rs:806:15:806:18 | SelfParam | | main.rs:752:5:755:5 | MyThing2 | -| main.rs:806:15:806:18 | SelfParam | A | main.rs:804:10:804:10 | T | -| main.rs:806:35:808:9 | { ... } | | main.rs:747:5:750:5 | MyThing | -| main.rs:806:35:808:9 | { ... } | A | main.rs:804:10:804:10 | T | -| main.rs:807:13:807:33 | MyThing {...} | | main.rs:747:5:750:5 | MyThing | -| main.rs:807:13:807:33 | MyThing {...} | A | main.rs:804:10:804:10 | T | -| main.rs:807:26:807:29 | self | | main.rs:752:5:755:5 | MyThing2 | -| main.rs:807:26:807:29 | self | A | main.rs:804:10:804:10 | T | -| main.rs:807:26:807:31 | self.a | | main.rs:804:10:804:10 | T | -| main.rs:815:44:815:44 | x | | main.rs:815:26:815:41 | T2 | -| main.rs:815:57:817:5 | { ... } | | main.rs:815:22:815:23 | T1 | -| main.rs:816:9:816:9 | x | | main.rs:815:26:815:41 | T2 | -| main.rs:816:9:816:14 | x.m1() | | main.rs:815:22:815:23 | T1 | -| main.rs:819:56:819:56 | x | | main.rs:819:39:819:53 | T | -| main.rs:821:13:821:13 | a | | main.rs:747:5:750:5 | MyThing | -| main.rs:821:13:821:13 | a | A | main.rs:757:5:758:14 | S1 | -| main.rs:821:17:821:17 | x | | main.rs:819:39:819:53 | T | -| main.rs:821:17:821:22 | x.m1() | | main.rs:747:5:750:5 | MyThing | -| main.rs:821:17:821:22 | x.m1() | A | main.rs:757:5:758:14 | S1 | -| main.rs:822:18:822:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:822:26:822:26 | a | | main.rs:747:5:750:5 | MyThing | -| main.rs:822:26:822:26 | a | A | main.rs:757:5:758:14 | S1 | -| main.rs:826:13:826:13 | x | | main.rs:747:5:750:5 | MyThing | -| main.rs:826:13:826:13 | x | A | main.rs:757:5:758:14 | S1 | -| main.rs:826:17:826:33 | MyThing {...} | | main.rs:747:5:750:5 | MyThing | -| main.rs:826:17:826:33 | MyThing {...} | A | main.rs:757:5:758:14 | S1 | -| main.rs:826:30:826:31 | S1 | | main.rs:757:5:758:14 | S1 | -| main.rs:827:13:827:13 | y | | main.rs:747:5:750:5 | MyThing | -| main.rs:827:13:827:13 | y | A | main.rs:759:5:760:14 | S2 | -| main.rs:827:17:827:33 | MyThing {...} | | main.rs:747:5:750:5 | MyThing | -| main.rs:827:17:827:33 | MyThing {...} | A | main.rs:759:5:760:14 | S2 | -| main.rs:827:30:827:31 | S2 | | main.rs:759:5:760:14 | S2 | -| main.rs:829:18:829:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:829:26:829:26 | x | | main.rs:747:5:750:5 | MyThing | -| main.rs:829:26:829:26 | x | A | main.rs:757:5:758:14 | S1 | -| main.rs:829:26:829:31 | x.m1() | | main.rs:757:5:758:14 | S1 | -| main.rs:830:18:830:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:830:26:830:26 | y | | main.rs:747:5:750:5 | MyThing | -| main.rs:830:26:830:26 | y | A | main.rs:759:5:760:14 | S2 | -| main.rs:830:26:830:31 | y.m1() | | main.rs:759:5:760:14 | S2 | -| main.rs:832:13:832:13 | x | | main.rs:747:5:750:5 | MyThing | -| main.rs:832:13:832:13 | x | A | main.rs:757:5:758:14 | S1 | -| main.rs:832:17:832:33 | MyThing {...} | | main.rs:747:5:750:5 | MyThing | -| main.rs:832:17:832:33 | MyThing {...} | A | main.rs:757:5:758:14 | S1 | -| main.rs:832:30:832:31 | S1 | | main.rs:757:5:758:14 | S1 | -| main.rs:833:13:833:13 | y | | main.rs:747:5:750:5 | MyThing | -| main.rs:833:13:833:13 | y | A | main.rs:759:5:760:14 | S2 | -| main.rs:833:17:833:33 | MyThing {...} | | main.rs:747:5:750:5 | MyThing | -| main.rs:833:17:833:33 | MyThing {...} | A | main.rs:759:5:760:14 | S2 | -| main.rs:833:30:833:31 | S2 | | main.rs:759:5:760:14 | S2 | -| main.rs:835:18:835:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:835:26:835:26 | x | | main.rs:747:5:750:5 | MyThing | -| main.rs:835:26:835:26 | x | A | main.rs:757:5:758:14 | S1 | -| main.rs:835:26:835:31 | x.m2() | | main.rs:757:5:758:14 | S1 | -| main.rs:836:18:836:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:836:26:836:26 | y | | main.rs:747:5:750:5 | MyThing | -| main.rs:836:26:836:26 | y | A | main.rs:759:5:760:14 | S2 | -| main.rs:836:26:836:31 | y.m2() | | main.rs:759:5:760:14 | S2 | -| main.rs:838:13:838:13 | x | | main.rs:752:5:755:5 | MyThing2 | -| main.rs:838:13:838:13 | x | A | main.rs:757:5:758:14 | S1 | -| main.rs:838:17:838:34 | MyThing2 {...} | | main.rs:752:5:755:5 | MyThing2 | -| main.rs:838:17:838:34 | MyThing2 {...} | A | main.rs:757:5:758:14 | S1 | -| main.rs:838:31:838:32 | S1 | | main.rs:757:5:758:14 | S1 | -| main.rs:839:13:839:13 | y | | main.rs:752:5:755:5 | MyThing2 | -| main.rs:839:13:839:13 | y | A | main.rs:759:5:760:14 | S2 | -| main.rs:839:17:839:34 | MyThing2 {...} | | main.rs:752:5:755:5 | MyThing2 | -| main.rs:839:17:839:34 | MyThing2 {...} | A | main.rs:759:5:760:14 | S2 | -| main.rs:839:31:839:32 | S2 | | main.rs:759:5:760:14 | S2 | +| main.rs:563:26:563:26 | x | | main.rs:516:5:519:5 | MyThing | +| main.rs:563:26:563:26 | x | T | main.rs:521:5:522:14 | S1 | +| main.rs:563:26:563:31 | x.m2() | | main.rs:521:5:522:14 | S1 | +| main.rs:564:18:564:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:564:26:564:26 | y | | main.rs:516:5:519:5 | MyThing | +| main.rs:564:26:564:26 | y | T | main.rs:523:5:524:14 | S2 | +| main.rs:564:26:564:31 | y.m2() | | main.rs:523:5:524:14 | S2 | +| main.rs:566:13:566:14 | x2 | | main.rs:516:5:519:5 | MyThing | +| main.rs:566:13:566:14 | x2 | T | main.rs:521:5:522:14 | S1 | +| main.rs:566:18:566:34 | MyThing {...} | | main.rs:516:5:519:5 | MyThing | +| main.rs:566:18:566:34 | MyThing {...} | T | main.rs:521:5:522:14 | S1 | +| main.rs:566:31:566:32 | S1 | | main.rs:521:5:522:14 | S1 | +| main.rs:567:13:567:14 | y2 | | main.rs:516:5:519:5 | MyThing | +| main.rs:567:13:567:14 | y2 | T | main.rs:523:5:524:14 | S2 | +| main.rs:567:18:567:34 | MyThing {...} | | main.rs:516:5:519:5 | MyThing | +| main.rs:567:18:567:34 | MyThing {...} | T | main.rs:523:5:524:14 | S2 | +| main.rs:567:31:567:32 | S2 | | main.rs:523:5:524:14 | S2 | +| main.rs:569:18:569:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:569:26:569:42 | call_trait_m1(...) | | main.rs:521:5:522:14 | S1 | +| main.rs:569:40:569:41 | x2 | | main.rs:516:5:519:5 | MyThing | +| main.rs:569:40:569:41 | x2 | T | main.rs:521:5:522:14 | S1 | +| main.rs:570:18:570:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:570:26:570:42 | call_trait_m1(...) | | main.rs:523:5:524:14 | S2 | +| main.rs:570:40:570:41 | y2 | | main.rs:516:5:519:5 | MyThing | +| main.rs:570:40:570:41 | y2 | T | main.rs:523:5:524:14 | S2 | +| main.rs:572:13:572:14 | x3 | | main.rs:516:5:519:5 | MyThing | +| main.rs:572:13:572:14 | x3 | T | main.rs:516:5:519:5 | MyThing | +| main.rs:572:13:572:14 | x3 | T.T | main.rs:521:5:522:14 | S1 | +| main.rs:572:18:574:9 | MyThing {...} | | main.rs:516:5:519:5 | MyThing | +| main.rs:572:18:574:9 | MyThing {...} | T | main.rs:516:5:519:5 | MyThing | +| main.rs:572:18:574:9 | MyThing {...} | T.T | main.rs:521:5:522:14 | S1 | +| main.rs:573:16:573:32 | MyThing {...} | | main.rs:516:5:519:5 | MyThing | +| main.rs:573:16:573:32 | MyThing {...} | T | main.rs:521:5:522:14 | S1 | +| main.rs:573:29:573:30 | S1 | | main.rs:521:5:522:14 | S1 | +| main.rs:575:13:575:14 | y3 | | main.rs:516:5:519:5 | MyThing | +| main.rs:575:13:575:14 | y3 | T | main.rs:516:5:519:5 | MyThing | +| main.rs:575:13:575:14 | y3 | T.T | main.rs:523:5:524:14 | S2 | +| main.rs:575:18:577:9 | MyThing {...} | | main.rs:516:5:519:5 | MyThing | +| main.rs:575:18:577:9 | MyThing {...} | T | main.rs:516:5:519:5 | MyThing | +| main.rs:575:18:577:9 | MyThing {...} | T.T | main.rs:523:5:524:14 | S2 | +| main.rs:576:16:576:32 | MyThing {...} | | main.rs:516:5:519:5 | MyThing | +| main.rs:576:16:576:32 | MyThing {...} | T | main.rs:523:5:524:14 | S2 | +| main.rs:576:29:576:30 | S2 | | main.rs:523:5:524:14 | S2 | +| main.rs:579:13:579:13 | a | | main.rs:521:5:522:14 | S1 | +| main.rs:579:17:579:39 | call_trait_thing_m1(...) | | main.rs:521:5:522:14 | S1 | +| main.rs:579:37:579:38 | x3 | | main.rs:516:5:519:5 | MyThing | +| main.rs:579:37:579:38 | x3 | T | main.rs:516:5:519:5 | MyThing | +| main.rs:579:37:579:38 | x3 | T.T | main.rs:521:5:522:14 | S1 | +| main.rs:580:18:580:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:580:26:580:26 | a | | main.rs:521:5:522:14 | S1 | +| main.rs:581:13:581:13 | b | | main.rs:523:5:524:14 | S2 | +| main.rs:581:17:581:39 | call_trait_thing_m1(...) | | main.rs:523:5:524:14 | S2 | +| main.rs:581:37:581:38 | y3 | | main.rs:516:5:519:5 | MyThing | +| main.rs:581:37:581:38 | y3 | T | main.rs:516:5:519:5 | MyThing | +| main.rs:581:37:581:38 | y3 | T.T | main.rs:523:5:524:14 | S2 | +| main.rs:582:18:582:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:582:26:582:26 | b | | main.rs:523:5:524:14 | S2 | +| main.rs:593:19:593:22 | SelfParam | | main.rs:587:5:590:5 | Wrapper | +| main.rs:593:19:593:22 | SelfParam | A | main.rs:592:10:592:10 | A | +| main.rs:593:30:595:9 | { ... } | | main.rs:592:10:592:10 | A | +| main.rs:594:13:594:16 | self | | main.rs:587:5:590:5 | Wrapper | +| main.rs:594:13:594:16 | self | A | main.rs:592:10:592:10 | A | +| main.rs:594:13:594:22 | self.field | | main.rs:592:10:592:10 | A | +| main.rs:602:15:602:18 | SelfParam | | main.rs:598:5:612:5 | Self [trait MyTrait] | +| main.rs:604:15:604:18 | SelfParam | | main.rs:598:5:612:5 | Self [trait MyTrait] | +| main.rs:608:9:611:9 | { ... } | | main.rs:599:9:599:28 | AssociatedType | +| main.rs:609:13:609:16 | self | | main.rs:598:5:612:5 | Self [trait MyTrait] | +| main.rs:609:13:609:21 | self.m1() | | main.rs:599:9:599:28 | AssociatedType | +| main.rs:610:13:610:43 | ...::default(...) | | main.rs:599:9:599:28 | AssociatedType | +| main.rs:618:19:618:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:618:19:618:23 | SelfParam | &T | main.rs:614:5:624:5 | Self [trait MyTraitAssoc2] | +| main.rs:618:26:618:26 | a | | main.rs:618:16:618:16 | A | +| main.rs:620:22:620:26 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:620:22:620:26 | SelfParam | &T | main.rs:614:5:624:5 | Self [trait MyTraitAssoc2] | +| main.rs:620:29:620:29 | a | | main.rs:620:19:620:19 | A | +| main.rs:620:35:620:35 | b | | main.rs:620:19:620:19 | A | +| main.rs:620:75:623:9 | { ... } | | main.rs:615:9:615:52 | GenericAssociatedType | +| main.rs:621:13:621:16 | self | | file://:0:0:0:0 | & | +| main.rs:621:13:621:16 | self | &T | main.rs:614:5:624:5 | Self [trait MyTraitAssoc2] | +| main.rs:621:13:621:23 | self.put(...) | | main.rs:615:9:615:52 | GenericAssociatedType | +| main.rs:621:22:621:22 | a | | main.rs:620:19:620:19 | A | +| main.rs:622:13:622:16 | self | | file://:0:0:0:0 | & | +| main.rs:622:13:622:16 | self | &T | main.rs:614:5:624:5 | Self [trait MyTraitAssoc2] | +| main.rs:622:13:622:23 | self.put(...) | | main.rs:615:9:615:52 | GenericAssociatedType | +| main.rs:622:22:622:22 | b | | main.rs:620:19:620:19 | A | +| main.rs:631:21:631:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:631:21:631:25 | SelfParam | &T | main.rs:626:5:636:5 | Self [trait TraitMultipleAssoc] | +| main.rs:633:20:633:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:633:20:633:24 | SelfParam | &T | main.rs:626:5:636:5 | Self [trait TraitMultipleAssoc] | +| main.rs:635:20:635:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:635:20:635:24 | SelfParam | &T | main.rs:626:5:636:5 | Self [trait TraitMultipleAssoc] | +| main.rs:651:15:651:18 | SelfParam | | main.rs:638:5:639:13 | S | +| main.rs:651:45:653:9 | { ... } | | main.rs:644:5:645:14 | AT | +| main.rs:652:13:652:14 | AT | | main.rs:644:5:645:14 | AT | +| main.rs:661:19:661:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:661:19:661:23 | SelfParam | &T | main.rs:638:5:639:13 | S | +| main.rs:661:26:661:26 | a | | main.rs:661:16:661:16 | A | +| main.rs:661:46:663:9 | { ... } | | main.rs:587:5:590:5 | Wrapper | +| main.rs:661:46:663:9 | { ... } | A | main.rs:661:16:661:16 | A | +| main.rs:662:13:662:32 | Wrapper {...} | | main.rs:587:5:590:5 | Wrapper | +| main.rs:662:13:662:32 | Wrapper {...} | A | main.rs:661:16:661:16 | A | +| main.rs:662:30:662:30 | a | | main.rs:661:16:661:16 | A | +| main.rs:670:15:670:18 | SelfParam | | main.rs:641:5:642:14 | S2 | +| main.rs:670:45:672:9 | { ... } | | main.rs:587:5:590:5 | Wrapper | +| main.rs:670:45:672:9 | { ... } | A | main.rs:641:5:642:14 | S2 | +| main.rs:671:13:671:35 | Wrapper {...} | | main.rs:587:5:590:5 | Wrapper | +| main.rs:671:13:671:35 | Wrapper {...} | A | main.rs:641:5:642:14 | S2 | +| main.rs:671:30:671:33 | self | | main.rs:641:5:642:14 | S2 | +| main.rs:677:30:679:9 | { ... } | | main.rs:587:5:590:5 | Wrapper | +| main.rs:677:30:679:9 | { ... } | A | main.rs:641:5:642:14 | S2 | +| main.rs:678:13:678:33 | Wrapper {...} | | main.rs:587:5:590:5 | Wrapper | +| main.rs:678:13:678:33 | Wrapper {...} | A | main.rs:641:5:642:14 | S2 | +| main.rs:678:30:678:31 | S2 | | main.rs:641:5:642:14 | S2 | +| main.rs:683:22:683:26 | thing | | main.rs:683:10:683:19 | T | +| main.rs:684:9:684:13 | thing | | main.rs:683:10:683:19 | T | +| main.rs:691:21:691:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:691:21:691:25 | SelfParam | &T | main.rs:644:5:645:14 | AT | +| main.rs:691:34:693:9 | { ... } | | main.rs:644:5:645:14 | AT | +| main.rs:692:13:692:14 | AT | | main.rs:644:5:645:14 | AT | +| main.rs:695:20:695:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:695:20:695:24 | SelfParam | &T | main.rs:644:5:645:14 | AT | +| main.rs:695:43:697:9 | { ... } | | main.rs:638:5:639:13 | S | +| main.rs:696:13:696:13 | S | | main.rs:638:5:639:13 | S | +| main.rs:699:20:699:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:699:20:699:24 | SelfParam | &T | main.rs:644:5:645:14 | AT | +| main.rs:699:43:701:9 | { ... } | | main.rs:641:5:642:14 | S2 | +| main.rs:700:13:700:14 | S2 | | main.rs:641:5:642:14 | S2 | +| main.rs:705:13:705:14 | x1 | | main.rs:638:5:639:13 | S | +| main.rs:705:18:705:18 | S | | main.rs:638:5:639:13 | S | +| main.rs:707:18:707:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:707:26:707:27 | x1 | | main.rs:638:5:639:13 | S | +| main.rs:707:26:707:32 | x1.m1() | | main.rs:644:5:645:14 | AT | +| main.rs:709:13:709:14 | x2 | | main.rs:638:5:639:13 | S | +| main.rs:709:18:709:18 | S | | main.rs:638:5:639:13 | S | +| main.rs:711:13:711:13 | y | | main.rs:644:5:645:14 | AT | +| main.rs:711:17:711:18 | x2 | | main.rs:638:5:639:13 | S | +| main.rs:711:17:711:23 | x2.m2() | | main.rs:644:5:645:14 | AT | +| main.rs:712:18:712:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:712:26:712:26 | y | | main.rs:644:5:645:14 | AT | +| main.rs:714:13:714:14 | x3 | | main.rs:638:5:639:13 | S | +| main.rs:714:18:714:18 | S | | main.rs:638:5:639:13 | S | +| main.rs:716:18:716:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:716:26:716:27 | x3 | | main.rs:638:5:639:13 | S | +| main.rs:716:26:716:34 | x3.put(...) | | main.rs:587:5:590:5 | Wrapper | +| main.rs:716:26:716:34 | x3.put(...) | A | {EXTERNAL LOCATION} | i32 | +| main.rs:716:26:716:43 | ... .unwrap() | | {EXTERNAL LOCATION} | i32 | +| main.rs:716:33:716:33 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:719:18:719:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:719:26:719:27 | x3 | | main.rs:638:5:639:13 | S | +| main.rs:719:26:719:40 | x3.putTwo(...) | | main.rs:587:5:590:5 | Wrapper | +| main.rs:719:26:719:40 | x3.putTwo(...) | A | main.rs:658:36:658:50 | AssociatedParam | +| main.rs:719:26:719:49 | ... .unwrap() | | main.rs:658:36:658:50 | AssociatedParam | +| main.rs:719:36:719:36 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:719:39:719:39 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:721:20:721:20 | S | | main.rs:638:5:639:13 | S | +| main.rs:722:18:722:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:724:13:724:14 | x5 | | main.rs:641:5:642:14 | S2 | +| main.rs:724:18:724:19 | S2 | | main.rs:641:5:642:14 | S2 | +| main.rs:725:18:725:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:725:26:725:27 | x5 | | main.rs:641:5:642:14 | S2 | +| main.rs:725:26:725:32 | x5.m1() | | main.rs:587:5:590:5 | Wrapper | +| main.rs:725:26:725:32 | x5.m1() | A | main.rs:641:5:642:14 | S2 | +| main.rs:726:13:726:14 | x6 | | main.rs:641:5:642:14 | S2 | +| main.rs:726:18:726:19 | S2 | | main.rs:641:5:642:14 | S2 | +| main.rs:727:18:727:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:727:26:727:27 | x6 | | main.rs:641:5:642:14 | S2 | +| main.rs:727:26:727:32 | x6.m2() | | main.rs:587:5:590:5 | Wrapper | +| main.rs:727:26:727:32 | x6.m2() | A | main.rs:641:5:642:14 | S2 | +| main.rs:729:13:729:22 | assoc_zero | | main.rs:644:5:645:14 | AT | +| main.rs:729:26:729:27 | AT | | main.rs:644:5:645:14 | AT | +| main.rs:729:26:729:38 | AT.get_zero() | | main.rs:644:5:645:14 | AT | +| main.rs:730:13:730:21 | assoc_one | | main.rs:638:5:639:13 | S | +| main.rs:730:25:730:26 | AT | | main.rs:644:5:645:14 | AT | +| main.rs:730:25:730:36 | AT.get_one() | | main.rs:638:5:639:13 | S | +| main.rs:731:13:731:21 | assoc_two | | main.rs:641:5:642:14 | S2 | +| main.rs:731:25:731:26 | AT | | main.rs:644:5:645:14 | AT | +| main.rs:731:25:731:36 | AT.get_two() | | main.rs:641:5:642:14 | S2 | +| main.rs:748:15:748:18 | SelfParam | | main.rs:736:5:740:5 | MyEnum | +| main.rs:748:15:748:18 | SelfParam | A | main.rs:747:10:747:10 | T | +| main.rs:748:26:753:9 | { ... } | | main.rs:747:10:747:10 | T | +| main.rs:749:13:752:13 | match self { ... } | | main.rs:747:10:747:10 | T | +| main.rs:749:19:749:22 | self | | main.rs:736:5:740:5 | MyEnum | +| main.rs:749:19:749:22 | self | A | main.rs:747:10:747:10 | T | +| main.rs:750:28:750:28 | a | | main.rs:747:10:747:10 | T | +| main.rs:750:34:750:34 | a | | main.rs:747:10:747:10 | T | +| main.rs:751:30:751:30 | a | | main.rs:747:10:747:10 | T | +| main.rs:751:37:751:37 | a | | main.rs:747:10:747:10 | T | +| main.rs:757:13:757:13 | x | | main.rs:736:5:740:5 | MyEnum | +| main.rs:757:13:757:13 | x | A | main.rs:742:5:743:14 | S1 | +| main.rs:757:17:757:30 | ...::C1(...) | | main.rs:736:5:740:5 | MyEnum | +| main.rs:757:17:757:30 | ...::C1(...) | A | main.rs:742:5:743:14 | S1 | +| main.rs:757:28:757:29 | S1 | | main.rs:742:5:743:14 | S1 | +| main.rs:758:13:758:13 | y | | main.rs:736:5:740:5 | MyEnum | +| main.rs:758:13:758:13 | y | A | main.rs:744:5:745:14 | S2 | +| main.rs:758:17:758:36 | ...::C2 {...} | | main.rs:736:5:740:5 | MyEnum | +| main.rs:758:17:758:36 | ...::C2 {...} | A | main.rs:744:5:745:14 | S2 | +| main.rs:758:33:758:34 | S2 | | main.rs:744:5:745:14 | S2 | +| main.rs:760:18:760:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:760:26:760:26 | x | | main.rs:736:5:740:5 | MyEnum | +| main.rs:760:26:760:26 | x | A | main.rs:742:5:743:14 | S1 | +| main.rs:760:26:760:31 | x.m1() | | main.rs:742:5:743:14 | S1 | +| main.rs:761:18:761:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:761:26:761:26 | y | | main.rs:736:5:740:5 | MyEnum | +| main.rs:761:26:761:26 | y | A | main.rs:744:5:745:14 | S2 | +| main.rs:761:26:761:31 | y.m1() | | main.rs:744:5:745:14 | S2 | +| main.rs:783:15:783:18 | SelfParam | | main.rs:781:5:784:5 | Self [trait MyTrait1] | +| main.rs:788:15:788:18 | SelfParam | | main.rs:786:5:798:5 | Self [trait MyTrait2] | +| main.rs:791:9:797:9 | { ... } | | main.rs:786:20:786:22 | Tr2 | +| main.rs:792:13:796:13 | if ... {...} else {...} | | main.rs:786:20:786:22 | Tr2 | +| main.rs:792:16:792:16 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:792:16:792:20 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:792:20:792:20 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:792:22:794:13 | { ... } | | main.rs:786:20:786:22 | Tr2 | +| main.rs:793:17:793:20 | self | | main.rs:786:5:798:5 | Self [trait MyTrait2] | +| main.rs:793:17:793:25 | self.m1() | | main.rs:786:20:786:22 | Tr2 | +| main.rs:794:20:796:13 | { ... } | | main.rs:786:20:786:22 | Tr2 | +| main.rs:795:17:795:30 | ...::m1(...) | | main.rs:786:20:786:22 | Tr2 | +| main.rs:795:26:795:29 | self | | main.rs:786:5:798:5 | Self [trait MyTrait2] | +| main.rs:802:15:802:18 | SelfParam | | main.rs:800:5:812:5 | Self [trait MyTrait3] | +| main.rs:805:9:811:9 | { ... } | | main.rs:800:20:800:22 | Tr3 | +| main.rs:806:13:810:13 | if ... {...} else {...} | | main.rs:800:20:800:22 | Tr3 | +| main.rs:806:16:806:16 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:806:16:806:20 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:806:20:806:20 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:806:22:808:13 | { ... } | | main.rs:800:20:800:22 | Tr3 | +| main.rs:807:17:807:20 | self | | main.rs:800:5:812:5 | Self [trait MyTrait3] | +| main.rs:807:17:807:25 | self.m2() | | main.rs:766:5:769:5 | MyThing | +| main.rs:807:17:807:25 | self.m2() | A | main.rs:800:20:800:22 | Tr3 | +| main.rs:807:17:807:27 | ... .a | | main.rs:800:20:800:22 | Tr3 | +| main.rs:808:20:810:13 | { ... } | | main.rs:800:20:800:22 | Tr3 | +| main.rs:809:17:809:30 | ...::m2(...) | | main.rs:766:5:769:5 | MyThing | +| main.rs:809:17:809:30 | ...::m2(...) | A | main.rs:800:20:800:22 | Tr3 | +| main.rs:809:17:809:32 | ... .a | | main.rs:800:20:800:22 | Tr3 | +| main.rs:809:26:809:29 | self | | main.rs:800:5:812:5 | Self [trait MyTrait3] | +| main.rs:816:15:816:18 | SelfParam | | main.rs:766:5:769:5 | MyThing | +| main.rs:816:15:816:18 | SelfParam | A | main.rs:814:10:814:10 | T | +| main.rs:816:26:818:9 | { ... } | | main.rs:814:10:814:10 | T | +| main.rs:817:13:817:16 | self | | main.rs:766:5:769:5 | MyThing | +| main.rs:817:13:817:16 | self | A | main.rs:814:10:814:10 | T | +| main.rs:817:13:817:18 | self.a | | main.rs:814:10:814:10 | T | +| main.rs:825:15:825:18 | SelfParam | | main.rs:771:5:774:5 | MyThing2 | +| main.rs:825:15:825:18 | SelfParam | A | main.rs:823:10:823:10 | T | +| main.rs:825:35:827:9 | { ... } | | main.rs:766:5:769:5 | MyThing | +| main.rs:825:35:827:9 | { ... } | A | main.rs:823:10:823:10 | T | +| main.rs:826:13:826:33 | MyThing {...} | | main.rs:766:5:769:5 | MyThing | +| main.rs:826:13:826:33 | MyThing {...} | A | main.rs:823:10:823:10 | T | +| main.rs:826:26:826:29 | self | | main.rs:771:5:774:5 | MyThing2 | +| main.rs:826:26:826:29 | self | A | main.rs:823:10:823:10 | T | +| main.rs:826:26:826:31 | self.a | | main.rs:823:10:823:10 | T | +| main.rs:834:44:834:44 | x | | main.rs:834:26:834:41 | T2 | +| main.rs:834:57:836:5 | { ... } | | main.rs:834:22:834:23 | T1 | +| main.rs:835:9:835:9 | x | | main.rs:834:26:834:41 | T2 | +| main.rs:835:9:835:14 | x.m1() | | main.rs:834:22:834:23 | T1 | +| main.rs:838:56:838:56 | x | | main.rs:838:39:838:53 | T | +| main.rs:840:13:840:13 | a | | main.rs:766:5:769:5 | MyThing | +| main.rs:840:13:840:13 | a | A | main.rs:776:5:777:14 | S1 | +| main.rs:840:17:840:17 | x | | main.rs:838:39:838:53 | T | +| main.rs:840:17:840:22 | x.m1() | | main.rs:766:5:769:5 | MyThing | +| main.rs:840:17:840:22 | x.m1() | A | main.rs:776:5:777:14 | S1 | | main.rs:841:18:841:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:841:26:841:26 | x | | main.rs:752:5:755:5 | MyThing2 | -| main.rs:841:26:841:26 | x | A | main.rs:757:5:758:14 | S1 | -| main.rs:841:26:841:31 | x.m3() | | main.rs:757:5:758:14 | S1 | -| main.rs:842:18:842:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:842:26:842:26 | y | | main.rs:752:5:755:5 | MyThing2 | -| main.rs:842:26:842:26 | y | A | main.rs:759:5:760:14 | S2 | -| main.rs:842:26:842:31 | y.m3() | | main.rs:759:5:760:14 | S2 | -| main.rs:844:13:844:13 | x | | main.rs:747:5:750:5 | MyThing | -| main.rs:844:13:844:13 | x | A | main.rs:757:5:758:14 | S1 | -| main.rs:844:17:844:33 | MyThing {...} | | main.rs:747:5:750:5 | MyThing | -| main.rs:844:17:844:33 | MyThing {...} | A | main.rs:757:5:758:14 | S1 | -| main.rs:844:30:844:31 | S1 | | main.rs:757:5:758:14 | S1 | -| main.rs:845:13:845:13 | s | | main.rs:757:5:758:14 | S1 | -| main.rs:845:17:845:32 | call_trait_m1(...) | | main.rs:757:5:758:14 | S1 | -| main.rs:845:31:845:31 | x | | main.rs:747:5:750:5 | MyThing | -| main.rs:845:31:845:31 | x | A | main.rs:757:5:758:14 | S1 | -| main.rs:847:13:847:13 | x | | main.rs:752:5:755:5 | MyThing2 | -| main.rs:847:13:847:13 | x | A | main.rs:759:5:760:14 | S2 | -| main.rs:847:17:847:34 | MyThing2 {...} | | main.rs:752:5:755:5 | MyThing2 | -| main.rs:847:17:847:34 | MyThing2 {...} | A | main.rs:759:5:760:14 | S2 | -| main.rs:847:31:847:32 | S2 | | main.rs:759:5:760:14 | S2 | -| main.rs:848:13:848:13 | s | | main.rs:747:5:750:5 | MyThing | -| main.rs:848:13:848:13 | s | A | main.rs:759:5:760:14 | S2 | -| main.rs:848:17:848:32 | call_trait_m1(...) | | main.rs:747:5:750:5 | MyThing | -| main.rs:848:17:848:32 | call_trait_m1(...) | A | main.rs:759:5:760:14 | S2 | -| main.rs:848:31:848:31 | x | | main.rs:752:5:755:5 | MyThing2 | -| main.rs:848:31:848:31 | x | A | main.rs:759:5:760:14 | S2 | -| main.rs:866:22:866:22 | x | | file://:0:0:0:0 | & | -| main.rs:866:22:866:22 | x | &T | main.rs:866:11:866:19 | T | -| main.rs:866:35:868:5 | { ... } | | file://:0:0:0:0 | & | -| main.rs:866:35:868:5 | { ... } | &T | main.rs:866:11:866:19 | T | -| main.rs:867:9:867:9 | x | | file://:0:0:0:0 | & | -| main.rs:867:9:867:9 | x | &T | main.rs:866:11:866:19 | T | -| main.rs:871:17:871:20 | SelfParam | | main.rs:856:5:857:14 | S1 | -| main.rs:871:29:873:9 | { ... } | | main.rs:859:5:860:14 | S2 | -| main.rs:872:13:872:14 | S2 | | main.rs:859:5:860:14 | S2 | -| main.rs:876:21:876:21 | x | | main.rs:876:13:876:14 | T1 | -| main.rs:879:5:881:5 | { ... } | | main.rs:876:17:876:18 | T2 | -| main.rs:880:9:880:9 | x | | main.rs:876:13:876:14 | T1 | -| main.rs:880:9:880:16 | x.into() | | main.rs:876:17:876:18 | T2 | -| main.rs:884:13:884:13 | x | | main.rs:856:5:857:14 | S1 | -| main.rs:884:17:884:18 | S1 | | main.rs:856:5:857:14 | S1 | -| main.rs:885:18:885:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:885:26:885:31 | id(...) | | file://:0:0:0:0 | & | -| main.rs:885:26:885:31 | id(...) | &T | main.rs:856:5:857:14 | S1 | -| main.rs:885:29:885:30 | &x | | file://:0:0:0:0 | & | -| main.rs:885:29:885:30 | &x | &T | main.rs:856:5:857:14 | S1 | -| main.rs:885:30:885:30 | x | | main.rs:856:5:857:14 | S1 | -| main.rs:887:13:887:13 | x | | main.rs:856:5:857:14 | S1 | -| main.rs:887:17:887:18 | S1 | | main.rs:856:5:857:14 | S1 | -| main.rs:888:18:888:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:888:26:888:37 | id::<...>(...) | | file://:0:0:0:0 | & | -| main.rs:888:26:888:37 | id::<...>(...) | &T | main.rs:856:5:857:14 | S1 | -| main.rs:888:35:888:36 | &x | | file://:0:0:0:0 | & | -| main.rs:888:35:888:36 | &x | &T | main.rs:856:5:857:14 | S1 | -| main.rs:888:36:888:36 | x | | main.rs:856:5:857:14 | S1 | -| main.rs:890:13:890:13 | x | | main.rs:856:5:857:14 | S1 | -| main.rs:890:17:890:18 | S1 | | main.rs:856:5:857:14 | S1 | -| main.rs:891:18:891:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:891:26:891:44 | id::<...>(...) | | file://:0:0:0:0 | & | -| main.rs:891:26:891:44 | id::<...>(...) | &T | main.rs:856:5:857:14 | S1 | -| main.rs:891:42:891:43 | &x | | file://:0:0:0:0 | & | -| main.rs:891:42:891:43 | &x | &T | main.rs:856:5:857:14 | S1 | -| main.rs:891:43:891:43 | x | | main.rs:856:5:857:14 | S1 | -| main.rs:893:13:893:13 | x | | main.rs:856:5:857:14 | S1 | -| main.rs:893:17:893:18 | S1 | | main.rs:856:5:857:14 | S1 | -| main.rs:894:9:894:25 | into::<...>(...) | | main.rs:859:5:860:14 | S2 | -| main.rs:894:24:894:24 | x | | main.rs:856:5:857:14 | S1 | -| main.rs:896:13:896:13 | x | | main.rs:856:5:857:14 | S1 | -| main.rs:896:17:896:18 | S1 | | main.rs:856:5:857:14 | S1 | -| main.rs:897:13:897:13 | y | | main.rs:859:5:860:14 | S2 | -| main.rs:897:21:897:27 | into(...) | | main.rs:859:5:860:14 | S2 | -| main.rs:897:26:897:26 | x | | main.rs:856:5:857:14 | S1 | -| main.rs:911:22:911:25 | SelfParam | | main.rs:902:5:908:5 | PairOption | -| main.rs:911:22:911:25 | SelfParam | Fst | main.rs:910:10:910:12 | Fst | -| main.rs:911:22:911:25 | SelfParam | Snd | main.rs:910:15:910:17 | Snd | -| main.rs:911:35:918:9 | { ... } | | main.rs:910:15:910:17 | Snd | -| main.rs:912:13:917:13 | match self { ... } | | main.rs:910:15:910:17 | Snd | -| main.rs:912:19:912:22 | self | | main.rs:902:5:908:5 | PairOption | -| main.rs:912:19:912:22 | self | Fst | main.rs:910:10:910:12 | Fst | -| main.rs:912:19:912:22 | self | Snd | main.rs:910:15:910:17 | Snd | -| main.rs:913:43:913:82 | MacroExpr | | main.rs:910:15:910:17 | Snd | -| main.rs:913:50:913:81 | "PairNone has no second elemen... | | {EXTERNAL LOCATION} | str | -| main.rs:913:50:913:81 | MacroExpr | | main.rs:910:15:910:17 | Snd | -| main.rs:913:50:913:81 | { ... } | | main.rs:910:15:910:17 | Snd | -| main.rs:914:43:914:81 | MacroExpr | | main.rs:910:15:910:17 | Snd | -| main.rs:914:50:914:80 | "PairFst has no second element... | | {EXTERNAL LOCATION} | str | -| main.rs:914:50:914:80 | MacroExpr | | main.rs:910:15:910:17 | Snd | -| main.rs:914:50:914:80 | { ... } | | main.rs:910:15:910:17 | Snd | -| main.rs:915:37:915:39 | snd | | main.rs:910:15:910:17 | Snd | -| main.rs:915:45:915:47 | snd | | main.rs:910:15:910:17 | Snd | -| main.rs:916:41:916:43 | snd | | main.rs:910:15:910:17 | Snd | -| main.rs:916:49:916:51 | snd | | main.rs:910:15:910:17 | Snd | -| main.rs:942:10:942:10 | t | | main.rs:902:5:908:5 | PairOption | -| main.rs:942:10:942:10 | t | Fst | main.rs:924:5:925:14 | S2 | -| main.rs:942:10:942:10 | t | Snd | main.rs:902:5:908:5 | PairOption | -| main.rs:942:10:942:10 | t | Snd.Fst | main.rs:924:5:925:14 | S2 | -| main.rs:942:10:942:10 | t | Snd.Snd | main.rs:927:5:928:14 | S3 | -| main.rs:943:13:943:13 | x | | main.rs:927:5:928:14 | S3 | -| main.rs:943:17:943:17 | t | | main.rs:902:5:908:5 | PairOption | -| main.rs:943:17:943:17 | t | Fst | main.rs:924:5:925:14 | S2 | -| main.rs:943:17:943:17 | t | Snd | main.rs:902:5:908:5 | PairOption | -| main.rs:943:17:943:17 | t | Snd.Fst | main.rs:924:5:925:14 | S2 | -| main.rs:943:17:943:17 | t | Snd.Snd | main.rs:927:5:928:14 | S3 | -| main.rs:943:17:943:29 | t.unwrapSnd() | | main.rs:902:5:908:5 | PairOption | -| main.rs:943:17:943:29 | t.unwrapSnd() | Fst | main.rs:924:5:925:14 | S2 | -| main.rs:943:17:943:29 | t.unwrapSnd() | Snd | main.rs:927:5:928:14 | S3 | -| main.rs:943:17:943:41 | ... .unwrapSnd() | | main.rs:927:5:928:14 | S3 | -| main.rs:944:18:944:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:944:26:944:26 | x | | main.rs:927:5:928:14 | S3 | -| main.rs:949:13:949:14 | p1 | | main.rs:902:5:908:5 | PairOption | -| main.rs:949:13:949:14 | p1 | Fst | main.rs:921:5:922:14 | S1 | -| main.rs:949:13:949:14 | p1 | Snd | main.rs:924:5:925:14 | S2 | -| main.rs:949:26:949:53 | ...::PairBoth(...) | | main.rs:902:5:908:5 | PairOption | -| main.rs:949:26:949:53 | ...::PairBoth(...) | Fst | main.rs:921:5:922:14 | S1 | -| main.rs:949:26:949:53 | ...::PairBoth(...) | Snd | main.rs:924:5:925:14 | S2 | -| main.rs:949:47:949:48 | S1 | | main.rs:921:5:922:14 | S1 | -| main.rs:949:51:949:52 | S2 | | main.rs:924:5:925:14 | S2 | -| main.rs:950:18:950:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:950:26:950:27 | p1 | | main.rs:902:5:908:5 | PairOption | -| main.rs:950:26:950:27 | p1 | Fst | main.rs:921:5:922:14 | S1 | -| main.rs:950:26:950:27 | p1 | Snd | main.rs:924:5:925:14 | S2 | -| main.rs:953:13:953:14 | p2 | | main.rs:902:5:908:5 | PairOption | -| main.rs:953:13:953:14 | p2 | Fst | main.rs:921:5:922:14 | S1 | -| main.rs:953:13:953:14 | p2 | Snd | main.rs:924:5:925:14 | S2 | -| main.rs:953:26:953:47 | ...::PairNone(...) | | main.rs:902:5:908:5 | PairOption | -| main.rs:953:26:953:47 | ...::PairNone(...) | Fst | main.rs:921:5:922:14 | S1 | -| main.rs:953:26:953:47 | ...::PairNone(...) | Snd | main.rs:924:5:925:14 | S2 | -| main.rs:954:18:954:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:954:26:954:27 | p2 | | main.rs:902:5:908:5 | PairOption | -| main.rs:954:26:954:27 | p2 | Fst | main.rs:921:5:922:14 | S1 | -| main.rs:954:26:954:27 | p2 | Snd | main.rs:924:5:925:14 | S2 | -| main.rs:957:13:957:14 | p3 | | main.rs:902:5:908:5 | PairOption | -| main.rs:957:13:957:14 | p3 | Fst | main.rs:924:5:925:14 | S2 | -| main.rs:957:13:957:14 | p3 | Snd | main.rs:927:5:928:14 | S3 | -| main.rs:957:34:957:56 | ...::PairSnd(...) | | main.rs:902:5:908:5 | PairOption | -| main.rs:957:34:957:56 | ...::PairSnd(...) | Fst | main.rs:924:5:925:14 | S2 | -| main.rs:957:34:957:56 | ...::PairSnd(...) | Snd | main.rs:927:5:928:14 | S3 | -| main.rs:957:54:957:55 | S3 | | main.rs:927:5:928:14 | S3 | -| main.rs:958:18:958:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:958:26:958:27 | p3 | | main.rs:902:5:908:5 | PairOption | -| main.rs:958:26:958:27 | p3 | Fst | main.rs:924:5:925:14 | S2 | -| main.rs:958:26:958:27 | p3 | Snd | main.rs:927:5:928:14 | S3 | -| main.rs:961:13:961:14 | p3 | | main.rs:902:5:908:5 | PairOption | -| main.rs:961:13:961:14 | p3 | Fst | main.rs:924:5:925:14 | S2 | -| main.rs:961:13:961:14 | p3 | Snd | main.rs:927:5:928:14 | S3 | -| main.rs:961:35:961:56 | ...::PairNone(...) | | main.rs:902:5:908:5 | PairOption | -| main.rs:961:35:961:56 | ...::PairNone(...) | Fst | main.rs:924:5:925:14 | S2 | -| main.rs:961:35:961:56 | ...::PairNone(...) | Snd | main.rs:927:5:928:14 | S3 | -| main.rs:962:18:962:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:962:26:962:27 | p3 | | main.rs:902:5:908:5 | PairOption | -| main.rs:962:26:962:27 | p3 | Fst | main.rs:924:5:925:14 | S2 | -| main.rs:962:26:962:27 | p3 | Snd | main.rs:927:5:928:14 | S3 | -| main.rs:964:11:964:54 | ...::PairSnd(...) | | main.rs:902:5:908:5 | PairOption | -| main.rs:964:11:964:54 | ...::PairSnd(...) | Fst | main.rs:924:5:925:14 | S2 | -| main.rs:964:11:964:54 | ...::PairSnd(...) | Snd | main.rs:902:5:908:5 | PairOption | -| main.rs:964:11:964:54 | ...::PairSnd(...) | Snd.Fst | main.rs:924:5:925:14 | S2 | -| main.rs:964:11:964:54 | ...::PairSnd(...) | Snd.Snd | main.rs:927:5:928:14 | S3 | -| main.rs:964:31:964:53 | ...::PairSnd(...) | | main.rs:902:5:908:5 | PairOption | -| main.rs:964:31:964:53 | ...::PairSnd(...) | Fst | main.rs:924:5:925:14 | S2 | -| main.rs:964:31:964:53 | ...::PairSnd(...) | Snd | main.rs:927:5:928:14 | S3 | -| main.rs:964:51:964:52 | S3 | | main.rs:927:5:928:14 | S3 | -| main.rs:977:16:977:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:977:16:977:24 | SelfParam | &T | main.rs:975:5:982:5 | Self [trait MyTrait] | -| main.rs:977:27:977:31 | value | | main.rs:975:19:975:19 | S | -| main.rs:979:21:979:29 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:979:21:979:29 | SelfParam | &T | main.rs:975:5:982:5 | Self [trait MyTrait] | -| main.rs:979:32:979:36 | value | | main.rs:975:19:975:19 | S | -| main.rs:980:13:980:16 | self | | file://:0:0:0:0 | & | -| main.rs:980:13:980:16 | self | &T | main.rs:975:5:982:5 | Self [trait MyTrait] | -| main.rs:980:22:980:26 | value | | main.rs:975:19:975:19 | S | -| main.rs:986:16:986:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:986:16:986:24 | SelfParam | &T | main.rs:969:5:973:5 | MyOption | -| main.rs:986:16:986:24 | SelfParam | &T.T | main.rs:984:10:984:10 | T | -| main.rs:986:27:986:31 | value | | main.rs:984:10:984:10 | T | -| main.rs:990:26:992:9 | { ... } | | main.rs:969:5:973:5 | MyOption | -| main.rs:990:26:992:9 | { ... } | T | main.rs:989:10:989:10 | T | -| main.rs:991:13:991:30 | ...::MyNone(...) | | main.rs:969:5:973:5 | MyOption | -| main.rs:991:13:991:30 | ...::MyNone(...) | T | main.rs:989:10:989:10 | T | -| main.rs:996:20:996:23 | SelfParam | | main.rs:969:5:973:5 | MyOption | -| main.rs:996:20:996:23 | SelfParam | T | main.rs:969:5:973:5 | MyOption | -| main.rs:996:20:996:23 | SelfParam | T.T | main.rs:995:10:995:10 | T | -| main.rs:996:41:1001:9 | { ... } | | main.rs:969:5:973:5 | MyOption | -| main.rs:996:41:1001:9 | { ... } | T | main.rs:995:10:995:10 | T | -| main.rs:997:13:1000:13 | match self { ... } | | main.rs:969:5:973:5 | MyOption | -| main.rs:997:13:1000:13 | match self { ... } | T | main.rs:995:10:995:10 | T | -| main.rs:997:19:997:22 | self | | main.rs:969:5:973:5 | MyOption | -| main.rs:997:19:997:22 | self | T | main.rs:969:5:973:5 | MyOption | -| main.rs:997:19:997:22 | self | T.T | main.rs:995:10:995:10 | T | -| main.rs:998:39:998:56 | ...::MyNone(...) | | main.rs:969:5:973:5 | MyOption | -| main.rs:998:39:998:56 | ...::MyNone(...) | T | main.rs:995:10:995:10 | T | -| main.rs:999:34:999:34 | x | | main.rs:969:5:973:5 | MyOption | -| main.rs:999:34:999:34 | x | T | main.rs:995:10:995:10 | T | -| main.rs:999:40:999:40 | x | | main.rs:969:5:973:5 | MyOption | -| main.rs:999:40:999:40 | x | T | main.rs:995:10:995:10 | T | -| main.rs:1008:13:1008:14 | x1 | | main.rs:969:5:973:5 | MyOption | -| main.rs:1008:18:1008:37 | ...::new(...) | | main.rs:969:5:973:5 | MyOption | -| main.rs:1009:18:1009:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1009:26:1009:27 | x1 | | main.rs:969:5:973:5 | MyOption | -| main.rs:1011:13:1011:18 | mut x2 | | main.rs:969:5:973:5 | MyOption | -| main.rs:1011:13:1011:18 | mut x2 | T | main.rs:1004:5:1005:13 | S | -| main.rs:1011:22:1011:36 | ...::new(...) | | main.rs:969:5:973:5 | MyOption | -| main.rs:1011:22:1011:36 | ...::new(...) | T | main.rs:1004:5:1005:13 | S | -| main.rs:1012:9:1012:10 | x2 | | main.rs:969:5:973:5 | MyOption | -| main.rs:1012:9:1012:10 | x2 | T | main.rs:1004:5:1005:13 | S | -| main.rs:1012:16:1012:16 | S | | main.rs:1004:5:1005:13 | S | -| main.rs:1013:18:1013:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1013:26:1013:27 | x2 | | main.rs:969:5:973:5 | MyOption | -| main.rs:1013:26:1013:27 | x2 | T | main.rs:1004:5:1005:13 | S | -| main.rs:1015:13:1015:18 | mut x3 | | main.rs:969:5:973:5 | MyOption | -| main.rs:1015:22:1015:36 | ...::new(...) | | main.rs:969:5:973:5 | MyOption | -| main.rs:1016:9:1016:10 | x3 | | main.rs:969:5:973:5 | MyOption | -| main.rs:1016:21:1016:21 | S | | main.rs:1004:5:1005:13 | S | -| main.rs:1017:18:1017:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1017:26:1017:27 | x3 | | main.rs:969:5:973:5 | MyOption | -| main.rs:1019:13:1019:18 | mut x4 | | main.rs:969:5:973:5 | MyOption | -| main.rs:1019:13:1019:18 | mut x4 | T | main.rs:1004:5:1005:13 | S | -| main.rs:1019:22:1019:36 | ...::new(...) | | main.rs:969:5:973:5 | MyOption | -| main.rs:1019:22:1019:36 | ...::new(...) | T | main.rs:1004:5:1005:13 | S | -| main.rs:1020:23:1020:29 | &mut x4 | | file://:0:0:0:0 | & | -| main.rs:1020:23:1020:29 | &mut x4 | &T | main.rs:969:5:973:5 | MyOption | -| main.rs:1020:23:1020:29 | &mut x4 | &T.T | main.rs:1004:5:1005:13 | S | -| main.rs:1020:28:1020:29 | x4 | | main.rs:969:5:973:5 | MyOption | -| main.rs:1020:28:1020:29 | x4 | T | main.rs:1004:5:1005:13 | S | -| main.rs:1020:32:1020:32 | S | | main.rs:1004:5:1005:13 | S | -| main.rs:1021:18:1021:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1021:26:1021:27 | x4 | | main.rs:969:5:973:5 | MyOption | -| main.rs:1021:26:1021:27 | x4 | T | main.rs:1004:5:1005:13 | S | -| main.rs:1023:13:1023:14 | x5 | | main.rs:969:5:973:5 | MyOption | -| main.rs:1023:13:1023:14 | x5 | T | main.rs:969:5:973:5 | MyOption | -| main.rs:1023:13:1023:14 | x5 | T.T | main.rs:1004:5:1005:13 | S | -| main.rs:1023:18:1023:58 | ...::MySome(...) | | main.rs:969:5:973:5 | MyOption | -| main.rs:1023:18:1023:58 | ...::MySome(...) | T | main.rs:969:5:973:5 | MyOption | -| main.rs:1023:18:1023:58 | ...::MySome(...) | T.T | main.rs:1004:5:1005:13 | S | -| main.rs:1023:35:1023:57 | ...::MyNone(...) | | main.rs:969:5:973:5 | MyOption | -| main.rs:1023:35:1023:57 | ...::MyNone(...) | T | main.rs:1004:5:1005:13 | S | -| main.rs:1024:18:1024:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1024:26:1024:27 | x5 | | main.rs:969:5:973:5 | MyOption | -| main.rs:1024:26:1024:27 | x5 | T | main.rs:969:5:973:5 | MyOption | -| main.rs:1024:26:1024:27 | x5 | T.T | main.rs:1004:5:1005:13 | S | -| main.rs:1024:26:1024:37 | x5.flatten() | | main.rs:969:5:973:5 | MyOption | -| main.rs:1024:26:1024:37 | x5.flatten() | T | main.rs:1004:5:1005:13 | S | -| main.rs:1026:13:1026:14 | x6 | | main.rs:969:5:973:5 | MyOption | -| main.rs:1026:13:1026:14 | x6 | T | main.rs:969:5:973:5 | MyOption | -| main.rs:1026:13:1026:14 | x6 | T.T | main.rs:1004:5:1005:13 | S | -| main.rs:1026:18:1026:58 | ...::MySome(...) | | main.rs:969:5:973:5 | MyOption | -| main.rs:1026:18:1026:58 | ...::MySome(...) | T | main.rs:969:5:973:5 | MyOption | -| main.rs:1026:18:1026:58 | ...::MySome(...) | T.T | main.rs:1004:5:1005:13 | S | -| main.rs:1026:35:1026:57 | ...::MyNone(...) | | main.rs:969:5:973:5 | MyOption | -| main.rs:1026:35:1026:57 | ...::MyNone(...) | T | main.rs:1004:5:1005:13 | S | -| main.rs:1027:18:1027:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1027:26:1027:61 | ...::flatten(...) | | main.rs:969:5:973:5 | MyOption | -| main.rs:1027:26:1027:61 | ...::flatten(...) | T | main.rs:1004:5:1005:13 | S | -| main.rs:1027:59:1027:60 | x6 | | main.rs:969:5:973:5 | MyOption | -| main.rs:1027:59:1027:60 | x6 | T | main.rs:969:5:973:5 | MyOption | -| main.rs:1027:59:1027:60 | x6 | T.T | main.rs:1004:5:1005:13 | S | -| main.rs:1030:13:1030:19 | from_if | | main.rs:969:5:973:5 | MyOption | -| main.rs:1030:13:1030:19 | from_if | T | main.rs:1004:5:1005:13 | S | -| main.rs:1030:23:1034:9 | if ... {...} else {...} | | main.rs:969:5:973:5 | MyOption | -| main.rs:1030:23:1034:9 | if ... {...} else {...} | T | main.rs:1004:5:1005:13 | S | -| main.rs:1030:26:1030:26 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1030:26:1030:30 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1030:30:1030:30 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1030:32:1032:9 | { ... } | | main.rs:969:5:973:5 | MyOption | -| main.rs:1030:32:1032:9 | { ... } | T | main.rs:1004:5:1005:13 | S | -| main.rs:1031:13:1031:30 | ...::MyNone(...) | | main.rs:969:5:973:5 | MyOption | -| main.rs:1031:13:1031:30 | ...::MyNone(...) | T | main.rs:1004:5:1005:13 | S | -| main.rs:1032:16:1034:9 | { ... } | | main.rs:969:5:973:5 | MyOption | -| main.rs:1032:16:1034:9 | { ... } | T | main.rs:1004:5:1005:13 | S | -| main.rs:1033:13:1033:31 | ...::MySome(...) | | main.rs:969:5:973:5 | MyOption | -| main.rs:1033:13:1033:31 | ...::MySome(...) | T | main.rs:1004:5:1005:13 | S | -| main.rs:1033:30:1033:30 | S | | main.rs:1004:5:1005:13 | S | -| main.rs:1035:18:1035:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1035:26:1035:32 | from_if | | main.rs:969:5:973:5 | MyOption | -| main.rs:1035:26:1035:32 | from_if | T | main.rs:1004:5:1005:13 | S | -| main.rs:1038:13:1038:22 | from_match | | main.rs:969:5:973:5 | MyOption | -| main.rs:1038:13:1038:22 | from_match | T | main.rs:1004:5:1005:13 | S | -| main.rs:1038:26:1041:9 | match ... { ... } | | main.rs:969:5:973:5 | MyOption | -| main.rs:1038:26:1041:9 | match ... { ... } | T | main.rs:1004:5:1005:13 | S | -| main.rs:1038:32:1038:32 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1038:32:1038:36 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1038:36:1038:36 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1039:13:1039:16 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1039:21:1039:38 | ...::MyNone(...) | | main.rs:969:5:973:5 | MyOption | -| main.rs:1039:21:1039:38 | ...::MyNone(...) | T | main.rs:1004:5:1005:13 | S | -| main.rs:1040:13:1040:17 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1040:22:1040:40 | ...::MySome(...) | | main.rs:969:5:973:5 | MyOption | -| main.rs:1040:22:1040:40 | ...::MySome(...) | T | main.rs:1004:5:1005:13 | S | -| main.rs:1040:39:1040:39 | S | | main.rs:1004:5:1005:13 | S | -| main.rs:1042:18:1042:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1042:26:1042:35 | from_match | | main.rs:969:5:973:5 | MyOption | -| main.rs:1042:26:1042:35 | from_match | T | main.rs:1004:5:1005:13 | S | -| main.rs:1045:13:1045:21 | from_loop | | main.rs:969:5:973:5 | MyOption | -| main.rs:1045:13:1045:21 | from_loop | T | main.rs:1004:5:1005:13 | S | -| main.rs:1045:25:1050:9 | loop { ... } | | main.rs:969:5:973:5 | MyOption | -| main.rs:1045:25:1050:9 | loop { ... } | T | main.rs:1004:5:1005:13 | S | -| main.rs:1046:16:1046:16 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1046:16:1046:20 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1046:20:1046:20 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1047:23:1047:40 | ...::MyNone(...) | | main.rs:969:5:973:5 | MyOption | -| main.rs:1047:23:1047:40 | ...::MyNone(...) | T | main.rs:1004:5:1005:13 | S | -| main.rs:1049:19:1049:37 | ...::MySome(...) | | main.rs:969:5:973:5 | MyOption | -| main.rs:1049:19:1049:37 | ...::MySome(...) | T | main.rs:1004:5:1005:13 | S | -| main.rs:1049:36:1049:36 | S | | main.rs:1004:5:1005:13 | S | -| main.rs:1051:18:1051:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1051:26:1051:34 | from_loop | | main.rs:969:5:973:5 | MyOption | -| main.rs:1051:26:1051:34 | from_loop | T | main.rs:1004:5:1005:13 | S | -| main.rs:1064:15:1064:18 | SelfParam | | main.rs:1057:5:1058:19 | S | -| main.rs:1064:15:1064:18 | SelfParam | T | main.rs:1063:10:1063:10 | T | -| main.rs:1064:26:1066:9 | { ... } | | main.rs:1063:10:1063:10 | T | -| main.rs:1065:13:1065:16 | self | | main.rs:1057:5:1058:19 | S | -| main.rs:1065:13:1065:16 | self | T | main.rs:1063:10:1063:10 | T | -| main.rs:1065:13:1065:18 | self.0 | | main.rs:1063:10:1063:10 | T | -| main.rs:1068:15:1068:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1068:15:1068:19 | SelfParam | &T | main.rs:1057:5:1058:19 | S | -| main.rs:1068:15:1068:19 | SelfParam | &T.T | main.rs:1063:10:1063:10 | T | -| main.rs:1068:28:1070:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1068:28:1070:9 | { ... } | &T | main.rs:1063:10:1063:10 | T | -| main.rs:1069:13:1069:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1069:13:1069:19 | &... | &T | main.rs:1063:10:1063:10 | T | -| main.rs:1069:14:1069:17 | self | | file://:0:0:0:0 | & | -| main.rs:1069:14:1069:17 | self | &T | main.rs:1057:5:1058:19 | S | -| main.rs:1069:14:1069:17 | self | &T.T | main.rs:1063:10:1063:10 | T | -| main.rs:1069:14:1069:19 | self.0 | | main.rs:1063:10:1063:10 | T | -| main.rs:1072:15:1072:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1072:15:1072:25 | SelfParam | &T | main.rs:1057:5:1058:19 | S | -| main.rs:1072:15:1072:25 | SelfParam | &T.T | main.rs:1063:10:1063:10 | T | -| main.rs:1072:34:1074:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1072:34:1074:9 | { ... } | &T | main.rs:1063:10:1063:10 | T | -| main.rs:1073:13:1073:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1073:13:1073:19 | &... | &T | main.rs:1063:10:1063:10 | T | -| main.rs:1073:14:1073:17 | self | | file://:0:0:0:0 | & | -| main.rs:1073:14:1073:17 | self | &T | main.rs:1057:5:1058:19 | S | -| main.rs:1073:14:1073:17 | self | &T.T | main.rs:1063:10:1063:10 | T | -| main.rs:1073:14:1073:19 | self.0 | | main.rs:1063:10:1063:10 | T | -| main.rs:1078:13:1078:14 | x1 | | main.rs:1057:5:1058:19 | S | -| main.rs:1078:13:1078:14 | x1 | T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1078:18:1078:22 | S(...) | | main.rs:1057:5:1058:19 | S | -| main.rs:1078:18:1078:22 | S(...) | T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1078:20:1078:21 | S2 | | main.rs:1060:5:1061:14 | S2 | -| main.rs:1079:18:1079:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1079:26:1079:27 | x1 | | main.rs:1057:5:1058:19 | S | -| main.rs:1079:26:1079:27 | x1 | T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1079:26:1079:32 | x1.m1() | | main.rs:1060:5:1061:14 | S2 | -| main.rs:1081:13:1081:14 | x2 | | main.rs:1057:5:1058:19 | S | -| main.rs:1081:13:1081:14 | x2 | T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1081:18:1081:22 | S(...) | | main.rs:1057:5:1058:19 | S | -| main.rs:1081:18:1081:22 | S(...) | T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1081:20:1081:21 | S2 | | main.rs:1060:5:1061:14 | S2 | -| main.rs:1083:18:1083:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1083:26:1083:27 | x2 | | main.rs:1057:5:1058:19 | S | -| main.rs:1083:26:1083:27 | x2 | T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1083:26:1083:32 | x2.m2() | | file://:0:0:0:0 | & | -| main.rs:1083:26:1083:32 | x2.m2() | &T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1084:18:1084:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1084:26:1084:27 | x2 | | main.rs:1057:5:1058:19 | S | -| main.rs:1084:26:1084:27 | x2 | T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1084:26:1084:32 | x2.m3() | | file://:0:0:0:0 | & | -| main.rs:1084:26:1084:32 | x2.m3() | &T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1086:13:1086:14 | x3 | | main.rs:1057:5:1058:19 | S | -| main.rs:1086:13:1086:14 | x3 | T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1086:18:1086:22 | S(...) | | main.rs:1057:5:1058:19 | S | -| main.rs:1086:18:1086:22 | S(...) | T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1086:20:1086:21 | S2 | | main.rs:1060:5:1061:14 | S2 | -| main.rs:1088:18:1088:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1088:26:1088:41 | ...::m2(...) | | file://:0:0:0:0 | & | -| main.rs:1088:26:1088:41 | ...::m2(...) | &T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1088:38:1088:40 | &x3 | | file://:0:0:0:0 | & | -| main.rs:1088:38:1088:40 | &x3 | &T | main.rs:1057:5:1058:19 | S | -| main.rs:1088:38:1088:40 | &x3 | &T.T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1088:39:1088:40 | x3 | | main.rs:1057:5:1058:19 | S | -| main.rs:1088:39:1088:40 | x3 | T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1089:18:1089:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1089:26:1089:41 | ...::m3(...) | | file://:0:0:0:0 | & | -| main.rs:1089:26:1089:41 | ...::m3(...) | &T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1089:38:1089:40 | &x3 | | file://:0:0:0:0 | & | -| main.rs:1089:38:1089:40 | &x3 | &T | main.rs:1057:5:1058:19 | S | -| main.rs:1089:38:1089:40 | &x3 | &T.T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1089:39:1089:40 | x3 | | main.rs:1057:5:1058:19 | S | -| main.rs:1089:39:1089:40 | x3 | T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1091:13:1091:14 | x4 | | file://:0:0:0:0 | & | -| main.rs:1091:13:1091:14 | x4 | &T | main.rs:1057:5:1058:19 | S | -| main.rs:1091:13:1091:14 | x4 | &T.T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1091:18:1091:23 | &... | | file://:0:0:0:0 | & | -| main.rs:1091:18:1091:23 | &... | &T | main.rs:1057:5:1058:19 | S | -| main.rs:1091:18:1091:23 | &... | &T.T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1091:19:1091:23 | S(...) | | main.rs:1057:5:1058:19 | S | -| main.rs:1091:19:1091:23 | S(...) | T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1091:21:1091:22 | S2 | | main.rs:1060:5:1061:14 | S2 | -| main.rs:1093:18:1093:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1093:26:1093:27 | x4 | | file://:0:0:0:0 | & | -| main.rs:1093:26:1093:27 | x4 | &T | main.rs:1057:5:1058:19 | S | -| main.rs:1093:26:1093:27 | x4 | &T.T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1093:26:1093:32 | x4.m2() | | file://:0:0:0:0 | & | -| main.rs:1093:26:1093:32 | x4.m2() | &T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1094:18:1094:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1094:26:1094:27 | x4 | | file://:0:0:0:0 | & | -| main.rs:1094:26:1094:27 | x4 | &T | main.rs:1057:5:1058:19 | S | -| main.rs:1094:26:1094:27 | x4 | &T.T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1094:26:1094:32 | x4.m3() | | file://:0:0:0:0 | & | -| main.rs:1094:26:1094:32 | x4.m3() | &T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1096:13:1096:14 | x5 | | file://:0:0:0:0 | & | -| main.rs:1096:13:1096:14 | x5 | &T | main.rs:1057:5:1058:19 | S | -| main.rs:1096:13:1096:14 | x5 | &T.T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1096:18:1096:23 | &... | | file://:0:0:0:0 | & | -| main.rs:1096:18:1096:23 | &... | &T | main.rs:1057:5:1058:19 | S | -| main.rs:1096:18:1096:23 | &... | &T.T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1096:19:1096:23 | S(...) | | main.rs:1057:5:1058:19 | S | -| main.rs:1096:19:1096:23 | S(...) | T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1096:21:1096:22 | S2 | | main.rs:1060:5:1061:14 | S2 | +| main.rs:841:26:841:26 | a | | main.rs:766:5:769:5 | MyThing | +| main.rs:841:26:841:26 | a | A | main.rs:776:5:777:14 | S1 | +| main.rs:845:13:845:13 | x | | main.rs:766:5:769:5 | MyThing | +| main.rs:845:13:845:13 | x | A | main.rs:776:5:777:14 | S1 | +| main.rs:845:17:845:33 | MyThing {...} | | main.rs:766:5:769:5 | MyThing | +| main.rs:845:17:845:33 | MyThing {...} | A | main.rs:776:5:777:14 | S1 | +| main.rs:845:30:845:31 | S1 | | main.rs:776:5:777:14 | S1 | +| main.rs:846:13:846:13 | y | | main.rs:766:5:769:5 | MyThing | +| main.rs:846:13:846:13 | y | A | main.rs:778:5:779:14 | S2 | +| main.rs:846:17:846:33 | MyThing {...} | | main.rs:766:5:769:5 | MyThing | +| main.rs:846:17:846:33 | MyThing {...} | A | main.rs:778:5:779:14 | S2 | +| main.rs:846:30:846:31 | S2 | | main.rs:778:5:779:14 | S2 | +| main.rs:848:18:848:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:848:26:848:26 | x | | main.rs:766:5:769:5 | MyThing | +| main.rs:848:26:848:26 | x | A | main.rs:776:5:777:14 | S1 | +| main.rs:848:26:848:31 | x.m1() | | main.rs:776:5:777:14 | S1 | +| main.rs:849:18:849:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:849:26:849:26 | y | | main.rs:766:5:769:5 | MyThing | +| main.rs:849:26:849:26 | y | A | main.rs:778:5:779:14 | S2 | +| main.rs:849:26:849:31 | y.m1() | | main.rs:778:5:779:14 | S2 | +| main.rs:851:13:851:13 | x | | main.rs:766:5:769:5 | MyThing | +| main.rs:851:13:851:13 | x | A | main.rs:776:5:777:14 | S1 | +| main.rs:851:17:851:33 | MyThing {...} | | main.rs:766:5:769:5 | MyThing | +| main.rs:851:17:851:33 | MyThing {...} | A | main.rs:776:5:777:14 | S1 | +| main.rs:851:30:851:31 | S1 | | main.rs:776:5:777:14 | S1 | +| main.rs:852:13:852:13 | y | | main.rs:766:5:769:5 | MyThing | +| main.rs:852:13:852:13 | y | A | main.rs:778:5:779:14 | S2 | +| main.rs:852:17:852:33 | MyThing {...} | | main.rs:766:5:769:5 | MyThing | +| main.rs:852:17:852:33 | MyThing {...} | A | main.rs:778:5:779:14 | S2 | +| main.rs:852:30:852:31 | S2 | | main.rs:778:5:779:14 | S2 | +| main.rs:854:18:854:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:854:26:854:26 | x | | main.rs:766:5:769:5 | MyThing | +| main.rs:854:26:854:26 | x | A | main.rs:776:5:777:14 | S1 | +| main.rs:854:26:854:31 | x.m2() | | main.rs:776:5:777:14 | S1 | +| main.rs:855:18:855:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:855:26:855:26 | y | | main.rs:766:5:769:5 | MyThing | +| main.rs:855:26:855:26 | y | A | main.rs:778:5:779:14 | S2 | +| main.rs:855:26:855:31 | y.m2() | | main.rs:778:5:779:14 | S2 | +| main.rs:857:13:857:13 | x | | main.rs:771:5:774:5 | MyThing2 | +| main.rs:857:13:857:13 | x | A | main.rs:776:5:777:14 | S1 | +| main.rs:857:17:857:34 | MyThing2 {...} | | main.rs:771:5:774:5 | MyThing2 | +| main.rs:857:17:857:34 | MyThing2 {...} | A | main.rs:776:5:777:14 | S1 | +| main.rs:857:31:857:32 | S1 | | main.rs:776:5:777:14 | S1 | +| main.rs:858:13:858:13 | y | | main.rs:771:5:774:5 | MyThing2 | +| main.rs:858:13:858:13 | y | A | main.rs:778:5:779:14 | S2 | +| main.rs:858:17:858:34 | MyThing2 {...} | | main.rs:771:5:774:5 | MyThing2 | +| main.rs:858:17:858:34 | MyThing2 {...} | A | main.rs:778:5:779:14 | S2 | +| main.rs:858:31:858:32 | S2 | | main.rs:778:5:779:14 | S2 | +| main.rs:860:18:860:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:860:26:860:26 | x | | main.rs:771:5:774:5 | MyThing2 | +| main.rs:860:26:860:26 | x | A | main.rs:776:5:777:14 | S1 | +| main.rs:860:26:860:31 | x.m3() | | main.rs:776:5:777:14 | S1 | +| main.rs:861:18:861:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:861:26:861:26 | y | | main.rs:771:5:774:5 | MyThing2 | +| main.rs:861:26:861:26 | y | A | main.rs:778:5:779:14 | S2 | +| main.rs:861:26:861:31 | y.m3() | | main.rs:778:5:779:14 | S2 | +| main.rs:863:13:863:13 | x | | main.rs:766:5:769:5 | MyThing | +| main.rs:863:13:863:13 | x | A | main.rs:776:5:777:14 | S1 | +| main.rs:863:17:863:33 | MyThing {...} | | main.rs:766:5:769:5 | MyThing | +| main.rs:863:17:863:33 | MyThing {...} | A | main.rs:776:5:777:14 | S1 | +| main.rs:863:30:863:31 | S1 | | main.rs:776:5:777:14 | S1 | +| main.rs:864:13:864:13 | s | | main.rs:776:5:777:14 | S1 | +| main.rs:864:17:864:32 | call_trait_m1(...) | | main.rs:776:5:777:14 | S1 | +| main.rs:864:31:864:31 | x | | main.rs:766:5:769:5 | MyThing | +| main.rs:864:31:864:31 | x | A | main.rs:776:5:777:14 | S1 | +| main.rs:866:13:866:13 | x | | main.rs:771:5:774:5 | MyThing2 | +| main.rs:866:13:866:13 | x | A | main.rs:778:5:779:14 | S2 | +| main.rs:866:17:866:34 | MyThing2 {...} | | main.rs:771:5:774:5 | MyThing2 | +| main.rs:866:17:866:34 | MyThing2 {...} | A | main.rs:778:5:779:14 | S2 | +| main.rs:866:31:866:32 | S2 | | main.rs:778:5:779:14 | S2 | +| main.rs:867:13:867:13 | s | | main.rs:766:5:769:5 | MyThing | +| main.rs:867:13:867:13 | s | A | main.rs:778:5:779:14 | S2 | +| main.rs:867:17:867:32 | call_trait_m1(...) | | main.rs:766:5:769:5 | MyThing | +| main.rs:867:17:867:32 | call_trait_m1(...) | A | main.rs:778:5:779:14 | S2 | +| main.rs:867:31:867:31 | x | | main.rs:771:5:774:5 | MyThing2 | +| main.rs:867:31:867:31 | x | A | main.rs:778:5:779:14 | S2 | +| main.rs:885:22:885:22 | x | | file://:0:0:0:0 | & | +| main.rs:885:22:885:22 | x | &T | main.rs:885:11:885:19 | T | +| main.rs:885:35:887:5 | { ... } | | file://:0:0:0:0 | & | +| main.rs:885:35:887:5 | { ... } | &T | main.rs:885:11:885:19 | T | +| main.rs:886:9:886:9 | x | | file://:0:0:0:0 | & | +| main.rs:886:9:886:9 | x | &T | main.rs:885:11:885:19 | T | +| main.rs:890:17:890:20 | SelfParam | | main.rs:875:5:876:14 | S1 | +| main.rs:890:29:892:9 | { ... } | | main.rs:878:5:879:14 | S2 | +| main.rs:891:13:891:14 | S2 | | main.rs:878:5:879:14 | S2 | +| main.rs:895:21:895:21 | x | | main.rs:895:13:895:14 | T1 | +| main.rs:898:5:900:5 | { ... } | | main.rs:895:17:895:18 | T2 | +| main.rs:899:9:899:9 | x | | main.rs:895:13:895:14 | T1 | +| main.rs:899:9:899:16 | x.into() | | main.rs:895:17:895:18 | T2 | +| main.rs:903:13:903:13 | x | | main.rs:875:5:876:14 | S1 | +| main.rs:903:17:903:18 | S1 | | main.rs:875:5:876:14 | S1 | +| main.rs:904:18:904:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:904:26:904:31 | id(...) | | file://:0:0:0:0 | & | +| main.rs:904:26:904:31 | id(...) | &T | main.rs:875:5:876:14 | S1 | +| main.rs:904:29:904:30 | &x | | file://:0:0:0:0 | & | +| main.rs:904:29:904:30 | &x | &T | main.rs:875:5:876:14 | S1 | +| main.rs:904:30:904:30 | x | | main.rs:875:5:876:14 | S1 | +| main.rs:906:13:906:13 | x | | main.rs:875:5:876:14 | S1 | +| main.rs:906:17:906:18 | S1 | | main.rs:875:5:876:14 | S1 | +| main.rs:907:18:907:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:907:26:907:37 | id::<...>(...) | | file://:0:0:0:0 | & | +| main.rs:907:26:907:37 | id::<...>(...) | &T | main.rs:875:5:876:14 | S1 | +| main.rs:907:35:907:36 | &x | | file://:0:0:0:0 | & | +| main.rs:907:35:907:36 | &x | &T | main.rs:875:5:876:14 | S1 | +| main.rs:907:36:907:36 | x | | main.rs:875:5:876:14 | S1 | +| main.rs:909:13:909:13 | x | | main.rs:875:5:876:14 | S1 | +| main.rs:909:17:909:18 | S1 | | main.rs:875:5:876:14 | S1 | +| main.rs:910:18:910:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:910:26:910:44 | id::<...>(...) | | file://:0:0:0:0 | & | +| main.rs:910:26:910:44 | id::<...>(...) | &T | main.rs:875:5:876:14 | S1 | +| main.rs:910:42:910:43 | &x | | file://:0:0:0:0 | & | +| main.rs:910:42:910:43 | &x | &T | main.rs:875:5:876:14 | S1 | +| main.rs:910:43:910:43 | x | | main.rs:875:5:876:14 | S1 | +| main.rs:912:13:912:13 | x | | main.rs:875:5:876:14 | S1 | +| main.rs:912:17:912:18 | S1 | | main.rs:875:5:876:14 | S1 | +| main.rs:913:9:913:25 | into::<...>(...) | | main.rs:878:5:879:14 | S2 | +| main.rs:913:24:913:24 | x | | main.rs:875:5:876:14 | S1 | +| main.rs:915:13:915:13 | x | | main.rs:875:5:876:14 | S1 | +| main.rs:915:17:915:18 | S1 | | main.rs:875:5:876:14 | S1 | +| main.rs:916:13:916:13 | y | | main.rs:878:5:879:14 | S2 | +| main.rs:916:21:916:27 | into(...) | | main.rs:878:5:879:14 | S2 | +| main.rs:916:26:916:26 | x | | main.rs:875:5:876:14 | S1 | +| main.rs:930:22:930:25 | SelfParam | | main.rs:921:5:927:5 | PairOption | +| main.rs:930:22:930:25 | SelfParam | Fst | main.rs:929:10:929:12 | Fst | +| main.rs:930:22:930:25 | SelfParam | Snd | main.rs:929:15:929:17 | Snd | +| main.rs:930:35:937:9 | { ... } | | main.rs:929:15:929:17 | Snd | +| main.rs:931:13:936:13 | match self { ... } | | main.rs:929:15:929:17 | Snd | +| main.rs:931:19:931:22 | self | | main.rs:921:5:927:5 | PairOption | +| main.rs:931:19:931:22 | self | Fst | main.rs:929:10:929:12 | Fst | +| main.rs:931:19:931:22 | self | Snd | main.rs:929:15:929:17 | Snd | +| main.rs:932:43:932:82 | MacroExpr | | main.rs:929:15:929:17 | Snd | +| main.rs:932:50:932:81 | "PairNone has no second elemen... | | {EXTERNAL LOCATION} | str | +| main.rs:932:50:932:81 | MacroExpr | | main.rs:929:15:929:17 | Snd | +| main.rs:932:50:932:81 | { ... } | | main.rs:929:15:929:17 | Snd | +| main.rs:933:43:933:81 | MacroExpr | | main.rs:929:15:929:17 | Snd | +| main.rs:933:50:933:80 | "PairFst has no second element... | | {EXTERNAL LOCATION} | str | +| main.rs:933:50:933:80 | MacroExpr | | main.rs:929:15:929:17 | Snd | +| main.rs:933:50:933:80 | { ... } | | main.rs:929:15:929:17 | Snd | +| main.rs:934:37:934:39 | snd | | main.rs:929:15:929:17 | Snd | +| main.rs:934:45:934:47 | snd | | main.rs:929:15:929:17 | Snd | +| main.rs:935:41:935:43 | snd | | main.rs:929:15:929:17 | Snd | +| main.rs:935:49:935:51 | snd | | main.rs:929:15:929:17 | Snd | +| main.rs:961:10:961:10 | t | | main.rs:921:5:927:5 | PairOption | +| main.rs:961:10:961:10 | t | Fst | main.rs:943:5:944:14 | S2 | +| main.rs:961:10:961:10 | t | Snd | main.rs:921:5:927:5 | PairOption | +| main.rs:961:10:961:10 | t | Snd.Fst | main.rs:943:5:944:14 | S2 | +| main.rs:961:10:961:10 | t | Snd.Snd | main.rs:946:5:947:14 | S3 | +| main.rs:962:13:962:13 | x | | main.rs:946:5:947:14 | S3 | +| main.rs:962:17:962:17 | t | | main.rs:921:5:927:5 | PairOption | +| main.rs:962:17:962:17 | t | Fst | main.rs:943:5:944:14 | S2 | +| main.rs:962:17:962:17 | t | Snd | main.rs:921:5:927:5 | PairOption | +| main.rs:962:17:962:17 | t | Snd.Fst | main.rs:943:5:944:14 | S2 | +| main.rs:962:17:962:17 | t | Snd.Snd | main.rs:946:5:947:14 | S3 | +| main.rs:962:17:962:29 | t.unwrapSnd() | | main.rs:921:5:927:5 | PairOption | +| main.rs:962:17:962:29 | t.unwrapSnd() | Fst | main.rs:943:5:944:14 | S2 | +| main.rs:962:17:962:29 | t.unwrapSnd() | Snd | main.rs:946:5:947:14 | S3 | +| main.rs:962:17:962:41 | ... .unwrapSnd() | | main.rs:946:5:947:14 | S3 | +| main.rs:963:18:963:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:963:26:963:26 | x | | main.rs:946:5:947:14 | S3 | +| main.rs:968:13:968:14 | p1 | | main.rs:921:5:927:5 | PairOption | +| main.rs:968:13:968:14 | p1 | Fst | main.rs:940:5:941:14 | S1 | +| main.rs:968:13:968:14 | p1 | Snd | main.rs:943:5:944:14 | S2 | +| main.rs:968:26:968:53 | ...::PairBoth(...) | | main.rs:921:5:927:5 | PairOption | +| main.rs:968:26:968:53 | ...::PairBoth(...) | Fst | main.rs:940:5:941:14 | S1 | +| main.rs:968:26:968:53 | ...::PairBoth(...) | Snd | main.rs:943:5:944:14 | S2 | +| main.rs:968:47:968:48 | S1 | | main.rs:940:5:941:14 | S1 | +| main.rs:968:51:968:52 | S2 | | main.rs:943:5:944:14 | S2 | +| main.rs:969:18:969:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:969:26:969:27 | p1 | | main.rs:921:5:927:5 | PairOption | +| main.rs:969:26:969:27 | p1 | Fst | main.rs:940:5:941:14 | S1 | +| main.rs:969:26:969:27 | p1 | Snd | main.rs:943:5:944:14 | S2 | +| main.rs:972:13:972:14 | p2 | | main.rs:921:5:927:5 | PairOption | +| main.rs:972:13:972:14 | p2 | Fst | main.rs:940:5:941:14 | S1 | +| main.rs:972:13:972:14 | p2 | Snd | main.rs:943:5:944:14 | S2 | +| main.rs:972:26:972:47 | ...::PairNone(...) | | main.rs:921:5:927:5 | PairOption | +| main.rs:972:26:972:47 | ...::PairNone(...) | Fst | main.rs:940:5:941:14 | S1 | +| main.rs:972:26:972:47 | ...::PairNone(...) | Snd | main.rs:943:5:944:14 | S2 | +| main.rs:973:18:973:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:973:26:973:27 | p2 | | main.rs:921:5:927:5 | PairOption | +| main.rs:973:26:973:27 | p2 | Fst | main.rs:940:5:941:14 | S1 | +| main.rs:973:26:973:27 | p2 | Snd | main.rs:943:5:944:14 | S2 | +| main.rs:976:13:976:14 | p3 | | main.rs:921:5:927:5 | PairOption | +| main.rs:976:13:976:14 | p3 | Fst | main.rs:943:5:944:14 | S2 | +| main.rs:976:13:976:14 | p3 | Snd | main.rs:946:5:947:14 | S3 | +| main.rs:976:34:976:56 | ...::PairSnd(...) | | main.rs:921:5:927:5 | PairOption | +| main.rs:976:34:976:56 | ...::PairSnd(...) | Fst | main.rs:943:5:944:14 | S2 | +| main.rs:976:34:976:56 | ...::PairSnd(...) | Snd | main.rs:946:5:947:14 | S3 | +| main.rs:976:54:976:55 | S3 | | main.rs:946:5:947:14 | S3 | +| main.rs:977:18:977:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:977:26:977:27 | p3 | | main.rs:921:5:927:5 | PairOption | +| main.rs:977:26:977:27 | p3 | Fst | main.rs:943:5:944:14 | S2 | +| main.rs:977:26:977:27 | p3 | Snd | main.rs:946:5:947:14 | S3 | +| main.rs:980:13:980:14 | p3 | | main.rs:921:5:927:5 | PairOption | +| main.rs:980:13:980:14 | p3 | Fst | main.rs:943:5:944:14 | S2 | +| main.rs:980:13:980:14 | p3 | Snd | main.rs:946:5:947:14 | S3 | +| main.rs:980:35:980:56 | ...::PairNone(...) | | main.rs:921:5:927:5 | PairOption | +| main.rs:980:35:980:56 | ...::PairNone(...) | Fst | main.rs:943:5:944:14 | S2 | +| main.rs:980:35:980:56 | ...::PairNone(...) | Snd | main.rs:946:5:947:14 | S3 | +| main.rs:981:18:981:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:981:26:981:27 | p3 | | main.rs:921:5:927:5 | PairOption | +| main.rs:981:26:981:27 | p3 | Fst | main.rs:943:5:944:14 | S2 | +| main.rs:981:26:981:27 | p3 | Snd | main.rs:946:5:947:14 | S3 | +| main.rs:983:11:983:54 | ...::PairSnd(...) | | main.rs:921:5:927:5 | PairOption | +| main.rs:983:11:983:54 | ...::PairSnd(...) | Fst | main.rs:943:5:944:14 | S2 | +| main.rs:983:11:983:54 | ...::PairSnd(...) | Snd | main.rs:921:5:927:5 | PairOption | +| main.rs:983:11:983:54 | ...::PairSnd(...) | Snd.Fst | main.rs:943:5:944:14 | S2 | +| main.rs:983:11:983:54 | ...::PairSnd(...) | Snd.Snd | main.rs:946:5:947:14 | S3 | +| main.rs:983:31:983:53 | ...::PairSnd(...) | | main.rs:921:5:927:5 | PairOption | +| main.rs:983:31:983:53 | ...::PairSnd(...) | Fst | main.rs:943:5:944:14 | S2 | +| main.rs:983:31:983:53 | ...::PairSnd(...) | Snd | main.rs:946:5:947:14 | S3 | +| main.rs:983:51:983:52 | S3 | | main.rs:946:5:947:14 | S3 | +| main.rs:996:16:996:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:996:16:996:24 | SelfParam | &T | main.rs:994:5:1001:5 | Self [trait MyTrait] | +| main.rs:996:27:996:31 | value | | main.rs:994:19:994:19 | S | +| main.rs:998:21:998:29 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:998:21:998:29 | SelfParam | &T | main.rs:994:5:1001:5 | Self [trait MyTrait] | +| main.rs:998:32:998:36 | value | | main.rs:994:19:994:19 | S | +| main.rs:999:13:999:16 | self | | file://:0:0:0:0 | & | +| main.rs:999:13:999:16 | self | &T | main.rs:994:5:1001:5 | Self [trait MyTrait] | +| main.rs:999:22:999:26 | value | | main.rs:994:19:994:19 | S | +| main.rs:1005:16:1005:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1005:16:1005:24 | SelfParam | &T | main.rs:988:5:992:5 | MyOption | +| main.rs:1005:16:1005:24 | SelfParam | &T.T | main.rs:1003:10:1003:10 | T | +| main.rs:1005:27:1005:31 | value | | main.rs:1003:10:1003:10 | T | +| main.rs:1009:26:1011:9 | { ... } | | main.rs:988:5:992:5 | MyOption | +| main.rs:1009:26:1011:9 | { ... } | T | main.rs:1008:10:1008:10 | T | +| main.rs:1010:13:1010:30 | ...::MyNone(...) | | main.rs:988:5:992:5 | MyOption | +| main.rs:1010:13:1010:30 | ...::MyNone(...) | T | main.rs:1008:10:1008:10 | T | +| main.rs:1015:20:1015:23 | SelfParam | | main.rs:988:5:992:5 | MyOption | +| main.rs:1015:20:1015:23 | SelfParam | T | main.rs:988:5:992:5 | MyOption | +| main.rs:1015:20:1015:23 | SelfParam | T.T | main.rs:1014:10:1014:10 | T | +| main.rs:1015:41:1020:9 | { ... } | | main.rs:988:5:992:5 | MyOption | +| main.rs:1015:41:1020:9 | { ... } | T | main.rs:1014:10:1014:10 | T | +| main.rs:1016:13:1019:13 | match self { ... } | | main.rs:988:5:992:5 | MyOption | +| main.rs:1016:13:1019:13 | match self { ... } | T | main.rs:1014:10:1014:10 | T | +| main.rs:1016:19:1016:22 | self | | main.rs:988:5:992:5 | MyOption | +| main.rs:1016:19:1016:22 | self | T | main.rs:988:5:992:5 | MyOption | +| main.rs:1016:19:1016:22 | self | T.T | main.rs:1014:10:1014:10 | T | +| main.rs:1017:39:1017:56 | ...::MyNone(...) | | main.rs:988:5:992:5 | MyOption | +| main.rs:1017:39:1017:56 | ...::MyNone(...) | T | main.rs:1014:10:1014:10 | T | +| main.rs:1018:34:1018:34 | x | | main.rs:988:5:992:5 | MyOption | +| main.rs:1018:34:1018:34 | x | T | main.rs:1014:10:1014:10 | T | +| main.rs:1018:40:1018:40 | x | | main.rs:988:5:992:5 | MyOption | +| main.rs:1018:40:1018:40 | x | T | main.rs:1014:10:1014:10 | T | +| main.rs:1027:13:1027:14 | x1 | | main.rs:988:5:992:5 | MyOption | +| main.rs:1027:18:1027:37 | ...::new(...) | | main.rs:988:5:992:5 | MyOption | +| main.rs:1028:18:1028:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1028:26:1028:27 | x1 | | main.rs:988:5:992:5 | MyOption | +| main.rs:1030:13:1030:18 | mut x2 | | main.rs:988:5:992:5 | MyOption | +| main.rs:1030:13:1030:18 | mut x2 | T | main.rs:1023:5:1024:13 | S | +| main.rs:1030:22:1030:36 | ...::new(...) | | main.rs:988:5:992:5 | MyOption | +| main.rs:1030:22:1030:36 | ...::new(...) | T | main.rs:1023:5:1024:13 | S | +| main.rs:1031:9:1031:10 | x2 | | main.rs:988:5:992:5 | MyOption | +| main.rs:1031:9:1031:10 | x2 | T | main.rs:1023:5:1024:13 | S | +| main.rs:1031:16:1031:16 | S | | main.rs:1023:5:1024:13 | S | +| main.rs:1032:18:1032:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1032:26:1032:27 | x2 | | main.rs:988:5:992:5 | MyOption | +| main.rs:1032:26:1032:27 | x2 | T | main.rs:1023:5:1024:13 | S | +| main.rs:1034:13:1034:18 | mut x3 | | main.rs:988:5:992:5 | MyOption | +| main.rs:1034:22:1034:36 | ...::new(...) | | main.rs:988:5:992:5 | MyOption | +| main.rs:1035:9:1035:10 | x3 | | main.rs:988:5:992:5 | MyOption | +| main.rs:1035:21:1035:21 | S | | main.rs:1023:5:1024:13 | S | +| main.rs:1036:18:1036:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1036:26:1036:27 | x3 | | main.rs:988:5:992:5 | MyOption | +| main.rs:1038:13:1038:18 | mut x4 | | main.rs:988:5:992:5 | MyOption | +| main.rs:1038:13:1038:18 | mut x4 | T | main.rs:1023:5:1024:13 | S | +| main.rs:1038:22:1038:36 | ...::new(...) | | main.rs:988:5:992:5 | MyOption | +| main.rs:1038:22:1038:36 | ...::new(...) | T | main.rs:1023:5:1024:13 | S | +| main.rs:1039:23:1039:29 | &mut x4 | | file://:0:0:0:0 | & | +| main.rs:1039:23:1039:29 | &mut x4 | &T | main.rs:988:5:992:5 | MyOption | +| main.rs:1039:23:1039:29 | &mut x4 | &T.T | main.rs:1023:5:1024:13 | S | +| main.rs:1039:28:1039:29 | x4 | | main.rs:988:5:992:5 | MyOption | +| main.rs:1039:28:1039:29 | x4 | T | main.rs:1023:5:1024:13 | S | +| main.rs:1039:32:1039:32 | S | | main.rs:1023:5:1024:13 | S | +| main.rs:1040:18:1040:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1040:26:1040:27 | x4 | | main.rs:988:5:992:5 | MyOption | +| main.rs:1040:26:1040:27 | x4 | T | main.rs:1023:5:1024:13 | S | +| main.rs:1042:13:1042:14 | x5 | | main.rs:988:5:992:5 | MyOption | +| main.rs:1042:13:1042:14 | x5 | T | main.rs:988:5:992:5 | MyOption | +| main.rs:1042:13:1042:14 | x5 | T.T | main.rs:1023:5:1024:13 | S | +| main.rs:1042:18:1042:58 | ...::MySome(...) | | main.rs:988:5:992:5 | MyOption | +| main.rs:1042:18:1042:58 | ...::MySome(...) | T | main.rs:988:5:992:5 | MyOption | +| main.rs:1042:18:1042:58 | ...::MySome(...) | T.T | main.rs:1023:5:1024:13 | S | +| main.rs:1042:35:1042:57 | ...::MyNone(...) | | main.rs:988:5:992:5 | MyOption | +| main.rs:1042:35:1042:57 | ...::MyNone(...) | T | main.rs:1023:5:1024:13 | S | +| main.rs:1043:18:1043:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1043:26:1043:27 | x5 | | main.rs:988:5:992:5 | MyOption | +| main.rs:1043:26:1043:27 | x5 | T | main.rs:988:5:992:5 | MyOption | +| main.rs:1043:26:1043:27 | x5 | T.T | main.rs:1023:5:1024:13 | S | +| main.rs:1043:26:1043:37 | x5.flatten() | | main.rs:988:5:992:5 | MyOption | +| main.rs:1043:26:1043:37 | x5.flatten() | T | main.rs:1023:5:1024:13 | S | +| main.rs:1045:13:1045:14 | x6 | | main.rs:988:5:992:5 | MyOption | +| main.rs:1045:13:1045:14 | x6 | T | main.rs:988:5:992:5 | MyOption | +| main.rs:1045:13:1045:14 | x6 | T.T | main.rs:1023:5:1024:13 | S | +| main.rs:1045:18:1045:58 | ...::MySome(...) | | main.rs:988:5:992:5 | MyOption | +| main.rs:1045:18:1045:58 | ...::MySome(...) | T | main.rs:988:5:992:5 | MyOption | +| main.rs:1045:18:1045:58 | ...::MySome(...) | T.T | main.rs:1023:5:1024:13 | S | +| main.rs:1045:35:1045:57 | ...::MyNone(...) | | main.rs:988:5:992:5 | MyOption | +| main.rs:1045:35:1045:57 | ...::MyNone(...) | T | main.rs:1023:5:1024:13 | S | +| main.rs:1046:18:1046:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1046:26:1046:61 | ...::flatten(...) | | main.rs:988:5:992:5 | MyOption | +| main.rs:1046:26:1046:61 | ...::flatten(...) | T | main.rs:1023:5:1024:13 | S | +| main.rs:1046:59:1046:60 | x6 | | main.rs:988:5:992:5 | MyOption | +| main.rs:1046:59:1046:60 | x6 | T | main.rs:988:5:992:5 | MyOption | +| main.rs:1046:59:1046:60 | x6 | T.T | main.rs:1023:5:1024:13 | S | +| main.rs:1049:13:1049:19 | from_if | | main.rs:988:5:992:5 | MyOption | +| main.rs:1049:13:1049:19 | from_if | T | main.rs:1023:5:1024:13 | S | +| main.rs:1049:23:1053:9 | if ... {...} else {...} | | main.rs:988:5:992:5 | MyOption | +| main.rs:1049:23:1053:9 | if ... {...} else {...} | T | main.rs:1023:5:1024:13 | S | +| main.rs:1049:26:1049:26 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1049:26:1049:30 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1049:30:1049:30 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1049:32:1051:9 | { ... } | | main.rs:988:5:992:5 | MyOption | +| main.rs:1049:32:1051:9 | { ... } | T | main.rs:1023:5:1024:13 | S | +| main.rs:1050:13:1050:30 | ...::MyNone(...) | | main.rs:988:5:992:5 | MyOption | +| main.rs:1050:13:1050:30 | ...::MyNone(...) | T | main.rs:1023:5:1024:13 | S | +| main.rs:1051:16:1053:9 | { ... } | | main.rs:988:5:992:5 | MyOption | +| main.rs:1051:16:1053:9 | { ... } | T | main.rs:1023:5:1024:13 | S | +| main.rs:1052:13:1052:31 | ...::MySome(...) | | main.rs:988:5:992:5 | MyOption | +| main.rs:1052:13:1052:31 | ...::MySome(...) | T | main.rs:1023:5:1024:13 | S | +| main.rs:1052:30:1052:30 | S | | main.rs:1023:5:1024:13 | S | +| main.rs:1054:18:1054:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1054:26:1054:32 | from_if | | main.rs:988:5:992:5 | MyOption | +| main.rs:1054:26:1054:32 | from_if | T | main.rs:1023:5:1024:13 | S | +| main.rs:1057:13:1057:22 | from_match | | main.rs:988:5:992:5 | MyOption | +| main.rs:1057:13:1057:22 | from_match | T | main.rs:1023:5:1024:13 | S | +| main.rs:1057:26:1060:9 | match ... { ... } | | main.rs:988:5:992:5 | MyOption | +| main.rs:1057:26:1060:9 | match ... { ... } | T | main.rs:1023:5:1024:13 | S | +| main.rs:1057:32:1057:32 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1057:32:1057:36 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1057:36:1057:36 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1058:13:1058:16 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1058:21:1058:38 | ...::MyNone(...) | | main.rs:988:5:992:5 | MyOption | +| main.rs:1058:21:1058:38 | ...::MyNone(...) | T | main.rs:1023:5:1024:13 | S | +| main.rs:1059:13:1059:17 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1059:22:1059:40 | ...::MySome(...) | | main.rs:988:5:992:5 | MyOption | +| main.rs:1059:22:1059:40 | ...::MySome(...) | T | main.rs:1023:5:1024:13 | S | +| main.rs:1059:39:1059:39 | S | | main.rs:1023:5:1024:13 | S | +| main.rs:1061:18:1061:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1061:26:1061:35 | from_match | | main.rs:988:5:992:5 | MyOption | +| main.rs:1061:26:1061:35 | from_match | T | main.rs:1023:5:1024:13 | S | +| main.rs:1064:13:1064:21 | from_loop | | main.rs:988:5:992:5 | MyOption | +| main.rs:1064:13:1064:21 | from_loop | T | main.rs:1023:5:1024:13 | S | +| main.rs:1064:25:1069:9 | loop { ... } | | main.rs:988:5:992:5 | MyOption | +| main.rs:1064:25:1069:9 | loop { ... } | T | main.rs:1023:5:1024:13 | S | +| main.rs:1065:16:1065:16 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1065:16:1065:20 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1065:20:1065:20 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1066:23:1066:40 | ...::MyNone(...) | | main.rs:988:5:992:5 | MyOption | +| main.rs:1066:23:1066:40 | ...::MyNone(...) | T | main.rs:1023:5:1024:13 | S | +| main.rs:1068:19:1068:37 | ...::MySome(...) | | main.rs:988:5:992:5 | MyOption | +| main.rs:1068:19:1068:37 | ...::MySome(...) | T | main.rs:1023:5:1024:13 | S | +| main.rs:1068:36:1068:36 | S | | main.rs:1023:5:1024:13 | S | +| main.rs:1070:18:1070:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1070:26:1070:34 | from_loop | | main.rs:988:5:992:5 | MyOption | +| main.rs:1070:26:1070:34 | from_loop | T | main.rs:1023:5:1024:13 | S | +| main.rs:1083:15:1083:18 | SelfParam | | main.rs:1076:5:1077:19 | S | +| main.rs:1083:15:1083:18 | SelfParam | T | main.rs:1082:10:1082:10 | T | +| main.rs:1083:26:1085:9 | { ... } | | main.rs:1082:10:1082:10 | T | +| main.rs:1084:13:1084:16 | self | | main.rs:1076:5:1077:19 | S | +| main.rs:1084:13:1084:16 | self | T | main.rs:1082:10:1082:10 | T | +| main.rs:1084:13:1084:18 | self.0 | | main.rs:1082:10:1082:10 | T | +| main.rs:1087:15:1087:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1087:15:1087:19 | SelfParam | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1087:15:1087:19 | SelfParam | &T.T | main.rs:1082:10:1082:10 | T | +| main.rs:1087:28:1089:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1087:28:1089:9 | { ... } | &T | main.rs:1082:10:1082:10 | T | +| main.rs:1088:13:1088:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1088:13:1088:19 | &... | &T | main.rs:1082:10:1082:10 | T | +| main.rs:1088:14:1088:17 | self | | file://:0:0:0:0 | & | +| main.rs:1088:14:1088:17 | self | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1088:14:1088:17 | self | &T.T | main.rs:1082:10:1082:10 | T | +| main.rs:1088:14:1088:19 | self.0 | | main.rs:1082:10:1082:10 | T | +| main.rs:1091:15:1091:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1091:15:1091:25 | SelfParam | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1091:15:1091:25 | SelfParam | &T.T | main.rs:1082:10:1082:10 | T | +| main.rs:1091:34:1093:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1091:34:1093:9 | { ... } | &T | main.rs:1082:10:1082:10 | T | +| main.rs:1092:13:1092:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1092:13:1092:19 | &... | &T | main.rs:1082:10:1082:10 | T | +| main.rs:1092:14:1092:17 | self | | file://:0:0:0:0 | & | +| main.rs:1092:14:1092:17 | self | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1092:14:1092:17 | self | &T.T | main.rs:1082:10:1082:10 | T | +| main.rs:1092:14:1092:19 | self.0 | | main.rs:1082:10:1082:10 | T | +| main.rs:1097:13:1097:14 | x1 | | main.rs:1076:5:1077:19 | S | +| main.rs:1097:13:1097:14 | x1 | T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1097:18:1097:22 | S(...) | | main.rs:1076:5:1077:19 | S | +| main.rs:1097:18:1097:22 | S(...) | T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1097:20:1097:21 | S2 | | main.rs:1079:5:1080:14 | S2 | | main.rs:1098:18:1098:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1098:26:1098:27 | x5 | | file://:0:0:0:0 | & | -| main.rs:1098:26:1098:27 | x5 | &T | main.rs:1057:5:1058:19 | S | -| main.rs:1098:26:1098:27 | x5 | &T.T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1098:26:1098:32 | x5.m1() | | main.rs:1060:5:1061:14 | S2 | -| main.rs:1099:18:1099:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1099:26:1099:27 | x5 | | file://:0:0:0:0 | & | -| main.rs:1099:26:1099:27 | x5 | &T | main.rs:1057:5:1058:19 | S | -| main.rs:1099:26:1099:27 | x5 | &T.T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1099:26:1099:29 | x5.0 | | main.rs:1060:5:1061:14 | S2 | -| main.rs:1101:13:1101:14 | x6 | | file://:0:0:0:0 | & | -| main.rs:1101:13:1101:14 | x6 | &T | file://:0:0:0:0 | & | -| main.rs:1101:13:1101:14 | x6 | &T | main.rs:1057:5:1058:19 | S | -| main.rs:1101:13:1101:14 | x6 | &T.&T | main.rs:1057:5:1058:19 | S | -| main.rs:1101:13:1101:14 | x6 | &T.&T.T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1101:13:1101:14 | x6 | &T.T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1101:18:1101:23 | &... | | file://:0:0:0:0 | & | -| main.rs:1101:18:1101:23 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1101:18:1101:23 | &... | &T | main.rs:1057:5:1058:19 | S | -| main.rs:1101:18:1101:23 | &... | &T.&T | main.rs:1057:5:1058:19 | S | -| main.rs:1101:18:1101:23 | &... | &T.&T.T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1101:18:1101:23 | &... | &T.T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1101:19:1101:23 | S(...) | | file://:0:0:0:0 | & | -| main.rs:1101:19:1101:23 | S(...) | | main.rs:1057:5:1058:19 | S | -| main.rs:1101:19:1101:23 | S(...) | &T | main.rs:1057:5:1058:19 | S | -| main.rs:1101:19:1101:23 | S(...) | &T.T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1101:19:1101:23 | S(...) | T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1101:21:1101:22 | S2 | | main.rs:1060:5:1061:14 | S2 | -| main.rs:1104:18:1104:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1104:26:1104:30 | (...) | | file://:0:0:0:0 | & | -| main.rs:1104:26:1104:30 | (...) | | main.rs:1057:5:1058:19 | S | -| main.rs:1104:26:1104:30 | (...) | &T | main.rs:1057:5:1058:19 | S | -| main.rs:1104:26:1104:30 | (...) | &T.T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1104:26:1104:30 | (...) | T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1104:26:1104:35 | ... .m1() | | main.rs:1060:5:1061:14 | S2 | -| main.rs:1104:27:1104:29 | * ... | | file://:0:0:0:0 | & | -| main.rs:1104:27:1104:29 | * ... | | main.rs:1057:5:1058:19 | S | -| main.rs:1104:27:1104:29 | * ... | &T | main.rs:1057:5:1058:19 | S | -| main.rs:1104:27:1104:29 | * ... | &T.T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1104:27:1104:29 | * ... | T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1104:28:1104:29 | x6 | | file://:0:0:0:0 | & | -| main.rs:1104:28:1104:29 | x6 | &T | file://:0:0:0:0 | & | -| main.rs:1104:28:1104:29 | x6 | &T | main.rs:1057:5:1058:19 | S | -| main.rs:1104:28:1104:29 | x6 | &T.&T | main.rs:1057:5:1058:19 | S | -| main.rs:1104:28:1104:29 | x6 | &T.&T.T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1104:28:1104:29 | x6 | &T.T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1106:13:1106:14 | x7 | | main.rs:1057:5:1058:19 | S | -| main.rs:1106:13:1106:14 | x7 | T | file://:0:0:0:0 | & | -| main.rs:1106:13:1106:14 | x7 | T.&T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1106:18:1106:23 | S(...) | | main.rs:1057:5:1058:19 | S | -| main.rs:1106:18:1106:23 | S(...) | T | file://:0:0:0:0 | & | -| main.rs:1106:18:1106:23 | S(...) | T.&T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1106:20:1106:22 | &S2 | | file://:0:0:0:0 | & | -| main.rs:1106:20:1106:22 | &S2 | &T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1106:21:1106:22 | S2 | | main.rs:1060:5:1061:14 | S2 | -| main.rs:1109:13:1109:13 | t | | file://:0:0:0:0 | & | -| main.rs:1109:13:1109:13 | t | &T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1109:17:1109:18 | x7 | | main.rs:1057:5:1058:19 | S | -| main.rs:1109:17:1109:18 | x7 | T | file://:0:0:0:0 | & | -| main.rs:1109:17:1109:18 | x7 | T.&T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1109:17:1109:23 | x7.m1() | | file://:0:0:0:0 | & | -| main.rs:1109:17:1109:23 | x7.m1() | &T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1110:18:1110:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1110:26:1110:27 | x7 | | main.rs:1057:5:1058:19 | S | -| main.rs:1110:26:1110:27 | x7 | T | file://:0:0:0:0 | & | -| main.rs:1110:26:1110:27 | x7 | T.&T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1112:13:1112:14 | x9 | | {EXTERNAL LOCATION} | String | -| main.rs:1112:27:1112:33 | "Hello" | | {EXTERNAL LOCATION} | str | -| main.rs:1112:27:1112:45 | "Hello".to_string() | | {EXTERNAL LOCATION} | String | -| main.rs:1115:13:1115:13 | u | | {EXTERNAL LOCATION} | Result | -| main.rs:1115:13:1115:13 | u | T | {EXTERNAL LOCATION} | u32 | -| main.rs:1115:17:1115:18 | x9 | | {EXTERNAL LOCATION} | String | -| main.rs:1115:17:1115:33 | x9.parse() | | {EXTERNAL LOCATION} | Result | -| main.rs:1115:17:1115:33 | x9.parse() | T | {EXTERNAL LOCATION} | u32 | -| main.rs:1122:16:1122:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1122:16:1122:20 | SelfParam | &T | main.rs:1120:5:1128:5 | Self [trait MyTrait] | -| main.rs:1125:16:1125:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1125:16:1125:20 | SelfParam | &T | main.rs:1120:5:1128:5 | Self [trait MyTrait] | -| main.rs:1125:32:1127:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1125:32:1127:9 | { ... } | &T | main.rs:1120:5:1128:5 | Self [trait MyTrait] | -| main.rs:1126:13:1126:16 | self | | file://:0:0:0:0 | & | -| main.rs:1126:13:1126:16 | self | &T | main.rs:1120:5:1128:5 | Self [trait MyTrait] | -| main.rs:1126:13:1126:22 | self.foo() | | file://:0:0:0:0 | & | -| main.rs:1126:13:1126:22 | self.foo() | &T | main.rs:1120:5:1128:5 | Self [trait MyTrait] | -| main.rs:1134:16:1134:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1134:16:1134:20 | SelfParam | &T | main.rs:1130:5:1130:20 | MyStruct | -| main.rs:1134:36:1136:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1134:36:1136:9 | { ... } | &T | main.rs:1130:5:1130:20 | MyStruct | -| main.rs:1135:13:1135:16 | self | | file://:0:0:0:0 | & | -| main.rs:1135:13:1135:16 | self | &T | main.rs:1130:5:1130:20 | MyStruct | -| main.rs:1140:13:1140:13 | x | | main.rs:1130:5:1130:20 | MyStruct | -| main.rs:1140:17:1140:24 | MyStruct | | main.rs:1130:5:1130:20 | MyStruct | -| main.rs:1141:9:1141:9 | x | | main.rs:1130:5:1130:20 | MyStruct | -| main.rs:1141:9:1141:15 | x.bar() | | file://:0:0:0:0 | & | -| main.rs:1141:9:1141:15 | x.bar() | &T | main.rs:1130:5:1130:20 | MyStruct | -| main.rs:1151:16:1151:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1151:16:1151:20 | SelfParam | &T | main.rs:1148:5:1148:26 | MyStruct | -| main.rs:1151:16:1151:20 | SelfParam | &T.T | main.rs:1150:10:1150:10 | T | -| main.rs:1151:32:1153:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1151:32:1153:9 | { ... } | &T | main.rs:1148:5:1148:26 | MyStruct | -| main.rs:1151:32:1153:9 | { ... } | &T.T | main.rs:1150:10:1150:10 | T | -| main.rs:1152:13:1152:16 | self | | file://:0:0:0:0 | & | -| main.rs:1152:13:1152:16 | self | &T | main.rs:1148:5:1148:26 | MyStruct | -| main.rs:1152:13:1152:16 | self | &T.T | main.rs:1150:10:1150:10 | T | -| main.rs:1157:13:1157:13 | x | | main.rs:1148:5:1148:26 | MyStruct | -| main.rs:1157:13:1157:13 | x | T | main.rs:1146:5:1146:13 | S | -| main.rs:1157:17:1157:27 | MyStruct(...) | | main.rs:1148:5:1148:26 | MyStruct | -| main.rs:1157:17:1157:27 | MyStruct(...) | T | main.rs:1146:5:1146:13 | S | -| main.rs:1157:26:1157:26 | S | | main.rs:1146:5:1146:13 | S | -| main.rs:1158:9:1158:9 | x | | main.rs:1148:5:1148:26 | MyStruct | -| main.rs:1158:9:1158:9 | x | T | main.rs:1146:5:1146:13 | S | -| main.rs:1158:9:1158:15 | x.foo() | | file://:0:0:0:0 | & | -| main.rs:1158:9:1158:15 | x.foo() | &T | main.rs:1148:5:1148:26 | MyStruct | -| main.rs:1158:9:1158:15 | x.foo() | &T.T | main.rs:1146:5:1146:13 | S | -| main.rs:1169:17:1169:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1169:17:1169:25 | SelfParam | &T | main.rs:1163:5:1166:5 | MyFlag | -| main.rs:1170:13:1170:16 | self | | file://:0:0:0:0 | & | -| main.rs:1170:13:1170:16 | self | &T | main.rs:1163:5:1166:5 | MyFlag | -| main.rs:1170:13:1170:21 | self.bool | | {EXTERNAL LOCATION} | bool | -| main.rs:1170:13:1170:34 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1170:25:1170:34 | ! ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1170:26:1170:29 | self | | file://:0:0:0:0 | & | -| main.rs:1170:26:1170:29 | self | &T | main.rs:1163:5:1166:5 | MyFlag | -| main.rs:1170:26:1170:34 | self.bool | | {EXTERNAL LOCATION} | bool | -| main.rs:1177:15:1177:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1177:15:1177:19 | SelfParam | &T | main.rs:1174:5:1174:13 | S | -| main.rs:1177:31:1179:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1177:31:1179:9 | { ... } | &T | file://:0:0:0:0 | & | -| main.rs:1177:31:1179:9 | { ... } | &T | main.rs:1174:5:1174:13 | S | -| main.rs:1177:31:1179:9 | { ... } | &T.&T | file://:0:0:0:0 | & | -| main.rs:1177:31:1179:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1177:31:1179:9 | { ... } | &T.&T.&T.&T | main.rs:1174:5:1174:13 | S | -| main.rs:1178:13:1178:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1178:13:1178:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1178:13:1178:19 | &... | &T | main.rs:1174:5:1174:13 | S | -| main.rs:1178:13:1178:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1178:13:1178:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1178:13:1178:19 | &... | &T.&T.&T.&T | main.rs:1174:5:1174:13 | S | -| main.rs:1178:14:1178:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1178:14:1178:19 | &... | | main.rs:1174:5:1174:13 | S | -| main.rs:1178:14:1178:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1178:14:1178:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1178:14:1178:19 | &... | &T.&T.&T | main.rs:1174:5:1174:13 | S | -| main.rs:1178:15:1178:19 | &self | | file://:0:0:0:0 | & | -| main.rs:1178:15:1178:19 | &self | &T | file://:0:0:0:0 | & | -| main.rs:1178:15:1178:19 | &self | &T.&T | main.rs:1174:5:1174:13 | S | -| main.rs:1178:16:1178:19 | self | | file://:0:0:0:0 | & | -| main.rs:1178:16:1178:19 | self | &T | main.rs:1174:5:1174:13 | S | -| main.rs:1181:15:1181:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1181:15:1181:25 | SelfParam | &T | main.rs:1174:5:1174:13 | S | -| main.rs:1181:37:1183:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1181:37:1183:9 | { ... } | &T | file://:0:0:0:0 | & | -| main.rs:1181:37:1183:9 | { ... } | &T | main.rs:1174:5:1174:13 | S | -| main.rs:1181:37:1183:9 | { ... } | &T.&T | file://:0:0:0:0 | & | -| main.rs:1181:37:1183:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1181:37:1183:9 | { ... } | &T.&T.&T.&T | main.rs:1174:5:1174:13 | S | -| main.rs:1182:13:1182:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1182:13:1182:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1182:13:1182:19 | &... | &T | main.rs:1174:5:1174:13 | S | -| main.rs:1182:13:1182:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1182:13:1182:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1182:13:1182:19 | &... | &T.&T.&T.&T | main.rs:1174:5:1174:13 | S | -| main.rs:1182:14:1182:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1182:14:1182:19 | &... | | main.rs:1174:5:1174:13 | S | -| main.rs:1182:14:1182:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1182:14:1182:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1182:14:1182:19 | &... | &T.&T.&T | main.rs:1174:5:1174:13 | S | -| main.rs:1182:15:1182:19 | &self | | file://:0:0:0:0 | & | -| main.rs:1182:15:1182:19 | &self | &T | file://:0:0:0:0 | & | -| main.rs:1182:15:1182:19 | &self | &T.&T | main.rs:1174:5:1174:13 | S | -| main.rs:1182:16:1182:19 | self | | file://:0:0:0:0 | & | -| main.rs:1182:16:1182:19 | self | &T | main.rs:1174:5:1174:13 | S | -| main.rs:1185:15:1185:15 | x | | file://:0:0:0:0 | & | -| main.rs:1185:15:1185:15 | x | &T | main.rs:1174:5:1174:13 | S | -| main.rs:1185:34:1187:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1185:34:1187:9 | { ... } | &T | main.rs:1174:5:1174:13 | S | -| main.rs:1186:13:1186:13 | x | | file://:0:0:0:0 | & | -| main.rs:1186:13:1186:13 | x | &T | main.rs:1174:5:1174:13 | S | -| main.rs:1189:15:1189:15 | x | | file://:0:0:0:0 | & | -| main.rs:1189:15:1189:15 | x | &T | main.rs:1174:5:1174:13 | S | -| main.rs:1189:34:1191:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1189:34:1191:9 | { ... } | &T | file://:0:0:0:0 | & | -| main.rs:1189:34:1191:9 | { ... } | &T | main.rs:1174:5:1174:13 | S | -| main.rs:1189:34:1191:9 | { ... } | &T.&T | file://:0:0:0:0 | & | -| main.rs:1189:34:1191:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1189:34:1191:9 | { ... } | &T.&T.&T.&T | main.rs:1174:5:1174:13 | S | -| main.rs:1190:13:1190:16 | &... | | file://:0:0:0:0 | & | -| main.rs:1190:13:1190:16 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1190:13:1190:16 | &... | &T | main.rs:1174:5:1174:13 | S | -| main.rs:1190:13:1190:16 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1190:13:1190:16 | &... | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1190:13:1190:16 | &... | &T.&T.&T.&T | main.rs:1174:5:1174:13 | S | -| main.rs:1190:14:1190:16 | &... | | file://:0:0:0:0 | & | -| main.rs:1190:14:1190:16 | &... | | main.rs:1174:5:1174:13 | S | -| main.rs:1190:14:1190:16 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1190:14:1190:16 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1190:14:1190:16 | &... | &T.&T.&T | main.rs:1174:5:1174:13 | S | -| main.rs:1190:15:1190:16 | &x | | file://:0:0:0:0 | & | -| main.rs:1190:15:1190:16 | &x | &T | file://:0:0:0:0 | & | -| main.rs:1190:15:1190:16 | &x | &T.&T | main.rs:1174:5:1174:13 | S | -| main.rs:1190:16:1190:16 | x | | file://:0:0:0:0 | & | -| main.rs:1190:16:1190:16 | x | &T | main.rs:1174:5:1174:13 | S | -| main.rs:1195:13:1195:13 | x | | main.rs:1174:5:1174:13 | S | -| main.rs:1195:17:1195:20 | S {...} | | main.rs:1174:5:1174:13 | S | -| main.rs:1196:9:1196:9 | x | | main.rs:1174:5:1174:13 | S | -| main.rs:1196:9:1196:14 | x.f1() | | file://:0:0:0:0 | & | -| main.rs:1196:9:1196:14 | x.f1() | &T | main.rs:1174:5:1174:13 | S | -| main.rs:1197:9:1197:9 | x | | main.rs:1174:5:1174:13 | S | -| main.rs:1197:9:1197:14 | x.f2() | | file://:0:0:0:0 | & | -| main.rs:1197:9:1197:14 | x.f2() | &T | main.rs:1174:5:1174:13 | S | -| main.rs:1198:9:1198:17 | ...::f3(...) | | file://:0:0:0:0 | & | -| main.rs:1198:9:1198:17 | ...::f3(...) | &T | main.rs:1174:5:1174:13 | S | -| main.rs:1198:15:1198:16 | &x | | file://:0:0:0:0 | & | -| main.rs:1198:15:1198:16 | &x | &T | main.rs:1174:5:1174:13 | S | -| main.rs:1198:16:1198:16 | x | | main.rs:1174:5:1174:13 | S | -| main.rs:1200:13:1200:13 | n | | {EXTERNAL LOCATION} | bool | -| main.rs:1200:13:1200:13 | n | | file://:0:0:0:0 | & | -| main.rs:1200:17:1200:24 | * ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1200:17:1200:24 | * ... | | file://:0:0:0:0 | & | -| main.rs:1200:18:1200:24 | * ... | | file://:0:0:0:0 | & | -| main.rs:1200:18:1200:24 | * ... | &T | {EXTERNAL LOCATION} | bool | -| main.rs:1200:18:1200:24 | * ... | &T | file://:0:0:0:0 | & | -| main.rs:1200:19:1200:24 | &... | | file://:0:0:0:0 | & | -| main.rs:1200:19:1200:24 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1200:19:1200:24 | &... | &T.&T | {EXTERNAL LOCATION} | bool | -| main.rs:1200:19:1200:24 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1200:20:1200:24 | &true | | file://:0:0:0:0 | & | -| main.rs:1200:20:1200:24 | &true | &T | {EXTERNAL LOCATION} | bool | -| main.rs:1200:20:1200:24 | &true | &T | file://:0:0:0:0 | & | -| main.rs:1200:21:1200:24 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1200:21:1200:24 | true | | file://:0:0:0:0 | & | -| main.rs:1204:13:1204:20 | mut flag | | main.rs:1163:5:1166:5 | MyFlag | -| main.rs:1204:24:1204:41 | ...::default(...) | | main.rs:1163:5:1166:5 | MyFlag | -| main.rs:1205:22:1205:30 | &mut flag | | file://:0:0:0:0 | & | -| main.rs:1205:22:1205:30 | &mut flag | &T | main.rs:1163:5:1166:5 | MyFlag | -| main.rs:1205:27:1205:30 | flag | | main.rs:1163:5:1166:5 | MyFlag | -| main.rs:1206:18:1206:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1206:26:1206:29 | flag | | main.rs:1163:5:1166:5 | MyFlag | -| main.rs:1220:43:1223:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1220:43:1223:5 | { ... } | E | main.rs:1213:5:1214:14 | S1 | -| main.rs:1220:43:1223:5 | { ... } | T | main.rs:1213:5:1214:14 | S1 | -| main.rs:1221:13:1221:13 | x | | main.rs:1213:5:1214:14 | S1 | -| main.rs:1221:17:1221:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1221:17:1221:30 | ...::Ok(...) | T | main.rs:1213:5:1214:14 | S1 | -| main.rs:1221:17:1221:31 | TryExpr | | main.rs:1213:5:1214:14 | S1 | -| main.rs:1221:28:1221:29 | S1 | | main.rs:1213:5:1214:14 | S1 | -| main.rs:1222:9:1222:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1222:9:1222:22 | ...::Ok(...) | E | main.rs:1213:5:1214:14 | S1 | -| main.rs:1222:9:1222:22 | ...::Ok(...) | T | main.rs:1213:5:1214:14 | S1 | -| main.rs:1222:20:1222:21 | S1 | | main.rs:1213:5:1214:14 | S1 | -| main.rs:1226:46:1230:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1226:46:1230:5 | { ... } | E | main.rs:1216:5:1217:14 | S2 | -| main.rs:1226:46:1230:5 | { ... } | T | main.rs:1213:5:1214:14 | S1 | -| main.rs:1227:13:1227:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1227:13:1227:13 | x | T | main.rs:1213:5:1214:14 | S1 | -| main.rs:1227:17:1227:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1227:17:1227:30 | ...::Ok(...) | T | main.rs:1213:5:1214:14 | S1 | -| main.rs:1227:28:1227:29 | S1 | | main.rs:1213:5:1214:14 | S1 | -| main.rs:1228:13:1228:13 | y | | main.rs:1213:5:1214:14 | S1 | -| main.rs:1228:17:1228:17 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1228:17:1228:17 | x | T | main.rs:1213:5:1214:14 | S1 | -| main.rs:1228:17:1228:18 | TryExpr | | main.rs:1213:5:1214:14 | S1 | -| main.rs:1229:9:1229:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1229:9:1229:22 | ...::Ok(...) | E | main.rs:1216:5:1217:14 | S2 | -| main.rs:1229:9:1229:22 | ...::Ok(...) | T | main.rs:1213:5:1214:14 | S1 | -| main.rs:1229:20:1229:21 | S1 | | main.rs:1213:5:1214:14 | S1 | -| main.rs:1233:40:1238:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1233:40:1238:5 | { ... } | E | main.rs:1216:5:1217:14 | S2 | -| main.rs:1233:40:1238:5 | { ... } | T | main.rs:1213:5:1214:14 | S1 | -| main.rs:1234:13:1234:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1234:13:1234:13 | x | T | {EXTERNAL LOCATION} | Result | -| main.rs:1234:13:1234:13 | x | T.T | main.rs:1213:5:1214:14 | S1 | -| main.rs:1234:17:1234:42 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1234:17:1234:42 | ...::Ok(...) | T | {EXTERNAL LOCATION} | Result | -| main.rs:1234:17:1234:42 | ...::Ok(...) | T.T | main.rs:1213:5:1214:14 | S1 | -| main.rs:1234:28:1234:41 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1234:28:1234:41 | ...::Ok(...) | T | main.rs:1213:5:1214:14 | S1 | -| main.rs:1234:39:1234:40 | S1 | | main.rs:1213:5:1214:14 | S1 | -| main.rs:1236:17:1236:17 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1236:17:1236:17 | x | T | {EXTERNAL LOCATION} | Result | -| main.rs:1236:17:1236:17 | x | T.T | main.rs:1213:5:1214:14 | S1 | -| main.rs:1236:17:1236:18 | TryExpr | | {EXTERNAL LOCATION} | Result | -| main.rs:1236:17:1236:18 | TryExpr | T | main.rs:1213:5:1214:14 | S1 | -| main.rs:1236:17:1236:29 | ... .map(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1237:9:1237:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1237:9:1237:22 | ...::Ok(...) | E | main.rs:1216:5:1217:14 | S2 | -| main.rs:1237:9:1237:22 | ...::Ok(...) | T | main.rs:1213:5:1214:14 | S1 | -| main.rs:1237:20:1237:21 | S1 | | main.rs:1213:5:1214:14 | S1 | -| main.rs:1241:30:1241:34 | input | | {EXTERNAL LOCATION} | Result | -| main.rs:1241:30:1241:34 | input | E | main.rs:1213:5:1214:14 | S1 | -| main.rs:1241:30:1241:34 | input | T | main.rs:1241:20:1241:27 | T | -| main.rs:1241:69:1248:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1241:69:1248:5 | { ... } | E | main.rs:1213:5:1214:14 | S1 | -| main.rs:1241:69:1248:5 | { ... } | T | main.rs:1241:20:1241:27 | T | -| main.rs:1242:13:1242:17 | value | | main.rs:1241:20:1241:27 | T | -| main.rs:1242:21:1242:25 | input | | {EXTERNAL LOCATION} | Result | -| main.rs:1242:21:1242:25 | input | E | main.rs:1213:5:1214:14 | S1 | -| main.rs:1242:21:1242:25 | input | T | main.rs:1241:20:1241:27 | T | -| main.rs:1242:21:1242:26 | TryExpr | | main.rs:1241:20:1241:27 | T | -| main.rs:1243:22:1243:38 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1243:22:1243:38 | ...::Ok(...) | T | main.rs:1241:20:1241:27 | T | -| main.rs:1243:22:1246:10 | ... .and_then(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1243:33:1243:37 | value | | main.rs:1241:20:1241:27 | T | -| main.rs:1243:53:1246:9 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1243:53:1246:9 | { ... } | E | main.rs:1213:5:1214:14 | S1 | -| main.rs:1244:22:1244:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1245:13:1245:34 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1245:13:1245:34 | ...::Ok::<...>(...) | E | main.rs:1213:5:1214:14 | S1 | -| main.rs:1247:9:1247:23 | ...::Err(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1247:9:1247:23 | ...::Err(...) | E | main.rs:1213:5:1214:14 | S1 | -| main.rs:1247:9:1247:23 | ...::Err(...) | T | main.rs:1241:20:1241:27 | T | -| main.rs:1247:21:1247:22 | S1 | | main.rs:1213:5:1214:14 | S1 | -| main.rs:1251:37:1251:52 | try_same_error(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1251:37:1251:52 | try_same_error(...) | E | main.rs:1213:5:1214:14 | S1 | -| main.rs:1251:37:1251:52 | try_same_error(...) | T | main.rs:1213:5:1214:14 | S1 | -| main.rs:1252:22:1252:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1255:37:1255:55 | try_convert_error(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1255:37:1255:55 | try_convert_error(...) | E | main.rs:1216:5:1217:14 | S2 | -| main.rs:1255:37:1255:55 | try_convert_error(...) | T | main.rs:1213:5:1214:14 | S1 | -| main.rs:1256:22:1256:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1259:37:1259:49 | try_chained(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1259:37:1259:49 | try_chained(...) | E | main.rs:1216:5:1217:14 | S2 | -| main.rs:1259:37:1259:49 | try_chained(...) | T | main.rs:1213:5:1214:14 | S1 | -| main.rs:1260:22:1260:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1263:37:1263:63 | try_complex(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1263:37:1263:63 | try_complex(...) | E | main.rs:1213:5:1214:14 | S1 | -| main.rs:1263:37:1263:63 | try_complex(...) | T | main.rs:1213:5:1214:14 | S1 | -| main.rs:1263:49:1263:62 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1263:49:1263:62 | ...::Ok(...) | E | main.rs:1213:5:1214:14 | S1 | -| main.rs:1263:49:1263:62 | ...::Ok(...) | T | main.rs:1213:5:1214:14 | S1 | -| main.rs:1263:60:1263:61 | S1 | | main.rs:1213:5:1214:14 | S1 | -| main.rs:1264:22:1264:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1271:13:1271:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1271:22:1271:22 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1272:13:1272:13 | y | | {EXTERNAL LOCATION} | i32 | -| main.rs:1272:17:1272:17 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1273:13:1273:13 | z | | {EXTERNAL LOCATION} | i32 | -| main.rs:1273:17:1273:17 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1273:17:1273:21 | ... + ... | | {EXTERNAL LOCATION} | i32 | -| main.rs:1273:21:1273:21 | y | | {EXTERNAL LOCATION} | i32 | -| main.rs:1274:13:1274:13 | z | | {EXTERNAL LOCATION} | i32 | -| main.rs:1274:17:1274:17 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1274:17:1274:23 | x.abs() | | {EXTERNAL LOCATION} | i32 | -| main.rs:1275:13:1275:13 | c | | {EXTERNAL LOCATION} | char | -| main.rs:1275:17:1275:19 | 'c' | | {EXTERNAL LOCATION} | char | -| main.rs:1276:13:1276:17 | hello | | {EXTERNAL LOCATION} | str | -| main.rs:1276:21:1276:27 | "Hello" | | {EXTERNAL LOCATION} | str | -| main.rs:1277:13:1277:13 | f | | {EXTERNAL LOCATION} | f64 | -| main.rs:1277:17:1277:24 | 123.0f64 | | {EXTERNAL LOCATION} | f64 | -| main.rs:1278:13:1278:13 | t | | {EXTERNAL LOCATION} | bool | -| main.rs:1278:17:1278:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1279:13:1279:13 | f | | {EXTERNAL LOCATION} | bool | -| main.rs:1279:17:1279:21 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1286:13:1286:13 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:1286:17:1286:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1286:17:1286:29 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1286:25:1286:29 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1287:13:1287:13 | y | | {EXTERNAL LOCATION} | bool | -| main.rs:1287:17:1287:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1287:17:1287:29 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1287:25:1287:29 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1289:13:1289:17 | mut a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1290:13:1290:16 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:1290:20:1290:21 | 34 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1290:20:1290:27 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1290:26:1290:27 | 33 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1291:12:1291:15 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:1292:17:1292:17 | z | | file://:0:0:0:0 | () | -| main.rs:1292:21:1292:27 | (...) | | file://:0:0:0:0 | () | -| main.rs:1292:22:1292:22 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1292:22:1292:26 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1292:26:1292:26 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1294:13:1294:13 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1294:13:1294:17 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1294:17:1294:17 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1296:9:1296:9 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1313:16:1313:19 | SelfParam | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1313:22:1313:24 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1313:41:1318:9 | { ... } | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1314:13:1317:13 | Vec2 {...} | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1315:20:1315:23 | self | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1315:20:1315:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1315:20:1315:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1315:29:1315:31 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1315:29:1315:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1316:20:1316:23 | self | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1316:20:1316:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1316:20:1316:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1316:29:1316:31 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1316:29:1316:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1323:23:1323:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1323:23:1323:31 | SelfParam | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1323:34:1323:36 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1324:13:1324:16 | self | | file://:0:0:0:0 | & | -| main.rs:1324:13:1324:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1324:13:1324:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1324:13:1324:27 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1324:23:1324:25 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1324:23:1324:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1325:13:1325:16 | self | | file://:0:0:0:0 | & | -| main.rs:1325:13:1325:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1325:13:1325:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1325:13:1325:27 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1325:23:1325:25 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1325:23:1325:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1331:16:1331:19 | SelfParam | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1331:22:1331:24 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1331:41:1336:9 | { ... } | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1332:13:1335:13 | Vec2 {...} | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1333:20:1333:23 | self | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1333:20:1333:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1333:20:1333:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1333:29:1333:31 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1333:29:1333:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1334:20:1334:23 | self | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1334:20:1334:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1334:20:1334:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1334:29:1334:31 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1334:29:1334:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1341:23:1341:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1341:23:1341:31 | SelfParam | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1341:34:1341:36 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1342:13:1342:16 | self | | file://:0:0:0:0 | & | -| main.rs:1342:13:1342:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1342:13:1342:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1342:13:1342:27 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1342:23:1342:25 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1342:23:1342:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1098:26:1098:27 | x1 | | main.rs:1076:5:1077:19 | S | +| main.rs:1098:26:1098:27 | x1 | T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1098:26:1098:32 | x1.m1() | | main.rs:1079:5:1080:14 | S2 | +| main.rs:1100:13:1100:14 | x2 | | main.rs:1076:5:1077:19 | S | +| main.rs:1100:13:1100:14 | x2 | T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1100:18:1100:22 | S(...) | | main.rs:1076:5:1077:19 | S | +| main.rs:1100:18:1100:22 | S(...) | T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1100:20:1100:21 | S2 | | main.rs:1079:5:1080:14 | S2 | +| main.rs:1102:18:1102:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1102:26:1102:27 | x2 | | main.rs:1076:5:1077:19 | S | +| main.rs:1102:26:1102:27 | x2 | T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1102:26:1102:32 | x2.m2() | | file://:0:0:0:0 | & | +| main.rs:1102:26:1102:32 | x2.m2() | &T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1103:18:1103:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1103:26:1103:27 | x2 | | main.rs:1076:5:1077:19 | S | +| main.rs:1103:26:1103:27 | x2 | T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1103:26:1103:32 | x2.m3() | | file://:0:0:0:0 | & | +| main.rs:1103:26:1103:32 | x2.m3() | &T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1105:13:1105:14 | x3 | | main.rs:1076:5:1077:19 | S | +| main.rs:1105:13:1105:14 | x3 | T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1105:18:1105:22 | S(...) | | main.rs:1076:5:1077:19 | S | +| main.rs:1105:18:1105:22 | S(...) | T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1105:20:1105:21 | S2 | | main.rs:1079:5:1080:14 | S2 | +| main.rs:1107:18:1107:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1107:26:1107:41 | ...::m2(...) | | file://:0:0:0:0 | & | +| main.rs:1107:26:1107:41 | ...::m2(...) | &T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1107:38:1107:40 | &x3 | | file://:0:0:0:0 | & | +| main.rs:1107:38:1107:40 | &x3 | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1107:38:1107:40 | &x3 | &T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1107:39:1107:40 | x3 | | main.rs:1076:5:1077:19 | S | +| main.rs:1107:39:1107:40 | x3 | T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1108:18:1108:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1108:26:1108:41 | ...::m3(...) | | file://:0:0:0:0 | & | +| main.rs:1108:26:1108:41 | ...::m3(...) | &T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1108:38:1108:40 | &x3 | | file://:0:0:0:0 | & | +| main.rs:1108:38:1108:40 | &x3 | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1108:38:1108:40 | &x3 | &T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1108:39:1108:40 | x3 | | main.rs:1076:5:1077:19 | S | +| main.rs:1108:39:1108:40 | x3 | T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1110:13:1110:14 | x4 | | file://:0:0:0:0 | & | +| main.rs:1110:13:1110:14 | x4 | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1110:13:1110:14 | x4 | &T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1110:18:1110:23 | &... | | file://:0:0:0:0 | & | +| main.rs:1110:18:1110:23 | &... | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1110:18:1110:23 | &... | &T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1110:19:1110:23 | S(...) | | main.rs:1076:5:1077:19 | S | +| main.rs:1110:19:1110:23 | S(...) | T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1110:21:1110:22 | S2 | | main.rs:1079:5:1080:14 | S2 | +| main.rs:1112:18:1112:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1112:26:1112:27 | x4 | | file://:0:0:0:0 | & | +| main.rs:1112:26:1112:27 | x4 | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1112:26:1112:27 | x4 | &T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1112:26:1112:32 | x4.m2() | | file://:0:0:0:0 | & | +| main.rs:1112:26:1112:32 | x4.m2() | &T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1113:18:1113:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1113:26:1113:27 | x4 | | file://:0:0:0:0 | & | +| main.rs:1113:26:1113:27 | x4 | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1113:26:1113:27 | x4 | &T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1113:26:1113:32 | x4.m3() | | file://:0:0:0:0 | & | +| main.rs:1113:26:1113:32 | x4.m3() | &T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1115:13:1115:14 | x5 | | file://:0:0:0:0 | & | +| main.rs:1115:13:1115:14 | x5 | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1115:13:1115:14 | x5 | &T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1115:18:1115:23 | &... | | file://:0:0:0:0 | & | +| main.rs:1115:18:1115:23 | &... | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1115:18:1115:23 | &... | &T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1115:19:1115:23 | S(...) | | main.rs:1076:5:1077:19 | S | +| main.rs:1115:19:1115:23 | S(...) | T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1115:21:1115:22 | S2 | | main.rs:1079:5:1080:14 | S2 | +| main.rs:1117:18:1117:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1117:26:1117:27 | x5 | | file://:0:0:0:0 | & | +| main.rs:1117:26:1117:27 | x5 | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1117:26:1117:27 | x5 | &T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1117:26:1117:32 | x5.m1() | | main.rs:1079:5:1080:14 | S2 | +| main.rs:1118:18:1118:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1118:26:1118:27 | x5 | | file://:0:0:0:0 | & | +| main.rs:1118:26:1118:27 | x5 | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1118:26:1118:27 | x5 | &T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1118:26:1118:29 | x5.0 | | main.rs:1079:5:1080:14 | S2 | +| main.rs:1120:13:1120:14 | x6 | | file://:0:0:0:0 | & | +| main.rs:1120:13:1120:14 | x6 | &T | file://:0:0:0:0 | & | +| main.rs:1120:13:1120:14 | x6 | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1120:13:1120:14 | x6 | &T.&T | main.rs:1076:5:1077:19 | S | +| main.rs:1120:13:1120:14 | x6 | &T.&T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1120:13:1120:14 | x6 | &T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1120:18:1120:23 | &... | | file://:0:0:0:0 | & | +| main.rs:1120:18:1120:23 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1120:18:1120:23 | &... | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1120:18:1120:23 | &... | &T.&T | main.rs:1076:5:1077:19 | S | +| main.rs:1120:18:1120:23 | &... | &T.&T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1120:18:1120:23 | &... | &T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1120:19:1120:23 | S(...) | | file://:0:0:0:0 | & | +| main.rs:1120:19:1120:23 | S(...) | | main.rs:1076:5:1077:19 | S | +| main.rs:1120:19:1120:23 | S(...) | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1120:19:1120:23 | S(...) | &T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1120:19:1120:23 | S(...) | T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1120:21:1120:22 | S2 | | main.rs:1079:5:1080:14 | S2 | +| main.rs:1123:18:1123:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1123:26:1123:30 | (...) | | file://:0:0:0:0 | & | +| main.rs:1123:26:1123:30 | (...) | | main.rs:1076:5:1077:19 | S | +| main.rs:1123:26:1123:30 | (...) | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1123:26:1123:30 | (...) | &T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1123:26:1123:30 | (...) | T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1123:26:1123:35 | ... .m1() | | main.rs:1079:5:1080:14 | S2 | +| main.rs:1123:27:1123:29 | * ... | | file://:0:0:0:0 | & | +| main.rs:1123:27:1123:29 | * ... | | main.rs:1076:5:1077:19 | S | +| main.rs:1123:27:1123:29 | * ... | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1123:27:1123:29 | * ... | &T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1123:27:1123:29 | * ... | T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1123:28:1123:29 | x6 | | file://:0:0:0:0 | & | +| main.rs:1123:28:1123:29 | x6 | &T | file://:0:0:0:0 | & | +| main.rs:1123:28:1123:29 | x6 | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1123:28:1123:29 | x6 | &T.&T | main.rs:1076:5:1077:19 | S | +| main.rs:1123:28:1123:29 | x6 | &T.&T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1123:28:1123:29 | x6 | &T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1125:13:1125:14 | x7 | | main.rs:1076:5:1077:19 | S | +| main.rs:1125:13:1125:14 | x7 | T | file://:0:0:0:0 | & | +| main.rs:1125:13:1125:14 | x7 | T.&T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1125:18:1125:23 | S(...) | | main.rs:1076:5:1077:19 | S | +| main.rs:1125:18:1125:23 | S(...) | T | file://:0:0:0:0 | & | +| main.rs:1125:18:1125:23 | S(...) | T.&T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1125:20:1125:22 | &S2 | | file://:0:0:0:0 | & | +| main.rs:1125:20:1125:22 | &S2 | &T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1125:21:1125:22 | S2 | | main.rs:1079:5:1080:14 | S2 | +| main.rs:1128:13:1128:13 | t | | file://:0:0:0:0 | & | +| main.rs:1128:13:1128:13 | t | &T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1128:17:1128:18 | x7 | | main.rs:1076:5:1077:19 | S | +| main.rs:1128:17:1128:18 | x7 | T | file://:0:0:0:0 | & | +| main.rs:1128:17:1128:18 | x7 | T.&T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1128:17:1128:23 | x7.m1() | | file://:0:0:0:0 | & | +| main.rs:1128:17:1128:23 | x7.m1() | &T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1129:18:1129:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1129:26:1129:27 | x7 | | main.rs:1076:5:1077:19 | S | +| main.rs:1129:26:1129:27 | x7 | T | file://:0:0:0:0 | & | +| main.rs:1129:26:1129:27 | x7 | T.&T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1131:13:1131:14 | x9 | | {EXTERNAL LOCATION} | String | +| main.rs:1131:27:1131:33 | "Hello" | | {EXTERNAL LOCATION} | str | +| main.rs:1131:27:1131:45 | "Hello".to_string() | | {EXTERNAL LOCATION} | String | +| main.rs:1134:13:1134:13 | u | | {EXTERNAL LOCATION} | Result | +| main.rs:1134:13:1134:13 | u | T | {EXTERNAL LOCATION} | u32 | +| main.rs:1134:17:1134:18 | x9 | | {EXTERNAL LOCATION} | String | +| main.rs:1134:17:1134:33 | x9.parse() | | {EXTERNAL LOCATION} | Result | +| main.rs:1134:17:1134:33 | x9.parse() | T | {EXTERNAL LOCATION} | u32 | +| main.rs:1141:16:1141:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1141:16:1141:20 | SelfParam | &T | main.rs:1139:5:1147:5 | Self [trait MyTrait] | +| main.rs:1144:16:1144:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1144:16:1144:20 | SelfParam | &T | main.rs:1139:5:1147:5 | Self [trait MyTrait] | +| main.rs:1144:32:1146:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1144:32:1146:9 | { ... } | &T | main.rs:1139:5:1147:5 | Self [trait MyTrait] | +| main.rs:1145:13:1145:16 | self | | file://:0:0:0:0 | & | +| main.rs:1145:13:1145:16 | self | &T | main.rs:1139:5:1147:5 | Self [trait MyTrait] | +| main.rs:1145:13:1145:22 | self.foo() | | file://:0:0:0:0 | & | +| main.rs:1145:13:1145:22 | self.foo() | &T | main.rs:1139:5:1147:5 | Self [trait MyTrait] | +| main.rs:1153:16:1153:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1153:16:1153:20 | SelfParam | &T | main.rs:1149:5:1149:20 | MyStruct | +| main.rs:1153:36:1155:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1153:36:1155:9 | { ... } | &T | main.rs:1149:5:1149:20 | MyStruct | +| main.rs:1154:13:1154:16 | self | | file://:0:0:0:0 | & | +| main.rs:1154:13:1154:16 | self | &T | main.rs:1149:5:1149:20 | MyStruct | +| main.rs:1159:13:1159:13 | x | | main.rs:1149:5:1149:20 | MyStruct | +| main.rs:1159:17:1159:24 | MyStruct | | main.rs:1149:5:1149:20 | MyStruct | +| main.rs:1160:9:1160:9 | x | | main.rs:1149:5:1149:20 | MyStruct | +| main.rs:1160:9:1160:15 | x.bar() | | file://:0:0:0:0 | & | +| main.rs:1160:9:1160:15 | x.bar() | &T | main.rs:1149:5:1149:20 | MyStruct | +| main.rs:1170:16:1170:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1170:16:1170:20 | SelfParam | &T | main.rs:1167:5:1167:26 | MyStruct | +| main.rs:1170:16:1170:20 | SelfParam | &T.T | main.rs:1169:10:1169:10 | T | +| main.rs:1170:32:1172:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1170:32:1172:9 | { ... } | &T | main.rs:1167:5:1167:26 | MyStruct | +| main.rs:1170:32:1172:9 | { ... } | &T.T | main.rs:1169:10:1169:10 | T | +| main.rs:1171:13:1171:16 | self | | file://:0:0:0:0 | & | +| main.rs:1171:13:1171:16 | self | &T | main.rs:1167:5:1167:26 | MyStruct | +| main.rs:1171:13:1171:16 | self | &T.T | main.rs:1169:10:1169:10 | T | +| main.rs:1176:13:1176:13 | x | | main.rs:1167:5:1167:26 | MyStruct | +| main.rs:1176:13:1176:13 | x | T | main.rs:1165:5:1165:13 | S | +| main.rs:1176:17:1176:27 | MyStruct(...) | | main.rs:1167:5:1167:26 | MyStruct | +| main.rs:1176:17:1176:27 | MyStruct(...) | T | main.rs:1165:5:1165:13 | S | +| main.rs:1176:26:1176:26 | S | | main.rs:1165:5:1165:13 | S | +| main.rs:1177:9:1177:9 | x | | main.rs:1167:5:1167:26 | MyStruct | +| main.rs:1177:9:1177:9 | x | T | main.rs:1165:5:1165:13 | S | +| main.rs:1177:9:1177:15 | x.foo() | | file://:0:0:0:0 | & | +| main.rs:1177:9:1177:15 | x.foo() | &T | main.rs:1167:5:1167:26 | MyStruct | +| main.rs:1177:9:1177:15 | x.foo() | &T.T | main.rs:1165:5:1165:13 | S | +| main.rs:1188:17:1188:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1188:17:1188:25 | SelfParam | &T | main.rs:1182:5:1185:5 | MyFlag | +| main.rs:1189:13:1189:16 | self | | file://:0:0:0:0 | & | +| main.rs:1189:13:1189:16 | self | &T | main.rs:1182:5:1185:5 | MyFlag | +| main.rs:1189:13:1189:21 | self.bool | | {EXTERNAL LOCATION} | bool | +| main.rs:1189:13:1189:34 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1189:25:1189:34 | ! ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1189:26:1189:29 | self | | file://:0:0:0:0 | & | +| main.rs:1189:26:1189:29 | self | &T | main.rs:1182:5:1185:5 | MyFlag | +| main.rs:1189:26:1189:34 | self.bool | | {EXTERNAL LOCATION} | bool | +| main.rs:1196:15:1196:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1196:15:1196:19 | SelfParam | &T | main.rs:1193:5:1193:13 | S | +| main.rs:1196:31:1198:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1196:31:1198:9 | { ... } | &T | file://:0:0:0:0 | & | +| main.rs:1196:31:1198:9 | { ... } | &T | main.rs:1193:5:1193:13 | S | +| main.rs:1196:31:1198:9 | { ... } | &T.&T | file://:0:0:0:0 | & | +| main.rs:1196:31:1198:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1196:31:1198:9 | { ... } | &T.&T.&T.&T | main.rs:1193:5:1193:13 | S | +| main.rs:1197:13:1197:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1197:13:1197:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1197:13:1197:19 | &... | &T | main.rs:1193:5:1193:13 | S | +| main.rs:1197:13:1197:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1197:13:1197:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1197:13:1197:19 | &... | &T.&T.&T.&T | main.rs:1193:5:1193:13 | S | +| main.rs:1197:14:1197:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1197:14:1197:19 | &... | | main.rs:1193:5:1193:13 | S | +| main.rs:1197:14:1197:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1197:14:1197:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1197:14:1197:19 | &... | &T.&T.&T | main.rs:1193:5:1193:13 | S | +| main.rs:1197:15:1197:19 | &self | | file://:0:0:0:0 | & | +| main.rs:1197:15:1197:19 | &self | &T | file://:0:0:0:0 | & | +| main.rs:1197:15:1197:19 | &self | &T.&T | main.rs:1193:5:1193:13 | S | +| main.rs:1197:16:1197:19 | self | | file://:0:0:0:0 | & | +| main.rs:1197:16:1197:19 | self | &T | main.rs:1193:5:1193:13 | S | +| main.rs:1200:15:1200:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1200:15:1200:25 | SelfParam | &T | main.rs:1193:5:1193:13 | S | +| main.rs:1200:37:1202:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1200:37:1202:9 | { ... } | &T | file://:0:0:0:0 | & | +| main.rs:1200:37:1202:9 | { ... } | &T | main.rs:1193:5:1193:13 | S | +| main.rs:1200:37:1202:9 | { ... } | &T.&T | file://:0:0:0:0 | & | +| main.rs:1200:37:1202:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1200:37:1202:9 | { ... } | &T.&T.&T.&T | main.rs:1193:5:1193:13 | S | +| main.rs:1201:13:1201:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1201:13:1201:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1201:13:1201:19 | &... | &T | main.rs:1193:5:1193:13 | S | +| main.rs:1201:13:1201:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1201:13:1201:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1201:13:1201:19 | &... | &T.&T.&T.&T | main.rs:1193:5:1193:13 | S | +| main.rs:1201:14:1201:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1201:14:1201:19 | &... | | main.rs:1193:5:1193:13 | S | +| main.rs:1201:14:1201:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1201:14:1201:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1201:14:1201:19 | &... | &T.&T.&T | main.rs:1193:5:1193:13 | S | +| main.rs:1201:15:1201:19 | &self | | file://:0:0:0:0 | & | +| main.rs:1201:15:1201:19 | &self | &T | file://:0:0:0:0 | & | +| main.rs:1201:15:1201:19 | &self | &T.&T | main.rs:1193:5:1193:13 | S | +| main.rs:1201:16:1201:19 | self | | file://:0:0:0:0 | & | +| main.rs:1201:16:1201:19 | self | &T | main.rs:1193:5:1193:13 | S | +| main.rs:1204:15:1204:15 | x | | file://:0:0:0:0 | & | +| main.rs:1204:15:1204:15 | x | &T | main.rs:1193:5:1193:13 | S | +| main.rs:1204:34:1206:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1204:34:1206:9 | { ... } | &T | main.rs:1193:5:1193:13 | S | +| main.rs:1205:13:1205:13 | x | | file://:0:0:0:0 | & | +| main.rs:1205:13:1205:13 | x | &T | main.rs:1193:5:1193:13 | S | +| main.rs:1208:15:1208:15 | x | | file://:0:0:0:0 | & | +| main.rs:1208:15:1208:15 | x | &T | main.rs:1193:5:1193:13 | S | +| main.rs:1208:34:1210:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1208:34:1210:9 | { ... } | &T | file://:0:0:0:0 | & | +| main.rs:1208:34:1210:9 | { ... } | &T | main.rs:1193:5:1193:13 | S | +| main.rs:1208:34:1210:9 | { ... } | &T.&T | file://:0:0:0:0 | & | +| main.rs:1208:34:1210:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1208:34:1210:9 | { ... } | &T.&T.&T.&T | main.rs:1193:5:1193:13 | S | +| main.rs:1209:13:1209:16 | &... | | file://:0:0:0:0 | & | +| main.rs:1209:13:1209:16 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1209:13:1209:16 | &... | &T | main.rs:1193:5:1193:13 | S | +| main.rs:1209:13:1209:16 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1209:13:1209:16 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1209:13:1209:16 | &... | &T.&T.&T.&T | main.rs:1193:5:1193:13 | S | +| main.rs:1209:14:1209:16 | &... | | file://:0:0:0:0 | & | +| main.rs:1209:14:1209:16 | &... | | main.rs:1193:5:1193:13 | S | +| main.rs:1209:14:1209:16 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1209:14:1209:16 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1209:14:1209:16 | &... | &T.&T.&T | main.rs:1193:5:1193:13 | S | +| main.rs:1209:15:1209:16 | &x | | file://:0:0:0:0 | & | +| main.rs:1209:15:1209:16 | &x | &T | file://:0:0:0:0 | & | +| main.rs:1209:15:1209:16 | &x | &T.&T | main.rs:1193:5:1193:13 | S | +| main.rs:1209:16:1209:16 | x | | file://:0:0:0:0 | & | +| main.rs:1209:16:1209:16 | x | &T | main.rs:1193:5:1193:13 | S | +| main.rs:1214:13:1214:13 | x | | main.rs:1193:5:1193:13 | S | +| main.rs:1214:17:1214:20 | S {...} | | main.rs:1193:5:1193:13 | S | +| main.rs:1215:9:1215:9 | x | | main.rs:1193:5:1193:13 | S | +| main.rs:1215:9:1215:14 | x.f1() | | file://:0:0:0:0 | & | +| main.rs:1215:9:1215:14 | x.f1() | &T | main.rs:1193:5:1193:13 | S | +| main.rs:1216:9:1216:9 | x | | main.rs:1193:5:1193:13 | S | +| main.rs:1216:9:1216:14 | x.f2() | | file://:0:0:0:0 | & | +| main.rs:1216:9:1216:14 | x.f2() | &T | main.rs:1193:5:1193:13 | S | +| main.rs:1217:9:1217:17 | ...::f3(...) | | file://:0:0:0:0 | & | +| main.rs:1217:9:1217:17 | ...::f3(...) | &T | main.rs:1193:5:1193:13 | S | +| main.rs:1217:15:1217:16 | &x | | file://:0:0:0:0 | & | +| main.rs:1217:15:1217:16 | &x | &T | main.rs:1193:5:1193:13 | S | +| main.rs:1217:16:1217:16 | x | | main.rs:1193:5:1193:13 | S | +| main.rs:1219:13:1219:13 | n | | {EXTERNAL LOCATION} | bool | +| main.rs:1219:13:1219:13 | n | | file://:0:0:0:0 | & | +| main.rs:1219:17:1219:24 | * ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1219:17:1219:24 | * ... | | file://:0:0:0:0 | & | +| main.rs:1219:18:1219:24 | * ... | | file://:0:0:0:0 | & | +| main.rs:1219:18:1219:24 | * ... | &T | {EXTERNAL LOCATION} | bool | +| main.rs:1219:18:1219:24 | * ... | &T | file://:0:0:0:0 | & | +| main.rs:1219:19:1219:24 | &... | | file://:0:0:0:0 | & | +| main.rs:1219:19:1219:24 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1219:19:1219:24 | &... | &T.&T | {EXTERNAL LOCATION} | bool | +| main.rs:1219:19:1219:24 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1219:20:1219:24 | &true | | file://:0:0:0:0 | & | +| main.rs:1219:20:1219:24 | &true | &T | {EXTERNAL LOCATION} | bool | +| main.rs:1219:20:1219:24 | &true | &T | file://:0:0:0:0 | & | +| main.rs:1219:21:1219:24 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1219:21:1219:24 | true | | file://:0:0:0:0 | & | +| main.rs:1223:13:1223:20 | mut flag | | main.rs:1182:5:1185:5 | MyFlag | +| main.rs:1223:24:1223:41 | ...::default(...) | | main.rs:1182:5:1185:5 | MyFlag | +| main.rs:1224:22:1224:30 | &mut flag | | file://:0:0:0:0 | & | +| main.rs:1224:22:1224:30 | &mut flag | &T | main.rs:1182:5:1185:5 | MyFlag | +| main.rs:1224:27:1224:30 | flag | | main.rs:1182:5:1185:5 | MyFlag | +| main.rs:1225:18:1225:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1225:26:1225:29 | flag | | main.rs:1182:5:1185:5 | MyFlag | +| main.rs:1239:43:1242:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1239:43:1242:5 | { ... } | E | main.rs:1232:5:1233:14 | S1 | +| main.rs:1239:43:1242:5 | { ... } | T | main.rs:1232:5:1233:14 | S1 | +| main.rs:1240:13:1240:13 | x | | main.rs:1232:5:1233:14 | S1 | +| main.rs:1240:17:1240:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1240:17:1240:30 | ...::Ok(...) | T | main.rs:1232:5:1233:14 | S1 | +| main.rs:1240:17:1240:31 | TryExpr | | main.rs:1232:5:1233:14 | S1 | +| main.rs:1240:28:1240:29 | S1 | | main.rs:1232:5:1233:14 | S1 | +| main.rs:1241:9:1241:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1241:9:1241:22 | ...::Ok(...) | E | main.rs:1232:5:1233:14 | S1 | +| main.rs:1241:9:1241:22 | ...::Ok(...) | T | main.rs:1232:5:1233:14 | S1 | +| main.rs:1241:20:1241:21 | S1 | | main.rs:1232:5:1233:14 | S1 | +| main.rs:1245:46:1249:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1245:46:1249:5 | { ... } | E | main.rs:1235:5:1236:14 | S2 | +| main.rs:1245:46:1249:5 | { ... } | T | main.rs:1232:5:1233:14 | S1 | +| main.rs:1246:13:1246:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1246:13:1246:13 | x | T | main.rs:1232:5:1233:14 | S1 | +| main.rs:1246:17:1246:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1246:17:1246:30 | ...::Ok(...) | T | main.rs:1232:5:1233:14 | S1 | +| main.rs:1246:28:1246:29 | S1 | | main.rs:1232:5:1233:14 | S1 | +| main.rs:1247:13:1247:13 | y | | main.rs:1232:5:1233:14 | S1 | +| main.rs:1247:17:1247:17 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1247:17:1247:17 | x | T | main.rs:1232:5:1233:14 | S1 | +| main.rs:1247:17:1247:18 | TryExpr | | main.rs:1232:5:1233:14 | S1 | +| main.rs:1248:9:1248:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1248:9:1248:22 | ...::Ok(...) | E | main.rs:1235:5:1236:14 | S2 | +| main.rs:1248:9:1248:22 | ...::Ok(...) | T | main.rs:1232:5:1233:14 | S1 | +| main.rs:1248:20:1248:21 | S1 | | main.rs:1232:5:1233:14 | S1 | +| main.rs:1252:40:1257:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1252:40:1257:5 | { ... } | E | main.rs:1235:5:1236:14 | S2 | +| main.rs:1252:40:1257:5 | { ... } | T | main.rs:1232:5:1233:14 | S1 | +| main.rs:1253:13:1253:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1253:13:1253:13 | x | T | {EXTERNAL LOCATION} | Result | +| main.rs:1253:13:1253:13 | x | T.T | main.rs:1232:5:1233:14 | S1 | +| main.rs:1253:17:1253:42 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1253:17:1253:42 | ...::Ok(...) | T | {EXTERNAL LOCATION} | Result | +| main.rs:1253:17:1253:42 | ...::Ok(...) | T.T | main.rs:1232:5:1233:14 | S1 | +| main.rs:1253:28:1253:41 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1253:28:1253:41 | ...::Ok(...) | T | main.rs:1232:5:1233:14 | S1 | +| main.rs:1253:39:1253:40 | S1 | | main.rs:1232:5:1233:14 | S1 | +| main.rs:1255:17:1255:17 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1255:17:1255:17 | x | T | {EXTERNAL LOCATION} | Result | +| main.rs:1255:17:1255:17 | x | T.T | main.rs:1232:5:1233:14 | S1 | +| main.rs:1255:17:1255:18 | TryExpr | | {EXTERNAL LOCATION} | Result | +| main.rs:1255:17:1255:18 | TryExpr | T | main.rs:1232:5:1233:14 | S1 | +| main.rs:1255:17:1255:29 | ... .map(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1256:9:1256:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1256:9:1256:22 | ...::Ok(...) | E | main.rs:1235:5:1236:14 | S2 | +| main.rs:1256:9:1256:22 | ...::Ok(...) | T | main.rs:1232:5:1233:14 | S1 | +| main.rs:1256:20:1256:21 | S1 | | main.rs:1232:5:1233:14 | S1 | +| main.rs:1260:30:1260:34 | input | | {EXTERNAL LOCATION} | Result | +| main.rs:1260:30:1260:34 | input | E | main.rs:1232:5:1233:14 | S1 | +| main.rs:1260:30:1260:34 | input | T | main.rs:1260:20:1260:27 | T | +| main.rs:1260:69:1267:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1260:69:1267:5 | { ... } | E | main.rs:1232:5:1233:14 | S1 | +| main.rs:1260:69:1267:5 | { ... } | T | main.rs:1260:20:1260:27 | T | +| main.rs:1261:13:1261:17 | value | | main.rs:1260:20:1260:27 | T | +| main.rs:1261:21:1261:25 | input | | {EXTERNAL LOCATION} | Result | +| main.rs:1261:21:1261:25 | input | E | main.rs:1232:5:1233:14 | S1 | +| main.rs:1261:21:1261:25 | input | T | main.rs:1260:20:1260:27 | T | +| main.rs:1261:21:1261:26 | TryExpr | | main.rs:1260:20:1260:27 | T | +| main.rs:1262:22:1262:38 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1262:22:1262:38 | ...::Ok(...) | T | main.rs:1260:20:1260:27 | T | +| main.rs:1262:22:1265:10 | ... .and_then(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1262:33:1262:37 | value | | main.rs:1260:20:1260:27 | T | +| main.rs:1262:53:1265:9 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1262:53:1265:9 | { ... } | E | main.rs:1232:5:1233:14 | S1 | +| main.rs:1263:22:1263:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1264:13:1264:34 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1264:13:1264:34 | ...::Ok::<...>(...) | E | main.rs:1232:5:1233:14 | S1 | +| main.rs:1266:9:1266:23 | ...::Err(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1266:9:1266:23 | ...::Err(...) | E | main.rs:1232:5:1233:14 | S1 | +| main.rs:1266:9:1266:23 | ...::Err(...) | T | main.rs:1260:20:1260:27 | T | +| main.rs:1266:21:1266:22 | S1 | | main.rs:1232:5:1233:14 | S1 | +| main.rs:1270:37:1270:52 | try_same_error(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1270:37:1270:52 | try_same_error(...) | E | main.rs:1232:5:1233:14 | S1 | +| main.rs:1270:37:1270:52 | try_same_error(...) | T | main.rs:1232:5:1233:14 | S1 | +| main.rs:1271:22:1271:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1274:37:1274:55 | try_convert_error(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1274:37:1274:55 | try_convert_error(...) | E | main.rs:1235:5:1236:14 | S2 | +| main.rs:1274:37:1274:55 | try_convert_error(...) | T | main.rs:1232:5:1233:14 | S1 | +| main.rs:1275:22:1275:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1278:37:1278:49 | try_chained(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1278:37:1278:49 | try_chained(...) | E | main.rs:1235:5:1236:14 | S2 | +| main.rs:1278:37:1278:49 | try_chained(...) | T | main.rs:1232:5:1233:14 | S1 | +| main.rs:1279:22:1279:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1282:37:1282:63 | try_complex(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1282:37:1282:63 | try_complex(...) | E | main.rs:1232:5:1233:14 | S1 | +| main.rs:1282:37:1282:63 | try_complex(...) | T | main.rs:1232:5:1233:14 | S1 | +| main.rs:1282:49:1282:62 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1282:49:1282:62 | ...::Ok(...) | E | main.rs:1232:5:1233:14 | S1 | +| main.rs:1282:49:1282:62 | ...::Ok(...) | T | main.rs:1232:5:1233:14 | S1 | +| main.rs:1282:60:1282:61 | S1 | | main.rs:1232:5:1233:14 | S1 | +| main.rs:1283:22:1283:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1290:13:1290:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1290:22:1290:22 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1291:13:1291:13 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:1291:17:1291:17 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1292:13:1292:13 | z | | {EXTERNAL LOCATION} | i32 | +| main.rs:1292:17:1292:17 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1292:17:1292:21 | ... + ... | | {EXTERNAL LOCATION} | i32 | +| main.rs:1292:21:1292:21 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:1293:13:1293:13 | z | | {EXTERNAL LOCATION} | i32 | +| main.rs:1293:17:1293:17 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1293:17:1293:23 | x.abs() | | {EXTERNAL LOCATION} | i32 | +| main.rs:1294:13:1294:13 | c | | {EXTERNAL LOCATION} | char | +| main.rs:1294:17:1294:19 | 'c' | | {EXTERNAL LOCATION} | char | +| main.rs:1295:13:1295:17 | hello | | {EXTERNAL LOCATION} | str | +| main.rs:1295:21:1295:27 | "Hello" | | {EXTERNAL LOCATION} | str | +| main.rs:1296:13:1296:13 | f | | {EXTERNAL LOCATION} | f64 | +| main.rs:1296:17:1296:24 | 123.0f64 | | {EXTERNAL LOCATION} | f64 | +| main.rs:1297:13:1297:13 | t | | {EXTERNAL LOCATION} | bool | +| main.rs:1297:17:1297:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1298:13:1298:13 | f | | {EXTERNAL LOCATION} | bool | +| main.rs:1298:17:1298:21 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1305:13:1305:13 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:1305:17:1305:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1305:17:1305:29 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1305:25:1305:29 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1306:13:1306:13 | y | | {EXTERNAL LOCATION} | bool | +| main.rs:1306:17:1306:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1306:17:1306:29 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1306:25:1306:29 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1308:13:1308:17 | mut a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1309:13:1309:16 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:1309:20:1309:21 | 34 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1309:20:1309:27 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1309:26:1309:27 | 33 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1310:12:1310:15 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:1311:17:1311:17 | z | | file://:0:0:0:0 | () | +| main.rs:1311:21:1311:27 | (...) | | file://:0:0:0:0 | () | +| main.rs:1311:22:1311:22 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1311:22:1311:26 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1311:26:1311:26 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1313:13:1313:13 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1313:13:1313:17 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1313:17:1313:17 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1315:9:1315:9 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1332:16:1332:19 | SelfParam | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1332:22:1332:24 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1332:41:1337:9 | { ... } | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1333:13:1336:13 | Vec2 {...} | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1334:20:1334:23 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1334:20:1334:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1334:20:1334:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1334:29:1334:31 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1334:29:1334:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1335:20:1335:23 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1335:20:1335:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1335:20:1335:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1335:29:1335:31 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1335:29:1335:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1342:23:1342:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1342:23:1342:31 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1342:34:1342:36 | rhs | | main.rs:1322:5:1327:5 | Vec2 | | main.rs:1343:13:1343:16 | self | | file://:0:0:0:0 | & | -| main.rs:1343:13:1343:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1343:13:1343:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1343:13:1343:27 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1343:23:1343:25 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1343:23:1343:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1349:16:1349:19 | SelfParam | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1349:22:1349:24 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1349:41:1354:9 | { ... } | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1350:13:1353:13 | Vec2 {...} | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1351:20:1351:23 | self | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1351:20:1351:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1351:20:1351:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1351:29:1351:31 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1351:29:1351:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1352:20:1352:23 | self | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1352:20:1352:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1352:20:1352:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1352:29:1352:31 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1352:29:1352:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1358:23:1358:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1358:23:1358:31 | SelfParam | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1358:34:1358:36 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1359:13:1359:16 | self | | file://:0:0:0:0 | & | -| main.rs:1359:13:1359:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1359:13:1359:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1359:13:1359:27 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1359:23:1359:25 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1359:23:1359:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1360:13:1360:16 | self | | file://:0:0:0:0 | & | -| main.rs:1360:13:1360:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1360:13:1360:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1360:13:1360:27 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1360:23:1360:25 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1360:23:1360:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1366:16:1366:19 | SelfParam | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1366:22:1366:24 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1366:41:1371:9 | { ... } | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1367:13:1370:13 | Vec2 {...} | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1368:20:1368:23 | self | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1368:20:1368:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1368:20:1368:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1368:29:1368:31 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1368:29:1368:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1369:20:1369:23 | self | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1369:20:1369:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1369:20:1369:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1369:29:1369:31 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1369:29:1369:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1375:23:1375:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1375:23:1375:31 | SelfParam | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1375:34:1375:36 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1376:13:1376:16 | self | | file://:0:0:0:0 | & | -| main.rs:1376:13:1376:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1376:13:1376:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1376:13:1376:27 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1376:23:1376:25 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1376:23:1376:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1377:13:1377:16 | self | | file://:0:0:0:0 | & | -| main.rs:1377:13:1377:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1377:13:1377:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1377:13:1377:27 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1377:23:1377:25 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1377:23:1377:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1383:16:1383:19 | SelfParam | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1383:22:1383:24 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1383:41:1388:9 | { ... } | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1384:13:1387:13 | Vec2 {...} | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1385:20:1385:23 | self | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1385:20:1385:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1385:20:1385:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1385:29:1385:31 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1385:29:1385:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1386:20:1386:23 | self | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1386:20:1386:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1386:20:1386:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1386:29:1386:31 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1386:29:1386:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1392:23:1392:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1392:23:1392:31 | SelfParam | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1392:34:1392:36 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1393:13:1393:16 | self | | file://:0:0:0:0 | & | -| main.rs:1393:13:1393:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1393:13:1393:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1393:13:1393:27 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1393:23:1393:25 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1393:23:1393:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1394:13:1394:16 | self | | file://:0:0:0:0 | & | -| main.rs:1394:13:1394:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1394:13:1394:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1394:13:1394:27 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1394:23:1394:25 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1394:23:1394:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1400:19:1400:22 | SelfParam | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1400:25:1400:27 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1400:44:1405:9 | { ... } | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1401:13:1404:13 | Vec2 {...} | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1402:20:1402:23 | self | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1402:20:1402:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1402:20:1402:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1402:29:1402:31 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1402:29:1402:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1403:20:1403:23 | self | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1403:20:1403:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1403:20:1403:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1403:29:1403:31 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1403:29:1403:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1409:26:1409:34 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1409:26:1409:34 | SelfParam | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1409:37:1409:39 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1410:13:1410:16 | self | | file://:0:0:0:0 | & | -| main.rs:1410:13:1410:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1410:13:1410:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1410:13:1410:27 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1410:23:1410:25 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1410:23:1410:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1411:13:1411:16 | self | | file://:0:0:0:0 | & | -| main.rs:1411:13:1411:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1411:13:1411:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1411:13:1411:27 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1411:23:1411:25 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1411:23:1411:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1417:18:1417:21 | SelfParam | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1417:24:1417:26 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1417:43:1422:9 | { ... } | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1418:13:1421:13 | Vec2 {...} | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1419:20:1419:23 | self | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1419:20:1419:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1419:20:1419:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1419:29:1419:31 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1419:29:1419:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1420:20:1420:23 | self | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1420:20:1420:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1420:20:1420:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1420:29:1420:31 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1420:29:1420:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1426:25:1426:33 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1426:25:1426:33 | SelfParam | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1426:36:1426:38 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1427:13:1427:16 | self | | file://:0:0:0:0 | & | -| main.rs:1427:13:1427:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1427:13:1427:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1427:13:1427:27 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1427:23:1427:25 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1427:23:1427:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1428:13:1428:16 | self | | file://:0:0:0:0 | & | -| main.rs:1428:13:1428:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1428:13:1428:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1428:13:1428:27 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1428:23:1428:25 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1428:23:1428:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1434:19:1434:22 | SelfParam | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1434:25:1434:27 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1434:44:1439:9 | { ... } | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1435:13:1438:13 | Vec2 {...} | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1436:20:1436:23 | self | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1436:20:1436:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1436:20:1436:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1436:29:1436:31 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1436:29:1436:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1437:20:1437:23 | self | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1437:20:1437:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1437:20:1437:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1437:29:1437:31 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1437:29:1437:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1443:26:1443:34 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1443:26:1443:34 | SelfParam | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1443:37:1443:39 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1444:13:1444:16 | self | | file://:0:0:0:0 | & | -| main.rs:1444:13:1444:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1444:13:1444:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1444:13:1444:27 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1444:23:1444:25 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1444:23:1444:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1445:13:1445:16 | self | | file://:0:0:0:0 | & | -| main.rs:1445:13:1445:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1445:13:1445:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1445:13:1445:27 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1445:23:1445:25 | rhs | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1445:23:1445:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1451:16:1451:19 | SelfParam | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1451:22:1451:24 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1451:40:1456:9 | { ... } | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1452:13:1455:13 | Vec2 {...} | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1453:20:1453:23 | self | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1453:20:1453:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1453:20:1453:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1453:30:1453:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1454:20:1454:23 | self | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1454:20:1454:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1454:20:1454:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1454:30:1454:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1460:23:1460:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1460:23:1460:31 | SelfParam | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1460:34:1460:36 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1461:13:1461:16 | self | | file://:0:0:0:0 | & | -| main.rs:1461:13:1461:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1461:13:1461:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1461:13:1461:26 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1461:24:1461:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1462:13:1462:16 | self | | file://:0:0:0:0 | & | -| main.rs:1462:13:1462:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1462:13:1462:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1462:13:1462:26 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1462:24:1462:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1468:16:1468:19 | SelfParam | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1468:22:1468:24 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1468:40:1473:9 | { ... } | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1469:13:1472:13 | Vec2 {...} | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1470:20:1470:23 | self | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1470:20:1470:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1470:20:1470:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1470:30:1470:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1471:20:1471:23 | self | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1471:20:1471:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1471:20:1471:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1471:30:1471:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1477:23:1477:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1477:23:1477:31 | SelfParam | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1477:34:1477:36 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1478:13:1478:16 | self | | file://:0:0:0:0 | & | -| main.rs:1478:13:1478:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1478:13:1478:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1478:13:1478:26 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1478:24:1478:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1479:13:1479:16 | self | | file://:0:0:0:0 | & | -| main.rs:1479:13:1479:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1479:13:1479:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1479:13:1479:26 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1479:24:1479:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1485:16:1485:19 | SelfParam | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1485:30:1490:9 | { ... } | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1486:13:1489:13 | Vec2 {...} | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1487:20:1487:26 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1487:21:1487:24 | self | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1487:21:1487:26 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1488:20:1488:26 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1488:21:1488:24 | self | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1488:21:1488:26 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1495:16:1495:19 | SelfParam | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1495:30:1500:9 | { ... } | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1496:13:1499:13 | Vec2 {...} | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1497:20:1497:26 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1497:21:1497:24 | self | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1497:21:1497:26 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1498:20:1498:26 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1498:21:1498:24 | self | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1498:21:1498:26 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1504:15:1504:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1504:15:1504:19 | SelfParam | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1504:22:1504:26 | other | | file://:0:0:0:0 | & | -| main.rs:1504:22:1504:26 | other | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1504:44:1506:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1505:13:1505:16 | self | | file://:0:0:0:0 | & | -| main.rs:1505:13:1505:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1505:13:1505:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1505:13:1505:29 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1505:13:1505:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1505:23:1505:27 | other | | file://:0:0:0:0 | & | -| main.rs:1505:23:1505:27 | other | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1505:23:1505:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1505:34:1505:37 | self | | file://:0:0:0:0 | & | -| main.rs:1505:34:1505:37 | self | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1505:34:1505:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1505:34:1505:50 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1505:44:1505:48 | other | | file://:0:0:0:0 | & | -| main.rs:1505:44:1505:48 | other | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1505:44:1505:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1508:15:1508:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1508:15:1508:19 | SelfParam | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1508:22:1508:26 | other | | file://:0:0:0:0 | & | -| main.rs:1508:22:1508:26 | other | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1508:44:1510:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1509:13:1509:16 | self | | file://:0:0:0:0 | & | -| main.rs:1509:13:1509:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1509:13:1509:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1509:13:1509:29 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1509:13:1509:50 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1509:23:1509:27 | other | | file://:0:0:0:0 | & | -| main.rs:1509:23:1509:27 | other | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1509:23:1509:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1509:34:1509:37 | self | | file://:0:0:0:0 | & | -| main.rs:1509:34:1509:37 | self | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1509:34:1509:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1509:34:1509:50 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1509:44:1509:48 | other | | file://:0:0:0:0 | & | -| main.rs:1509:44:1509:48 | other | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1509:44:1509:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1514:24:1514:28 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1514:24:1514:28 | SelfParam | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1514:31:1514:35 | other | | file://:0:0:0:0 | & | -| main.rs:1514:31:1514:35 | other | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1514:75:1516:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:1514:75:1516:9 | { ... } | T | {EXTERNAL LOCATION} | Ordering | -| main.rs:1515:13:1515:29 | (...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1515:13:1515:63 | ... .partial_cmp(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:1515:13:1515:63 | ... .partial_cmp(...) | T | {EXTERNAL LOCATION} | Ordering | -| main.rs:1515:14:1515:17 | self | | file://:0:0:0:0 | & | -| main.rs:1515:14:1515:17 | self | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1515:14:1515:19 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1515:14:1515:28 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1515:23:1515:26 | self | | file://:0:0:0:0 | & | -| main.rs:1515:23:1515:26 | self | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1515:23:1515:28 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1515:43:1515:62 | &... | | file://:0:0:0:0 | & | -| main.rs:1515:43:1515:62 | &... | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:1515:44:1515:62 | (...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1515:45:1515:49 | other | | file://:0:0:0:0 | & | -| main.rs:1515:45:1515:49 | other | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1515:45:1515:51 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1515:45:1515:61 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1515:55:1515:59 | other | | file://:0:0:0:0 | & | -| main.rs:1515:55:1515:59 | other | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1515:55:1515:61 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1518:15:1518:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1518:15:1518:19 | SelfParam | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1518:22:1518:26 | other | | file://:0:0:0:0 | & | -| main.rs:1518:22:1518:26 | other | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1518:44:1520:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1519:13:1519:16 | self | | file://:0:0:0:0 | & | -| main.rs:1519:13:1519:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1519:13:1519:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1519:13:1519:28 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1519:13:1519:48 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1519:22:1519:26 | other | | file://:0:0:0:0 | & | -| main.rs:1519:22:1519:26 | other | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1519:22:1519:28 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1519:33:1519:36 | self | | file://:0:0:0:0 | & | -| main.rs:1519:33:1519:36 | self | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1519:33:1519:38 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1519:33:1519:48 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1519:42:1519:46 | other | | file://:0:0:0:0 | & | -| main.rs:1519:42:1519:46 | other | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1519:42:1519:48 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1522:15:1522:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1522:15:1522:19 | SelfParam | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1522:22:1522:26 | other | | file://:0:0:0:0 | & | -| main.rs:1522:22:1522:26 | other | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1522:44:1524:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1523:13:1523:16 | self | | file://:0:0:0:0 | & | -| main.rs:1523:13:1523:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1523:13:1523:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1523:13:1523:29 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1523:13:1523:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1523:23:1523:27 | other | | file://:0:0:0:0 | & | -| main.rs:1523:23:1523:27 | other | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1523:23:1523:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1523:34:1523:37 | self | | file://:0:0:0:0 | & | -| main.rs:1523:34:1523:37 | self | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1523:34:1523:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1523:34:1523:50 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1523:44:1523:48 | other | | file://:0:0:0:0 | & | -| main.rs:1523:44:1523:48 | other | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1523:44:1523:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1526:15:1526:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1526:15:1526:19 | SelfParam | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1526:22:1526:26 | other | | file://:0:0:0:0 | & | -| main.rs:1526:22:1526:26 | other | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1526:44:1528:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1527:13:1527:16 | self | | file://:0:0:0:0 | & | -| main.rs:1527:13:1527:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1527:13:1527:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1527:13:1527:28 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1527:13:1527:48 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1343:13:1343:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1343:13:1343:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1343:13:1343:27 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1343:23:1343:25 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1343:23:1343:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1344:13:1344:16 | self | | file://:0:0:0:0 | & | +| main.rs:1344:13:1344:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1344:13:1344:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1344:13:1344:27 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1344:23:1344:25 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1344:23:1344:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1350:16:1350:19 | SelfParam | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1350:22:1350:24 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1350:41:1355:9 | { ... } | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1351:13:1354:13 | Vec2 {...} | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1352:20:1352:23 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1352:20:1352:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1352:20:1352:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1352:29:1352:31 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1352:29:1352:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1353:20:1353:23 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1353:20:1353:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1353:20:1353:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1353:29:1353:31 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1353:29:1353:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1360:23:1360:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1360:23:1360:31 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1360:34:1360:36 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1361:13:1361:16 | self | | file://:0:0:0:0 | & | +| main.rs:1361:13:1361:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1361:13:1361:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1361:13:1361:27 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1361:23:1361:25 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1361:23:1361:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1362:13:1362:16 | self | | file://:0:0:0:0 | & | +| main.rs:1362:13:1362:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1362:13:1362:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1362:13:1362:27 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1362:23:1362:25 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1362:23:1362:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1368:16:1368:19 | SelfParam | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1368:22:1368:24 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1368:41:1373:9 | { ... } | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1369:13:1372:13 | Vec2 {...} | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1370:20:1370:23 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1370:20:1370:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1370:20:1370:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1370:29:1370:31 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1370:29:1370:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1371:20:1371:23 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1371:20:1371:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1371:20:1371:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1371:29:1371:31 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1371:29:1371:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1377:23:1377:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1377:23:1377:31 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1377:34:1377:36 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1378:13:1378:16 | self | | file://:0:0:0:0 | & | +| main.rs:1378:13:1378:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1378:13:1378:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1378:13:1378:27 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1378:23:1378:25 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1378:23:1378:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1379:13:1379:16 | self | | file://:0:0:0:0 | & | +| main.rs:1379:13:1379:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1379:13:1379:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1379:13:1379:27 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1379:23:1379:25 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1379:23:1379:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1385:16:1385:19 | SelfParam | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1385:22:1385:24 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1385:41:1390:9 | { ... } | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1386:13:1389:13 | Vec2 {...} | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1387:20:1387:23 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1387:20:1387:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1387:20:1387:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1387:29:1387:31 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1387:29:1387:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1388:20:1388:23 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1388:20:1388:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1388:20:1388:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1388:29:1388:31 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1388:29:1388:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1394:23:1394:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1394:23:1394:31 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1394:34:1394:36 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1395:13:1395:16 | self | | file://:0:0:0:0 | & | +| main.rs:1395:13:1395:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1395:13:1395:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1395:13:1395:27 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1395:23:1395:25 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1395:23:1395:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1396:13:1396:16 | self | | file://:0:0:0:0 | & | +| main.rs:1396:13:1396:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1396:13:1396:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1396:13:1396:27 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1396:23:1396:25 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1396:23:1396:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1402:16:1402:19 | SelfParam | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1402:22:1402:24 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1402:41:1407:9 | { ... } | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1403:13:1406:13 | Vec2 {...} | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1404:20:1404:23 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1404:20:1404:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1404:20:1404:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1404:29:1404:31 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1404:29:1404:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1405:20:1405:23 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1405:20:1405:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1405:20:1405:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1405:29:1405:31 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1405:29:1405:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1411:23:1411:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1411:23:1411:31 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1411:34:1411:36 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1412:13:1412:16 | self | | file://:0:0:0:0 | & | +| main.rs:1412:13:1412:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1412:13:1412:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1412:13:1412:27 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1412:23:1412:25 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1412:23:1412:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1413:13:1413:16 | self | | file://:0:0:0:0 | & | +| main.rs:1413:13:1413:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1413:13:1413:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1413:13:1413:27 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1413:23:1413:25 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1413:23:1413:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1419:19:1419:22 | SelfParam | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1419:25:1419:27 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1419:44:1424:9 | { ... } | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1420:13:1423:13 | Vec2 {...} | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1421:20:1421:23 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1421:20:1421:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1421:20:1421:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1421:29:1421:31 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1421:29:1421:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1422:20:1422:23 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1422:20:1422:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1422:20:1422:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1422:29:1422:31 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1422:29:1422:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1428:26:1428:34 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1428:26:1428:34 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1428:37:1428:39 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1429:13:1429:16 | self | | file://:0:0:0:0 | & | +| main.rs:1429:13:1429:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1429:13:1429:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1429:13:1429:27 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1429:23:1429:25 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1429:23:1429:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1430:13:1430:16 | self | | file://:0:0:0:0 | & | +| main.rs:1430:13:1430:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1430:13:1430:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1430:13:1430:27 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1430:23:1430:25 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1430:23:1430:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1436:18:1436:21 | SelfParam | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1436:24:1436:26 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1436:43:1441:9 | { ... } | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1437:13:1440:13 | Vec2 {...} | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1438:20:1438:23 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1438:20:1438:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1438:20:1438:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1438:29:1438:31 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1438:29:1438:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1439:20:1439:23 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1439:20:1439:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1439:20:1439:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1439:29:1439:31 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1439:29:1439:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1445:25:1445:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1445:25:1445:33 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1445:36:1445:38 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1446:13:1446:16 | self | | file://:0:0:0:0 | & | +| main.rs:1446:13:1446:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1446:13:1446:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1446:13:1446:27 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1446:23:1446:25 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1446:23:1446:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1447:13:1447:16 | self | | file://:0:0:0:0 | & | +| main.rs:1447:13:1447:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1447:13:1447:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1447:13:1447:27 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1447:23:1447:25 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1447:23:1447:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1453:19:1453:22 | SelfParam | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1453:25:1453:27 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1453:44:1458:9 | { ... } | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1454:13:1457:13 | Vec2 {...} | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1455:20:1455:23 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1455:20:1455:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1455:20:1455:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1455:29:1455:31 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1455:29:1455:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1456:20:1456:23 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1456:20:1456:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1456:20:1456:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1456:29:1456:31 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1456:29:1456:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1462:26:1462:34 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1462:26:1462:34 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1462:37:1462:39 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1463:13:1463:16 | self | | file://:0:0:0:0 | & | +| main.rs:1463:13:1463:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1463:13:1463:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1463:13:1463:27 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1463:23:1463:25 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1463:23:1463:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1464:13:1464:16 | self | | file://:0:0:0:0 | & | +| main.rs:1464:13:1464:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1464:13:1464:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1464:13:1464:27 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1464:23:1464:25 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1464:23:1464:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1470:16:1470:19 | SelfParam | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1470:22:1470:24 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1470:40:1475:9 | { ... } | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1471:13:1474:13 | Vec2 {...} | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1472:20:1472:23 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1472:20:1472:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1472:20:1472:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1472:30:1472:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1473:20:1473:23 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1473:20:1473:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1473:20:1473:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1473:30:1473:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1479:23:1479:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1479:23:1479:31 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1479:34:1479:36 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1480:13:1480:16 | self | | file://:0:0:0:0 | & | +| main.rs:1480:13:1480:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1480:13:1480:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1480:13:1480:26 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:1480:24:1480:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1481:13:1481:16 | self | | file://:0:0:0:0 | & | +| main.rs:1481:13:1481:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1481:13:1481:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1481:13:1481:26 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:1481:24:1481:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1487:16:1487:19 | SelfParam | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1487:22:1487:24 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1487:40:1492:9 | { ... } | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1488:13:1491:13 | Vec2 {...} | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1489:20:1489:23 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1489:20:1489:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1489:20:1489:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1489:30:1489:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1490:20:1490:23 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1490:20:1490:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1490:20:1490:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1490:30:1490:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1496:23:1496:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1496:23:1496:31 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1496:34:1496:36 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1497:13:1497:16 | self | | file://:0:0:0:0 | & | +| main.rs:1497:13:1497:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1497:13:1497:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1497:13:1497:26 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:1497:24:1497:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1498:13:1498:16 | self | | file://:0:0:0:0 | & | +| main.rs:1498:13:1498:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1498:13:1498:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1498:13:1498:26 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:1498:24:1498:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1504:16:1504:19 | SelfParam | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1504:30:1509:9 | { ... } | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1505:13:1508:13 | Vec2 {...} | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1506:20:1506:26 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1506:21:1506:24 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1506:21:1506:26 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1507:20:1507:26 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1507:21:1507:24 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1507:21:1507:26 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1514:16:1514:19 | SelfParam | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1514:30:1519:9 | { ... } | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1515:13:1518:13 | Vec2 {...} | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1516:20:1516:26 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1516:21:1516:24 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1516:21:1516:26 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1517:20:1517:26 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1517:21:1517:24 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1517:21:1517:26 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1523:15:1523:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1523:15:1523:19 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1523:22:1523:26 | other | | file://:0:0:0:0 | & | +| main.rs:1523:22:1523:26 | other | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1523:44:1525:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1524:13:1524:16 | self | | file://:0:0:0:0 | & | +| main.rs:1524:13:1524:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1524:13:1524:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1524:13:1524:29 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1524:13:1524:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1524:23:1524:27 | other | | file://:0:0:0:0 | & | +| main.rs:1524:23:1524:27 | other | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1524:23:1524:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1524:34:1524:37 | self | | file://:0:0:0:0 | & | +| main.rs:1524:34:1524:37 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1524:34:1524:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1524:34:1524:50 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1524:44:1524:48 | other | | file://:0:0:0:0 | & | +| main.rs:1524:44:1524:48 | other | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1524:44:1524:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1527:15:1527:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1527:15:1527:19 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 | | main.rs:1527:22:1527:26 | other | | file://:0:0:0:0 | & | -| main.rs:1527:22:1527:26 | other | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1527:22:1527:28 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1527:33:1527:36 | self | | file://:0:0:0:0 | & | -| main.rs:1527:33:1527:36 | self | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1527:33:1527:38 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1527:33:1527:48 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1527:42:1527:46 | other | | file://:0:0:0:0 | & | -| main.rs:1527:42:1527:46 | other | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1527:42:1527:48 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1530:15:1530:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1530:15:1530:19 | SelfParam | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1530:22:1530:26 | other | | file://:0:0:0:0 | & | -| main.rs:1530:22:1530:26 | other | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1530:44:1532:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1531:13:1531:16 | self | | file://:0:0:0:0 | & | -| main.rs:1531:13:1531:16 | self | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1531:13:1531:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1531:13:1531:29 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1531:13:1531:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1531:23:1531:27 | other | | file://:0:0:0:0 | & | -| main.rs:1531:23:1531:27 | other | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1531:23:1531:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1531:34:1531:37 | self | | file://:0:0:0:0 | & | -| main.rs:1531:34:1531:37 | self | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1531:34:1531:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1531:34:1531:50 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1531:44:1531:48 | other | | file://:0:0:0:0 | & | -| main.rs:1531:44:1531:48 | other | &T | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1531:44:1531:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1538:13:1538:18 | i64_eq | | {EXTERNAL LOCATION} | bool | -| main.rs:1538:22:1538:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1538:23:1538:26 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1538:23:1538:34 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1538:31:1538:34 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1539:13:1539:18 | i64_ne | | {EXTERNAL LOCATION} | bool | -| main.rs:1539:22:1539:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1539:23:1539:26 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1539:23:1539:34 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1539:31:1539:34 | 4i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1540:13:1540:18 | i64_lt | | {EXTERNAL LOCATION} | bool | -| main.rs:1540:22:1540:34 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1540:23:1540:26 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1540:23:1540:33 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1540:30:1540:33 | 6i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1541:13:1541:18 | i64_le | | {EXTERNAL LOCATION} | bool | -| main.rs:1541:22:1541:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1541:23:1541:26 | 7i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1541:23:1541:34 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1541:31:1541:34 | 8i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1542:13:1542:18 | i64_gt | | {EXTERNAL LOCATION} | bool | -| main.rs:1542:22:1542:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1542:23:1542:26 | 9i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1542:23:1542:34 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1542:30:1542:34 | 10i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1543:13:1543:18 | i64_ge | | {EXTERNAL LOCATION} | bool | -| main.rs:1543:22:1543:37 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1543:23:1543:27 | 11i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1543:23:1543:36 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1543:32:1543:36 | 12i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1546:13:1546:19 | i64_add | | {EXTERNAL LOCATION} | i64 | -| main.rs:1546:23:1546:27 | 13i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1546:23:1546:35 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1546:31:1546:35 | 14i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1547:13:1547:19 | i64_sub | | {EXTERNAL LOCATION} | i64 | -| main.rs:1547:23:1547:27 | 15i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1547:23:1547:35 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1547:31:1547:35 | 16i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1548:13:1548:19 | i64_mul | | {EXTERNAL LOCATION} | i64 | -| main.rs:1548:23:1548:27 | 17i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1548:23:1548:35 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1548:31:1548:35 | 18i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1549:13:1549:19 | i64_div | | {EXTERNAL LOCATION} | i64 | -| main.rs:1549:23:1549:27 | 19i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1549:23:1549:35 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1549:31:1549:35 | 20i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1550:13:1550:19 | i64_rem | | {EXTERNAL LOCATION} | i64 | -| main.rs:1550:23:1550:27 | 21i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1550:23:1550:35 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1550:31:1550:35 | 22i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1553:13:1553:30 | mut i64_add_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1553:34:1553:38 | 23i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1554:9:1554:22 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1554:9:1554:31 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1554:27:1554:31 | 24i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1556:13:1556:30 | mut i64_sub_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1556:34:1556:38 | 25i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1557:9:1557:22 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1557:9:1557:31 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1557:27:1557:31 | 26i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1559:13:1559:30 | mut i64_mul_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1559:34:1559:38 | 27i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1560:9:1560:22 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1560:9:1560:31 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1560:27:1560:31 | 28i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1562:13:1562:30 | mut i64_div_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1562:34:1562:38 | 29i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1563:9:1563:22 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1563:9:1563:31 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1563:27:1563:31 | 30i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1565:13:1565:30 | mut i64_rem_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1565:34:1565:38 | 31i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1566:9:1566:22 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1566:9:1566:31 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1566:27:1566:31 | 32i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1569:13:1569:22 | i64_bitand | | {EXTERNAL LOCATION} | i64 | -| main.rs:1569:26:1569:30 | 33i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1569:26:1569:38 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1569:34:1569:38 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1570:13:1570:21 | i64_bitor | | {EXTERNAL LOCATION} | i64 | -| main.rs:1570:25:1570:29 | 35i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1570:25:1570:37 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1570:33:1570:37 | 36i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1571:13:1571:22 | i64_bitxor | | {EXTERNAL LOCATION} | i64 | -| main.rs:1571:26:1571:30 | 37i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1571:26:1571:38 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1571:34:1571:38 | 38i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1572:13:1572:19 | i64_shl | | {EXTERNAL LOCATION} | i64 | -| main.rs:1572:23:1572:27 | 39i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1572:23:1572:36 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1572:32:1572:36 | 40i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1573:13:1573:19 | i64_shr | | {EXTERNAL LOCATION} | i64 | -| main.rs:1573:23:1573:27 | 41i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1573:23:1573:36 | ... >> ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1573:32:1573:36 | 42i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1576:13:1576:33 | mut i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1576:37:1576:41 | 43i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1577:9:1577:25 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1577:9:1577:34 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1577:30:1577:34 | 44i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1579:13:1579:32 | mut i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1579:36:1579:40 | 45i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1580:9:1580:24 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1580:9:1580:33 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1580:29:1580:33 | 46i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1582:13:1582:33 | mut i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1582:37:1582:41 | 47i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1583:9:1583:25 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1583:9:1583:34 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1583:30:1583:34 | 48i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1585:13:1585:30 | mut i64_shl_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1585:34:1585:38 | 49i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1586:9:1586:22 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1586:9:1586:32 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1586:28:1586:32 | 50i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1588:13:1588:30 | mut i64_shr_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1588:34:1588:38 | 51i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1589:9:1589:22 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1589:9:1589:32 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1589:28:1589:32 | 52i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1591:13:1591:19 | i64_neg | | {EXTERNAL LOCATION} | i64 | -| main.rs:1591:23:1591:28 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1591:24:1591:28 | 53i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1592:13:1592:19 | i64_not | | {EXTERNAL LOCATION} | i64 | -| main.rs:1592:23:1592:28 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1592:24:1592:28 | 54i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1595:13:1595:14 | v1 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1595:18:1595:36 | Vec2 {...} | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1595:28:1595:28 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1595:28:1595:28 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1595:34:1595:34 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1595:34:1595:34 | 2 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1596:13:1596:14 | v2 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1596:18:1596:36 | Vec2 {...} | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1596:28:1596:28 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1596:28:1596:28 | 3 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1596:34:1596:34 | 4 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1596:34:1596:34 | 4 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1599:13:1599:19 | vec2_eq | | {EXTERNAL LOCATION} | bool | -| main.rs:1599:23:1599:24 | v1 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1599:23:1599:30 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1599:29:1599:30 | v2 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1600:13:1600:19 | vec2_ne | | {EXTERNAL LOCATION} | bool | -| main.rs:1600:23:1600:24 | v1 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1600:23:1600:30 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1600:29:1600:30 | v2 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1601:13:1601:19 | vec2_lt | | {EXTERNAL LOCATION} | bool | -| main.rs:1601:23:1601:24 | v1 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1601:23:1601:29 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1601:28:1601:29 | v2 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1602:13:1602:19 | vec2_le | | {EXTERNAL LOCATION} | bool | -| main.rs:1602:23:1602:24 | v1 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1602:23:1602:30 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1602:29:1602:30 | v2 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1603:13:1603:19 | vec2_gt | | {EXTERNAL LOCATION} | bool | -| main.rs:1603:23:1603:24 | v1 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1603:23:1603:29 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1603:28:1603:29 | v2 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1604:13:1604:19 | vec2_ge | | {EXTERNAL LOCATION} | bool | -| main.rs:1604:23:1604:24 | v1 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1604:23:1604:30 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1604:29:1604:30 | v2 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1607:13:1607:20 | vec2_add | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1607:24:1607:25 | v1 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1607:24:1607:30 | ... + ... | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1607:29:1607:30 | v2 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1608:13:1608:20 | vec2_sub | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1608:24:1608:25 | v1 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1608:24:1608:30 | ... - ... | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1608:29:1608:30 | v2 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1609:13:1609:20 | vec2_mul | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1609:24:1609:25 | v1 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1609:24:1609:30 | ... * ... | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1609:29:1609:30 | v2 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1610:13:1610:20 | vec2_div | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1610:24:1610:25 | v1 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1610:24:1610:30 | ... / ... | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1610:29:1610:30 | v2 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1611:13:1611:20 | vec2_rem | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1611:24:1611:25 | v1 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1611:24:1611:30 | ... % ... | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1611:29:1611:30 | v2 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1614:13:1614:31 | mut vec2_add_assign | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1614:35:1614:36 | v1 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1615:9:1615:23 | vec2_add_assign | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1615:9:1615:29 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1615:28:1615:29 | v2 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1617:13:1617:31 | mut vec2_sub_assign | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1617:35:1617:36 | v1 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1618:9:1618:23 | vec2_sub_assign | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1618:9:1618:29 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1618:28:1618:29 | v2 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1620:13:1620:31 | mut vec2_mul_assign | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1620:35:1620:36 | v1 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1621:9:1621:23 | vec2_mul_assign | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1621:9:1621:29 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1621:28:1621:29 | v2 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1623:13:1623:31 | mut vec2_div_assign | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1623:35:1623:36 | v1 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1624:9:1624:23 | vec2_div_assign | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1624:9:1624:29 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1624:28:1624:29 | v2 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1626:13:1626:31 | mut vec2_rem_assign | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1626:35:1626:36 | v1 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1627:9:1627:23 | vec2_rem_assign | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1627:9:1627:29 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1627:28:1627:29 | v2 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1630:13:1630:23 | vec2_bitand | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1630:27:1630:28 | v1 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1630:27:1630:33 | ... & ... | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1630:32:1630:33 | v2 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1631:13:1631:22 | vec2_bitor | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1631:26:1631:27 | v1 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1631:26:1631:32 | ... \| ... | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1631:31:1631:32 | v2 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1632:13:1632:23 | vec2_bitxor | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1632:27:1632:28 | v1 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1632:27:1632:33 | ... ^ ... | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1632:32:1632:33 | v2 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1633:13:1633:20 | vec2_shl | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1633:24:1633:25 | v1 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1633:24:1633:33 | ... << ... | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1633:30:1633:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:1634:13:1634:20 | vec2_shr | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1634:24:1634:25 | v1 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1634:24:1634:33 | ... >> ... | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1634:30:1634:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:1637:13:1637:34 | mut vec2_bitand_assign | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1637:38:1637:39 | v1 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1638:9:1638:26 | vec2_bitand_assign | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1638:9:1638:32 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1638:31:1638:32 | v2 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1640:13:1640:33 | mut vec2_bitor_assign | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1640:37:1640:38 | v1 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1641:9:1641:25 | vec2_bitor_assign | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1641:9:1641:31 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1641:30:1641:31 | v2 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1643:13:1643:34 | mut vec2_bitxor_assign | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1643:38:1643:39 | v1 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1644:9:1644:26 | vec2_bitxor_assign | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1644:9:1644:32 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1644:31:1644:32 | v2 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1646:13:1646:31 | mut vec2_shl_assign | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1646:35:1646:36 | v1 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1647:9:1647:23 | vec2_shl_assign | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1647:9:1647:32 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1647:29:1647:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:1649:13:1649:31 | mut vec2_shr_assign | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1649:35:1649:36 | v1 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1650:9:1650:23 | vec2_shr_assign | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1650:9:1650:32 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1650:29:1650:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:1653:13:1653:20 | vec2_neg | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1653:24:1653:26 | - ... | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1653:25:1653:26 | v1 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1654:13:1654:20 | vec2_not | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1654:24:1654:26 | ! ... | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1654:25:1654:26 | v1 | | main.rs:1303:5:1308:5 | Vec2 | -| main.rs:1664:18:1664:21 | SelfParam | | main.rs:1661:5:1661:14 | S1 | -| main.rs:1667:25:1669:5 | { ... } | | main.rs:1661:5:1661:14 | S1 | -| main.rs:1668:9:1668:10 | S1 | | main.rs:1661:5:1661:14 | S1 | -| main.rs:1671:41:1673:5 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:1671:41:1673:5 | { ... } | | main.rs:1671:16:1671:39 | ImplTraitTypeRepr | -| main.rs:1671:41:1673:5 | { ... } | Output | main.rs:1661:5:1661:14 | S1 | -| main.rs:1672:9:1672:20 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:1672:9:1672:20 | { ... } | | main.rs:1671:16:1671:39 | ImplTraitTypeRepr | -| main.rs:1672:9:1672:20 | { ... } | Output | main.rs:1661:5:1661:14 | S1 | -| main.rs:1672:17:1672:18 | S1 | | main.rs:1661:5:1661:14 | S1 | -| main.rs:1681:13:1681:42 | SelfParam | | {EXTERNAL LOCATION} | Pin | -| main.rs:1681:13:1681:42 | SelfParam | Ptr | file://:0:0:0:0 | & | -| main.rs:1681:13:1681:42 | SelfParam | Ptr.&T | main.rs:1675:5:1675:14 | S2 | -| main.rs:1682:13:1682:15 | _cx | | file://:0:0:0:0 | & | -| main.rs:1682:13:1682:15 | _cx | &T | {EXTERNAL LOCATION} | Context | -| main.rs:1683:44:1685:9 | { ... } | | {EXTERNAL LOCATION} | Poll | -| main.rs:1683:44:1685:9 | { ... } | T | main.rs:1661:5:1661:14 | S1 | -| main.rs:1684:13:1684:38 | ...::Ready(...) | | {EXTERNAL LOCATION} | Poll | -| main.rs:1684:13:1684:38 | ...::Ready(...) | T | main.rs:1661:5:1661:14 | S1 | -| main.rs:1684:36:1684:37 | S1 | | main.rs:1661:5:1661:14 | S1 | -| main.rs:1688:41:1690:5 | { ... } | | main.rs:1675:5:1675:14 | S2 | -| main.rs:1688:41:1690:5 | { ... } | | main.rs:1688:16:1688:39 | ImplTraitTypeRepr | -| main.rs:1689:9:1689:10 | S2 | | main.rs:1675:5:1675:14 | S2 | -| main.rs:1689:9:1689:10 | S2 | | main.rs:1688:16:1688:39 | ImplTraitTypeRepr | -| main.rs:1693:9:1693:12 | f1(...) | | {EXTERNAL LOCATION} | trait Future | -| main.rs:1693:9:1693:12 | f1(...) | Output | main.rs:1661:5:1661:14 | S1 | -| main.rs:1693:9:1693:18 | await ... | | main.rs:1661:5:1661:14 | S1 | -| main.rs:1694:9:1694:12 | f2(...) | | main.rs:1671:16:1671:39 | ImplTraitTypeRepr | -| main.rs:1694:9:1694:18 | await ... | | main.rs:1661:5:1661:14 | S1 | -| main.rs:1695:9:1695:12 | f3(...) | | main.rs:1688:16:1688:39 | ImplTraitTypeRepr | -| main.rs:1695:9:1695:18 | await ... | | main.rs:1661:5:1661:14 | S1 | -| main.rs:1696:9:1696:10 | S2 | | main.rs:1675:5:1675:14 | S2 | -| main.rs:1696:9:1696:16 | await S2 | | main.rs:1661:5:1661:14 | S1 | -| main.rs:1697:13:1697:13 | b | | {EXTERNAL LOCATION} | trait Future | -| main.rs:1697:13:1697:13 | b | Output | main.rs:1661:5:1661:14 | S1 | -| main.rs:1697:17:1697:28 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:1697:17:1697:28 | { ... } | Output | main.rs:1661:5:1661:14 | S1 | -| main.rs:1697:25:1697:26 | S1 | | main.rs:1661:5:1661:14 | S1 | -| main.rs:1698:9:1698:9 | b | | {EXTERNAL LOCATION} | trait Future | -| main.rs:1698:9:1698:9 | b | Output | main.rs:1661:5:1661:14 | S1 | -| main.rs:1698:9:1698:15 | await b | | main.rs:1661:5:1661:14 | S1 | -| main.rs:1707:15:1707:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1707:15:1707:19 | SelfParam | &T | main.rs:1706:5:1708:5 | Self [trait Trait1] | -| main.rs:1711:15:1711:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1711:15:1711:19 | SelfParam | &T | main.rs:1710:5:1712:5 | Self [trait Trait2] | -| main.rs:1715:15:1715:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1715:15:1715:19 | SelfParam | &T | main.rs:1703:5:1703:14 | S1 | -| main.rs:1719:15:1719:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1719:15:1719:19 | SelfParam | &T | main.rs:1703:5:1703:14 | S1 | -| main.rs:1722:37:1724:5 | { ... } | | main.rs:1703:5:1703:14 | S1 | -| main.rs:1722:37:1724:5 | { ... } | | main.rs:1722:16:1722:35 | ImplTraitTypeRepr | -| main.rs:1723:9:1723:10 | S1 | | main.rs:1703:5:1703:14 | S1 | -| main.rs:1723:9:1723:10 | S1 | | main.rs:1722:16:1722:35 | ImplTraitTypeRepr | -| main.rs:1727:18:1727:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1727:18:1727:22 | SelfParam | &T | main.rs:1726:5:1728:5 | Self [trait MyTrait] | -| main.rs:1731:18:1731:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1731:18:1731:22 | SelfParam | &T | main.rs:1703:5:1703:14 | S1 | -| main.rs:1731:31:1733:9 | { ... } | | main.rs:1704:5:1704:14 | S2 | -| main.rs:1732:13:1732:14 | S2 | | main.rs:1704:5:1704:14 | S2 | -| main.rs:1736:45:1738:5 | { ... } | | main.rs:1703:5:1703:14 | S1 | -| main.rs:1736:45:1738:5 | { ... } | | main.rs:1736:28:1736:43 | ImplTraitTypeRepr | -| main.rs:1737:9:1737:10 | S1 | | main.rs:1703:5:1703:14 | S1 | -| main.rs:1737:9:1737:10 | S1 | | main.rs:1736:28:1736:43 | ImplTraitTypeRepr | -| main.rs:1740:41:1740:41 | t | | main.rs:1740:26:1740:38 | B | -| main.rs:1740:52:1742:5 | { ... } | | main.rs:1740:23:1740:23 | A | -| main.rs:1741:9:1741:9 | t | | main.rs:1740:26:1740:38 | B | -| main.rs:1741:9:1741:17 | t.get_a() | | main.rs:1740:23:1740:23 | A | -| main.rs:1744:26:1744:26 | t | | main.rs:1744:29:1744:43 | ImplTraitTypeRepr | -| main.rs:1744:51:1746:5 | { ... } | | main.rs:1744:23:1744:23 | A | -| main.rs:1745:9:1745:9 | t | | main.rs:1744:29:1744:43 | ImplTraitTypeRepr | -| main.rs:1745:9:1745:17 | t.get_a() | | main.rs:1744:23:1744:23 | A | -| main.rs:1749:13:1749:13 | x | | main.rs:1722:16:1722:35 | ImplTraitTypeRepr | -| main.rs:1749:17:1749:20 | f1(...) | | main.rs:1722:16:1722:35 | ImplTraitTypeRepr | -| main.rs:1750:9:1750:9 | x | | main.rs:1722:16:1722:35 | ImplTraitTypeRepr | -| main.rs:1751:9:1751:9 | x | | main.rs:1722:16:1722:35 | ImplTraitTypeRepr | -| main.rs:1752:13:1752:13 | a | | main.rs:1736:28:1736:43 | ImplTraitTypeRepr | -| main.rs:1752:17:1752:32 | get_a_my_trait(...) | | main.rs:1736:28:1736:43 | ImplTraitTypeRepr | -| main.rs:1753:13:1753:13 | b | | main.rs:1704:5:1704:14 | S2 | -| main.rs:1753:17:1753:33 | uses_my_trait1(...) | | main.rs:1704:5:1704:14 | S2 | -| main.rs:1753:32:1753:32 | a | | main.rs:1736:28:1736:43 | ImplTraitTypeRepr | -| main.rs:1754:13:1754:13 | a | | main.rs:1736:28:1736:43 | ImplTraitTypeRepr | -| main.rs:1754:17:1754:32 | get_a_my_trait(...) | | main.rs:1736:28:1736:43 | ImplTraitTypeRepr | -| main.rs:1755:13:1755:13 | c | | main.rs:1704:5:1704:14 | S2 | -| main.rs:1755:17:1755:33 | uses_my_trait2(...) | | main.rs:1704:5:1704:14 | S2 | -| main.rs:1755:32:1755:32 | a | | main.rs:1736:28:1736:43 | ImplTraitTypeRepr | -| main.rs:1756:13:1756:13 | d | | main.rs:1704:5:1704:14 | S2 | -| main.rs:1756:17:1756:34 | uses_my_trait2(...) | | main.rs:1704:5:1704:14 | S2 | -| main.rs:1756:32:1756:33 | S1 | | main.rs:1703:5:1703:14 | S1 | -| main.rs:1767:16:1767:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1767:16:1767:20 | SelfParam | &T | main.rs:1763:5:1764:13 | S | -| main.rs:1767:31:1769:9 | { ... } | | main.rs:1763:5:1764:13 | S | -| main.rs:1768:13:1768:13 | S | | main.rs:1763:5:1764:13 | S | -| main.rs:1778:26:1780:9 | { ... } | | main.rs:1772:5:1775:5 | MyVec | -| main.rs:1778:26:1780:9 | { ... } | T | main.rs:1777:10:1777:10 | T | -| main.rs:1779:13:1779:38 | MyVec {...} | | main.rs:1772:5:1775:5 | MyVec | -| main.rs:1779:13:1779:38 | MyVec {...} | T | main.rs:1777:10:1777:10 | T | -| main.rs:1779:27:1779:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:1779:27:1779:36 | ...::new(...) | T | main.rs:1777:10:1777:10 | T | -| main.rs:1782:17:1782:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1782:17:1782:25 | SelfParam | &T | main.rs:1772:5:1775:5 | MyVec | -| main.rs:1782:17:1782:25 | SelfParam | &T.T | main.rs:1777:10:1777:10 | T | -| main.rs:1782:28:1782:32 | value | | main.rs:1777:10:1777:10 | T | -| main.rs:1783:13:1783:16 | self | | file://:0:0:0:0 | & | -| main.rs:1783:13:1783:16 | self | &T | main.rs:1772:5:1775:5 | MyVec | -| main.rs:1783:13:1783:16 | self | &T.T | main.rs:1777:10:1777:10 | T | -| main.rs:1783:13:1783:21 | self.data | | {EXTERNAL LOCATION} | Vec | -| main.rs:1783:13:1783:21 | self.data | T | main.rs:1777:10:1777:10 | T | -| main.rs:1783:28:1783:32 | value | | main.rs:1777:10:1777:10 | T | -| main.rs:1791:18:1791:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1791:18:1791:22 | SelfParam | &T | main.rs:1772:5:1775:5 | MyVec | -| main.rs:1791:18:1791:22 | SelfParam | &T.T | main.rs:1787:10:1787:10 | T | -| main.rs:1791:25:1791:29 | index | | {EXTERNAL LOCATION} | usize | -| main.rs:1791:56:1793:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1791:56:1793:9 | { ... } | &T | main.rs:1787:10:1787:10 | T | -| main.rs:1792:13:1792:29 | &... | | file://:0:0:0:0 | & | -| main.rs:1792:13:1792:29 | &... | &T | main.rs:1787:10:1787:10 | T | -| main.rs:1792:14:1792:17 | self | | file://:0:0:0:0 | & | -| main.rs:1792:14:1792:17 | self | &T | main.rs:1772:5:1775:5 | MyVec | -| main.rs:1792:14:1792:17 | self | &T.T | main.rs:1787:10:1787:10 | T | -| main.rs:1792:14:1792:22 | self.data | | {EXTERNAL LOCATION} | Vec | -| main.rs:1792:14:1792:22 | self.data | T | main.rs:1787:10:1787:10 | T | -| main.rs:1792:14:1792:29 | ...[index] | | main.rs:1787:10:1787:10 | T | -| main.rs:1792:24:1792:28 | index | | {EXTERNAL LOCATION} | usize | -| main.rs:1796:22:1796:26 | slice | | file://:0:0:0:0 | & | -| main.rs:1796:22:1796:26 | slice | &T | file://:0:0:0:0 | [] | -| main.rs:1796:22:1796:26 | slice | &T.[T] | main.rs:1763:5:1764:13 | S | -| main.rs:1797:13:1797:13 | x | | main.rs:1763:5:1764:13 | S | -| main.rs:1797:17:1797:21 | slice | | file://:0:0:0:0 | & | -| main.rs:1797:17:1797:21 | slice | &T | file://:0:0:0:0 | [] | -| main.rs:1797:17:1797:21 | slice | &T.[T] | main.rs:1763:5:1764:13 | S | -| main.rs:1797:17:1797:24 | slice[0] | | main.rs:1763:5:1764:13 | S | -| main.rs:1797:17:1797:30 | ... .foo() | | main.rs:1763:5:1764:13 | S | -| main.rs:1797:23:1797:23 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1801:13:1801:19 | mut vec | | main.rs:1772:5:1775:5 | MyVec | -| main.rs:1801:13:1801:19 | mut vec | T | main.rs:1763:5:1764:13 | S | -| main.rs:1801:23:1801:34 | ...::new(...) | | main.rs:1772:5:1775:5 | MyVec | -| main.rs:1801:23:1801:34 | ...::new(...) | T | main.rs:1763:5:1764:13 | S | -| main.rs:1802:9:1802:11 | vec | | main.rs:1772:5:1775:5 | MyVec | -| main.rs:1802:9:1802:11 | vec | T | main.rs:1763:5:1764:13 | S | -| main.rs:1802:18:1802:18 | S | | main.rs:1763:5:1764:13 | S | -| main.rs:1803:9:1803:11 | vec | | main.rs:1772:5:1775:5 | MyVec | -| main.rs:1803:9:1803:11 | vec | T | main.rs:1763:5:1764:13 | S | -| main.rs:1803:13:1803:13 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1805:13:1805:14 | xs | | file://:0:0:0:0 | [] | -| main.rs:1805:13:1805:14 | xs | | file://:0:0:0:0 | [] | -| main.rs:1805:13:1805:14 | xs | [T;...] | main.rs:1763:5:1764:13 | S | -| main.rs:1805:13:1805:14 | xs | [T] | main.rs:1763:5:1764:13 | S | -| main.rs:1805:21:1805:21 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1805:26:1805:28 | [...] | | file://:0:0:0:0 | [] | -| main.rs:1805:26:1805:28 | [...] | | file://:0:0:0:0 | [] | -| main.rs:1805:26:1805:28 | [...] | [T;...] | main.rs:1763:5:1764:13 | S | -| main.rs:1805:26:1805:28 | [...] | [T] | main.rs:1763:5:1764:13 | S | -| main.rs:1805:27:1805:27 | S | | main.rs:1763:5:1764:13 | S | -| main.rs:1806:13:1806:13 | x | | main.rs:1763:5:1764:13 | S | -| main.rs:1806:17:1806:18 | xs | | file://:0:0:0:0 | [] | -| main.rs:1806:17:1806:18 | xs | | file://:0:0:0:0 | [] | -| main.rs:1806:17:1806:18 | xs | [T;...] | main.rs:1763:5:1764:13 | S | -| main.rs:1806:17:1806:18 | xs | [T] | main.rs:1763:5:1764:13 | S | -| main.rs:1806:17:1806:21 | xs[0] | | main.rs:1763:5:1764:13 | S | -| main.rs:1806:17:1806:27 | ... .foo() | | main.rs:1763:5:1764:13 | S | -| main.rs:1806:20:1806:20 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1808:23:1808:25 | &xs | | file://:0:0:0:0 | & | -| main.rs:1808:23:1808:25 | &xs | &T | file://:0:0:0:0 | [] | -| main.rs:1808:23:1808:25 | &xs | &T | file://:0:0:0:0 | [] | -| main.rs:1808:23:1808:25 | &xs | &T.[T;...] | main.rs:1763:5:1764:13 | S | -| main.rs:1808:23:1808:25 | &xs | &T.[T] | main.rs:1763:5:1764:13 | S | -| main.rs:1808:24:1808:25 | xs | | file://:0:0:0:0 | [] | -| main.rs:1808:24:1808:25 | xs | | file://:0:0:0:0 | [] | -| main.rs:1808:24:1808:25 | xs | [T;...] | main.rs:1763:5:1764:13 | S | -| main.rs:1808:24:1808:25 | xs | [T] | main.rs:1763:5:1764:13 | S | -| main.rs:1814:25:1814:35 | "Hello, {}" | | {EXTERNAL LOCATION} | str | -| main.rs:1814:25:1814:45 | ...::format(...) | | {EXTERNAL LOCATION} | String | -| main.rs:1814:25:1814:45 | { ... } | | {EXTERNAL LOCATION} | String | -| main.rs:1814:38:1814:45 | "World!" | | {EXTERNAL LOCATION} | str | -| main.rs:1820:19:1820:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1820:19:1820:23 | SelfParam | &T | main.rs:1819:5:1821:5 | Self [trait MyAdd] | -| main.rs:1820:26:1820:30 | value | | main.rs:1819:17:1819:17 | T | -| main.rs:1825:19:1825:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1825:19:1825:23 | SelfParam | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:1825:26:1825:30 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:1825:46:1827:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:1826:13:1826:17 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:1832:19:1832:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1832:19:1832:23 | SelfParam | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:1832:26:1832:30 | value | | file://:0:0:0:0 | & | -| main.rs:1832:26:1832:30 | value | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:1832:26:1832:30 | value | &T | file://:0:0:0:0 | & | -| main.rs:1832:47:1834:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:1832:47:1834:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1833:13:1833:18 | * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1833:13:1833:18 | * ... | | file://:0:0:0:0 | & | -| main.rs:1833:14:1833:18 | value | | file://:0:0:0:0 | & | -| main.rs:1833:14:1833:18 | value | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:1833:14:1833:18 | value | &T | file://:0:0:0:0 | & | +| main.rs:1527:22:1527:26 | other | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1527:44:1529:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1528:13:1528:16 | self | | file://:0:0:0:0 | & | +| main.rs:1528:13:1528:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1528:13:1528:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1528:13:1528:29 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1528:13:1528:50 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1528:23:1528:27 | other | | file://:0:0:0:0 | & | +| main.rs:1528:23:1528:27 | other | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1528:23:1528:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1528:34:1528:37 | self | | file://:0:0:0:0 | & | +| main.rs:1528:34:1528:37 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1528:34:1528:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1528:34:1528:50 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1528:44:1528:48 | other | | file://:0:0:0:0 | & | +| main.rs:1528:44:1528:48 | other | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1528:44:1528:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1533:24:1533:28 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1533:24:1533:28 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1533:31:1533:35 | other | | file://:0:0:0:0 | & | +| main.rs:1533:31:1533:35 | other | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1533:75:1535:9 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:1533:75:1535:9 | { ... } | T | {EXTERNAL LOCATION} | Ordering | +| main.rs:1534:13:1534:29 | (...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1534:13:1534:63 | ... .partial_cmp(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:1534:13:1534:63 | ... .partial_cmp(...) | T | {EXTERNAL LOCATION} | Ordering | +| main.rs:1534:14:1534:17 | self | | file://:0:0:0:0 | & | +| main.rs:1534:14:1534:17 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1534:14:1534:19 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1534:14:1534:28 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1534:23:1534:26 | self | | file://:0:0:0:0 | & | +| main.rs:1534:23:1534:26 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1534:23:1534:28 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1534:43:1534:62 | &... | | file://:0:0:0:0 | & | +| main.rs:1534:43:1534:62 | &... | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1534:44:1534:62 | (...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1534:45:1534:49 | other | | file://:0:0:0:0 | & | +| main.rs:1534:45:1534:49 | other | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1534:45:1534:51 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1534:45:1534:61 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1534:55:1534:59 | other | | file://:0:0:0:0 | & | +| main.rs:1534:55:1534:59 | other | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1534:55:1534:61 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1537:15:1537:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1537:15:1537:19 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1537:22:1537:26 | other | | file://:0:0:0:0 | & | +| main.rs:1537:22:1537:26 | other | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1537:44:1539:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1538:13:1538:16 | self | | file://:0:0:0:0 | & | +| main.rs:1538:13:1538:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1538:13:1538:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1538:13:1538:28 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1538:13:1538:48 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1538:22:1538:26 | other | | file://:0:0:0:0 | & | +| main.rs:1538:22:1538:26 | other | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1538:22:1538:28 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1538:33:1538:36 | self | | file://:0:0:0:0 | & | +| main.rs:1538:33:1538:36 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1538:33:1538:38 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1538:33:1538:48 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1538:42:1538:46 | other | | file://:0:0:0:0 | & | +| main.rs:1538:42:1538:46 | other | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1538:42:1538:48 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1541:15:1541:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1541:15:1541:19 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1541:22:1541:26 | other | | file://:0:0:0:0 | & | +| main.rs:1541:22:1541:26 | other | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1541:44:1543:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1542:13:1542:16 | self | | file://:0:0:0:0 | & | +| main.rs:1542:13:1542:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1542:13:1542:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1542:13:1542:29 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1542:13:1542:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1542:23:1542:27 | other | | file://:0:0:0:0 | & | +| main.rs:1542:23:1542:27 | other | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1542:23:1542:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1542:34:1542:37 | self | | file://:0:0:0:0 | & | +| main.rs:1542:34:1542:37 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1542:34:1542:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1542:34:1542:50 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1542:44:1542:48 | other | | file://:0:0:0:0 | & | +| main.rs:1542:44:1542:48 | other | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1542:44:1542:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1545:15:1545:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1545:15:1545:19 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1545:22:1545:26 | other | | file://:0:0:0:0 | & | +| main.rs:1545:22:1545:26 | other | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1545:44:1547:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1546:13:1546:16 | self | | file://:0:0:0:0 | & | +| main.rs:1546:13:1546:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1546:13:1546:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1546:13:1546:28 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1546:13:1546:48 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1546:22:1546:26 | other | | file://:0:0:0:0 | & | +| main.rs:1546:22:1546:26 | other | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1546:22:1546:28 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1546:33:1546:36 | self | | file://:0:0:0:0 | & | +| main.rs:1546:33:1546:36 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1546:33:1546:38 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1546:33:1546:48 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1546:42:1546:46 | other | | file://:0:0:0:0 | & | +| main.rs:1546:42:1546:46 | other | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1546:42:1546:48 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1549:15:1549:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1549:15:1549:19 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1549:22:1549:26 | other | | file://:0:0:0:0 | & | +| main.rs:1549:22:1549:26 | other | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1549:44:1551:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1550:13:1550:16 | self | | file://:0:0:0:0 | & | +| main.rs:1550:13:1550:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1550:13:1550:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1550:13:1550:29 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1550:13:1550:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1550:23:1550:27 | other | | file://:0:0:0:0 | & | +| main.rs:1550:23:1550:27 | other | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1550:23:1550:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1550:34:1550:37 | self | | file://:0:0:0:0 | & | +| main.rs:1550:34:1550:37 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1550:34:1550:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1550:34:1550:50 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1550:44:1550:48 | other | | file://:0:0:0:0 | & | +| main.rs:1550:44:1550:48 | other | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1550:44:1550:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1557:13:1557:18 | i64_eq | | {EXTERNAL LOCATION} | bool | +| main.rs:1557:22:1557:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1557:23:1557:26 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1557:23:1557:34 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1557:31:1557:34 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1558:13:1558:18 | i64_ne | | {EXTERNAL LOCATION} | bool | +| main.rs:1558:22:1558:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1558:23:1558:26 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1558:23:1558:34 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1558:31:1558:34 | 4i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1559:13:1559:18 | i64_lt | | {EXTERNAL LOCATION} | bool | +| main.rs:1559:22:1559:34 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1559:23:1559:26 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1559:23:1559:33 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1559:30:1559:33 | 6i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1560:13:1560:18 | i64_le | | {EXTERNAL LOCATION} | bool | +| main.rs:1560:22:1560:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1560:23:1560:26 | 7i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1560:23:1560:34 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1560:31:1560:34 | 8i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1561:13:1561:18 | i64_gt | | {EXTERNAL LOCATION} | bool | +| main.rs:1561:22:1561:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1561:23:1561:26 | 9i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1561:23:1561:34 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1561:30:1561:34 | 10i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1562:13:1562:18 | i64_ge | | {EXTERNAL LOCATION} | bool | +| main.rs:1562:22:1562:37 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1562:23:1562:27 | 11i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1562:23:1562:36 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1562:32:1562:36 | 12i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1565:13:1565:19 | i64_add | | {EXTERNAL LOCATION} | i64 | +| main.rs:1565:23:1565:27 | 13i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1565:23:1565:35 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1565:31:1565:35 | 14i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1566:13:1566:19 | i64_sub | | {EXTERNAL LOCATION} | i64 | +| main.rs:1566:23:1566:27 | 15i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1566:23:1566:35 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1566:31:1566:35 | 16i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1567:13:1567:19 | i64_mul | | {EXTERNAL LOCATION} | i64 | +| main.rs:1567:23:1567:27 | 17i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1567:23:1567:35 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1567:31:1567:35 | 18i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1568:13:1568:19 | i64_div | | {EXTERNAL LOCATION} | i64 | +| main.rs:1568:23:1568:27 | 19i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1568:23:1568:35 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1568:31:1568:35 | 20i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1569:13:1569:19 | i64_rem | | {EXTERNAL LOCATION} | i64 | +| main.rs:1569:23:1569:27 | 21i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1569:23:1569:35 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1569:31:1569:35 | 22i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1572:13:1572:30 | mut i64_add_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1572:34:1572:38 | 23i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1573:9:1573:22 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1573:9:1573:31 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1573:27:1573:31 | 24i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1575:13:1575:30 | mut i64_sub_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1575:34:1575:38 | 25i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1576:9:1576:22 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1576:9:1576:31 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1576:27:1576:31 | 26i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1578:13:1578:30 | mut i64_mul_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1578:34:1578:38 | 27i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1579:9:1579:22 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1579:9:1579:31 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1579:27:1579:31 | 28i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1581:13:1581:30 | mut i64_div_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1581:34:1581:38 | 29i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1582:9:1582:22 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1582:9:1582:31 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1582:27:1582:31 | 30i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1584:13:1584:30 | mut i64_rem_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1584:34:1584:38 | 31i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1585:9:1585:22 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1585:9:1585:31 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1585:27:1585:31 | 32i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1588:13:1588:22 | i64_bitand | | {EXTERNAL LOCATION} | i64 | +| main.rs:1588:26:1588:30 | 33i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1588:26:1588:38 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1588:34:1588:38 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1589:13:1589:21 | i64_bitor | | {EXTERNAL LOCATION} | i64 | +| main.rs:1589:25:1589:29 | 35i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1589:25:1589:37 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1589:33:1589:37 | 36i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1590:13:1590:22 | i64_bitxor | | {EXTERNAL LOCATION} | i64 | +| main.rs:1590:26:1590:30 | 37i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1590:26:1590:38 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1590:34:1590:38 | 38i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1591:13:1591:19 | i64_shl | | {EXTERNAL LOCATION} | i64 | +| main.rs:1591:23:1591:27 | 39i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1591:23:1591:36 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1591:32:1591:36 | 40i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1592:13:1592:19 | i64_shr | | {EXTERNAL LOCATION} | i64 | +| main.rs:1592:23:1592:27 | 41i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1592:23:1592:36 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1592:32:1592:36 | 42i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1595:13:1595:33 | mut i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1595:37:1595:41 | 43i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1596:9:1596:25 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1596:9:1596:34 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1596:30:1596:34 | 44i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1598:13:1598:32 | mut i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1598:36:1598:40 | 45i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1599:9:1599:24 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1599:9:1599:33 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1599:29:1599:33 | 46i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1601:13:1601:33 | mut i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1601:37:1601:41 | 47i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1602:9:1602:25 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1602:9:1602:34 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1602:30:1602:34 | 48i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1604:13:1604:30 | mut i64_shl_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1604:34:1604:38 | 49i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1605:9:1605:22 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1605:9:1605:32 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:1605:28:1605:32 | 50i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1607:13:1607:30 | mut i64_shr_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1607:34:1607:38 | 51i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1608:9:1608:22 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1608:9:1608:32 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:1608:28:1608:32 | 52i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1610:13:1610:19 | i64_neg | | {EXTERNAL LOCATION} | i64 | +| main.rs:1610:23:1610:28 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1610:24:1610:28 | 53i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1611:13:1611:19 | i64_not | | {EXTERNAL LOCATION} | i64 | +| main.rs:1611:23:1611:28 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1611:24:1611:28 | 54i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1614:13:1614:14 | v1 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1614:18:1614:36 | Vec2 {...} | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1614:28:1614:28 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1614:28:1614:28 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1614:34:1614:34 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1614:34:1614:34 | 2 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1615:13:1615:14 | v2 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1615:18:1615:36 | Vec2 {...} | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1615:28:1615:28 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1615:28:1615:28 | 3 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1615:34:1615:34 | 4 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1615:34:1615:34 | 4 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1618:13:1618:19 | vec2_eq | | {EXTERNAL LOCATION} | bool | +| main.rs:1618:23:1618:24 | v1 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1618:23:1618:30 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1618:29:1618:30 | v2 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1619:13:1619:19 | vec2_ne | | {EXTERNAL LOCATION} | bool | +| main.rs:1619:23:1619:24 | v1 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1619:23:1619:30 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1619:29:1619:30 | v2 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1620:13:1620:19 | vec2_lt | | {EXTERNAL LOCATION} | bool | +| main.rs:1620:23:1620:24 | v1 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1620:23:1620:29 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1620:28:1620:29 | v2 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1621:13:1621:19 | vec2_le | | {EXTERNAL LOCATION} | bool | +| main.rs:1621:23:1621:24 | v1 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1621:23:1621:30 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1621:29:1621:30 | v2 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1622:13:1622:19 | vec2_gt | | {EXTERNAL LOCATION} | bool | +| main.rs:1622:23:1622:24 | v1 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1622:23:1622:29 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1622:28:1622:29 | v2 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1623:13:1623:19 | vec2_ge | | {EXTERNAL LOCATION} | bool | +| main.rs:1623:23:1623:24 | v1 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1623:23:1623:30 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1623:29:1623:30 | v2 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1626:13:1626:20 | vec2_add | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1626:24:1626:25 | v1 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1626:24:1626:30 | ... + ... | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1626:29:1626:30 | v2 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1627:13:1627:20 | vec2_sub | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1627:24:1627:25 | v1 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1627:24:1627:30 | ... - ... | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1627:29:1627:30 | v2 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1628:13:1628:20 | vec2_mul | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1628:24:1628:25 | v1 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1628:24:1628:30 | ... * ... | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1628:29:1628:30 | v2 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1629:13:1629:20 | vec2_div | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1629:24:1629:25 | v1 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1629:24:1629:30 | ... / ... | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1629:29:1629:30 | v2 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1630:13:1630:20 | vec2_rem | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1630:24:1630:25 | v1 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1630:24:1630:30 | ... % ... | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1630:29:1630:30 | v2 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1633:13:1633:31 | mut vec2_add_assign | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1633:35:1633:36 | v1 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1634:9:1634:23 | vec2_add_assign | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1634:9:1634:29 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1634:28:1634:29 | v2 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1636:13:1636:31 | mut vec2_sub_assign | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1636:35:1636:36 | v1 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1637:9:1637:23 | vec2_sub_assign | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1637:9:1637:29 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1637:28:1637:29 | v2 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1639:13:1639:31 | mut vec2_mul_assign | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1639:35:1639:36 | v1 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1640:9:1640:23 | vec2_mul_assign | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1640:9:1640:29 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1640:28:1640:29 | v2 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1642:13:1642:31 | mut vec2_div_assign | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1642:35:1642:36 | v1 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1643:9:1643:23 | vec2_div_assign | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1643:9:1643:29 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1643:28:1643:29 | v2 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1645:13:1645:31 | mut vec2_rem_assign | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1645:35:1645:36 | v1 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1646:9:1646:23 | vec2_rem_assign | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1646:9:1646:29 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1646:28:1646:29 | v2 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1649:13:1649:23 | vec2_bitand | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1649:27:1649:28 | v1 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1649:27:1649:33 | ... & ... | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1649:32:1649:33 | v2 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1650:13:1650:22 | vec2_bitor | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1650:26:1650:27 | v1 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1650:26:1650:32 | ... \| ... | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1650:31:1650:32 | v2 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1651:13:1651:23 | vec2_bitxor | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1651:27:1651:28 | v1 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1651:27:1651:33 | ... ^ ... | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1651:32:1651:33 | v2 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1652:13:1652:20 | vec2_shl | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1652:24:1652:25 | v1 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1652:24:1652:33 | ... << ... | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1652:30:1652:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:1653:13:1653:20 | vec2_shr | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1653:24:1653:25 | v1 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1653:24:1653:33 | ... >> ... | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1653:30:1653:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:1656:13:1656:34 | mut vec2_bitand_assign | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1656:38:1656:39 | v1 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1657:9:1657:26 | vec2_bitand_assign | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1657:9:1657:32 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1657:31:1657:32 | v2 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1659:13:1659:33 | mut vec2_bitor_assign | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1659:37:1659:38 | v1 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1660:9:1660:25 | vec2_bitor_assign | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1660:9:1660:31 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1660:30:1660:31 | v2 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1662:13:1662:34 | mut vec2_bitxor_assign | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1662:38:1662:39 | v1 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1663:9:1663:26 | vec2_bitxor_assign | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1663:9:1663:32 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1663:31:1663:32 | v2 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1665:13:1665:31 | mut vec2_shl_assign | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1665:35:1665:36 | v1 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1666:9:1666:23 | vec2_shl_assign | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1666:9:1666:32 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:1666:29:1666:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:1668:13:1668:31 | mut vec2_shr_assign | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1668:35:1668:36 | v1 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1669:9:1669:23 | vec2_shr_assign | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1669:9:1669:32 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:1669:29:1669:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:1672:13:1672:20 | vec2_neg | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1672:24:1672:26 | - ... | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1672:25:1672:26 | v1 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1673:13:1673:20 | vec2_not | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1673:24:1673:26 | ! ... | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1673:25:1673:26 | v1 | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1683:18:1683:21 | SelfParam | | main.rs:1680:5:1680:14 | S1 | +| main.rs:1686:25:1688:5 | { ... } | | main.rs:1680:5:1680:14 | S1 | +| main.rs:1687:9:1687:10 | S1 | | main.rs:1680:5:1680:14 | S1 | +| main.rs:1690:41:1692:5 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1690:41:1692:5 | { ... } | | main.rs:1690:16:1690:39 | ImplTraitTypeRepr | +| main.rs:1690:41:1692:5 | { ... } | Output | main.rs:1680:5:1680:14 | S1 | +| main.rs:1691:9:1691:20 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1691:9:1691:20 | { ... } | | main.rs:1690:16:1690:39 | ImplTraitTypeRepr | +| main.rs:1691:9:1691:20 | { ... } | Output | main.rs:1680:5:1680:14 | S1 | +| main.rs:1691:17:1691:18 | S1 | | main.rs:1680:5:1680:14 | S1 | +| main.rs:1700:13:1700:42 | SelfParam | | {EXTERNAL LOCATION} | Pin | +| main.rs:1700:13:1700:42 | SelfParam | Ptr | file://:0:0:0:0 | & | +| main.rs:1700:13:1700:42 | SelfParam | Ptr.&T | main.rs:1694:5:1694:14 | S2 | +| main.rs:1701:13:1701:15 | _cx | | file://:0:0:0:0 | & | +| main.rs:1701:13:1701:15 | _cx | &T | {EXTERNAL LOCATION} | Context | +| main.rs:1702:44:1704:9 | { ... } | | {EXTERNAL LOCATION} | Poll | +| main.rs:1702:44:1704:9 | { ... } | T | main.rs:1680:5:1680:14 | S1 | +| main.rs:1703:13:1703:38 | ...::Ready(...) | | {EXTERNAL LOCATION} | Poll | +| main.rs:1703:13:1703:38 | ...::Ready(...) | T | main.rs:1680:5:1680:14 | S1 | +| main.rs:1703:36:1703:37 | S1 | | main.rs:1680:5:1680:14 | S1 | +| main.rs:1707:41:1709:5 | { ... } | | main.rs:1694:5:1694:14 | S2 | +| main.rs:1707:41:1709:5 | { ... } | | main.rs:1707:16:1707:39 | ImplTraitTypeRepr | +| main.rs:1708:9:1708:10 | S2 | | main.rs:1694:5:1694:14 | S2 | +| main.rs:1708:9:1708:10 | S2 | | main.rs:1707:16:1707:39 | ImplTraitTypeRepr | +| main.rs:1712:9:1712:12 | f1(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1712:9:1712:12 | f1(...) | Output | main.rs:1680:5:1680:14 | S1 | +| main.rs:1712:9:1712:18 | await ... | | main.rs:1680:5:1680:14 | S1 | +| main.rs:1713:9:1713:12 | f2(...) | | main.rs:1690:16:1690:39 | ImplTraitTypeRepr | +| main.rs:1713:9:1713:18 | await ... | | main.rs:1680:5:1680:14 | S1 | +| main.rs:1714:9:1714:12 | f3(...) | | main.rs:1707:16:1707:39 | ImplTraitTypeRepr | +| main.rs:1714:9:1714:18 | await ... | | main.rs:1680:5:1680:14 | S1 | +| main.rs:1715:9:1715:10 | S2 | | main.rs:1694:5:1694:14 | S2 | +| main.rs:1715:9:1715:16 | await S2 | | main.rs:1680:5:1680:14 | S1 | +| main.rs:1716:13:1716:13 | b | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1716:13:1716:13 | b | Output | main.rs:1680:5:1680:14 | S1 | +| main.rs:1716:17:1716:28 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1716:17:1716:28 | { ... } | Output | main.rs:1680:5:1680:14 | S1 | +| main.rs:1716:25:1716:26 | S1 | | main.rs:1680:5:1680:14 | S1 | +| main.rs:1717:9:1717:9 | b | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1717:9:1717:9 | b | Output | main.rs:1680:5:1680:14 | S1 | +| main.rs:1717:9:1717:15 | await b | | main.rs:1680:5:1680:14 | S1 | +| main.rs:1726:15:1726:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1726:15:1726:19 | SelfParam | &T | main.rs:1725:5:1727:5 | Self [trait Trait1] | +| main.rs:1730:15:1730:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1730:15:1730:19 | SelfParam | &T | main.rs:1729:5:1731:5 | Self [trait Trait2] | +| main.rs:1734:15:1734:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1734:15:1734:19 | SelfParam | &T | main.rs:1722:5:1722:14 | S1 | +| main.rs:1738:15:1738:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1738:15:1738:19 | SelfParam | &T | main.rs:1722:5:1722:14 | S1 | +| main.rs:1741:37:1743:5 | { ... } | | main.rs:1722:5:1722:14 | S1 | +| main.rs:1741:37:1743:5 | { ... } | | main.rs:1741:16:1741:35 | ImplTraitTypeRepr | +| main.rs:1742:9:1742:10 | S1 | | main.rs:1722:5:1722:14 | S1 | +| main.rs:1742:9:1742:10 | S1 | | main.rs:1741:16:1741:35 | ImplTraitTypeRepr | +| main.rs:1746:18:1746:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1746:18:1746:22 | SelfParam | &T | main.rs:1745:5:1747:5 | Self [trait MyTrait] | +| main.rs:1750:18:1750:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1750:18:1750:22 | SelfParam | &T | main.rs:1722:5:1722:14 | S1 | +| main.rs:1750:31:1752:9 | { ... } | | main.rs:1723:5:1723:14 | S2 | +| main.rs:1751:13:1751:14 | S2 | | main.rs:1723:5:1723:14 | S2 | +| main.rs:1755:45:1757:5 | { ... } | | main.rs:1722:5:1722:14 | S1 | +| main.rs:1755:45:1757:5 | { ... } | | main.rs:1755:28:1755:43 | ImplTraitTypeRepr | +| main.rs:1756:9:1756:10 | S1 | | main.rs:1722:5:1722:14 | S1 | +| main.rs:1756:9:1756:10 | S1 | | main.rs:1755:28:1755:43 | ImplTraitTypeRepr | +| main.rs:1759:41:1759:41 | t | | main.rs:1759:26:1759:38 | B | +| main.rs:1759:52:1761:5 | { ... } | | main.rs:1759:23:1759:23 | A | +| main.rs:1760:9:1760:9 | t | | main.rs:1759:26:1759:38 | B | +| main.rs:1760:9:1760:17 | t.get_a() | | main.rs:1759:23:1759:23 | A | +| main.rs:1763:26:1763:26 | t | | main.rs:1763:29:1763:43 | ImplTraitTypeRepr | +| main.rs:1763:51:1765:5 | { ... } | | main.rs:1763:23:1763:23 | A | +| main.rs:1764:9:1764:9 | t | | main.rs:1763:29:1763:43 | ImplTraitTypeRepr | +| main.rs:1764:9:1764:17 | t.get_a() | | main.rs:1763:23:1763:23 | A | +| main.rs:1768:13:1768:13 | x | | main.rs:1741:16:1741:35 | ImplTraitTypeRepr | +| main.rs:1768:17:1768:20 | f1(...) | | main.rs:1741:16:1741:35 | ImplTraitTypeRepr | +| main.rs:1769:9:1769:9 | x | | main.rs:1741:16:1741:35 | ImplTraitTypeRepr | +| main.rs:1770:9:1770:9 | x | | main.rs:1741:16:1741:35 | ImplTraitTypeRepr | +| main.rs:1771:13:1771:13 | a | | main.rs:1755:28:1755:43 | ImplTraitTypeRepr | +| main.rs:1771:17:1771:32 | get_a_my_trait(...) | | main.rs:1755:28:1755:43 | ImplTraitTypeRepr | +| main.rs:1772:13:1772:13 | b | | main.rs:1723:5:1723:14 | S2 | +| main.rs:1772:17:1772:33 | uses_my_trait1(...) | | main.rs:1723:5:1723:14 | S2 | +| main.rs:1772:32:1772:32 | a | | main.rs:1755:28:1755:43 | ImplTraitTypeRepr | +| main.rs:1773:13:1773:13 | a | | main.rs:1755:28:1755:43 | ImplTraitTypeRepr | +| main.rs:1773:17:1773:32 | get_a_my_trait(...) | | main.rs:1755:28:1755:43 | ImplTraitTypeRepr | +| main.rs:1774:13:1774:13 | c | | main.rs:1723:5:1723:14 | S2 | +| main.rs:1774:17:1774:33 | uses_my_trait2(...) | | main.rs:1723:5:1723:14 | S2 | +| main.rs:1774:32:1774:32 | a | | main.rs:1755:28:1755:43 | ImplTraitTypeRepr | +| main.rs:1775:13:1775:13 | d | | main.rs:1723:5:1723:14 | S2 | +| main.rs:1775:17:1775:34 | uses_my_trait2(...) | | main.rs:1723:5:1723:14 | S2 | +| main.rs:1775:32:1775:33 | S1 | | main.rs:1722:5:1722:14 | S1 | +| main.rs:1786:16:1786:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1786:16:1786:20 | SelfParam | &T | main.rs:1782:5:1783:13 | S | +| main.rs:1786:31:1788:9 | { ... } | | main.rs:1782:5:1783:13 | S | +| main.rs:1787:13:1787:13 | S | | main.rs:1782:5:1783:13 | S | +| main.rs:1797:26:1799:9 | { ... } | | main.rs:1791:5:1794:5 | MyVec | +| main.rs:1797:26:1799:9 | { ... } | T | main.rs:1796:10:1796:10 | T | +| main.rs:1798:13:1798:38 | MyVec {...} | | main.rs:1791:5:1794:5 | MyVec | +| main.rs:1798:13:1798:38 | MyVec {...} | T | main.rs:1796:10:1796:10 | T | +| main.rs:1798:27:1798:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:1798:27:1798:36 | ...::new(...) | T | main.rs:1796:10:1796:10 | T | +| main.rs:1801:17:1801:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1801:17:1801:25 | SelfParam | &T | main.rs:1791:5:1794:5 | MyVec | +| main.rs:1801:17:1801:25 | SelfParam | &T.T | main.rs:1796:10:1796:10 | T | +| main.rs:1801:28:1801:32 | value | | main.rs:1796:10:1796:10 | T | +| main.rs:1802:13:1802:16 | self | | file://:0:0:0:0 | & | +| main.rs:1802:13:1802:16 | self | &T | main.rs:1791:5:1794:5 | MyVec | +| main.rs:1802:13:1802:16 | self | &T.T | main.rs:1796:10:1796:10 | T | +| main.rs:1802:13:1802:21 | self.data | | {EXTERNAL LOCATION} | Vec | +| main.rs:1802:13:1802:21 | self.data | T | main.rs:1796:10:1796:10 | T | +| main.rs:1802:28:1802:32 | value | | main.rs:1796:10:1796:10 | T | +| main.rs:1810:18:1810:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1810:18:1810:22 | SelfParam | &T | main.rs:1791:5:1794:5 | MyVec | +| main.rs:1810:18:1810:22 | SelfParam | &T.T | main.rs:1806:10:1806:10 | T | +| main.rs:1810:25:1810:29 | index | | {EXTERNAL LOCATION} | usize | +| main.rs:1810:56:1812:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1810:56:1812:9 | { ... } | &T | main.rs:1806:10:1806:10 | T | +| main.rs:1811:13:1811:29 | &... | | file://:0:0:0:0 | & | +| main.rs:1811:13:1811:29 | &... | &T | main.rs:1806:10:1806:10 | T | +| main.rs:1811:14:1811:17 | self | | file://:0:0:0:0 | & | +| main.rs:1811:14:1811:17 | self | &T | main.rs:1791:5:1794:5 | MyVec | +| main.rs:1811:14:1811:17 | self | &T.T | main.rs:1806:10:1806:10 | T | +| main.rs:1811:14:1811:22 | self.data | | {EXTERNAL LOCATION} | Vec | +| main.rs:1811:14:1811:22 | self.data | T | main.rs:1806:10:1806:10 | T | +| main.rs:1811:14:1811:29 | ...[index] | | main.rs:1806:10:1806:10 | T | +| main.rs:1811:24:1811:28 | index | | {EXTERNAL LOCATION} | usize | +| main.rs:1815:22:1815:26 | slice | | file://:0:0:0:0 | & | +| main.rs:1815:22:1815:26 | slice | &T | file://:0:0:0:0 | [] | +| main.rs:1815:22:1815:26 | slice | &T.[T] | main.rs:1782:5:1783:13 | S | +| main.rs:1816:13:1816:13 | x | | main.rs:1782:5:1783:13 | S | +| main.rs:1816:17:1816:21 | slice | | file://:0:0:0:0 | & | +| main.rs:1816:17:1816:21 | slice | &T | file://:0:0:0:0 | [] | +| main.rs:1816:17:1816:21 | slice | &T.[T] | main.rs:1782:5:1783:13 | S | +| main.rs:1816:17:1816:24 | slice[0] | | main.rs:1782:5:1783:13 | S | +| main.rs:1816:17:1816:30 | ... .foo() | | main.rs:1782:5:1783:13 | S | +| main.rs:1816:23:1816:23 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1820:13:1820:19 | mut vec | | main.rs:1791:5:1794:5 | MyVec | +| main.rs:1820:13:1820:19 | mut vec | T | main.rs:1782:5:1783:13 | S | +| main.rs:1820:23:1820:34 | ...::new(...) | | main.rs:1791:5:1794:5 | MyVec | +| main.rs:1820:23:1820:34 | ...::new(...) | T | main.rs:1782:5:1783:13 | S | +| main.rs:1821:9:1821:11 | vec | | main.rs:1791:5:1794:5 | MyVec | +| main.rs:1821:9:1821:11 | vec | T | main.rs:1782:5:1783:13 | S | +| main.rs:1821:18:1821:18 | S | | main.rs:1782:5:1783:13 | S | +| main.rs:1822:9:1822:11 | vec | | main.rs:1791:5:1794:5 | MyVec | +| main.rs:1822:9:1822:11 | vec | T | main.rs:1782:5:1783:13 | S | +| main.rs:1822:13:1822:13 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1824:13:1824:14 | xs | | file://:0:0:0:0 | [] | +| main.rs:1824:13:1824:14 | xs | | file://:0:0:0:0 | [] | +| main.rs:1824:13:1824:14 | xs | [T;...] | main.rs:1782:5:1783:13 | S | +| main.rs:1824:13:1824:14 | xs | [T] | main.rs:1782:5:1783:13 | S | +| main.rs:1824:21:1824:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1824:26:1824:28 | [...] | | file://:0:0:0:0 | [] | +| main.rs:1824:26:1824:28 | [...] | | file://:0:0:0:0 | [] | +| main.rs:1824:26:1824:28 | [...] | [T;...] | main.rs:1782:5:1783:13 | S | +| main.rs:1824:26:1824:28 | [...] | [T] | main.rs:1782:5:1783:13 | S | +| main.rs:1824:27:1824:27 | S | | main.rs:1782:5:1783:13 | S | +| main.rs:1825:13:1825:13 | x | | main.rs:1782:5:1783:13 | S | +| main.rs:1825:17:1825:18 | xs | | file://:0:0:0:0 | [] | +| main.rs:1825:17:1825:18 | xs | | file://:0:0:0:0 | [] | +| main.rs:1825:17:1825:18 | xs | [T;...] | main.rs:1782:5:1783:13 | S | +| main.rs:1825:17:1825:18 | xs | [T] | main.rs:1782:5:1783:13 | S | +| main.rs:1825:17:1825:21 | xs[0] | | main.rs:1782:5:1783:13 | S | +| main.rs:1825:17:1825:27 | ... .foo() | | main.rs:1782:5:1783:13 | S | +| main.rs:1825:20:1825:20 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1827:23:1827:25 | &xs | | file://:0:0:0:0 | & | +| main.rs:1827:23:1827:25 | &xs | &T | file://:0:0:0:0 | [] | +| main.rs:1827:23:1827:25 | &xs | &T | file://:0:0:0:0 | [] | +| main.rs:1827:23:1827:25 | &xs | &T.[T;...] | main.rs:1782:5:1783:13 | S | +| main.rs:1827:23:1827:25 | &xs | &T.[T] | main.rs:1782:5:1783:13 | S | +| main.rs:1827:24:1827:25 | xs | | file://:0:0:0:0 | [] | +| main.rs:1827:24:1827:25 | xs | | file://:0:0:0:0 | [] | +| main.rs:1827:24:1827:25 | xs | [T;...] | main.rs:1782:5:1783:13 | S | +| main.rs:1827:24:1827:25 | xs | [T] | main.rs:1782:5:1783:13 | S | +| main.rs:1833:25:1833:35 | "Hello, {}" | | {EXTERNAL LOCATION} | str | +| main.rs:1833:25:1833:45 | ...::format(...) | | {EXTERNAL LOCATION} | String | +| main.rs:1833:25:1833:45 | { ... } | | {EXTERNAL LOCATION} | String | +| main.rs:1833:38:1833:45 | "World!" | | {EXTERNAL LOCATION} | str | | main.rs:1839:19:1839:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1839:19:1839:23 | SelfParam | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:1839:26:1839:30 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:1839:47:1845:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:1839:47:1845:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:1840:13:1844:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| main.rs:1840:13:1844:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | -| main.rs:1840:16:1840:20 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:1840:22:1842:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:1840:22:1842:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:1841:17:1841:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1841:17:1841:17 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1842:20:1844:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:1842:20:1844:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:1843:17:1843:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1843:17:1843:17 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1849:13:1849:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1849:13:1849:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1849:22:1849:23 | 73 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1849:22:1849:23 | 73 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1850:9:1850:9 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1850:9:1850:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1850:9:1850:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1850:18:1850:21 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1851:9:1851:9 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1851:9:1851:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1851:9:1851:23 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1851:18:1851:22 | &5i64 | | file://:0:0:0:0 | & | -| main.rs:1851:18:1851:22 | &5i64 | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:1851:19:1851:22 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1852:9:1852:9 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1852:9:1852:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1852:9:1852:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1852:18:1852:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1858:5:1858:20 | ...::f(...) | | main.rs:67:5:67:21 | Foo | -| main.rs:1859:5:1859:60 | ...::g(...) | | main.rs:67:5:67:21 | Foo | -| main.rs:1859:20:1859:38 | ...::Foo {...} | | main.rs:67:5:67:21 | Foo | -| main.rs:1859:41:1859:59 | ...::Foo {...} | | main.rs:67:5:67:21 | Foo | -| main.rs:1875:5:1875:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1839:19:1839:23 | SelfParam | &T | main.rs:1838:5:1840:5 | Self [trait MyAdd] | +| main.rs:1839:26:1839:30 | value | | main.rs:1838:17:1838:17 | T | +| main.rs:1844:19:1844:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1844:19:1844:23 | SelfParam | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1844:26:1844:30 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:1844:46:1846:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1845:13:1845:17 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:1851:19:1851:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1851:19:1851:23 | SelfParam | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1851:26:1851:30 | value | | file://:0:0:0:0 | & | +| main.rs:1851:26:1851:30 | value | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1851:26:1851:30 | value | &T | file://:0:0:0:0 | & | +| main.rs:1851:47:1853:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1851:47:1853:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1852:13:1852:18 | * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1852:13:1852:18 | * ... | | file://:0:0:0:0 | & | +| main.rs:1852:14:1852:18 | value | | file://:0:0:0:0 | & | +| main.rs:1852:14:1852:18 | value | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1852:14:1852:18 | value | &T | file://:0:0:0:0 | & | +| main.rs:1858:19:1858:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1858:19:1858:23 | SelfParam | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1858:26:1858:30 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:1858:47:1864:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:1858:47:1864:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1859:13:1863:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| main.rs:1859:13:1863:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | +| main.rs:1859:16:1859:20 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:1859:22:1861:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:1859:22:1861:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1860:17:1860:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1860:17:1860:17 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1861:20:1863:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:1861:20:1863:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1862:17:1862:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1862:17:1862:17 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1868:13:1868:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1868:13:1868:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1868:22:1868:23 | 73 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1868:22:1868:23 | 73 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1869:9:1869:9 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1869:9:1869:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1869:9:1869:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1869:18:1869:21 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1870:9:1870:9 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1870:9:1870:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1870:9:1870:23 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1870:18:1870:22 | &5i64 | | file://:0:0:0:0 | & | +| main.rs:1870:18:1870:22 | &5i64 | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1870:19:1870:22 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1871:9:1871:9 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1871:9:1871:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1871:9:1871:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1871:18:1871:21 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1877:5:1877:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:1878:5:1878:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:1878:20:1878:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:1878:41:1878:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:1894:5:1894:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | testFailures From 38aacb04c263d95c0906793b80437cbc1603c7b7 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Fri, 13 Jun 2025 14:20:20 +0200 Subject: [PATCH 081/150] Rust: Add debug predicate for type mentions --- rust/ql/lib/codeql/rust/internal/TypeInference.qll | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index 49eb11743c1..3248812b2bf 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -1594,6 +1594,11 @@ private module Debug { result = resolveMethodCallTarget(mce) } + predicate debugTypeMention(TypeMention tm, TypePath path, Type type) { + tm = getRelevantLocatable() and + tm.resolveTypeAt(path) = type + } + pragma[nomagic] private int countTypes(AstNode n, TypePath path, Type t) { t = inferType(n, path) and From 8fe737ca523eede229677c0cd98f8c8784021102 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Fri, 13 Jun 2025 14:21:40 +0200 Subject: [PATCH 082/150] Rust: Use defaults for type parameters --- rust/ql/lib/codeql/rust/internal/Type.qll | 15 +++++++++++++++ .../ql/lib/codeql/rust/internal/TypeMention.qll | 5 +++++ .../test/library-tests/type-inference/main.rs | 8 ++++---- .../type-inference/type-inference.expected | 17 +++++++++++++++++ 4 files changed, 41 insertions(+), 4 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/Type.qll b/rust/ql/lib/codeql/rust/internal/Type.qll index 47ff0e2dd3f..d675287f7cc 100644 --- a/rust/ql/lib/codeql/rust/internal/Type.qll +++ b/rust/ql/lib/codeql/rust/internal/Type.qll @@ -42,6 +42,9 @@ abstract class Type extends TType { /** Gets the `i`th type parameter of this type, if any. */ abstract TypeParameter getTypeParameter(int i); + /** Gets the default type for the `i`th type parameter, if any. */ + TypeMention getTypeParameterDefault(int i) { none() } + /** Gets a type parameter of this type. */ final TypeParameter getATypeParameter() { result = this.getTypeParameter(_) } @@ -87,6 +90,10 @@ class StructType extends StructOrEnumType, TStruct { result = TTypeParamTypeParameter(struct.getGenericParamList().getTypeParam(i)) } + override TypeMention getTypeParameterDefault(int i) { + result = struct.getGenericParamList().getTypeParam(i).getDefaultType() + } + override string toString() { result = struct.getName().getText() } override Location getLocation() { result = struct.getLocation() } @@ -108,6 +115,10 @@ class EnumType extends StructOrEnumType, TEnum { result = TTypeParamTypeParameter(enum.getGenericParamList().getTypeParam(i)) } + override TypeMention getTypeParameterDefault(int i) { + result = enum.getGenericParamList().getTypeParam(i).getDefaultType() + } + override string toString() { result = enum.getName().getText() } override Location getLocation() { result = enum.getLocation() } @@ -133,6 +144,10 @@ class TraitType extends Type, TTrait { any(AssociatedTypeTypeParameter param | param.getTrait() = trait and param.getIndex() = i) } + override TypeMention getTypeParameterDefault(int i) { + result = trait.getGenericParamList().getTypeParam(i).getDefaultType() + } + override string toString() { result = trait.toString() } override Location getLocation() { result = trait.getLocation() } diff --git a/rust/ql/lib/codeql/rust/internal/TypeMention.qll b/rust/ql/lib/codeql/rust/internal/TypeMention.qll index f14291103c7..81500b690f3 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeMention.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeMention.qll @@ -88,6 +88,11 @@ class PathTypeReprMention extends TypeMention instanceof PathTypeRepr { override TypeMention getTypeArgument(int i) { result = path.getSegment().getGenericArgList().getTypeArg(i) or + // If a type argument is not given in the path, then we use the default for + // the type parameter if one exists for the type. + not exists(path.getSegment().getGenericArgList().getTypeArg(i)) and + result = this.resolveType().getTypeParameterDefault(i) + or // `Self` paths inside `impl` blocks have implicit type arguments that are // the type parameters of the `impl` block. For example, in // diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index 4acc2c14f3f..f90ba34c34e 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -28,7 +28,7 @@ mod field_access { } fn default_field_access(x: GenericThing) { - let a = x.a; // $ fieldof=GenericThing MISSING: type=a:bool + let a = x.a; // $ fieldof=GenericThing type=a:bool println!("{:?}", a); } @@ -499,15 +499,15 @@ mod type_parameter_bounds { fn call_trait_per_bound_with_type_3(x: T, y: T) { // The type in the type parameter bound determines the return type. - let s1 = x.fst(); // $ method=fst MISSING: type=s1:bool - let s2 = y.snd(); // $ method=snd MISSING: type=s2:i64 + let s1 = x.fst(); // $ method=fst type=s1:bool + let s2 = y.snd(); // $ method=snd type=s2:i64 println!("{:?}, {:?}", s1, s2); } fn call_trait_per_bound_with_type_4>(x: T, y: T) { // The type in the type parameter bound determines the return type. let s1 = x.fst(); // $ method=fst type=s1:u8 - let s2 = y.snd(); // $ method=snd MISSING: type=s2:i64 + let s2 = y.snd(); // $ method=snd type=s2:i64 println!("{:?}, {:?}", s1, s2); } } diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index 7323d621e28..f42cd0f843f 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -9,8 +9,13 @@ inferType | main.rs:27:26:27:26 | x | | main.rs:5:5:8:5 | MyThing | | main.rs:27:26:27:28 | x.a | | main.rs:2:5:3:13 | S | | main.rs:30:29:30:29 | x | | main.rs:16:5:19:5 | GenericThing | +| main.rs:30:29:30:29 | x | A | {EXTERNAL LOCATION} | bool | +| main.rs:31:13:31:13 | a | | {EXTERNAL LOCATION} | bool | | main.rs:31:17:31:17 | x | | main.rs:16:5:19:5 | GenericThing | +| main.rs:31:17:31:17 | x | A | {EXTERNAL LOCATION} | bool | +| main.rs:31:17:31:19 | x.a | | {EXTERNAL LOCATION} | bool | | main.rs:32:18:32:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:32:26:32:26 | a | | {EXTERNAL LOCATION} | bool | | main.rs:37:13:37:13 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:37:13:37:13 | x | A | main.rs:2:5:3:13 | S | | main.rs:37:17:37:42 | GenericThing::<...> {...} | | main.rs:16:5:19:5 | GenericThing | @@ -583,17 +588,26 @@ inferType | main.rs:497:36:497:37 | s2 | | main.rs:493:41:493:49 | T2 | | main.rs:500:50:500:50 | x | | main.rs:500:41:500:47 | T | | main.rs:500:56:500:56 | y | | main.rs:500:41:500:47 | T | +| main.rs:502:13:502:14 | s1 | | {EXTERNAL LOCATION} | bool | | main.rs:502:18:502:18 | x | | main.rs:500:41:500:47 | T | +| main.rs:502:18:502:24 | x.fst() | | {EXTERNAL LOCATION} | bool | +| main.rs:503:13:503:14 | s2 | | {EXTERNAL LOCATION} | i64 | | main.rs:503:18:503:18 | y | | main.rs:500:41:500:47 | T | +| main.rs:503:18:503:24 | y.snd() | | {EXTERNAL LOCATION} | i64 | | main.rs:504:18:504:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:504:32:504:33 | s1 | | {EXTERNAL LOCATION} | bool | +| main.rs:504:36:504:37 | s2 | | {EXTERNAL LOCATION} | i64 | | main.rs:507:54:507:54 | x | | main.rs:507:41:507:51 | T | | main.rs:507:60:507:60 | y | | main.rs:507:41:507:51 | T | | main.rs:509:13:509:14 | s1 | | {EXTERNAL LOCATION} | u8 | | main.rs:509:18:509:18 | x | | main.rs:507:41:507:51 | T | | main.rs:509:18:509:24 | x.fst() | | {EXTERNAL LOCATION} | u8 | +| main.rs:510:13:510:14 | s2 | | {EXTERNAL LOCATION} | i64 | | main.rs:510:18:510:18 | y | | main.rs:507:41:507:51 | T | +| main.rs:510:18:510:24 | y.snd() | | {EXTERNAL LOCATION} | i64 | | main.rs:511:18:511:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:511:32:511:33 | s1 | | {EXTERNAL LOCATION} | u8 | +| main.rs:511:36:511:37 | s2 | | {EXTERNAL LOCATION} | i64 | | main.rs:527:15:527:18 | SelfParam | | main.rs:526:5:535:5 | Self [trait MyTrait] | | main.rs:529:15:529:18 | SelfParam | | main.rs:526:5:535:5 | Self [trait MyTrait] | | main.rs:532:9:534:9 | { ... } | | main.rs:526:19:526:19 | A | @@ -2541,6 +2555,7 @@ inferType | main.rs:1798:13:1798:38 | MyVec {...} | | main.rs:1791:5:1794:5 | MyVec | | main.rs:1798:13:1798:38 | MyVec {...} | T | main.rs:1796:10:1796:10 | T | | main.rs:1798:27:1798:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:1798:27:1798:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | | main.rs:1798:27:1798:36 | ...::new(...) | T | main.rs:1796:10:1796:10 | T | | main.rs:1801:17:1801:25 | SelfParam | | file://:0:0:0:0 | & | | main.rs:1801:17:1801:25 | SelfParam | &T | main.rs:1791:5:1794:5 | MyVec | @@ -2550,6 +2565,7 @@ inferType | main.rs:1802:13:1802:16 | self | &T | main.rs:1791:5:1794:5 | MyVec | | main.rs:1802:13:1802:16 | self | &T.T | main.rs:1796:10:1796:10 | T | | main.rs:1802:13:1802:21 | self.data | | {EXTERNAL LOCATION} | Vec | +| main.rs:1802:13:1802:21 | self.data | A | {EXTERNAL LOCATION} | Global | | main.rs:1802:13:1802:21 | self.data | T | main.rs:1796:10:1796:10 | T | | main.rs:1802:28:1802:32 | value | | main.rs:1796:10:1796:10 | T | | main.rs:1810:18:1810:22 | SelfParam | | file://:0:0:0:0 | & | @@ -2564,6 +2580,7 @@ inferType | main.rs:1811:14:1811:17 | self | &T | main.rs:1791:5:1794:5 | MyVec | | main.rs:1811:14:1811:17 | self | &T.T | main.rs:1806:10:1806:10 | T | | main.rs:1811:14:1811:22 | self.data | | {EXTERNAL LOCATION} | Vec | +| main.rs:1811:14:1811:22 | self.data | A | {EXTERNAL LOCATION} | Global | | main.rs:1811:14:1811:22 | self.data | T | main.rs:1806:10:1806:10 | T | | main.rs:1811:14:1811:29 | ...[index] | | main.rs:1806:10:1806:10 | T | | main.rs:1811:24:1811:28 | index | | {EXTERNAL LOCATION} | usize | From 5a107ec33b45788dbf70e4c383d30bd9e311cc47 Mon Sep 17 00:00:00 2001 From: Napalys Klicius Date: Mon, 16 Jun 2025 09:32:55 +0200 Subject: [PATCH 083/150] JS: track taint through `serialize-javascript` calls with object arguments --- .../semmle/javascript/JsonStringifiers.qll | 2 ++ .../ReflectedXss/ReflectedXss.expected | 34 +++++++++++++++++++ .../ReflectedXssWithCustomSanitizer.expected | 2 ++ .../Security/CWE-079/ReflectedXss/tst2.js | 8 ++--- 4 files changed, 42 insertions(+), 4 deletions(-) diff --git a/javascript/ql/lib/semmle/javascript/JsonStringifiers.qll b/javascript/ql/lib/semmle/javascript/JsonStringifiers.qll index f573c136437..bb1b23610c9 100644 --- a/javascript/ql/lib/semmle/javascript/JsonStringifiers.qll +++ b/javascript/ql/lib/semmle/javascript/JsonStringifiers.qll @@ -27,6 +27,8 @@ class JsonStringifyCall extends DataFlow::CallNode { ) or this = Templating::getAPipeCall(["json", "dump"]) + or + this = DataFlow::moduleImport("serialize-javascript").getACall() } /** diff --git a/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXss.expected b/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXss.expected index 09874ecef10..c1e626a688a 100644 --- a/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXss.expected +++ b/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXss.expected @@ -70,6 +70,8 @@ | tst2.js:76:12:76:18 | other.p | tst2.js:69:9:69:9 | p | tst2.js:76:12:76:18 | other.p | Cross-site scripting vulnerability due to a $@. | tst2.js:69:9:69:9 | p | user-provided value | | tst2.js:88:12:88:12 | p | tst2.js:82:9:82:9 | p | tst2.js:88:12:88:12 | p | Cross-site scripting vulnerability due to a $@. | tst2.js:82:9:82:9 | p | user-provided value | | tst2.js:89:12:89:18 | other.p | tst2.js:82:9:82:9 | p | tst2.js:89:12:89:18 | other.p | Cross-site scripting vulnerability due to a $@. | tst2.js:82:9:82:9 | p | user-provided value | +| tst2.js:101:12:101:17 | unsafe | tst2.js:93:9:93:9 | p | tst2.js:101:12:101:17 | unsafe | Cross-site scripting vulnerability due to a $@. | tst2.js:93:9:93:9 | p | user-provided value | +| tst2.js:113:12:113:17 | unsafe | tst2.js:105:9:105:9 | p | tst2.js:113:12:113:17 | unsafe | Cross-site scripting vulnerability due to a $@. | tst2.js:105:9:105:9 | p | user-provided value | | tst3.js:6:12:6:12 | p | tst3.js:5:9:5:9 | p | tst3.js:6:12:6:12 | p | Cross-site scripting vulnerability due to a $@. | tst3.js:5:9:5:9 | p | user-provided value | | tst3.js:12:12:12:15 | code | tst3.js:11:32:11:39 | reg.body | tst3.js:12:12:12:15 | code | Cross-site scripting vulnerability due to a $@. | tst3.js:11:32:11:39 | reg.body | user-provided value | edges @@ -239,6 +241,22 @@ edges | tst2.js:86:15:86:27 | sortKeys(obj) [p] | tst2.js:86:7:86:27 | other [p] | provenance | | | tst2.js:86:24:86:26 | obj [p] | tst2.js:86:15:86:27 | sortKeys(obj) [p] | provenance | | | tst2.js:89:12:89:16 | other [p] | tst2.js:89:12:89:18 | other.p | provenance | | +| tst2.js:93:7:93:24 | p | tst2.js:99:51:99:51 | p | provenance | | +| tst2.js:93:9:93:9 | p | tst2.js:93:7:93:24 | p | provenance | | +| tst2.js:99:7:99:69 | unsafe | tst2.js:101:12:101:17 | unsafe | provenance | | +| tst2.js:99:16:99:69 | seriali ... true}) | tst2.js:99:7:99:69 | unsafe | provenance | | +| tst2.js:99:36:99:52 | {someProperty: p} [someProperty] | tst2.js:99:16:99:69 | seriali ... true}) | provenance | | +| tst2.js:99:51:99:51 | p | tst2.js:99:16:99:69 | seriali ... true}) | provenance | | +| tst2.js:99:51:99:51 | p | tst2.js:99:36:99:52 | {someProperty: p} [someProperty] | provenance | | +| tst2.js:105:7:105:24 | p | tst2.js:110:28:110:28 | p | provenance | | +| tst2.js:105:9:105:9 | p | tst2.js:105:7:105:24 | p | provenance | | +| tst2.js:110:7:110:29 | obj [someProperty] | tst2.js:111:36:111:38 | obj [someProperty] | provenance | | +| tst2.js:110:13:110:29 | {someProperty: p} [someProperty] | tst2.js:110:7:110:29 | obj [someProperty] | provenance | | +| tst2.js:110:28:110:28 | p | tst2.js:110:13:110:29 | {someProperty: p} [someProperty] | provenance | | +| tst2.js:110:28:110:28 | p | tst2.js:111:16:111:55 | seriali ... true}) | provenance | | +| tst2.js:111:7:111:55 | unsafe | tst2.js:113:12:113:17 | unsafe | provenance | | +| tst2.js:111:16:111:55 | seriali ... true}) | tst2.js:111:7:111:55 | unsafe | provenance | | +| tst2.js:111:36:111:38 | obj [someProperty] | tst2.js:111:16:111:55 | seriali ... true}) | provenance | | | tst3.js:5:7:5:24 | p | tst3.js:6:12:6:12 | p | provenance | | | tst3.js:5:9:5:9 | p | tst3.js:5:7:5:24 | p | provenance | | | tst3.js:11:9:11:74 | code | tst3.js:12:12:12:15 | code | provenance | | @@ -457,6 +475,22 @@ nodes | tst2.js:88:12:88:12 | p | semmle.label | p | | tst2.js:89:12:89:16 | other [p] | semmle.label | other [p] | | tst2.js:89:12:89:18 | other.p | semmle.label | other.p | +| tst2.js:93:7:93:24 | p | semmle.label | p | +| tst2.js:93:9:93:9 | p | semmle.label | p | +| tst2.js:99:7:99:69 | unsafe | semmle.label | unsafe | +| tst2.js:99:16:99:69 | seriali ... true}) | semmle.label | seriali ... true}) | +| tst2.js:99:36:99:52 | {someProperty: p} [someProperty] | semmle.label | {someProperty: p} [someProperty] | +| tst2.js:99:51:99:51 | p | semmle.label | p | +| tst2.js:101:12:101:17 | unsafe | semmle.label | unsafe | +| tst2.js:105:7:105:24 | p | semmle.label | p | +| tst2.js:105:9:105:9 | p | semmle.label | p | +| tst2.js:110:7:110:29 | obj [someProperty] | semmle.label | obj [someProperty] | +| tst2.js:110:13:110:29 | {someProperty: p} [someProperty] | semmle.label | {someProperty: p} [someProperty] | +| tst2.js:110:28:110:28 | p | semmle.label | p | +| tst2.js:111:7:111:55 | unsafe | semmle.label | unsafe | +| tst2.js:111:16:111:55 | seriali ... true}) | semmle.label | seriali ... true}) | +| tst2.js:111:36:111:38 | obj [someProperty] | semmle.label | obj [someProperty] | +| tst2.js:113:12:113:17 | unsafe | semmle.label | unsafe | | tst3.js:5:7:5:24 | p | semmle.label | p | | tst3.js:5:9:5:9 | p | semmle.label | p | | tst3.js:6:12:6:12 | p | semmle.label | p | diff --git a/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXssWithCustomSanitizer.expected b/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXssWithCustomSanitizer.expected index b57d294c7a7..a4b02fa0749 100644 --- a/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXssWithCustomSanitizer.expected +++ b/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXssWithCustomSanitizer.expected @@ -68,5 +68,7 @@ | tst2.js:76:12:76:18 | other.p | Cross-site scripting vulnerability due to $@. | tst2.js:69:9:69:9 | p | user-provided value | | tst2.js:88:12:88:12 | p | Cross-site scripting vulnerability due to $@. | tst2.js:82:9:82:9 | p | user-provided value | | tst2.js:89:12:89:18 | other.p | Cross-site scripting vulnerability due to $@. | tst2.js:82:9:82:9 | p | user-provided value | +| tst2.js:101:12:101:17 | unsafe | Cross-site scripting vulnerability due to $@. | tst2.js:93:9:93:9 | p | user-provided value | +| tst2.js:113:12:113:17 | unsafe | Cross-site scripting vulnerability due to $@. | tst2.js:105:9:105:9 | p | user-provided value | | tst3.js:6:12:6:12 | p | Cross-site scripting vulnerability due to $@. | tst3.js:5:9:5:9 | p | user-provided value | | tst3.js:12:12:12:15 | code | Cross-site scripting vulnerability due to $@. | tst3.js:11:32:11:39 | reg.body | user-provided value | diff --git a/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/tst2.js b/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/tst2.js index 20149bea1e7..fff9c225097 100644 --- a/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/tst2.js +++ b/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/tst2.js @@ -90,7 +90,7 @@ app.get('/baz', function(req, res) { }); app.get('/baz', function(req, res) { - let { p } = req.params; // $ MISSING: Source + let { p } = req.params; // $ Source var serialized = serializeJavaScript(p); @@ -98,11 +98,11 @@ app.get('/baz', function(req, res) { var unsafe = serializeJavaScript({someProperty: p}, {unsafe: true}); - res.send(unsafe); // $ MISSING: Alert + res.send(unsafe); // $ Alert }); app.get('/baz', function(req, res) { - let { p } = req.params; // $ MISSING: Source + let { p } = req.params; // $ Source var serialized = serializeJavaScript(p); @@ -110,5 +110,5 @@ app.get('/baz', function(req, res) { let obj = {someProperty: p}; var unsafe = serializeJavaScript(obj, {unsafe: true}); - res.send(unsafe); // $ MISSING: Alert + res.send(unsafe); // $ Alert }); From fffbc0c0bc89f4973f46f6b18aee7471a2a954ab Mon Sep 17 00:00:00 2001 From: Napalys Klicius Date: Mon, 16 Jun 2025 09:34:31 +0200 Subject: [PATCH 084/150] JS: add change note --- javascript/ql/lib/change-notes/2025-06-16-serialize-js.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 javascript/ql/lib/change-notes/2025-06-16-serialize-js.md diff --git a/javascript/ql/lib/change-notes/2025-06-16-serialize-js.md b/javascript/ql/lib/change-notes/2025-06-16-serialize-js.md new file mode 100644 index 00000000000..e9afcfaf42f --- /dev/null +++ b/javascript/ql/lib/change-notes/2025-06-16-serialize-js.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Improved XSS detection for `serialize-javascript` calls with tainted object properties. From 55096a31f21f9dd9ec110d8b9b92ed7402203d82 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Mon, 16 Jun 2025 10:52:53 +0200 Subject: [PATCH 085/150] Rust: add `Cargo.lock` files to all tests with `cargo check` --- rust/ql/test/.gitignore | 1 - rust/ql/test/extractor-tests/File/Cargo.lock | 7 + .../extractor-tests/canonical_path/Cargo.lock | 7 + .../canonical_path_disabled/Cargo.lock | 7 + .../extractor-tests/crate_graph/.gitignore | 1 - .../test/extractor-tests/literal/Cargo.lock | 7 + .../macro_expansion/Cargo.lock | 55 + rust/ql/test/extractor-tests/utf8/Cargo.lock | 7 + .../test/library-tests/controlflow/Cargo.lock | 7 + .../library-tests/dataflow/barrier/Cargo.lock | 7 + .../dataflow/closures/Cargo.lock | 7 + .../library-tests/dataflow/global/Cargo.lock | 158 + .../library-tests/dataflow/local/Cargo.lock | 7 + .../library-tests/dataflow/modeled/Cargo.lock | 7 + .../library-tests/dataflow/models/Cargo.lock | 348 ++ .../dataflow/pointers/Cargo.lock | 7 + .../library-tests/dataflow/sources/Cargo.lock | 3052 +++++++++++++++++ .../library-tests/dataflow/strings/Cargo.lock | 7 + .../library-tests/dataflow/taint/Cargo.lock | 7 + .../test/library-tests/definitions/Cargo.lock | 7 + .../library-tests/formatstrings/Cargo.lock | 7 + .../frameworks/postgres/Cargo.lock | 882 +++++ .../frameworks/rusqlite/Cargo.lock | 110 + .../test/library-tests/operations/Cargo.lock | 7 + .../library-tests/path-resolution/Cargo.lock | 7 + .../library-tests/sensitivedata/Cargo.lock | 7 + .../library-tests/type-inference/Cargo.lock | 7 + .../test/library-tests/variables/Cargo.lock | 7 + .../query-tests/security/CWE-020/Cargo.lock | 54 + .../query-tests/security/CWE-022/Cargo.lock | 953 +++++ .../query-tests/security/CWE-089/Cargo.lock | 2859 +++++++++++++++ .../query-tests/security/CWE-311/Cargo.lock | 1520 ++++++++ .../query-tests/security/CWE-312/Cargo.lock | 324 ++ .../query-tests/security/CWE-327/Cargo.lock | 171 + .../query-tests/security/CWE-328/Cargo.lock | 317 ++ .../query-tests/security/CWE-696/Cargo.lock | 71 + .../query-tests/security/CWE-770/Cargo.lock | 16 + .../query-tests/security/CWE-825/Cargo.lock | 16 + .../query-tests/unusedentities/Cargo.lock | 7 + .../utils-tests/modelgenerator/Cargo.lock | 7 + rust/ql/test/utils/Cargo.lock | 7 + 41 files changed, 11067 insertions(+), 2 deletions(-) create mode 100644 rust/ql/test/extractor-tests/File/Cargo.lock create mode 100644 rust/ql/test/extractor-tests/canonical_path/Cargo.lock create mode 100644 rust/ql/test/extractor-tests/canonical_path_disabled/Cargo.lock delete mode 100644 rust/ql/test/extractor-tests/crate_graph/.gitignore create mode 100644 rust/ql/test/extractor-tests/literal/Cargo.lock create mode 100644 rust/ql/test/extractor-tests/macro_expansion/Cargo.lock create mode 100644 rust/ql/test/extractor-tests/utf8/Cargo.lock create mode 100644 rust/ql/test/library-tests/controlflow/Cargo.lock create mode 100644 rust/ql/test/library-tests/dataflow/barrier/Cargo.lock create mode 100644 rust/ql/test/library-tests/dataflow/closures/Cargo.lock create mode 100644 rust/ql/test/library-tests/dataflow/global/Cargo.lock create mode 100644 rust/ql/test/library-tests/dataflow/local/Cargo.lock create mode 100644 rust/ql/test/library-tests/dataflow/modeled/Cargo.lock create mode 100644 rust/ql/test/library-tests/dataflow/models/Cargo.lock create mode 100644 rust/ql/test/library-tests/dataflow/pointers/Cargo.lock create mode 100644 rust/ql/test/library-tests/dataflow/sources/Cargo.lock create mode 100644 rust/ql/test/library-tests/dataflow/strings/Cargo.lock create mode 100644 rust/ql/test/library-tests/dataflow/taint/Cargo.lock create mode 100644 rust/ql/test/library-tests/definitions/Cargo.lock create mode 100644 rust/ql/test/library-tests/formatstrings/Cargo.lock create mode 100644 rust/ql/test/library-tests/frameworks/postgres/Cargo.lock create mode 100644 rust/ql/test/library-tests/frameworks/rusqlite/Cargo.lock create mode 100644 rust/ql/test/library-tests/operations/Cargo.lock create mode 100644 rust/ql/test/library-tests/path-resolution/Cargo.lock create mode 100644 rust/ql/test/library-tests/sensitivedata/Cargo.lock create mode 100644 rust/ql/test/library-tests/type-inference/Cargo.lock create mode 100644 rust/ql/test/library-tests/variables/Cargo.lock create mode 100644 rust/ql/test/query-tests/security/CWE-020/Cargo.lock create mode 100644 rust/ql/test/query-tests/security/CWE-022/Cargo.lock create mode 100644 rust/ql/test/query-tests/security/CWE-089/Cargo.lock create mode 100644 rust/ql/test/query-tests/security/CWE-311/Cargo.lock create mode 100644 rust/ql/test/query-tests/security/CWE-312/Cargo.lock create mode 100644 rust/ql/test/query-tests/security/CWE-327/Cargo.lock create mode 100644 rust/ql/test/query-tests/security/CWE-328/Cargo.lock create mode 100644 rust/ql/test/query-tests/security/CWE-696/Cargo.lock create mode 100644 rust/ql/test/query-tests/security/CWE-770/Cargo.lock create mode 100644 rust/ql/test/query-tests/security/CWE-825/Cargo.lock create mode 100644 rust/ql/test/query-tests/unusedentities/Cargo.lock create mode 100644 rust/ql/test/utils-tests/modelgenerator/Cargo.lock create mode 100644 rust/ql/test/utils/Cargo.lock diff --git a/rust/ql/test/.gitignore b/rust/ql/test/.gitignore index 00e3af1fc0a..bbbb5decae2 100644 --- a/rust/ql/test/.gitignore +++ b/rust/ql/test/.gitignore @@ -1,4 +1,3 @@ Cargo.toml -Cargo.lock lib.rs target/ diff --git a/rust/ql/test/extractor-tests/File/Cargo.lock b/rust/ql/test/extractor-tests/File/Cargo.lock new file mode 100644 index 00000000000..b9856cfaf77 --- /dev/null +++ b/rust/ql/test/extractor-tests/File/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/canonical_path/Cargo.lock b/rust/ql/test/extractor-tests/canonical_path/Cargo.lock new file mode 100644 index 00000000000..b9856cfaf77 --- /dev/null +++ b/rust/ql/test/extractor-tests/canonical_path/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/canonical_path_disabled/Cargo.lock b/rust/ql/test/extractor-tests/canonical_path_disabled/Cargo.lock new file mode 100644 index 00000000000..b9856cfaf77 --- /dev/null +++ b/rust/ql/test/extractor-tests/canonical_path_disabled/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/crate_graph/.gitignore b/rust/ql/test/extractor-tests/crate_graph/.gitignore deleted file mode 100644 index 1a5314bd427..00000000000 --- a/rust/ql/test/extractor-tests/crate_graph/.gitignore +++ /dev/null @@ -1 +0,0 @@ -!/Cargo.lock diff --git a/rust/ql/test/extractor-tests/literal/Cargo.lock b/rust/ql/test/extractor-tests/literal/Cargo.lock new file mode 100644 index 00000000000..b9856cfaf77 --- /dev/null +++ b/rust/ql/test/extractor-tests/literal/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/extractor-tests/macro_expansion/Cargo.lock b/rust/ql/test/extractor-tests/macro_expansion/Cargo.lock new file mode 100644 index 00000000000..05d957e53f2 --- /dev/null +++ b/rust/ql/test/extractor-tests/macro_expansion/Cargo.lock @@ -0,0 +1,55 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "ctor" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "syn" +version = "2.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "ctor", +] + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" diff --git a/rust/ql/test/extractor-tests/utf8/Cargo.lock b/rust/ql/test/extractor-tests/utf8/Cargo.lock new file mode 100644 index 00000000000..b9856cfaf77 --- /dev/null +++ b/rust/ql/test/extractor-tests/utf8/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/controlflow/Cargo.lock b/rust/ql/test/library-tests/controlflow/Cargo.lock new file mode 100644 index 00000000000..b9856cfaf77 --- /dev/null +++ b/rust/ql/test/library-tests/controlflow/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/dataflow/barrier/Cargo.lock b/rust/ql/test/library-tests/dataflow/barrier/Cargo.lock new file mode 100644 index 00000000000..b9856cfaf77 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/barrier/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/dataflow/closures/Cargo.lock b/rust/ql/test/library-tests/dataflow/closures/Cargo.lock new file mode 100644 index 00000000000..b9856cfaf77 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/closures/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/dataflow/global/Cargo.lock b/rust/ql/test/library-tests/dataflow/global/Cargo.lock new file mode 100644 index 00000000000..bda8d89f17b --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/global/Cargo.lock @@ -0,0 +1,158 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "memchr" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "slab" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" + +[[package]] +name = "syn" +version = "2.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "futures", +] + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" diff --git a/rust/ql/test/library-tests/dataflow/local/Cargo.lock b/rust/ql/test/library-tests/dataflow/local/Cargo.lock new file mode 100644 index 00000000000..b9856cfaf77 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/local/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/dataflow/modeled/Cargo.lock b/rust/ql/test/library-tests/dataflow/modeled/Cargo.lock new file mode 100644 index 00000000000..b9856cfaf77 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/modeled/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/dataflow/models/Cargo.lock b/rust/ql/test/library-tests/dataflow/models/Cargo.lock new file mode 100644 index 00000000000..7fcff65a5e5 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/models/Cargo.lock @@ -0,0 +1,348 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "backtrace" +version = "0.3.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets", +] + +[[package]] +name = "bitflags" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "cfg-if" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "libc" +version = "0.2.173" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8cfeafaffdbc32176b64fb251369d52ea9f0a8fbc6f8759edffef7b525d64bb" + +[[package]] +name = "lock_api" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "memchr" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.59.0", +] + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[package]] +name = "parking_lot" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" +dependencies = [ + "bitflags", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "signal-hook-registry" +version = "1.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" +dependencies = [ + "libc", +] + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "syn" +version = "2.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "tokio", +] + +[[package]] +name = "tokio" +version = "1.45.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-macros" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" diff --git a/rust/ql/test/library-tests/dataflow/pointers/Cargo.lock b/rust/ql/test/library-tests/dataflow/pointers/Cargo.lock new file mode 100644 index 00000000000..b9856cfaf77 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/pointers/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/dataflow/sources/Cargo.lock b/rust/ql/test/library-tests/dataflow/sources/Cargo.lock new file mode 100644 index 00000000000..5bdbe2c0ebb --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/Cargo.lock @@ -0,0 +1,3052 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "actix-codec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f7b0a21988c1bf877cf4759ef5ddaac04c1c9fe808c9142ecb78ba97d97a28a" +dependencies = [ + "bitflags", + "bytes", + "futures-core", + "futures-sink", + "memchr", + "pin-project-lite", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "actix-http" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44dfe5c9e0004c623edc65391dfd51daa201e7e30ebd9c9bedf873048ec32bc2" +dependencies = [ + "actix-codec", + "actix-rt", + "actix-service", + "actix-utils", + "base64", + "bitflags", + "brotli", + "bytes", + "bytestring", + "derive_more", + "encoding_rs", + "flate2", + "foldhash", + "futures-core", + "h2 0.3.26", + "http 0.2.12", + "httparse", + "httpdate", + "itoa", + "language-tags", + "local-channel", + "mime", + "percent-encoding", + "pin-project-lite", + "rand", + "sha1", + "smallvec", + "tokio", + "tokio-util", + "tracing", + "zstd", +] + +[[package]] +name = "actix-macros" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "actix-router" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13d324164c51f63867b57e73ba5936ea151b8a41a1d23d1031eeb9f70d0236f8" +dependencies = [ + "bytestring", + "cfg-if", + "http 0.2.12", + "regex", + "regex-lite", + "serde", + "tracing", +] + +[[package]] +name = "actix-rt" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24eda4e2a6e042aa4e55ac438a2ae052d3b5da0ecf83d7411e1a368946925208" +dependencies = [ + "futures-core", + "tokio", +] + +[[package]] +name = "actix-server" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a65064ea4a457eaf07f2fba30b4c695bf43b721790e9530d26cb6f9019ff7502" +dependencies = [ + "actix-rt", + "actix-service", + "actix-utils", + "futures-core", + "futures-util", + "mio", + "socket2", + "tokio", + "tracing", +] + +[[package]] +name = "actix-service" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e46f36bf0e5af44bdc4bdb36fbbd421aa98c79a9bce724e1edeb3894e10dc7f" +dependencies = [ + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "actix-utils" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88a1dcdff1466e3c2488e1cb5c36a71822750ad43839937f85d2f4d9f8b705d8" +dependencies = [ + "local-waker", + "pin-project-lite", +] + +[[package]] +name = "actix-web" +version = "4.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a597b77b5c6d6a1e1097fddde329a83665e25c5437c696a3a9a4aa514a614dea" +dependencies = [ + "actix-codec", + "actix-http", + "actix-macros", + "actix-router", + "actix-rt", + "actix-server", + "actix-service", + "actix-utils", + "actix-web-codegen", + "bytes", + "bytestring", + "cfg-if", + "cookie", + "derive_more", + "encoding_rs", + "foldhash", + "futures-core", + "futures-util", + "impl-more", + "itoa", + "language-tags", + "log", + "mime", + "once_cell", + "pin-project-lite", + "regex", + "regex-lite", + "serde", + "serde_json", + "serde_urlencoded", + "smallvec", + "socket2", + "time", + "tracing", + "url", +] + +[[package]] +name = "actix-web-codegen" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f591380e2e68490b5dfaf1dd1aa0ebe78d84ba7067078512b4ea6e4492d622b8" +dependencies = [ + "actix-router", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "async-channel" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +dependencies = [ + "concurrent-queue", + "event-listener 2.5.3", + "futures-core", +] + +[[package]] +name = "async-channel" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb812ffb58524bdd10860d7d974e2f01cc0950c2438a74ee5ec2e2280c6c4ffa" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "pin-project-lite", + "slab", +] + +[[package]] +name = "async-global-executor" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" +dependencies = [ + "async-channel 2.3.1", + "async-executor", + "async-io", + "async-lock", + "blocking", + "futures-lite", + "once_cell", +] + +[[package]] +name = "async-io" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1237c0ae75a0f3765f58910ff9cdd0a12eeb39ab2f4c7de23262f337f0aacbb3" +dependencies = [ + "async-lock", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix 1.0.7", + "slab", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "async-lock" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" +dependencies = [ + "event-listener 5.4.0", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-std" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "730294c1c08c2e0f85759590518f6333f0d5a0a766a27d519c1b244c3dfd8a24" +dependencies = [ + "async-channel 1.9.0", + "async-global-executor", + "async-io", + "async-lock", + "crossbeam-utils", + "futures-channel", + "futures-core", + "futures-io", + "futures-lite", + "gloo-timers", + "kv-log-macro", + "log", + "memchr", + "once_cell", + "pin-project-lite", + "pin-utils", + "slab", + "wasm-bindgen-futures", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "aws-lc-rs" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fcc8f365936c834db5514fc45aee5b1202d677e6b40e48468aaaa8183ca8c7" +dependencies = [ + "aws-lc-sys", + "zeroize", +] + +[[package]] +name = "aws-lc-sys" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61b1d86e7705efe1be1b569bab41d4fa1e14e220b60a160f78de2db687add079" +dependencies = [ + "bindgen", + "cc", + "cmake", + "dunce", + "fs_extra", +] + +[[package]] +name = "axum" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "021e862c184ae977658b36c4500f7feac3221ca5da43e3f25bd04ab6c79a29b5" +dependencies = [ + "axum-core", + "bytes", + "form_urlencoded", + "futures-util", + "http 1.3.1", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-core" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68464cd0412f486726fb3373129ef5d2993f90c34bc2bc1c1e9943b2f4fc7ca6" +dependencies = [ + "bytes", + "futures-core", + "http 1.3.1", + "http-body", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "backtrace" +version = "0.3.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets 0.52.6", +] + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bindgen" +version = "0.69.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" +dependencies = [ + "bitflags", + "cexpr", + "clang-sys", + "itertools", + "lazy_static", + "lazycell", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", + "syn", + "which", +] + +[[package]] +name = "bitflags" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "blocking" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +dependencies = [ + "async-channel 2.3.1", + "async-task", + "futures-io", + "futures-lite", + "piper", +] + +[[package]] +name = "brotli" +version = "8.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9991eea70ea4f293524138648e41ee89b0b2b12ddef3b255effa43c8056e0e0d" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bumpalo" +version = "3.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db76d6187cd04dff33004d8e6c9cc4e05cd330500379d2394209271b4aeee" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "bytestring" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e465647ae23b2823b0753f50decb2d5a86d2bb2cac04788fafd1f80e45378e5f" +dependencies = [ + "bytes", +] + +[[package]] +name = "cc" +version = "1.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc" +dependencies = [ + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + +[[package]] +name = "cfg-if" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "cmake" +version = "0.1.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0" +dependencies = [ + "cc", +] + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "cookie" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb" +dependencies = [ + "percent-encoding", + "time", + "version_check", +] + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "deranged" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "unicode-xid", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "event-listener" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +dependencies = [ + "event-listener 5.4.0", + "pin-project-lite", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "flate2" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fs_extra" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-lite" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-rustls" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f2f12607f92c69b12ed746fabf9ca4f5c482cba46679c1a75b874ed7c26adb" +dependencies = [ + "futures-io", + "rustls", + "rustls-pki-types", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "glob" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" + +[[package]] +name = "gloo-timers" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "h2" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.12", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "h2" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.3.1", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" + +[[package]] +name = "headers" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3314d5adb5d94bcdf56771f2e50dbbc80bb4bdf88967526706205ac9eff24eb" +dependencies = [ + "base64", + "bytes", + "headers-core", + "http 1.3.1", + "httpdate", + "mime", + "sha1", +] + +[[package]] +name = "headers-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" +dependencies = [ + "http 1.3.1", +] + +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + +[[package]] +name = "home" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http 1.3.1", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http 1.3.1", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2 0.4.10", + "http 1.3.1", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" +dependencies = [ + "http 1.3.1", + "hyper", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb" +dependencies = [ + "base64", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http 1.3.1", + "http-body", + "hyper", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2", + "system-configuration", + "tokio", + "tower-service", + "tracing", + "windows-registry", +] + +[[package]] +name = "icu_collections" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" + +[[package]] +name = "icu_properties" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "potential_utf", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" + +[[package]] +name = "icu_provider" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +dependencies = [ + "displaydoc", + "icu_locale_core", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "idna" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "impl-more" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a5a9a0ff0086c7a148acb942baaabeadf9504d10400b5a05645853729b9cd2" + +[[package]] +name = "indexmap" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "jobserver" +version = "0.1.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" +dependencies = [ + "getrandom 0.3.3", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "kv-log-macro" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" +dependencies = [ + "log", +] + +[[package]] +name = "language-tags" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4345964bb142484797b161f473a503a434de77149dd8c7427788c6e13379388" + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + +[[package]] +name = "libc" +version = "0.2.173" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8cfeafaffdbc32176b64fb251369d52ea9f0a8fbc6f8759edffef7b525d64bb" + +[[package]] +name = "libloading" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" +dependencies = [ + "cfg-if", + "windows-targets 0.53.2", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + +[[package]] +name = "linux-raw-sys" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + +[[package]] +name = "litemap" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" + +[[package]] +name = "local-channel" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6cbc85e69b8df4b8bb8b89ec634e7189099cea8927a276b7384ce5488e53ec8" +dependencies = [ + "futures-core", + "futures-sink", + "local-waker", +] + +[[package]] +name = "local-waker" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d873d7c67ce09b42110d801813efbc9364414e356be9935700d368351657487" + +[[package]] +name = "lock_api" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +dependencies = [ + "value-bag", +] + +[[package]] +name = "matchit" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" + +[[package]] +name = "memchr" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +dependencies = [ + "libc", + "log", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", +] + +[[package]] +name = "native-tls" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "nix" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" +dependencies = [ + "bitflags", + "cfg-if", + "cfg_aliases", + "libc", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "openssl" +version = "0.10.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" +dependencies = [ + "bitflags", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "openssl-probe" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + +[[package]] +name = "openssl-sys" +version = "0.9.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[package]] +name = "parking_lot" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "piper" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "poem" +version = "3.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ea63e9302279b1ca262d15342760f8d08f04fb974d4997e8baed7d034b94121" +dependencies = [ + "bytes", + "futures-util", + "headers", + "http 1.3.1", + "http-body-util", + "hyper", + "hyper-util", + "mime", + "nix", + "parking_lot", + "percent-encoding", + "pin-project-lite", + "poem-derive", + "regex", + "rfc7239", + "serde", + "serde_json", + "serde_urlencoded", + "smallvec", + "sync_wrapper", + "thiserror", + "tokio", + "tokio-util", + "tracing", + "wildmatch", +] + +[[package]] +name = "poem-derive" +version = "3.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "824e7fe35343b7fe354e5d4ac444ddbe674676ebba4b4e48565835661033d338" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "polling" +version = "3.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b53a684391ad002dd6a596ceb6c74fd004fdce75f4be2e3f615068abbea5fd50" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix 1.0.7", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "potential_utf" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "prettyplease" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6837b9e10d61f45f987d50808f83d1ee3d206c66acf650c3e4ae2e1f6ddedf55" +dependencies = [ + "proc-macro2", + "syn", +] + +[[package]] +name = "proc-macro-crate" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" + +[[package]] +name = "rand" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" +dependencies = [ + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.3", +] + +[[package]] +name = "redox_syscall" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-lite" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53a49587ad06b26609c52e423de037e7f57f20d53535d66e08c695f347df952a" + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "reqwest" +version = "0.12.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eabf4c97d9130e2bf606614eb937e86edac8292eaa6f422f995d7e8de1eb1813" +dependencies = [ + "base64", + "bytes", + "encoding_rs", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.4.10", + "http 1.3.1", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-tls", + "hyper-util", + "js-sys", + "log", + "mime", + "native-tls", + "percent-encoding", + "pin-project-lite", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-native-tls", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "rfc7239" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a82f1d1e38e9a85bb58ffcfadf22ed6f2c94e8cd8581ec2b0f80a2a6858350f" +dependencies = [ + "uncased", +] + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.16", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustix" +version = "0.38.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustix" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys 0.9.4", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustls" +version = "0.23.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "730944ca083c1c233a75c09f199e973ca499344a2b7ba9e755c457e86fb4a321" +dependencies = [ + "aws-lc-rs", + "log", + "once_cell", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pki-types" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +dependencies = [ + "zeroize", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" +dependencies = [ + "aws-lc-rs", + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "schannel" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a" +dependencies = [ + "itoa", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" +dependencies = [ + "libc", +] + +[[package]] +name = "slab" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "2.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "system-configuration" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tempfile" +version = "3.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +dependencies = [ + "fastrand", + "getrandom 0.3.3", + "once_cell", + "rustix 1.0.7", + "windows-sys 0.59.0", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "actix-web", + "async-std", + "axum", + "bytes", + "futures", + "futures-rustls", + "http 1.3.1", + "http-body-util", + "hyper", + "hyper-util", + "poem", + "reqwest", + "rustls", + "serde", + "serde_json", + "tokio", +] + +[[package]] +name = "thiserror" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "time" +version = "0.3.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" + +[[package]] +name = "time-macros" +version = "0.2.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinystr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tokio" +version = "1.45.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-macros" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml_datetime" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" + +[[package]] +name = "toml_edit" +version = "0.22.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-http" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +dependencies = [ + "bitflags", + "bytes", + "futures-util", + "http 1.3.1", + "http-body", + "iri-string", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1ffbcf9c6f6b99d386e7444eb608ba646ae452a36b39737deb9663b610f662" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "uncased" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1b88fcfe09e89d3866a5c11019378088af2d24c3fbd4f0543f96b479ec90697" +dependencies = [ + "version_check", +] + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "value-bag" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "943ce29a8a743eb10d6082545d861b24f9d1b160b7d741e0f2cdf726bec909c5" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "web-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "which" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +dependencies = [ + "either", + "home", + "once_cell", + "rustix 0.38.44", +] + +[[package]] +name = "wildmatch" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68ce1ab1f8c62655ebe1350f589c61e505cf94d385bc6a12899442d9081e71fd" + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-registry" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3bab093bdd303a1240bb99b8aba8ea8a69ee19d34c9e2ef9594e708a4878820" +dependencies = [ + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" +dependencies = [ + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + +[[package]] +name = "winnow" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd" +dependencies = [ + "memchr", +] + +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags", +] + +[[package]] +name = "writeable" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" + +[[package]] +name = "yoke" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" + +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zstd" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "7.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.15+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/rust/ql/test/library-tests/dataflow/strings/Cargo.lock b/rust/ql/test/library-tests/dataflow/strings/Cargo.lock new file mode 100644 index 00000000000..b9856cfaf77 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/strings/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/dataflow/taint/Cargo.lock b/rust/ql/test/library-tests/dataflow/taint/Cargo.lock new file mode 100644 index 00000000000..b9856cfaf77 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/taint/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/definitions/Cargo.lock b/rust/ql/test/library-tests/definitions/Cargo.lock new file mode 100644 index 00000000000..b9856cfaf77 --- /dev/null +++ b/rust/ql/test/library-tests/definitions/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/formatstrings/Cargo.lock b/rust/ql/test/library-tests/formatstrings/Cargo.lock new file mode 100644 index 00000000000..b9856cfaf77 --- /dev/null +++ b/rust/ql/test/library-tests/formatstrings/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/frameworks/postgres/Cargo.lock b/rust/ql/test/library-tests/frameworks/postgres/Cargo.lock new file mode 100644 index 00000000000..2dce9e08cc9 --- /dev/null +++ b/rust/ql/test/library-tests/frameworks/postgres/Cargo.lock @@ -0,0 +1,882 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "async-trait" +version = "0.1.88" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "backtrace" +version = "0.3.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets", +] + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bitflags" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bumpalo" +version = "3.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db76d6187cd04dff33004d8e6c9cc4e05cd330500379d2394209271b4aeee" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "cfg-if" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", + "subtle", +] + +[[package]] +name = "fallible-iterator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-core", + "futures-macro", + "futures-sink", + "futures-task", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "libc" +version = "0.2.173" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8cfeafaffdbc32176b64fb251369d52ea9f0a8fbc6f8759edffef7b525d64bb" + +[[package]] +name = "lock_api" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" + +[[package]] +name = "md-5" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +dependencies = [ + "cfg-if", + "digest", +] + +[[package]] +name = "memchr" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +dependencies = [ + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", +] + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "parking_lot" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "phf" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" +dependencies = [ + "phf_shared", +] + +[[package]] +name = "phf_shared" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "postgres" +version = "0.19.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "363e6dfbdd780d3aa3597b6eb430db76bb315fa9bad7fae595bb8def808b8470" +dependencies = [ + "bytes", + "fallible-iterator", + "futures-util", + "log", + "tokio", + "tokio-postgres", +] + +[[package]] +name = "postgres-protocol" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76ff0abab4a9b844b93ef7b81f1efc0a366062aaef2cd702c76256b5dc075c54" +dependencies = [ + "base64", + "byteorder", + "bytes", + "fallible-iterator", + "hmac", + "md-5", + "memchr", + "rand", + "sha2", + "stringprep", +] + +[[package]] +name = "postgres-types" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613283563cd90e1dfc3518d548caee47e0e725455ed619881f5cf21f36de4b48" +dependencies = [ + "bytes", + "fallible-iterator", + "postgres-protocol", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" + +[[package]] +name = "rand" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" +dependencies = [ + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom", +] + +[[package]] +name = "redox_syscall" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" +dependencies = [ + "bitflags", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "siphasher" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" + +[[package]] +name = "slab" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "stringprep" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b4df3d392d81bd458a8a621b8bffbd2302a12ffe288a9d931670948749463b1" +dependencies = [ + "unicode-bidi", + "unicode-normalization", + "unicode-properties", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "2.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "postgres", +] + +[[package]] +name = "tinyvec" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.45.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "pin-project-lite", + "socket2", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-postgres" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c95d533c83082bb6490e0189acaa0bbeef9084e60471b696ca6988cd0541fb0" +dependencies = [ + "async-trait", + "byteorder", + "bytes", + "fallible-iterator", + "futures-channel", + "futures-util", + "log", + "parking_lot", + "percent-encoding", + "phf", + "pin-project-lite", + "postgres-protocol", + "postgres-types", + "rand", + "socket2", + "tokio", + "tokio-util", + "whoami", +] + +[[package]] +name = "tokio-util" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "unicode-bidi" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "unicode-normalization" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-properties" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + +[[package]] +name = "wasite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" + +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "web-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "whoami" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6994d13118ab492c3c80c1f81928718159254c53c472bf9ce36f8dae4add02a7" +dependencies = [ + "redox_syscall", + "wasite", + "web-sys", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags", +] + +[[package]] +name = "zerocopy" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff --git a/rust/ql/test/library-tests/frameworks/rusqlite/Cargo.lock b/rust/ql/test/library-tests/frameworks/rusqlite/Cargo.lock new file mode 100644 index 00000000000..045485bfb7b --- /dev/null +++ b/rust/ql/test/library-tests/frameworks/rusqlite/Cargo.lock @@ -0,0 +1,110 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "bitflags" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" + +[[package]] +name = "cc" +version = "1.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc" +dependencies = [ + "shlex", +] + +[[package]] +name = "fallible-iterator" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" + +[[package]] +name = "fallible-streaming-iterator" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "hashbrown" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" +dependencies = [ + "foldhash", +] + +[[package]] +name = "hashlink" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +dependencies = [ + "hashbrown", +] + +[[package]] +name = "libsqlite3-sys" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad8935b44e7c13394a179a438e0cebba0fe08fe01b54f152e29a93b5cf993fd4" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "rusqlite" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c6d5e5acb6f6129fe3f7ba0a7fc77bca1942cb568535e18e7bc40262baf3110" +dependencies = [ + "bitflags", + "fallible-iterator", + "fallible-streaming-iterator", + "hashlink", + "libsqlite3-sys", + "smallvec", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "rusqlite", +] + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" diff --git a/rust/ql/test/library-tests/operations/Cargo.lock b/rust/ql/test/library-tests/operations/Cargo.lock new file mode 100644 index 00000000000..b9856cfaf77 --- /dev/null +++ b/rust/ql/test/library-tests/operations/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/path-resolution/Cargo.lock b/rust/ql/test/library-tests/path-resolution/Cargo.lock new file mode 100644 index 00000000000..b9856cfaf77 --- /dev/null +++ b/rust/ql/test/library-tests/path-resolution/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/sensitivedata/Cargo.lock b/rust/ql/test/library-tests/sensitivedata/Cargo.lock new file mode 100644 index 00000000000..b9856cfaf77 --- /dev/null +++ b/rust/ql/test/library-tests/sensitivedata/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/type-inference/Cargo.lock b/rust/ql/test/library-tests/type-inference/Cargo.lock new file mode 100644 index 00000000000..b9856cfaf77 --- /dev/null +++ b/rust/ql/test/library-tests/type-inference/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/variables/Cargo.lock b/rust/ql/test/library-tests/variables/Cargo.lock new file mode 100644 index 00000000000..b9856cfaf77 --- /dev/null +++ b/rust/ql/test/library-tests/variables/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/query-tests/security/CWE-020/Cargo.lock b/rust/ql/test/query-tests/security/CWE-020/Cargo.lock new file mode 100644 index 00000000000..a306f237d46 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-020/Cargo.lock @@ -0,0 +1,54 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "memchr" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "regex", +] diff --git a/rust/ql/test/query-tests/security/CWE-022/Cargo.lock b/rust/ql/test/query-tests/security/CWE-022/Cargo.lock new file mode 100644 index 00000000000..29fb6823657 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-022/Cargo.lock @@ -0,0 +1,953 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "backtrace" +version = "0.3.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets", +] + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bitflags" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "cfg-if" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-core", + "futures-macro", + "futures-sink", + "futures-task", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "h2" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" + +[[package]] +name = "headers" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3314d5adb5d94bcdf56771f2e50dbbc80bb4bdf88967526706205ac9eff24eb" +dependencies = [ + "base64", + "bytes", + "headers-core", + "http", + "httpdate", + "mime", + "sha1", +] + +[[package]] +name = "headers-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" +dependencies = [ + "http", +] + +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", +] + +[[package]] +name = "hyper-util" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "hyper", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "indexmap" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "libc" +version = "0.2.173" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8cfeafaffdbc32176b64fb251369d52ea9f0a8fbc6f8759edffef7b525d64bb" + +[[package]] +name = "lock_api" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "memchr" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.59.0", +] + +[[package]] +name = "nix" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" +dependencies = [ + "bitflags", + "cfg-if", + "cfg_aliases", + "libc", +] + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "parking_lot" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "poem" +version = "3.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ea63e9302279b1ca262d15342760f8d08f04fb974d4997e8baed7d034b94121" +dependencies = [ + "bytes", + "futures-util", + "headers", + "http", + "http-body-util", + "hyper", + "hyper-util", + "mime", + "nix", + "parking_lot", + "percent-encoding", + "pin-project-lite", + "poem-derive", + "regex", + "rfc7239", + "serde", + "serde_json", + "serde_urlencoded", + "smallvec", + "sync_wrapper", + "thiserror", + "tokio", + "tokio-util", + "tracing", + "wildmatch", +] + +[[package]] +name = "poem-derive" +version = "3.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "824e7fe35343b7fe354e5d4ac444ddbe674676ebba4b4e48565835661033d338" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "proc-macro-crate" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "rfc7239" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a82f1d1e38e9a85bb58ffcfadf22ed6f2c94e8cd8581ec2b0f80a2a6858350f" +dependencies = [ + "uncased", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "slab" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "syn" +version = "2.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "poem", +] + +[[package]] +name = "thiserror" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio" +version = "1.45.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "pin-project-lite", + "socket2", + "tokio-macros", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-macros" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio-util" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml_datetime" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" + +[[package]] +name = "toml_edit" +version = "0.22.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1ffbcf9c6f6b99d386e7444eb608ba646ae452a36b39737deb9663b610f662" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", +] + +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "uncased" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1b88fcfe09e89d3866a5c11019378088af2d24c3fbd4f0543f96b479ec90697" +dependencies = [ + "version_check", +] + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wildmatch" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68ce1ab1f8c62655ebe1350f589c61e505cf94d385bc6a12899442d9081e71fd" + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winnow" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd" +dependencies = [ + "memchr", +] diff --git a/rust/ql/test/query-tests/security/CWE-089/Cargo.lock b/rust/ql/test/query-tests/security/CWE-089/Cargo.lock new file mode 100644 index 00000000000..174703eacd2 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-089/Cargo.lock @@ -0,0 +1,2859 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "async-channel" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +dependencies = [ + "concurrent-queue", + "event-listener 2.5.3", + "futures-core", +] + +[[package]] +name = "async-channel" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb812ffb58524bdd10860d7d974e2f01cc0950c2438a74ee5ec2e2280c6c4ffa" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand 2.3.0", + "futures-lite 2.6.0", + "pin-project-lite", + "slab", +] + +[[package]] +name = "async-global-executor" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" +dependencies = [ + "async-channel 2.3.1", + "async-executor", + "async-io 2.4.1", + "async-lock 3.4.0", + "blocking", + "futures-lite 2.6.0", + "once_cell", +] + +[[package]] +name = "async-io" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" +dependencies = [ + "async-lock 2.8.0", + "autocfg", + "cfg-if", + "concurrent-queue", + "futures-lite 1.13.0", + "log", + "parking", + "polling 2.8.0", + "rustix 0.37.28", + "slab", + "socket2 0.4.10", + "waker-fn", +] + +[[package]] +name = "async-io" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1237c0ae75a0f3765f58910ff9cdd0a12eeb39ab2f4c7de23262f337f0aacbb3" +dependencies = [ + "async-lock 3.4.0", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite 2.6.0", + "parking", + "polling 3.8.0", + "rustix 1.0.7", + "slab", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "async-lock" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" +dependencies = [ + "event-listener 2.5.3", +] + +[[package]] +name = "async-lock" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" +dependencies = [ + "event-listener 5.4.0", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-std" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "730294c1c08c2e0f85759590518f6333f0d5a0a766a27d519c1b244c3dfd8a24" +dependencies = [ + "async-channel 1.9.0", + "async-global-executor", + "async-io 2.4.1", + "async-lock 3.4.0", + "crossbeam-utils", + "futures-channel", + "futures-core", + "futures-io", + "futures-lite 2.6.0", + "gloo-timers", + "kv-log-macro", + "log", + "memchr", + "once_cell", + "pin-project-lite", + "pin-utils", + "slab", + "wasm-bindgen-futures", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + +[[package]] +name = "atoi" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" +dependencies = [ + "num-traits", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "backtrace" +version = "0.3.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets 0.52.6", +] + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64ct" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" +dependencies = [ + "serde", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "blocking" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +dependencies = [ + "async-channel 2.3.1", + "async-task", + "futures-io", + "futures-lite 2.6.0", + "piper", +] + +[[package]] +name = "bumpalo" +version = "3.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db76d6187cd04dff33004d8e6c9cc4e05cd330500379d2394209271b4aeee" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "cc" +version = "1.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc" +dependencies = [ + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9710d3b3739c2e349eb44fe848ad0b7c8cb1e42bd87ee49371df2f7acaf3e675" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" + +[[package]] +name = "crossbeam-queue" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "const-oid", + "pem-rfc7468", + "zeroize", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "dotenvy" +version = "0.15.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +dependencies = [ + "serde", +] + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "etcetera" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943" +dependencies = [ + "cfg-if", + "home", + "windows-sys 0.48.0", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "event-listener" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +dependencies = [ + "event-listener 5.4.0", + "pin-project-lite", +] + +[[package]] +name = "fastrand" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +dependencies = [ + "instant", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "flume" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" +dependencies = [ + "futures-core", + "futures-sink", + "spin", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-intrusive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" +dependencies = [ + "futures-core", + "lock_api", + "parking_lot", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-lite" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" +dependencies = [ + "fastrand 1.9.0", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite", + "waker-fn", +] + +[[package]] +name = "futures-lite" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" +dependencies = [ + "fastrand 2.3.0", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "gloo-timers" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "h2" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", +] + +[[package]] +name = "hashlink" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +dependencies = [ + "hashbrown", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hkdf" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +dependencies = [ + "hmac", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + +[[package]] +name = "home" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "hyper" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" +dependencies = [ + "http", + "hyper", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb" +dependencies = [ + "base64", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http", + "http-body", + "hyper", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2 0.5.10", + "system-configuration", + "tokio", + "tower-service", + "tracing", + "windows-registry", +] + +[[package]] +name = "icu_collections" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" + +[[package]] +name = "icu_properties" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "potential_utf", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" + +[[package]] +name = "icu_provider" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +dependencies = [ + "displaydoc", + "icu_locale_core", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "idna" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "indexmap" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "io-lifetimes" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" +dependencies = [ + "hermit-abi 0.3.9", + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "kv-log-macro" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" +dependencies = [ + "log", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin", +] + +[[package]] +name = "libc" +version = "0.2.173" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8cfeafaffdbc32176b64fb251369d52ea9f0a8fbc6f8759edffef7b525d64bb" + +[[package]] +name = "libm" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" + +[[package]] +name = "libsqlite3-sys" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linux-raw-sys" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" + +[[package]] +name = "linux-raw-sys" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + +[[package]] +name = "litemap" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" + +[[package]] +name = "lock_api" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +dependencies = [ + "value-bag", +] + +[[package]] +name = "md-5" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +dependencies = [ + "cfg-if", + "digest", +] + +[[package]] +name = "memchr" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +dependencies = [ + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", +] + +[[package]] +name = "native-tls" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "num-bigint-dig" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" +dependencies = [ + "byteorder", + "lazy_static", + "libm", + "num-integer", + "num-iter", + "num-traits", + "rand", + "smallvec", + "zeroize", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "openssl" +version = "0.10.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" +dependencies = [ + "bitflags 2.9.1", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "openssl-probe" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + +[[package]] +name = "openssl-sys" +version = "0.9.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[package]] +name = "parking_lot" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "piper" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +dependencies = [ + "atomic-waker", + "fastrand 2.3.0", + "futures-io", +] + +[[package]] +name = "pkcs1" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" +dependencies = [ + "der", + "pkcs8", + "spki", +] + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "polling" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" +dependencies = [ + "autocfg", + "bitflags 1.3.2", + "cfg-if", + "concurrent-queue", + "libc", + "log", + "pin-project-lite", + "windows-sys 0.48.0", +] + +[[package]] +name = "polling" +version = "3.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b53a684391ad002dd6a596ceb6c74fd004fdce75f4be2e3f615068abbea5fd50" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi 0.5.2", + "pin-project-lite", + "rustix 1.0.7", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "potential_utf" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +dependencies = [ + "zerovec", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.16", +] + +[[package]] +name = "redox_syscall" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" +dependencies = [ + "bitflags 2.9.1", +] + +[[package]] +name = "reqwest" +version = "0.12.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eabf4c97d9130e2bf606614eb937e86edac8292eaa6f422f995d7e8de1eb1813" +dependencies = [ + "base64", + "bytes", + "encoding_rs", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-tls", + "hyper-util", + "js-sys", + "log", + "mime", + "native-tls", + "percent-encoding", + "pin-project-lite", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-native-tls", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.16", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rsa" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78928ac1ed176a5ca1d17e578a1825f3d81ca54cf41053a592584b020cfd691b" +dependencies = [ + "const-oid", + "digest", + "num-bigint-dig", + "num-integer", + "num-traits", + "pkcs1", + "pkcs8", + "rand_core", + "signature", + "spki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" + +[[package]] +name = "rustix" +version = "0.37.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "519165d378b97752ca44bbe15047d5d3409e875f39327546b42ac81d7e18c1b6" +dependencies = [ + "bitflags 1.3.2", + "errno", + "io-lifetimes", + "libc", + "linux-raw-sys 0.3.8", + "windows-sys 0.48.0", +] + +[[package]] +name = "rustix" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" +dependencies = [ + "bitflags 2.9.1", + "errno", + "libc", + "linux-raw-sys 0.9.4", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustls" +version = "0.23.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "730944ca083c1c233a75c09f199e973ca499344a2b7ba9e755c457e86fb4a321" +dependencies = [ + "once_cell", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pki-types" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +dependencies = [ + "zeroize", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "schannel" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.9.1", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest", + "rand_core", +] + +[[package]] +name = "slab" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +dependencies = [ + "serde", +] + +[[package]] +name = "socket2" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "sqlx" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fefb893899429669dcdd979aff487bd78f4064e5e7907e4269081e0ef7d97dc" +dependencies = [ + "sqlx-core", + "sqlx-macros", + "sqlx-mysql", + "sqlx-postgres", + "sqlx-sqlite", +] + +[[package]] +name = "sqlx-core" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee6798b1838b6a0f69c007c133b8df5866302197e404e8b6ee8ed3e3a5e68dc6" +dependencies = [ + "async-io 1.13.0", + "async-std", + "base64", + "bytes", + "crc", + "crossbeam-queue", + "either", + "event-listener 5.4.0", + "futures-core", + "futures-intrusive", + "futures-io", + "futures-util", + "hashbrown", + "hashlink", + "indexmap", + "log", + "memchr", + "native-tls", + "once_cell", + "percent-encoding", + "serde", + "serde_json", + "sha2", + "smallvec", + "thiserror", + "tracing", + "url", +] + +[[package]] +name = "sqlx-macros" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2d452988ccaacfbf5e0bdbc348fb91d7c8af5bee192173ac3636b5fb6e6715d" +dependencies = [ + "proc-macro2", + "quote", + "sqlx-core", + "sqlx-macros-core", + "syn", +] + +[[package]] +name = "sqlx-macros-core" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19a9c1841124ac5a61741f96e1d9e2ec77424bf323962dd894bdb93f37d5219b" +dependencies = [ + "async-std", + "dotenvy", + "either", + "heck", + "hex", + "once_cell", + "proc-macro2", + "quote", + "serde", + "serde_json", + "sha2", + "sqlx-core", + "sqlx-mysql", + "sqlx-postgres", + "sqlx-sqlite", + "syn", + "url", +] + +[[package]] +name = "sqlx-mysql" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa003f0038df784eb8fecbbac13affe3da23b45194bd57dba231c8f48199c526" +dependencies = [ + "atoi", + "base64", + "bitflags 2.9.1", + "byteorder", + "bytes", + "crc", + "digest", + "dotenvy", + "either", + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "generic-array", + "hex", + "hkdf", + "hmac", + "itoa", + "log", + "md-5", + "memchr", + "once_cell", + "percent-encoding", + "rand", + "rsa", + "serde", + "sha1", + "sha2", + "smallvec", + "sqlx-core", + "stringprep", + "thiserror", + "tracing", + "whoami", +] + +[[package]] +name = "sqlx-postgres" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db58fcd5a53cf07c184b154801ff91347e4c30d17a3562a635ff028ad5deda46" +dependencies = [ + "atoi", + "base64", + "bitflags 2.9.1", + "byteorder", + "crc", + "dotenvy", + "etcetera", + "futures-channel", + "futures-core", + "futures-util", + "hex", + "hkdf", + "hmac", + "home", + "itoa", + "log", + "md-5", + "memchr", + "once_cell", + "rand", + "serde", + "serde_json", + "sha2", + "smallvec", + "sqlx-core", + "stringprep", + "thiserror", + "tracing", + "whoami", +] + +[[package]] +name = "sqlx-sqlite" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2d12fe70b2c1b4401038055f90f151b78208de1f9f89a7dbfd41587a10c3eea" +dependencies = [ + "atoi", + "flume", + "futures-channel", + "futures-core", + "futures-executor", + "futures-intrusive", + "futures-util", + "libsqlite3-sys", + "log", + "percent-encoding", + "serde", + "serde_urlencoded", + "sqlx-core", + "thiserror", + "tracing", + "url", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "stringprep" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b4df3d392d81bd458a8a621b8bffbd2302a12ffe288a9d931670948749463b1" +dependencies = [ + "unicode-bidi", + "unicode-normalization", + "unicode-properties", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "2.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "system-configuration" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags 2.9.1", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tempfile" +version = "3.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +dependencies = [ + "fastrand 2.3.0", + "getrandom 0.3.3", + "once_cell", + "rustix 1.0.7", + "windows-sys 0.59.0", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "futures", + "reqwest", + "sqlx", +] + +[[package]] +name = "thiserror" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tinystr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.45.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "pin-project-lite", + "socket2 0.5.10", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +dependencies = [ + "bitflags 2.9.1", + "bytes", + "futures-util", + "http", + "http-body", + "iri-string", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1ffbcf9c6f6b99d386e7444eb608ba646ae452a36b39737deb9663b610f662" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "unicode-bidi" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "unicode-normalization" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-properties" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "value-bag" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "943ce29a8a743eb10d6082545d861b24f9d1b160b7d741e0f2cdf726bec909c5" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "waker-fn" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7" + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + +[[package]] +name = "wasite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" + +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "web-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "whoami" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6994d13118ab492c3c80c1f81928718159254c53c472bf9ce36f8dae4add02a7" +dependencies = [ + "redox_syscall", + "wasite", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-registry" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3bab093bdd303a1240bb99b8aba8ea8a69ee19d34c9e2ef9594e708a4878820" +dependencies = [ + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags 2.9.1", +] + +[[package]] +name = "writeable" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" + +[[package]] +name = "yoke" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" + +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff --git a/rust/ql/test/query-tests/security/CWE-311/Cargo.lock b/rust/ql/test/query-tests/security/CWE-311/Cargo.lock new file mode 100644 index 00000000000..e61f5e8ca91 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-311/Cargo.lock @@ -0,0 +1,1520 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "backtrace" +version = "0.3.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets", +] + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bitflags" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" + +[[package]] +name = "bumpalo" +version = "3.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db76d6187cd04dff33004d8e6c9cc4e05cd330500379d2394209271b4aeee" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "cc" +version = "1.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc" +dependencies = [ + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-core", + "futures-io", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "h2" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" + +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "hyper" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" +dependencies = [ + "http", + "hyper", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb" +dependencies = [ + "base64", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http", + "http-body", + "hyper", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2", + "system-configuration", + "tokio", + "tower-service", + "tracing", + "windows-registry", +] + +[[package]] +name = "icu_collections" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" + +[[package]] +name = "icu_properties" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "potential_utf", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" + +[[package]] +name = "icu_provider" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +dependencies = [ + "displaydoc", + "icu_locale_core", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "idna" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "indexmap" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "libc" +version = "0.2.173" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8cfeafaffdbc32176b64fb251369d52ea9f0a8fbc6f8759edffef7b525d64bb" + +[[package]] +name = "linux-raw-sys" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + +[[package]] +name = "litemap" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" + +[[package]] +name = "log" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" + +[[package]] +name = "memchr" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +dependencies = [ + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", +] + +[[package]] +name = "native-tls" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "openssl" +version = "0.10.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" +dependencies = [ + "bitflags", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "openssl-probe" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + +[[package]] +name = "openssl-sys" +version = "0.9.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "potential_utf" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +dependencies = [ + "zerovec", +] + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" + +[[package]] +name = "reqwest" +version = "0.12.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eabf4c97d9130e2bf606614eb937e86edac8292eaa6f422f995d7e8de1eb1813" +dependencies = [ + "base64", + "bytes", + "encoding_rs", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-tls", + "hyper-util", + "js-sys", + "log", + "mime", + "native-tls", + "percent-encoding", + "pin-project-lite", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-native-tls", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.16", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" + +[[package]] +name = "rustix" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustls" +version = "0.23.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "730944ca083c1c233a75c09f199e973ca499344a2b7ba9e755c457e86fb4a321" +dependencies = [ + "once_cell", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pki-types" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +dependencies = [ + "zeroize", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "schannel" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "slab" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "2.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "system-configuration" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tempfile" +version = "3.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +dependencies = [ + "fastrand", + "getrandom 0.3.3", + "once_cell", + "rustix", + "windows-sys 0.59.0", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "http", + "reqwest", + "url", +] + +[[package]] +name = "tinystr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tokio" +version = "1.45.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "pin-project-lite", + "socket2", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +dependencies = [ + "bitflags", + "bytes", + "futures-util", + "http", + "http-body", + "iri-string", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "web-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-registry" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3bab093bdd303a1240bb99b8aba8ea8a69ee19d34c9e2ef9594e708a4878820" +dependencies = [ + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags", +] + +[[package]] +name = "writeable" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" + +[[package]] +name = "yoke" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" + +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff --git a/rust/ql/test/query-tests/security/CWE-312/Cargo.lock b/rust/ql/test/query-tests/security/CWE-312/Cargo.lock new file mode 100644 index 00000000000..66f3d9acd92 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-312/Cargo.lock @@ -0,0 +1,324 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "colored" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c" +dependencies = [ + "lazy_static", + "windows-sys 0.59.0", +] + +[[package]] +name = "deranged" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libc" +version = "0.2.173" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8cfeafaffdbc32176b64fb251369d52ea9f0a8fbc6f8759edffef7b525d64bb" + +[[package]] +name = "log" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" + +[[package]] +name = "log_err" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2829e80508da18227e53a791bbe19018306f3f400bba439bc9959e9faa860f7" +dependencies = [ + "log", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num_threads" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" +dependencies = [ + "libc", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "simple_logger" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8c5dfa5e08767553704aa0ffd9d9794d527103c736aba9854773851fd7497eb" +dependencies = [ + "colored", + "log", + "time", + "windows-sys 0.48.0", +] + +[[package]] +name = "syn" +version = "2.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "log", + "log_err", + "simple_logger", +] + +[[package]] +name = "time" +version = "0.3.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +dependencies = [ + "deranged", + "itoa", + "libc", + "num-conv", + "num_threads", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" + +[[package]] +name = "time-macros" +version = "0.2.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" diff --git a/rust/ql/test/query-tests/security/CWE-327/Cargo.lock b/rust/ql/test/query-tests/security/CWE-327/Cargo.lock new file mode 100644 index 00000000000..708b79ed46d --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-327/Cargo.lock @@ -0,0 +1,171 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "block-padding" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93" +dependencies = [ + "generic-array", +] + +[[package]] +name = "cbc" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6" +dependencies = [ + "cipher", +] + +[[package]] +name = "cfg-if" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", + "zeroize", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "des" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffdd80ce8ce993de27e9f063a444a4d53ce8e8db4c1f00cc03af5ad5a9867a1e" +dependencies = [ + "cipher", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "block-padding", + "generic-array", +] + +[[package]] +name = "libc" +version = "0.2.173" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8cfeafaffdbc32176b64fb251369d52ea9f0a8fbc6f8759edffef7b525d64bb" + +[[package]] +name = "rabbit" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "931a21d28d73d260f6743712e0f04292413fc6d004bb278bb9022302221a05d5" +dependencies = [ + "cipher", +] + +[[package]] +name = "rc2" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62c64daa8e9438b84aaae55010a93f396f8e60e3911590fcba770d04643fc1dd" +dependencies = [ + "cipher", +] + +[[package]] +name = "rc4" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f1256e23efe6097f27aa82d6ca6889361c001586ae0f6917cbad072f05eb275" +dependencies = [ + "cipher", +] + +[[package]] +name = "rc5" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d416958668cb143193dd959872451342280d379c21c3ad65bb626df417995f3f" +dependencies = [ + "cipher", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "aes", + "cbc", + "cipher", + "des", + "rabbit", + "rc2", + "rc4", + "rc5", +] + +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" diff --git a/rust/ql/test/query-tests/security/CWE-328/Cargo.lock b/rust/ql/test/query-tests/security/CWE-328/Cargo.lock new file mode 100644 index 00000000000..9414814935d --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-328/Cargo.lock @@ -0,0 +1,317 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "argon2" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c3610892ee6e0cbce8ae2700349fcf8f98adb0dbfbee85aec3c9179d29cc072" +dependencies = [ + "base64ct", + "blake2", + "cpufeatures", + "password-hash", +] + +[[package]] +name = "base64ct" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" + +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "cfg-if" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "libc" +version = "0.2.173" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8cfeafaffdbc32176b64fb251369d52ea9f0a8fbc6f8759edffef7b525d64bb" + +[[package]] +name = "md-5" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +dependencies = [ + "cfg-if", + "digest", +] + +[[package]] +name = "md5" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" + +[[package]] +name = "memchr" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + +[[package]] +name = "password-hash" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "346f04948ba92c43e8469c1ee6736c7563d71012b17d40745260fe106aac2166" +dependencies = [ + "base64ct", + "rand_core", + "subtle", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha1-checked" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89f599ac0c323ebb1c6082821a54962b839832b03984598375bff3975b804423" +dependencies = [ + "digest", + "sha1", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest", + "keccak", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "2.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "argon2", + "digest", + "md-5", + "md5", + "serde", + "serde_json", + "serde_urlencoded", + "sha1", + "sha1-checked", + "sha3", +] + +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" diff --git a/rust/ql/test/query-tests/security/CWE-696/Cargo.lock b/rust/ql/test/query-tests/security/CWE-696/Cargo.lock new file mode 100644 index 00000000000..4db6c52f89f --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-696/Cargo.lock @@ -0,0 +1,71 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "ctor" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "libc" +version = "0.2.173" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8cfeafaffdbc32176b64fb251369d52ea9f0a8fbc6f8759edffef7b525d64bb" + +[[package]] +name = "libc-print" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a660208db49e35faf57b37484350f1a61072f2a5becf0592af6015d9ddd4b0" +dependencies = [ + "libc", +] + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "syn" +version = "2.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "ctor", + "libc-print", +] + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" diff --git a/rust/ql/test/query-tests/security/CWE-770/Cargo.lock b/rust/ql/test/query-tests/security/CWE-770/Cargo.lock new file mode 100644 index 00000000000..af842b2d7e4 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-770/Cargo.lock @@ -0,0 +1,16 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "libc" +version = "0.2.173" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8cfeafaffdbc32176b64fb251369d52ea9f0a8fbc6f8759edffef7b525d64bb" + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "libc", +] diff --git a/rust/ql/test/query-tests/security/CWE-825/Cargo.lock b/rust/ql/test/query-tests/security/CWE-825/Cargo.lock new file mode 100644 index 00000000000..af842b2d7e4 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-825/Cargo.lock @@ -0,0 +1,16 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "libc" +version = "0.2.173" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8cfeafaffdbc32176b64fb251369d52ea9f0a8fbc6f8759edffef7b525d64bb" + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "libc", +] diff --git a/rust/ql/test/query-tests/unusedentities/Cargo.lock b/rust/ql/test/query-tests/unusedentities/Cargo.lock new file mode 100644 index 00000000000..b9856cfaf77 --- /dev/null +++ b/rust/ql/test/query-tests/unusedentities/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/utils-tests/modelgenerator/Cargo.lock b/rust/ql/test/utils-tests/modelgenerator/Cargo.lock new file mode 100644 index 00000000000..b9856cfaf77 --- /dev/null +++ b/rust/ql/test/utils-tests/modelgenerator/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/utils/Cargo.lock b/rust/ql/test/utils/Cargo.lock new file mode 100644 index 00000000000..b9856cfaf77 --- /dev/null +++ b/rust/ql/test/utils/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" From 8b98e2a559336cff66f598bf359c50214e7ec998 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Mon, 16 Jun 2025 11:54:07 +0200 Subject: [PATCH 086/150] Rust: accept test changes --- .../PathResolutionConsistency.expected | 28 ++++++++++++++----- .../PathResolutionConsistency.expected | 6 ++-- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/rust/ql/test/query-tests/security/CWE-770/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-770/CONSISTENCY/PathResolutionConsistency.expected index 99dc5510ef3..767f3366008 100644 --- a/rust/ql/test/query-tests/security/CWE-770/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/query-tests/security/CWE-770/CONSISTENCY/PathResolutionConsistency.expected @@ -1,18 +1,32 @@ multiplePathResolutions | main.rs:218:14:218:17 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | -| main.rs:218:14:218:17 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | -| main.rs:219:13:219:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | +| main.rs:218:14:218:17 | libc | file://:0:0:0:0 | Crate(libc@0.2.173) | +| main.rs:218:14:218:25 | ...::malloc | file://:0:0:0:0 | fn malloc | +| main.rs:218:14:218:25 | ...::malloc | file://:0:0:0:0 | fn malloc | | main.rs:219:13:219:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | +| main.rs:219:13:219:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.173) | +| main.rs:219:13:219:24 | ...::malloc | file://:0:0:0:0 | fn malloc | +| main.rs:219:13:219:24 | ...::malloc | file://:0:0:0:0 | fn malloc | | main.rs:220:13:220:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | -| main.rs:220:13:220:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | -| main.rs:221:13:221:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | +| main.rs:220:13:220:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.173) | +| main.rs:220:13:220:31 | ...::aligned_alloc | file://:0:0:0:0 | fn aligned_alloc | +| main.rs:220:13:220:31 | ...::aligned_alloc | file://:0:0:0:0 | fn aligned_alloc | | main.rs:221:13:221:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | +| main.rs:221:13:221:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.173) | +| main.rs:221:13:221:31 | ...::aligned_alloc | file://:0:0:0:0 | fn aligned_alloc | +| main.rs:221:13:221:31 | ...::aligned_alloc | file://:0:0:0:0 | fn aligned_alloc | | main.rs:222:13:222:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | -| main.rs:222:13:222:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | -| main.rs:223:13:223:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | +| main.rs:222:13:222:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.173) | +| main.rs:222:13:222:24 | ...::calloc | file://:0:0:0:0 | fn calloc | +| main.rs:222:13:222:24 | ...::calloc | file://:0:0:0:0 | fn calloc | | main.rs:223:13:223:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | +| main.rs:223:13:223:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.173) | +| main.rs:223:13:223:24 | ...::calloc | file://:0:0:0:0 | fn calloc | +| main.rs:223:13:223:24 | ...::calloc | file://:0:0:0:0 | fn calloc | | main.rs:224:13:224:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | -| main.rs:224:13:224:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | +| main.rs:224:13:224:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.173) | +| main.rs:224:13:224:25 | ...::realloc | file://:0:0:0:0 | fn realloc | +| main.rs:224:13:224:25 | ...::realloc | file://:0:0:0:0 | fn realloc | | main.rs:229:13:229:37 | ...::with_capacity | file://:0:0:0:0 | fn with_capacity | | main.rs:229:13:229:37 | ...::with_capacity | file://:0:0:0:0 | fn with_capacity | | main.rs:233:18:233:42 | ...::with_capacity | file://:0:0:0:0 | fn with_capacity | diff --git a/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected index 4105369917f..d326b510db4 100644 --- a/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected @@ -1,14 +1,14 @@ multiplePathResolutions | deallocation.rs:106:16:106:19 | libc | file://:0:0:0:0 | Crate(libc@0.2.171) | -| deallocation.rs:106:16:106:19 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | +| deallocation.rs:106:16:106:19 | libc | file://:0:0:0:0 | Crate(libc@0.2.173) | | deallocation.rs:106:16:106:27 | ...::malloc | file://:0:0:0:0 | fn malloc | | deallocation.rs:106:16:106:27 | ...::malloc | file://:0:0:0:0 | fn malloc | | deallocation.rs:112:3:112:6 | libc | file://:0:0:0:0 | Crate(libc@0.2.171) | -| deallocation.rs:112:3:112:6 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | +| deallocation.rs:112:3:112:6 | libc | file://:0:0:0:0 | Crate(libc@0.2.173) | | deallocation.rs:112:3:112:12 | ...::free | file://:0:0:0:0 | fn free | | deallocation.rs:112:3:112:12 | ...::free | file://:0:0:0:0 | fn free | | deallocation.rs:112:29:112:32 | libc | file://:0:0:0:0 | Crate(libc@0.2.171) | -| deallocation.rs:112:29:112:32 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | +| deallocation.rs:112:29:112:32 | libc | file://:0:0:0:0 | Crate(libc@0.2.173) | | deallocation.rs:260:11:260:22 | ...::from | file://:0:0:0:0 | fn from | | deallocation.rs:260:11:260:22 | ...::from | file://:0:0:0:0 | fn from | | deallocation.rs:260:11:260:22 | ...::from | file://:0:0:0:0 | fn from | From 67d623fb06a79d3c299baed7a869ca262cd3d24d Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Fri, 13 Jun 2025 21:33:04 +0200 Subject: [PATCH 087/150] C++: Add `__try` with load test case Fix some formatting while here. --- .../library-tests/ir/ir/PrintAST.expected | 72 ++++++++++++++ .../library-tests/ir/ir/aliased_ir.expected | 77 +++++++++++++++ .../ir/ir/raw_consistency.expected | 2 + .../test/library-tests/ir/ir/raw_ir.expected | 93 +++++++++++++++++++ cpp/ql/test/library-tests/ir/ir/try_except.c | 12 +++ .../test/library-tests/ir/ir/try_except.cpp | 2 +- 6 files changed, 257 insertions(+), 1 deletion(-) diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index bde0ac73675..998dc486289 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -49689,6 +49689,78 @@ try_except.c: # 52| Type = [IntType] int # 52| ValueCategory = prvalue(load) # 54| getStmt(2): [ReturnStmt] return ... +# 56| [TopLevelFunction] void k(int*, int*, int*, int*, int*) +# 56| : +# 56| getParameter(0): [Parameter] b +# 56| Type = [IntPointerType] int * +# 56| getParameter(1): [Parameter] c +# 56| Type = [IntPointerType] int * +# 56| getParameter(2): [Parameter] d +# 56| Type = [IntPointerType] int * +# 56| getParameter(3): [Parameter] e +# 56| Type = [IntPointerType] int * +# 56| getParameter(4): [Parameter] f +# 56| Type = [IntPointerType] int * +# 56| getEntryPoint(): [BlockStmt] { ... } +# 57| getStmt(0): [DeclStmt] declaration +# 57| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 57| Type = [IntType] int +# 57| getVariable().getInitializer(): [Initializer] initializer for x +# 57| getExpr(): [Literal] 0 +# 57| Type = [IntType] int +# 57| Value = [Literal] 0 +# 57| ValueCategory = prvalue +# 58| getStmt(1): [MicrosoftTryExceptStmt] __try { ... } __except( ... ) { ... } +# 58| getStmt(): [BlockStmt] { ... } +# 59| getStmt(0): [ExprStmt] ExprStmt +# 59| getExpr(): [AssignExpr] ... = ... +# 59| Type = [IntType] int +# 59| ValueCategory = prvalue +# 59| getLValue(): [VariableAccess] x +# 59| Type = [IntType] int +# 59| ValueCategory = lvalue +# 59| getRValue(): [PointerDereferenceExpr] * ... +# 59| Type = [IntType] int +# 59| ValueCategory = prvalue(load) +# 59| getOperand(): [VariableAccess] b +# 59| Type = [IntPointerType] int * +# 59| ValueCategory = prvalue(load) +# 60| getStmt(1): [ExprStmt] ExprStmt +# 60| getExpr(): [AssignExpr] ... = ... +# 60| Type = [IntType] int +# 60| ValueCategory = prvalue +# 60| getLValue(): [PointerDereferenceExpr] * ... +# 60| Type = [IntType] int +# 60| ValueCategory = lvalue +# 60| getOperand(): [VariableAccess] c +# 60| Type = [IntPointerType] int * +# 60| ValueCategory = prvalue(load) +# 60| getRValue(): [VariableAccess] x +# 60| Type = [IntType] int +# 60| ValueCategory = prvalue(load) +# 61| getStmt(2): [DeclStmt] declaration +# 61| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 61| Type = [IntType] int +# 61| getVariable().getInitializer(): [Initializer] initializer for y +# 61| getExpr(): [PointerDereferenceExpr] * ... +# 61| Type = [IntType] int +# 61| ValueCategory = prvalue(load) +# 61| getOperand(): [VariableAccess] d +# 61| Type = [IntPointerType] int * +# 61| ValueCategory = prvalue(load) +# 63| getCondition(): [Literal] 1 +# 63| Type = [IntType] int +# 63| Value = [Literal] 1 +# 63| ValueCategory = prvalue +# 63| getExcept(): [BlockStmt] { ... } +# 64| getStmt(0): [ExprStmt] ExprStmt +# 64| getExpr(): [FunctionCall] call to sink +# 64| Type = [VoidType] void +# 64| ValueCategory = prvalue +# 64| getArgument(0): [VariableAccess] x +# 64| Type = [IntType] int +# 64| ValueCategory = prvalue(load) +# 66| getStmt(2): [ReturnStmt] return ... try_except.cpp: # 3| [TopLevelFunction] void ProbeFunction() # 3| : diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected index 4f35e4f6209..ca4ba7385f8 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected @@ -39194,6 +39194,7 @@ try_except.c: # 32| Block 7 # 32| v32_10(void) = Unreached : +<<<<<<< HEAD # 46| void j(int) # 46| Block 0 # 46| v46_1(void) = EnterFunction : @@ -39257,6 +39258,82 @@ try_except.c: # 46| Block 7 # 46| v46_10(void) = Unreached : +======= +# 44| void i(int*, int*, int*, int*, int*) +# 44| Block 0 +# 44| v44_1(void) = EnterFunction : +# 44| m44_2(unknown) = AliasedDefinition : +# 44| m44_3(unknown) = InitializeNonLocal : +# 44| m44_4(unknown) = Chi : total:m44_2, partial:m44_3 +# 44| r44_5(glval) = VariableAddress[b] : +# 44| m44_6(int *) = InitializeParameter[b] : &:r44_5 +# 44| r44_7(int *) = Load[b] : &:r44_5, m44_6 +# 44| m44_8(unknown) = InitializeIndirection[b] : &:r44_7 +# 44| r44_9(glval) = VariableAddress[c] : +# 44| m44_10(int *) = InitializeParameter[c] : &:r44_9 +# 44| r44_11(int *) = Load[c] : &:r44_9, m44_10 +# 44| m44_12(unknown) = InitializeIndirection[c] : &:r44_11 +# 44| r44_13(glval) = VariableAddress[d] : +# 44| m44_14(int *) = InitializeParameter[d] : &:r44_13 +# 44| r44_15(int *) = Load[d] : &:r44_13, m44_14 +# 44| m44_16(unknown) = InitializeIndirection[d] : &:r44_15 +# 44| r44_17(glval) = VariableAddress[e] : +# 44| m44_18(int *) = InitializeParameter[e] : &:r44_17 +# 44| r44_19(int *) = Load[e] : &:r44_17, m44_18 +# 44| m44_20(unknown) = InitializeIndirection[e] : &:r44_19 +# 44| r44_21(glval) = VariableAddress[f] : +# 44| m44_22(int *) = InitializeParameter[f] : &:r44_21 +# 44| r44_23(int *) = Load[f] : &:r44_21, m44_22 +# 44| m44_24(unknown) = InitializeIndirection[f] : &:r44_23 +# 45| r45_1(glval) = VariableAddress[x] : +# 45| r45_2(int) = Constant[0] : +# 45| m45_3(int) = Store[x] : &:r45_1, r45_2 +# 47| r47_1(glval) = VariableAddress[b] : +# 47| r47_2(int *) = Load[b] : &:r47_1, m44_6 +# 47| r47_3(int) = Load[?] : &:r47_2, ~m44_8 +# 47| r47_4(glval) = VariableAddress[x] : +# 47| m47_5(int) = Store[x] : &:r47_4, r47_3 +# 48| r48_1(glval) = VariableAddress[x] : +# 48| r48_2(int) = Load[x] : &:r48_1, m47_5 +# 48| r48_3(glval) = VariableAddress[c] : +# 48| r48_4(int *) = Load[c] : &:r48_3, m44_10 +# 48| r48_5(glval) = CopyValue : r48_4 +# 48| m48_6(int) = Store[?] : &:r48_5, r48_2 +# 48| m48_7(unknown) = Chi : total:m44_12, partial:m48_6 +# 49| r49_1(glval) = VariableAddress[y] : +# 49| r49_2(glval) = VariableAddress[d] : +# 49| r49_3(int *) = Load[d] : &:r49_2, m44_14 +# 49| r49_4(int) = Load[?] : &:r49_3, ~m44_16 +# 49| m49_5(int) = Store[y] : &:r49_1, r49_4 +# 50| r50_1(glval) = VariableAddress[x] : +# 50| m50_2(int[2]) = Uninitialized[x] : &:r50_1 +# 50| r50_3(int) = Constant[0] : +# 50| r50_4(glval) = PointerAdd[4] : r50_1, r50_3 +# 50| r50_5(glval) = VariableAddress[e] : +# 50| r50_6(int *) = Load[e] : &:r50_5, m44_18 +# 50| r50_7(int) = Load[?] : &:r50_6, ~m44_20 +# 50| m50_8(int) = Store[?] : &:r50_4, r50_7 +# 50| m50_9(int[2]) = Chi : total:m50_2, partial:m50_8 +# 50| r50_10(int) = Constant[1] : +# 50| r50_11(glval) = PointerAdd[4] : r50_1, r50_10 +# 50| r50_12(glval) = VariableAddress[f] : +# 50| r50_13(int *) = Load[f] : &:r50_12, m44_22 +# 50| r50_14(int) = Load[?] : &:r50_13, ~m44_24 +# 50| m50_15(int) = Store[?] : &:r50_11, r50_14 +# 50| m50_16(int[2]) = Chi : total:m50_9, partial:m50_15 +# 55| v55_1(void) = NoOp : +# 44| v44_25(void) = ReturnIndirection[b] : &:r44_7, m44_8 +# 44| v44_26(void) = ReturnIndirection[c] : &:r44_11, m48_7 +# 44| v44_27(void) = ReturnIndirection[d] : &:r44_15, m44_16 +# 44| v44_28(void) = ReturnIndirection[e] : &:r44_19, m44_20 +# 44| v44_29(void) = ReturnIndirection[f] : &:r44_23, m44_24 +# 44| v44_30(void) = ReturnVoid : +# 44| v44_31(void) = AliasedUse : m44_3 +# 44| v44_32(void) = ExitFunction : + +# 44| Block 1 +# 44| v44_33(void) = Unreached : +>>>>>>> ad6e7a0f0f8 (C++: Add `__try` with load test case) try_except.cpp: # 6| void f_cpp() diff --git a/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected b/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected index e30106d3520..e988beb52ab 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected @@ -21,6 +21,8 @@ lostReachability backEdgeCountMismatch useNotDominatedByDefinition | ir.cpp:1535:8:1535:8 | Unary | Operand 'Unary' is not dominated by its definition in function '$@'. | ir.cpp:1535:8:1535:8 | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() | +| try_except.c:63:13:63:13 | Left | Operand 'Left' is not dominated by its definition in function '$@'. | try_except.c:56:6:56:6 | void k(int*, int*, int*, int*, int*) | void k(int*, int*, int*, int*, int*) | +| try_except.c:63:13:63:13 | Left | Operand 'Left' is not dominated by its definition in function '$@'. | try_except.c:56:6:56:6 | void k(int*, int*, int*, int*, int*) | void k(int*, int*, int*, int*, int*) | switchInstructionWithoutDefaultEdge notMarkedAsConflated wronglyMarkedAsConflated diff --git a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected index 26b6d8a1817..39501758ec8 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -37533,6 +37533,99 @@ try_except.c: # 46| v46_9(void) = ReturnVoid : #-----| Goto -> Block 1 +# 56| void k(int*, int*, int*, int*, int*) +# 56| Block 0 +# 56| v56_1(void) = EnterFunction : +# 56| mu56_2(unknown) = AliasedDefinition : +# 56| mu56_3(unknown) = InitializeNonLocal : +# 56| r56_4(glval) = VariableAddress[b] : +# 56| mu56_5(int *) = InitializeParameter[b] : &:r56_4 +# 56| r56_6(int *) = Load[b] : &:r56_4, ~m? +# 56| mu56_7(unknown) = InitializeIndirection[b] : &:r56_6 +# 56| r56_8(glval) = VariableAddress[c] : +# 56| mu56_9(int *) = InitializeParameter[c] : &:r56_8 +# 56| r56_10(int *) = Load[c] : &:r56_8, ~m? +# 56| mu56_11(unknown) = InitializeIndirection[c] : &:r56_10 +# 56| r56_12(glval) = VariableAddress[d] : +# 56| mu56_13(int *) = InitializeParameter[d] : &:r56_12 +# 56| r56_14(int *) = Load[d] : &:r56_12, ~m? +# 56| mu56_15(unknown) = InitializeIndirection[d] : &:r56_14 +# 56| r56_16(glval) = VariableAddress[e] : +# 56| mu56_17(int *) = InitializeParameter[e] : &:r56_16 +# 56| r56_18(int *) = Load[e] : &:r56_16, ~m? +# 56| mu56_19(unknown) = InitializeIndirection[e] : &:r56_18 +# 56| r56_20(glval) = VariableAddress[f] : +# 56| mu56_21(int *) = InitializeParameter[f] : &:r56_20 +# 56| r56_22(int *) = Load[f] : &:r56_20, ~m? +# 56| mu56_23(unknown) = InitializeIndirection[f] : &:r56_22 +# 57| r57_1(glval) = VariableAddress[x] : +# 57| r57_2(int) = Constant[0] : +# 57| mu57_3(int) = Store[x] : &:r57_1, r57_2 +# 59| r59_1(glval) = VariableAddress[b] : +# 59| r59_2(int *) = Load[b] : &:r59_1, ~m? +# 59| r59_3(int) = Load[?] : &:r59_2, ~m? +# 59| r59_4(glval) = VariableAddress[x] : +# 59| mu59_5(int) = Store[x] : &:r59_4, r59_3 +# 60| r60_1(glval) = VariableAddress[x] : +# 60| r60_2(int) = Load[x] : &:r60_1, ~m? +# 60| r60_3(glval) = VariableAddress[c] : +# 60| r60_4(int *) = Load[c] : &:r60_3, ~m? +# 60| r60_5(glval) = CopyValue : r60_4 +# 60| mu60_6(int) = Store[?] : &:r60_5, r60_2 +# 61| r61_1(glval) = VariableAddress[y] : +# 61| r61_2(glval) = VariableAddress[d] : +# 61| r61_3(int *) = Load[d] : &:r61_2, ~m? +# 61| r61_4(int) = Load[?] : &:r61_3, ~m? +# 61| mu61_5(int) = Store[y] : &:r61_1, r61_4 +#-----| Goto -> Block 7 + +# 56| Block 1 +# 56| v56_24(void) = AliasedUse : ~m? +# 56| v56_25(void) = ExitFunction : + +# 56| Block 2 +# 56| v56_26(void) = Unwind : +#-----| Goto -> Block 1 + +# 63| Block 3 +# 63| r63_1(int) = Constant[0] : +# 63| r63_2(bool) = CompareEQ : r63_7, r63_1 +# 63| v63_3(void) = ConditionalBranch : r63_2 +#-----| False -> Block 4 +#-----| True -> Block 2 + +# 63| Block 4 +# 63| r63_4(int) = Constant[1] : +# 63| r63_5(bool) = CompareEQ : r63_7, r63_4 +# 63| v63_6(void) = ConditionalBranch : r63_5 +#-----| True -> Block 6 + +# 63| Block 5 +# 63| r63_7(int) = Constant[1] : +# 63| r63_8(int) = Constant[-1] : +# 63| r63_9(bool) = CompareEQ : r63_7, r63_8 +# 63| v63_10(void) = ConditionalBranch : r63_9 +#-----| False -> Block 3 +#-----| True -> Block 2 + +# 64| Block 6 +# 64| r64_1(glval) = FunctionAddress[sink] : +# 64| r64_2(glval) = VariableAddress[x] : +# 64| r64_3(int) = Load[x] : &:r64_2, ~m? +# 64| v64_4(void) = Call[sink] : func:r64_1, 0:r64_3 +# 64| mu64_5(unknown) = ^CallSideEffect : ~m? +#-----| Goto -> Block 7 + +# 66| Block 7 +# 66| v66_1(void) = NoOp : +# 56| v56_27(void) = ReturnIndirection[b] : &:r56_6, ~m? +# 56| v56_28(void) = ReturnIndirection[c] : &:r56_10, ~m? +# 56| v56_29(void) = ReturnIndirection[d] : &:r56_14, ~m? +# 56| v56_30(void) = ReturnIndirection[e] : &:r56_18, ~m? +# 56| v56_31(void) = ReturnIndirection[f] : &:r56_22, ~m? +# 56| v56_32(void) = ReturnVoid : +#-----| Goto -> Block 1 + try_except.cpp: # 6| void f_cpp() # 6| Block 0 diff --git a/cpp/ql/test/library-tests/ir/ir/try_except.c b/cpp/ql/test/library-tests/ir/ir/try_except.c index 48f3227bf07..8efb9b0ef1d 100644 --- a/cpp/ql/test/library-tests/ir/ir/try_except.c +++ b/cpp/ql/test/library-tests/ir/ir/try_except.c @@ -52,3 +52,15 @@ void j(int b) { sink(x); } } + +void k(int *b, int *c, int *d, int *e, int *f) { + int x = 0; + __try { + x = *b; + *c = x; + int y = *d; + } + __except (1) { + sink(x); + } +} diff --git a/cpp/ql/test/library-tests/ir/ir/try_except.cpp b/cpp/ql/test/library-tests/ir/ir/try_except.cpp index d1e33de0ba0..3db7128de71 100644 --- a/cpp/ql/test/library-tests/ir/ir/try_except.cpp +++ b/cpp/ql/test/library-tests/ir/ir/try_except.cpp @@ -49,6 +49,6 @@ void throw_cpp(int b) { } } __except (1) { - sink(x); + sink(x); } } From 3eb768c1e9579e2375e8511e2f3dda2794bd590c Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Fri, 13 Jun 2025 22:54:57 +0200 Subject: [PATCH 088/150] C++: Generate SEH edges for pointer dereference stores in `__try` blocks --- .../raw/internal/TranslatedExpr.qll | 9 +- .../library-tests/ir/ir/aliased_ir.expected | 173 ++++++++++-------- .../ir/ir/raw_consistency.expected | 2 - .../test/library-tests/ir/ir/raw_ir.expected | 34 ++-- 4 files changed, 124 insertions(+), 94 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll index ef2096e9b39..4e67a7cea38 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll @@ -1945,7 +1945,14 @@ class TranslatedAssignExpr extends TranslatedNonConstantExpr { override Instruction getInstructionSuccessorInternal(InstructionTag tag, EdgeKind kind) { tag = AssignmentStoreTag() and - result = this.getParent().getChildSuccessor(this, kind) + ( + result = this.getParent().getChildSuccessor(this, kind) + or + expr.getLValue() instanceof PointerDereferenceExpr and + kind instanceof SehExceptionEdge and + exists(MicrosoftTryStmt tryStmt | tryStmt.getStmt() = expr.getEnclosingStmt().getParent*()) and + result = this.getParent().getExceptionSuccessorInstruction(any(GotoEdge e)) + ) } override Instruction getChildSuccessorInternal(TranslatedElement child, EdgeKind kind) { diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected index ca4ba7385f8..bfddb2a179c 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected @@ -39194,7 +39194,6 @@ try_except.c: # 32| Block 7 # 32| v32_10(void) = Unreached : -<<<<<<< HEAD # 46| void j(int) # 46| Block 0 # 46| v46_1(void) = EnterFunction : @@ -39258,82 +39257,104 @@ try_except.c: # 46| Block 7 # 46| v46_10(void) = Unreached : -======= -# 44| void i(int*, int*, int*, int*, int*) -# 44| Block 0 -# 44| v44_1(void) = EnterFunction : -# 44| m44_2(unknown) = AliasedDefinition : -# 44| m44_3(unknown) = InitializeNonLocal : -# 44| m44_4(unknown) = Chi : total:m44_2, partial:m44_3 -# 44| r44_5(glval) = VariableAddress[b] : -# 44| m44_6(int *) = InitializeParameter[b] : &:r44_5 -# 44| r44_7(int *) = Load[b] : &:r44_5, m44_6 -# 44| m44_8(unknown) = InitializeIndirection[b] : &:r44_7 -# 44| r44_9(glval) = VariableAddress[c] : -# 44| m44_10(int *) = InitializeParameter[c] : &:r44_9 -# 44| r44_11(int *) = Load[c] : &:r44_9, m44_10 -# 44| m44_12(unknown) = InitializeIndirection[c] : &:r44_11 -# 44| r44_13(glval) = VariableAddress[d] : -# 44| m44_14(int *) = InitializeParameter[d] : &:r44_13 -# 44| r44_15(int *) = Load[d] : &:r44_13, m44_14 -# 44| m44_16(unknown) = InitializeIndirection[d] : &:r44_15 -# 44| r44_17(glval) = VariableAddress[e] : -# 44| m44_18(int *) = InitializeParameter[e] : &:r44_17 -# 44| r44_19(int *) = Load[e] : &:r44_17, m44_18 -# 44| m44_20(unknown) = InitializeIndirection[e] : &:r44_19 -# 44| r44_21(glval) = VariableAddress[f] : -# 44| m44_22(int *) = InitializeParameter[f] : &:r44_21 -# 44| r44_23(int *) = Load[f] : &:r44_21, m44_22 -# 44| m44_24(unknown) = InitializeIndirection[f] : &:r44_23 -# 45| r45_1(glval) = VariableAddress[x] : -# 45| r45_2(int) = Constant[0] : -# 45| m45_3(int) = Store[x] : &:r45_1, r45_2 -# 47| r47_1(glval) = VariableAddress[b] : -# 47| r47_2(int *) = Load[b] : &:r47_1, m44_6 -# 47| r47_3(int) = Load[?] : &:r47_2, ~m44_8 -# 47| r47_4(glval) = VariableAddress[x] : -# 47| m47_5(int) = Store[x] : &:r47_4, r47_3 -# 48| r48_1(glval) = VariableAddress[x] : -# 48| r48_2(int) = Load[x] : &:r48_1, m47_5 -# 48| r48_3(glval) = VariableAddress[c] : -# 48| r48_4(int *) = Load[c] : &:r48_3, m44_10 -# 48| r48_5(glval) = CopyValue : r48_4 -# 48| m48_6(int) = Store[?] : &:r48_5, r48_2 -# 48| m48_7(unknown) = Chi : total:m44_12, partial:m48_6 -# 49| r49_1(glval) = VariableAddress[y] : -# 49| r49_2(glval) = VariableAddress[d] : -# 49| r49_3(int *) = Load[d] : &:r49_2, m44_14 -# 49| r49_4(int) = Load[?] : &:r49_3, ~m44_16 -# 49| m49_5(int) = Store[y] : &:r49_1, r49_4 -# 50| r50_1(glval) = VariableAddress[x] : -# 50| m50_2(int[2]) = Uninitialized[x] : &:r50_1 -# 50| r50_3(int) = Constant[0] : -# 50| r50_4(glval) = PointerAdd[4] : r50_1, r50_3 -# 50| r50_5(glval) = VariableAddress[e] : -# 50| r50_6(int *) = Load[e] : &:r50_5, m44_18 -# 50| r50_7(int) = Load[?] : &:r50_6, ~m44_20 -# 50| m50_8(int) = Store[?] : &:r50_4, r50_7 -# 50| m50_9(int[2]) = Chi : total:m50_2, partial:m50_8 -# 50| r50_10(int) = Constant[1] : -# 50| r50_11(glval) = PointerAdd[4] : r50_1, r50_10 -# 50| r50_12(glval) = VariableAddress[f] : -# 50| r50_13(int *) = Load[f] : &:r50_12, m44_22 -# 50| r50_14(int) = Load[?] : &:r50_13, ~m44_24 -# 50| m50_15(int) = Store[?] : &:r50_11, r50_14 -# 50| m50_16(int[2]) = Chi : total:m50_9, partial:m50_15 -# 55| v55_1(void) = NoOp : -# 44| v44_25(void) = ReturnIndirection[b] : &:r44_7, m44_8 -# 44| v44_26(void) = ReturnIndirection[c] : &:r44_11, m48_7 -# 44| v44_27(void) = ReturnIndirection[d] : &:r44_15, m44_16 -# 44| v44_28(void) = ReturnIndirection[e] : &:r44_19, m44_20 -# 44| v44_29(void) = ReturnIndirection[f] : &:r44_23, m44_24 -# 44| v44_30(void) = ReturnVoid : -# 44| v44_31(void) = AliasedUse : m44_3 -# 44| v44_32(void) = ExitFunction : -# 44| Block 1 -# 44| v44_33(void) = Unreached : ->>>>>>> ad6e7a0f0f8 (C++: Add `__try` with load test case) +# 56| void k(int*, int*, int*, int*, int*) +# 56| Block 0 +# 56| v56_1(void) = EnterFunction : +# 56| m56_2(unknown) = AliasedDefinition : +# 56| m56_3(unknown) = InitializeNonLocal : +# 56| m56_4(unknown) = Chi : total:m56_2, partial:m56_3 +# 56| r56_5(glval) = VariableAddress[b] : +# 56| m56_6(int *) = InitializeParameter[b] : &:r56_5 +# 56| r56_7(int *) = Load[b] : &:r56_5, m56_6 +# 56| m56_8(unknown) = InitializeIndirection[b] : &:r56_7 +# 56| r56_9(glval) = VariableAddress[c] : +# 56| m56_10(int *) = InitializeParameter[c] : &:r56_9 +# 56| r56_11(int *) = Load[c] : &:r56_9, m56_10 +# 56| m56_12(unknown) = InitializeIndirection[c] : &:r56_11 +# 56| r56_13(glval) = VariableAddress[d] : +# 56| m56_14(int *) = InitializeParameter[d] : &:r56_13 +# 56| r56_15(int *) = Load[d] : &:r56_13, m56_14 +# 56| m56_16(unknown) = InitializeIndirection[d] : &:r56_15 +# 56| r56_17(glval) = VariableAddress[e] : +# 56| m56_18(int *) = InitializeParameter[e] : &:r56_17 +# 56| r56_19(int *) = Load[e] : &:r56_17, m56_18 +# 56| m56_20(unknown) = InitializeIndirection[e] : &:r56_19 +# 56| r56_21(glval) = VariableAddress[f] : +# 56| m56_22(int *) = InitializeParameter[f] : &:r56_21 +# 56| r56_23(int *) = Load[f] : &:r56_21, m56_22 +# 56| m56_24(unknown) = InitializeIndirection[f] : &:r56_23 +# 57| r57_1(glval) = VariableAddress[x] : +# 57| r57_2(int) = Constant[0] : +# 57| m57_3(int) = Store[x] : &:r57_1, r57_2 +# 59| r59_1(glval) = VariableAddress[b] : +# 59| r59_2(int *) = Load[b] : &:r59_1, m56_6 +# 59| r59_3(int) = Load[?] : &:r59_2, ~m56_8 +# 59| r59_4(glval) = VariableAddress[x] : +# 59| m59_5(int) = Store[x] : &:r59_4, r59_3 +# 60| r60_1(glval) = VariableAddress[x] : +# 60| r60_2(int) = Load[x] : &:r60_1, m59_5 +# 60| r60_3(glval) = VariableAddress[c] : +# 60| r60_4(int *) = Load[c] : &:r60_3, m56_10 +# 60| r60_5(glval) = CopyValue : r60_4 +# 60| m60_6(int) = Store[?] : &:r60_5, r60_2 +# 60| m60_7(unknown) = Chi : total:m56_12, partial:m60_6 +#-----| Goto -> Block 1 +#-----| SEH Exception -> Block 4 + +# 61| Block 1 +# 61| r61_1(glval) = VariableAddress[y] : +# 61| r61_2(glval) = VariableAddress[d] : +# 61| r61_3(int *) = Load[d] : &:r61_2, m56_14 +# 61| r61_4(int) = Load[?] : &:r61_3, ~m56_16 +# 61| m61_5(int) = Store[y] : &:r61_1, r61_4 +#-----| Goto -> Block 6 + +# 63| Block 2 +# 63| r63_1(int) = Constant[0] : +# 63| r63_2(bool) = CompareEQ : r63_7, r63_1 +# 63| v63_3(void) = ConditionalBranch : r63_2 +#-----| False -> Block 3 +#-----| True -> Block 7 + +# 63| Block 3 +# 63| r63_4(int) = Constant[1] : +# 63| r63_5(bool) = CompareEQ : r63_7, r63_4 +# 63| v63_6(void) = ConditionalBranch : r63_5 +#-----| False -> Block 7 +#-----| True -> Block 5 + +# 63| Block 4 +# 63| r63_7(int) = Constant[1] : +# 63| r63_8(int) = Constant[-1] : +# 63| r63_9(bool) = CompareEQ : r63_7, r63_8 +# 63| v63_10(void) = ConditionalBranch : r63_9 +#-----| False -> Block 2 +#-----| True -> Block 7 + +# 64| Block 5 +# 64| r64_1(glval) = FunctionAddress[sink] : +# 64| r64_2(glval) = VariableAddress[x] : +# 64| r64_3(int) = Load[x] : &:r64_2, m59_5 +# 64| v64_4(void) = Call[sink] : func:r64_1, 0:r64_3 +# 64| m64_5(unknown) = ^CallSideEffect : ~m56_4 +# 64| m64_6(unknown) = Chi : total:m56_4, partial:m64_5 +#-----| Goto -> Block 6 + +# 66| Block 6 +# 66| m66_1(unknown) = Phi : from 1:~m56_4, from 5:~m64_6 +# 66| v66_2(void) = NoOp : +# 56| v56_25(void) = ReturnIndirection[b] : &:r56_7, m56_8 +# 56| v56_26(void) = ReturnIndirection[c] : &:r56_11, m60_7 +# 56| v56_27(void) = ReturnIndirection[d] : &:r56_15, m56_16 +# 56| v56_28(void) = ReturnIndirection[e] : &:r56_19, m56_20 +# 56| v56_29(void) = ReturnIndirection[f] : &:r56_23, m56_24 +# 56| v56_30(void) = ReturnVoid : +# 56| v56_31(void) = AliasedUse : ~m66_1 +# 56| v56_32(void) = ExitFunction : + +# 56| Block 7 +# 56| v56_33(void) = Unreached : try_except.cpp: # 6| void f_cpp() diff --git a/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected b/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected index e988beb52ab..e30106d3520 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected @@ -21,8 +21,6 @@ lostReachability backEdgeCountMismatch useNotDominatedByDefinition | ir.cpp:1535:8:1535:8 | Unary | Operand 'Unary' is not dominated by its definition in function '$@'. | ir.cpp:1535:8:1535:8 | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() | -| try_except.c:63:13:63:13 | Left | Operand 'Left' is not dominated by its definition in function '$@'. | try_except.c:56:6:56:6 | void k(int*, int*, int*, int*, int*) | void k(int*, int*, int*, int*, int*) | -| try_except.c:63:13:63:13 | Left | Operand 'Left' is not dominated by its definition in function '$@'. | try_except.c:56:6:56:6 | void k(int*, int*, int*, int*, int*) | void k(int*, int*, int*, int*, int*) | switchInstructionWithoutDefaultEdge notMarkedAsConflated wronglyMarkedAsConflated diff --git a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected index 39501758ec8..7d4024c27e9 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -37572,12 +37572,8 @@ try_except.c: # 60| r60_4(int *) = Load[c] : &:r60_3, ~m? # 60| r60_5(glval) = CopyValue : r60_4 # 60| mu60_6(int) = Store[?] : &:r60_5, r60_2 -# 61| r61_1(glval) = VariableAddress[y] : -# 61| r61_2(glval) = VariableAddress[d] : -# 61| r61_3(int *) = Load[d] : &:r61_2, ~m? -# 61| r61_4(int) = Load[?] : &:r61_3, ~m? -# 61| mu61_5(int) = Store[y] : &:r61_1, r61_4 -#-----| Goto -> Block 7 +#-----| Goto -> Block 3 +#-----| SEH Exception -> Block 6 # 56| Block 1 # 56| v56_24(void) = AliasedUse : ~m? @@ -37587,36 +37583,44 @@ try_except.c: # 56| v56_26(void) = Unwind : #-----| Goto -> Block 1 -# 63| Block 3 +# 61| Block 3 +# 61| r61_1(glval) = VariableAddress[y] : +# 61| r61_2(glval) = VariableAddress[d] : +# 61| r61_3(int *) = Load[d] : &:r61_2, ~m? +# 61| r61_4(int) = Load[?] : &:r61_3, ~m? +# 61| mu61_5(int) = Store[y] : &:r61_1, r61_4 +#-----| Goto -> Block 8 + +# 63| Block 4 # 63| r63_1(int) = Constant[0] : # 63| r63_2(bool) = CompareEQ : r63_7, r63_1 # 63| v63_3(void) = ConditionalBranch : r63_2 -#-----| False -> Block 4 +#-----| False -> Block 5 #-----| True -> Block 2 -# 63| Block 4 +# 63| Block 5 # 63| r63_4(int) = Constant[1] : # 63| r63_5(bool) = CompareEQ : r63_7, r63_4 # 63| v63_6(void) = ConditionalBranch : r63_5 -#-----| True -> Block 6 +#-----| True -> Block 7 -# 63| Block 5 +# 63| Block 6 # 63| r63_7(int) = Constant[1] : # 63| r63_8(int) = Constant[-1] : # 63| r63_9(bool) = CompareEQ : r63_7, r63_8 # 63| v63_10(void) = ConditionalBranch : r63_9 -#-----| False -> Block 3 +#-----| False -> Block 4 #-----| True -> Block 2 -# 64| Block 6 +# 64| Block 7 # 64| r64_1(glval) = FunctionAddress[sink] : # 64| r64_2(glval) = VariableAddress[x] : # 64| r64_3(int) = Load[x] : &:r64_2, ~m? # 64| v64_4(void) = Call[sink] : func:r64_1, 0:r64_3 # 64| mu64_5(unknown) = ^CallSideEffect : ~m? -#-----| Goto -> Block 7 +#-----| Goto -> Block 8 -# 66| Block 7 +# 66| Block 8 # 66| v66_1(void) = NoOp : # 56| v56_27(void) = ReturnIndirection[b] : &:r56_6, ~m? # 56| v56_28(void) = ReturnIndirection[c] : &:r56_10, ~m? From 9d6a1a98853c25e1dac05b9b2db4e58e32ca14ff Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Sat, 14 Jun 2025 00:00:37 +0200 Subject: [PATCH 089/150] C++: Generate SEH edges for pointer dereference loads in `__try` blocks --- .../raw/internal/TranslatedExpr.qll | 9 +- .../library-tests/ir/ir/aliased_ir.expected | 91 +++++++++++-------- .../test/library-tests/ir/ir/raw_ir.expected | 50 +++++----- 3 files changed, 88 insertions(+), 62 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll index 4e67a7cea38..279477d9588 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll @@ -400,7 +400,14 @@ class TranslatedLoad extends TranslatedValueCategoryAdjustment, TTranslatedLoad override Instruction getInstructionSuccessorInternal(InstructionTag tag, EdgeKind kind) { tag = LoadTag() and - result = this.getParent().getChildSuccessor(this, kind) + ( + result = this.getParent().getChildSuccessor(this, kind) + or + expr instanceof PointerDereferenceExpr and + kind instanceof SehExceptionEdge and + exists(MicrosoftTryStmt tryStmt | tryStmt.getStmt() = expr.getEnclosingStmt().getParent*()) and + result = this.getParent().getExceptionSuccessorInstruction(any(GotoEdge e)) + ) } override Instruction getChildSuccessorInternal(TranslatedElement child, EdgeKind kind) { diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected index bfddb2a179c..78d3798df7c 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected @@ -39290,70 +39290,81 @@ try_except.c: # 59| r59_1(glval) = VariableAddress[b] : # 59| r59_2(int *) = Load[b] : &:r59_1, m56_6 # 59| r59_3(int) = Load[?] : &:r59_2, ~m56_8 -# 59| r59_4(glval) = VariableAddress[x] : -# 59| m59_5(int) = Store[x] : &:r59_4, r59_3 -# 60| r60_1(glval) = VariableAddress[x] : -# 60| r60_2(int) = Load[x] : &:r60_1, m59_5 -# 60| r60_3(glval) = VariableAddress[c] : -# 60| r60_4(int *) = Load[c] : &:r60_3, m56_10 -# 60| r60_5(glval) = CopyValue : r60_4 -# 60| m60_6(int) = Store[?] : &:r60_5, r60_2 -# 60| m60_7(unknown) = Chi : total:m56_12, partial:m60_6 #-----| Goto -> Block 1 -#-----| SEH Exception -> Block 4 +#-----| SEH Exception -> Block 6 -# 61| Block 1 +# 59| Block 1 +# 59| r59_4(glval) = VariableAddress[x] : +# 59| m59_5(int) = Store[x] : &:r59_4, r59_3 +# 60| r60_1(glval) = VariableAddress[x] : +# 60| r60_2(int) = Load[x] : &:r60_1, m59_5 +# 60| r60_3(glval) = VariableAddress[c] : +# 60| r60_4(int *) = Load[c] : &:r60_3, m56_10 +# 60| r60_5(glval) = CopyValue : r60_4 +# 60| m60_6(int) = Store[?] : &:r60_5, r60_2 +# 60| m60_7(unknown) = Chi : total:m56_12, partial:m60_6 +#-----| Goto -> Block 2 +#-----| SEH Exception -> Block 6 + +# 61| Block 2 # 61| r61_1(glval) = VariableAddress[y] : # 61| r61_2(glval) = VariableAddress[d] : # 61| r61_3(int *) = Load[d] : &:r61_2, m56_14 # 61| r61_4(int) = Load[?] : &:r61_3, ~m56_16 -# 61| m61_5(int) = Store[y] : &:r61_1, r61_4 -#-----| Goto -> Block 6 +#-----| Goto -> Block 3 +#-----| SEH Exception -> Block 6 -# 63| Block 2 -# 63| r63_1(int) = Constant[0] : -# 63| r63_2(bool) = CompareEQ : r63_7, r63_1 -# 63| v63_3(void) = ConditionalBranch : r63_2 -#-----| False -> Block 3 -#-----| True -> Block 7 - -# 63| Block 3 -# 63| r63_4(int) = Constant[1] : -# 63| r63_5(bool) = CompareEQ : r63_7, r63_4 -# 63| v63_6(void) = ConditionalBranch : r63_5 -#-----| False -> Block 7 -#-----| True -> Block 5 +# 61| Block 3 +# 61| m61_5(int) = Store[y] : &:r61_1, r61_4 +#-----| Goto -> Block 8 # 63| Block 4 -# 63| r63_7(int) = Constant[1] : -# 63| r63_8(int) = Constant[-1] : -# 63| r63_9(bool) = CompareEQ : r63_7, r63_8 -# 63| v63_10(void) = ConditionalBranch : r63_9 -#-----| False -> Block 2 +# 63| r63_1(int) = Constant[0] : +# 63| r63_2(bool) = CompareEQ : r63_9, r63_1 +# 63| v63_3(void) = ConditionalBranch : r63_2 +#-----| False -> Block 5 +#-----| True -> Block 9 + +# 63| Block 5 +# 63| r63_4(int) = Constant[1] : +# 63| r63_5(bool) = CompareEQ : r63_9, r63_4 +# 63| v63_6(void) = ConditionalBranch : r63_5 +#-----| False -> Block 9 #-----| True -> Block 7 -# 64| Block 5 +# 63| Block 6 +# 63| m63_7(unknown) = Phi : from 0:m56_12, from 1:m60_7, from 2:m60_7 +# 63| m63_8(int) = Phi : from 0:m57_3, from 1:m59_5, from 2:m59_5 +# 63| r63_9(int) = Constant[1] : +# 63| r63_10(int) = Constant[-1] : +# 63| r63_11(bool) = CompareEQ : r63_9, r63_10 +# 63| v63_12(void) = ConditionalBranch : r63_11 +#-----| False -> Block 4 +#-----| True -> Block 9 + +# 64| Block 7 # 64| r64_1(glval) = FunctionAddress[sink] : # 64| r64_2(glval) = VariableAddress[x] : -# 64| r64_3(int) = Load[x] : &:r64_2, m59_5 +# 64| r64_3(int) = Load[x] : &:r64_2, m63_8 # 64| v64_4(void) = Call[sink] : func:r64_1, 0:r64_3 # 64| m64_5(unknown) = ^CallSideEffect : ~m56_4 # 64| m64_6(unknown) = Chi : total:m56_4, partial:m64_5 -#-----| Goto -> Block 6 +#-----| Goto -> Block 8 -# 66| Block 6 -# 66| m66_1(unknown) = Phi : from 1:~m56_4, from 5:~m64_6 -# 66| v66_2(void) = NoOp : +# 66| Block 8 +# 66| m66_1(unknown) = Phi : from 3:m60_7, from 7:m63_7 +# 66| m66_2(unknown) = Phi : from 3:~m56_4, from 7:~m64_6 +# 66| v66_3(void) = NoOp : # 56| v56_25(void) = ReturnIndirection[b] : &:r56_7, m56_8 -# 56| v56_26(void) = ReturnIndirection[c] : &:r56_11, m60_7 +# 56| v56_26(void) = ReturnIndirection[c] : &:r56_11, m66_1 # 56| v56_27(void) = ReturnIndirection[d] : &:r56_15, m56_16 # 56| v56_28(void) = ReturnIndirection[e] : &:r56_19, m56_20 # 56| v56_29(void) = ReturnIndirection[f] : &:r56_23, m56_24 # 56| v56_30(void) = ReturnVoid : -# 56| v56_31(void) = AliasedUse : ~m66_1 +# 56| v56_31(void) = AliasedUse : ~m66_2 # 56| v56_32(void) = ExitFunction : -# 56| Block 7 +# 56| Block 9 # 56| v56_33(void) = Unreached : try_except.cpp: diff --git a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected index 7d4024c27e9..b521dd6b503 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -37564,16 +37564,8 @@ try_except.c: # 59| r59_1(glval) = VariableAddress[b] : # 59| r59_2(int *) = Load[b] : &:r59_1, ~m? # 59| r59_3(int) = Load[?] : &:r59_2, ~m? -# 59| r59_4(glval) = VariableAddress[x] : -# 59| mu59_5(int) = Store[x] : &:r59_4, r59_3 -# 60| r60_1(glval) = VariableAddress[x] : -# 60| r60_2(int) = Load[x] : &:r60_1, ~m? -# 60| r60_3(glval) = VariableAddress[c] : -# 60| r60_4(int *) = Load[c] : &:r60_3, ~m? -# 60| r60_5(glval) = CopyValue : r60_4 -# 60| mu60_6(int) = Store[?] : &:r60_5, r60_2 #-----| Goto -> Block 3 -#-----| SEH Exception -> Block 6 +#-----| SEH Exception -> Block 8 # 56| Block 1 # 56| v56_24(void) = AliasedUse : ~m? @@ -37583,44 +37575,60 @@ try_except.c: # 56| v56_26(void) = Unwind : #-----| Goto -> Block 1 -# 61| Block 3 +# 59| Block 3 +# 59| r59_4(glval) = VariableAddress[x] : +# 59| mu59_5(int) = Store[x] : &:r59_4, r59_3 +# 60| r60_1(glval) = VariableAddress[x] : +# 60| r60_2(int) = Load[x] : &:r60_1, ~m? +# 60| r60_3(glval) = VariableAddress[c] : +# 60| r60_4(int *) = Load[c] : &:r60_3, ~m? +# 60| r60_5(glval) = CopyValue : r60_4 +# 60| mu60_6(int) = Store[?] : &:r60_5, r60_2 +#-----| Goto -> Block 4 +#-----| SEH Exception -> Block 8 + +# 61| Block 4 # 61| r61_1(glval) = VariableAddress[y] : # 61| r61_2(glval) = VariableAddress[d] : # 61| r61_3(int *) = Load[d] : &:r61_2, ~m? # 61| r61_4(int) = Load[?] : &:r61_3, ~m? -# 61| mu61_5(int) = Store[y] : &:r61_1, r61_4 -#-----| Goto -> Block 8 +#-----| Goto -> Block 5 +#-----| SEH Exception -> Block 8 -# 63| Block 4 +# 61| Block 5 +# 61| mu61_5(int) = Store[y] : &:r61_1, r61_4 +#-----| Goto -> Block 10 + +# 63| Block 6 # 63| r63_1(int) = Constant[0] : # 63| r63_2(bool) = CompareEQ : r63_7, r63_1 # 63| v63_3(void) = ConditionalBranch : r63_2 -#-----| False -> Block 5 +#-----| False -> Block 7 #-----| True -> Block 2 -# 63| Block 5 +# 63| Block 7 # 63| r63_4(int) = Constant[1] : # 63| r63_5(bool) = CompareEQ : r63_7, r63_4 # 63| v63_6(void) = ConditionalBranch : r63_5 -#-----| True -> Block 7 +#-----| True -> Block 9 -# 63| Block 6 +# 63| Block 8 # 63| r63_7(int) = Constant[1] : # 63| r63_8(int) = Constant[-1] : # 63| r63_9(bool) = CompareEQ : r63_7, r63_8 # 63| v63_10(void) = ConditionalBranch : r63_9 -#-----| False -> Block 4 +#-----| False -> Block 6 #-----| True -> Block 2 -# 64| Block 7 +# 64| Block 9 # 64| r64_1(glval) = FunctionAddress[sink] : # 64| r64_2(glval) = VariableAddress[x] : # 64| r64_3(int) = Load[x] : &:r64_2, ~m? # 64| v64_4(void) = Call[sink] : func:r64_1, 0:r64_3 # 64| mu64_5(unknown) = ^CallSideEffect : ~m? -#-----| Goto -> Block 8 +#-----| Goto -> Block 10 -# 66| Block 8 +# 66| Block 10 # 66| v66_1(void) = NoOp : # 56| v56_27(void) = ReturnIndirection[b] : &:r56_6, ~m? # 56| v56_28(void) = ReturnIndirection[c] : &:r56_10, ~m? From eca69e1654ada174cebf3d287fd83303a8e39cfb Mon Sep 17 00:00:00 2001 From: Napalys Klicius Date: Mon, 16 Jun 2025 12:59:36 +0200 Subject: [PATCH 090/150] JS: remove `serialize-javascript` from `JsonParsers.qll` as it is not a parser --- javascript/ql/lib/semmle/javascript/JsonParsers.qll | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/javascript/ql/lib/semmle/javascript/JsonParsers.qll b/javascript/ql/lib/semmle/javascript/JsonParsers.qll index e3f1f285a21..f447f0e41c9 100644 --- a/javascript/ql/lib/semmle/javascript/JsonParsers.qll +++ b/javascript/ql/lib/semmle/javascript/JsonParsers.qll @@ -33,8 +33,7 @@ private class PlainJsonParserCall extends JsonParserCall { callee = DataFlow::moduleImport("parse-json") or callee = DataFlow::moduleImport("json-parse-better-errors") or callee = DataFlow::moduleImport("json-safe-parse") or - callee = AngularJS::angular().getAPropertyRead("fromJson") or - callee = DataFlow::moduleImport("serialize-javascript") + callee = AngularJS::angular().getAPropertyRead("fromJson") ) } From 41f71386278212e512eea15950a0c0de16105fb5 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 16 Jun 2025 13:47:51 +0200 Subject: [PATCH 091/150] Shared: Make sure `getMadRepresentation` is unique --- .../dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll b/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll index 244cc573197..e6da5d3a37f 100644 --- a/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll @@ -686,6 +686,11 @@ module Make< derivedFluentFlowPush(_, _, _, head, tail, _) } + pragma[nomagic] + private string getUniqueMadRepresentation(SummaryComponent c) { + result = strictconcat(string s | s = c.getMadRepresentation() | s, "/") + } + /** * A (non-empty) stack of summary components. * @@ -732,7 +737,7 @@ module Make< exists(SummaryComponent head, SummaryComponentStack tail | head = this.head() and tail = this.tail() and - result = tail.getMadRepresentation() + "." + head.getMadRepresentation() + result = tail.getMadRepresentation() + "." + getUniqueMadRepresentation(head) ) or exists(SummaryComponent c | From 631b14a0dff7abc9915917402d3866149d37f23a Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 16 Jun 2025 13:48:20 +0200 Subject: [PATCH 092/150] Rust: Fix three models --- .../lib/codeql/rust/frameworks/stdlib/lang-core.model.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml index bb29e3f86c1..d998a3bf068 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml @@ -4,9 +4,9 @@ extensions: extensible: summaryModel data: # Iterator - - ["lang:core", "<[_]>::iter", "Argument[Self].Element", "ReturnValue.Element", "value", "manual"] - - ["lang:core", "<[_]>::iter_mut", "Argument[Self].Element", "ReturnValue.Element", "value", "manual"] - - ["lang:core", "<[_]>::into_iter", "Argument[Self].Element", "ReturnValue.Element", "value", "manual"] + - ["lang:core", "<[_]>::iter", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] + - ["lang:core", "<[_]>::iter_mut", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] + - ["lang:core", "<[_]>::into_iter", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] - ["lang:core", "crate::iter::traits::iterator::Iterator::nth", "Argument[self].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "manual"] - ["lang:core", "crate::iter::traits::iterator::Iterator::next", "Argument[self].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "manual"] - ["lang:core", "crate::iter::traits::iterator::Iterator::collect", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] From b112b93d7527a87614b8c9f72567060433f04540 Mon Sep 17 00:00:00 2001 From: idrissrio Date: Mon, 16 Jun 2025 11:30:19 +0200 Subject: [PATCH 093/150] C++: add `namespaceattributes` table to store namespace attributes --- cpp/ql/lib/semmlecode.cpp.dbscheme | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme b/cpp/ql/lib/semmlecode.cpp.dbscheme index a8c2176e9a5..9baef67d1ff 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme @@ -1139,6 +1139,11 @@ varattributes( int spec_id: @attribute ref ); +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + stmtattributes( int stmt_id: @stmt ref, int spec_id: @attribute ref From e6f118374f8aabe5d9f98c44713878f22051ca7a Mon Sep 17 00:00:00 2001 From: idrissrio Date: Mon, 16 Jun 2025 11:41:01 +0200 Subject: [PATCH 094/150] C++: add predicate to `Namespace` class to retrieve associated attributes --- cpp/ql/lib/semmle/code/cpp/Namespace.qll | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cpp/ql/lib/semmle/code/cpp/Namespace.qll b/cpp/ql/lib/semmle/code/cpp/Namespace.qll index dc138f67524..b63beef3f4a 100644 --- a/cpp/ql/lib/semmle/code/cpp/Namespace.qll +++ b/cpp/ql/lib/semmle/code/cpp/Namespace.qll @@ -99,6 +99,11 @@ class Namespace extends NameQualifyingElement, @namespace { /** Gets a file which declares (part of) this namespace. */ File getAFile() { result = this.getADeclarationEntry().getLocation().getFile() } + + /** Gets an attribute of this namespace. */ + Attribute getAnAttribute() { + namespaceattributes(underlyingElement(this), unresolveElement(result)) + } } /** From 927c220ddca201c44c18c4ea18ff24bbc1140cc3 Mon Sep 17 00:00:00 2001 From: idrissrio Date: Mon, 16 Jun 2025 11:41:34 +0200 Subject: [PATCH 095/150] C++: add change note for `Namespace` --- cpp/ql/lib/change-notes/2025-06-16-namespace-attributes.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 cpp/ql/lib/change-notes/2025-06-16-namespace-attributes.md diff --git a/cpp/ql/lib/change-notes/2025-06-16-namespace-attributes.md b/cpp/ql/lib/change-notes/2025-06-16-namespace-attributes.md new file mode 100644 index 00000000000..cbed27e109c --- /dev/null +++ b/cpp/ql/lib/change-notes/2025-06-16-namespace-attributes.md @@ -0,0 +1,4 @@ +--- +category: feature +--- +* Added a predicate `getAnAttribute` to `Namespace` to retrieve a namespace attribute. From fc9e5bdbf7b9806174d0c35b1bd7a4a3ca9abe80 Mon Sep 17 00:00:00 2001 From: idrissrio Date: Mon, 16 Jun 2025 12:01:24 +0200 Subject: [PATCH 096/150] C++: add upgrade and downgrade scripts --- .../old.dbscheme | 2499 +++++++++++++++++ .../semmlecode.cpp.dbscheme | 2494 ++++++++++++++++ .../upgrade.properties | 3 + .../old.dbscheme | 2494 ++++++++++++++++ .../semmlecode.cpp.dbscheme | 2499 +++++++++++++++++ .../upgrade.properties | 2 + 6 files changed, 9991 insertions(+) create mode 100644 cpp/downgrades/9baef67d1ffc1551429dbe1c1130815693e28218/old.dbscheme create mode 100644 cpp/downgrades/9baef67d1ffc1551429dbe1c1130815693e28218/semmlecode.cpp.dbscheme create mode 100644 cpp/downgrades/9baef67d1ffc1551429dbe1c1130815693e28218/upgrade.properties create mode 100644 cpp/ql/lib/upgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/old.dbscheme create mode 100644 cpp/ql/lib/upgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/semmlecode.cpp.dbscheme create mode 100644 cpp/ql/lib/upgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/upgrade.properties diff --git a/cpp/downgrades/9baef67d1ffc1551429dbe1c1130815693e28218/old.dbscheme b/cpp/downgrades/9baef67d1ffc1551429dbe1c1130815693e28218/old.dbscheme new file mode 100644 index 00000000000..9baef67d1ff --- /dev/null +++ b/cpp/downgrades/9baef67d1ffc1551429dbe1c1130815693e28218/old.dbscheme @@ -0,0 +1,2499 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/downgrades/9baef67d1ffc1551429dbe1c1130815693e28218/semmlecode.cpp.dbscheme b/cpp/downgrades/9baef67d1ffc1551429dbe1c1130815693e28218/semmlecode.cpp.dbscheme new file mode 100644 index 00000000000..a8c2176e9a5 --- /dev/null +++ b/cpp/downgrades/9baef67d1ffc1551429dbe1c1130815693e28218/semmlecode.cpp.dbscheme @@ -0,0 +1,2494 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/downgrades/9baef67d1ffc1551429dbe1c1130815693e28218/upgrade.properties b/cpp/downgrades/9baef67d1ffc1551429dbe1c1130815693e28218/upgrade.properties new file mode 100644 index 00000000000..07a8d70b052 --- /dev/null +++ b/cpp/downgrades/9baef67d1ffc1551429dbe1c1130815693e28218/upgrade.properties @@ -0,0 +1,3 @@ +description: Add a predicate `getAnAttribute` to `Namespace` +compatibility: full +namespaceattributes.rel: delete diff --git a/cpp/ql/lib/upgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/old.dbscheme b/cpp/ql/lib/upgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/old.dbscheme new file mode 100644 index 00000000000..a8c2176e9a5 --- /dev/null +++ b/cpp/ql/lib/upgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/old.dbscheme @@ -0,0 +1,2494 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/semmlecode.cpp.dbscheme new file mode 100644 index 00000000000..9baef67d1ff --- /dev/null +++ b/cpp/ql/lib/upgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/semmlecode.cpp.dbscheme @@ -0,0 +1,2499 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/upgrade.properties b/cpp/ql/lib/upgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/upgrade.properties new file mode 100644 index 00000000000..9a6e7e428a7 --- /dev/null +++ b/cpp/ql/lib/upgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/upgrade.properties @@ -0,0 +1,2 @@ +description: Add a predicate `getAnAttribute` to `Namespace` +compatibility: backwards From 09bc57a003fc70ae8d1ac13dc61c31e2b7eca513 Mon Sep 17 00:00:00 2001 From: idrissrio Date: Mon, 16 Jun 2025 14:25:45 +0200 Subject: [PATCH 097/150] C++: update stats file --- cpp/ql/lib/semmlecode.cpp.dbscheme.stats | 10228 +++++++++++---------- 1 file changed, 5263 insertions(+), 4965 deletions(-) diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats index 089d69c641c..a09e3c44d34 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats @@ -2,7 +2,7 @@ @compilation - 15785 + 14477 @externalDataElement @@ -18,63 +18,63 @@ @location_default - 36090723 + 36187125 @location_stmt - 5203175 + 5217074 @location_expr - 17959858 + 18007831 @diagnostic - 1588 + 1484 @file - 81417 + 74673 @folder - 15468 + 14187 @macro_expansion - 39234203 + 39310397 @other_macro_reference - 312446 + 300692 @function - 4000085 + 4010769 @fun_decl - 4138135 + 4149688 @var_decl - 9237636 + 9262560 @type_decl - 1840533 + 1687983 @namespace_decl - 429821 + 430961 @using_declaration - 334532 + 306602 @using_directive - 8117 + 6474 @using_enum_declaration @@ -82,27 +82,27 @@ @static_assert - 183028 + 183513 @parameter - 6939004 + 6957539 @membervariable - 1489415 + 1493394 @globalvariable - 486788 + 488088 @localvariable - 727548 + 725943 @enumconstant - 343845 + 344763 @errortype @@ -334,35 +334,35 @@ @pointer - 470186 + 455607 @type_with_specifiers - 693863 + 695716 @array - 98055 + 98317 @routineptr - 857913 + 684228 @reference - 966848 + 969430 @gnu_vector - 843 + 774 @routinereference - 469 + 374 @rvalue_reference - 290677 + 291453 @block @@ -370,51 +370,51 @@ @decltype - 102076 + 102348 @type_operator - 8519 + 7960 @usertype - 4863363 + 4459321 @mangledname - 6313668 + 6330532 @type_mention - 5813149 + 5828677 @concept_template - 3868 + 3614 @routinetype - 757852 + 604424 @ptrtomember - 12026 + 11030 @specifier - 7724 + 7745 @gnuattribute - 559459 + 559628 @stdattribute - 349236 + 350169 @declspec - 328850 + 329728 @msattribute @@ -422,19 +422,19 @@ @alignas - 2171 + 2166 @attribute_arg_token - 20935 + 16696 @attribute_arg_constant_expr - 86916 + 82159 @attribute_arg_expr - 1753 + 1608 @attribute_arg_empty @@ -446,23 +446,23 @@ @attribute_arg_type - 461 + 460 @derivation - 598061 + 476983 @frienddecl - 878379 + 700584 @comment - 11190894 + 11220785 @namespace - 10800 + 9905 @specialnamequalifyingelement @@ -470,15 +470,15 @@ @namequalifier - 3255226 + 3041824 @value - 13438640 + 13474536 @initialiser - 2334426 + 2340619 @address_of @@ -486,131 +486,131 @@ @indirect - 403075 + 404151 @array_to_pointer - 1948652 + 1953741 @parexpr - 4902380 + 4915183 @arithnegexpr - 585003 + 586531 @unaryplusexpr - 4081 + 4072 @complementexpr - 38098 + 38199 @notexpr - 357277 + 355762 @postincrexpr - 84372 + 84597 @postdecrexpr - 57244 + 57394 @preincrexpr - 96455 + 96713 @predecrexpr - 35725 + 35820 @conditionalexpr - 895536 + 897875 @addexpr - 570027 + 571550 @subexpr - 465581 + 466797 @mulexpr - 434630 + 435791 @divexpr - 58999 + 54099 @remexpr - 20080 + 16015 @paddexpr - 118353 + 118669 @psubexpr - 67856 + 68037 @pdiffexpr - 43732 + 43849 @lshiftexpr - 550224 + 551693 @rshiftexpr - 200019 + 200553 @andexpr - 479933 + 481215 @orexpr - 193537 + 194054 @xorexpr - 73778 + 73975 @eqexpr - 641655 + 643368 @neexpr - 410795 + 411868 @gtexpr - 110852 + 111148 @ltexpr - 139057 + 139428 @geexpr - 81166 + 81383 @leexpr - 291256 + 292034 @assignexpr - 1277725 + 1281138 @assignaddexpr @@ -618,23 +618,23 @@ @assignsubexpr - 15266 + 15307 @assignmulexpr - 13754 + 12614 @assigndivexpr - 6791 + 6809 @assignremexpr - 872 + 874 @assignlshiftexpr - 3694 + 3704 @assignrshiftexpr @@ -642,95 +642,95 @@ @assignandexpr - 6510 + 6528 @assignorexpr - 19554 + 19606 @assignxorexpr - 29829 + 29909 @assignpaddexpr - 18578 + 18627 @assignpsubexpr - 1571 + 1575 @andlogicalexpr - 345664 + 346587 @orlogicalexpr - 1100577 + 1103517 @commaexpr - 168450 + 168900 @subscriptexpr - 433981 + 435140 @callexpr - 300697 + 261549 @vastartexpr - 5071 + 5085 @vaargexpr - 1300 + 1303 @vaendexpr - 2933 + 2941 @vacopyexpr - 170 + 136 @varaccess - 8232599 + 8254589 @runtime_sizeof - 400974 + 402045 @runtime_alignof - 62549 + 49885 @expr_stmt - 147968 + 148363 @routineexpr - 6134317 + 5732152 @type_operand - 1401612 + 1405356 @offsetofexpr - 148626 + 149023 @typescompexpr - 700060 + 701930 @literal - 6102027 + 7967615 @aggregateliteral @@ -738,43 +738,43 @@ @c_style_cast - 6026988 + 6026987 @temp_init - 1073608 + 992498 @errorexpr - 57293 + 45694 @reference_to - 2182339 + 1902971 @ref_indirect - 2642699 + 2107682 @vacuous_destructor_call - 9826 + 7837 @assume - 4383 + 4394 @conjugation - 13 + 12 @realpartexpr - 92 + 84 @imagpartexpr - 92 + 84 @jmulexpr @@ -814,35 +814,35 @@ @thisaccess - 1514601 + 1518618 @new_expr - 57934 + 46205 @delete_expr - 14398 + 11483 @throw_expr - 26079 + 24109 @condition_decl - 437589 + 408900 @braced_init_list - 2328 + 2152 @type_id - 60071 + 47909 @sizeof_pack - 2178 + 1737 @hasassignexpr @@ -886,15 +886,15 @@ @isabstractexpr - 74 + 68 @isbaseofexpr - 276 + 259 @isclassexpr - 2531 + 2538 @isconvtoexpr @@ -902,15 +902,15 @@ @isemptyexpr - 8846 + 8869 @isenumexpr - 2990 + 2998 @ispodexpr - 1041 + 955 @ispolyexpr @@ -926,75 +926,75 @@ @hastrivialdestructor - 3503 + 2794 @uuidof - 27985 + 28060 @delete_array_expr - 1556 + 1427 @new_array_expr - 6914 + 6933 @foldexpr - 1367 + 1247 @ctordirectinit - 141461 + 112822 @ctorvirtualinit - 5041 + 4020 @ctorfieldinit - 257929 + 206503 @ctordelegatinginit - 3613 + 3622 @dtordirectdestruct - 49432 + 39424 @dtorvirtualdestruct - 4998 + 3986 @dtorfielddestruct - 49945 + 39833 @static_cast - 387985 + 389021 @reinterpret_cast - 41729 + 41839 @const_cast - 30676 + 24465 @dynamic_cast - 989 + 907 @lambdaexpr - 17730 + 16482 @param_ref - 177449 + 164043 @noopexpr @@ -1002,7 +1002,7 @@ @istriviallyconstructibleexpr - 3737 + 3747 @isdestructibleexpr @@ -1014,19 +1014,19 @@ @istriviallydestructibleexpr - 996 + 999 @istriviallyassignableexpr - 3737 + 3747 @isnothrowassignableexpr - 5108 + 5121 @istrivialexpr - 3644 + 3369 @isstandardlayoutexpr @@ -1034,7 +1034,7 @@ @istriviallycopyableexpr - 1538 + 1226 @isliteraltypeexpr @@ -1054,11 +1054,11 @@ @isconstructibleexpr - 3613 + 3622 @isnothrowconstructibleexpr - 20682 + 20737 @hasfinalizerexpr @@ -1094,11 +1094,11 @@ @isfinalexpr - 11792 + 9404 @noexceptexpr - 30678 + 28361 @builtinshufflevector @@ -1106,11 +1106,11 @@ @builtinchooseexpr - 20646 + 20701 @builtinaddressof - 16278 + 15490 @vec_fill @@ -1126,7 +1126,7 @@ @spaceshipexpr - 1404 + 1312 @co_await @@ -1138,7 +1138,7 @@ @isassignable - 437 + 408 @isaggregate @@ -1146,7 +1146,7 @@ @hasuniqueobjectrepresentations - 46 + 43 @builtinbitcast @@ -1154,7 +1154,7 @@ @builtinshuffle - 764 + 701 @blockassignexpr @@ -1162,7 +1162,7 @@ @issame - 4858 + 4539 @isfunction @@ -1270,7 +1270,7 @@ @reuseexpr - 906424 + 846996 @istriviallycopyassignable @@ -1326,7 +1326,7 @@ @referenceconstructsfromtemporary - 46 + 43 @referenceconvertsfromtemporary @@ -1334,7 +1334,7 @@ @isconvertible - 138 + 129 @isvalidwinrttype @@ -1366,99 +1366,99 @@ @c11_generic - 30036 + 30117 @requires_expr - 17660 + 16502 @nested_requirement - 736 + 688 @compound_requirement - 11719 + 10951 @concept_id - 96774 + 90429 @lambdacapture - 28450 + 28526 @stmt_expr - 2026191 + 2031604 @stmt_if - 987571 + 990209 @stmt_while - 39542 + 39647 @stmt_goto - 151183 + 151587 @stmt_label - 72512 + 72705 @stmt_return - 1507458 + 1254954 @stmt_block - 1839752 + 1844666 @stmt_end_test_while - 233017 + 233640 @stmt_for - 84163 + 84388 @stmt_switch_case - 894774 + 836109 @stmt_switch - 440744 + 411847 @stmt_asm - 64027 + 64198 @stmt_decl - 767031 + 769065 @stmt_empty - 459509 + 429382 @stmt_continue - 28016 + 28091 @stmt_break - 139921 + 140292 @stmt_try_block - 28885 + 26703 @stmt_microsoft_try - 223 + 224 @stmt_set_vla_size @@ -1470,19 +1470,19 @@ @stmt_assigned_goto - 12393 + 12426 @stmt_range_based_for - 7391 + 6388 @stmt_handler - 47330 + 43754 @stmt_constexpr_if - 103537 + 103814 @stmt_co_return @@ -1502,51 +1502,51 @@ @ppd_if - 587335 + 588904 @ppd_ifdef - 213791 + 214362 @ppd_ifndef - 157824 + 158245 @ppd_elif - 27363 + 25096 @ppd_else - 235606 + 236236 @ppd_endif - 883245 + 885604 @ppd_plain_include - 397725 + 364778 @ppd_define - 2739070 + 2746387 @ppd_undef - 100671 + 100940 @ppd_pragma - 405677 + 406761 @ppd_include_next - 213 + 170 @ppd_line - 18866 + 18825 @ppd_error @@ -1574,7 +1574,7 @@ @link_target - 923 + 846 @xmldtd @@ -1604,15 +1604,15 @@ compilations - 15785 + 14477 id - 15785 + 14477 cwd - 13 + 12 @@ -1626,7 +1626,7 @@ 1 2 - 15785 + 14477 @@ -1642,7 +1642,7 @@ 1197 1198 - 13 + 12 @@ -1652,19 +1652,19 @@ compilation_args - 1263740 + 1159054 id - 15785 + 14477 num - 1833 + 1681 arg - 36541 + 33514 @@ -1678,77 +1678,77 @@ 36 42 - 1252 + 1149 42 43 - 1371 + 1257 43 44 - 896 + 822 44 45 - 632 + 580 45 51 - 1186 + 1088 51 70 - 606 + 556 71 72 - 883 + 810 72 90 - 1120 + 1028 94 96 - 487 + 447 98 99 - 1674 + 1536 100 102 - 118 + 108 103 104 - 2492 + 2285 104 119 - 1331 + 1221 120 138 - 1160 + 1064 139 140 - 567 + 520 @@ -1764,72 +1764,72 @@ 34 38 - 738 + 677 38 39 - 1872 + 1717 39 40 - 1226 + 1124 40 42 - 1358 + 1245 42 53 - 751 + 689 53 54 - 883 + 810 54 63 - 1120 + 1028 64 67 - 501 + 459 67 68 - 1753 + 1608 68 70 - 1213 + 1112 70 71 - 1753 + 1608 73 79 - 1186 + 1088 79 89 - 1411 + 1294 89 90 - 13 + 12 @@ -1845,57 +1845,57 @@ 43 90 - 79 + 72 90 108 - 145 + 133 108 183 - 131 + 120 198 422 - 145 + 133 422 595 - 158 + 145 595 605 - 158 + 145 605 749 - 145 + 133 750 778 - 145 + 133 781 883 - 145 + 133 930 1190 - 105 + 96 1197 1198 - 474 + 435 @@ -1911,72 +1911,72 @@ 1 5 - 158 + 145 5 7 - 145 + 133 9 12 - 92 + 84 12 15 - 145 + 133 15 18 - 118 + 108 18 22 - 145 + 133 22 27 - 158 + 145 27 29 - 105 + 96 29 34 - 145 + 133 34 44 - 158 + 145 45 63 - 145 + 133 67 94 - 145 + 133 94 164 - 145 + 133 171 199 - 26 + 24 @@ -1992,22 +1992,22 @@ 1 2 - 16734 + 15348 2 3 - 15837 + 14525 3 103 - 2742 + 2515 104 1198 - 1226 + 1124 @@ -2023,17 +2023,17 @@ 1 2 - 24198 + 22193 2 3 - 10892 + 9990 3 62 - 1450 + 1330 @@ -2043,15 +2043,15 @@ compilation_build_mode - 15785 + 14477 id - 15785 + 14477 mode - 13 + 12 @@ -2065,7 +2065,7 @@ 1 2 - 15785 + 14477 @@ -2081,7 +2081,7 @@ 1197 1198 - 13 + 12 @@ -2091,19 +2091,19 @@ compilation_compiling_files - 15785 + 15742 id - 15785 + 2723 num - 13 + 4521 file - 7226 + 13672 @@ -2117,7 +2117,42 @@ 1 2 - 15785 + 1361 + + + 2 + 3 + 163 + + + 3 + 4 + 163 + + + 4 + 5 + 326 + + + 5 + 8 + 163 + + + 8 + 9 + 163 + + + 9 + 13 + 217 + + + 21 + 84 + 163 @@ -2133,7 +2168,42 @@ 1 2 - 15785 + 1361 + + + 2 + 3 + 163 + + + 3 + 4 + 163 + + + 4 + 5 + 326 + + + 5 + 8 + 163 + + + 8 + 9 + 163 + + + 9 + 13 + 217 + + + 21 + 84 + 163 @@ -2147,9 +2217,29 @@ 12 - 1197 - 1198 - 13 + 1 + 2 + 2396 + + + 2 + 3 + 980 + + + 3 + 4 + 490 + + + 4 + 13 + 381 + + + 13 + 51 + 272 @@ -2163,9 +2253,29 @@ 12 - 548 - 549 - 13 + 1 + 2 + 2396 + + + 2 + 3 + 980 + + + 3 + 4 + 490 + + + 4 + 13 + 381 + + + 13 + 49 + 272 @@ -2181,17 +2291,17 @@ 1 2 - 171 + 12311 2 - 3 - 7028 + 4 + 1143 - 28 - 91 - 26 + 4 + 6 + 217 @@ -2207,7 +2317,17 @@ 1 2 - 7226 + 12528 + + + 2 + 4 + 1089 + + + 4 + 5 + 54 @@ -2217,23 +2337,23 @@ compilation_time - 62876 + 62971 id - 15719 + 2723 num - 13 + 4521 kind - 52 + 217 seconds - 17473 + 13346 @@ -2247,160 +2367,290 @@ 1 2 - 15719 + 1361 - - - - - - id - kind - - - 12 - - - 4 - 5 - 15719 - - - - - - - id - seconds - - - 12 - 2 3 - 145 + 163 3 4 - 7819 + 163 4 5 - 7754 + 326 - - - - - - num - id - - - 12 - - 1192 - 1193 - 13 + 5 + 8 + 163 - - - - - - num - kind - - - 12 - - 4 - 5 - 13 + 8 + 9 + 163 - - - - - - num - seconds - - - 12 - - - 1325 - 1326 - 13 - - - - - - - kind - id - - - 12 - - - 1192 - 1193 - 52 - - - - - - - kind - num - - - 12 - - - 1 - 2 - 52 - - - - - - - kind - seconds - - - 12 - 9 - 10 - 13 - - - 12 13 - 13 + 217 - 705 - 706 - 13 + 21 + 84 + 163 + + + + + + + id + kind + + + 12 + + + 4 + 5 + 2723 + + + + + + + id + seconds + + + 12 + + + 3 + 4 + 708 - 795 - 796 - 13 + 4 + 5 + 653 + + + 6 + 8 + 217 + + + 8 + 9 + 108 + + + 10 + 11 + 163 + + + 11 + 13 + 217 + + + 14 + 16 + 108 + + + 16 + 20 + 217 + + + 20 + 38 + 217 + + + 48 + 87 + 108 + + + + + + + num + id + + + 12 + + + 1 + 2 + 2396 + + + 2 + 3 + 980 + + + 3 + 4 + 490 + + + 4 + 13 + 381 + + + 13 + 51 + 272 + + + + + + + num + kind + + + 12 + + + 4 + 5 + 4521 + + + + + + + num + seconds + + + 12 + + + 3 + 4 + 1470 + + + 4 + 5 + 926 + + + 5 + 6 + 326 + + + 6 + 7 + 490 + + + 7 + 8 + 163 + + + 8 + 9 + 326 + + + 9 + 17 + 381 + + + 22 + 48 + 381 + + + 87 + 88 + 54 + + + + + + + kind + id + + + 12 + + + 50 + 51 + 217 + + + + + + + kind + num + + + 12 + + + 83 + 84 + 217 + + + + + + + kind + seconds + + + 12 + + + 3 + 4 + 54 + + + 4 + 5 + 54 + + + 132 + 133 + 54 + + + 142 + 143 + 54 @@ -2416,22 +2666,27 @@ 1 2 - 11195 + 7190 2 3 - 3626 + 3322 3 4 - 1384 + 1470 4 - 703 - 1265 + 7 + 1089 + + + 7 + 45 + 272 @@ -2447,7 +2702,32 @@ 1 2 - 17473 + 6373 + + + 2 + 3 + 2941 + + + 3 + 4 + 1525 + + + 4 + 5 + 926 + + + 5 + 8 + 1089 + + + 8 + 75 + 490 @@ -2463,17 +2743,12 @@ 1 2 - 14914 + 11384 2 3 - 2531 - - - 3 - 4 - 26 + 1961 @@ -2483,23 +2758,23 @@ diagnostic_for - 4443 + 4152 diagnostic - 1588 + 1484 compilation - 1450 + 1355 file_number - 23 + 21 file_number_diagnostic_number - 115 + 107 @@ -2513,12 +2788,12 @@ 1 2 - 1542 + 1441 63 64 - 46 + 43 @@ -2534,7 +2809,7 @@ 1 2 - 1588 + 1484 @@ -2550,7 +2825,7 @@ 1 2 - 1588 + 1484 @@ -2566,12 +2841,12 @@ 3 4 - 1404 + 1312 5 6 - 46 + 43 @@ -2587,7 +2862,7 @@ 1 2 - 1450 + 1355 @@ -2603,12 +2878,12 @@ 3 4 - 1404 + 1312 5 6 - 46 + 43 @@ -2624,7 +2899,7 @@ 69 70 - 23 + 21 @@ -2640,7 +2915,7 @@ 63 64 - 23 + 21 @@ -2656,7 +2931,7 @@ 5 6 - 23 + 21 @@ -2672,17 +2947,17 @@ 1 2 - 46 + 43 2 3 - 46 + 43 63 64 - 23 + 21 @@ -2698,12 +2973,12 @@ 2 3 - 46 + 43 63 64 - 69 + 64 @@ -2719,7 +2994,7 @@ 1 2 - 115 + 107 @@ -2729,19 +3004,19 @@ compilation_finished - 15785 + 14477 id - 15785 + 14477 cpu_seconds - 11894 + 10957 elapsed_seconds - 224 + 217 @@ -2755,7 +3030,7 @@ 1 2 - 15785 + 14477 @@ -2771,7 +3046,7 @@ 1 2 - 15785 + 14477 @@ -2787,17 +3062,17 @@ 1 2 - 10075 + 9204 2 3 - 1345 + 1306 3 - 36 - 474 + 34 + 447 @@ -2813,12 +3088,12 @@ 1 2 - 10984 + 10353 2 3 - 909 + 604 @@ -2831,70 +3106,75 @@ 12 + + 1 + 2 + 12 + 2 3 - 52 + 60 - 3 - 4 - 13 + 9 + 10 + 12 - 5 - 6 - 13 - - - 7 - 8 - 13 + 10 + 11 + 12 12 13 - 13 + 12 13 14 - 13 + 12 - 17 - 18 - 26 + 14 + 15 + 12 + + + 21 + 22 + 12 30 31 - 13 + 12 - 52 - 53 - 13 + 50 + 51 + 12 - 145 - 146 - 13 + 160 + 161 + 12 261 262 - 13 + 12 - 303 - 304 - 13 + 278 + 279 + 12 - 324 - 325 - 13 + 328 + 329 + 12 @@ -2907,70 +3187,70 @@ 12 + + 1 + 2 + 12 + 2 3 - 52 + 60 - 3 - 4 - 13 - - - 5 - 6 - 13 - - - 7 - 8 - 13 + 9 + 10 + 24 12 13 - 13 + 12 13 14 - 13 + 12 - 17 - 18 - 26 + 14 + 15 + 12 - 30 - 31 - 13 + 21 + 22 + 12 + + + 29 + 30 + 12 49 50 - 13 + 12 - 141 - 142 - 13 + 150 + 151 + 12 - 174 - 175 - 13 + 172 + 173 + 12 - 239 - 240 - 13 + 227 + 228 + 12 - 256 - 257 - 13 + 240 + 241 + 12 @@ -4742,31 +5022,31 @@ locations_default - 36090723 + 36187125 id - 36090723 + 36187125 container - 40866 + 40975 startLine - 7467157 + 7487103 startColumn - 21180 + 21237 endLine - 7469151 + 7489102 endColumn - 53326 + 53468 @@ -4780,7 +5060,7 @@ 1 2 - 36090723 + 36187125 @@ -4796,7 +5076,7 @@ 1 2 - 36090723 + 36187125 @@ -4812,7 +5092,7 @@ 1 2 - 36090723 + 36187125 @@ -4828,7 +5108,7 @@ 1 2 - 36090723 + 36187125 @@ -4844,7 +5124,7 @@ 1 2 - 36090723 + 36187125 @@ -4860,67 +5140,67 @@ 1 15 - 3114 + 3123 15 41 - 3114 + 3123 42 66 - 3364 + 3373 67 95 - 3114 + 3123 98 124 - 3239 + 3248 124 174 - 3364 + 3373 175 228 - 3114 + 3123 230 303 - 3114 + 3123 305 406 - 3114 + 3123 408 596 - 3239 + 3248 598 943 - 3114 + 3123 986 2568 - 3114 + 3123 2587 57658 - 2741 + 2748 @@ -4936,67 +5216,67 @@ 1 13 - 3488 + 3497 13 29 - 3239 + 3248 29 42 - 3114 + 3123 42 58 - 3364 + 3373 58 76 - 3114 + 3123 77 102 - 3239 + 3248 102 134 - 3114 + 3123 134 173 - 3114 + 3123 173 242 - 3114 + 3123 243 348 - 3114 + 3123 348 489 - 3114 + 3123 493 1269 - 3114 + 3123 1337 57597 - 2616 + 2623 @@ -5012,67 +5292,67 @@ 1 4 - 2242 + 2248 4 7 - 3114 + 3123 7 12 - 3488 + 3497 12 16 - 3114 + 3123 16 22 - 3364 + 3373 22 28 - 3114 + 3123 28 33 - 3239 + 3248 33 39 - 3364 + 3373 39 48 - 3364 + 3373 48 60 - 3364 + 3373 60 82 - 3364 + 3373 83 98 - 3239 + 3248 98 141 - 2491 + 2498 @@ -5088,67 +5368,67 @@ 1 13 - 3488 + 3497 13 29 - 3239 + 3248 29 42 - 3114 + 3123 42 58 - 3364 + 3373 58 76 - 3114 + 3123 77 102 - 3239 + 3248 102 134 - 3114 + 3123 134 173 - 3239 + 3248 174 244 - 3114 + 3123 246 348 - 3114 + 3123 348 494 - 3114 + 3123 513 1349 - 3114 + 3123 1407 57597 - 2491 + 2498 @@ -5164,67 +5444,67 @@ 1 12 - 3364 + 3373 13 24 - 3239 + 3248 25 33 - 3239 + 3248 33 39 - 3364 + 3373 39 45 - 3613 + 3622 45 54 - 3114 + 3123 54 62 - 3613 + 3622 62 71 - 3364 + 3373 71 83 - 3488 + 3497 83 99 - 3114 + 3123 99 114 - 3114 + 3123 114 143 - 3114 + 3123 147 363 - 1121 + 1124 @@ -5240,32 +5520,32 @@ 1 2 - 4941391 + 4954590 2 3 - 797649 + 799780 3 4 - 564160 + 565667 4 12 - 590823 + 592402 12 210 - 560173 + 561670 210 534 - 12957 + 12992 @@ -5281,27 +5561,27 @@ 1 2 - 4999452 + 5012806 2 3 - 1229865 + 1233150 3 6 - 661593 + 663360 6 106 - 560173 + 561670 107 329 - 16072 + 16115 @@ -5317,27 +5597,27 @@ 1 2 - 5633884 + 5648932 2 3 - 530645 + 532062 3 7 - 577118 + 578660 7 24 - 569269 + 570789 24 72 - 156240 + 156658 @@ -5353,12 +5633,12 @@ 1 2 - 7292975 + 7312456 2 81 - 174182 + 174647 @@ -5374,27 +5654,27 @@ 1 2 - 5008049 + 5021426 2 3 - 764632 + 766674 3 4 - 557682 + 559171 4 12 - 602037 + 603645 12 235 - 534756 + 536185 @@ -5410,67 +5690,67 @@ 1 2 - 1495 + 1499 2 4 - 1868 + 1873 4 9 - 1619 + 1624 9 19 - 1744 + 1748 20 74 - 1619 + 1624 81 173 - 1619 + 1624 173 435 - 1619 + 1624 468 904 - 1619 + 1624 945 1309 - 1619 + 1624 1328 1510 - 1619 + 1624 1531 1774 - 1619 + 1624 1834 2887 - 1619 + 1624 3491 119749 - 1495 + 1499 @@ -5486,67 +5766,67 @@ 1 2 - 1868 + 1873 2 4 - 1744 + 1748 4 6 - 1495 + 1499 6 11 - 1744 + 1748 11 33 - 1619 + 1624 34 45 - 1619 + 1624 50 75 - 1744 + 1748 78 98 - 1744 + 1748 101 131 - 1619 + 1624 131 147 - 1868 + 1873 149 161 - 1619 + 1624 162 198 - 1619 + 1624 202 329 - 872 + 874 @@ -5562,67 +5842,67 @@ 1 2 - 1619 + 1624 2 4 - 1868 + 1873 4 9 - 1619 + 1624 9 19 - 1744 + 1748 20 74 - 1619 + 1624 80 169 - 1619 + 1624 171 432 - 1619 + 1624 467 822 - 1619 + 1624 861 1001 - 1619 + 1624 1002 1190 - 1619 + 1624 1201 1338 - 1619 + 1624 1347 1920 - 1619 + 1624 2210 59360 - 1370 + 1374 @@ -5638,67 +5918,67 @@ 1 2 - 1619 + 1624 2 4 - 1868 + 1873 4 9 - 1619 + 1624 9 19 - 1744 + 1748 20 74 - 1619 + 1624 80 169 - 1619 + 1624 171 432 - 1619 + 1624 467 822 - 1619 + 1624 861 1003 - 1619 + 1624 1003 1198 - 1619 + 1624 1201 1338 - 1619 + 1624 1347 1920 - 1619 + 1624 2220 59375 - 1370 + 1374 @@ -5714,67 +5994,67 @@ 1 2 - 1868 + 1873 2 4 - 1744 + 1748 4 7 - 1868 + 1873 7 13 - 1744 + 1748 13 21 - 1744 + 1748 21 29 - 1619 + 1624 29 37 - 1495 + 1499 37 50 - 1619 + 1624 50 58 - 1619 + 1624 61 67 - 1744 + 1748 67 76 - 1619 + 1624 76 137 - 1619 + 1624 139 299 - 872 + 874 @@ -5790,32 +6070,32 @@ 1 2 - 4941017 + 4954215 2 3 - 804876 + 807026 3 4 - 559301 + 560795 4 12 - 591197 + 592776 12 214 - 560298 + 561795 214 530 - 12459 + 12492 @@ -5831,27 +6111,27 @@ 1 2 - 4997957 + 5011307 2 3 - 1232980 + 1236274 3 6 - 661967 + 663735 6 107 - 560298 + 561795 107 329 - 15948 + 15990 @@ -5867,12 +6147,12 @@ 1 2 - 7288490 + 7307958 2 7 - 180661 + 181143 @@ -5888,27 +6168,27 @@ 1 2 - 5636500 + 5651556 2 3 - 529274 + 530688 3 7 - 577990 + 579534 7 24 - 568895 + 570415 24 72 - 156489 + 156907 @@ -5924,27 +6204,27 @@ 1 2 - 5007924 + 5021301 2 3 - 771235 + 773295 3 4 - 553072 + 554549 4 12 - 603034 + 604644 12 235 - 533884 + 535310 @@ -5960,52 +6240,52 @@ 1 2 - 15698 + 15740 2 3 - 5606 + 5621 3 7 - 4485 + 4497 7 17 - 4111 + 4122 17 32 - 4236 + 4247 35 103 - 4111 + 4122 147 635 - 4111 + 4122 651 2069 - 4111 + 4122 2137 3404 - 4111 + 4122 3430 33692 - 2741 + 2748 @@ -6021,52 +6301,52 @@ 1 2 - 18564 + 18614 2 3 - 5606 + 5621 3 5 - 4236 + 4247 5 7 - 3364 + 3373 7 15 - 4609 + 4622 15 78 - 4111 + 4122 78 143 - 4236 + 4247 150 202 - 4111 + 4122 203 263 - 4111 + 4122 266 329 - 373 + 374 @@ -6082,52 +6362,52 @@ 1 2 - 15948 + 15990 2 3 - 5980 + 5996 3 7 - 4111 + 4122 7 17 - 4236 + 4247 17 35 - 4111 + 4122 35 140 - 4111 + 4122 157 601 - 4111 + 4122 610 1714 - 4111 + 4122 1749 2382 - 4111 + 4122 2421 30689 - 2491 + 2498 @@ -6143,52 +6423,52 @@ 1 2 - 17318 + 17364 2 3 - 6354 + 6371 3 4 - 3114 + 3123 4 6 - 3862 + 3872 6 11 - 4609 + 4622 11 22 - 4111 + 4122 22 40 - 4236 + 4247 42 60 - 4859 + 4872 60 68 - 4111 + 4122 68 73 - 747 + 749 @@ -6204,52 +6484,52 @@ 1 2 - 15948 + 15990 2 3 - 5980 + 5996 3 7 - 4111 + 4122 7 17 - 4360 + 4372 17 36 - 4236 + 4247 36 170 - 4111 + 4122 173 620 - 4111 + 4122 622 1824 - 4111 + 4122 1843 2449 - 4111 + 4122 2460 30688 - 2242 + 2248 @@ -6259,31 +6539,31 @@ locations_stmt - 5203175 + 5217074 id - 5203175 + 5217074 container - 4153 + 4164 startLine - 272866 + 273595 startColumn - 2553 + 2560 endLine - 265036 + 265744 endColumn - 3227 + 3235 @@ -6297,7 +6577,7 @@ 1 2 - 5203175 + 5217074 @@ -6313,7 +6593,7 @@ 1 2 - 5203175 + 5217074 @@ -6329,7 +6609,7 @@ 1 2 - 5203175 + 5217074 @@ -6345,7 +6625,7 @@ 1 2 - 5203175 + 5217074 @@ -6361,7 +6641,7 @@ 1 2 - 5203175 + 5217074 @@ -6377,62 +6657,62 @@ 1 18 - 336 + 337 18 60 - 336 + 337 61 180 - 336 + 337 190 450 - 336 + 337 454 628 - 336 + 337 653 883 - 336 + 337 906 1161 - 336 + 337 1167 1466 - 336 + 337 1508 1785 - 336 + 337 1858 2296 - 336 + 337 2347 2833 - 336 + 337 2871 4105 - 336 + 337 4275 @@ -6453,62 +6733,62 @@ 1 18 - 336 + 337 18 49 - 336 + 337 59 170 - 336 + 337 170 394 - 336 + 337 434 603 - 336 + 337 610 846 - 336 + 337 880 1132 - 336 + 337 1135 1395 - 336 + 337 1409 1727 - 336 + 337 1761 2226 - 336 + 337 2250 2778 - 336 + 337 2800 3886 - 336 + 337 3965 @@ -6529,67 +6809,67 @@ 1 3 - 280 + 281 3 7 - 308 + 309 7 9 - 308 + 309 9 11 - 336 + 337 11 13 - 308 + 309 13 14 - 308 + 309 14 16 - 336 + 337 16 17 - 224 + 225 17 19 - 280 + 281 19 21 - 252 + 253 21 23 - 336 + 337 23 29 - 336 + 337 29 43 - 336 + 337 48 @@ -6610,62 +6890,62 @@ 1 15 - 336 + 337 15 44 - 336 + 337 47 137 - 336 + 337 141 314 - 336 + 337 328 472 - 336 + 337 488 643 - 336 + 337 675 858 - 364 + 365 865 1107 - 336 + 337 1178 1343 - 336 + 337 1401 1768 - 336 + 337 1782 2165 - 336 + 337 2254 3130 - 336 + 337 3343 @@ -6686,62 +6966,62 @@ 1 7 - 336 + 337 8 26 - 364 + 365 26 47 - 364 + 365 47 59 - 336 + 337 59 64 - 308 + 309 64 67 - 280 + 281 67 69 - 336 + 337 69 71 - 308 + 309 71 72 - 336 + 337 72 74 - 336 + 337 74 76 - 336 + 337 76 80 - 336 + 337 81 @@ -6762,67 +7042,67 @@ 1 2 - 29411 + 29489 2 3 - 20879 + 20935 3 4 - 17034 + 17080 4 6 - 19728 + 19781 6 8 - 17090 + 17136 8 11 - 22816 + 22876 11 16 - 23573 + 23636 16 22 - 20935 + 20991 22 29 - 23236 + 23299 29 37 - 23686 + 23749 37 45 - 20627 + 20682 45 56 - 22142 + 22201 56 73 - 11702 + 11733 @@ -6838,67 +7118,67 @@ 1 2 - 30449 + 30530 2 3 - 21468 + 21526 3 4 - 17315 + 17361 4 6 - 19644 + 19697 6 8 - 17371 + 17418 8 11 - 23994 + 24058 11 16 - 22338 + 22398 16 22 - 22142 + 22201 22 29 - 23152 + 23214 29 36 - 21861 + 21920 36 44 - 22310 + 22370 44 54 - 21665 + 21723 54 68 - 9148 + 9173 @@ -6914,57 +7194,57 @@ 1 2 - 36623 + 36721 2 3 - 28456 + 28532 3 4 - 22956 + 23017 4 5 - 21974 + 22032 5 6 - 23798 + 23861 6 7 - 27109 + 27182 7 8 - 31066 + 31149 8 9 - 27895 + 27970 9 10 - 20430 + 20485 10 12 - 22703 + 22764 12 18 - 9850 + 9876 @@ -6980,67 +7260,67 @@ 1 2 - 47231 + 47357 2 3 - 35220 + 35314 3 4 - 25173 + 25240 4 5 - 22114 + 22173 5 6 - 17455 + 17502 6 7 - 16473 + 16517 7 8 - 13919 + 13956 8 9 - 15070 + 15110 9 10 - 14733 + 14772 10 11 - 14396 + 14435 11 12 - 13863 + 13900 12 14 - 21581 + 21638 14 24 - 15631 + 15673 @@ -7056,67 +7336,67 @@ 1 2 - 30224 + 30305 2 3 - 22114 + 22173 3 4 - 17680 + 17727 4 6 - 21946 + 22004 6 8 - 20065 + 20119 8 10 - 18017 + 18065 10 14 - 24948 + 25015 14 18 - 23236 + 23299 18 22 - 24078 + 24143 22 26 - 25229 + 25296 26 30 - 22535 + 22595 30 36 - 20683 + 20738 36 42 - 2104 + 2110 @@ -7132,7 +7412,7 @@ 1 2 - 308 + 309 2 @@ -7142,7 +7422,7 @@ 3 7 - 224 + 225 7 @@ -7152,7 +7432,7 @@ 12 20 - 224 + 225 21 @@ -7208,7 +7488,7 @@ 1 2 - 392 + 393 2 @@ -7218,12 +7498,12 @@ 3 5 - 224 + 225 5 8 - 224 + 225 8 @@ -7279,7 +7559,7 @@ 1 2 - 308 + 309 2 @@ -7289,7 +7569,7 @@ 3 7 - 224 + 225 7 @@ -7299,7 +7579,7 @@ 12 20 - 224 + 225 21 @@ -7355,7 +7635,7 @@ 1 2 - 308 + 309 2 @@ -7365,7 +7645,7 @@ 3 7 - 224 + 225 7 @@ -7375,7 +7655,7 @@ 12 20 - 224 + 225 21 @@ -7431,7 +7711,7 @@ 1 2 - 392 + 393 2 @@ -7446,12 +7726,12 @@ 4 5 - 224 + 225 5 8 - 224 + 225 8 @@ -7461,7 +7741,7 @@ 11 15 - 224 + 225 15 @@ -7502,72 +7782,72 @@ 1 2 - 23770 + 23833 2 3 - 19672 + 19725 3 4 - 15687 + 15729 4 6 - 21300 + 21357 6 8 - 17062 + 17108 8 11 - 21104 + 21160 11 15 - 20009 + 20063 15 21 - 21946 + 22004 21 27 - 21076 + 21132 27 34 - 20374 + 20428 34 42 - 21553 + 21610 42 51 - 19925 + 19978 51 68 - 20262 + 20316 68 130 - 1290 + 1294 @@ -7583,62 +7863,62 @@ 1 2 - 34069 + 34160 2 3 - 22030 + 22089 3 4 - 17427 + 17474 4 6 - 21384 + 21441 6 8 - 20486 + 20541 8 11 - 21693 + 21751 11 16 - 23798 + 23861 16 20 - 19925 + 19978 20 26 - 23433 + 23496 26 32 - 22226 + 22286 32 39 - 20458 + 20513 39 58 - 18101 + 18149 @@ -7654,62 +7934,62 @@ 1 2 - 44341 + 44459 2 3 - 32413 + 32500 3 4 - 25201 + 25268 4 5 - 20795 + 20850 5 6 - 18859 + 18909 6 7 - 15856 + 15898 7 8 - 16249 + 16292 8 9 - 14930 + 14969 9 10 - 13919 + 13956 10 12 - 24443 + 24509 12 15 - 24191 + 24255 15 100 - 13835 + 13872 @@ -7725,57 +8005,57 @@ 1 2 - 34069 + 34160 2 3 - 27839 + 27913 3 4 - 22984 + 23045 4 5 - 24331 + 24396 5 6 - 25341 + 25409 6 7 - 27951 + 28026 7 8 - 30617 + 30699 8 9 - 25594 + 25662 9 10 - 17624 + 17671 10 12 - 20458 + 20513 12 18 - 8222 + 8244 @@ -7791,67 +8071,67 @@ 1 2 - 33732 + 33823 2 3 - 22703 + 22764 3 4 - 17119 + 17164 4 6 - 24331 + 24396 6 8 - 20935 + 20991 8 10 - 17483 + 17530 10 13 - 19700 + 19753 13 16 - 20514 + 20569 16 19 - 20065 + 20119 19 22 - 18971 + 19021 22 26 - 23686 + 23749 26 31 - 20963 + 21019 31 39 - 4827 + 4839 @@ -7867,67 +8147,67 @@ 1 2 - 252 + 253 2 4 - 252 + 253 4 7 - 224 + 225 7 16 - 252 + 253 23 131 - 252 + 253 149 388 - 252 + 253 392 675 - 252 + 253 710 1137 - 252 + 253 1139 1672 - 252 + 253 1883 2794 - 252 + 253 2937 4095 - 252 + 253 4146 4771 - 252 + 253 5032 15404 - 224 + 225 @@ -7943,47 +8223,47 @@ 1 2 - 280 + 281 2 3 - 252 + 253 3 6 - 252 + 253 6 21 - 252 + 253 31 67 - 252 + 253 68 93 - 252 + 253 94 106 - 252 + 253 107 112 - 252 + 253 112 118 - 252 + 253 118 @@ -7998,12 +8278,12 @@ 123 124 - 224 + 225 124 127 - 252 + 253 127 @@ -8024,67 +8304,67 @@ 1 2 - 252 + 253 2 4 - 252 + 253 4 7 - 224 + 225 7 15 - 252 + 253 22 129 - 252 + 253 143 374 - 252 + 253 379 646 - 252 + 253 666 963 - 252 + 253 1000 1430 - 252 + 253 1586 2172 - 252 + 253 2265 2916 - 252 + 253 2948 3215 - 252 + 253 3417 5821 - 224 + 225 @@ -8100,27 +8380,27 @@ 1 2 - 280 + 281 2 3 - 224 + 225 3 5 - 280 + 281 5 8 - 252 + 253 8 12 - 252 + 253 12 @@ -8130,7 +8410,7 @@ 14 16 - 252 + 253 16 @@ -8140,27 +8420,27 @@ 19 21 - 224 + 225 21 23 - 252 + 253 23 25 - 252 + 253 25 28 - 252 + 253 28 33 - 280 + 281 45 @@ -8181,62 +8461,62 @@ 1 2 - 280 + 281 2 4 - 224 + 225 4 7 - 280 + 281 7 27 - 252 + 253 42 130 - 252 + 253 139 325 - 252 + 253 364 584 - 252 + 253 610 967 - 252 + 253 1056 1409 - 252 + 253 1420 2038 - 252 + 253 2065 2627 - 252 + 253 2651 3073 - 252 + 253 3086 @@ -8251,31 +8531,31 @@ locations_expr - 17959858 + 18007831 id - 17959858 + 18007831 container - 6342 + 6359 startLine - 262033 + 262733 startColumn - 3367 + 3376 endLine - 262005 + 262705 endColumn - 3816 + 3826 @@ -8289,7 +8569,7 @@ 1 2 - 17959858 + 18007831 @@ -8305,7 +8585,7 @@ 1 2 - 17959858 + 18007831 @@ -8321,7 +8601,7 @@ 1 2 - 17959858 + 18007831 @@ -8337,7 +8617,7 @@ 1 2 - 17959858 + 18007831 @@ -8353,7 +8633,7 @@ 1 2 - 17959858 + 18007831 @@ -8369,67 +8649,67 @@ 1 2 - 561 + 562 2 6 - 477 + 478 6 11 - 477 + 478 12 26 - 505 + 506 27 87 - 477 + 478 95 514 - 477 + 478 525 1401 - 477 + 478 1526 2343 - 477 + 478 2404 3615 - 477 + 478 3668 5162 - 477 + 478 5341 7345 - 477 + 478 7399 9307 - 477 + 478 9382 16759 - 477 + 478 18811 @@ -8450,67 +8730,67 @@ 1 2 - 673 + 675 2 4 - 477 + 478 4 10 - 533 + 534 10 20 - 505 + 506 20 66 - 477 + 478 67 162 - 477 + 478 166 362 - 477 + 478 376 591 - 477 + 478 593 929 - 477 + 478 960 1269 - 477 + 478 1291 1782 - 477 + 478 1851 2492 - 477 + 478 2594 4241 - 336 + 337 @@ -8526,72 +8806,72 @@ 1 2 - 673 + 675 2 4 - 505 + 506 4 7 - 533 + 534 7 16 - 477 + 478 16 34 - 505 + 506 36 59 - 477 + 478 59 66 - 505 + 506 66 68 - 364 + 365 68 69 - 280 + 281 69 70 - 420 + 422 70 71 - 252 + 253 71 72 - 420 + 422 72 74 - 364 + 365 74 92 - 505 + 506 94 @@ -8612,67 +8892,67 @@ 1 2 - 673 + 675 2 4 - 477 + 478 4 10 - 533 + 534 10 20 - 505 + 506 20 68 - 477 + 478 68 163 - 477 + 478 166 362 - 477 + 478 376 592 - 477 + 478 593 931 - 477 + 478 960 1273 - 477 + 478 1292 1786 - 477 + 478 1855 2501 - 477 + 478 2593 4416 - 336 + 337 @@ -8688,47 +8968,47 @@ 1 2 - 617 + 619 2 4 - 477 + 478 4 7 - 505 + 506 7 15 - 477 + 478 15 36 - 477 + 478 36 62 - 477 + 478 62 71 - 533 + 534 71 73 - 280 + 281 73 75 - 449 + 450 75 @@ -8738,22 +9018,22 @@ 76 77 - 561 + 562 77 79 - 477 + 478 79 84 - 477 + 478 84 116 - 364 + 365 @@ -8769,67 +9049,67 @@ 1 5 - 22002 + 22060 5 9 - 22507 + 22567 9 15 - 21889 + 21948 15 23 - 20627 + 20682 23 32 - 20683 + 20738 32 44 - 20486 + 20541 44 60 - 20149 + 20203 60 80 - 20290 + 20344 80 103 - 19953 + 20006 103 130 - 20093 + 20147 130 159 - 19897 + 19950 159 194 - 19953 + 20006 194 297 - 13498 + 13534 @@ -8845,62 +9125,62 @@ 1 2 - 32105 + 32190 2 3 - 21328 + 21385 3 4 - 15491 + 15532 4 6 - 22338 + 22398 6 8 - 18606 + 18656 8 11 - 22423 + 22483 11 16 - 23686 + 23749 16 21 - 22507 + 22567 21 28 - 22675 + 22736 28 35 - 21637 + 21695 35 43 - 21777 + 21835 43 61 - 17455 + 17502 @@ -8916,62 +9196,62 @@ 1 4 - 21805 + 21863 4 7 - 23938 + 24002 7 11 - 22787 + 22848 11 16 - 23770 + 23833 16 21 - 23910 + 23974 21 26 - 20570 + 20625 26 31 - 22086 + 22145 31 36 - 24106 + 24171 36 40 - 21468 + 21526 40 44 - 22619 + 22679 44 49 - 22759 + 22820 49 63 - 12207 + 12240 @@ -8987,27 +9267,27 @@ 1 2 - 138972 + 139344 2 3 - 61123 + 61286 3 4 - 37689 + 37790 4 6 - 19981 + 20034 6 23 - 4265 + 4277 @@ -9023,62 +9303,62 @@ 1 4 - 23152 + 23214 4 7 - 22731 + 22792 7 11 - 22423 + 22483 11 16 - 22142 + 22201 16 21 - 22451 + 22511 21 27 - 22872 + 22933 27 33 - 22479 + 22539 33 38 - 19757 + 19809 38 43 - 21300 + 21357 43 47 - 19953 + 20006 47 52 - 23040 + 23102 52 66 - 19672 + 19725 68 @@ -9099,62 +9379,62 @@ 1 2 - 420 + 422 2 4 - 252 + 253 4 8 - 280 + 281 8 26 - 280 + 281 43 253 - 252 + 253 278 844 - 252 + 253 949 1891 - 252 + 253 2093 4169 - 252 + 253 4251 7004 - 252 + 253 7173 11370 - 252 + 253 12331 15107 - 252 + 253 15374 30162 - 252 + 253 30211 @@ -9175,7 +9455,7 @@ 1 2 - 449 + 450 2 @@ -9190,52 +9470,52 @@ 4 6 - 252 + 253 7 32 - 252 + 253 43 99 - 252 + 253 101 121 - 252 + 253 121 130 - 252 + 253 130 138 - 252 + 253 138 142 - 280 + 281 142 144 - 224 + 225 144 150 - 280 + 281 151 158 - 252 + 253 @@ -9251,62 +9531,62 @@ 1 2 - 420 + 422 2 4 - 252 + 253 4 7 - 252 + 253 7 19 - 252 + 253 20 152 - 252 + 253 199 588 - 252 + 253 633 1287 - 252 + 253 1365 2343 - 252 + 253 2576 3504 - 252 + 253 3522 4709 - 252 + 253 4736 5298 - 252 + 253 5332 5999 - 252 + 253 6157 @@ -9327,62 +9607,62 @@ 1 2 - 420 + 422 2 4 - 252 + 253 4 7 - 252 + 253 7 19 - 252 + 253 20 152 - 252 + 253 199 588 - 252 + 253 648 1289 - 252 + 253 1365 2347 - 252 + 253 2579 3510 - 252 + 253 3529 4710 - 252 + 253 4739 5323 - 252 + 253 5346 6023 - 252 + 253 6201 @@ -9403,7 +9683,7 @@ 1 2 - 449 + 450 2 @@ -9413,52 +9693,52 @@ 3 5 - 252 + 253 5 9 - 252 + 253 9 13 - 252 + 253 13 20 - 252 + 253 20 30 - 252 + 253 30 42 - 252 + 253 44 60 - 280 + 281 60 69 - 252 + 253 69 74 - 252 + 253 74 84 - 308 + 309 84 @@ -9479,67 +9759,67 @@ 1 5 - 22030 + 22089 5 9 - 22507 + 22567 9 15 - 21581 + 21638 15 23 - 20598 + 20653 23 32 - 21356 + 21413 32 44 - 20121 + 20175 44 60 - 19785 + 19837 60 80 - 20879 + 20935 80 103 - 19813 + 19866 103 130 - 20009 + 20063 130 159 - 19953 + 20006 159 193 - 19672 + 19725 193 296 - 13695 + 13731 @@ -9555,67 +9835,67 @@ 1 2 - 32105 + 32190 2 3 - 21244 + 21301 3 4 - 15491 + 15532 4 6 - 21917 + 21976 6 8 - 18409 + 18459 8 11 - 22507 + 22567 11 15 - 19785 + 19837 15 20 - 22816 + 22876 20 26 - 20458 + 20513 26 33 - 21917 + 21976 33 40 - 19897 + 19950 40 49 - 20037 + 20091 49 61 - 5416 + 5430 @@ -9631,27 +9911,27 @@ 1 2 - 130273 + 130621 2 3 - 68223 + 68405 3 4 - 40159 + 40266 4 6 - 21384 + 21441 6 11 - 1964 + 1969 @@ -9667,62 +9947,62 @@ 1 4 - 21609 + 21666 4 7 - 23826 + 23889 7 11 - 22507 + 22567 11 16 - 23686 + 23749 16 21 - 23629 + 23692 21 26 - 20683 + 20738 26 31 - 22282 + 22342 31 36 - 24078 + 24143 36 40 - 20879 + 20935 40 44 - 22591 + 22651 44 49 - 23152 + 23214 49 63 - 13077 + 13112 @@ -9738,62 +10018,62 @@ 1 4 - 23461 + 23524 4 7 - 22928 + 22989 7 11 - 22423 + 22483 11 16 - 23040 + 23102 16 21 - 21861 + 21920 21 26 - 19813 + 19866 26 32 - 22058 + 22117 32 38 - 23882 + 23946 38 43 - 22114 + 22173 43 47 - 19785 + 19837 47 52 - 22759 + 22820 52 69 - 17876 + 17924 @@ -9809,62 +10089,62 @@ 1 2 - 308 + 309 2 4 - 308 + 309 4 10 - 280 + 281 10 16 - 336 + 337 16 51 - 308 + 309 56 618 - 308 + 309 841 2290 - 308 + 309 2328 4142 - 308 + 309 4177 7140 - 308 + 309 8235 11725 - 308 + 309 12344 15458 - 308 + 309 15684 18219 - 308 + 309 18696 @@ -9885,62 +10165,62 @@ 1 2 - 449 + 450 2 4 - 280 + 281 4 6 - 280 + 281 6 12 - 308 + 309 12 41 - 308 + 309 50 114 - 308 + 309 115 128 - 308 + 309 128 137 - 280 + 281 137 142 - 336 + 337 142 146 - 280 + 281 146 148 - 280 + 281 148 152 - 308 + 309 152 @@ -9961,62 +10241,62 @@ 1 2 - 420 + 422 2 4 - 224 + 225 4 8 - 336 + 337 8 15 - 308 + 309 18 54 - 308 + 309 74 489 - 308 + 309 511 1338 - 308 + 309 1390 2420 - 308 + 309 2767 3740 - 308 + 309 3802 4530 - 308 + 309 4643 5303 - 308 + 309 5379 5736 - 308 + 309 5747 @@ -10037,62 +10317,62 @@ 1 2 - 364 + 365 2 4 - 280 + 281 4 9 - 336 + 337 9 14 - 336 + 337 14 22 - 336 + 337 23 28 - 308 + 309 28 36 - 308 + 309 36 41 - 308 + 309 41 47 - 308 + 309 47 56 - 308 + 309 56 64 - 308 + 309 64 72 - 308 + 309 @@ -10108,62 +10388,62 @@ 1 2 - 420 + 422 2 4 - 224 + 225 4 8 - 336 + 337 8 15 - 308 + 309 17 54 - 308 + 309 74 471 - 308 + 309 500 1307 - 308 + 309 1356 2389 - 308 + 309 2629 3660 - 308 + 309 3731 4490 - 308 + 309 4640 5281 - 308 + 309 5368 5729 - 308 + 309 5734 @@ -10178,23 +10458,23 @@ numlines - 806371 + 808525 element_id - 805249 + 807400 num_lines - 39371 + 39476 num_code - 33889 + 33980 num_comment - 18315 + 18364 @@ -10208,12 +10488,12 @@ 1 2 - 804128 + 806276 2 3 - 1121 + 1124 @@ -10229,12 +10509,12 @@ 1 2 - 804128 + 806276 2 3 - 1121 + 1124 @@ -10250,7 +10530,7 @@ 1 2 - 805000 + 807151 2 @@ -10271,27 +10551,27 @@ 1 2 - 26663 + 26734 2 3 - 3737 + 3747 3 5 - 3364 + 3373 5 37 - 3114 + 3123 41 1978 - 2491 + 2498 @@ -10307,27 +10587,27 @@ 1 2 - 27161 + 27234 2 3 - 4111 + 4122 3 4 - 2491 + 2498 4 7 - 3488 + 3497 7 12 - 2118 + 2123 @@ -10343,27 +10623,27 @@ 1 2 - 26787 + 26859 2 3 - 4111 + 4122 3 4 - 2491 + 2498 4 6 - 3114 + 3123 6 11 - 2865 + 2873 @@ -10379,32 +10659,32 @@ 1 2 - 21554 + 21612 2 3 - 3737 + 3747 3 4 - 2367 + 2373 4 13 - 2865 + 2873 14 197 - 2616 + 2623 205 2101 - 747 + 749 @@ -10420,32 +10700,32 @@ 1 2 - 21928 + 21987 2 3 - 3737 + 3747 3 4 - 2118 + 2123 4 6 - 1868 + 1873 6 9 - 2741 + 2748 9 13 - 1495 + 1499 @@ -10461,27 +10741,27 @@ 1 2 - 21679 + 21737 2 3 - 4360 + 4372 3 5 - 2865 + 2873 5 8 - 3114 + 3123 8 12 - 1868 + 1873 @@ -10497,32 +10777,32 @@ 1 2 - 11338 + 11368 2 3 - 1744 + 1748 3 4 - 1495 + 1499 4 7 - 1370 + 1374 8 22 - 1495 + 1499 42 3650 - 872 + 874 @@ -10538,32 +10818,32 @@ 1 2 - 11338 + 11368 2 3 - 1744 + 1748 3 4 - 1495 + 1499 4 7 - 1495 + 1499 8 27 - 1495 + 1499 30 48 - 747 + 749 @@ -10579,32 +10859,32 @@ 1 2 - 11338 + 11368 2 3 - 1744 + 1748 3 4 - 1744 + 1748 4 9 - 1495 + 1499 10 36 - 1619 + 1624 36 43 - 373 + 374 @@ -10614,31 +10894,31 @@ diagnostics - 1588 + 1484 id - 1588 + 1484 severity - 23 + 21 error_tag - 46 + 43 error_message - 161 + 150 full_error_message - 161 + 150 location - 69 + 64 @@ -10652,7 +10932,7 @@ 1 2 - 1588 + 1484 @@ -10668,7 +10948,7 @@ 1 2 - 1588 + 1484 @@ -10684,7 +10964,7 @@ 1 2 - 1588 + 1484 @@ -10700,7 +10980,7 @@ 1 2 - 1588 + 1484 @@ -10716,7 +10996,7 @@ 1 2 - 1588 + 1484 @@ -10732,7 +11012,7 @@ 69 70 - 23 + 21 @@ -10748,7 +11028,7 @@ 2 3 - 23 + 21 @@ -10764,7 +11044,7 @@ 7 8 - 23 + 21 @@ -10780,7 +11060,7 @@ 7 8 - 23 + 21 @@ -10796,7 +11076,7 @@ 3 4 - 23 + 21 @@ -10812,12 +11092,12 @@ 6 7 - 23 + 21 63 64 - 23 + 21 @@ -10833,7 +11113,7 @@ 1 2 - 46 + 43 @@ -10849,12 +11129,12 @@ 1 2 - 23 + 21 6 7 - 23 + 21 @@ -10870,12 +11150,12 @@ 1 2 - 23 + 21 6 7 - 23 + 21 @@ -10891,12 +11171,12 @@ 1 2 - 23 + 21 2 3 - 23 + 21 @@ -10912,12 +11192,12 @@ 1 2 - 138 + 129 63 64 - 23 + 21 @@ -10933,7 +11213,7 @@ 1 2 - 161 + 150 @@ -10949,7 +11229,7 @@ 1 2 - 161 + 150 @@ -10965,7 +11245,7 @@ 1 2 - 161 + 150 @@ -10981,7 +11261,7 @@ 1 2 - 161 + 150 @@ -10997,12 +11277,12 @@ 1 2 - 138 + 129 63 64 - 23 + 21 @@ -11018,7 +11298,7 @@ 1 2 - 161 + 150 @@ -11034,7 +11314,7 @@ 1 2 - 161 + 150 @@ -11050,7 +11330,7 @@ 1 2 - 161 + 150 @@ -11066,7 +11346,7 @@ 1 2 - 161 + 150 @@ -11082,12 +11362,12 @@ 3 4 - 46 + 43 63 64 - 23 + 21 @@ -11103,7 +11383,7 @@ 1 2 - 69 + 64 @@ -11119,7 +11399,7 @@ 1 2 - 69 + 64 @@ -11135,12 +11415,12 @@ 1 2 - 23 + 21 3 4 - 46 + 43 @@ -11156,12 +11436,12 @@ 1 2 - 23 + 21 3 4 - 46 + 43 @@ -11171,15 +11451,15 @@ files - 81417 + 74673 id - 81417 + 74673 name - 81417 + 74673 @@ -11193,7 +11473,7 @@ 1 2 - 81417 + 74673 @@ -11209,7 +11489,7 @@ 1 2 - 81417 + 74673 @@ -11219,15 +11499,15 @@ folders - 15468 + 14187 id - 15468 + 14187 name - 15468 + 14187 @@ -11241,7 +11521,7 @@ 1 2 - 15468 + 14187 @@ -11257,7 +11537,7 @@ 1 2 - 15468 + 14187 @@ -11267,15 +11547,15 @@ containerparent - 96859 + 88836 parent - 15468 + 14187 child - 96859 + 88836 @@ -11289,42 +11569,42 @@ 1 2 - 7529 + 6906 2 3 - 1898 + 1741 3 4 - 830 + 761 4 6 - 1252 + 1149 6 10 - 1213 + 1112 10 16 - 1252 + 1149 16 44 - 1160 + 1064 44 151 - 329 + 302 @@ -11340,7 +11620,7 @@ 1 2 - 96859 + 88836 @@ -11350,23 +11630,23 @@ fileannotations - 5244354 + 4809925 id - 7200 + 6603 kind - 26 + 24 name - 73307 + 67234 value - 49333 + 45246 @@ -11380,12 +11660,12 @@ 1 2 - 250 + 229 2 3 - 6949 + 6373 @@ -11401,62 +11681,62 @@ 1 86 - 540 + 495 88 206 - 540 + 495 212 291 - 553 + 507 291 359 - 540 + 495 362 401 - 540 + 495 402 479 - 540 + 495 480 549 - 316 + 290 550 551 - 1661 + 1523 553 628 - 540 + 495 631 753 - 567 + 520 753 1231 - 553 + 507 1234 2155 - 303 + 278 @@ -11472,67 +11752,67 @@ 1 98 - 540 + 495 102 244 - 540 + 495 244 351 - 540 + 495 352 434 - 553 + 507 434 490 - 553 + 507 490 628 - 540 + 495 632 702 - 79 + 72 706 707 - 1661 + 1523 710 939 - 540 + 495 939 1038 - 540 + 495 1066 1853 - 540 + 495 1853 3292 - 540 + 495 3423 3742 - 26 + 24 @@ -11548,12 +11828,12 @@ 527 528 - 13 + 12 546 547 - 13 + 12 @@ -11569,12 +11849,12 @@ 2 3 - 13 + 12 5557 5558 - 13 + 12 @@ -11590,12 +11870,12 @@ 1 2 - 13 + 12 3741 3742 - 13 + 12 @@ -11611,62 +11891,62 @@ 1 2 - 13767 + 12626 2 3 - 5446 + 4995 3 5 - 6316 + 5793 5 7 - 5116 + 4692 7 9 - 5736 + 5261 9 16 - 5406 + 4958 16 19 - 6105 + 5599 19 27 - 5314 + 4874 27 47 - 6039 + 5539 47 128 - 6145 + 5636 128 459 - 5775 + 5297 459 546 - 2136 + 1959 @@ -11682,7 +11962,7 @@ 1 2 - 73307 + 67234 @@ -11698,57 +11978,57 @@ 1 2 - 14466 + 13267 2 3 - 9600 + 8805 3 4 - 5116 + 4692 4 6 - 5077 + 4656 6 8 - 4272 + 3918 8 11 - 5921 + 5430 11 17 - 6738 + 6180 17 23 - 5868 + 5382 23 41 - 5841 + 5357 41 95 - 5578 + 5116 95 1726 - 4826 + 4426 @@ -11764,72 +12044,72 @@ 1 2 - 4193 + 3846 2 4 - 2044 + 1874 4 5 - 3982 + 3652 5 8 - 3072 + 2818 8 14 - 3705 + 3398 14 17 - 2413 + 2213 17 24 - 3797 + 3483 24 51 - 4417 + 4051 51 58 - 3784 + 3471 58 80 - 3718 + 3410 81 151 - 3850 + 3531 151 334 - 3718 + 3410 334 473 - 3745 + 3434 473 547 - 2887 + 2648 @@ -11845,12 +12125,12 @@ 1 2 - 49320 + 45234 2 3 - 13 + 12 @@ -11866,72 +12146,72 @@ 1 2 - 4246 + 3894 2 4 - 2386 + 2189 4 5 - 3811 + 3495 5 8 - 3098 + 2842 8 14 - 4351 + 3991 14 18 - 4312 + 3954 18 28 - 3995 + 3664 28 34 - 3929 + 3604 34 41 - 3995 + 3664 41 66 - 3731 + 3422 66 92 - 3837 + 3519 92 113 - 3731 + 3422 113 145 - 3784 + 3471 145 172 - 118 + 108 @@ -11941,15 +12221,15 @@ inmacroexpansion - 149602994 + 149995198 id - 24604999 + 24670750 inv - 3694108 + 3705246 @@ -11963,37 +12243,37 @@ 1 3 - 2202143 + 2209385 3 5 - 1471128 + 1474970 5 6 - 1616140 + 1620361 6 7 - 6565365 + 6582512 7 8 - 8696245 + 8718957 8 9 - 3547765 + 3557031 9 22 - 506210 + 507532 @@ -12009,57 +12289,57 @@ 1 2 - 528780 + 531651 2 3 - 741268 + 743204 3 4 - 480255 + 481510 4 7 - 274584 + 275301 7 8 - 281416 + 282151 8 9 - 329385 + 330245 9 10 - 3038 + 3046 10 11 - 443489 + 444648 11 337 - 306995 + 307797 339 423 - 281020 + 281754 423 7616 - 23872 + 23934 @@ -12069,15 +12349,15 @@ affectedbymacroexpansion - 48608644 + 48735594 id - 7026354 + 7044705 inv - 3793196 + 3803102 @@ -12091,37 +12371,37 @@ 1 2 - 3836670 + 3846690 2 3 - 764305 + 766301 3 4 - 360897 + 361840 4 5 - 770719 + 772732 5 12 - 533763 + 535157 12 50 - 554815 + 556264 50 9900 - 205182 + 205718 @@ -12137,67 +12417,67 @@ 1 4 - 312431 + 313247 4 7 - 315781 + 316606 7 9 - 300302 + 301086 9 12 - 342043 + 342937 12 13 - 454814 + 456002 13 14 - 225509 + 226098 14 15 - 406973 + 408036 15 16 - 165994 + 166428 16 17 - 376692 + 377676 17 18 - 200113 + 200635 18 20 - 343357 + 344253 20 25 - 284648 + 285391 25 207 - 64533 + 64702 @@ -12207,23 +12487,23 @@ macroinvocations - 39528251 + 39390474 id - 39528251 + 39390474 macro_id - 106974 + 181996 location - 1041654 + 5904613 kind - 26 + 108 @@ -12237,7 +12517,7 @@ 1 2 - 39528251 + 39390474 @@ -12253,7 +12533,7 @@ 1 2 - 39528251 + 39390474 @@ -12269,7 +12549,7 @@ 1 2 - 39528251 + 39390474 @@ -12285,98 +12565,98 @@ 1 2 - 22721 + 60738 2 3 - 20018 + 27781 3 4 - 7318 + 17921 4 - 6 - 9798 + 5 + 9805 - 6 - 11 - 9204 + 5 + 7 + 14272 - 11 - 21 - 8848 - - - 21 - 48 - 8149 - - - 48 - 145 - 8096 - - - 145 - 955 - 8030 - - - 955 - 175302 - 4786 - - - - - - - macro_id - location - - - 12 - - - 1 - 2 - 58643 - - - 2 - 3 - 13279 - - - 3 - 4 - 6699 - - - 4 - 6 - 8492 - - - 6 + 7 13 - 9191 + 14381 13 - 67 - 8070 + 33 + 13890 - 67 - 4815 - 2597 + 33 + 185 + 13672 + + + 190 + 70079 + 9532 + + + + + + + macro_id + location + + + 12 + + + 1 + 2 + 77243 + + + 2 + 3 + 30559 + + + 3 + 4 + 14326 + + + 4 + 5 + 10349 + + + 5 + 8 + 14054 + + + 8 + 18 + 14108 + + + 18 + 88 + 13672 + + + 88 + 12162 + 7680 @@ -12392,12 +12672,12 @@ 1 2 - 98745 + 177475 2 3 - 8228 + 4521 @@ -12413,37 +12693,17 @@ 1 2 - 414921 + 5248369 2 3 - 246099 + 248072 3 - 4 - 110337 - - - 4 - 6 - 75496 - - - 6 - 11 - 79967 - - - 11 - 41 - 78595 - - - 41 - 226300 - 36238 + 70079 + 408170 @@ -12459,12 +12719,12 @@ 1 2 - 982813 + 5882442 2 - 367 - 58841 + 37 + 22170 @@ -12480,7 +12740,7 @@ 1 2 - 1041654 + 5904613 @@ -12494,14 +12754,14 @@ 12 - 22298 - 22299 - 13 + 1470 + 1471 + 54 - 2975179 - 2975180 - 13 + 721641 + 721642 + 54 @@ -12515,14 +12775,14 @@ 12 - 2368 - 2369 - 13 + 281 + 282 + 54 - 6368 - 6369 - 13 + 3143 + 3144 + 54 @@ -12536,14 +12796,14 @@ 12 - 7695 - 7696 - 13 + 1060 + 1061 + 54 - 71295 - 71296 - 13 + 107334 + 107335 + 54 @@ -12553,15 +12813,15 @@ macroparent - 34859187 + 32844542 id - 34859187 + 32844542 parent_id - 27314145 + 15561370 @@ -12575,7 +12835,7 @@ 1 2 - 34859187 + 32844542 @@ -12591,17 +12851,27 @@ 1 2 - 21276819 + 7669068 2 3 - 5036827 + 1551190 3 - 91 - 1000497 + 4 + 4552687 + + + 4 + 5 + 1263079 + + + 5 + 205 + 525343 @@ -12611,15 +12881,15 @@ macrolocationbind - 5544606 + 6882795 id - 3882779 + 4222137 location - 2759101 + 2746999 @@ -12633,22 +12903,27 @@ 1 2 - 3057283 + 2459682 2 3 - 469944 + 1326273 3 - 7 - 314994 + 4 + 8261 - 7 - 57 - 40556 + 4 + 5 + 413547 + + + 5 + 17 + 14372 @@ -12664,22 +12939,27 @@ 1 2 - 2198674 + 1393982 2 3 - 240048 + 907153 3 - 8 - 216611 + 4 + 8735 - 8 - 723 - 103767 + 4 + 5 + 410836 + + + 5 + 522 + 26291 @@ -12689,19 +12969,19 @@ macro_argument_unexpanded - 100507893 + 94316565 invocation - 30398388 + 30014759 argument_index - 870 + 798 text - 428569 + 393068 @@ -12715,22 +12995,22 @@ 1 2 - 9719830 + 11049162 2 3 - 12168939 + 11160894 3 4 - 6225849 + 5710115 4 67 - 2283768 + 2094586 @@ -12746,22 +13026,22 @@ 1 2 - 9947850 + 11258293 2 3 - 12189867 + 11180088 3 4 - 6031233 + 5531620 4 67 - 2229436 + 2044755 @@ -12777,17 +13057,17 @@ 46457 46458 - 764 + 701 46659 173182 - 65 + 60 645295 - 2305149 - 39 + 2481630 + 36 @@ -12803,17 +13083,17 @@ 2 3 - 764 + 701 13 1115 - 65 + 60 7702 22873 - 39 + 36 @@ -12829,57 +13109,57 @@ 1 2 - 50559 + 46371 2 3 - 77883 + 71431 3 4 - 28879 + 26487 4 5 - 43319 + 39731 5 6 - 48845 + 44799 6 9 - 35684 + 32728 9 15 - 35829 + 32861 15 27 - 32651 + 29946 27 57 - 33205 + 30454 57 517 - 32374 + 29692 518 485092 - 9336 + 8563 @@ -12895,17 +13175,17 @@ 1 2 - 303608 + 278458 2 3 - 112209 + 102914 3 9 - 12751 + 11695 @@ -12915,19 +13195,19 @@ macro_argument_expanded - 100507893 + 94316565 invocation - 30398388 + 30014759 argument_index - 870 + 798 text - 259602 + 238097 @@ -12941,22 +13221,22 @@ 1 2 - 9719830 + 11049162 2 3 - 12168939 + 11160894 3 4 - 6225849 + 5710115 4 67 - 2283768 + 2094586 @@ -12972,22 +13252,22 @@ 1 2 - 13403008 + 14427235 2 3 - 10499153 + 9629429 3 4 - 5260653 + 4824874 4 9 - 1235572 + 1133220 @@ -13003,17 +13283,17 @@ 46457 46458 - 764 + 701 46659 173182 - 65 + 60 645295 - 2305149 - 39 + 2481630 + 36 @@ -13029,17 +13309,17 @@ 1 2 - 751 + 689 2 96 - 65 + 60 950 16176 - 52 + 48 @@ -13055,57 +13335,57 @@ 1 2 - 27534 + 25253 2 3 - 34167 + 31337 3 4 - 56942 + 52225 4 5 - 20070 + 18408 5 6 - 3863 + 3543 6 7 - 22734 + 20851 7 10 - 21112 + 19363 10 19 - 22444 + 20585 19 51 - 19477 + 17863 51 253 - 19622 + 17997 254 - 990275 - 11631 + 1166756 + 10667 @@ -13121,17 +13401,17 @@ 1 2 - 131199 + 120330 2 3 - 111009 + 101813 3 66 - 17393 + 15953 @@ -13141,19 +13421,19 @@ functions - 4000085 + 4010769 id - 4000085 + 4010769 name - 1644140 + 1648531 kind - 996 + 999 @@ -13167,7 +13447,7 @@ 1 2 - 4000085 + 4010769 @@ -13183,7 +13463,7 @@ 1 2 - 4000085 + 4010769 @@ -13199,17 +13479,17 @@ 1 2 - 1398565 + 1402301 2 4 - 138797 + 139168 4 3162 - 106776 + 107062 @@ -13225,12 +13505,12 @@ 1 2 - 1641274 + 1645658 2 3 - 2865 + 2873 @@ -13342,15 +13622,15 @@ function_entry_point - 1430682 + 1141039 id - 1425982 + 1137291 entry_point - 1430682 + 1141039 @@ -13364,12 +13644,12 @@ 1 2 - 1421966 + 1134088 2 17 - 4016 + 3203 @@ -13385,7 +13665,7 @@ 1 2 - 1430682 + 1141039 @@ -13395,15 +13675,15 @@ function_return_type - 4017528 + 4028259 id - 4000085 + 4010769 return_type - 621224 + 622884 @@ -13417,12 +13697,12 @@ 1 2 - 3982642 + 3993280 2 3 - 17443 + 17489 @@ -13438,27 +13718,27 @@ 1 2 - 312107 + 312941 2 3 - 212930 + 213499 3 5 - 48342 + 48471 5 354 - 46598 + 46722 358 9897 - 1245 + 1249 @@ -13738,59 +14018,59 @@ purefunctions - 138354 + 138721 id - 138354 + 138721 function_deleted - 94264 + 88084 id - 94264 + 88084 function_defaulted - 55306 + 51679 id - 55306 + 51679 function_prototyped - 3998590 + 4009270 id - 3998590 + 4009270 deduction_guide_for_class - 5855 + 5871 id - 5855 + 5871 class_template - 2242 + 2248 @@ -13804,7 +14084,7 @@ 1 2 - 5855 + 5871 @@ -13820,12 +14100,12 @@ 1 2 - 1121 + 1124 2 3 - 373 + 374 3 @@ -13855,15 +14135,15 @@ member_function_this_type - 840354 + 676227 id - 840354 + 676227 this_type - 239686 + 177645 @@ -13877,7 +14157,7 @@ 1 2 - 840354 + 676227 @@ -13893,37 +14173,37 @@ 1 2 - 73657 + 48721 2 3 - 70154 + 36853 3 4 - 33709 + 32855 4 5 - 15380 + 19988 5 - 7 - 21832 + 6 + 12867 - 7 - 13 - 18884 + 6 + 10 + 14491 - 13 - 530 - 6066 + 10 + 65 + 11868 @@ -13933,27 +14213,27 @@ fun_decls - 4144115 + 4155684 id - 4138135 + 4149688 function - 3975664 + 3986284 type_id - 613250 + 614888 name - 1642645 + 1647032 location - 2762494 + 2769873 @@ -13967,7 +14247,7 @@ 1 2 - 4138135 + 4149688 @@ -13983,12 +14263,12 @@ 1 2 - 4132154 + 4143691 2 3 - 5980 + 5996 @@ -14004,7 +14284,7 @@ 1 2 - 4138135 + 4149688 @@ -14020,7 +14300,7 @@ 1 2 - 4138135 + 4149688 @@ -14036,12 +14316,12 @@ 1 2 - 3826525 + 3836247 2 4 - 149138 + 150036 @@ -14057,12 +14337,12 @@ 1 2 - 3957224 + 3967795 2 3 - 18439 + 18489 @@ -14078,7 +14358,7 @@ 1 2 - 3975664 + 3986284 @@ -14094,12 +14374,12 @@ 1 2 - 3832755 + 3842993 2 4 - 142909 + 143290 @@ -14115,27 +14395,27 @@ 1 2 - 297405 + 298199 2 3 - 219783 + 220370 3 5 - 48716 + 48846 5 354 - 46099 + 46222 358 - 10242 - 1245 + 10246 + 1249 @@ -14151,22 +14431,22 @@ 1 2 - 307497 + 308318 2 3 - 211061 + 211625 3 5 - 48342 + 48471 5 1033 - 46099 + 46222 1483 @@ -14187,22 +14467,22 @@ 1 2 - 493267 + 494584 2 3 - 52578 + 52719 3 7 - 50958 + 51094 7 2211 - 16446 + 16490 @@ -14218,22 +14498,22 @@ 1 2 - 456761 + 457981 2 3 - 69274 + 69459 3 6 - 55693 + 55842 6 4728 - 31522 + 31606 @@ -14249,22 +14529,22 @@ 1 2 - 1294529 + 1297737 2 3 - 183152 + 183892 3 10 - 125341 + 125551 10 3169 - 39620 + 39851 @@ -14280,17 +14560,17 @@ 1 2 - 1398067 + 1401801 2 4 - 139171 + 139543 4 3162 - 105406 + 105687 @@ -14306,12 +14586,12 @@ 1 2 - 1552813 + 1556960 2 1596 - 89832 + 90072 @@ -14327,17 +14607,17 @@ 1 2 - 1318576 + 1322098 2 3 - 207947 + 208502 3 1592 - 116121 + 116431 @@ -14353,17 +14633,17 @@ 1 2 - 2383729 + 2390096 2 3 - 237102 + 237735 3 211 - 141663 + 142041 @@ -14379,17 +14659,17 @@ 1 2 - 2387467 + 2393844 2 3 - 233862 + 234487 3 211 - 141164 + 141541 @@ -14405,12 +14685,12 @@ 1 2 - 2647494 + 2654566 2 211 - 115000 + 115307 @@ -14426,12 +14706,12 @@ 1 2 - 2723372 + 2730646 2 8 - 39122 + 39226 @@ -14441,48 +14721,48 @@ fun_def - 1583380 + 1413170 id - 1583380 + 1413170 fun_specialized - 8413 + 8435 id - 8413 + 8435 fun_implicit - 271 + 272 id - 271 + 272 fun_decl_specifiers - 4091287 + 4102216 id - 1683761 + 1688258 name - 1370 + 1374 @@ -14496,22 +14776,22 @@ 1 2 - 360574 + 361537 2 3 - 261771 + 262470 3 4 - 1038489 + 1041263 4 5 - 22925 + 22986 @@ -14708,26 +14988,26 @@ fun_decl_empty_throws - 435875 + 437031 fun_decl - 435875 + 437031 fun_decl_noexcept - 177863 + 141854 fun_decl - 177863 + 141854 constant - 177265 + 141377 @@ -14741,7 +15021,7 @@ 1 2 - 177863 + 141854 @@ -14757,12 +15037,12 @@ 1 2 - 176709 + 140934 2 4 - 555 + 442 @@ -14772,22 +15052,22 @@ fun_decl_empty_noexcept - 1160716 + 1163816 fun_decl - 1160716 + 1163816 fun_decl_typedef_type - 2769 + 2763 fun_decl - 2769 + 2763 typedeftype_id @@ -14805,7 +15085,7 @@ 1 2 - 2769 + 2763 @@ -14881,19 +15161,19 @@ fun_requires - 31152 + 29110 id - 10821 + 10112 kind - 46 + 43 constraint - 30899 + 28873 @@ -14907,12 +15187,12 @@ 1 2 - 10752 + 10047 2 3 - 69 + 64 @@ -14928,32 +15208,32 @@ 1 2 - 7782 + 7272 2 3 - 529 + 494 3 6 - 920 + 860 6 13 - 345 + 322 13 14 - 1220 + 1140 19 20 - 23 + 21 @@ -14969,12 +15249,12 @@ 208 209 - 23 + 21 265 266 - 23 + 21 @@ -14990,12 +15270,12 @@ 580 581 - 23 + 21 762 763 - 23 + 21 @@ -15011,12 +15291,12 @@ 1 2 - 30645 + 28636 2 3 - 253 + 236 @@ -15032,7 +15312,7 @@ 1 2 - 30899 + 28873 @@ -15042,19 +15322,19 @@ param_decl_bind - 7170500 + 7189902 id - 7170500 + 7189902 index - 7974 + 7995 fun_decl - 3468567 + 3478082 @@ -15068,7 +15348,7 @@ 1 2 - 7170500 + 7189902 @@ -15084,7 +15364,7 @@ 1 2 - 7170500 + 7189902 @@ -15100,31 +15380,31 @@ 2 3 - 3987 + 3997 6 7 - 1993 + 1998 16 20 - 622 + 624 25 143 - 622 + 624 332 15841 - 622 + 624 - 27839 - 27840 + 27841 + 27842 124 @@ -15141,31 +15421,31 @@ 2 3 - 3987 + 3997 6 7 - 1993 + 1998 16 20 - 622 + 624 25 143 - 622 + 624 332 15841 - 622 + 624 - 27839 - 27840 + 27841 + 27842 124 @@ -15182,27 +15462,27 @@ 1 2 - 1495001 + 1499244 2 3 - 954264 + 956813 3 4 - 578364 + 579909 4 5 - 282329 + 283083 5 65 - 158607 + 159031 @@ -15218,27 +15498,27 @@ 1 2 - 1495001 + 1499244 2 3 - 954264 + 956813 3 4 - 578364 + 579909 4 5 - 282329 + 283083 5 65 - 158607 + 159031 @@ -15248,27 +15528,27 @@ var_decls - 9244489 + 9269431 id - 9237636 + 9262560 variable - 8948454 + 8972356 type_id - 1458495 + 1462391 name - 850103 + 852374 location - 6187953 + 6204481 @@ -15282,7 +15562,7 @@ 1 2 - 9237636 + 9262560 @@ -15298,12 +15578,12 @@ 1 2 - 9230783 + 9255689 2 3 - 6852 + 6870 @@ -15319,7 +15599,7 @@ 1 2 - 9237636 + 9262560 @@ -15335,7 +15615,7 @@ 1 2 - 9237636 + 9262560 @@ -15351,12 +15631,12 @@ 1 2 - 8672229 + 8695144 2 4 - 276224 + 277212 @@ -15372,12 +15652,12 @@ 1 2 - 8909830 + 8933629 2 3 - 38624 + 38727 @@ -15393,12 +15673,12 @@ 1 2 - 8843047 + 8866668 2 4 - 105406 + 105687 @@ -15414,12 +15694,12 @@ 1 2 - 8697272 + 8720504 2 4 - 251181 + 251852 @@ -15435,27 +15715,27 @@ 1 2 - 852471 + 854748 2 3 - 284198 + 284957 3 5 - 127708 + 128049 5 11 - 112632 + 112933 11 2944 - 81484 + 81702 @@ -15471,27 +15751,27 @@ 1 2 - 872779 + 875111 2 3 - 269745 + 270466 3 5 - 123098 + 123427 5 11 - 112632 + 112933 11 2859 - 80238 + 80452 @@ -15507,22 +15787,22 @@ 1 2 - 1121967 + 1124964 2 3 - 192622 + 193136 3 7 - 114875 + 115182 7 1038 - 29030 + 29107 @@ -15538,27 +15818,27 @@ 1 2 - 988278 + 990918 2 3 - 218537 + 219121 3 6 - 133689 + 134046 6 95 - 109517 + 109810 97 2570 - 8472 + 8495 @@ -15574,32 +15854,32 @@ 1 2 - 464610 + 465851 2 3 - 165336 + 165777 3 4 - 59929 + 60089 4 7 - 65785 + 65961 7 26 - 64165 + 64337 26 - 26620 - 30276 + 26622 + 30357 @@ -15615,32 +15895,32 @@ 1 2 - 477443 + 478718 2 3 - 164588 + 165028 3 4 - 54821 + 54967 4 8 - 71641 + 71832 8 46 - 63792 + 63962 46 26187 - 17816 + 17864 @@ -15656,22 +15936,22 @@ 1 2 - 653120 + 654865 2 3 - 110140 + 110435 3 11 - 65162 + 65336 11 3460 - 21679 + 21737 @@ -15687,27 +15967,27 @@ 1 2 - 491771 + 493085 2 3 - 182779 + 183267 3 4 - 52204 + 52344 4 8 - 65037 + 65211 8 22104 - 58309 + 58465 @@ -15723,12 +16003,12 @@ 1 2 - 5741533 + 5756869 2 - 2941 - 446419 + 2943 + 447612 @@ -15744,12 +16024,12 @@ 1 2 - 5765455 + 5780855 2 2935 - 422497 + 423626 @@ -15765,12 +16045,12 @@ 1 2 - 5904751 + 5920523 2 2555 - 283201 + 283958 @@ -15786,12 +16066,12 @@ 1 2 - 6175493 + 6191988 2 5 - 12459 + 12492 @@ -15801,37 +16081,37 @@ var_def - 3721867 + 3731808 id - 3721867 + 3731808 var_specialized - 690 + 645 id - 690 + 645 var_decl_specifiers - 487660 + 488962 id - 487660 + 488962 name - 498 + 499 @@ -15845,7 +16125,7 @@ 1 2 - 487660 + 488962 @@ -15886,26 +16166,26 @@ is_structured_binding - 1013 + 946 id - 1013 + 946 var_requires - 414 + 387 id - 69 + 64 constraint - 414 + 387 @@ -15919,17 +16199,17 @@ 2 3 - 23 + 21 3 4 - 23 + 21 13 14 - 23 + 21 @@ -15938,6 +16218,325 @@ constraint id + + + 12 + + + 1 + 2 + 387 + + + + + + + + + type_decls + 1687983 + + + id + 1687983 + + + type_id + 1651022 + + + location + 1326265 + + + + + id + type_id + + + 12 + + + 1 + 2 + 1687983 + + + + + + + id + location + + + 12 + + + 1 + 2 + 1687983 + + + + + + + type_id + id + + + 12 + + + 1 + 2 + 1624425 + + + 2 + 24 + 26596 + + + + + + + type_id + location + + + 12 + + + 1 + 2 + 1625611 + + + 2 + 24 + 25411 + + + + + + + location + id + + + 12 + + + 1 + 2 + 1257941 + + + 2 + 651 + 68323 + + + + + + + location + type_id + + + 12 + + + 1 + 2 + 1259139 + + + 2 + 651 + 67126 + + + + + + + + + type_def + 1158256 + + + id + 1158256 + + + + + + type_decl_top + 672531 + + + type_decl + 672531 + + + + + + type_requires + 7680 + + + id + 2043 + + + constraint + 7659 + + + + + id + constraint + + + 12 + + + 1 + 2 + 1011 + + + 2 + 5 + 107 + + + 5 + 6 + 602 + + + 6 + 13 + 172 + + + 13 + 14 + 150 + + + + + + + constraint + id + + + 12 + + + 1 + 2 + 7637 + + + 2 + 3 + 21 + + + + + + + + + namespace_decls + 430961 + + + id + 430961 + + + namespace_id + 1959 + + + location + 430961 + + + bodylocation + 430961 + + + + + id + namespace_id + + + 12 + + + 1 + 2 + 430961 + + + + + + + id + location + + + 12 + + + 1 + 2 + 430961 + + + + + + + id + bodylocation + + + 12 + + + 1 + 2 + 430961 + + + + + + + namespace_id + id 12 @@ -15947,325 +16546,6 @@ 2 414 - - - - - - - - type_decls - 1840533 - - - id - 1840533 - - - type_id - 1800233 - - - location - 1446052 - - - - - id - type_id - - - 12 - - - 1 - 2 - 1840533 - - - - - - - id - location - - - 12 - - - 1 - 2 - 1840533 - - - - - - - type_id - id - - - 12 - - - 1 - 2 - 1771235 - - - 2 - 24 - 28998 - - - - - - - type_id - location - - - 12 - - - 1 - 2 - 1772527 - - - 2 - 24 - 27706 - - - - - - - location - id - - - 12 - - - 1 - 2 - 1371558 - - - 2 - 651 - 74494 - - - - - - - location - type_id - - - 12 - - - 1 - 2 - 1372863 - - - 2 - 651 - 73188 - - - - - - - - - type_def - 1262896 - - - id - 1262896 - - - - - - type_decl_top - 670739 - - - type_decl - 670739 - - - - - - type_requires - 8219 - - - id - 2187 - - - constraint - 8196 - - - - - id - constraint - - - 12 - - - 1 - 2 - 1082 - - - 2 - 5 - 115 - - - 5 - 6 - 644 - - - 6 - 13 - 184 - - - 13 - 14 - 161 - - - - - - - constraint - id - - - 12 - - - 1 - 2 - 8173 - - - 2 - 3 - 23 - - - - - - - - - namespace_decls - 429821 - - - id - 429821 - - - namespace_id - 1954 - - - location - 429821 - - - bodylocation - 429821 - - - - - id - namespace_id - - - 12 - - - 1 - 2 - 429821 - - - - - - - id - location - - - 12 - - - 1 - 2 - 429821 - - - - - - - id - bodylocation - - - 12 - - - 1 - 2 - 429821 - - - - - - - namespace_id - id - - - 12 - - - 1 - 2 - 413 - 2 3 @@ -16274,42 +16554,42 @@ 3 6 - 180 + 181 6 15 - 163 + 164 15 34 - 154 + 155 35 62 - 163 + 164 63 87 - 154 + 155 90 142 - 154 + 155 143 219 - 154 + 155 263 1505 - 154 + 155 1854 @@ -16330,7 +16610,7 @@ 1 2 - 413 + 414 2 @@ -16340,42 +16620,42 @@ 3 6 - 180 + 181 6 15 - 163 + 164 15 34 - 154 + 155 35 62 - 163 + 164 63 87 - 154 + 155 90 142 - 154 + 155 143 219 - 154 + 155 263 1505 - 154 + 155 1854 @@ -16396,7 +16676,7 @@ 1 2 - 413 + 414 2 @@ -16406,42 +16686,42 @@ 3 6 - 180 + 181 6 15 - 163 + 164 15 34 - 154 + 155 35 62 - 163 + 164 63 87 - 154 + 155 90 142 - 154 + 155 143 219 - 154 + 155 263 1505 - 154 + 155 1854 @@ -16462,7 +16742,7 @@ 1 2 - 429821 + 430961 @@ -16478,7 +16758,7 @@ 1 2 - 429821 + 430961 @@ -16494,7 +16774,7 @@ 1 2 - 429821 + 430961 @@ -16510,7 +16790,7 @@ 1 2 - 429821 + 430961 @@ -16526,7 +16806,7 @@ 1 2 - 429821 + 430961 @@ -16542,7 +16822,7 @@ 1 2 - 429821 + 430961 @@ -16552,23 +16832,23 @@ usings - 339714 + 311355 id - 339714 + 311355 element_id - 73742 + 67416 location - 33521 + 30744 kind - 26 + 24 @@ -16582,7 +16862,7 @@ 1 2 - 339714 + 311355 @@ -16598,7 +16878,7 @@ 1 2 - 339714 + 311355 @@ -16614,7 +16894,7 @@ 1 2 - 339714 + 311355 @@ -16630,17 +16910,17 @@ 1 2 - 64089 + 58562 2 5 - 6725 + 6168 5 134 - 2927 + 2685 @@ -16656,17 +16936,17 @@ 1 2 - 64089 + 58562 2 5 - 6725 + 6168 5 134 - 2927 + 2685 @@ -16682,7 +16962,7 @@ 1 2 - 73742 + 67416 @@ -16698,22 +16978,22 @@ 1 2 - 26440 + 24250 2 4 - 2861 + 2624 4 132 - 2439 + 2237 145 - 367 - 1780 + 365 + 1632 @@ -16729,22 +17009,22 @@ 1 2 - 26440 + 24250 2 4 - 2861 + 2624 4 132 - 2439 + 2237 145 - 367 - 1780 + 365 + 1632 @@ -16760,7 +17040,7 @@ 1 2 - 33521 + 30744 @@ -16776,12 +17056,12 @@ 393 394 - 13 + 12 - 25368 - 25369 - 13 + 25350 + 25351 + 12 @@ -16797,12 +17077,12 @@ 214 215 - 13 + 12 - 5378 - 5379 - 13 + 5360 + 5361 + 12 @@ -16818,12 +17098,12 @@ 356 357 - 13 + 12 2186 2187 - 13 + 12 @@ -16833,15 +17113,15 @@ using_container - 722789 + 662697 parent - 26479 + 24250 child - 339714 + 311355 @@ -16855,42 +17135,42 @@ 1 2 - 12250 + 11236 2 3 - 1951 + 1790 3 6 - 2241 + 2056 6 7 - 2861 + 2588 7 27 - 2017 + 1850 27 136 - 1028 + 943 145 146 - 3270 + 2999 146 437 - 857 + 786 @@ -16906,27 +17186,27 @@ 1 2 - 121282 + 111017 2 3 - 150162 + 137723 3 4 - 24567 + 22532 4 5 - 33323 + 30563 5 65 - 10378 + 9518 @@ -16936,27 +17216,27 @@ static_asserts - 183028 + 183513 id - 183028 + 183513 condition - 183028 + 183513 message - 40988 + 41097 location - 23861 + 23924 enclosing - 6630 + 6648 @@ -16970,7 +17250,7 @@ 1 2 - 183028 + 183513 @@ -16986,7 +17266,7 @@ 1 2 - 183028 + 183513 @@ -17002,7 +17282,7 @@ 1 2 - 183028 + 183513 @@ -17018,7 +17298,7 @@ 1 2 - 183028 + 183513 @@ -17034,7 +17314,7 @@ 1 2 - 183028 + 183513 @@ -17050,7 +17330,7 @@ 1 2 - 183028 + 183513 @@ -17066,7 +17346,7 @@ 1 2 - 183028 + 183513 @@ -17082,7 +17362,7 @@ 1 2 - 183028 + 183513 @@ -17098,32 +17378,32 @@ 1 2 - 30155 + 30235 2 3 - 671 + 673 3 4 - 3866 + 3876 4 12 - 2178 + 2184 12 17 - 3306 + 3315 17 513 - 809 + 811 @@ -17139,32 +17419,32 @@ 1 2 - 30155 + 30235 2 3 - 671 + 673 3 4 - 3866 + 3876 4 12 - 2178 + 2184 12 17 - 3306 + 3315 17 513 - 809 + 811 @@ -17180,12 +17460,12 @@ 1 2 - 37983 + 38084 2 33 - 3005 + 3013 @@ -17201,7 +17481,7 @@ 1 2 - 32084 + 32169 2 @@ -17211,17 +17491,17 @@ 3 4 - 3616 + 3626 4 12 - 1980 + 1985 12 43 - 2953 + 2961 @@ -17237,37 +17517,37 @@ 1 2 - 4477 + 4489 2 3 - 3883 + 3893 3 4 - 1868 + 1873 4 5 - 111 + 112 5 6 - 5011 + 5024 6 13 - 456 + 457 14 15 - 2807 + 2814 16 @@ -17277,12 +17557,12 @@ 17 18 - 4658 + 4670 19 52 - 525 + 526 @@ -17298,37 +17578,37 @@ 1 2 - 4477 + 4489 2 3 - 3883 + 3893 3 4 - 1868 + 1873 4 5 - 111 + 112 5 6 - 5011 + 5024 6 13 - 456 + 457 14 15 - 2807 + 2814 16 @@ -17338,12 +17618,12 @@ 17 18 - 4658 + 4670 19 52 - 525 + 526 @@ -17359,22 +17639,22 @@ 1 2 - 7224 + 7243 2 3 - 8137 + 8159 3 4 - 8249 + 8271 4 7 - 249 + 250 @@ -17390,32 +17670,32 @@ 1 2 - 5313 + 5327 2 3 - 8516 + 8538 3 4 - 1593 + 1597 4 5 - 5028 + 5042 5 13 - 516 + 518 13 14 - 2807 + 2814 16 @@ -17436,17 +17716,17 @@ 1 2 - 5468 + 5482 2 3 - 559 + 561 3 210 - 499 + 500 223 @@ -17467,17 +17747,17 @@ 1 2 - 5468 + 5482 2 3 - 559 + 561 3 210 - 499 + 500 223 @@ -17498,17 +17778,17 @@ 1 2 - 5631 + 5646 2 3 - 551 + 552 3 2936 - 447 + 448 @@ -17524,17 +17804,17 @@ 1 2 - 5614 + 5629 2 3 - 568 + 569 3 1929 - 447 + 448 @@ -17544,23 +17824,23 @@ params - 6965543 + 6984148 id - 6939004 + 6957539 function - 3356931 + 3365898 index - 7974 + 7995 type_id - 1222140 + 1225405 @@ -17574,7 +17854,7 @@ 1 2 - 6939004 + 6957539 @@ -17590,7 +17870,7 @@ 1 2 - 6939004 + 6957539 @@ -17606,12 +17886,12 @@ 1 2 - 6912466 + 6930930 2 3 - 26538 + 26609 @@ -17627,27 +17907,27 @@ 1 2 - 1458993 + 1462890 2 3 - 906295 + 908716 3 4 - 559675 + 561170 4 5 - 276598 + 277337 5 65 - 155368 + 155783 @@ -17663,27 +17943,27 @@ 1 2 - 1458993 + 1462890 2 3 - 906295 + 908716 3 4 - 559675 + 561170 4 5 - 276598 + 277337 5 65 - 155368 + 155783 @@ -17699,22 +17979,22 @@ 1 2 - 1758766 + 1763464 2 3 - 1005721 + 1008407 3 4 - 435829 + 436993 4 11 - 156614 + 157032 @@ -17730,27 +18010,27 @@ 2 3 - 3987 + 3997 6 7 - 1993 + 1998 14 18 - 622 + 624 23 138 - 622 + 624 323 15234 - 622 + 624 26943 @@ -17771,27 +18051,27 @@ 2 3 - 3987 + 3997 6 7 - 1993 + 1998 14 18 - 622 + 624 23 138 - 622 + 624 323 15234 - 622 + 624 26943 @@ -17812,27 +18092,27 @@ 1 2 - 3987 + 3997 2 3 - 1993 + 1998 4 7 - 622 + 624 9 54 - 622 + 624 115 2700 - 622 + 624 7528 @@ -17853,27 +18133,27 @@ 1 2 - 738841 + 740814 2 3 - 241338 + 241982 3 5 - 93569 + 93819 5 13 - 93445 + 93694 13 2570 - 54945 + 55092 @@ -17889,27 +18169,27 @@ 1 2 - 820948 + 823141 2 3 - 180661 + 181143 3 6 - 106278 + 106562 6 27 - 92199 + 92445 27 2558 - 22053 + 22112 @@ -17925,17 +18205,17 @@ 1 2 - 997373 + 1000037 2 3 - 166581 + 167026 3 65 - 58185 + 58340 @@ -17945,15 +18225,15 @@ overrides - 169371 + 169820 new - 160140 + 160564 old - 19073 + 19124 @@ -17967,12 +18247,12 @@ 1 2 - 150917 + 151317 2 4 - 9222 + 9246 @@ -17988,32 +18268,32 @@ 1 2 - 10436 + 10464 2 3 - 2583 + 2590 3 4 - 1730 + 1735 4 6 - 1575 + 1580 6 18 - 1438 + 1441 18 230 - 1308 + 1312 @@ -18023,19 +18303,19 @@ membervariables - 1491860 + 1495845 id - 1489415 + 1493394 type_id - 453914 + 455127 name - 639011 + 640718 @@ -18049,12 +18329,12 @@ 1 2 - 1487079 + 1491051 2 4 - 2336 + 2342 @@ -18070,7 +18350,7 @@ 1 2 - 1489415 + 1493394 @@ -18086,22 +18366,22 @@ 1 2 - 336836 + 337736 2 3 - 71930 + 72123 3 10 - 35041 + 35135 10 4422 - 10105 + 10132 @@ -18117,22 +18397,22 @@ 1 2 - 354330 + 355276 2 3 - 63944 + 64115 3 49 - 34118 + 34209 56 2175 - 1521 + 1525 @@ -18148,22 +18428,22 @@ 1 2 - 419850 + 420972 2 3 - 121804 + 122129 3 5 - 57316 + 57469 5 654 - 40040 + 40147 @@ -18179,17 +18459,17 @@ 1 2 - 522314 + 523709 2 3 - 72311 + 72504 3 658 - 44386 + 44504 @@ -18199,19 +18479,19 @@ globalvariables - 486788 + 488088 id - 486788 + 488088 type_id - 10341 + 10368 name - 112134 + 112433 @@ -18225,7 +18505,7 @@ 1 2 - 486788 + 488088 @@ -18241,7 +18521,7 @@ 1 2 - 486788 + 488088 @@ -18257,32 +18537,32 @@ 1 2 - 6977 + 6995 2 3 - 373 + 374 3 5 - 747 + 749 5 20 - 872 + 874 20 74 - 872 + 874 152 2214 - 498 + 499 @@ -18298,32 +18578,32 @@ 1 2 - 7101 + 7120 2 3 - 373 + 374 3 5 - 747 + 749 5 20 - 747 + 749 20 74 - 872 + 874 124 226 - 498 + 499 @@ -18339,17 +18619,17 @@ 1 2 - 95065 + 95319 2 7 - 8721 + 8744 7 604 - 8347 + 8370 @@ -18365,12 +18645,12 @@ 1 2 - 96684 + 96943 2 3 - 15200 + 15241 3 @@ -18385,19 +18665,19 @@ localvariables - 727548 + 725943 id - 727548 + 725943 type_id - 53530 + 53416 name - 101739 + 101515 @@ -18411,7 +18691,7 @@ 1 2 - 727548 + 725943 @@ -18427,7 +18707,7 @@ 1 2 - 727548 + 725943 @@ -18443,37 +18723,37 @@ 1 2 - 28944 + 28884 2 3 - 7842 + 7824 3 4 - 4033 + 4024 4 6 - 4057 + 4048 6 12 - 4157 + 4148 12 166 - 4017 + 4008 168 19320 - 477 + 476 @@ -18489,22 +18769,22 @@ 1 2 - 38444 + 38363 2 3 - 6714 + 6699 3 5 - 4474 + 4465 5 3502 - 3897 + 3888 @@ -18520,32 +18800,32 @@ 1 2 - 62592 + 62454 2 3 - 16077 + 16042 3 4 - 6545 + 6531 4 8 - 8147 + 8129 8 135 - 7633 + 7616 135 7544 - 742 + 740 @@ -18561,22 +18841,22 @@ 1 2 - 84658 + 84471 2 3 - 8436 + 8417 3 15 - 7689 + 7672 15 1509 - 955 + 953 @@ -18586,15 +18866,15 @@ autoderivation - 228629 + 229240 var - 228629 + 229240 derivation_type - 622 + 624 @@ -18608,7 +18888,7 @@ 1 2 - 228629 + 229240 @@ -18654,15 +18934,15 @@ orphaned_variables - 55584 + 44331 var - 55584 + 44331 function - 51483 + 41060 @@ -18676,7 +18956,7 @@ 1 2 - 55584 + 44331 @@ -18692,12 +18972,12 @@ 1 2 - 50415 + 40208 2 47 - 1068 + 851 @@ -18707,19 +18987,19 @@ enumconstants - 343845 + 344763 id - 343845 + 344763 parent - 41181 + 41291 index - 13908 + 13945 type_id @@ -18727,11 +19007,11 @@ name - 343464 + 344382 location - 316517 + 317363 @@ -18745,7 +19025,7 @@ 1 2 - 343845 + 344763 @@ -18761,7 +19041,7 @@ 1 2 - 343845 + 344763 @@ -18777,7 +19057,7 @@ 1 2 - 343845 + 344763 @@ -18793,7 +19073,7 @@ 1 2 - 343845 + 344763 @@ -18809,7 +19089,7 @@ 1 2 - 343845 + 344763 @@ -18825,57 +19105,57 @@ 1 2 - 1521 + 1525 2 3 - 5704 + 5719 3 4 - 8692 + 8715 4 5 - 5487 + 5501 5 6 - 4617 + 4630 6 7 - 2662 + 2669 7 8 - 1955 + 1961 8 11 - 3802 + 3813 11 17 - 3151 + 3159 17 64 - 3096 + 3104 79 257 - 488 + 490 @@ -18891,57 +19171,57 @@ 1 2 - 1521 + 1525 2 3 - 5704 + 5719 3 4 - 8692 + 8715 4 5 - 5487 + 5501 5 6 - 4617 + 4630 6 7 - 2662 + 2669 7 8 - 1955 + 1961 8 11 - 3802 + 3813 11 17 - 3151 + 3159 17 64 - 3096 + 3104 79 257 - 488 + 490 @@ -18957,7 +19237,7 @@ 1 2 - 41181 + 41291 @@ -18973,57 +19253,57 @@ 1 2 - 1521 + 1525 2 3 - 5704 + 5719 3 4 - 8692 + 8715 4 5 - 5487 + 5501 5 6 - 4617 + 4630 6 7 - 2662 + 2669 7 8 - 1955 + 1961 8 11 - 3802 + 3813 11 17 - 3151 + 3159 17 64 - 3096 + 3104 79 257 - 488 + 490 @@ -19039,52 +19319,52 @@ 1 2 - 2118 + 2124 2 3 - 5921 + 5937 3 4 - 8746 + 8770 4 5 - 5432 + 5447 5 6 - 4617 + 4630 6 7 - 2607 + 2614 7 8 - 1847 + 1852 8 11 - 3694 + 3704 11 18 - 3096 + 3104 18 257 - 3096 + 3104 @@ -19100,47 +19380,47 @@ 1 2 - 2770 + 2778 2 3 - 2227 + 2233 3 4 - 2281 + 2287 4 5 - 1249 + 1252 5 9 - 1086 + 1089 9 12 - 1086 + 1089 12 19 - 1086 + 1089 19 55 - 1086 + 1089 58 759 - 1032 + 1034 @@ -19156,47 +19436,47 @@ 1 2 - 2770 + 2778 2 3 - 2227 + 2233 3 4 - 2281 + 2287 4 5 - 1249 + 1252 5 9 - 1086 + 1089 9 12 - 1086 + 1089 12 19 - 1086 + 1089 19 55 - 1086 + 1089 58 759 - 1032 + 1034 @@ -19212,7 +19492,7 @@ 1 2 - 13908 + 13945 @@ -19228,47 +19508,47 @@ 1 2 - 2770 + 2778 2 3 - 2227 + 2233 3 4 - 2281 + 2287 4 5 - 1249 + 1252 5 9 - 1086 + 1089 9 12 - 1086 + 1089 12 19 - 1086 + 1089 19 55 - 1086 + 1089 58 756 - 1032 + 1034 @@ -19284,47 +19564,47 @@ 1 2 - 2770 + 2778 2 3 - 2227 + 2233 3 4 - 2281 + 2287 4 5 - 1249 + 1252 5 9 - 1086 + 1089 9 12 - 1086 + 1089 12 19 - 1086 + 1089 19 55 - 1086 + 1089 58 759 - 1032 + 1034 @@ -19420,12 +19700,12 @@ 1 2 - 343084 + 344000 2 3 - 380 + 381 @@ -19441,12 +19721,12 @@ 1 2 - 343084 + 344000 2 3 - 380 + 381 @@ -19462,7 +19742,7 @@ 1 2 - 343464 + 344382 @@ -19478,7 +19758,7 @@ 1 2 - 343464 + 344382 @@ -19494,12 +19774,12 @@ 1 2 - 343084 + 344000 2 3 - 380 + 381 @@ -19515,12 +19795,12 @@ 1 2 - 315485 + 316328 2 205 - 1032 + 1034 @@ -19536,7 +19816,7 @@ 1 2 - 316517 + 317363 @@ -19552,12 +19832,12 @@ 1 2 - 315485 + 316328 2 205 - 1032 + 1034 @@ -19573,7 +19853,7 @@ 1 2 - 316517 + 317363 @@ -19589,12 +19869,12 @@ 1 2 - 315485 + 316328 2 205 - 1032 + 1034 @@ -19604,31 +19884,31 @@ builtintypes - 7101 + 7120 id - 7101 + 7120 name - 7101 + 7120 kind - 7101 + 7120 size - 872 + 874 sign - 373 + 374 alignment - 622 + 624 @@ -19642,7 +19922,7 @@ 1 2 - 7101 + 7120 @@ -19658,7 +19938,7 @@ 1 2 - 7101 + 7120 @@ -19674,7 +19954,7 @@ 1 2 - 7101 + 7120 @@ -19690,7 +19970,7 @@ 1 2 - 7101 + 7120 @@ -19706,7 +19986,7 @@ 1 2 - 7101 + 7120 @@ -19722,7 +20002,7 @@ 1 2 - 7101 + 7120 @@ -19738,7 +20018,7 @@ 1 2 - 7101 + 7120 @@ -19754,7 +20034,7 @@ 1 2 - 7101 + 7120 @@ -19770,7 +20050,7 @@ 1 2 - 7101 + 7120 @@ -19786,7 +20066,7 @@ 1 2 - 7101 + 7120 @@ -19802,7 +20082,7 @@ 1 2 - 7101 + 7120 @@ -19818,7 +20098,7 @@ 1 2 - 7101 + 7120 @@ -19834,7 +20114,7 @@ 1 2 - 7101 + 7120 @@ -19850,7 +20130,7 @@ 1 2 - 7101 + 7120 @@ -19866,7 +20146,7 @@ 1 2 - 7101 + 7120 @@ -20025,7 +20305,7 @@ 3 4 - 622 + 624 @@ -20041,12 +20321,12 @@ 1 2 - 498 + 499 2 3 - 373 + 374 @@ -20161,7 +20441,7 @@ 5 6 - 373 + 374 @@ -20285,7 +20565,7 @@ 2 3 - 622 + 624 @@ -20301,7 +20581,7 @@ 3 4 - 622 + 624 @@ -20311,23 +20591,23 @@ derivedtypes - 3036227 + 3044337 id - 3036227 + 3044337 name - 1470331 + 1474259 kind - 747 + 749 type_id - 1942542 + 1947731 @@ -20341,7 +20621,7 @@ 1 2 - 3036227 + 3044337 @@ -20357,7 +20637,7 @@ 1 2 - 3036227 + 3044337 @@ -20373,7 +20653,7 @@ 1 2 - 3036227 + 3044337 @@ -20389,17 +20669,17 @@ 1 2 - 1353712 + 1357327 2 30 - 110514 + 110809 30 4274 - 6105 + 6121 @@ -20415,7 +20695,7 @@ 1 2 - 1470331 + 1474259 @@ -20431,17 +20711,17 @@ 1 2 - 1353836 + 1357452 2 30 - 110390 + 110685 30 4274 - 6105 + 6121 @@ -20580,22 +20860,22 @@ 1 2 - 1312097 + 1315602 2 3 - 377145 + 378152 3 4 - 122475 + 122802 4 135 - 130823 + 131172 @@ -20611,22 +20891,22 @@ 1 2 - 1313592 + 1317101 2 3 - 377145 + 378152 3 4 - 120980 + 121303 4 135 - 130823 + 131172 @@ -20642,22 +20922,22 @@ 1 2 - 1313966 + 1317476 2 3 - 378017 + 379027 3 4 - 122475 + 122802 4 6 - 128082 + 128424 @@ -20667,11 +20947,11 @@ pointerishsize - 2244308 + 2250303 id - 2244308 + 2250303 size @@ -20693,7 +20973,7 @@ 1 2 - 2244308 + 2250303 @@ -20709,7 +20989,7 @@ 1 2 - 2244308 + 2250303 @@ -20793,23 +21073,23 @@ arraysizes - 88337 + 88572 id - 88337 + 88572 num_elements - 18439 + 18489 bytesize - 22800 + 22861 alignment - 622 + 624 @@ -20823,7 +21103,7 @@ 1 2 - 88337 + 88572 @@ -20839,7 +21119,7 @@ 1 2 - 88337 + 88572 @@ -20855,7 +21135,7 @@ 1 2 - 88337 + 88572 @@ -20876,7 +21156,7 @@ 2 3 - 8846 + 8869 3 @@ -20886,22 +21166,22 @@ 4 5 - 5606 + 5621 6 7 - 1619 + 1624 8 27 - 1495 + 1499 34 57 - 373 + 374 @@ -20917,22 +21197,22 @@ 1 2 - 9469 + 9494 2 3 - 6603 + 6621 3 5 - 1245 + 1249 5 11 - 1121 + 1124 @@ -20948,22 +21228,22 @@ 1 2 - 9469 + 9494 2 3 - 6603 + 6621 3 4 - 996 + 999 4 6 - 1370 + 1374 @@ -20979,37 +21259,37 @@ 1 2 - 622 + 624 2 3 - 14702 + 14741 3 4 - 373 + 374 4 5 - 3239 + 3248 5 7 - 1495 + 1499 7 17 - 1744 + 1748 17 45 - 622 + 624 @@ -21025,22 +21305,22 @@ 1 2 - 16446 + 16490 2 3 - 3987 + 3997 3 5 - 1744 + 1748 5 7 - 622 + 624 @@ -21056,22 +21336,22 @@ 1 2 - 16570 + 16615 2 3 - 3987 + 3997 3 5 - 1868 + 1873 5 6 - 373 + 374 @@ -21184,15 +21464,15 @@ typedefbase - 2162643 + 1827993 id - 2162643 + 1827993 type_id - 900467 + 885785 @@ -21206,7 +21486,7 @@ 1 2 - 2162643 + 1827993 @@ -21222,22 +21502,22 @@ 1 2 - 726620 + 706685 2 3 - 81262 + 83828 3 - 6 - 69598 + 7 + 74588 - 6 - 2848 - 22985 + 7 + 4525 + 20682 @@ -21247,15 +21527,15 @@ decltypes - 812302 + 814471 id - 27490 + 27563 expr - 812302 + 814471 kind @@ -21263,7 +21543,7 @@ base_type - 3332 + 3341 parentheses_would_change_meaning @@ -21281,32 +21561,32 @@ 1 2 - 9711 + 9737 2 3 - 3639 + 3648 4 5 - 3617 + 3626 6 9 - 548 + 549 23 24 - 3244 + 3253 29 30 - 3134 + 3143 32 @@ -21316,12 +21596,12 @@ 171 172 - 3069 + 3077 173 224 - 394 + 395 @@ -21337,7 +21617,7 @@ 1 2 - 27490 + 27563 @@ -21353,7 +21633,7 @@ 1 2 - 27490 + 27563 @@ -21369,7 +21649,7 @@ 1 2 - 27490 + 27563 @@ -21385,7 +21665,7 @@ 1 2 - 812302 + 814471 @@ -21401,7 +21681,7 @@ 1 2 - 812302 + 814471 @@ -21417,7 +21697,7 @@ 1 2 - 812302 + 814471 @@ -21433,7 +21713,7 @@ 1 2 - 812302 + 814471 @@ -21513,17 +21793,17 @@ 1 2 - 1205 + 1208 2 3 - 1030 + 1033 3 4 - 350 + 351 4 @@ -21533,7 +21813,7 @@ 5 8 - 284 + 285 8 @@ -21559,27 +21839,27 @@ 1 2 - 1161 + 1164 2 3 - 854 + 857 3 4 - 328 + 329 4 7 - 284 + 285 7 201 - 306 + 307 340 @@ -21605,7 +21885,7 @@ 1 2 - 3332 + 3341 @@ -21621,7 +21901,7 @@ 1 2 - 3332 + 3341 @@ -21695,23 +21975,23 @@ type_operators - 8519 + 7960 id - 8519 + 7960 arg_type - 7690 + 7186 kind - 92 + 86 base_type - 5618 + 5249 @@ -21725,7 +22005,7 @@ 1 2 - 8519 + 7960 @@ -21741,7 +22021,7 @@ 1 2 - 8519 + 7960 @@ -21757,7 +22037,7 @@ 1 2 - 8519 + 7960 @@ -21773,12 +22053,12 @@ 1 2 - 6861 + 6411 2 3 - 828 + 774 @@ -21794,12 +22074,12 @@ 1 2 - 6861 + 6411 2 3 - 828 + 774 @@ -21815,12 +22095,12 @@ 1 2 - 7667 + 7164 2 3 - 23 + 21 @@ -21836,22 +22116,22 @@ 1 2 - 23 + 21 7 8 - 23 + 21 96 97 - 23 + 21 266 267 - 23 + 21 @@ -21867,22 +22147,22 @@ 1 2 - 23 + 21 7 8 - 23 + 21 96 97 - 23 + 21 266 267 - 23 + 21 @@ -21898,22 +22178,22 @@ 1 2 - 23 + 21 4 5 - 23 + 21 72 73 - 23 + 21 222 223 - 23 + 21 @@ -21929,22 +22209,22 @@ 1 2 - 3891 + 3636 2 3 - 967 + 903 3 4 - 368 + 344 4 6 - 391 + 365 @@ -21960,22 +22240,22 @@ 1 2 - 4052 + 3786 2 3 - 1059 + 989 3 4 - 483 + 451 4 5 - 23 + 21 @@ -21991,17 +22271,17 @@ 1 2 - 4374 + 4087 2 3 - 1220 + 1140 3 4 - 23 + 21 @@ -22011,19 +22291,19 @@ usertypes - 4863363 + 4459321 id - 4863363 + 4459321 name - 1051136 + 964062 kind - 158 + 145 @@ -22037,7 +22317,7 @@ 1 2 - 4863363 + 4459321 @@ -22053,7 +22333,7 @@ 1 2 - 4863363 + 4459321 @@ -22069,22 +22349,22 @@ 1 2 - 727655 + 667498 2 3 - 192440 + 176378 3 7 - 83738 + 76801 7 30282 - 47302 + 43383 @@ -22100,12 +22380,12 @@ 1 2 - 986532 + 904810 2 10 - 64603 + 59252 @@ -22121,62 +22401,62 @@ 28 29 - 13 + 12 64 65 - 13 + 12 579 580 - 13 + 12 1042 1043 - 13 + 12 - 1563 - 1564 - 13 + 1562 + 1563 + 12 1874 1875 - 13 + 12 4586 4587 - 13 + 12 - 19666 - 19667 - 13 + 19665 + 19666 + 12 - 20075 - 20076 - 13 + 20069 + 20070 + 12 82092 82093 - 13 + 12 - 86007 - 86008 - 13 + 85998 + 85999 + 12 - 151219 - 151220 - 13 + 151139 + 151140 + 12 @@ -22192,62 +22472,62 @@ 19 20 - 13 + 12 47 48 - 13 + 12 50 51 - 13 + 12 153 154 - 13 + 12 417 418 - 13 + 12 771 772 - 13 + 12 1565 1566 - 13 + 12 3066 3067 - 13 + 12 5585 5586 - 13 + 12 10838 10839 - 13 + 12 10903 10904 - 13 + 12 51707 51708 - 13 + 12 @@ -22257,19 +22537,19 @@ usertypesize - 1595582 + 1463274 id - 1595582 + 1463274 size - 1846 + 1693 alignment - 105 + 96 @@ -22283,7 +22563,7 @@ 1 2 - 1595582 + 1463274 @@ -22299,7 +22579,7 @@ 1 2 - 1595582 + 1463274 @@ -22315,52 +22595,52 @@ 1 2 - 580 + 532 2 3 - 250 + 229 3 4 - 105 + 96 4 6 - 118 + 108 6 8 - 145 + 133 8 14 - 145 + 133 14 26 - 145 + 133 26 86 - 145 + 133 96 - 1592 - 145 + 1588 + 133 1733 - 93158 - 65 + 93157 + 60 @@ -22376,17 +22656,17 @@ 1 2 - 1516 + 1390 2 3 - 210 + 193 3 6 - 118 + 108 @@ -22402,42 +22682,42 @@ 1 2 - 13 + 12 3 4 - 13 + 12 7 8 - 13 + 12 54 55 - 13 + 12 56 57 - 13 + 12 - 2046 - 2047 - 13 + 2045 + 2046 + 12 - 10484 - 10485 - 13 + 10475 + 10476 + 12 - 108344 - 108345 - 13 + 108343 + 108344 + 12 @@ -22453,37 +22733,37 @@ 1 2 - 26 + 24 3 4 - 13 + 12 11 12 - 13 + 12 12 13 - 13 + 12 17 18 - 13 + 12 27 28 - 13 + 12 110 111 - 13 + 12 @@ -22493,26 +22773,26 @@ usertype_final - 11462 + 11493 id - 11462 + 11493 usertype_uuid - 50280 + 50413 id - 50280 + 50413 uuid - 49771 + 49904 @@ -22526,7 +22806,7 @@ 1 2 - 50280 + 50413 @@ -22542,12 +22822,12 @@ 1 2 - 49263 + 49394 2 3 - 508 + 509 @@ -22557,15 +22837,15 @@ usertype_alias_kind - 2162686 + 1827993 id - 2162643 + 1827993 alias_kind - 85 + 24 @@ -22579,12 +22859,7 @@ 1 2 - 2162600 - - - 2 - 3 - 42 + 1827993 @@ -22598,14 +22873,14 @@ 12 - 21658 - 21659 - 42 + 36585 + 36586 + 12 - 28961 - 28962 - 42 + 114554 + 114555 + 12 @@ -22615,26 +22890,26 @@ nontype_template_parameters - 960966 + 766417 id - 960966 + 766417 type_template_type_constraint - 29057 + 27152 id - 14321 + 13382 constraint - 27836 + 26012 @@ -22648,27 +22923,27 @@ 1 2 - 10936 + 10219 2 3 - 967 + 903 3 5 - 1105 + 1032 5 14 - 1197 + 1118 14 17 - 115 + 107 @@ -22684,12 +22959,12 @@ 1 2 - 26616 + 24871 2 3 - 1220 + 1140 @@ -22699,15 +22974,15 @@ mangled_name - 7805181 + 7826029 id - 7805181 + 7826029 mangled_name - 6313668 + 6330532 is_complete @@ -22725,7 +23000,7 @@ 1 2 - 7805181 + 7826029 @@ -22741,7 +23016,7 @@ 1 2 - 7805181 + 7826029 @@ -22757,12 +23032,12 @@ 1 2 - 5984989 + 6000976 2 1127 - 328678 + 329556 @@ -22778,7 +23053,7 @@ 1 2 - 6313668 + 6330532 @@ -22830,59 +23105,59 @@ is_pod_class - 744607 + 593861 id - 744607 + 593861 is_standard_layout_class - 1314787 + 1205789 id - 1314787 + 1205789 is_complete - 1574126 + 1443608 id - 1574126 + 1443608 is_class_template - 284420 + 260848 id - 284420 + 260848 class_instantiation - 1297973 + 1190271 to - 1294176 + 1186788 from - 89303 + 81905 @@ -22896,12 +23171,12 @@ 1 2 - 1291512 + 1184345 2 8 - 2663 + 2443 @@ -22917,47 +23192,47 @@ 1 2 - 25952 + 23802 2 3 - 16154 + 14816 3 4 - 8835 + 8103 4 5 - 5841 + 5357 5 7 - 7529 + 6906 7 10 - 6830 + 6265 10 17 - 7226 + 6627 17 53 - 6765 + 6204 53 4219 - 4167 + 3821 @@ -22967,19 +23242,19 @@ class_template_argument - 3419922 + 3136346 type_id - 1594052 + 1461871 index - 1476 + 1354 arg_type - 1008977 + 925359 @@ -22993,27 +23268,27 @@ 1 2 - 663407 + 608427 2 3 - 479235 + 439439 3 4 - 302012 + 276994 4 7 - 120820 + 110800 7 113 - 28576 + 26209 @@ -23029,22 +23304,22 @@ 1 2 - 697654 + 639838 2 3 - 493648 + 452659 3 4 - 300047 + 275192 4 113 - 102701 + 94182 @@ -23060,37 +23335,37 @@ 2 3 - 13 + 12 4 5 - 936 + 858 5 30 - 118 + 108 33 90 - 118 + 108 95 453 - 118 + 108 643 - 6819 - 118 + 6818 + 108 - 11329 - 120877 - 52 + 11328 + 120866 + 48 @@ -23106,37 +23381,37 @@ 2 3 - 13 + 12 4 5 - 936 + 858 5 16 - 131 + 120 16 35 - 118 + 108 37 155 - 118 + 108 196 3251 - 118 + 108 10075 - 43772 - 39 + 43770 + 36 @@ -23152,27 +23427,27 @@ 1 2 - 633050 + 580609 2 3 - 206959 + 189791 3 4 - 60608 + 55575 4 11 - 76762 + 70403 11 - 11634 - 31596 + 11632 + 28979 @@ -23188,17 +23463,17 @@ 1 2 - 889448 + 815732 2 3 - 96886 + 88860 3 22 - 22642 + 20766 @@ -23208,19 +23483,19 @@ class_template_argument_value - 639675 + 510172 type_id - 258100 + 205847 index - 384 + 306 arg_value - 639504 + 510036 @@ -23234,17 +23509,17 @@ 1 2 - 195380 + 155825 2 3 - 54388 + 43377 3 8 - 8331 + 6644 @@ -23260,22 +23535,22 @@ 1 2 - 185511 + 147954 2 3 - 50757 + 40481 3 45 - 19482 + 15538 45 154 - 2349 + 1874 @@ -23291,47 +23566,47 @@ 2 3 - 42 + 34 20 21 - 42 + 34 49 50 - 42 + 34 84 85 - 42 + 34 105 106 - 42 + 34 278 279 - 42 + 34 981 982 - 42 + 34 2471 2472 - 42 + 34 3753 3754 - 42 + 34 @@ -23347,47 +23622,47 @@ 3 4 - 42 + 34 74 75 - 42 + 34 105 106 - 42 + 34 273 274 - 42 + 34 336 337 - 42 + 34 892 893 - 42 + 34 2433 2434 - 42 + 34 4801 4802 - 42 + 34 6051 6052 - 42 + 34 @@ -23403,12 +23678,12 @@ 1 2 - 639333 + 509900 2 3 - 170 + 136 @@ -23424,7 +23699,7 @@ 1 2 - 639504 + 510036 @@ -23434,15 +23709,15 @@ is_proxy_class_for - 60476 + 55466 id - 60476 + 55466 templ_param_id - 57140 + 52406 @@ -23456,7 +23731,7 @@ 1 2 - 60476 + 55466 @@ -23472,12 +23747,12 @@ 1 2 - 56243 + 51584 2 79 - 896 + 822 @@ -23487,19 +23762,19 @@ type_mentions - 5813149 + 5828677 id - 5813149 + 5828677 type_id - 275282 + 276017 location - 5767568 + 5782974 kind @@ -23517,7 +23792,7 @@ 1 2 - 5813149 + 5828677 @@ -23533,7 +23808,7 @@ 1 2 - 5813149 + 5828677 @@ -23549,7 +23824,7 @@ 1 2 - 5813149 + 5828677 @@ -23565,42 +23840,42 @@ 1 2 - 136147 + 136510 2 3 - 30912 + 30995 3 4 - 11137 + 11167 4 5 - 14668 + 14707 5 7 - 19938 + 19991 7 12 - 21785 + 21843 12 28 - 21025 + 21081 28 8907 - 19666 + 19719 @@ -23616,42 +23891,42 @@ 1 2 - 136147 + 136510 2 3 - 30912 + 30995 3 4 - 11137 + 11167 4 5 - 14668 + 14707 5 7 - 19938 + 19991 7 12 - 21785 + 21843 12 28 - 21025 + 21081 28 8907 - 19666 + 19719 @@ -23667,7 +23942,7 @@ 1 2 - 275282 + 276017 @@ -23683,12 +23958,12 @@ 1 2 - 5721986 + 5737270 2 3 - 45581 + 45703 @@ -23704,12 +23979,12 @@ 1 2 - 5721986 + 5737270 2 3 - 45581 + 45703 @@ -23725,7 +24000,7 @@ 1 2 - 5767568 + 5782974 @@ -23783,26 +24058,26 @@ is_function_template - 1382147 + 1335965 id - 1382147 + 1335965 function_instantiation - 1220177 + 973151 to - 1220177 + 973151 from - 228919 + 182574 @@ -23816,7 +24091,7 @@ 1 2 - 1220177 + 973151 @@ -23832,27 +24107,27 @@ 1 2 - 139240 + 111050 2 3 - 52978 + 42253 3 9 - 18029 + 14379 9 103 - 17175 + 13698 103 1532 - 1495 + 1192 @@ -23862,19 +24137,19 @@ function_template_argument - 3116090 + 2485235 function_id - 1822511 + 1453542 index - 598 + 477 arg_type - 373713 + 298055 @@ -23888,22 +24163,22 @@ 1 2 - 981943 + 783148 2 3 - 518123 + 413229 3 4 - 215461 + 171840 4 15 - 106982 + 85324 @@ -23919,22 +24194,22 @@ 1 2 - 1005955 + 802298 2 3 - 515731 + 411320 3 4 - 212726 + 169660 4 9 - 88098 + 70262 @@ -23950,52 +24225,52 @@ 1 2 - 213 + 170 7 8 - 42 + 34 45 46 - 42 + 34 77 78 - 42 + 34 138 139 - 42 + 34 280 281 - 42 + 34 2504 2505 - 42 + 34 7547 7548 - 42 + 34 19674 19675 - 42 + 34 42657 42658 - 42 + 34 @@ -24011,52 +24286,52 @@ 1 2 - 213 + 170 4 5 - 42 + 34 17 18 - 42 + 34 27 28 - 42 + 34 52 53 - 42 + 34 112 113 - 42 + 34 315 316 - 42 + 34 972 973 - 42 + 34 2754 2755 - 42 + 34 6081 6082 - 42 + 34 @@ -24072,37 +24347,37 @@ 1 2 - 219178 + 174805 2 3 - 33026 + 26340 3 4 - 25079 + 20002 4 6 - 28411 + 22659 6 11 - 29138 + 23239 11 76 - 29309 + 23375 79 2452 - 9570 + 7632 @@ -24118,17 +24393,17 @@ 1 2 - 322059 + 256858 2 3 - 40289 + 32132 3 15 - 11364 + 9063 @@ -24138,19 +24413,19 @@ function_template_argument_value - 567812 + 452858 function_id - 246778 + 196817 index - 598 + 477 arg_value - 564437 + 450166 @@ -24164,17 +24439,17 @@ 1 2 - 189868 + 151429 2 3 - 53790 + 42900 3 8 - 3118 + 2487 @@ -24190,22 +24465,22 @@ 1 2 - 181195 + 144512 2 3 - 46014 + 36698 3 54 - 18628 + 14856 54 113 - 939 + 749 @@ -24221,52 +24496,52 @@ 1 2 - 213 + 170 2 3 - 42 + 34 3 4 - 42 + 34 4 5 - 42 + 34 15 16 - 42 + 34 27 28 - 42 + 34 1345 1346 - 42 + 34 1388 1389 - 42 + 34 1850 1851 - 42 + 34 2547 2548 - 42 + 34 @@ -24282,52 +24557,52 @@ 1 2 - 213 + 170 2 3 - 42 + 34 3 4 - 42 + 34 4 5 - 42 + 34 51 52 - 42 + 34 63 64 - 42 + 34 1906 1907 - 42 + 34 3295 3296 - 42 + 34 3702 3703 - 42 + 34 4180 4181 - 42 + 34 @@ -24343,12 +24618,12 @@ 1 2 - 561062 + 447474 2 3 - 3375 + 2691 @@ -24364,7 +24639,7 @@ 1 2 - 564437 + 450166 @@ -24374,26 +24649,26 @@ is_variable_template - 58559 + 58715 id - 58559 + 58715 variable_instantiation - 420379 + 421502 to - 420379 + 421502 from - 35010 + 35104 @@ -24407,7 +24682,7 @@ 1 2 - 420379 + 421502 @@ -24423,47 +24698,47 @@ 1 2 - 15075 + 15116 2 3 - 3987 + 3997 3 4 - 2242 + 2248 4 6 - 2865 + 2873 6 8 - 2242 + 2248 8 11 - 2741 + 2748 11 30 - 2741 + 2748 30 105 - 2741 + 2748 180 546 - 373 + 374 @@ -24473,19 +24748,19 @@ variable_template_argument - 766875 + 768923 variable_id - 399697 + 400764 index - 1993 + 1998 arg_type - 256164 + 256849 @@ -24499,22 +24774,22 @@ 1 2 - 155493 + 155908 2 3 - 189631 + 190138 3 4 - 36381 + 36478 4 17 - 18190 + 18239 @@ -24530,22 +24805,22 @@ 1 2 - 170444 + 170899 2 3 - 179788 + 180269 3 4 - 33640 + 33730 4 17 - 15823 + 15865 @@ -24561,12 +24836,12 @@ 28 29 - 872 + 874 34 35 - 373 + 374 37 @@ -24612,12 +24887,12 @@ 1 2 - 872 + 874 2 3 - 373 + 374 5 @@ -24663,22 +24938,22 @@ 1 2 - 175552 + 176021 2 3 - 44604 + 44723 3 6 - 21679 + 21737 6 206 - 14328 + 14366 @@ -24694,17 +24969,17 @@ 1 2 - 227757 + 228365 2 3 - 24794 + 24860 3 7 - 3613 + 3622 @@ -24714,19 +24989,19 @@ variable_template_argument_value - 19935 + 19988 variable_id - 14826 + 14866 index - 498 + 499 arg_value - 19935 + 19988 @@ -24740,12 +25015,12 @@ 1 2 - 13331 + 13367 2 3 - 1495 + 1499 @@ -24761,17 +25036,17 @@ 1 2 - 10465 + 10493 2 3 - 3987 + 3997 4 5 - 373 + 374 @@ -24849,7 +25124,7 @@ 1 2 - 19935 + 19988 @@ -24865,7 +25140,7 @@ 1 2 - 19935 + 19988 @@ -24875,15 +25150,15 @@ template_template_instantiation - 7239 + 6640 to - 6791 + 6228 from - 4800 + 4402 @@ -24897,12 +25172,12 @@ 1 2 - 6646 + 6095 2 15 - 145 + 133 @@ -24918,17 +25193,17 @@ 1 2 - 3138 + 2878 2 3 - 1490 + 1366 3 20 - 171 + 157 @@ -24938,19 +25213,19 @@ template_template_argument - 12079 + 11078 type_id - 7635 + 7002 index - 131 + 120 arg_type - 11340 + 10401 @@ -24964,22 +25239,22 @@ 1 2 - 6263 + 5745 2 3 - 527 + 483 3 8 - 632 + 580 8 11 - 210 + 193 @@ -24995,22 +25270,22 @@ 1 2 - 6290 + 5769 2 4 - 698 + 641 4 10 - 580 + 532 10 11 - 65 + 60 @@ -25026,52 +25301,52 @@ 6 7 - 13 + 12 11 12 - 13 + 12 16 17 - 13 + 12 21 22 - 13 + 12 27 28 - 13 + 12 38 39 - 13 + 12 50 51 - 13 + 12 64 65 - 13 + 12 104 105 - 13 + 12 579 580 - 13 + 12 @@ -25087,52 +25362,52 @@ 6 7 - 13 + 12 11 12 - 13 + 12 16 17 - 13 + 12 21 22 - 13 + 12 27 28 - 13 + 12 38 39 - 13 + 12 50 51 - 13 + 12 64 65 - 13 + 12 99 100 - 13 + 12 538 539 - 13 + 12 @@ -25148,12 +25423,12 @@ 1 2 - 11301 + 10365 3 43 - 39 + 36 @@ -25169,12 +25444,12 @@ 1 2 - 11314 + 10377 2 11 - 26 + 24 @@ -25184,19 +25459,19 @@ template_template_argument_value - 778 + 713 type_id - 659 + 604 index - 26 + 24 arg_value - 778 + 713 @@ -25210,7 +25485,7 @@ 1 2 - 659 + 604 @@ -25226,17 +25501,17 @@ 1 2 - 567 + 520 2 3 - 65 + 60 3 4 - 26 + 24 @@ -25252,12 +25527,12 @@ 8 9 - 13 + 12 42 43 - 13 + 12 @@ -25273,12 +25548,12 @@ 17 18 - 13 + 12 42 43 - 13 + 12 @@ -25294,7 +25569,7 @@ 1 2 - 778 + 713 @@ -25310,7 +25585,7 @@ 1 2 - 778 + 713 @@ -25320,19 +25595,19 @@ concept_templates - 3868 + 3614 concept_id - 3868 + 3614 name - 3868 + 3614 location - 3868 + 3614 @@ -25346,7 +25621,7 @@ 1 2 - 3868 + 3614 @@ -25362,7 +25637,7 @@ 1 2 - 3868 + 3614 @@ -25378,7 +25653,7 @@ 1 2 - 3868 + 3614 @@ -25394,7 +25669,7 @@ 1 2 - 3868 + 3614 @@ -25410,7 +25685,7 @@ 1 2 - 3868 + 3614 @@ -25426,7 +25701,7 @@ 1 2 - 3868 + 3614 @@ -25436,15 +25711,15 @@ concept_instantiation - 96774 + 90429 to - 96774 + 90429 from - 3683 + 3442 @@ -25458,7 +25733,7 @@ 1 2 - 96774 + 90429 @@ -25474,77 +25749,77 @@ 1 2 - 253 + 236 2 3 - 115 + 107 3 4 - 391 + 365 4 5 - 138 + 129 5 6 - 322 + 301 6 8 - 253 + 236 8 10 - 115 + 107 10 12 - 299 + 279 12 15 - 230 + 215 15 19 - 230 + 215 19 25 - 276 + 258 25 37 - 276 + 258 38 49 - 276 + 258 50 72 - 276 + 258 78 387 - 230 + 215 @@ -25554,30 +25829,30 @@ is_type_constraint - 39487 + 36898 concept_id - 39487 + 36898 concept_template_argument - 120973 + 113041 concept_id - 81738 + 76379 index - 138 + 129 arg_type - 22932 + 21429 @@ -25591,17 +25866,17 @@ 1 2 - 49733 + 46473 2 3 - 26409 + 24678 3 7 - 5595 + 5228 @@ -25617,17 +25892,17 @@ 1 2 - 53602 + 50087 2 3 - 23945 + 22376 3 7 - 4190 + 3915 @@ -25643,32 +25918,32 @@ 11 12 - 23 + 21 26 27 - 23 + 21 34 35 - 23 + 21 243 244 - 23 + 21 1390 1391 - 23 + 21 3550 3551 - 23 + 21 @@ -25684,32 +25959,32 @@ 11 12 - 23 + 21 23 24 - 23 + 21 31 32 - 23 + 21 96 97 - 23 + 21 359 360 - 23 + 21 640 641 - 23 + 21 @@ -25725,42 +26000,42 @@ 1 2 - 11121 + 10391 2 3 - 3177 + 2969 3 4 - 1128 + 1054 4 5 - 1450 + 1355 5 6 - 1243 + 1161 6 9 - 1726 + 1613 9 14 - 2118 + 1979 14 259 - 967 + 903 @@ -25776,17 +26051,17 @@ 1 2 - 19294 + 18029 2 3 - 3499 + 3270 3 4 - 138 + 129 @@ -25796,19 +26071,19 @@ concept_template_argument_value - 115 + 106 concept_id - 90 + 83 index - 16 + 15 arg_value - 115 + 106 @@ -25822,7 +26097,7 @@ 1 2 - 90 + 83 @@ -25838,12 +26113,12 @@ 1 2 - 65 + 60 2 3 - 24 + 22 @@ -25859,12 +26134,12 @@ 3 4 - 8 + 7 8 9 - 8 + 7 @@ -25880,12 +26155,12 @@ 4 5 - 8 + 7 10 11 - 8 + 7 @@ -25901,7 +26176,7 @@ 1 2 - 115 + 106 @@ -25917,7 +26192,7 @@ 1 2 - 115 + 106 @@ -25927,15 +26202,15 @@ routinetypes - 757852 + 604424 id - 757852 + 604424 return_type - 355982 + 283913 @@ -25949,7 +26224,7 @@ 1 2 - 757852 + 604424 @@ -25965,17 +26240,17 @@ 1 2 - 293732 + 234266 2 3 - 44006 + 35097 3 4676 - 18243 + 14550 @@ -25985,19 +26260,19 @@ routinetypeargs - 1166052 + 1169167 routine - 412136 + 413236 index - 977 + 980 type_id - 111101 + 111398 @@ -26011,32 +26286,32 @@ 1 2 - 82144 + 82364 2 3 - 125498 + 125834 3 4 - 106864 + 107149 4 5 - 48624 + 48753 5 7 - 32488 + 32575 7 19 - 16515 + 16559 @@ -26052,27 +26327,27 @@ 1 2 - 88120 + 88356 2 3 - 138048 + 138417 3 4 - 113546 + 113849 4 5 - 40148 + 40256 5 10 - 32162 + 32248 10 @@ -26270,47 +26545,47 @@ 1 2 - 33194 + 33283 2 3 - 14994 + 15034 3 4 - 13201 + 13237 4 5 - 9833 + 9859 5 6 - 6356 + 6373 6 8 - 9507 + 9532 8 13 - 9453 + 9478 13 26 - 8746 + 8770 26 916 - 5813 + 5828 @@ -26326,22 +26601,22 @@ 1 2 - 78504 + 78714 2 3 - 17548 + 17594 3 5 - 9453 + 9478 5 17 - 5595 + 5610 @@ -26351,19 +26626,19 @@ ptrtomembers - 12026 + 11030 id - 12026 + 11030 type_id - 9890 + 9071 class_id - 5960 + 5466 @@ -26377,7 +26652,7 @@ 1 2 - 12026 + 11030 @@ -26393,7 +26668,7 @@ 1 2 - 12026 + 11030 @@ -26409,12 +26684,12 @@ 1 2 - 9613 + 8817 2 84 - 276 + 253 @@ -26430,12 +26705,12 @@ 1 2 - 9613 + 8817 2 84 - 276 + 253 @@ -26451,22 +26726,22 @@ 1 2 - 4747 + 4354 2 3 - 659 + 604 8 9 - 501 + 459 10 65 - 52 + 48 @@ -26482,22 +26757,22 @@ 1 2 - 4747 + 4354 2 3 - 659 + 604 8 9 - 501 + 459 10 65 - 52 + 48 @@ -26507,15 +26782,15 @@ specifiers - 7724 + 7745 id - 7724 + 7745 str - 7724 + 7745 @@ -26529,7 +26804,7 @@ 1 2 - 7724 + 7745 @@ -26545,7 +26820,7 @@ 1 2 - 7724 + 7745 @@ -26555,15 +26830,15 @@ typespecifiers - 969178 + 888530 type_id - 962756 + 882640 spec_id - 118 + 108 @@ -26577,12 +26852,12 @@ 1 2 - 956333 + 876750 2 3 - 6422 + 5890 @@ -26598,47 +26873,47 @@ 164 165 - 13 + 12 215 216 - 13 + 12 224 225 - 13 + 12 - 532 - 533 - 13 + 529 + 530 + 12 821 822 - 13 + 12 1568 1569 - 13 + 12 - 4150 - 4151 - 13 + 4147 + 4148 + 12 - 17496 - 17497 - 13 + 17494 + 17495 + 12 - 48324 - 48325 - 13 + 48302 + 48303 + 12 @@ -26648,15 +26923,15 @@ funspecifiers - 9674560 + 9688310 func_id - 3322023 + 3970168 spec_id - 811 + 2373 @@ -26670,32 +26945,27 @@ 1 2 - 435451 + 1483628 2 3 - 673556 + 506577 3 4 - 1416284 + 1038015 4 5 - 456941 + 696216 5 - 6 - 223835 - - - 6 8 - 115955 + 245730 @@ -26709,94 +26979,99 @@ 12 - 2 - 3 - 85 + 17 + 18 + 124 - 106 - 107 - 42 + 18 + 19 + 124 - 214 - 215 - 42 + 53 + 54 + 124 - 301 - 302 - 42 + 114 + 115 + 124 - 308 - 309 - 42 + 206 + 207 + 124 - 562 - 563 - 42 + 272 + 273 + 124 - 1589 - 1590 - 42 + 354 + 355 + 124 - 1631 - 1632 - 42 + 653 + 654 + 124 - 3749 - 3750 - 42 + 766 + 767 + 124 - 3881 - 3882 - 42 + 823 + 824 + 124 - 6569 - 6570 - 42 + 1075 + 1076 + 124 - 6803 - 6804 - 42 + 1258 + 1259 + 124 - 12221 - 12222 - 42 + 1662 + 1663 + 124 - 14693 - 14694 - 42 + 3340 + 3341 + 124 - 15715 - 15716 - 42 + 3351 + 3352 + 124 - 42406 - 42407 - 42 + 6166 + 6167 + 124 - 51943 - 51944 - 42 + 15136 + 15137 + 124 - 63744 - 63745 - 42 + 19863 + 19864 + 124 + + + 22425 + 22426 + 124 @@ -26806,15 +27081,15 @@ varspecifiers - 3064883 + 3073070 var_id - 2308848 + 2315015 spec_id - 1121 + 1124 @@ -26828,17 +27103,17 @@ 1 2 - 1655229 + 1659650 2 3 - 551701 + 553175 3 5 - 101917 + 102189 @@ -26904,15 +27179,15 @@ explicit_specifier_exprs - 41240 + 41350 func_id - 41240 + 41350 constant - 41240 + 41350 @@ -26926,7 +27201,7 @@ 1 2 - 41240 + 41350 @@ -26942,7 +27217,7 @@ 1 2 - 41240 + 41350 @@ -26952,19 +27227,19 @@ attributes - 649383 + 651117 id - 649383 + 651117 kind - 373 + 374 name - 2118 + 2123 name_space @@ -26972,7 +27247,7 @@ location - 643277 + 644996 @@ -26986,7 +27261,7 @@ 1 2 - 649383 + 651117 @@ -27002,7 +27277,7 @@ 1 2 - 649383 + 651117 @@ -27018,7 +27293,7 @@ 1 2 - 649383 + 651117 @@ -27034,7 +27309,7 @@ 1 2 - 649383 + 651117 @@ -27235,7 +27510,7 @@ 1 2 - 1868 + 1873 2 @@ -27256,7 +27531,7 @@ 1 2 - 2118 + 2123 @@ -27442,12 +27717,12 @@ 1 2 - 637422 + 639124 2 5 - 5855 + 5871 @@ -27463,7 +27738,7 @@ 1 2 - 643277 + 644996 @@ -27479,12 +27754,12 @@ 1 2 - 638169 + 639874 2 3 - 5108 + 5121 @@ -27500,7 +27775,7 @@ 1 2 - 643277 + 644996 @@ -27510,27 +27785,27 @@ attribute_args - 96187 + 90662 id - 96187 + 90662 kind - 52 + 48 attribute - 83066 + 78543 index - 65 + 60 location - 89501 + 84445 @@ -27544,7 +27819,7 @@ 1 2 - 96187 + 90662 @@ -27560,7 +27835,7 @@ 1 2 - 96187 + 90662 @@ -27576,7 +27851,7 @@ 1 2 - 96187 + 90662 @@ -27592,7 +27867,7 @@ 1 2 - 96187 + 90662 @@ -27608,22 +27883,22 @@ 10 11 - 13 + 12 133 134 - 13 + 12 560 561 - 13 + 12 - 6591 - 6592 - 13 + 6793 + 6794 + 12 @@ -27639,22 +27914,22 @@ 10 11 - 13 + 12 133 134 - 13 + 12 156 157 - 13 + 12 - 6170 - 6171 - 13 + 6365 + 6366 + 12 @@ -27670,17 +27945,17 @@ 1 2 - 26 + 24 4 5 - 13 + 12 5 6 - 13 + 12 @@ -27696,22 +27971,22 @@ 8 9 - 13 + 12 18 19 - 13 + 12 535 536 - 13 + 12 - 6242 - 6243 - 13 + 6437 + 6438 + 12 @@ -27727,17 +28002,17 @@ 1 2 - 75430 + 71455 2 - 4 - 6316 + 5 + 5902 - 4 + 5 18 - 1318 + 1185 @@ -27753,12 +28028,12 @@ 1 2 - 80824 + 76487 2 3 - 2241 + 2056 @@ -27774,12 +28049,12 @@ 1 2 - 76947 + 72931 2 6 - 6118 + 5611 @@ -27795,12 +28070,12 @@ 1 2 - 78516 + 74370 2 6 - 4549 + 4172 @@ -27816,27 +28091,27 @@ 94 95 - 13 + 12 96 97 - 13 + 12 166 167 - 13 + 12 464 465 - 13 + 12 - 6474 - 6475 - 13 + 6676 + 6677 + 12 @@ -27852,17 +28127,17 @@ 1 2 - 13 + 12 2 3 - 39 + 36 4 5 - 13 + 12 @@ -27878,27 +28153,27 @@ 94 95 - 13 + 12 96 97 - 13 + 12 166 167 - 13 + 12 464 465 - 13 + 12 - 6299 - 6300 - 13 + 6494 + 6495 + 12 @@ -27914,27 +28189,27 @@ 94 95 - 13 + 12 96 97 - 13 + 12 166 167 - 13 + 12 349 350 - 13 + 12 - 6123 - 6124 - 13 + 6318 + 6319 + 12 @@ -27950,12 +28225,12 @@ 1 2 - 87259 + 82304 2 23 - 2241 + 2140 @@ -27971,12 +28246,12 @@ 1 2 - 89290 + 84252 2 3 - 210 + 193 @@ -27992,12 +28267,12 @@ 1 2 - 89105 + 84082 2 18 - 395 + 362 @@ -28013,12 +28288,12 @@ 1 2 - 88960 + 83949 2 3 - 540 + 495 @@ -28028,15 +28303,15 @@ attribute_arg_value - 20935 + 16696 arg - 20935 + 16696 value - 640 + 511 @@ -28050,7 +28325,7 @@ 1 2 - 20935 + 16696 @@ -28066,52 +28341,52 @@ 1 2 - 256 + 204 5 6 - 42 + 34 6 7 - 42 + 34 15 16 - 42 + 34 25 26 - 42 + 34 51 52 - 42 + 34 52 53 - 42 + 34 71 72 - 42 + 34 76 77 - 42 + 34 183 184 - 42 + 34 @@ -28121,11 +28396,11 @@ attribute_arg_type - 461 + 460 arg - 461 + 460 type_id @@ -28143,7 +28418,7 @@ 1 2 - 461 + 460 @@ -28184,15 +28459,15 @@ attribute_arg_constant - 86916 + 82159 arg - 86916 + 82159 constant - 86916 + 82159 @@ -28206,7 +28481,7 @@ 1 2 - 86916 + 82159 @@ -28222,7 +28497,7 @@ 1 2 - 86916 + 82159 @@ -28232,15 +28507,15 @@ attribute_arg_expr - 1753 + 1608 arg - 1753 + 1608 expr - 1753 + 1608 @@ -28254,7 +28529,7 @@ 1 2 - 1753 + 1608 @@ -28270,7 +28545,7 @@ 1 2 - 1753 + 1608 @@ -28333,15 +28608,15 @@ typeattributes - 91950 + 92195 type_id - 90330 + 90571 spec_id - 29154 + 29232 @@ -28355,12 +28630,12 @@ 1 2 - 88710 + 88947 2 3 - 1619 + 1624 @@ -28376,17 +28651,17 @@ 1 2 - 24669 + 24735 2 7 - 2242 + 2248 7 58 - 2242 + 2248 @@ -28396,15 +28671,15 @@ funcattributes - 842628 + 844878 func_id - 797898 + 800030 spec_id - 615493 + 617137 @@ -28418,12 +28693,12 @@ 1 2 - 757655 + 759678 2 7 - 40243 + 40351 @@ -28439,12 +28714,12 @@ 1 2 - 569892 + 571414 2 213 - 45601 + 45723 @@ -28516,16 +28791,74 @@ - stmtattributes - 2371 + namespaceattributes + 5997 - stmt_id - 2371 + namespace_id + 136 spec_id - 598 + 5997 + + + + + namespace_id + spec_id + + + 12 + + + 1 + 2 + 68 + + + 11 + 12 + 34 + + + 163 + 164 + 34 + + + + + + + spec_id + namespace_id + + + 12 + + + 1 + 2 + 5997 + + + + + + + + + stmtattributes + 2216 + + + stmt_id + 2216 + + + spec_id + 559 @@ -28539,7 +28872,7 @@ 1 2 - 2371 + 2216 @@ -28555,27 +28888,27 @@ 1 2 - 230 + 215 2 3 - 161 + 150 3 4 - 46 + 43 9 10 - 115 + 107 13 16 - 46 + 43 @@ -28585,15 +28918,15 @@ unspecifiedtype - 8145638 + 7468031 type_id - 8145638 + 7468031 unspecified_type_id - 4690387 + 4300698 @@ -28607,7 +28940,7 @@ 1 2 - 8145638 + 7468031 @@ -28623,17 +28956,17 @@ 1 2 - 3130938 + 2870853 2 3 - 1275568 + 1169674 3 6277 - 283880 + 260170 @@ -28643,19 +28976,19 @@ member - 4659651 + 4200783 parent - 559011 + 544555 index - 10681 + 29732 child - 4543098 + 4195536 @@ -28669,52 +29002,57 @@ 1 2 - 232892 + 129174 2 3 - 24524 + 83450 3 4 - 29266 + 32605 4 5 - 37555 + 44848 5 + 6 + 42475 + + + 6 7 - 47595 + 34979 7 - 11 - 43109 + 9 + 41725 - 11 - 14 - 41528 + 9 + 13 + 41600 - 14 - 19 - 45117 + 13 + 18 + 41100 - 19 - 53 - 42083 + 18 + 42 + 40851 - 53 - 251 - 15338 + 42 + 239 + 11743 @@ -28730,52 +29068,57 @@ 1 2 - 232764 + 128924 2 3 - 24652 + 83575 3 4 - 29309 + 32356 4 5 - 37640 + 44973 5 + 6 + 42599 + + + 6 7 - 47381 + 33980 7 - 11 - 43536 + 9 + 42225 - 11 - 14 - 41443 + 9 + 13 + 41725 - 14 - 19 - 44903 + 13 + 18 + 41225 - 19 - 53 - 42083 + 18 + 42 + 40975 - 53 - 255 - 15295 + 42 + 265 + 11992 @@ -28791,57 +29134,57 @@ 1 2 - 2819 + 6496 2 - 4 - 811 + 3 + 2623 - 4 - 22 - 811 + 3 + 8 + 1873 - 22 - 31 - 811 + 9 + 10 + 2873 - 31 - 53 - 854 + 10 + 20 + 2373 - 53 - 108 - 811 + 20 + 27 + 2248 - 110 - 218 - 811 + 27 + 36 + 2373 - 223 - 328 - 811 + 36 + 50 + 2248 - 328 - 581 - 811 + 54 + 141 + 2248 - 653 - 2518 - 811 + 150 + 467 + 2248 - 2899 - 12735 - 512 + 480 + 4314 + 2123 @@ -28857,62 +29200,57 @@ 1 2 - 1751 + 5496 2 3 - 1367 + 3622 3 - 8 - 811 + 9 + 1873 - 8 - 31 - 854 + 9 + 10 + 2873 - 31 - 41 - 854 + 10 + 20 + 2248 - 41 - 97 - 811 + 20 + 28 + 2373 - 97 - 161 - 811 + 28 + 37 + 2498 - 164 - 314 - 854 + 37 + 56 + 2373 - 318 - 386 - 811 + 58 + 156 + 2248 - 435 - 1127 - 811 + 163 + 528 + 2248 - 1145 - 6168 - 811 - - - 6496 - 12747 - 128 + 547 + 4334 + 1873 @@ -28928,7 +29266,7 @@ 1 2 - 4543098 + 4195536 @@ -28944,12 +29282,12 @@ 1 2 - 4455726 + 4190289 2 - 13 - 87372 + 3 + 5246 @@ -28959,15 +29297,15 @@ enclosingfunction - 143982 + 114833 child - 143982 + 114833 parent - 89465 + 71353 @@ -28981,7 +29319,7 @@ 1 2 - 143982 + 114833 @@ -28997,22 +29335,22 @@ 1 2 - 61865 + 49340 2 3 - 5810 + 4634 3 4 - 19268 + 15367 4 37 - 2520 + 2010 @@ -29022,27 +29360,27 @@ derivations - 598061 + 476983 derivation - 598061 + 476983 sub - 570803 + 455243 index - 299 + 238 super - 295399 + 235595 location - 44391 + 35404 @@ -29056,7 +29394,7 @@ 1 2 - 598061 + 476983 @@ -29072,7 +29410,7 @@ 1 2 - 598061 + 476983 @@ -29088,7 +29426,7 @@ 1 2 - 598061 + 476983 @@ -29104,7 +29442,7 @@ 1 2 - 598061 + 476983 @@ -29120,12 +29458,12 @@ 1 2 - 550081 + 438717 2 9 - 20721 + 16526 @@ -29141,12 +29479,12 @@ 1 2 - 550081 + 438717 2 8 - 20721 + 16526 @@ -29162,12 +29500,12 @@ 1 2 - 550081 + 438717 2 9 - 20721 + 16526 @@ -29183,12 +29521,12 @@ 1 2 - 550081 + 438717 2 8 - 20721 + 16526 @@ -29204,27 +29542,27 @@ 25 26 - 128 + 102 26 27 - 42 + 34 52 53 - 42 + 34 485 486 - 42 + 34 13360 13361 - 42 + 34 @@ -29240,22 +29578,22 @@ 25 26 - 170 + 136 52 53 - 42 + 34 485 486 - 42 + 34 13360 13361 - 42 + 34 @@ -29271,32 +29609,32 @@ 23 24 - 42 + 34 24 25 - 42 + 34 25 26 - 85 + 68 32 33 - 42 + 34 289 290 - 42 + 34 6510 6511 - 42 + 34 @@ -29312,22 +29650,22 @@ 1 2 - 170 + 136 7 8 - 42 + 34 65 66 - 42 + 34 963 964 - 42 + 34 @@ -29343,12 +29681,12 @@ 1 2 - 283094 + 225781 2 1655 - 12304 + 9813 @@ -29364,12 +29702,12 @@ 1 2 - 283094 + 225781 2 1655 - 12304 + 9813 @@ -29385,12 +29723,12 @@ 1 2 - 294843 + 235152 2 4 - 555 + 442 @@ -29406,12 +29744,12 @@ 1 2 - 288691 + 230245 2 81 - 6707 + 5349 @@ -29427,27 +29765,27 @@ 1 2 - 33239 + 26510 2 5 - 3930 + 3134 5 22 - 3460 + 2760 22 383 - 3375 + 2691 388 928 - 384 + 306 @@ -29463,27 +29801,27 @@ 1 2 - 33239 + 26510 2 5 - 3930 + 3134 5 22 - 3460 + 2760 22 383 - 3375 + 2691 388 928 - 384 + 306 @@ -29499,7 +29837,7 @@ 1 2 - 44391 + 35404 @@ -29515,22 +29853,22 @@ 1 2 - 36017 + 28725 2 4 - 3289 + 2623 4 26 - 3546 + 2828 26 928 - 1538 + 1226 @@ -29540,15 +29878,15 @@ derspecifiers - 600283 + 478755 der_id - 597506 + 476540 spec_id - 170 + 136 @@ -29562,12 +29900,12 @@ 1 2 - 594729 + 474325 2 3 - 2777 + 2214 @@ -29583,22 +29921,22 @@ 65 66 - 42 + 34 92 93 - 42 + 34 1104 1105 - 42 + 34 12789 12790 - 42 + 34 @@ -29608,15 +29946,15 @@ direct_base_offsets - 564309 + 450064 der_id - 564309 + 450064 offset - 640 + 511 @@ -29630,7 +29968,7 @@ 1 2 - 564309 + 450064 @@ -29646,42 +29984,42 @@ 1 2 - 128 + 102 2 3 - 170 + 136 3 4 - 128 + 102 4 5 - 42 + 34 7 8 - 42 + 34 9 10 - 42 + 34 110 111 - 42 + 34 13058 13059 - 42 + 34 @@ -29691,19 +30029,19 @@ virtual_base_offsets - 7305 + 5826 sub - 7305 + 5826 super - 128 + 102 offset - 427 + 340 @@ -29717,7 +30055,7 @@ 1 2 - 7305 + 5826 @@ -29733,7 +30071,7 @@ 1 2 - 7305 + 5826 @@ -29749,12 +30087,12 @@ 9 10 - 85 + 68 153 154 - 42 + 34 @@ -29770,12 +30108,12 @@ 1 2 - 42 + 34 9 10 - 85 + 68 @@ -29791,12 +30129,12 @@ 2 3 - 384 + 306 153 154 - 42 + 34 @@ -29812,12 +30150,12 @@ 1 2 - 42 + 34 2 3 - 384 + 306 @@ -29827,23 +30165,23 @@ frienddecls - 878379 + 700584 id - 878379 + 700584 type_id - 53192 + 42423 decl_id - 97626 + 77861 location - 7647 + 6099 @@ -29857,7 +30195,7 @@ 1 2 - 878379 + 700584 @@ -29873,7 +30211,7 @@ 1 2 - 878379 + 700584 @@ -29889,7 +30227,7 @@ 1 2 - 878379 + 700584 @@ -29905,47 +30243,47 @@ 1 2 - 7775 + 6167 2 3 - 17474 + 13970 3 7 - 4486 + 3577 7 12 - 4315 + 3441 12 20 - 4571 + 3646 20 32 - 4144 + 3305 33 50 - 4742 + 3782 50 80 - 4742 + 3782 101 120 - 939 + 749 @@ -29961,47 +30299,47 @@ 1 2 - 7775 + 6167 2 3 - 17474 + 13970 3 7 - 4486 + 3577 7 12 - 4315 + 3441 12 20 - 4571 + 3646 20 32 - 4144 + 3305 33 50 - 4742 + 3782 50 80 - 4742 + 3782 101 120 - 939 + 749 @@ -30017,12 +30355,12 @@ 1 2 - 51483 + 41060 2 13 - 1708 + 1363 @@ -30038,32 +30376,32 @@ 1 2 - 60327 + 48079 2 3 - 7434 + 5963 3 8 - 7519 + 5997 8 15 - 7605 + 6065 15 40 - 7605 + 6065 40 164 - 7135 + 5690 @@ -30079,32 +30417,32 @@ 1 2 - 60327 + 48079 2 3 - 7434 + 5963 3 8 - 7519 + 5997 8 15 - 7605 + 6065 15 40 - 7605 + 6065 40 164 - 7135 + 5690 @@ -30120,12 +30458,12 @@ 1 2 - 96771 + 77180 2 5 - 854 + 681 @@ -30141,12 +30479,12 @@ 1 2 - 7177 + 5724 2 - 20370 - 469 + 20371 + 374 @@ -30162,12 +30500,12 @@ 1 2 - 7476 + 5963 2 1148 - 170 + 136 @@ -30183,12 +30521,12 @@ 1 2 - 7220 + 5758 2 2132 - 427 + 340 @@ -30198,19 +30536,19 @@ comments - 11190894 + 11220785 id - 11190894 + 11220785 contents - 4279922 + 4291355 location - 11190894 + 11220785 @@ -30224,7 +30562,7 @@ 1 2 - 11190894 + 11220785 @@ -30240,7 +30578,7 @@ 1 2 - 11190894 + 11220785 @@ -30256,17 +30594,17 @@ 1 2 - 3906889 + 3917324 2 6 - 321078 + 321935 6 34359 - 51955 + 52094 @@ -30282,17 +30620,17 @@ 1 2 - 3906889 + 3917324 2 6 - 321078 + 321935 6 34359 - 51955 + 52094 @@ -30308,7 +30646,7 @@ 1 2 - 11190894 + 11220785 @@ -30324,7 +30662,7 @@ 1 2 - 11190894 + 11220785 @@ -30334,15 +30672,15 @@ commentbinding - 3828145 + 3838371 id - 3342603 + 3351531 element - 3662560 + 3672343 @@ -30356,12 +30694,12 @@ 1 2 - 3286536 + 3295314 2 1706 - 56067 + 56216 @@ -30377,12 +30715,12 @@ 1 2 - 3496975 + 3506316 2 3 - 165585 + 166027 @@ -30392,15 +30730,15 @@ exprconv - 9607946 + 9633039 converted - 9607841 + 9632934 conversion - 9607946 + 9633039 @@ -30414,7 +30752,7 @@ 1 2 - 9607736 + 9632828 2 @@ -30435,7 +30773,7 @@ 1 2 - 9607946 + 9633039 @@ -30445,30 +30783,30 @@ compgenerated - 10701538 + 9893080 id - 10701538 + 9893080 synthetic_destructor_call - 1788903 + 1671616 element - 1332248 + 1244902 i - 414 + 387 destructor_call - 1788903 + 1671616 @@ -30482,17 +30820,17 @@ 1 2 - 886784 + 828643 2 3 - 438188 + 409459 3 19 - 7275 + 6798 @@ -30508,17 +30846,17 @@ 1 2 - 886784 + 828643 2 3 - 438188 + 409459 3 19 - 7275 + 6798 @@ -30534,57 +30872,57 @@ 1 2 - 46 + 43 2 3 - 92 + 86 3 4 - 92 + 86 13 14 - 23 + 21 23 24 - 23 + 21 27 28 - 23 + 21 32 33 - 23 + 21 53 54 - 23 + 21 316 317 - 23 + 21 19347 19348 - 23 + 21 57861 57862 - 23 + 21 @@ -30600,57 +30938,57 @@ 1 2 - 46 + 43 2 3 - 92 + 86 3 4 - 92 + 86 13 14 - 23 + 21 23 24 - 23 + 21 27 28 - 23 + 21 32 33 - 23 + 21 53 54 - 23 + 21 316 317 - 23 + 21 19347 19348 - 23 + 21 57861 57862 - 23 + 21 @@ -30666,7 +31004,7 @@ 1 2 - 1788903 + 1671616 @@ -30682,7 +31020,7 @@ 1 2 - 1788903 + 1671616 @@ -30692,15 +31030,15 @@ namespaces - 10800 + 9905 id - 10800 + 9905 name - 5710 + 5237 @@ -30714,7 +31052,7 @@ 1 2 - 10800 + 9905 @@ -30730,17 +31068,17 @@ 1 2 - 4668 + 4281 2 3 - 659 + 604 3 149 - 382 + 350 @@ -30750,26 +31088,26 @@ namespace_inline - 498 + 499 id - 498 + 499 namespacembrs - 2036610 + 2042050 parentid - 3987 + 3997 memberid - 2036610 + 2042050 @@ -30783,7 +31121,7 @@ 1 2 - 498 + 499 2 @@ -30793,12 +31131,12 @@ 3 4 - 498 + 499 4 5 - 622 + 624 5 @@ -30859,7 +31197,7 @@ 1 2 - 2036610 + 2042050 @@ -30869,19 +31207,19 @@ exprparents - 19402291 + 19454117 expr_id - 19402291 + 19454117 child_index - 19981 + 20034 parent_id - 12905450 + 12939921 @@ -30895,7 +31233,7 @@ 1 2 - 19402291 + 19454117 @@ -30911,7 +31249,7 @@ 1 2 - 19402291 + 19454117 @@ -30927,42 +31265,42 @@ 1 2 - 3844 + 3855 2 3 - 1515 + 1519 3 4 - 364 + 365 4 5 - 8952 + 8976 5 8 - 1655 + 1660 8 11 - 1627 + 1632 11 53 - 1515 + 1519 56 354800 - 505 + 506 @@ -30978,42 +31316,42 @@ 1 2 - 3844 + 3855 2 3 - 1515 + 1519 3 4 - 364 + 365 4 5 - 8952 + 8976 5 8 - 1655 + 1660 8 11 - 1627 + 1632 11 53 - 1515 + 1519 56 354800 - 505 + 506 @@ -31029,17 +31367,17 @@ 1 2 - 7375020 + 7394719 2 3 - 5069114 + 5082654 3 712 - 461315 + 462548 @@ -31055,17 +31393,17 @@ 1 2 - 7375020 + 7394719 2 3 - 5069114 + 5082654 3 712 - 461315 + 462548 @@ -31075,22 +31413,22 @@ expr_isload - 6834844 + 6853100 expr_id - 6834844 + 6853100 conversionkinds - 6050435 + 6050434 expr_id - 6050435 + 6050434 kind @@ -31108,7 +31446,7 @@ 1 2 - 6050435 + 6050434 @@ -31152,8 +31490,8 @@ 1 - 5831536 - 5831537 + 5831535 + 5831536 1 @@ -31164,15 +31502,15 @@ iscall - 6209631 + 5802529 caller - 6209631 + 5802529 kind - 69 + 64 @@ -31186,7 +31524,7 @@ 1 2 - 6209631 + 5802529 @@ -31202,17 +31540,17 @@ 230 231 - 23 + 21 1408 1409 - 23 + 21 - 268053 - 268054 - 23 + 268054 + 268055 + 21 @@ -31222,15 +31560,15 @@ numtemplatearguments - 719400 + 625757 expr_id - 719400 + 625757 num - 384 + 374 @@ -31244,7 +31582,7 @@ 1 2 - 719400 + 625757 @@ -31258,44 +31596,19 @@ 12 - 1 - 2 - 85 + 7 + 8 + 124 - 3 - 4 - 42 + 1264 + 1265 + 124 - 5 - 6 - 42 - - - 32 - 33 - 42 - - - 107 - 108 - 42 - - - 362 - 363 - 42 - - - 754 - 755 - 42 - - - 15573 - 15574 - 42 + 3738 + 3739 + 124 @@ -31353,23 +31666,23 @@ namequalifiers - 3255226 + 3041824 id - 3255226 + 3041824 qualifiableelement - 3255226 + 3041824 qualifyingelement - 50816 + 47484 location - 591189 + 552429 @@ -31383,7 +31696,7 @@ 1 2 - 3255226 + 3041824 @@ -31399,7 +31712,7 @@ 1 2 - 3255226 + 3041824 @@ -31415,7 +31728,7 @@ 1 2 - 3255226 + 3041824 @@ -31431,7 +31744,7 @@ 1 2 - 3255226 + 3041824 @@ -31447,7 +31760,7 @@ 1 2 - 3255226 + 3041824 @@ -31463,7 +31776,7 @@ 1 2 - 3255226 + 3041824 @@ -31479,27 +31792,27 @@ 1 2 - 33754 + 31541 2 3 - 8749 + 8175 3 5 - 4397 + 4109 5 - 6810 - 3822 + 6811 + 3571 19018 41956 - 92 + 86 @@ -31515,27 +31828,27 @@ 1 2 - 33754 + 31541 2 3 - 8749 + 8175 3 5 - 4397 + 4109 5 - 6810 - 3822 + 6811 + 3571 19018 41956 - 92 + 86 @@ -31551,22 +31864,22 @@ 1 2 - 36816 + 34403 2 3 - 7874 + 7358 3 6 - 3822 + 3571 6 20057 - 2302 + 2151 @@ -31582,22 +31895,22 @@ 1 2 - 84708 + 79133 2 6 - 40754 + 38103 6 7 - 426975 + 398981 7 192 - 38751 + 36210 @@ -31613,22 +31926,22 @@ 1 2 - 84708 + 79133 2 6 - 40754 + 38103 6 7 - 426975 + 398981 7 192 - 38751 + 36210 @@ -31644,22 +31957,22 @@ 1 2 - 119361 + 111535 2 4 - 14229 + 13296 4 5 - 444428 + 415290 5 33 - 13170 + 12306 @@ -31669,15 +31982,15 @@ varbind - 8232599 + 8254589 expr - 8232599 + 8254589 var - 1047572 + 1050370 @@ -31691,7 +32004,7 @@ 1 2 - 8232599 + 8254589 @@ -31707,52 +32020,52 @@ 1 2 - 171078 + 171535 2 3 - 188197 + 188699 3 4 - 145259 + 145647 4 5 - 116325 + 116635 5 6 - 82929 + 83150 6 7 - 65641 + 65817 7 9 - 80599 + 80815 9 13 - 81357 + 81574 13 27 - 78915 + 79126 27 5137 - 37268 + 37368 @@ -31762,15 +32075,15 @@ funbind - 6220039 + 5812232 expr - 6217391 + 5809758 fun - 295295 + 275934 @@ -31784,12 +32097,12 @@ 1 2 - 6214743 + 5807284 2 3 - 2647 + 2474 @@ -31805,27 +32118,27 @@ 1 2 - 194169 + 181439 2 3 - 41560 + 38835 3 4 - 18396 + 17190 4 8 - 24337 + 22741 8 37798 - 16831 + 15727 @@ -31835,19 +32148,19 @@ expr_allocator - 56738 + 45251 expr - 56738 + 45251 func - 128 + 102 form - 42 + 34 @@ -31861,7 +32174,7 @@ 1 2 - 56738 + 45251 @@ -31877,7 +32190,7 @@ 1 2 - 56738 + 45251 @@ -31893,17 +32206,17 @@ 1 2 - 42 + 34 591 592 - 42 + 34 736 737 - 42 + 34 @@ -31919,7 +32232,7 @@ 1 2 - 128 + 102 @@ -31935,7 +32248,7 @@ 1328 1329 - 42 + 34 @@ -31951,7 +32264,7 @@ 3 4 - 42 + 34 @@ -31961,19 +32274,19 @@ expr_deallocator - 67505 + 53838 expr - 67505 + 53838 func - 128 + 102 form - 85 + 68 @@ -31987,7 +32300,7 @@ 1 2 - 67505 + 53838 @@ -32003,7 +32316,7 @@ 1 2 - 67505 + 53838 @@ -32019,17 +32332,17 @@ 1 2 - 42 + 34 723 724 - 42 + 34 856 857 - 42 + 34 @@ -32045,7 +32358,7 @@ 1 2 - 128 + 102 @@ -32061,12 +32374,12 @@ 723 724 - 42 + 34 857 858 - 42 + 34 @@ -32082,12 +32395,12 @@ 1 2 - 42 + 34 2 3 - 42 + 34 @@ -32097,26 +32410,26 @@ expr_cond_two_operand - 652 + 653 cond - 652 + 653 expr_cond_guard - 895536 + 897875 cond - 895536 + 897875 guard - 895536 + 897875 @@ -32130,7 +32443,7 @@ 1 2 - 895536 + 897875 @@ -32146,7 +32459,7 @@ 1 2 - 895536 + 897875 @@ -32156,15 +32469,15 @@ expr_cond_true - 895533 + 897871 cond - 895533 + 897871 true - 895533 + 897871 @@ -32178,7 +32491,7 @@ 1 2 - 895533 + 897871 @@ -32194,7 +32507,7 @@ 1 2 - 895533 + 897871 @@ -32204,15 +32517,15 @@ expr_cond_false - 895536 + 897875 cond - 895536 + 897875 false - 895536 + 897875 @@ -32226,7 +32539,7 @@ 1 2 - 895536 + 897875 @@ -32242,7 +32555,7 @@ 1 2 - 895536 + 897875 @@ -32252,15 +32565,15 @@ values - 13438640 + 13474536 id - 13438640 + 13474536 str - 114260 + 114565 @@ -32274,7 +32587,7 @@ 1 2 - 13438640 + 13474536 @@ -32290,27 +32603,27 @@ 1 2 - 78093 + 78302 2 3 - 15260 + 15301 3 6 - 8871 + 8895 6 52 - 8605 + 8628 52 674264 - 3428 + 3437 @@ -32320,15 +32633,15 @@ valuetext - 6647587 + 6647484 id - 6647587 + 6647484 text - 1095411 + 1095412 @@ -32342,7 +32655,7 @@ 1 2 - 6647587 + 6647484 @@ -32368,7 +32681,7 @@ 3 7 - 86536 + 86537 7 @@ -32383,15 +32696,15 @@ valuebind - 13546933 + 13583118 val - 13438640 + 13474536 expr - 13546933 + 13583118 @@ -32405,12 +32718,12 @@ 1 2 - 13348327 + 13383982 2 6 - 90313 + 90554 @@ -32426,7 +32739,7 @@ 1 2 - 13546933 + 13583118 @@ -32436,19 +32749,19 @@ fieldoffsets - 1489415 + 1493394 id - 1489415 + 1493394 byteoffset - 31293 + 31376 bitoffset - 434 + 435 @@ -32462,7 +32775,7 @@ 1 2 - 1489415 + 1493394 @@ -32478,7 +32791,7 @@ 1 2 - 1489415 + 1493394 @@ -32494,37 +32807,37 @@ 1 2 - 17656 + 17703 2 3 - 2444 + 2451 3 5 - 2662 + 2669 5 12 - 2607 + 2614 12 34 - 2390 + 2396 34 198 - 2390 + 2396 209 5931 - 1140 + 1143 @@ -32540,12 +32853,12 @@ 1 2 - 30315 + 30396 2 9 - 977 + 980 @@ -32612,7 +32925,7 @@ 12 13 - 162 + 163 13 @@ -32637,19 +32950,19 @@ bitfield - 30276 + 30357 id - 30276 + 30357 bits - 3488 + 3497 declared_bits - 3488 + 3497 @@ -32663,7 +32976,7 @@ 1 2 - 30276 + 30357 @@ -32679,7 +32992,7 @@ 1 2 - 30276 + 30357 @@ -32695,12 +33008,12 @@ 1 2 - 996 + 999 2 3 - 747 + 749 3 @@ -32710,7 +33023,7 @@ 4 5 - 498 + 499 5 @@ -32746,7 +33059,7 @@ 1 2 - 3488 + 3497 @@ -32762,12 +33075,12 @@ 1 2 - 996 + 999 2 3 - 747 + 749 3 @@ -32777,7 +33090,7 @@ 4 5 - 498 + 499 5 @@ -32813,7 +33126,7 @@ 1 2 - 3488 + 3497 @@ -32823,23 +33136,23 @@ initialisers - 2334426 + 2340619 init - 2334426 + 2340619 var - 988525 + 991147 expr - 2334426 + 2340619 location - 537813 + 539239 @@ -32853,7 +33166,7 @@ 1 2 - 2334426 + 2340619 @@ -32869,7 +33182,7 @@ 1 2 - 2334426 + 2340619 @@ -32885,7 +33198,7 @@ 1 2 - 2334426 + 2340619 @@ -32901,17 +33214,17 @@ 1 2 - 871776 + 874088 2 15 - 39395 + 39500 16 25 - 77353 + 77558 @@ -32927,17 +33240,17 @@ 1 2 - 871776 + 874088 2 15 - 39395 + 39500 16 25 - 77353 + 77558 @@ -32953,7 +33266,7 @@ 1 2 - 988516 + 991138 2 @@ -32974,7 +33287,7 @@ 1 2 - 2334426 + 2340619 @@ -32990,7 +33303,7 @@ 1 2 - 2334426 + 2340619 @@ -33006,7 +33319,7 @@ 1 2 - 2334426 + 2340619 @@ -33022,22 +33335,22 @@ 1 2 - 438122 + 439284 2 3 - 32980 + 33067 3 15 - 42099 + 42211 15 111796 - 24610 + 24675 @@ -33053,17 +33366,17 @@ 1 2 - 469174 + 470418 2 4 - 49479 + 49610 4 12163 - 19159 + 19210 @@ -33079,22 +33392,22 @@ 1 2 - 438122 + 439284 2 3 - 32980 + 33067 3 15 - 42099 + 42211 15 111796 - 24610 + 24675 @@ -33104,26 +33417,26 @@ braced_initialisers - 74076 + 68480 init - 74076 + 68480 expr_ancestor - 1795304 + 1677598 exp - 1795304 + 1677598 ancestor - 898527 + 839616 @@ -33137,7 +33450,7 @@ 1 2 - 1795304 + 1677598 @@ -33153,17 +33466,17 @@ 1 2 - 18281 + 17083 2 3 - 869469 + 812464 3 19 - 10775 + 10069 @@ -33173,19 +33486,19 @@ exprs - 25143286 + 25210446 id - 25143286 + 25210446 kind - 1446 + 1450 location - 10554424 + 10582616 @@ -33199,7 +33512,7 @@ 1 2 - 25143286 + 25210446 @@ -33215,7 +33528,7 @@ 1 2 - 25143286 + 25210446 @@ -33393,22 +33706,22 @@ 1 2 - 8876944 + 8900655 2 3 - 818418 + 820604 3 16 - 795071 + 797195 16 71733 - 63990 + 64161 @@ -33424,17 +33737,17 @@ 1 2 - 9015974 + 9040056 2 3 - 772206 + 774269 3 32 - 766243 + 768290 @@ -33444,19 +33757,19 @@ expr_reuse - 906424 + 846996 reuse - 906424 + 846996 original - 906424 + 846996 value_category - 46 + 43 @@ -33470,7 +33783,7 @@ 1 2 - 906424 + 846996 @@ -33486,7 +33799,7 @@ 1 2 - 906424 + 846996 @@ -33502,7 +33815,7 @@ 1 2 - 906424 + 846996 @@ -33518,7 +33831,7 @@ 1 2 - 906424 + 846996 @@ -33534,12 +33847,12 @@ 58 59 - 23 + 21 39309 39310 - 23 + 21 @@ -33555,12 +33868,12 @@ 58 59 - 23 + 21 39309 39310 - 23 + 21 @@ -33570,15 +33883,15 @@ expr_types - 25143286 + 25210446 id - 25143286 + 25210446 typeid - 213631 + 214201 value_category @@ -33596,7 +33909,7 @@ 1 2 - 25143286 + 25210446 @@ -33612,7 +33925,7 @@ 1 2 - 25143286 + 25210446 @@ -33628,52 +33941,52 @@ 1 2 - 52371 + 52511 2 3 - 35097 + 35191 3 4 - 14468 + 14507 4 5 - 14490 + 14529 5 8 - 17515 + 17562 8 14 - 17340 + 17386 14 24 - 16397 + 16441 24 49 - 16025 + 16067 49 134 - 16134 + 16177 134 441505 - 13789 + 13825 @@ -33689,12 +34002,12 @@ 1 2 - 185417 + 185912 2 3 - 28213 + 28289 @@ -33746,26 +34059,26 @@ compound_requirement_is_noexcept - 69 + 64 expr - 69 + 64 new_allocated_type - 57934 + 46205 expr - 57934 + 46205 type_id - 34350 + 27396 @@ -33779,7 +34092,7 @@ 1 2 - 57934 + 46205 @@ -33795,17 +34108,17 @@ 1 2 - 14440 + 11517 2 3 - 18158 + 14481 3 19 - 1751 + 1397 @@ -33815,15 +34128,15 @@ new_array_allocated_type - 6914 + 6933 expr - 6914 + 6933 type_id - 2970 + 2978 @@ -33837,7 +34150,7 @@ 1 2 - 6914 + 6933 @@ -33858,12 +34171,12 @@ 2 3 - 2626 + 2633 3 5 - 223 + 224 6 @@ -35214,15 +35527,15 @@ condition_decl_bind - 437589 + 408900 expr - 437589 + 408900 decl - 437589 + 408900 @@ -35236,7 +35549,7 @@ 1 2 - 437589 + 408900 @@ -35252,7 +35565,7 @@ 1 2 - 437589 + 408900 @@ -35262,15 +35575,15 @@ typeid_bind - 60071 + 47909 expr - 60071 + 47909 type_id - 19995 + 15947 @@ -35284,7 +35597,7 @@ 1 2 - 60071 + 47909 @@ -35300,17 +35613,17 @@ 1 2 - 3717 + 2964 2 3 - 15765 + 12573 3 328 - 512 + 408 @@ -35320,15 +35633,15 @@ uuidof_bind - 27985 + 28060 expr - 27985 + 28060 type_id - 27719 + 27792 @@ -35342,7 +35655,7 @@ 1 2 - 27985 + 28060 @@ -35358,12 +35671,12 @@ 1 2 - 27495 + 27568 2 4 - 223 + 224 @@ -35373,15 +35686,15 @@ sizeof_bind - 241381 + 242025 expr - 241381 + 242025 type_id - 11180 + 11210 @@ -35395,7 +35708,7 @@ 1 2 - 241381 + 242025 @@ -35411,37 +35724,37 @@ 1 2 - 3867 + 3877 2 3 - 2776 + 2783 3 4 - 1021 + 1024 4 5 - 1137 + 1140 5 6 - 294 + 295 6 7 - 1062 + 1064 7 40 - 854 + 856 40 @@ -35504,23 +35817,23 @@ lambdas - 17730 + 16482 expr - 17730 + 16482 default_capture - 128 + 25 has_explicit_return_type - 85 + 17 has_explicit_parameter_list - 85 + 17 @@ -35534,7 +35847,7 @@ 1 2 - 17730 + 16482 @@ -35550,7 +35863,7 @@ 1 2 - 17730 + 16482 @@ -35566,7 +35879,7 @@ 1 2 - 17730 + 16482 @@ -35580,19 +35893,19 @@ 12 - 37 - 38 - 42 + 276 + 277 + 8 - 82 - 83 - 42 + 697 + 698 + 8 - 296 - 297 - 42 + 936 + 937 + 8 @@ -35605,15 +35918,10 @@ 12 - - 1 - 2 - 42 - 2 3 - 85 + 25 @@ -35626,15 +35934,10 @@ 12 - - 1 - 2 - 42 - 2 3 - 85 + 25 @@ -35648,14 +35951,14 @@ 12 - 55 - 56 - 42 + 813 + 814 + 8 - 360 - 361 - 42 + 1096 + 1097 + 8 @@ -35668,15 +35971,10 @@ 12 - - 2 - 3 - 42 - 3 4 - 42 + 17 @@ -35692,12 +35990,12 @@ 1 2 - 42 + 8 2 3 - 42 + 8 @@ -35711,14 +36009,14 @@ 12 - 45 - 46 - 42 + 34 + 35 + 8 - 370 - 371 - 42 + 1875 + 1876 + 8 @@ -35731,15 +36029,10 @@ 12 - - 2 - 3 - 42 - 3 4 - 42 + 17 @@ -35755,12 +36048,12 @@ 1 2 - 42 + 8 2 3 - 42 + 8 @@ -35770,15 +36063,15 @@ lambda_capture - 28450 + 28526 id - 28450 + 28526 lambda - 13261 + 13296 index @@ -35786,7 +36079,7 @@ field - 28450 + 28526 captured_by_reference @@ -35798,7 +36091,7 @@ location - 18350 + 18398 @@ -35812,7 +36105,7 @@ 1 2 - 28450 + 28526 @@ -35828,7 +36121,7 @@ 1 2 - 28450 + 28526 @@ -35844,7 +36137,7 @@ 1 2 - 28450 + 28526 @@ -35860,7 +36153,7 @@ 1 2 - 28450 + 28526 @@ -35876,7 +36169,7 @@ 1 2 - 28450 + 28526 @@ -35892,7 +36185,7 @@ 1 2 - 28450 + 28526 @@ -35908,27 +36201,27 @@ 1 2 - 6656 + 6674 2 3 - 3074 + 3082 3 4 - 1610 + 1614 4 6 - 1222 + 1226 6 18 - 697 + 699 @@ -35944,27 +36237,27 @@ 1 2 - 6656 + 6674 2 3 - 3074 + 3082 3 4 - 1610 + 1614 4 6 - 1222 + 1226 6 18 - 697 + 699 @@ -35980,27 +36273,27 @@ 1 2 - 6656 + 6674 2 3 - 3074 + 3082 3 4 - 1610 + 1614 4 6 - 1222 + 1226 6 18 - 697 + 699 @@ -36016,12 +36309,12 @@ 1 2 - 12692 + 12726 2 3 - 568 + 569 @@ -36037,7 +36330,7 @@ 1 2 - 13235 + 13270 2 @@ -36058,27 +36351,27 @@ 1 2 - 7284 + 7304 2 3 - 3237 + 3246 3 4 - 1326 + 1329 4 7 - 1084 + 1087 7 18 - 327 + 328 @@ -36387,7 +36680,7 @@ 2 3 - 111 + 112 @@ -36520,7 +36813,7 @@ 1 2 - 28450 + 28526 @@ -36536,7 +36829,7 @@ 1 2 - 28450 + 28526 @@ -36552,7 +36845,7 @@ 1 2 - 28450 + 28526 @@ -36568,7 +36861,7 @@ 1 2 - 28450 + 28526 @@ -36584,7 +36877,7 @@ 1 2 - 28450 + 28526 @@ -36600,7 +36893,7 @@ 1 2 - 28450 + 28526 @@ -36858,17 +37151,17 @@ 1 2 - 16524 + 16568 2 6 - 1394 + 1398 6 68 - 430 + 431 @@ -36884,12 +37177,12 @@ 1 2 - 17136 + 17181 2 68 - 1214 + 1217 @@ -36905,12 +37198,12 @@ 1 2 - 17618 + 17664 2 8 - 731 + 733 @@ -36926,17 +37219,17 @@ 1 2 - 16524 + 16568 2 6 - 1394 + 1398 6 68 - 430 + 431 @@ -36952,7 +37245,7 @@ 1 2 - 18324 + 18372 2 @@ -36973,7 +37266,7 @@ 1 2 - 18350 + 18398 @@ -36983,19 +37276,19 @@ fold - 1367 + 1247 expr - 1367 + 1247 operator - 85 + 86 is_left_fold - 42 + 21 @@ -37009,7 +37302,7 @@ 1 2 - 1367 + 1247 @@ -37025,7 +37318,7 @@ 1 2 - 1367 + 1247 @@ -37039,14 +37332,19 @@ 12 - 2 - 3 - 42 + 1 + 2 + 43 - 30 - 31 - 42 + 2 + 3 + 21 + + + 54 + 55 + 21 @@ -37062,7 +37360,7 @@ 1 2 - 85 + 86 @@ -37076,9 +37374,9 @@ 12 - 32 - 33 - 42 + 58 + 59 + 21 @@ -37092,9 +37390,9 @@ 12 - 2 - 3 - 42 + 4 + 5 + 21 @@ -37104,11 +37402,11 @@ stmts - 6243069 + 6259629 id - 6243069 + 6259629 kind @@ -37116,7 +37414,7 @@ location - 2747715 + 2755003 @@ -37130,7 +37428,7 @@ 1 2 - 6243069 + 6259629 @@ -37146,7 +37444,7 @@ 1 2 - 6243069 + 6259629 @@ -37384,17 +37682,17 @@ 1 2 - 2346947 + 2353172 2 4 - 238475 + 239107 4 1581 - 162292 + 162723 @@ -37410,12 +37708,12 @@ 1 2 - 2661225 + 2668284 2 10 - 86489 + 86719 @@ -37532,15 +37830,15 @@ if_initialization - 373 + 374 if_stmt - 373 + 374 init_id - 373 + 374 @@ -37554,7 +37852,7 @@ 1 2 - 373 + 374 @@ -37570,7 +37868,7 @@ 1 2 - 373 + 374 @@ -37580,15 +37878,15 @@ if_then - 987571 + 990209 if_stmt - 987571 + 990209 then_id - 987571 + 990209 @@ -37602,7 +37900,7 @@ 1 2 - 987571 + 990209 @@ -37618,7 +37916,7 @@ 1 2 - 987571 + 990209 @@ -37628,15 +37926,15 @@ if_else - 467752 + 437085 if_stmt - 467752 + 437085 else_id - 467752 + 437085 @@ -37650,7 +37948,7 @@ 1 2 - 467752 + 437085 @@ -37666,7 +37964,7 @@ 1 2 - 467752 + 437085 @@ -37724,15 +38022,15 @@ constexpr_if_then - 103537 + 103814 constexpr_if_stmt - 103537 + 103814 then_id - 103537 + 103814 @@ -37746,7 +38044,7 @@ 1 2 - 103537 + 103814 @@ -37762,7 +38060,7 @@ 1 2 - 103537 + 103814 @@ -37772,15 +38070,15 @@ constexpr_if_else - 73759 + 73956 constexpr_if_stmt - 73759 + 73956 else_id - 73759 + 73956 @@ -37794,7 +38092,7 @@ 1 2 - 73759 + 73956 @@ -37810,7 +38108,7 @@ 1 2 - 73759 + 73956 @@ -37916,15 +38214,15 @@ while_body - 39542 + 39647 while_stmt - 39542 + 39647 body_id - 39542 + 39647 @@ -37938,7 +38236,7 @@ 1 2 - 39542 + 39647 @@ -37954,7 +38252,7 @@ 1 2 - 39542 + 39647 @@ -37964,15 +38262,15 @@ do_body - 233017 + 233640 do_stmt - 233017 + 233640 body_id - 233017 + 233640 @@ -37986,7 +38284,7 @@ 1 2 - 233017 + 233640 @@ -38002,7 +38300,7 @@ 1 2 - 233017 + 233640 @@ -38060,19 +38358,19 @@ switch_case - 894774 + 836109 switch_stmt - 440744 + 411847 index - 414 + 387 case_id - 894774 + 836109 @@ -38086,17 +38384,17 @@ 1 2 - 23 + 21 2 3 - 437658 + 408964 3 19 - 3062 + 2861 @@ -38112,17 +38410,17 @@ 1 2 - 23 + 21 2 3 - 437658 + 408964 3 19 - 3062 + 2861 @@ -38138,62 +38436,62 @@ 5 6 - 161 + 150 10 11 - 23 + 21 19 20 - 23 + 21 27 28 - 23 + 21 48 49 - 23 + 21 51 52 - 23 + 21 58 59 - 23 + 21 83 84 - 23 + 21 114 115 - 23 + 21 133 134 - 23 + 21 19141 19142 - 23 + 21 19142 19143 - 23 + 21 @@ -38209,62 +38507,62 @@ 5 6 - 161 + 150 10 11 - 23 + 21 19 20 - 23 + 21 27 28 - 23 + 21 48 49 - 23 + 21 51 52 - 23 + 21 58 59 - 23 + 21 83 84 - 23 + 21 114 115 - 23 + 21 133 134 - 23 + 21 19141 19142 - 23 + 21 19142 19143 - 23 + 21 @@ -38280,7 +38578,7 @@ 1 2 - 894774 + 836109 @@ -38296,7 +38594,7 @@ 1 2 - 894774 + 836109 @@ -38306,15 +38604,15 @@ switch_body - 440744 + 411847 switch_stmt - 440744 + 411847 body_id - 440744 + 411847 @@ -38328,7 +38626,7 @@ 1 2 - 440744 + 411847 @@ -38344,7 +38642,7 @@ 1 2 - 440744 + 411847 @@ -38354,15 +38652,15 @@ for_initialization - 73050 + 73245 for_stmt - 73050 + 73245 init_id - 73050 + 73245 @@ -38376,7 +38674,7 @@ 1 2 - 73050 + 73245 @@ -38392,7 +38690,7 @@ 1 2 - 73050 + 73245 @@ -38402,15 +38700,15 @@ for_condition - 76137 + 76340 for_stmt - 76137 + 76340 condition_id - 76137 + 76340 @@ -38424,7 +38722,7 @@ 1 2 - 76137 + 76340 @@ -38440,7 +38738,7 @@ 1 2 - 76137 + 76340 @@ -38450,15 +38748,15 @@ for_update - 73190 + 73386 for_stmt - 73190 + 73386 update_id - 73190 + 73386 @@ -38472,7 +38770,7 @@ 1 2 - 73190 + 73386 @@ -38488,7 +38786,7 @@ 1 2 - 73190 + 73386 @@ -38498,15 +38796,15 @@ for_body - 84163 + 84388 for_stmt - 84163 + 84388 body_id - 84163 + 84388 @@ -38520,7 +38818,7 @@ 1 2 - 84163 + 84388 @@ -38536,7 +38834,7 @@ 1 2 - 84163 + 84388 @@ -38546,19 +38844,19 @@ stmtparents - 5509819 + 5524434 id - 5509819 + 5524434 index - 16722 + 16767 parent - 2336424 + 2342622 @@ -38572,7 +38870,7 @@ 1 2 - 5509819 + 5524434 @@ -38588,7 +38886,7 @@ 1 2 - 5509819 + 5524434 @@ -38604,52 +38902,52 @@ 1 2 - 5493 + 5508 2 3 - 1369 + 1372 3 4 - 301 + 302 4 5 - 2126 + 2132 7 8 - 1394 + 1398 8 12 - 1084 + 1087 12 29 - 1472 + 1476 29 38 - 1257 + 1260 41 77 - 1265 + 1269 77 195079 - 955 + 958 @@ -38665,52 +38963,52 @@ 1 2 - 5493 + 5508 2 3 - 1369 + 1372 3 4 - 301 + 302 4 5 - 2126 + 2132 7 8 - 1394 + 1398 8 12 - 1084 + 1087 12 29 - 1472 + 1476 29 38 - 1257 + 1260 41 77 - 1265 + 1269 77 195079 - 955 + 958 @@ -38726,32 +39024,32 @@ 1 2 - 1341036 + 1344593 2 3 - 506485 + 507829 3 4 - 143753 + 144134 4 6 - 151038 + 151438 6 16 - 175330 + 175795 16 1943 - 18780 + 18830 @@ -38767,32 +39065,32 @@ 1 2 - 1341036 + 1344593 2 3 - 506485 + 507829 3 4 - 143753 + 144134 4 6 - 151038 + 151438 6 16 - 175330 + 175795 16 1943 - 18780 + 18830 @@ -38802,22 +39100,22 @@ ishandler - 47330 + 43754 block - 47330 + 43754 stmt_decl_bind - 723033 + 721438 stmt - 682991 + 681485 num @@ -38825,7 +39123,7 @@ decl - 722964 + 721370 @@ -38839,12 +39137,12 @@ 1 2 - 660998 + 659540 2 32 - 21993 + 21944 @@ -38860,12 +39158,12 @@ 1 2 - 660998 + 659540 2 32 - 21993 + 21944 @@ -39003,7 +39301,7 @@ 1 2 - 722940 + 721346 2 @@ -39024,7 +39322,7 @@ 1 2 - 722964 + 721370 @@ -39034,11 +39332,11 @@ stmt_decl_entry_bind - 723033 + 721438 stmt - 682991 + 681485 num @@ -39046,7 +39344,7 @@ decl_entry - 723033 + 721438 @@ -39060,12 +39358,12 @@ 1 2 - 660998 + 659540 2 32 - 21993 + 21944 @@ -39081,12 +39379,12 @@ 1 2 - 660998 + 659540 2 32 - 21993 + 21944 @@ -39224,7 +39522,7 @@ 1 2 - 723033 + 721438 @@ -39240,7 +39538,7 @@ 1 2 - 723033 + 721438 @@ -39250,15 +39548,15 @@ blockscope - 1757769 + 1762465 block - 1757769 + 1762465 enclosing - 1503349 + 1507364 @@ -39272,7 +39570,7 @@ 1 2 - 1757769 + 1762465 @@ -39288,17 +39586,17 @@ 1 2 - 1332655 + 1336215 2 3 - 128207 + 128549 3 28 - 42486 + 42599 @@ -39308,19 +39606,19 @@ jumpinfo - 347391 + 348319 id - 347391 + 348319 str - 28871 + 28948 target - 72512 + 72705 @@ -39334,7 +39632,7 @@ 1 2 - 347391 + 348319 @@ -39350,7 +39648,7 @@ 1 2 - 347391 + 348319 @@ -39366,37 +39664,37 @@ 2 3 - 13560 + 13596 3 4 - 6042 + 6058 4 5 - 2008 + 2014 5 6 - 1883 + 1888 6 10 - 2192 + 2197 10 25 - 2183 + 2189 25 13711 - 1000 + 1002 @@ -39412,17 +39710,17 @@ 1 2 - 23128 + 23190 2 3 - 3617 + 3626 3 3321 - 2125 + 2131 @@ -39443,27 +39741,27 @@ 2 3 - 36114 + 36210 3 4 - 17586 + 17633 4 5 - 7359 + 7379 5 8 - 6401 + 6418 8 2124 - 5017 + 5030 @@ -39479,7 +39777,7 @@ 1 2 - 72512 + 72705 @@ -39489,19 +39787,19 @@ preprocdirects - 5386939 + 5401328 id - 5386939 + 5401328 kind - 1370 + 1374 location - 5383699 + 5398080 @@ -39515,7 +39813,7 @@ 1 2 - 5386939 + 5401328 @@ -39531,7 +39829,7 @@ 1 2 - 5386939 + 5401328 @@ -39679,7 +39977,7 @@ 1 2 - 5383575 + 5397955 27 @@ -39700,7 +39998,7 @@ 1 2 - 5383699 + 5398080 @@ -39710,15 +40008,15 @@ preprocpair - 1136918 + 1139955 begin - 883245 + 885604 elseelifend - 1136918 + 1139955 @@ -39732,17 +40030,17 @@ 1 2 - 643153 + 644871 2 3 - 230498 + 231114 3 9 - 9593 + 9619 @@ -39758,7 +40056,7 @@ 1 2 - 1136918 + 1139955 @@ -39768,41 +40066,41 @@ preproctrue - 436078 + 437243 branch - 436078 + 437243 preprocfalse - 283575 + 284333 branch - 283575 + 284333 preproctext - 4335865 + 4347447 id - 4335865 + 4347447 head - 2943529 + 2951391 body - 1674914 + 1679388 @@ -39816,7 +40114,7 @@ 1 2 - 4335865 + 4347447 @@ -39832,7 +40130,7 @@ 1 2 - 4335865 + 4347447 @@ -39848,12 +40146,12 @@ 1 2 - 2747543 + 2754882 2 798 - 195986 + 196509 @@ -39869,12 +40167,12 @@ 1 2 - 2864163 + 2871813 2 5 - 79366 + 79578 @@ -39890,17 +40188,17 @@ 1 2 - 1526897 + 1530975 2 10 - 127210 + 127550 10 13579 - 20807 + 20862 @@ -39916,17 +40214,17 @@ 1 2 - 1531133 + 1535223 2 12 - 126836 + 127175 12 3231 - 16944 + 16990 @@ -39936,15 +40234,15 @@ includes - 397817 + 364863 id - 397817 + 364863 included - 73281 + 67210 @@ -39958,7 +40256,7 @@ 1 2 - 397817 + 364863 @@ -39974,37 +40272,37 @@ 1 2 - 36264 + 33260 2 3 - 11789 + 10812 3 4 - 6184 + 5672 4 6 - 6685 + 6132 6 11 - 5644 + 5176 11 47 - 5499 + 5043 47 793 - 1213 + 1112 @@ -40014,15 +40312,15 @@ link_targets - 923 + 846 id - 923 + 846 binary - 923 + 846 @@ -40036,7 +40334,7 @@ 1 2 - 923 + 846 @@ -40052,7 +40350,7 @@ 1 2 - 923 + 846 @@ -40062,15 +40360,15 @@ link_parent - 38113722 + 30397565 element - 4847512 + 3866129 link_target - 427 + 340 @@ -40084,17 +40382,17 @@ 1 2 - 665225 + 530549 2 9 - 33795 + 26953 9 10 - 4148492 + 3308626 @@ -40110,52 +40408,52 @@ 3 4 - 42 + 34 97356 97357 - 42 + 34 97475 97476 - 42 + 34 97528 97529 - 42 + 34 97555 97556 - 42 + 34 97577 97578 - 42 + 34 97609 97610 - 42 + 34 99616 99617 - 42 + 34 102996 102997 - 42 + 34 104360 104361 - 42 + 34 From 4228828b66252843647489a2bc91624fb5f6b436 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Mon, 16 Jun 2025 15:02:08 +0200 Subject: [PATCH 098/150] C++: Address review comments --- .../raw/internal/TranslatedExpr.qll | 14 +++++++--- .../library-tests/ir/ir/PrintAST.expected | 6 +---- .../library-tests/ir/ir/aliased_ir.expected | 26 ++++++------------- .../test/library-tests/ir/ir/raw_ir.expected | 26 ++++++------------- cpp/ql/test/library-tests/ir/ir/try_except.c | 2 +- 5 files changed, 28 insertions(+), 46 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll index 279477d9588..705a9dcdd0b 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll @@ -381,6 +381,14 @@ abstract class TranslatedValueCategoryAdjustment extends TranslatedExpr { final TranslatedCoreExpr getOperand() { result.getExpr() = expr } } +/** + * Holds if `expr` requires an `SehExceptionEdge` to be generated. + */ +private predicate hasSehExceptionEdge(Expr expr) { + expr instanceof PointerDereferenceExpr and + exists(MicrosoftTryStmt tryStmt | tryStmt.getStmt() = expr.getEnclosingStmt().getParent*()) +} + /** * IR translation of an implicit lvalue-to-rvalue conversion on the result of * an expression. @@ -403,9 +411,8 @@ class TranslatedLoad extends TranslatedValueCategoryAdjustment, TTranslatedLoad ( result = this.getParent().getChildSuccessor(this, kind) or - expr instanceof PointerDereferenceExpr and + hasSehExceptionEdge(expr) and kind instanceof SehExceptionEdge and - exists(MicrosoftTryStmt tryStmt | tryStmt.getStmt() = expr.getEnclosingStmt().getParent*()) and result = this.getParent().getExceptionSuccessorInstruction(any(GotoEdge e)) ) } @@ -1955,9 +1962,8 @@ class TranslatedAssignExpr extends TranslatedNonConstantExpr { ( result = this.getParent().getChildSuccessor(this, kind) or - expr.getLValue() instanceof PointerDereferenceExpr and + hasSehExceptionEdge(expr.getLValue()) and kind instanceof SehExceptionEdge and - exists(MicrosoftTryStmt tryStmt | tryStmt.getStmt() = expr.getEnclosingStmt().getParent*()) and result = this.getParent().getExceptionSuccessorInstruction(any(GotoEdge e)) ) } diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index 998dc486289..d3ef1de1e13 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -49689,7 +49689,7 @@ try_except.c: # 52| Type = [IntType] int # 52| ValueCategory = prvalue(load) # 54| getStmt(2): [ReturnStmt] return ... -# 56| [TopLevelFunction] void k(int*, int*, int*, int*, int*) +# 56| [TopLevelFunction] void k(int*, int*, int*) # 56| : # 56| getParameter(0): [Parameter] b # 56| Type = [IntPointerType] int * @@ -49697,10 +49697,6 @@ try_except.c: # 56| Type = [IntPointerType] int * # 56| getParameter(2): [Parameter] d # 56| Type = [IntPointerType] int * -# 56| getParameter(3): [Parameter] e -# 56| Type = [IntPointerType] int * -# 56| getParameter(4): [Parameter] f -# 56| Type = [IntPointerType] int * # 56| getEntryPoint(): [BlockStmt] { ... } # 57| getStmt(0): [DeclStmt] declaration # 57| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected index 78d3798df7c..850168dd6d5 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected @@ -39258,7 +39258,7 @@ try_except.c: # 46| Block 7 # 46| v46_10(void) = Unreached : -# 56| void k(int*, int*, int*, int*, int*) +# 56| void k(int*, int*, int*) # 56| Block 0 # 56| v56_1(void) = EnterFunction : # 56| m56_2(unknown) = AliasedDefinition : @@ -39276,14 +39276,6 @@ try_except.c: # 56| m56_14(int *) = InitializeParameter[d] : &:r56_13 # 56| r56_15(int *) = Load[d] : &:r56_13, m56_14 # 56| m56_16(unknown) = InitializeIndirection[d] : &:r56_15 -# 56| r56_17(glval) = VariableAddress[e] : -# 56| m56_18(int *) = InitializeParameter[e] : &:r56_17 -# 56| r56_19(int *) = Load[e] : &:r56_17, m56_18 -# 56| m56_20(unknown) = InitializeIndirection[e] : &:r56_19 -# 56| r56_21(glval) = VariableAddress[f] : -# 56| m56_22(int *) = InitializeParameter[f] : &:r56_21 -# 56| r56_23(int *) = Load[f] : &:r56_21, m56_22 -# 56| m56_24(unknown) = InitializeIndirection[f] : &:r56_23 # 57| r57_1(glval) = VariableAddress[x] : # 57| r57_2(int) = Constant[0] : # 57| m57_3(int) = Store[x] : &:r57_1, r57_2 @@ -39355,17 +39347,15 @@ try_except.c: # 66| m66_1(unknown) = Phi : from 3:m60_7, from 7:m63_7 # 66| m66_2(unknown) = Phi : from 3:~m56_4, from 7:~m64_6 # 66| v66_3(void) = NoOp : -# 56| v56_25(void) = ReturnIndirection[b] : &:r56_7, m56_8 -# 56| v56_26(void) = ReturnIndirection[c] : &:r56_11, m66_1 -# 56| v56_27(void) = ReturnIndirection[d] : &:r56_15, m56_16 -# 56| v56_28(void) = ReturnIndirection[e] : &:r56_19, m56_20 -# 56| v56_29(void) = ReturnIndirection[f] : &:r56_23, m56_24 -# 56| v56_30(void) = ReturnVoid : -# 56| v56_31(void) = AliasedUse : ~m66_2 -# 56| v56_32(void) = ExitFunction : +# 56| v56_17(void) = ReturnIndirection[b] : &:r56_7, m56_8 +# 56| v56_18(void) = ReturnIndirection[c] : &:r56_11, m66_1 +# 56| v56_19(void) = ReturnIndirection[d] : &:r56_15, m56_16 +# 56| v56_20(void) = ReturnVoid : +# 56| v56_21(void) = AliasedUse : ~m66_2 +# 56| v56_22(void) = ExitFunction : # 56| Block 9 -# 56| v56_33(void) = Unreached : +# 56| v56_23(void) = Unreached : try_except.cpp: # 6| void f_cpp() diff --git a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected index b521dd6b503..030db017203 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -37533,7 +37533,7 @@ try_except.c: # 46| v46_9(void) = ReturnVoid : #-----| Goto -> Block 1 -# 56| void k(int*, int*, int*, int*, int*) +# 56| void k(int*, int*, int*) # 56| Block 0 # 56| v56_1(void) = EnterFunction : # 56| mu56_2(unknown) = AliasedDefinition : @@ -37550,14 +37550,6 @@ try_except.c: # 56| mu56_13(int *) = InitializeParameter[d] : &:r56_12 # 56| r56_14(int *) = Load[d] : &:r56_12, ~m? # 56| mu56_15(unknown) = InitializeIndirection[d] : &:r56_14 -# 56| r56_16(glval) = VariableAddress[e] : -# 56| mu56_17(int *) = InitializeParameter[e] : &:r56_16 -# 56| r56_18(int *) = Load[e] : &:r56_16, ~m? -# 56| mu56_19(unknown) = InitializeIndirection[e] : &:r56_18 -# 56| r56_20(glval) = VariableAddress[f] : -# 56| mu56_21(int *) = InitializeParameter[f] : &:r56_20 -# 56| r56_22(int *) = Load[f] : &:r56_20, ~m? -# 56| mu56_23(unknown) = InitializeIndirection[f] : &:r56_22 # 57| r57_1(glval) = VariableAddress[x] : # 57| r57_2(int) = Constant[0] : # 57| mu57_3(int) = Store[x] : &:r57_1, r57_2 @@ -37568,11 +37560,11 @@ try_except.c: #-----| SEH Exception -> Block 8 # 56| Block 1 -# 56| v56_24(void) = AliasedUse : ~m? -# 56| v56_25(void) = ExitFunction : +# 56| v56_16(void) = AliasedUse : ~m? +# 56| v56_17(void) = ExitFunction : # 56| Block 2 -# 56| v56_26(void) = Unwind : +# 56| v56_18(void) = Unwind : #-----| Goto -> Block 1 # 59| Block 3 @@ -37630,12 +37622,10 @@ try_except.c: # 66| Block 10 # 66| v66_1(void) = NoOp : -# 56| v56_27(void) = ReturnIndirection[b] : &:r56_6, ~m? -# 56| v56_28(void) = ReturnIndirection[c] : &:r56_10, ~m? -# 56| v56_29(void) = ReturnIndirection[d] : &:r56_14, ~m? -# 56| v56_30(void) = ReturnIndirection[e] : &:r56_18, ~m? -# 56| v56_31(void) = ReturnIndirection[f] : &:r56_22, ~m? -# 56| v56_32(void) = ReturnVoid : +# 56| v56_19(void) = ReturnIndirection[b] : &:r56_6, ~m? +# 56| v56_20(void) = ReturnIndirection[c] : &:r56_10, ~m? +# 56| v56_21(void) = ReturnIndirection[d] : &:r56_14, ~m? +# 56| v56_22(void) = ReturnVoid : #-----| Goto -> Block 1 try_except.cpp: diff --git a/cpp/ql/test/library-tests/ir/ir/try_except.c b/cpp/ql/test/library-tests/ir/ir/try_except.c index 8efb9b0ef1d..27eb8d24e17 100644 --- a/cpp/ql/test/library-tests/ir/ir/try_except.c +++ b/cpp/ql/test/library-tests/ir/ir/try_except.c @@ -53,7 +53,7 @@ void j(int b) { } } -void k(int *b, int *c, int *d, int *e, int *f) { +void k(int *b, int *c, int *d) { int x = 0; __try { x = *b; From 45fa2c94da60cabd5352192eb255fbad93f8100f Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Mon, 16 Jun 2025 09:22:11 -0400 Subject: [PATCH 099/150] Crypto: Code review cleanup. --- .../AlgorithmInstances/KeyAgreementAlgorithmInstance.qll | 5 ++--- .../OpenSSL/AlgorithmInstances/MACAlgorithmInstance.qll | 2 +- .../DirectAlgorithmValueConsumer.qll | 3 --- .../HashAlgorithmValueConsumer.qll | 4 ++-- cpp/ql/lib/experimental/quantum/OpenSSL/AvcFlow.qll | 2 +- cpp/ql/lib/experimental/quantum/OpenSSL/CtxFlow.qll | 6 ++---- cpp/ql/lib/experimental/quantum/OpenSSL/KeyFlow.qll | 4 +--- .../quantum/OpenSSL/Operations/EVPKeyGenOperation.qll | 8 ++++---- .../quantum/OpenSSL/Operations/EVPPKeyCtxInitializer.qll | 3 +-- .../quantum/OpenSSL/Operations/EVPSignatureOperation.qll | 3 +-- 10 files changed, 15 insertions(+), 25 deletions(-) diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KeyAgreementAlgorithmInstance.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KeyAgreementAlgorithmInstance.qll index 7694463c113..7210f7077c7 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KeyAgreementAlgorithmInstance.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KeyAgreementAlgorithmInstance.qll @@ -22,12 +22,12 @@ predicate knownOpenSSLConstantToKeyAgreementFamilyType( ) } -class KnownOpenSSLHashConstantAlgorithmInstance extends OpenSSLAlgorithmInstance, +class KnownOpenSSLKeyAgreementConstantAlgorithmInstance extends OpenSSLAlgorithmInstance, Crypto::KeyAgreementAlgorithmInstance instanceof KnownOpenSSLKeyAgreementAlgorithmExpr { OpenSSLAlgorithmValueConsumer getterCall; - KnownOpenSSLHashConstantAlgorithmInstance() { + KnownOpenSSLKeyAgreementConstantAlgorithmInstance() { // Two possibilities: // 1) The source is a literal and flows to a getter, then we know we have an instance // 2) The source is a KnownOpenSSLAlgorithm is call, and we know we have an instance immediately from that @@ -44,7 +44,6 @@ class KnownOpenSSLHashConstantAlgorithmInstance extends OpenSSLAlgorithmInstance or // Possibility 2: this instanceof OpenSSLAlgorithmCall and - this instanceof DirectAlgorithmValueConsumer and getterCall = this } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/MACAlgorithmInstance.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/MACAlgorithmInstance.qll index 2158956c9a2..12d43affd0e 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/MACAlgorithmInstance.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/MACAlgorithmInstance.qll @@ -19,7 +19,7 @@ class KnownOpenSSLMACConstantAlgorithmInstance extends OpenSSLAlgorithmInstance, this instanceof OpenSSLAlgorithmLiteral and exists(DataFlow::Node src, DataFlow::Node sink | // Sink is an argument to a CipherGetterCall - sink = getterCall.(OpenSSLAlgorithmValueConsumer).getInputNode() and + sink = getterCall.getInputNode() and // Source is `this` src.asExpr() = this and // This traces to a getter diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/DirectAlgorithmValueConsumer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/DirectAlgorithmValueConsumer.qll index 068536c8696..6dede7679e9 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/DirectAlgorithmValueConsumer.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/DirectAlgorithmValueConsumer.qll @@ -12,9 +12,6 @@ private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgor */ class DirectAlgorithmValueConsumer extends OpenSSLAlgorithmValueConsumer instanceof OpenSSLAlgorithmCall { - DataFlow::Node resultNode; - Expr resultExpr; - /** * These cases take in no explicit value (the value is implicit) */ diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/HashAlgorithmValueConsumer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/HashAlgorithmValueConsumer.qll index 98e3d974006..bbd00fc0810 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/HashAlgorithmValueConsumer.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/HashAlgorithmValueConsumer.qll @@ -28,7 +28,7 @@ class EVP_Q_Digest_Algorithm_Consumer extends HashAlgorithmValueConsumer { } /** - * Instances from https://docs.openssl.org/3.0/man3/EVP_PKEY_CTX_ctrl/ + * An instance from https://docs.openssl.org/3.0/man3/EVP_PKEY_CTX_ctrl/ * where the digest is directly consumed by name. * In these cases, the operation is not yet performed, but there is * these functions are treated as 'initializers' and track the algorithm through @@ -71,7 +71,7 @@ class EVPDigestAlgorithmValueConsumer extends HashAlgorithmValueConsumer { ] and valueArgNode.asExpr() = this.(Call).getArgument(0) or - this.(Call).getTarget().getName() in ["EVP_MD_fetch"] and + this.(Call).getTarget().getName() = "EVP_MD_fetch" and valueArgNode.asExpr() = this.(Call).getArgument(1) or this.(Call).getTarget().getName() = "EVP_DigestSignInit_ex" and diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AvcFlow.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AvcFlow.qll index 204a92ab796..eb46c9a8e6e 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AvcFlow.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AvcFlow.qll @@ -1,5 +1,5 @@ import semmle.code.cpp.dataflow.new.DataFlow -import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers +private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers /** * Flows from algorithm values to operations, specific to OpenSSL diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/CtxFlow.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/CtxFlow.qll index 9d31f4701e6..776f31cce0b 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/CtxFlow.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/CtxFlow.qll @@ -66,10 +66,8 @@ class CtxPointerArgument extends CtxPointerExpr { /** * A call returning a CtxPointerExpr. */ -private class CtxPointerReturn extends CtxPointerExpr { - CtxPointerReturn() { exists(Call c | c = this) } - - Call getCall() { result = this.(Call) } +private class CtxPointerReturn extends CtxPointerExpr instanceof Call { + Call getCall() { result = this } } /** diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/KeyFlow.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/KeyFlow.qll index bd6d4f6b295..0c000c91a4d 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/KeyFlow.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/KeyFlow.qll @@ -12,9 +12,7 @@ module OpenSSLKeyFlowConfig implements DataFlow::ConfigSig { exists(Crypto::KeyCreationOperationInstance keygen | keygen.getOutputKeyArtifact() = source) } - predicate isSink(DataFlow::Node sink) { - exists(Call call | call.(Call).getAnArgument() = sink.asExpr()) - } + predicate isSink(DataFlow::Node sink) { exists(Call call | call.getAnArgument() = sink.asExpr()) } //TODO: consideration for additional flow steps? Can a key be copied for example? } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPKeyGenOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPKeyGenOperation.qll index f42f3f7e289..de38d35b4d4 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPKeyGenOperation.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPKeyGenOperation.qll @@ -2,7 +2,6 @@ private import experimental.quantum.Language private import experimental.quantum.OpenSSL.CtxFlow private import OpenSSLOperationBase private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers -private import semmle.code.cpp.dataflow.new.DataFlow class EVPKeyGenInitialize extends EvpPrimaryAlgorithmInitializer { EVPKeyGenInitialize() { @@ -13,7 +12,8 @@ class EVPKeyGenInitialize extends EvpPrimaryAlgorithmInitializer { } /** - * The algorithm is encoded through the context argument. + * Gets the algorithm argument. + * In this case the algorithm is encoded through the context argument. * The context may be directly created from an algorithm consumer, * or from a new operation off of a prior key. Either way, * we will treat this argument as the algorithm argument. @@ -67,8 +67,8 @@ class EVPKeyGenOperation extends EvpOperation, Crypto::KeyGenerationOperationIns } /** - * Calls to `EVP_PKEY_new_mac_key` create a new MAC key. - * EVP_PKEY *EVP_PKEY_new_mac_key(int type, ENGINE *e, const unsigned char *key, int keylen); + * A call to `EVP_PKEY_new_mac_key` that creatse a new generic MAC key. + * Signature: EVP_PKEY *EVP_PKEY_new_mac_key(int type, ENGINE *e, const unsigned char *key, int keylen); */ class EvpNewMacKey extends EvpOperation, Crypto::KeyGenerationOperationInstance { DataFlow::Node keyResultNode; diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPPKeyCtxInitializer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPPKeyCtxInitializer.qll index 5f2f96e371a..5a28d6535f2 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPPKeyCtxInitializer.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPPKeyCtxInitializer.qll @@ -8,7 +8,6 @@ import cpp private import experimental.quantum.OpenSSL.CtxFlow private import OpenSSLOperations -private import OpenSSLOperationBase /** * A call to `EVP_PKEY_CTX_new` or `EVP_PKEY_CTX_new_from_pkey`. @@ -17,7 +16,7 @@ private import OpenSSLOperationBase * parameters set (e.g., `EVP_PKEY_paramgen`). * NOTE: for the case of `EVP_PKEY_paramgen`, these calls * are encoded as context passthroughs, and any operation - * will get all associated initializers for teh paramgen + * will get all associated initializers for the paramgen * at the final keygen operation automatically. */ class EVPNewKeyCtx extends EvpKeyInitializer { diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPSignatureOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPSignatureOperation.qll index a07c5715043..4205b75bf92 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPSignatureOperation.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPSignatureOperation.qll @@ -3,7 +3,6 @@ */ private import experimental.quantum.Language -private import OpenSSLOperationBase private import experimental.quantum.OpenSSL.AvcFlow private import experimental.quantum.OpenSSL.CtxFlow private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers @@ -87,7 +86,7 @@ private Expr signatureOperationOutputArg(Call call) { } /** - * Base configuration for all EVP signature operations. + * The base configuration for all EVP signature operations. */ abstract class EvpSignatureOperation extends EvpOperation, Crypto::SignatureOperationInstance { EvpSignatureOperation() { From 790a60784e1eca03a5325b566ac2df830907b77b Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Mon, 16 Jun 2025 10:56:31 -0400 Subject: [PATCH 100/150] Crypto: Acronym change from OpenSSL to OpenSsl, AVC to Avc and EVP to Evp. --- cpp/ql/lib/experimental/quantum/Language.qll | 2 +- .../AlgorithmInstances/AlgToAVCFlow.qll | 18 ++-- .../BlockAlgorithmInstance.qll | 32 +++--- .../CipherAlgorithmInstance.qll | 34 +++---- .../EllipticCurveAlgorithmInstance.qll | 22 ++--- .../HashAlgorithmInstance.qll | 32 +++--- .../KeyAgreementAlgorithmInstance.qll | 28 +++--- .../KnownAlgorithmConstants.qll | 98 +++++++++---------- .../MACAlgorithmInstance.qll | 32 +++--- .../OpenSSLAlgorithmInstanceBase.qll | 4 +- .../PaddingAlgorithmInstance.qll | 46 ++++----- .../SignatureAlgorithmInstance.qll | 34 +++---- .../CipherAlgorithmValueConsumer.qll | 12 +-- .../DirectAlgorithmValueConsumer.qll | 6 +- .../EllipticCurveAlgorithmValueConsumer.qll | 8 +- .../HashAlgorithmValueConsumer.qll | 16 +-- .../KEMAlgorithmValueConsumer.qll | 8 +- .../KeyExchangeAlgorithmValueConsumer.qll | 8 +- .../OpenSSLAlgorithmValueConsumerBase.qll | 2 +- .../PKeyAlgorithmValueConsumer.qll | 8 +- .../PaddingAlgorithmValueConsumer.qll | 12 +-- .../SignatureAlgorithmValueConsumer.qll | 8 +- .../experimental/quantum/OpenSSL/AvcFlow.qll | 4 +- .../experimental/quantum/OpenSSL/CtxFlow.qll | 6 +- .../OpenSSL/GenericSourceCandidateLiteral.qll | 16 +-- .../experimental/quantum/OpenSSL/KeyFlow.qll | 10 +- .../quantum/OpenSSL/LibraryDetector.qll | 6 +- .../experimental/quantum/OpenSSL/OpenSSL.qll | 2 +- .../OpenSSL/Operations/ECKeyGenOperation.qll | 3 +- .../OpenSSL/Operations/EVPCipherOperation.qll | 36 +++---- .../OpenSSL/Operations/EVPHashOperation.qll | 24 ++--- .../OpenSSL/Operations/EVPKeyGenOperation.qll | 8 +- .../Operations/EVPPKeyCtxInitializer.qll | 4 +- .../Operations/EVPSignatureOperation.qll | 14 +-- .../Operations/OpenSSLOperationBase.qll | 22 ++--- .../experimental/quantum/OpenSSL/Random.qll | 7 +- 36 files changed, 315 insertions(+), 317 deletions(-) diff --git a/cpp/ql/lib/experimental/quantum/Language.qll b/cpp/ql/lib/experimental/quantum/Language.qll index c9058ab9f77..168c25cdfaa 100644 --- a/cpp/ql/lib/experimental/quantum/Language.qll +++ b/cpp/ql/lib/experimental/quantum/Language.qll @@ -92,7 +92,7 @@ module GenericDataSourceFlowConfig implements DataFlow::ConfigSig { module GenericDataSourceFlow = TaintTracking::Global; private class ConstantDataSource extends Crypto::GenericConstantSourceInstance instanceof Literal { - ConstantDataSource() { this instanceof OpenSSLGenericSourceCandidateLiteral } + ConstantDataSource() { this instanceof OpenSslGenericSourceCandidateLiteral } override DataFlow::Node getOutputNode() { result.asExpr() = this } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/AlgToAVCFlow.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/AlgToAVCFlow.qll index cc540680c65..d46c2f69191 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/AlgToAVCFlow.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/AlgToAVCFlow.qll @@ -12,15 +12,15 @@ private import PaddingAlgorithmInstance * overlap with the known algorithm constants. * Padding consumers (specific padding consumers) are excluded from the set of sinks. */ -module KnownOpenSSLAlgorithmToAlgorithmValueConsumerConfig implements DataFlow::ConfigSig { +module KnownOpenSslAlgorithmToAlgorithmValueConsumerConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { - source.asExpr() instanceof KnownOpenSSLAlgorithmExpr and + source.asExpr() instanceof KnownOpenSslAlgorithmExpr and // No need to flow direct operations to AVCs - not source.asExpr() instanceof OpenSSLDirectAlgorithmOperationCall + not source.asExpr() instanceof OpenSslDirectAlgorithmOperationCall } predicate isSink(DataFlow::Node sink) { - exists(OpenSSLAlgorithmValueConsumer c | + exists(OpenSslAlgorithmValueConsumer c | c.getInputNode() = sink and // exclude padding algorithm consumers, since // these consumers take in different constant values @@ -45,11 +45,11 @@ module KnownOpenSSLAlgorithmToAlgorithmValueConsumerConfig implements DataFlow:: } } -module KnownOpenSSLAlgorithmToAlgorithmValueConsumerFlow = - DataFlow::Global; +module KnownOpenSslAlgorithmToAlgorithmValueConsumerFlow = + DataFlow::Global; module RSAPaddingAlgorithmToPaddingAlgorithmValueConsumerConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source.asExpr() instanceof OpenSSLPaddingLiteral } + predicate isSource(DataFlow::Node source) { source.asExpr() instanceof OpenSslPaddingLiteral } predicate isSink(DataFlow::Node sink) { exists(PaddingAlgorithmValueConsumer c | c.getInputNode() = sink) @@ -63,8 +63,8 @@ module RSAPaddingAlgorithmToPaddingAlgorithmValueConsumerConfig implements DataF module RSAPaddingAlgorithmToPaddingAlgorithmValueConsumerFlow = DataFlow::Global; -class OpenSSLAlgorithmAdditionalFlowStep extends AdditionalFlowInputStep { - OpenSSLAlgorithmAdditionalFlowStep() { exists(AlgorithmPassthroughCall c | c.getInNode() = this) } +class OpenSslAlgorithmAdditionalFlowStep extends AdditionalFlowInputStep { + OpenSslAlgorithmAdditionalFlowStep() { exists(AlgorithmPassthroughCall c | c.getInNode() = this) } override DataFlow::Node getOutput() { exists(AlgorithmPassthroughCall c | c.getInNode() = this and c.getOutNode() = result) diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/BlockAlgorithmInstance.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/BlockAlgorithmInstance.qll index 177bc1321f4..94b8ac64bc6 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/BlockAlgorithmInstance.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/BlockAlgorithmInstance.qll @@ -7,14 +7,14 @@ private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgor private import AlgToAVCFlow /** - * Given a `KnownOpenSSLBlockModeAlgorithmExpr`, converts this to a block family type. + * Given a `KnownOpenSslBlockModeAlgorithmExpr`, converts this to a block family type. * Does not bind if there is no mapping (no mapping to 'unknown' or 'other'). */ -predicate knownOpenSSLConstantToBlockModeFamilyType( - KnownOpenSSLBlockModeAlgorithmExpr e, Crypto::TBlockCipherModeOfOperationType type +predicate knownOpenSslConstantToBlockModeFamilyType( + KnownOpenSslBlockModeAlgorithmExpr e, Crypto::TBlockCipherModeOfOperationType type ) { exists(string name | - name = e.(KnownOpenSSLAlgorithmExpr).getNormalizedName() and + name = e.(KnownOpenSslAlgorithmExpr).getNormalizedName() and ( name.matches("CBC") and type instanceof Crypto::CBC or @@ -39,35 +39,35 @@ predicate knownOpenSSLConstantToBlockModeFamilyType( ) } -class KnownOpenSSLBlockModeConstantAlgorithmInstance extends OpenSSLAlgorithmInstance, - Crypto::ModeOfOperationAlgorithmInstance instanceof KnownOpenSSLBlockModeAlgorithmExpr +class KnownOpenSslBlockModeConstantAlgorithmInstance extends OpenSslAlgorithmInstance, + Crypto::ModeOfOperationAlgorithmInstance instanceof KnownOpenSslBlockModeAlgorithmExpr { - OpenSSLAlgorithmValueConsumer getterCall; + OpenSslAlgorithmValueConsumer getterCall; - KnownOpenSSLBlockModeConstantAlgorithmInstance() { + KnownOpenSslBlockModeConstantAlgorithmInstance() { // Two possibilities: // 1) The source is a literal and flows to a getter, then we know we have an instance - // 2) The source is a KnownOpenSSLAlgorithm is call, and we know we have an instance immediately from that + // 2) The source is a KnownOpenSslAlgorithm is call, and we know we have an instance immediately from that // Possibility 1: - this instanceof OpenSSLAlgorithmLiteral and + this instanceof OpenSslAlgorithmLiteral and exists(DataFlow::Node src, DataFlow::Node sink | // Sink is an argument to a CipherGetterCall - sink = getterCall.(OpenSSLAlgorithmValueConsumer).getInputNode() and + sink = getterCall.(OpenSslAlgorithmValueConsumer).getInputNode() and // Source is `this` src.asExpr() = this and // This traces to a getter - KnownOpenSSLAlgorithmToAlgorithmValueConsumerFlow::flow(src, sink) + KnownOpenSslAlgorithmToAlgorithmValueConsumerFlow::flow(src, sink) ) or // Possibility 2: - this instanceof OpenSSLAlgorithmCall and + this instanceof OpenSslAlgorithmCall and getterCall = this } override Crypto::TBlockCipherModeOfOperationType getModeType() { - knownOpenSSLConstantToBlockModeFamilyType(this, result) + knownOpenSslConstantToBlockModeFamilyType(this, result) or - not knownOpenSSLConstantToBlockModeFamilyType(this, _) and result = Crypto::OtherMode() + not knownOpenSslConstantToBlockModeFamilyType(this, _) and result = Crypto::OtherMode() } // NOTE: I'm not going to attempt to parse out the mode specific part, so returning @@ -78,5 +78,5 @@ class KnownOpenSSLBlockModeConstantAlgorithmInstance extends OpenSSLAlgorithmIns result = this.(Call).getTarget().getName() } - override OpenSSLAlgorithmValueConsumer getAVC() { result = getterCall } + override OpenSslAlgorithmValueConsumer getAvc() { result = getterCall } } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/CipherAlgorithmInstance.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/CipherAlgorithmInstance.qll index b1c22e76296..0418213ec06 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/CipherAlgorithmInstance.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/CipherAlgorithmInstance.qll @@ -10,14 +10,14 @@ private import AlgToAVCFlow private import BlockAlgorithmInstance /** - * Given a `KnownOpenSSLCipherAlgorithmExpr`, converts this to a cipher family type. + * Given a `KnownOpenSslCipherAlgorithmExpr`, converts this to a cipher family type. * Does not bind if there is no mapping (no mapping to 'unknown' or 'other'). */ -predicate knownOpenSSLConstantToCipherFamilyType( - KnownOpenSSLCipherAlgorithmExpr e, Crypto::KeyOpAlg::TAlgorithm type +predicate knownOpenSslConstantToCipherFamilyType( + KnownOpenSslCipherAlgorithmExpr e, Crypto::KeyOpAlg::TAlgorithm type ) { exists(string name | - name = e.(KnownOpenSSLAlgorithmExpr).getNormalizedName() and + name = e.(KnownOpenSslAlgorithmExpr).getNormalizedName() and ( name.matches("AES%") and type = KeyOpAlg::TSymmetricCipher(KeyOpAlg::AES()) or @@ -64,28 +64,28 @@ predicate knownOpenSSLConstantToCipherFamilyType( ) } -class KnownOpenSSLCipherConstantAlgorithmInstance extends OpenSSLAlgorithmInstance, - Crypto::KeyOperationAlgorithmInstance instanceof KnownOpenSSLCipherAlgorithmExpr +class KnownOpenSslCipherConstantAlgorithmInstance extends OpenSslAlgorithmInstance, + Crypto::KeyOperationAlgorithmInstance instanceof KnownOpenSslCipherAlgorithmExpr { - OpenSSLAlgorithmValueConsumer getterCall; + OpenSslAlgorithmValueConsumer getterCall; - KnownOpenSSLCipherConstantAlgorithmInstance() { + KnownOpenSslCipherConstantAlgorithmInstance() { // Two possibilities: // 1) The source is a literal and flows to a getter, then we know we have an instance - // 2) The source is a KnownOpenSSLAlgorithm is call, and we know we have an instance immediately from that + // 2) The source is a KnownOpenSslAlgorithm is call, and we know we have an instance immediately from that // Possibility 1: - this instanceof OpenSSLAlgorithmLiteral and + this instanceof OpenSslAlgorithmLiteral and exists(DataFlow::Node src, DataFlow::Node sink | // Sink is an argument to a CipherGetterCall - sink = getterCall.(OpenSSLAlgorithmValueConsumer).getInputNode() and + sink = getterCall.(OpenSslAlgorithmValueConsumer).getInputNode() and // Source is `this` src.asExpr() = this and // This traces to a getter - KnownOpenSSLAlgorithmToAlgorithmValueConsumerFlow::flow(src, sink) + KnownOpenSslAlgorithmToAlgorithmValueConsumerFlow::flow(src, sink) ) or // Possibility 2: - this instanceof OpenSSLAlgorithmCall and + this instanceof OpenSslAlgorithmCall and getterCall = this } @@ -110,17 +110,17 @@ class KnownOpenSSLCipherConstantAlgorithmInstance extends OpenSSLAlgorithmInstan } override int getKeySizeFixed() { - this.(KnownOpenSSLCipherAlgorithmExpr).getExplicitKeySize() = result + this.(KnownOpenSslCipherAlgorithmExpr).getExplicitKeySize() = result } override Crypto::KeyOpAlg::Algorithm getAlgorithmType() { - knownOpenSSLConstantToCipherFamilyType(this, result) + knownOpenSslConstantToCipherFamilyType(this, result) or - not knownOpenSSLConstantToCipherFamilyType(this, _) and + not knownOpenSslConstantToCipherFamilyType(this, _) and result = Crypto::KeyOpAlg::TUnknownKeyOperationAlgorithmType() } - override OpenSSLAlgorithmValueConsumer getAVC() { result = getterCall } + override OpenSslAlgorithmValueConsumer getAvc() { result = getterCall } override Crypto::ConsumerInputDataFlowNode getKeySizeConsumer() { // TODO: trace to any key size initializer, symmetric and asymmetric diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/EllipticCurveAlgorithmInstance.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/EllipticCurveAlgorithmInstance.qll index 985a3231710..78cba496286 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/EllipticCurveAlgorithmInstance.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/EllipticCurveAlgorithmInstance.qll @@ -6,32 +6,32 @@ private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgor private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.DirectAlgorithmValueConsumer private import AlgToAVCFlow -class KnownOpenSSLEllipticCurveConstantAlgorithmInstance extends OpenSSLAlgorithmInstance, - Crypto::EllipticCurveInstance instanceof KnownOpenSSLEllipticCurveAlgorithmExpr +class KnownOpenSslEllipticCurveConstantAlgorithmInstance extends OpenSslAlgorithmInstance, + Crypto::EllipticCurveInstance instanceof KnownOpenSslEllipticCurveAlgorithmExpr { - OpenSSLAlgorithmValueConsumer getterCall; + OpenSslAlgorithmValueConsumer getterCall; - KnownOpenSSLEllipticCurveConstantAlgorithmInstance() { + KnownOpenSslEllipticCurveConstantAlgorithmInstance() { // Two possibilities: // 1) The source is a literal and flows to a getter, then we know we have an instance - // 2) The source is a KnownOpenSSLAlgorithm is call, and we know we have an instance immediately from that + // 2) The source is a KnownOpenSslAlgorithm is call, and we know we have an instance immediately from that // Possibility 1: - this instanceof OpenSSLAlgorithmLiteral and + this instanceof OpenSslAlgorithmLiteral and exists(DataFlow::Node src, DataFlow::Node sink | // Sink is an argument to a CipherGetterCall sink = getterCall.getInputNode() and // Source is `this` src.asExpr() = this and // This traces to a getter - KnownOpenSSLAlgorithmToAlgorithmValueConsumerFlow::flow(src, sink) + KnownOpenSslAlgorithmToAlgorithmValueConsumerFlow::flow(src, sink) ) or // Possibility 2: - this instanceof OpenSSLAlgorithmCall and + this instanceof OpenSslAlgorithmCall and getterCall = this } - override OpenSSLAlgorithmValueConsumer getAVC() { result = getterCall } + override OpenSslAlgorithmValueConsumer getAvc() { result = getterCall } override string getRawEllipticCurveName() { result = this.(Literal).getValue().toString() @@ -44,11 +44,11 @@ class KnownOpenSSLEllipticCurveConstantAlgorithmInstance extends OpenSSLAlgorith } override string getParsedEllipticCurveName() { - result = this.(KnownOpenSSLAlgorithmExpr).getNormalizedName() + result = this.(KnownOpenSslAlgorithmExpr).getNormalizedName() } override int getKeySize() { - Crypto::ellipticCurveNameToKeySizeAndFamilyMapping(this.(KnownOpenSSLAlgorithmExpr) + Crypto::ellipticCurveNameToKeySizeAndFamilyMapping(this.(KnownOpenSslAlgorithmExpr) .getNormalizedName(), result, _) } } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/HashAlgorithmInstance.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/HashAlgorithmInstance.qll index 672fb5d06e1..691ad6849aa 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/HashAlgorithmInstance.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/HashAlgorithmInstance.qll @@ -5,11 +5,11 @@ private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgor private import experimental.quantum.OpenSSL.AlgorithmInstances.OpenSSLAlgorithmInstanceBase private import AlgToAVCFlow -predicate knownOpenSSLConstantToHashFamilyType( - KnownOpenSSLHashAlgorithmExpr e, Crypto::THashType type +predicate knownOpenSslConstantToHashFamilyType( + KnownOpenSslHashAlgorithmExpr e, Crypto::THashType type ) { exists(string name | - name = e.(KnownOpenSSLAlgorithmExpr).getNormalizedName() and + name = e.(KnownOpenSslAlgorithmExpr).getNormalizedName() and ( name.matches("BLAKE2B") and type instanceof Crypto::BLAKE2B or @@ -44,37 +44,37 @@ predicate knownOpenSSLConstantToHashFamilyType( ) } -class KnownOpenSSLHashConstantAlgorithmInstance extends OpenSSLAlgorithmInstance, - Crypto::HashAlgorithmInstance instanceof KnownOpenSSLHashAlgorithmExpr +class KnownOpenSslHashConstantAlgorithmInstance extends OpenSslAlgorithmInstance, + Crypto::HashAlgorithmInstance instanceof KnownOpenSslHashAlgorithmExpr { - OpenSSLAlgorithmValueConsumer getterCall; + OpenSslAlgorithmValueConsumer getterCall; - KnownOpenSSLHashConstantAlgorithmInstance() { + KnownOpenSslHashConstantAlgorithmInstance() { // Two possibilities: // 1) The source is a literal and flows to a getter, then we know we have an instance - // 2) The source is a KnownOpenSSLAlgorithm is call, and we know we have an instance immediately from that + // 2) The source is a KnownOpenSslAlgorithm is call, and we know we have an instance immediately from that // Possibility 1: - this instanceof OpenSSLAlgorithmLiteral and + this instanceof OpenSslAlgorithmLiteral and exists(DataFlow::Node src, DataFlow::Node sink | // Sink is an argument to a CipherGetterCall - sink = getterCall.(OpenSSLAlgorithmValueConsumer).getInputNode() and + sink = getterCall.(OpenSslAlgorithmValueConsumer).getInputNode() and // Source is `this` src.asExpr() = this and // This traces to a getter - KnownOpenSSLAlgorithmToAlgorithmValueConsumerFlow::flow(src, sink) + KnownOpenSslAlgorithmToAlgorithmValueConsumerFlow::flow(src, sink) ) or // Possibility 2: - this instanceof OpenSSLAlgorithmCall and + this instanceof OpenSslAlgorithmCall and getterCall = this } - override OpenSSLAlgorithmValueConsumer getAVC() { result = getterCall } + override OpenSslAlgorithmValueConsumer getAvc() { result = getterCall } override Crypto::THashType getHashFamily() { - knownOpenSSLConstantToHashFamilyType(this, result) + knownOpenSslConstantToHashFamilyType(this, result) or - not knownOpenSSLConstantToHashFamilyType(this, _) and result = Crypto::OtherHashType() + not knownOpenSslConstantToHashFamilyType(this, _) and result = Crypto::OtherHashType() } override string getRawHashAlgorithmName() { @@ -84,6 +84,6 @@ class KnownOpenSSLHashConstantAlgorithmInstance extends OpenSSLAlgorithmInstance } override int getFixedDigestLength() { - this.(KnownOpenSSLHashAlgorithmExpr).getExplicitDigestLength() = result + this.(KnownOpenSslHashAlgorithmExpr).getExplicitDigestLength() = result } } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KeyAgreementAlgorithmInstance.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KeyAgreementAlgorithmInstance.qll index 7210f7077c7..1addda3a9ef 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KeyAgreementAlgorithmInstance.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KeyAgreementAlgorithmInstance.qll @@ -5,11 +5,11 @@ private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgor private import experimental.quantum.OpenSSL.AlgorithmInstances.OpenSSLAlgorithmInstanceBase private import AlgToAVCFlow -predicate knownOpenSSLConstantToKeyAgreementFamilyType( - KnownOpenSSLKeyAgreementAlgorithmExpr e, Crypto::TKeyAgreementType type +predicate knownOpenSslConstantToKeyAgreementFamilyType( + KnownOpenSslKeyAgreementAlgorithmExpr e, Crypto::TKeyAgreementType type ) { exists(string name | - name = e.(KnownOpenSSLAlgorithmExpr).getNormalizedName() and + name = e.(KnownOpenSslAlgorithmExpr).getNormalizedName() and ( name = "ECDH" and type = Crypto::ECDH() or @@ -22,37 +22,37 @@ predicate knownOpenSSLConstantToKeyAgreementFamilyType( ) } -class KnownOpenSSLKeyAgreementConstantAlgorithmInstance extends OpenSSLAlgorithmInstance, - Crypto::KeyAgreementAlgorithmInstance instanceof KnownOpenSSLKeyAgreementAlgorithmExpr +class KnownOpenSslKeyAgreementConstantAlgorithmInstance extends OpenSslAlgorithmInstance, + Crypto::KeyAgreementAlgorithmInstance instanceof KnownOpenSslKeyAgreementAlgorithmExpr { - OpenSSLAlgorithmValueConsumer getterCall; + OpenSslAlgorithmValueConsumer getterCall; - KnownOpenSSLKeyAgreementConstantAlgorithmInstance() { + KnownOpenSslKeyAgreementConstantAlgorithmInstance() { // Two possibilities: // 1) The source is a literal and flows to a getter, then we know we have an instance - // 2) The source is a KnownOpenSSLAlgorithm is call, and we know we have an instance immediately from that + // 2) The source is a KnownOpenSslAlgorithm is call, and we know we have an instance immediately from that // Possibility 1: - this instanceof OpenSSLAlgorithmLiteral and + this instanceof OpenSslAlgorithmLiteral and exists(DataFlow::Node src, DataFlow::Node sink | // Sink is an argument to a CipherGetterCall sink = getterCall.getInputNode() and // Source is `this` src.asExpr() = this and // This traces to a getter - KnownOpenSSLAlgorithmToAlgorithmValueConsumerFlow::flow(src, sink) + KnownOpenSslAlgorithmToAlgorithmValueConsumerFlow::flow(src, sink) ) or // Possibility 2: - this instanceof OpenSSLAlgorithmCall and + this instanceof OpenSslAlgorithmCall and getterCall = this } - override OpenSSLAlgorithmValueConsumer getAVC() { result = getterCall } + override OpenSslAlgorithmValueConsumer getAvc() { result = getterCall } override Crypto::TKeyAgreementType getKeyAgreementType() { - knownOpenSSLConstantToKeyAgreementFamilyType(this, result) + knownOpenSslConstantToKeyAgreementFamilyType(this, result) or - not knownOpenSSLConstantToKeyAgreementFamilyType(this, _) and + not knownOpenSslConstantToKeyAgreementFamilyType(this, _) and result = Crypto::OtherKeyAgreementType() } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KnownAlgorithmConstants.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KnownAlgorithmConstants.qll index 436f1dca380..15731086ffe 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KnownAlgorithmConstants.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KnownAlgorithmConstants.qll @@ -2,28 +2,28 @@ import cpp import experimental.quantum.OpenSSL.GenericSourceCandidateLiteral predicate resolveAlgorithmFromExpr( - KnownOpenSSLAlgorithmExpr e, string normalizedName, string algType + KnownOpenSslAlgorithmExpr e, string normalizedName, string algType ) { normalizedName = e.getNormalizedName() and algType = e.getAlgType() } /** - * An expression that resolves to a known OpenSSL algorithm constant. - * This can be a literal, a call to a known OpenSSL algorithm constant getter, + * An expression that resolves to a known OpenSsl algorithm constant. + * This can be a literal, a call to a known OpenSsl algorithm constant getter, * or a call to an operation that directly operates on a known algorithm. */ -abstract class KnownOpenSSLAlgorithmExpr extends Expr { +abstract class KnownOpenSslAlgorithmExpr extends Expr { abstract string getNormalizedName(); abstract string getAlgType(); } -class OpenSSLAlgorithmLiteral extends KnownOpenSSLAlgorithmExpr instanceof Literal { +class OpenSslAlgorithmLiteral extends KnownOpenSslAlgorithmExpr instanceof Literal { string normalizedName; string algType; - OpenSSLAlgorithmLiteral() { resolveAlgorithmFromLiteral(this, normalizedName, algType) } + OpenSslAlgorithmLiteral() { resolveAlgorithmFromLiteral(this, normalizedName, algType) } override string getNormalizedName() { result = normalizedName } @@ -31,14 +31,14 @@ class OpenSSLAlgorithmLiteral extends KnownOpenSSLAlgorithmExpr instanceof Liter } /** - * A call to either an OpenSSL algorithm constant 'getter', e.g., EVP_MD5() + * A call to either an OpenSsl algorithm constant 'getter', e.g., EVP_MD5() * or call to an operation that directly operates on a known algorithm, e.g., AES_encrypt */ -abstract class OpenSSLAlgorithmCall extends KnownOpenSSLAlgorithmExpr instanceof Call { } +abstract class OpenSslAlgorithmCall extends KnownOpenSslAlgorithmExpr instanceof Call { } /** * A call to a 'direct algorithm getter', e.g., EVP_MD5() - * This approach to fetching algorithms was used in OpenSSL 1.0.2. + * This approach to fetching algorithms was used in OpenSsl 1.0.2. * The strategy for resolving these calls is to parse the target name * and resolve the name as though it were a known literal. * There are a few exceptions where the name doesn't directly match the @@ -48,18 +48,18 @@ abstract class OpenSSLAlgorithmCall extends KnownOpenSSLAlgorithmExpr instanceof * or * alias = "dss1" and target = "dsaWithSHA1" */ -class OpenSSLDirectAlgorithmFetchCall extends OpenSSLAlgorithmCall { +class OpenSslDirectAlgorithmFetchCall extends OpenSslAlgorithmCall { string normalizedName; string algType; - OpenSSLDirectAlgorithmFetchCall() { + OpenSslDirectAlgorithmFetchCall() { //ASSUMPTION: these cases will have operands for the call not exists(this.(Call).getAnArgument()) and exists(string name, string parsedTargetName | parsedTargetName = this.(Call).getTarget().getName().replaceAll("EVP_", "").toLowerCase().replaceAll("_", "-") and name = resolveAlgorithmAlias(parsedTargetName) and - knownOpenSSLAlgorithmLiteral(name, _, normalizedName, algType) + knownOpenSslAlgorithmLiteral(name, _, normalizedName, algType) ) } @@ -69,22 +69,22 @@ class OpenSSLDirectAlgorithmFetchCall extends OpenSSLAlgorithmCall { } /** - * A call to an OpenSSL operation that directly operates on a known algorithm. + * A call to an OpenSsl operation that directly operates on a known algorithm. * An algorithm construct is not generated for these calls, rather, the operation * is directly performed, and the algorithm is inferred by the operation itself. */ -class OpenSSLDirectAlgorithmOperationCall extends OpenSSLAlgorithmCall { +class OpenSslDirectAlgorithmOperationCall extends OpenSslAlgorithmCall { string normalizedName; string algType; - OpenSSLDirectAlgorithmOperationCall() { + OpenSslDirectAlgorithmOperationCall() { //TODO: this set will have to be exhaustive, and for each operation //further modeling will be necessary for each case to map the APIs operands //ASSUMPTION: these cases must have operands for the call exists(this.(Call).getAnArgument()) and //TODO: Each case would be enumerated here. Will likely need an exhaustive mapping much like // for known constants. - knownOpenSSLAlgorithmOperationCall(this, normalizedName, algType) + knownOpenSslAlgorithmOperationCall(this, normalizedName, algType) } override string getNormalizedName() { result = normalizedName } @@ -92,25 +92,25 @@ class OpenSSLDirectAlgorithmOperationCall extends OpenSSLAlgorithmCall { override string getAlgType() { result = algType } } -class KnownOpenSSLCipherAlgorithmExpr extends Expr instanceof KnownOpenSSLAlgorithmExpr { +class KnownOpenSslCipherAlgorithmExpr extends Expr instanceof KnownOpenSslAlgorithmExpr { string algType; - KnownOpenSSLCipherAlgorithmExpr() { - algType = this.(KnownOpenSSLAlgorithmExpr).getAlgType() and + KnownOpenSslCipherAlgorithmExpr() { + algType = this.(KnownOpenSslAlgorithmExpr).getAlgType() and algType.matches("%ENCRYPTION") } int getExplicitKeySize() { exists(string name | - name = this.(KnownOpenSSLAlgorithmExpr).getNormalizedName() and + name = this.(KnownOpenSslAlgorithmExpr).getNormalizedName() and resolveAlgorithmFromExpr(this, name, algType) and result = name.regexpCapture(".*-(\\d*)", 1).toInt() ) } } -class KnownOpenSSLPaddingAlgorithmExpr extends Expr instanceof KnownOpenSSLAlgorithmExpr { - KnownOpenSSLPaddingAlgorithmExpr() { +class KnownOpenSslPaddingAlgorithmExpr extends Expr instanceof KnownOpenSslAlgorithmExpr { + KnownOpenSslPaddingAlgorithmExpr() { exists(string algType | resolveAlgorithmFromExpr(this, _, algType) and algType.matches("%PADDING") @@ -118,59 +118,59 @@ class KnownOpenSSLPaddingAlgorithmExpr extends Expr instanceof KnownOpenSSLAlgor } } -class KnownOpenSSLBlockModeAlgorithmExpr extends Expr instanceof KnownOpenSSLAlgorithmExpr { - KnownOpenSSLBlockModeAlgorithmExpr() { resolveAlgorithmFromExpr(this, _, "BLOCK_MODE") } +class KnownOpenSslBlockModeAlgorithmExpr extends Expr instanceof KnownOpenSslAlgorithmExpr { + KnownOpenSslBlockModeAlgorithmExpr() { resolveAlgorithmFromExpr(this, _, "BLOCK_MODE") } } -class KnownOpenSSLHashAlgorithmExpr extends Expr instanceof KnownOpenSSLAlgorithmExpr { - KnownOpenSSLHashAlgorithmExpr() { resolveAlgorithmFromExpr(this, _, "HASH") } +class KnownOpenSslHashAlgorithmExpr extends Expr instanceof KnownOpenSslAlgorithmExpr { + KnownOpenSslHashAlgorithmExpr() { resolveAlgorithmFromExpr(this, _, "HASH") } int getExplicitDigestLength() { exists(string name | - name = this.(KnownOpenSSLAlgorithmExpr).getNormalizedName() and + name = this.(KnownOpenSslAlgorithmExpr).getNormalizedName() and resolveAlgorithmFromExpr(this, name, "HASH") and result = name.regexpCapture(".*-(\\d*)$", 1).toInt() ) } } -class KnownOpenSSLMACAlgorithmExpr extends Expr instanceof KnownOpenSSLAlgorithmExpr { - KnownOpenSSLMACAlgorithmExpr() { resolveAlgorithmFromExpr(this, _, "MAC") } +class KnownOpenSslMACAlgorithmExpr extends Expr instanceof KnownOpenSslAlgorithmExpr { + KnownOpenSslMACAlgorithmExpr() { resolveAlgorithmFromExpr(this, _, "MAC") } } -class KnownOpenSSLHMACAlgorithmExpr extends Expr instanceof KnownOpenSSLMACAlgorithmExpr { - KnownOpenSSLHMACAlgorithmExpr() { resolveAlgorithmFromExpr(this, "HMAC", "MAC") } +class KnownOpenSslHMACAlgorithmExpr extends Expr instanceof KnownOpenSslMACAlgorithmExpr { + KnownOpenSslHMACAlgorithmExpr() { resolveAlgorithmFromExpr(this, "HMAC", "MAC") } /** * Gets an explicit cipher algorithm for this MAC algorithm. * This occurs when the MAC specifies the algorithm at the same time "HMAC-SHA-256" */ - KnownOpenSSLHashAlgorithmExpr getExplicitHashAlgorithm() { result = this } + KnownOpenSslHashAlgorithmExpr getExplicitHashAlgorithm() { result = this } } -class KnownOpenSSLCMACAlgorithmExpr extends Expr instanceof KnownOpenSSLMACAlgorithmExpr { - KnownOpenSSLCMACAlgorithmExpr() { resolveAlgorithmFromExpr(this, "CMAC", "MAC") } +class KnownOpenSslCMACAlgorithmExpr extends Expr instanceof KnownOpenSslMACAlgorithmExpr { + KnownOpenSslCMACAlgorithmExpr() { resolveAlgorithmFromExpr(this, "CMAC", "MAC") } /** * Gets an explicit cipher algorithm for this MAC algorithm. * This occurs when the MAC specifies the algorithm at the same time "HMAC-SHA-256" */ - KnownOpenSSLCipherAlgorithmExpr getExplicitCipherAlgorithm() { result = this } + KnownOpenSslCipherAlgorithmExpr getExplicitCipherAlgorithm() { result = this } } -class KnownOpenSSLEllipticCurveAlgorithmExpr extends Expr instanceof KnownOpenSSLAlgorithmExpr { - KnownOpenSSLEllipticCurveAlgorithmExpr() { resolveAlgorithmFromExpr(this, _, "ELLIPTIC_CURVE") } +class KnownOpenSslEllipticCurveAlgorithmExpr extends Expr instanceof KnownOpenSslAlgorithmExpr { + KnownOpenSslEllipticCurveAlgorithmExpr() { resolveAlgorithmFromExpr(this, _, "ELLIPTIC_CURVE") } } -class KnownOpenSSLSignatureAlgorithmExpr extends Expr instanceof KnownOpenSSLAlgorithmExpr { - KnownOpenSSLSignatureAlgorithmExpr() { resolveAlgorithmFromExpr(this, _, "SIGNATURE") } +class KnownOpenSslSignatureAlgorithmExpr extends Expr instanceof KnownOpenSslAlgorithmExpr { + KnownOpenSslSignatureAlgorithmExpr() { resolveAlgorithmFromExpr(this, _, "SIGNATURE") } } -class KnownOpenSSLKeyAgreementAlgorithmExpr extends Expr instanceof KnownOpenSSLAlgorithmExpr { - KnownOpenSSLKeyAgreementAlgorithmExpr() { resolveAlgorithmFromExpr(this, _, "KEY_AGREEMENT") } +class KnownOpenSslKeyAgreementAlgorithmExpr extends Expr instanceof KnownOpenSslAlgorithmExpr { + KnownOpenSslKeyAgreementAlgorithmExpr() { resolveAlgorithmFromExpr(this, _, "KEY_AGREEMENT") } } -predicate knownOpenSSLAlgorithmOperationCall(Call c, string normalized, string algType) { +predicate knownOpenSslAlgorithmOperationCall(Call c, string normalized, string algType) { c.getTarget().getName() in ["EVP_RSA_gen", "RSA_generate_key_ex", "RSA_generate_key", "RSA_new"] and normalized = "RSA" and algType = "ASYMMETRIC_ENCRYPTION" @@ -182,13 +182,13 @@ predicate knownOpenSSLAlgorithmOperationCall(Call c, string normalized, string a * If this predicate does not hold, then `e` can be interpreted as being of `UNKNOWN` type. */ predicate resolveAlgorithmFromLiteral( - OpenSSLGenericSourceCandidateLiteral e, string normalized, string algType + OpenSslGenericSourceCandidateLiteral e, string normalized, string algType ) { - knownOpenSSLAlgorithmLiteral(_, e.getValue().toInt(), normalized, algType) + knownOpenSslAlgorithmLiteral(_, e.getValue().toInt(), normalized, algType) or exists(string name | name = resolveAlgorithmAlias(e.getValue()) and - knownOpenSSLAlgorithmLiteral(name, _, normalized, algType) + knownOpenSslAlgorithmLiteral(name, _, normalized, algType) ) } @@ -199,7 +199,7 @@ string resolveAlgorithmAlias(string name) { result = getAlgorithmAlias(lower) or // or the name is itself a known algorithm - knownOpenSSLAlgorithmLiteral(lower, _, _, _) and result = lower + knownOpenSslAlgorithmLiteral(lower, _, _, _) and result = lower ) } @@ -222,9 +222,9 @@ predicate customAliases(string target, string alias) { } /** - * A hard-coded mapping of known algorithm aliases in OpenSSL. + * A hard-coded mapping of known algorithm aliases in OpenSsl. * This was derived by applying the same kind of logic foun din `customAliases` to the - * OpenSSL code base directly. + * OpenSsl code base directly. * * The `target` and `alias` are converted to lowercase to be of a standard form. */ @@ -331,7 +331,7 @@ predicate defaultAliases(string target, string alias) { * `normalized` is the normalized name of the algorithm (e.g., "AES128" for "aes-128-cbc") * `algType` is the type of algorithm (e.g., "SYMMETRIC_ENCRYPTION") */ -predicate knownOpenSSLAlgorithmLiteral(string name, int nid, string normalized, string algType) { +predicate knownOpenSslAlgorithmLiteral(string name, int nid, string normalized, string algType) { name = "dhKeyAgreement" and nid = 28 and normalized = "DH" and algType = "KEY_AGREEMENT" or name = "x9.42 dh" and nid = 29 and normalized = "DH" and algType = "KEY_AGREEMENT" diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/MACAlgorithmInstance.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/MACAlgorithmInstance.qll index 12d43affd0e..bdb0ef05fd3 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/MACAlgorithmInstance.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/MACAlgorithmInstance.qll @@ -6,32 +6,32 @@ private import experimental.quantum.OpenSSL.AlgorithmInstances.OpenSSLAlgorithmI private import experimental.quantum.OpenSSL.Operations.OpenSSLOperations private import AlgToAVCFlow -class KnownOpenSSLMACConstantAlgorithmInstance extends OpenSSLAlgorithmInstance, - Crypto::MACAlgorithmInstance instanceof KnownOpenSSLMACAlgorithmExpr +class KnownOpenSslMACConstantAlgorithmInstance extends OpenSslAlgorithmInstance, + Crypto::MACAlgorithmInstance instanceof KnownOpenSslMACAlgorithmExpr { - OpenSSLAlgorithmValueConsumer getterCall; + OpenSslAlgorithmValueConsumer getterCall; - KnownOpenSSLMACConstantAlgorithmInstance() { + KnownOpenSslMACConstantAlgorithmInstance() { // Two possibilities: // 1) The source is a literal and flows to a getter, then we know we have an instance - // 2) The source is a KnownOpenSSLAlgorithm is call, and we know we have an instance immediately from that + // 2) The source is a KnownOpenSslAlgorithm is call, and we know we have an instance immediately from that // Possibility 1: - this instanceof OpenSSLAlgorithmLiteral and + this instanceof OpenSslAlgorithmLiteral and exists(DataFlow::Node src, DataFlow::Node sink | // Sink is an argument to a CipherGetterCall sink = getterCall.getInputNode() and // Source is `this` src.asExpr() = this and // This traces to a getter - KnownOpenSSLAlgorithmToAlgorithmValueConsumerFlow::flow(src, sink) + KnownOpenSslAlgorithmToAlgorithmValueConsumerFlow::flow(src, sink) ) or // Possibility 2: - this instanceof OpenSSLAlgorithmCall and + this instanceof OpenSslAlgorithmCall and getterCall = this } - override OpenSSLAlgorithmValueConsumer getAVC() { result = getterCall } + override OpenSslAlgorithmValueConsumer getAvc() { result = getterCall } override string getRawMACAlgorithmName() { result = this.(Literal).getValue().toString() @@ -40,27 +40,27 @@ class KnownOpenSSLMACConstantAlgorithmInstance extends OpenSSLAlgorithmInstance, } override Crypto::TMACType getMACType() { - this instanceof KnownOpenSSLHMACAlgorithmExpr and result instanceof Crypto::THMAC + this instanceof KnownOpenSslHMACAlgorithmExpr and result instanceof Crypto::THMAC or - this instanceof KnownOpenSSLCMACAlgorithmExpr and result instanceof Crypto::TCMAC + this instanceof KnownOpenSslCMACAlgorithmExpr and result instanceof Crypto::TCMAC } } -class KnownOpenSSLHMACConstantAlgorithmInstance extends Crypto::HMACAlgorithmInstance, - KnownOpenSSLMACConstantAlgorithmInstance +class KnownOpenSslHMACConstantAlgorithmInstance extends Crypto::HMACAlgorithmInstance, + KnownOpenSslMACConstantAlgorithmInstance { override Crypto::AlgorithmValueConsumer getHashAlgorithmValueConsumer() { - if exists(this.(KnownOpenSSLHMACAlgorithmExpr).getExplicitHashAlgorithm()) + if exists(this.(KnownOpenSslHMACAlgorithmExpr).getExplicitHashAlgorithm()) then // ASSUMPTION: if there is an explicit hash algorithm, it is already modeled // and we can simply grab that model's AVC - exists(OpenSSLAlgorithmInstance inst | inst.getAVC() = result and inst = this) + exists(OpenSslAlgorithmInstance inst | inst.getAvc() = result and inst = this) else // ASSUMPTION: If no explicit algorithm is given, then it is assumed to be configured by // a signature operation exists(Crypto::SignatureOperationInstance s | s.getHashAlgorithmValueConsumer() = result and - s.getAnAlgorithmValueConsumer() = this.getAVC() + s.getAnAlgorithmValueConsumer() = this.getAvc() ) } } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/OpenSSLAlgorithmInstanceBase.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/OpenSSLAlgorithmInstanceBase.qll index b05ee9180b9..0352cfa5063 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/OpenSSLAlgorithmInstanceBase.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/OpenSSLAlgorithmInstanceBase.qll @@ -1,6 +1,6 @@ private import experimental.quantum.Language private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumerBase -abstract class OpenSSLAlgorithmInstance extends Crypto::AlgorithmInstance { - abstract OpenSSLAlgorithmValueConsumer getAVC(); +abstract class OpenSslAlgorithmInstance extends Crypto::AlgorithmInstance { + abstract OpenSslAlgorithmValueConsumer getAvc(); } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/PaddingAlgorithmInstance.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/PaddingAlgorithmInstance.qll index de1f9ee00c1..4f963cd43cd 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/PaddingAlgorithmInstance.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/PaddingAlgorithmInstance.qll @@ -17,21 +17,21 @@ private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgor * # define RSA_PKCS1_WITH_TLS_PADDING 7 * # define RSA_PKCS1_NO_IMPLICIT_REJECT_PADDING 8 */ -class OpenSSLPaddingLiteral extends Literal { +class OpenSslPaddingLiteral extends Literal { // TODO: we can be more specific about where the literal is in a larger expression // to avoid literals that are clealy not representing an algorithm, e.g., array indices. - OpenSSLPaddingLiteral() { this.getValue().toInt() in [0, 1, 3, 4, 5, 6, 7, 8] } + OpenSslPaddingLiteral() { this.getValue().toInt() in [0, 1, 3, 4, 5, 6, 7, 8] } } /** - * Given a `KnownOpenSSLPaddingAlgorithmExpr`, converts this to a padding family type. + * Given a `KnownOpenSslPaddingAlgorithmExpr`, converts this to a padding family type. * Does not bind if there is no mapping (no mapping to 'unknown' or 'other'). */ -predicate knownOpenSSLConstantToPaddingFamilyType( - KnownOpenSSLPaddingAlgorithmExpr e, Crypto::TPaddingType type +predicate knownOpenSslConstantToPaddingFamilyType( + KnownOpenSslPaddingAlgorithmExpr e, Crypto::TPaddingType type ) { exists(string name | - name = e.(KnownOpenSSLAlgorithmExpr).getNormalizedName() and + name = e.(KnownOpenSslAlgorithmExpr).getNormalizedName() and ( name.matches("OAEP") and type = Crypto::OAEP() or @@ -44,44 +44,44 @@ predicate knownOpenSSLConstantToPaddingFamilyType( ) } -//abstract class OpenSSLPaddingAlgorithmInstance extends OpenSSLAlgorithmInstance, Crypto::PaddingAlgorithmInstance{} +//abstract class OpenSslPaddingAlgorithmInstance extends OpenSslAlgorithmInstance, Crypto::PaddingAlgorithmInstance{} // TODO: need to alter this to include known padding constants which don't have the // same mechanics as those with known nids -class KnownOpenSSLPaddingConstantAlgorithmInstance extends OpenSSLAlgorithmInstance, +class KnownOpenSslPaddingConstantAlgorithmInstance extends OpenSslAlgorithmInstance, Crypto::PaddingAlgorithmInstance instanceof Expr { - OpenSSLAlgorithmValueConsumer getterCall; + OpenSslAlgorithmValueConsumer getterCall; boolean isPaddingSpecificConsumer; - KnownOpenSSLPaddingConstantAlgorithmInstance() { + KnownOpenSslPaddingConstantAlgorithmInstance() { // three possibilities: // 1) The source is a 'typical' literal and flows to a getter, then we know we have an instance - // 2) The source is a KnownOpenSSLAlgorithm is call, and we know we have an instance immediately from that + // 2) The source is a KnownOpenSslAlgorithm is call, and we know we have an instance immediately from that // 3) the source is a padding-specific literal flowing to a padding-specific consumer // Possibility 1: - this instanceof OpenSSLAlgorithmLiteral and - this instanceof KnownOpenSSLPaddingAlgorithmExpr and + this instanceof OpenSslAlgorithmLiteral and + this instanceof KnownOpenSslPaddingAlgorithmExpr and exists(DataFlow::Node src, DataFlow::Node sink | // Sink is an argument to a CipherGetterCall - sink = getterCall.(OpenSSLAlgorithmValueConsumer).getInputNode() and + sink = getterCall.(OpenSslAlgorithmValueConsumer).getInputNode() and // Source is `this` src.asExpr() = this and // This traces to a getter - KnownOpenSSLAlgorithmToAlgorithmValueConsumerFlow::flow(src, sink) and + KnownOpenSslAlgorithmToAlgorithmValueConsumerFlow::flow(src, sink) and isPaddingSpecificConsumer = false ) or // Possibility 2: - this instanceof OpenSSLAlgorithmCall and + this instanceof OpenSslAlgorithmCall and getterCall = this and - this instanceof KnownOpenSSLPaddingAlgorithmExpr and + this instanceof KnownOpenSslPaddingAlgorithmExpr and isPaddingSpecificConsumer = false or // Possibility 3: padding-specific literal - this instanceof OpenSSLPaddingLiteral and + this instanceof OpenSslPaddingLiteral and exists(DataFlow::Node src, DataFlow::Node sink | // Sink is an argument to a CipherGetterCall - sink = getterCall.(OpenSSLAlgorithmValueConsumer).getInputNode() and + sink = getterCall.(OpenSslAlgorithmValueConsumer).getInputNode() and // Source is `this` src.asExpr() = this and // This traces to a padding-specific consumer @@ -96,7 +96,7 @@ class KnownOpenSSLPaddingConstantAlgorithmInstance extends OpenSSLAlgorithmInsta result = this.(Call).getTarget().getName() } - override OpenSSLAlgorithmValueConsumer getAVC() { result = getterCall } + override OpenSslAlgorithmValueConsumer getAvc() { result = getterCall } Crypto::TPaddingType getKnownPaddingType() { this.(Literal).getValue().toInt() in [1, 7, 8] and result = Crypto::PKCS1_v1_5() @@ -119,7 +119,7 @@ class KnownOpenSSLPaddingConstantAlgorithmInstance extends OpenSSLAlgorithmInsta ) or isPaddingSpecificConsumer = false and - knownOpenSSLConstantToPaddingFamilyType(this, result) + knownOpenSslConstantToPaddingFamilyType(this, result) } } @@ -127,7 +127,7 @@ class KnownOpenSSLPaddingConstantAlgorithmInstance extends OpenSSLAlgorithmInsta // // not the same as 'typical' constants found in the set of known algorithm constants // // they do not have an NID // // TODO: what about setting the padding directly? -// class KnownRSAPaddingConstant extends OpenSSLPaddingAlgorithmInstance, Crypto::PaddingAlgorithmInstance instanceof Literal +// class KnownRSAPaddingConstant extends OpenSslPaddingAlgorithmInstance, Crypto::PaddingAlgorithmInstance instanceof Literal // { // KnownRSAPaddingConstant() { // // from rsa.h in openssl: @@ -162,7 +162,7 @@ class KnownOpenSSLPaddingConstantAlgorithmInstance extends OpenSSLAlgorithmInsta // } // } class OAEPPaddingAlgorithmInstance extends Crypto::OAEPPaddingAlgorithmInstance, - KnownOpenSSLPaddingConstantAlgorithmInstance + KnownOpenSslPaddingConstantAlgorithmInstance { OAEPPaddingAlgorithmInstance() { this.(Crypto::PaddingAlgorithmInstance).getPaddingType() = Crypto::OAEP() diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/SignatureAlgorithmInstance.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/SignatureAlgorithmInstance.qll index d8754dbdc6e..afd67410c0a 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/SignatureAlgorithmInstance.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/SignatureAlgorithmInstance.qll @@ -10,11 +10,11 @@ private import AlgToAVCFlow /** * Gets the signature algorithm type based on the normalized algorithm name. */ -private predicate knownOpenSSLConstantToSignatureFamilyType( - KnownOpenSSLSignatureAlgorithmExpr e, Crypto::KeyOpAlg::TAlgorithm type +private predicate knownOpenSslConstantToSignatureFamilyType( + KnownOpenSslSignatureAlgorithmExpr e, Crypto::KeyOpAlg::TAlgorithm type ) { exists(string name | - name = e.(KnownOpenSSLAlgorithmExpr).getNormalizedName() and + name = e.(KnownOpenSslAlgorithmExpr).getNormalizedName() and ( name.matches("RSA%") and type = KeyOpAlg::TAsymmetricCipher(KeyOpAlg::RSA()) or @@ -30,30 +30,30 @@ private predicate knownOpenSSLConstantToSignatureFamilyType( } /** - * A signature algorithm instance derived from an OpenSSL constant. + * A signature algorithm instance derived from an OpenSsl constant. */ -class KnownOpenSSLSignatureConstantAlgorithmInstance extends OpenSSLAlgorithmInstance, - Crypto::KeyOperationAlgorithmInstance instanceof KnownOpenSSLSignatureAlgorithmExpr +class KnownOpenSslSignatureConstantAlgorithmInstance extends OpenSslAlgorithmInstance, + Crypto::KeyOperationAlgorithmInstance instanceof KnownOpenSslSignatureAlgorithmExpr { - OpenSSLAlgorithmValueConsumer getterCall; + OpenSslAlgorithmValueConsumer getterCall; - KnownOpenSSLSignatureConstantAlgorithmInstance() { + KnownOpenSslSignatureConstantAlgorithmInstance() { // Two possibilities: // 1) The source is a literal and flows to a getter, then we know we have an instance - // 2) The source is a KnownOpenSSLAlgorithm call, and we know we have an instance immediately from that + // 2) The source is a KnownOpenSslAlgorithm call, and we know we have an instance immediately from that // Possibility 1: - this instanceof OpenSSLAlgorithmLiteral and + this instanceof OpenSslAlgorithmLiteral and exists(DataFlow::Node src, DataFlow::Node sink | // Sink is an argument to a signature getter call sink = getterCall.getInputNode() and // Source is `this` src.asExpr() = this and // This traces to a getter - KnownOpenSSLAlgorithmToAlgorithmValueConsumerFlow::flow(src, sink) + KnownOpenSslAlgorithmToAlgorithmValueConsumerFlow::flow(src, sink) ) or // Possibility 2: - this instanceof OpenSSLAlgorithmCall and + this instanceof OpenSslAlgorithmCall and getterCall = this } @@ -68,19 +68,19 @@ class KnownOpenSSLSignatureConstantAlgorithmInstance extends OpenSSLAlgorithmIns } override int getKeySizeFixed() { - // TODO: use ellipticCurveNameToKeySizeAndFamilyMapping or KnownOpenSSLEllipticCurveConstantAlgorithmInstance - // TODO: maybe add getExplicitKeySize to KnownOpenSSLSignatureAlgorithmExpr and use it here + // TODO: use ellipticCurveNameToKeySizeAndFamilyMapping or KnownOpenSslEllipticCurveConstantAlgorithmInstance + // TODO: maybe add getExplicitKeySize to KnownOpenSslSignatureAlgorithmExpr and use it here none() } override KeyOpAlg::Algorithm getAlgorithmType() { - knownOpenSSLConstantToSignatureFamilyType(this, result) + knownOpenSslConstantToSignatureFamilyType(this, result) or - not knownOpenSSLConstantToSignatureFamilyType(this, _) and + not knownOpenSslConstantToSignatureFamilyType(this, _) and result = KeyOpAlg::TSignature(KeyOpAlg::OtherSignatureAlgorithmType()) } - override OpenSSLAlgorithmValueConsumer getAVC() { result = getterCall } + override OpenSslAlgorithmValueConsumer getAvc() { result = getterCall } override Crypto::ConsumerInputDataFlowNode getKeySizeConsumer() { // TODO: trace to any key size initializer diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/CipherAlgorithmValueConsumer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/CipherAlgorithmValueConsumer.qll index 8aa5d946bae..b06e55c0817 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/CipherAlgorithmValueConsumer.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/CipherAlgorithmValueConsumer.qll @@ -4,14 +4,14 @@ private import experimental.quantum.OpenSSL.AlgorithmInstances.KnownAlgorithmCon private import experimental.quantum.OpenSSL.AlgorithmInstances.OpenSSLAlgorithmInstanceBase private import OpenSSLAlgorithmValueConsumerBase -abstract class CipherAlgorithmValueConsumer extends OpenSSLAlgorithmValueConsumer { } +abstract class CipherAlgorithmValueConsumer extends OpenSslAlgorithmValueConsumer { } // https://www.openssl.org/docs/manmaster/man3/EVP_CIPHER_fetch.html -class EVPCipherAlgorithmValueConsumer extends CipherAlgorithmValueConsumer { +class EvpCipherAlgorithmValueConsumer extends CipherAlgorithmValueConsumer { DataFlow::Node valueArgNode; DataFlow::Node resultNode; - EVPCipherAlgorithmValueConsumer() { + EvpCipherAlgorithmValueConsumer() { resultNode.asExpr() = this and ( this.(Call).getTarget().getName() in [ @@ -30,8 +30,8 @@ class EVPCipherAlgorithmValueConsumer extends CipherAlgorithmValueConsumer { // override DataFlow::Node getInputNode() { result = valueArgNode } override Crypto::AlgorithmInstance getAKnownAlgorithmSource() { - exists(OpenSSLAlgorithmInstance i | i.getAVC() = this and result = i) - //TODO: As a potential alternative, for OpenSSL only, add a generic source node for literals and only create flow (flowsTo) to - // OpenSSL AVCs... the unknown literal sources would have to be any literals not in the known set. + exists(OpenSslAlgorithmInstance i | i.getAvc() = this and result = i) + //TODO: As a potential alternative, for OpenSsl only, add a generic source node for literals and only create flow (flowsTo) to + // OpenSsl AVCs... the unknown literal sources would have to be any literals not in the known set. } } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/DirectAlgorithmValueConsumer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/DirectAlgorithmValueConsumer.qll index 6dede7679e9..a4a65ead63d 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/DirectAlgorithmValueConsumer.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/DirectAlgorithmValueConsumer.qll @@ -10,7 +10,7 @@ private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgor * Also includes operations directly using an algorithm * like AES_encrypt(). */ -class DirectAlgorithmValueConsumer extends OpenSSLAlgorithmValueConsumer instanceof OpenSSLAlgorithmCall +class DirectAlgorithmValueConsumer extends OpenSslAlgorithmValueConsumer instanceof OpenSslAlgorithmCall { /** * These cases take in no explicit value (the value is implicit) @@ -22,9 +22,9 @@ class DirectAlgorithmValueConsumer extends OpenSSLAlgorithmValueConsumer instanc * created as a result of this call. */ override DataFlow::Node getResultNode() { - this instanceof OpenSSLDirectAlgorithmFetchCall and + this instanceof OpenSslDirectAlgorithmFetchCall and result.asExpr() = this - // NOTE: if instanceof OpenSSLDirectAlgorithmOperationCall then there is no algorithm generated + // NOTE: if instanceof OpenSslDirectAlgorithmOperationCall then there is no algorithm generated // the algorithm is directly used } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/EllipticCurveAlgorithmValueConsumer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/EllipticCurveAlgorithmValueConsumer.qll index 4bff4cb05db..daf6baf2f03 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/EllipticCurveAlgorithmValueConsumer.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/EllipticCurveAlgorithmValueConsumer.qll @@ -4,14 +4,14 @@ private import experimental.quantum.OpenSSL.AlgorithmInstances.KnownAlgorithmCon private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumerBase private import experimental.quantum.OpenSSL.AlgorithmInstances.OpenSSLAlgorithmInstances -abstract class EllipticCurveValueConsumer extends OpenSSLAlgorithmValueConsumer { } +abstract class EllipticCurveValueConsumer extends OpenSslAlgorithmValueConsumer { } //https://docs.openssl.org/3.0/man3/EC_KEY_new/#name -class EVPEllipticCurveAlgorithmConsumer extends EllipticCurveValueConsumer { +class EvpEllipticCurveAlgorithmConsumer extends EllipticCurveValueConsumer { DataFlow::Node valueArgNode; DataFlow::Node resultNode; - EVPEllipticCurveAlgorithmConsumer() { + EvpEllipticCurveAlgorithmConsumer() { resultNode.asExpr() = this.(Call) and // in all cases the result is the return ( this.(Call).getTarget().getName() in ["EVP_EC_gen", "EC_KEY_new_by_curve_name"] and @@ -25,7 +25,7 @@ class EVPEllipticCurveAlgorithmConsumer extends EllipticCurveValueConsumer { } override Crypto::AlgorithmInstance getAKnownAlgorithmSource() { - exists(OpenSSLAlgorithmInstance i | i.getAVC() = this and result = i) + exists(OpenSslAlgorithmInstance i | i.getAvc() = this and result = i) } override DataFlow::Node getResultNode() { result = resultNode } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/HashAlgorithmValueConsumer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/HashAlgorithmValueConsumer.qll index bbd00fc0810..a03114b276d 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/HashAlgorithmValueConsumer.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/HashAlgorithmValueConsumer.qll @@ -4,20 +4,20 @@ private import semmle.code.cpp.dataflow.new.DataFlow private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumerBase private import experimental.quantum.OpenSSL.AlgorithmInstances.OpenSSLAlgorithmInstances -abstract class HashAlgorithmValueConsumer extends OpenSSLAlgorithmValueConsumer { } +abstract class HashAlgorithmValueConsumer extends OpenSslAlgorithmValueConsumer { } /** * EVP_Q_Digest directly consumes algorithm constant values */ -class EVP_Q_Digest_Algorithm_Consumer extends HashAlgorithmValueConsumer { - EVP_Q_Digest_Algorithm_Consumer() { this.(Call).getTarget().getName() = "EVP_Q_digest" } +class Evp_Q_Digest_Algorithm_Consumer extends HashAlgorithmValueConsumer { + Evp_Q_Digest_Algorithm_Consumer() { this.(Call).getTarget().getName() = "EVP_Q_digest" } override Crypto::ConsumerInputDataFlowNode getInputNode() { result.asExpr() = this.(Call).getArgument(1) } override Crypto::AlgorithmInstance getAKnownAlgorithmSource() { - exists(OpenSSLAlgorithmInstance i | i.getAVC() = this and result = i) + exists(OpenSslAlgorithmInstance i | i.getAvc() = this and result = i) } override DataFlow::Node getResultNode() { @@ -50,7 +50,7 @@ class EvpPkeySetCtxALgorithmConsumer extends HashAlgorithmValueConsumer { override Crypto::ConsumerInputDataFlowNode getInputNode() { result = valueArgNode } override Crypto::AlgorithmInstance getAKnownAlgorithmSource() { - exists(OpenSSLAlgorithmInstance i | i.getAVC() = this and result = i) + exists(OpenSslAlgorithmInstance i | i.getAvc() = this and result = i) } } @@ -59,11 +59,11 @@ class EvpPkeySetCtxALgorithmConsumer extends HashAlgorithmValueConsumer { * https://docs.openssl.org/3.0/man3/EVP_DigestInit/#synopsis * https://docs.openssl.org/3.0/man3/EVP_DigestSignInit/#name */ -class EVPDigestAlgorithmValueConsumer extends HashAlgorithmValueConsumer { +class EvpDigestAlgorithmValueConsumer extends HashAlgorithmValueConsumer { DataFlow::Node valueArgNode; DataFlow::Node resultNode; - EVPDigestAlgorithmValueConsumer() { + EvpDigestAlgorithmValueConsumer() { resultNode.asExpr() = this and ( this.(Call).getTarget().getName() in [ @@ -84,6 +84,6 @@ class EVPDigestAlgorithmValueConsumer extends HashAlgorithmValueConsumer { override Crypto::ConsumerInputDataFlowNode getInputNode() { result = valueArgNode } override Crypto::AlgorithmInstance getAKnownAlgorithmSource() { - exists(OpenSSLAlgorithmInstance i | i.getAVC() = this and result = i) + exists(OpenSslAlgorithmInstance i | i.getAvc() = this and result = i) } } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/KEMAlgorithmValueConsumer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/KEMAlgorithmValueConsumer.qll index e66beccd301..3de9ce68529 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/KEMAlgorithmValueConsumer.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/KEMAlgorithmValueConsumer.qll @@ -4,13 +4,13 @@ private import semmle.code.cpp.dataflow.new.DataFlow private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumerBase private import experimental.quantum.OpenSSL.AlgorithmInstances.OpenSSLAlgorithmInstances -abstract class KEMAlgorithmValueConsumer extends OpenSSLAlgorithmValueConsumer { } +abstract class KEMAlgorithmValueConsumer extends OpenSslAlgorithmValueConsumer { } -class EVPKEMAlgorithmValueConsumer extends KEMAlgorithmValueConsumer { +class EvpKEMAlgorithmValueConsumer extends KEMAlgorithmValueConsumer { DataFlow::Node valueArgNode; DataFlow::Node resultNode; - EVPKEMAlgorithmValueConsumer() { + EvpKEMAlgorithmValueConsumer() { resultNode.asExpr() = this and ( this.(Call).getTarget().getName() = "EVP_KEM_fetch" and @@ -23,6 +23,6 @@ class EVPKEMAlgorithmValueConsumer extends KEMAlgorithmValueConsumer { override Crypto::ConsumerInputDataFlowNode getInputNode() { result = valueArgNode } override Crypto::AlgorithmInstance getAKnownAlgorithmSource() { - exists(OpenSSLAlgorithmInstance i | i.getAVC() = this and result = i) + exists(OpenSslAlgorithmInstance i | i.getAvc() = this and result = i) } } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/KeyExchangeAlgorithmValueConsumer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/KeyExchangeAlgorithmValueConsumer.qll index b5f24ec875a..88c36a37eb5 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/KeyExchangeAlgorithmValueConsumer.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/KeyExchangeAlgorithmValueConsumer.qll @@ -4,13 +4,13 @@ private import semmle.code.cpp.dataflow.new.DataFlow private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumerBase private import experimental.quantum.OpenSSL.AlgorithmInstances.OpenSSLAlgorithmInstances -abstract class KeyExchangeAlgorithmValueConsumer extends OpenSSLAlgorithmValueConsumer { } +abstract class KeyExchangeAlgorithmValueConsumer extends OpenSslAlgorithmValueConsumer { } -class EVPKeyExchangeAlgorithmValueConsumer extends KeyExchangeAlgorithmValueConsumer { +class EvpKeyExchangeAlgorithmValueConsumer extends KeyExchangeAlgorithmValueConsumer { DataFlow::Node valueArgNode; DataFlow::Node resultNode; - EVPKeyExchangeAlgorithmValueConsumer() { + EvpKeyExchangeAlgorithmValueConsumer() { resultNode.asExpr() = this and ( this.(Call).getTarget().getName() = "EVP_KEYEXCH_fetch" and @@ -23,6 +23,6 @@ class EVPKeyExchangeAlgorithmValueConsumer extends KeyExchangeAlgorithmValueCons override Crypto::ConsumerInputDataFlowNode getInputNode() { result = valueArgNode } override Crypto::AlgorithmInstance getAKnownAlgorithmSource() { - exists(OpenSSLAlgorithmInstance i | i.getAVC() = this and result = i) + exists(OpenSslAlgorithmInstance i | i.getAvc() = this and result = i) } } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/OpenSSLAlgorithmValueConsumerBase.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/OpenSSLAlgorithmValueConsumerBase.qll index b0cdee1f8f5..292e554c0fb 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/OpenSSLAlgorithmValueConsumerBase.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/OpenSSLAlgorithmValueConsumerBase.qll @@ -1,6 +1,6 @@ private import experimental.quantum.Language -abstract class OpenSSLAlgorithmValueConsumer extends Crypto::AlgorithmValueConsumer instanceof Call { +abstract class OpenSslAlgorithmValueConsumer extends Crypto::AlgorithmValueConsumer instanceof Call { /** * Returns the node representing the resulting algorithm */ diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/PKeyAlgorithmValueConsumer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/PKeyAlgorithmValueConsumer.qll index 3321dcbcb1b..f7c8fef3794 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/PKeyAlgorithmValueConsumer.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/PKeyAlgorithmValueConsumer.qll @@ -4,13 +4,13 @@ private import experimental.quantum.OpenSSL.AlgorithmInstances.KnownAlgorithmCon private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumerBase private import experimental.quantum.OpenSSL.AlgorithmInstances.OpenSSLAlgorithmInstances -abstract class PKeyValueConsumer extends OpenSSLAlgorithmValueConsumer { } +abstract class PKeyValueConsumer extends OpenSslAlgorithmValueConsumer { } -class EVPPKeyAlgorithmConsumer extends PKeyValueConsumer { +class EvpPKeyAlgorithmConsumer extends PKeyValueConsumer { DataFlow::Node valueArgNode; DataFlow::Node resultNode; - EVPPKeyAlgorithmConsumer() { + EvpPKeyAlgorithmConsumer() { resultNode.asExpr() = this.(Call) and // in all cases the result is the return ( // NOTE: some of these consumers are themselves key gen operations, @@ -47,7 +47,7 @@ class EVPPKeyAlgorithmConsumer extends PKeyValueConsumer { } override Crypto::AlgorithmInstance getAKnownAlgorithmSource() { - exists(OpenSSLAlgorithmInstance i | i.getAVC() = this and result = i) + exists(OpenSslAlgorithmInstance i | i.getAvc() = this and result = i) } override DataFlow::Node getResultNode() { result = resultNode } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/PaddingAlgorithmValueConsumer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/PaddingAlgorithmValueConsumer.qll index c60918519c8..efa953a84a7 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/PaddingAlgorithmValueConsumer.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/PaddingAlgorithmValueConsumer.qll @@ -4,16 +4,16 @@ private import experimental.quantum.OpenSSL.AlgorithmInstances.KnownAlgorithmCon private import experimental.quantum.OpenSSL.AlgorithmInstances.OpenSSLAlgorithmInstanceBase private import OpenSSLAlgorithmValueConsumerBase -abstract class PaddingAlgorithmValueConsumer extends OpenSSLAlgorithmValueConsumer { } +abstract class PaddingAlgorithmValueConsumer extends OpenSslAlgorithmValueConsumer { } // https://docs.openssl.org/master/man7/EVP_ASYM_CIPHER-RSA/#rsa-asymmetric-cipher-parameters // TODO: need to handle setting padding through EVP_PKEY_CTX_set_params, where modes like "OSSL_PKEY_RSA_PAD_MODE_OAEP" // are set. -class EVP_PKEY_CTX_set_rsa_padding_AlgorithmValueConsumer extends PaddingAlgorithmValueConsumer { +class Evp_PKEY_CTX_set_rsa_padding_AlgorithmValueConsumer extends PaddingAlgorithmValueConsumer { DataFlow::Node valueArgNode; DataFlow::Node resultNode; - EVP_PKEY_CTX_set_rsa_padding_AlgorithmValueConsumer() { + Evp_PKEY_CTX_set_rsa_padding_AlgorithmValueConsumer() { resultNode.asExpr() = this and this.(Call).getTarget().getName() = "EVP_PKEY_CTX_set_rsa_padding" and valueArgNode.asExpr() = this.(Call).getArgument(1) @@ -25,8 +25,8 @@ class EVP_PKEY_CTX_set_rsa_padding_AlgorithmValueConsumer extends PaddingAlgorit // override DataFlow::Node getInputNode() { result = valueArgNode } override Crypto::AlgorithmInstance getAKnownAlgorithmSource() { - exists(OpenSSLAlgorithmInstance i | i.getAVC() = this and result = i) - //TODO: As a potential alternative, for OpenSSL only, add a generic source node for literals and only create flow (flowsTo) to - // OpenSSL AVCs... the unknown literal sources would have to be any literals not in the known set. + exists(OpenSslAlgorithmInstance i | i.getAvc() = this and result = i) + //TODO: As a potential alternative, for OpenSsl only, add a generic source node for literals and only create flow (flowsTo) to + // OpenSsl AVCs... the unknown literal sources would have to be any literals not in the known set. } } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/SignatureAlgorithmValueConsumer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/SignatureAlgorithmValueConsumer.qll index 077457e90cc..c6f3fb8959c 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/SignatureAlgorithmValueConsumer.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/SignatureAlgorithmValueConsumer.qll @@ -5,13 +5,13 @@ private import experimental.quantum.OpenSSL.AlgorithmInstances.OpenSSLAlgorithmI private import OpenSSLAlgorithmValueConsumerBase private import experimental.quantum.OpenSSL.LibraryDetector -abstract class SignatureAlgorithmValueConsumer extends OpenSSLAlgorithmValueConsumer { } +abstract class SignatureAlgorithmValueConsumer extends OpenSslAlgorithmValueConsumer { } -class EVPSignatureAlgorithmValueConsumer extends SignatureAlgorithmValueConsumer { +class EvpSignatureAlgorithmValueConsumer extends SignatureAlgorithmValueConsumer { DataFlow::Node valueArgNode; DataFlow::Node resultNode; - EVPSignatureAlgorithmValueConsumer() { + EvpSignatureAlgorithmValueConsumer() { resultNode.asExpr() = this and ( // EVP_SIGNATURE @@ -27,6 +27,6 @@ class EVPSignatureAlgorithmValueConsumer extends SignatureAlgorithmValueConsumer override Crypto::ConsumerInputDataFlowNode getInputNode() { result = valueArgNode } override Crypto::AlgorithmInstance getAKnownAlgorithmSource() { - exists(OpenSSLAlgorithmInstance i | i.getAVC() = this and result = i) + exists(OpenSslAlgorithmInstance i | i.getAvc() = this and result = i) } } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AvcFlow.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AvcFlow.qll index eb46c9a8e6e..10aa145804b 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AvcFlow.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AvcFlow.qll @@ -2,11 +2,11 @@ import semmle.code.cpp.dataflow.new.DataFlow private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers /** - * Flows from algorithm values to operations, specific to OpenSSL + * Flows from algorithm values to operations, specific to OpenSsl */ module AvcToCallArgConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { - exists(OpenSSLAlgorithmValueConsumer c | c.getResultNode() = source) + exists(OpenSslAlgorithmValueConsumer c | c.getResultNode() = source) } /** diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/CtxFlow.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/CtxFlow.qll index 776f31cce0b..63ec3e18132 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/CtxFlow.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/CtxFlow.qll @@ -193,7 +193,7 @@ class CtxPointerSource extends CtxPointerExpr { /** * Flow from any CtxPointerSource to other CtxPointerSource. */ -module OpenSSLCtxSourceToSourceFlowConfig implements DataFlow::ConfigSig { +module OpenSslCtxSourceToSourceFlowConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { exists(CtxPointerSource s | s.asNode() = source) } predicate isSink(DataFlow::Node sink) { exists(CtxPointerSource s | s.asNode() = sink) } @@ -207,14 +207,14 @@ module OpenSSLCtxSourceToSourceFlowConfig implements DataFlow::ConfigSig { } } -module OpenSSLCtxSourceToArgumentFlow = DataFlow::Global; +module OpenSslCtxSourceToArgumentFlow = DataFlow::Global; /** * Holds if there is a context flow from the source to the sink. */ predicate ctxSrcToSrcFlow(CtxPointerSource source, CtxPointerSource sink) { exists(DataFlow::Node a, DataFlow::Node b | - OpenSSLCtxSourceToArgumentFlow::flow(a, b) and + OpenSslCtxSourceToArgumentFlow::flow(a, b) and a = source.asNode() and b = sink.asNode() ) diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/GenericSourceCandidateLiteral.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/GenericSourceCandidateLiteral.qll index 8841adc17b6..a5d6d23f245 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/GenericSourceCandidateLiteral.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/GenericSourceCandidateLiteral.qll @@ -14,9 +14,9 @@ private class IntLiteral extends Literal { /** * Holds if a StringLiteral could conceivably be used in some way for cryptography. * Note: this predicate should only consider restrictions with respect to strings only. - * General restrictions are in the OpenSSLGenericSourceCandidateLiteral class. + * General restrictions are in the OpenSslGenericSourceCandidateLiteral class. */ -private predicate isOpenSSLStringLiteralGenericSourceCandidate(StringLiteral s) { +private predicate isOpenSslStringLiteralGenericSourceCandidate(StringLiteral s) { // 'EC' is a constant that may be used where typical algorithms are specified, // but EC specifically means set up a default curve container, that will later be //specified explicitly (or if not a default) curve is used. @@ -49,9 +49,9 @@ private predicate isOpenSSLStringLiteralGenericSourceCandidate(StringLiteral s) /** * Holds if a StringLiteral could conceivably be used in some way for cryptography. * Note: this predicate should only consider restrictions with respect to integers only. - * General restrictions are in the OpenSSLGenericSourceCandidateLiteral class. + * General restrictions are in the OpenSslGenericSourceCandidateLiteral class. */ -private predicate isOpenSSLIntLiteralGenericSourceCandidate(IntLiteral l) { +private predicate isOpenSslIntLiteralGenericSourceCandidate(IntLiteral l) { // Ignore integer values of 0, commonly referring to NULL only (no known algorithm 0) l.getValue().toInt() != 0 and // ASSUMPTION, no negative numbers are allowed @@ -102,11 +102,11 @@ private predicate isOpenSSLIntLiteralGenericSourceCandidate(IntLiteral l) { * "AES" may be a legitimate algorithm literal, but the literal will not be used for an operation directly * since it is in a equality comparison, hence this case would also be filtered. */ -class OpenSSLGenericSourceCandidateLiteral extends Literal { - OpenSSLGenericSourceCandidateLiteral() { +class OpenSslGenericSourceCandidateLiteral extends Literal { + OpenSslGenericSourceCandidateLiteral() { ( - isOpenSSLIntLiteralGenericSourceCandidate(this) or - isOpenSSLStringLiteralGenericSourceCandidate(this) + isOpenSslIntLiteralGenericSourceCandidate(this) or + isOpenSslStringLiteralGenericSourceCandidate(this) ) and // ********* General filters beyond what is filtered for strings and ints ********* // An algorithm literal in a switch case will not be directly applied to an operation. diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/KeyFlow.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/KeyFlow.qll index 0c000c91a4d..7e30866a67a 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/KeyFlow.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/KeyFlow.qll @@ -5,10 +5,10 @@ private import experimental.quantum.Language /** * Flow from key creation to key used in a call */ -module OpenSSLKeyFlowConfig implements DataFlow::ConfigSig { +module OpenSslKeyFlowConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { - // NOTE/ASSUMPTION: it is assumed the operation is also an OpenSSLOperation. - // All operations modeled for openssl should be modeled as OpenSSLOperation. + // NOTE/ASSUMPTION: it is assumed the operation is also an OpenSslOperation. + // All operations modeled for openssl should be modeled as OpenSslOperation. exists(Crypto::KeyCreationOperationInstance keygen | keygen.getOutputKeyArtifact() = source) } @@ -16,11 +16,11 @@ module OpenSSLKeyFlowConfig implements DataFlow::ConfigSig { //TODO: consideration for additional flow steps? Can a key be copied for example? } -module OpenSSLKeyFlow = TaintTracking::Global; +module OpenSslKeyFlow = TaintTracking::Global; Crypto::KeyCreationOperationInstance getSourceKeyCreationInstanceFromArg(Expr arg) { exists(DataFlow::Node src, DataFlow::Node sink | - OpenSSLKeyFlow::flow(src, sink) and + OpenSslKeyFlow::flow(src, sink) and result.getOutputKeyArtifact() = src and sink.asExpr() = arg ) diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/LibraryDetector.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/LibraryDetector.qll index 5ff02cd9519..c7e56fab1be 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/LibraryDetector.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/LibraryDetector.qll @@ -1,7 +1,7 @@ import cpp -predicate isPossibleOpenSSLFunction(Function f) { - isPossibleOpenSSLLocation(f.getADeclarationLocation()) +predicate isPossibleOpenSslFunction(Function f) { + isPossibleOpenSslLocation(f.getADeclarationLocation()) } -predicate isPossibleOpenSSLLocation(Location l) { l.toString().toLowerCase().matches("%openssl%") } +predicate isPossibleOpenSslLocation(Location l) { l.toString().toLowerCase().matches("%openssl%") } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/OpenSSL.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/OpenSSL.qll index 10ceec43e5c..706cac65f8c 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/OpenSSL.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/OpenSSL.qll @@ -1,4 +1,4 @@ -module OpenSSLModel { +module OpenSslModel { import AlgorithmInstances.OpenSSLAlgorithmInstances import AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers import Operations.OpenSSLOperations diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/ECKeyGenOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/ECKeyGenOperation.qll index 40103569cac..65eebae585b 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/ECKeyGenOperation.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/ECKeyGenOperation.qll @@ -1,10 +1,9 @@ private import experimental.quantum.Language -private import experimental.quantum.OpenSSL.CtxFlow as CTXFlow private import OpenSSLOperationBase private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers private import semmle.code.cpp.dataflow.new.DataFlow -class ECKeyGenOperation extends OpenSSLOperation, Crypto::KeyGenerationOperationInstance { +class ECKeyGenOperation extends OpenSslOperation, Crypto::KeyGenerationOperationInstance { ECKeyGenOperation() { this.(Call).getTarget().getName() = "EC_KEY_generate_key" } override Expr getAlgorithmArg() { result = this.(Call).getArgument(0) } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherOperation.qll index cedd2edc8c4..ae5c1c44c45 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherOperation.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherOperation.qll @@ -4,7 +4,7 @@ private import OpenSSLOperationBase private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers // TODO: need to add key consumer -abstract class EVP_Cipher_Initializer extends EvpKeyOperationSubtypeInitializer, +abstract class Evp_Cipher_Initializer extends EvpKeyOperationSubtypeInitializer, EvpPrimaryAlgorithmInitializer, EvpKeyInitializer, EvpIVInitializer { override CtxPointerSource getContext() { result = this.(Call).getArgument(0) } @@ -12,7 +12,7 @@ abstract class EVP_Cipher_Initializer extends EvpKeyOperationSubtypeInitializer, override Expr getAlgorithmArg() { result = this.(Call).getArgument(1) } } -abstract class EVP_EX_Initializer extends EVP_Cipher_Initializer { +abstract class Evp_EX_Initializer extends Evp_Cipher_Initializer { override Expr getKeyArg() { // Null key indicates the key is not actually set // This pattern can occur during a multi-step initialization @@ -30,13 +30,13 @@ abstract class EVP_EX_Initializer extends EVP_Cipher_Initializer { } } -abstract class EVP_EX2_Initializer extends EVP_Cipher_Initializer { +abstract class Evp_EX2_Initializer extends Evp_Cipher_Initializer { override Expr getKeyArg() { result = this.(Call).getArgument(2) } override Expr getIVArg() { result = this.(Call).getArgument(3) } } -class EvpCipherEXInitCall extends EVP_EX_Initializer { +class EvpCipherEXInitCall extends Evp_EX_Initializer { EvpCipherEXInitCall() { this.(Call).getTarget().getName() in [ "EVP_EncryptInit_ex", "EVP_DecryptInit_ex", "EVP_CipherInit_ex" @@ -56,8 +56,8 @@ class EvpCipherEXInitCall extends EVP_EX_Initializer { // else // if this.(Call).getTarget().getName().toLowerCase().matches("%decrypt%") // then result instanceof Crypto::TDecryptMode -class EVP_Cipher_EX2_or_Simple_Init_Call extends EVP_EX2_Initializer { - EVP_Cipher_EX2_or_Simple_Init_Call() { +class Evp_Cipher_EX2_or_Simple_Init_Call extends Evp_EX2_Initializer { + Evp_Cipher_EX2_or_Simple_Init_Call() { this.(Call).getTarget().getName() in [ "EVP_EncryptInit_ex2", "EVP_DecryptInit_ex2", "EVP_CipherInit_ex2", "EVP_EncryptInit", "EVP_DecryptInit", "EVP_CipherInit" @@ -70,14 +70,14 @@ class EVP_Cipher_EX2_or_Simple_Init_Call extends EVP_EX2_Initializer { } } -class EVP_CipherInit_SKEY_Call extends EVP_EX2_Initializer { - EVP_CipherInit_SKEY_Call() { this.(Call).getTarget().getName() in ["EVP_CipherInit_SKEY"] } +class Evp_CipherInit_SKEY_Call extends Evp_EX2_Initializer { + Evp_CipherInit_SKEY_Call() { this.(Call).getTarget().getName() in ["EVP_CipherInit_SKEY"] } override Expr getKeyOperationSubtypeArg() { result = this.(Call).getArgument(5) } } -class EVP_Cipher_Update_Call extends EvpUpdate { - EVP_Cipher_Update_Call() { +class Evp_Cipher_Update_Call extends EvpUpdate { + Evp_Cipher_Update_Call() { this.(Call).getTarget().getName() in [ "EVP_EncryptUpdate", "EVP_DecryptUpdate", "EVP_CipherUpdate" ] @@ -94,7 +94,7 @@ class EVP_Cipher_Update_Call extends EvpUpdate { * see: https://docs.openssl.org/master/man3/EVP_EncryptInit/#synopsis * Base configuration for all EVP cipher operations. */ -abstract class EVP_Cipher_Operation extends EvpOperation, Crypto::KeyOperationInstance { +abstract class Evp_Cipher_Operation extends EvpOperation, Crypto::KeyOperationInstance { override Expr getOutputArg() { result = this.(Call).getArgument(1) } override Crypto::KeyOperationSubtype getKeyOperationSubtype() { @@ -126,8 +126,8 @@ abstract class EVP_Cipher_Operation extends EvpOperation, Crypto::KeyOperationIn } } -class EVP_Cipher_Call extends EvpOperation, EVP_Cipher_Operation { - EVP_Cipher_Call() { this.(Call).getTarget().getName() = "EVP_Cipher" } +class Evp_Cipher_Call extends EvpOperation, Evp_Cipher_Operation { + Evp_Cipher_Call() { this.(Call).getTarget().getName() = "EVP_Cipher" } override Expr getInputArg() { result = this.(Call).getArgument(2) } @@ -138,8 +138,8 @@ class EVP_Cipher_Call extends EvpOperation, EVP_Cipher_Operation { override CtxPointerSource getContext() { result = this.(Call).getArgument(0) } } -class EVP_Cipher_Final_Call extends EVPFinal, EVP_Cipher_Operation { - EVP_Cipher_Final_Call() { +class Evp_Cipher_Final_Call extends EvpFinal, Evp_Cipher_Operation { + Evp_Cipher_Final_Call() { this.(Call).getTarget().getName() in [ "EVP_EncryptFinal_ex", "EVP_DecryptFinal_ex", "EVP_CipherFinal_ex", "EVP_EncryptFinal", "EVP_DecryptFinal", "EVP_CipherFinal" @@ -150,9 +150,9 @@ class EVP_Cipher_Final_Call extends EVPFinal, EVP_Cipher_Operation { * Output is both from update calls and from the final call. */ override Expr getOutputArg() { - result = EVPFinal.super.getOutputArg() + result = EvpFinal.super.getOutputArg() or - result = EVP_Cipher_Operation.super.getOutputArg() + result = Evp_Cipher_Operation.super.getOutputArg() } override Expr getAlgorithmArg() { @@ -166,7 +166,7 @@ class EVP_Cipher_Final_Call extends EVPFinal, EVP_Cipher_Operation { * https://docs.openssl.org/3.2/man3/EVP_PKEY_decrypt/ * https://docs.openssl.org/3.2/man3/EVP_PKEY_encrypt */ -class Evp_PKey_Cipher_Operation extends EVP_Cipher_Operation { +class Evp_PKey_Cipher_Operation extends Evp_Cipher_Operation { Evp_PKey_Cipher_Operation() { this.(Call).getTarget().getName() in ["EVP_PKEY_encrypt", "EVP_PKEY_decrypt"] } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashOperation.qll index d1d8670cc7c..b99c5432a1a 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashOperation.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashOperation.qll @@ -7,8 +7,8 @@ private import experimental.quantum.OpenSSL.CtxFlow private import OpenSSLOperationBase private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers -class EVP_DigestInit_Variant_Calls extends EvpPrimaryAlgorithmInitializer { - EVP_DigestInit_Variant_Calls() { +class Evp_DigestInit_Variant_Calls extends EvpPrimaryAlgorithmInitializer { + Evp_DigestInit_Variant_Calls() { this.(Call).getTarget().getName() in [ "EVP_DigestInit", "EVP_DigestInit_ex", "EVP_DigestInit_ex2" ] @@ -19,8 +19,8 @@ class EVP_DigestInit_Variant_Calls extends EvpPrimaryAlgorithmInitializer { override CtxPointerSource getContext() { result = this.(Call).getArgument(0) } } -class EVP_Digest_Update_Call extends EvpUpdate { - EVP_Digest_Update_Call() { this.(Call).getTarget().getName() = "EVP_DigestUpdate" } +class Evp_Digest_Update_Call extends EvpUpdate { + Evp_Digest_Update_Call() { this.(Call).getTarget().getName() = "EVP_DigestUpdate" } override Expr getInputArg() { result = this.(Call).getArgument(1) } @@ -28,8 +28,8 @@ class EVP_Digest_Update_Call extends EvpUpdate { } //https://docs.openssl.org/3.0/man3/EVP_DigestInit/#synopsis -class EVP_Q_Digest_Operation extends EvpOperation, Crypto::HashOperationInstance { - EVP_Q_Digest_Operation() { this.(Call).getTarget().getName() = "EVP_Q_digest" } +class Evp_Q_Digest_Operation extends EvpOperation, Crypto::HashOperationInstance { + Evp_Q_Digest_Operation() { this.(Call).getTarget().getName() = "EVP_Q_digest" } override Expr getAlgorithmArg() { result = this.(Call).getArgument(1) } @@ -54,8 +54,8 @@ class EVP_Q_Digest_Operation extends EvpOperation, Crypto::HashOperationInstance override CtxPointerSource getContext() { result = this.(Call).getArgument(0) } } -class EVP_Digest_Operation extends EvpOperation, Crypto::HashOperationInstance { - EVP_Digest_Operation() { this.(Call).getTarget().getName() = "EVP_Digest" } +class Evp_Digest_Operation extends EvpOperation, Crypto::HashOperationInstance { + Evp_Digest_Operation() { this.(Call).getTarget().getName() = "EVP_Digest" } // There is no context argument for this function override CtxPointerSource getContext() { none() } @@ -81,8 +81,8 @@ class EVP_Digest_Operation extends EvpOperation, Crypto::HashOperationInstance { } } -class EVP_Digest_Final_Call extends EVPFinal, Crypto::HashOperationInstance { - EVP_Digest_Final_Call() { +class Evp_Digest_Final_Call extends EvpFinal, Crypto::HashOperationInstance { + Evp_Digest_Final_Call() { this.(Call).getTarget().getName() in [ "EVP_DigestFinal", "EVP_DigestFinal_ex", "EVP_DigestFinalXOF" ] @@ -93,11 +93,11 @@ class EVP_Digest_Final_Call extends EVPFinal, Crypto::HashOperationInstance { override Expr getOutputArg() { result = this.(Call).getArgument(1) } override Crypto::ArtifactOutputDataFlowNode getOutputArtifact() { - result = EVPFinal.super.getOutputArtifact() + result = EvpFinal.super.getOutputArtifact() } override Crypto::ConsumerInputDataFlowNode getInputConsumer() { - result = EVPFinal.super.getInputConsumer() + result = EvpFinal.super.getInputConsumer() } override Expr getAlgorithmArg() { diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPKeyGenOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPKeyGenOperation.qll index de38d35b4d4..47f341e17b1 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPKeyGenOperation.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPKeyGenOperation.qll @@ -3,8 +3,8 @@ private import experimental.quantum.OpenSSL.CtxFlow private import OpenSSLOperationBase private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers -class EVPKeyGenInitialize extends EvpPrimaryAlgorithmInitializer { - EVPKeyGenInitialize() { +class EvpKeyGenInitialize extends EvpPrimaryAlgorithmInitializer { + EvpKeyGenInitialize() { this.(Call).getTarget().getName() in [ "EVP_PKEY_keygen_init", "EVP_PKEY_paramgen_init" @@ -23,10 +23,10 @@ class EVPKeyGenInitialize extends EvpPrimaryAlgorithmInitializer { override CtxPointerSource getContext() { result = this.(Call).getArgument(0) } } -class EVPKeyGenOperation extends EvpOperation, Crypto::KeyGenerationOperationInstance { +class EvpKeyGenOperation extends EvpOperation, Crypto::KeyGenerationOperationInstance { DataFlow::Node keyResultNode; - EVPKeyGenOperation() { + EvpKeyGenOperation() { this.(Call).getTarget().getName() in ["EVP_RSA_gen", "EVP_PKEY_Q_keygen"] and keyResultNode.asExpr() = this or diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPPKeyCtxInitializer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPPKeyCtxInitializer.qll index 5a28d6535f2..d7060931317 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPPKeyCtxInitializer.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPPKeyCtxInitializer.qll @@ -19,10 +19,10 @@ private import OpenSSLOperations * will get all associated initializers for the paramgen * at the final keygen operation automatically. */ -class EVPNewKeyCtx extends EvpKeyInitializer { +class EvpNewKeyCtx extends EvpKeyInitializer { Expr keyArg; - EVPNewKeyCtx() { + EvpNewKeyCtx() { this.(Call).getTarget().getName() = "EVP_PKEY_CTX_new" and keyArg = this.(Call).getArgument(0) or diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPSignatureOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPSignatureOperation.qll index 4205b75bf92..f9ee6bef622 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPSignatureOperation.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPSignatureOperation.qll @@ -59,8 +59,8 @@ class EvpSignaturePrimaryAlgorithmInitializer extends EvpPrimaryAlgorithmInitial override CtxPointerSource getContext() { result = this.(Call).getArgument(0) } } -class EVP_Signature_Update_Call extends EvpUpdate { - EVP_Signature_Update_Call() { +class Evp_Signature_Update_Call extends EvpUpdate { + Evp_Signature_Update_Call() { this.(Call).getTarget().getName() in [ "EVP_DigestSignUpdate", "EVP_SignUpdate", "EVP_PKEY_sign_message_update" ] @@ -108,7 +108,7 @@ abstract class EvpSignatureOperation extends EvpOperation, Crypto::SignatureOper } override Crypto::AlgorithmValueConsumer getHashAlgorithmValueConsumer() { - AvcToCallArgFlow::flow(result.(OpenSSLAlgorithmValueConsumer).getResultNode(), + AvcToCallArgFlow::flow(result.(OpenSslAlgorithmValueConsumer).getResultNode(), DataFlow::exprNode(this.getHashAlgorithmArg())) } @@ -152,8 +152,8 @@ abstract class EvpSignatureOperation extends EvpOperation, Crypto::SignatureOper override Crypto::ConsumerInputDataFlowNode getSignatureConsumer() { none() } } -class EVP_Signature_Call extends EvpSignatureOperation { - EVP_Signature_Call() { this.(Call).getTarget().getName() in ["EVP_DigestSign", "EVP_PKEY_sign"] } +class Evp_Signature_Call extends EvpSignatureOperation { + Evp_Signature_Call() { this.(Call).getTarget().getName() in ["EVP_DigestSign", "EVP_PKEY_sign"] } /** * Output is the signature. @@ -168,8 +168,8 @@ class EVP_Signature_Call extends EvpSignatureOperation { override Expr getInputArg() { result = this.(Call).getArgument(3) } } -class EVP_Signature_Final_Call extends EVPFinal, EvpSignatureOperation { - EVP_Signature_Final_Call() { +class Evp_Signature_Final_Call extends EvpFinal, EvpSignatureOperation { + Evp_Signature_Final_Call() { this.(Call).getTarget().getName() in [ "EVP_DigestSignFinal", "EVP_SignFinal_ex", diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll index 8cdac627518..c2486694b81 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll @@ -4,7 +4,7 @@ private import experimental.quantum.OpenSSL.CtxFlow private import experimental.quantum.OpenSSL.KeyFlow private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers // Importing these intializers here to ensure the are part of any model that is -// using OpenSSLOperationBase. This futher ensures that initializers are tied to opeartions +// using OpenSslOperationBase. This futher ensures that initializers are tied to opeartions // even if only importing the operation by itself. import EVPPKeyCtxInitializer @@ -20,7 +20,7 @@ module EncValToInitEncArgConfig implements DataFlow::ConfigSig { module EncValToInitEncArgFlow = DataFlow::Global; -private predicate argToAVC(Expr arg, Crypto::AlgorithmValueConsumer avc) { +private predicate argToAvc(Expr arg, Crypto::AlgorithmValueConsumer avc) { // NOTE: because we trace through keys to their sources we must consider that the arg is an avc // Consider this example: // EVP_PKEY *pkey = EVP_PKEY_new_mac_key(EVP_PKEY_HMAC, NULL, key, key_len); @@ -32,14 +32,14 @@ private predicate argToAVC(Expr arg, Crypto::AlgorithmValueConsumer avc) { // This should only occur due to tracing through keys to find configuration data. avc.getInputNode().asExpr() = arg or - AvcToCallArgFlow::flow(avc.(OpenSSLAlgorithmValueConsumer).getResultNode(), + AvcToCallArgFlow::flow(avc.(OpenSslAlgorithmValueConsumer).getResultNode(), DataFlow::exprNode(arg)) } /** - * A class for all OpenSSL operations. + * A class for all OpenSsl operations. */ -abstract class OpenSSLOperation extends Crypto::OperationInstance instanceof Call { +abstract class OpenSslOperation extends Crypto::OperationInstance instanceof Call { /** * Gets the argument that specifies the algorithm for the operation. * This argument might not be immediately present at the specified operation. @@ -53,7 +53,7 @@ abstract class OpenSSLOperation extends Crypto::OperationInstance instanceof Cal * Algorithm is specified in initialization call or is implicitly established by the key. */ override Crypto::AlgorithmValueConsumer getAnAlgorithmValueConsumer() { - argToAVC(this.getAlgorithmArg(), result) + argToAvc(this.getAlgorithmArg(), result) } } @@ -115,7 +115,7 @@ abstract class EvpPrimaryAlgorithmInitializer extends EvpInitializer { abstract Expr getAlgorithmArg(); Crypto::AlgorithmValueConsumer getAlgorithmValueConsumer() { - argToAVC(this.getAlgorithmArg(), result) + argToAvc(this.getAlgorithmArg(), result) } } @@ -135,7 +135,7 @@ class EvpInitializerThroughKey extends EvpPrimaryAlgorithmInitializer, EvpKeySiz override Expr getAlgorithmArg() { result = - getSourceKeyCreationInstanceFromArg(this.getKeyArg()).(OpenSSLOperation).getAlgorithmArg() + getSourceKeyCreationInstanceFromArg(this.getKeyArg()).(OpenSslOperation).getAlgorithmArg() } override Expr getKeySizeArg() { @@ -195,7 +195,7 @@ abstract class EvpHashAlgorithmInitializer extends EvpInitializer { abstract Expr getHashAlgorithmArg(); Crypto::AlgorithmValueConsumer getHashAlgorithmValueConsumer() { - argToAVC(this.getHashAlgorithmArg(), result) + argToAvc(this.getHashAlgorithmArg(), result) } } @@ -228,7 +228,7 @@ abstract class EvpUpdate extends Call { * This captures one-shot APIs (with and without an initilizer call) and final calls. * Provides some default methods for Crypto::KeyOperationInstance class. */ -abstract class EvpOperation extends OpenSSLOperation { +abstract class EvpOperation extends OpenSslOperation { /** * Gets the context argument that ties together initialization, updates and/or final calls. */ @@ -269,7 +269,7 @@ abstract class EvpOperation extends OpenSSLOperation { * e.g., "EVP_DigestFinal", "EVP_EncryptFinal", etc. * however, this is not a strict rule. */ -abstract class EVPFinal extends EvpOperation { +abstract class EvpFinal extends EvpOperation { /** * All update calls that were executed before this final call. */ diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Random.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Random.qll index e599ed82169..d39087bcbce 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Random.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Random.qll @@ -3,11 +3,10 @@ private import experimental.quantum.Language private import LibraryDetector private import semmle.code.cpp.dataflow.new.DataFlow -class OpenSSLRandomNumberGeneratorInstance extends Crypto::RandomNumberGenerationInstance instanceof Call +class OpenSslRandomNumberGeneratorInstance extends Crypto::RandomNumberGenerationInstance instanceof Call { - OpenSSLRandomNumberGeneratorInstance() { - this.(Call).getTarget().getName() in ["RAND_bytes", "RAND_pseudo_bytes"] and - isPossibleOpenSSLFunction(this.(Call).getTarget()) + OpenSslRandomNumberGeneratorInstance() { + this.(Call).getTarget().getName() in ["RAND_bytes", "RAND_pseudo_bytes"] } override Crypto::DataFlowNode getOutputNode() { From 7c1868646262783886dc0938f3ea4758b61f7c90 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Mon, 16 Jun 2025 11:43:57 -0400 Subject: [PATCH 101/150] Crypto: Further ql-for-ql alert alert fixes. --- .../BlockAlgorithmInstance.qll | 2 +- .../CipherAlgorithmInstance.qll | 2 +- .../HashAlgorithmInstance.qll | 2 +- .../KnownAlgorithmConstants.qll | 12 +++++------ .../MACAlgorithmInstance.qll | 20 +++++++++---------- .../PaddingAlgorithmInstance.qll | 4 ++-- .../KEMAlgorithmValueConsumer.qll | 6 +++--- .../PaddingAlgorithmValueConsumer.qll | 4 ++-- .../OpenSSL/Operations/EVPCipherOperation.qll | 4 ++-- .../Operations/EVPSignatureOperation.qll | 2 +- .../Operations/OpenSSLOperationBase.qll | 20 ++++++++++++++++++- .../OpenSSL/Operations/OpenSSLOperations.qll | 1 - .../codeql/quantum/experimental/Model.qll | 12 +++++------ 13 files changed, 54 insertions(+), 37 deletions(-) diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/BlockAlgorithmInstance.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/BlockAlgorithmInstance.qll index 94b8ac64bc6..ba5f65a2203 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/BlockAlgorithmInstance.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/BlockAlgorithmInstance.qll @@ -52,7 +52,7 @@ class KnownOpenSslBlockModeConstantAlgorithmInstance extends OpenSslAlgorithmIns this instanceof OpenSslAlgorithmLiteral and exists(DataFlow::Node src, DataFlow::Node sink | // Sink is an argument to a CipherGetterCall - sink = getterCall.(OpenSslAlgorithmValueConsumer).getInputNode() and + sink = getterCall.getInputNode() and // Source is `this` src.asExpr() = this and // This traces to a getter diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/CipherAlgorithmInstance.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/CipherAlgorithmInstance.qll index 0418213ec06..0fb8ecf9539 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/CipherAlgorithmInstance.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/CipherAlgorithmInstance.qll @@ -77,7 +77,7 @@ class KnownOpenSslCipherConstantAlgorithmInstance extends OpenSslAlgorithmInstan this instanceof OpenSslAlgorithmLiteral and exists(DataFlow::Node src, DataFlow::Node sink | // Sink is an argument to a CipherGetterCall - sink = getterCall.(OpenSslAlgorithmValueConsumer).getInputNode() and + sink = getterCall.getInputNode() and // Source is `this` src.asExpr() = this and // This traces to a getter diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/HashAlgorithmInstance.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/HashAlgorithmInstance.qll index 691ad6849aa..0cc8e24f0a6 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/HashAlgorithmInstance.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/HashAlgorithmInstance.qll @@ -57,7 +57,7 @@ class KnownOpenSslHashConstantAlgorithmInstance extends OpenSslAlgorithmInstance this instanceof OpenSslAlgorithmLiteral and exists(DataFlow::Node src, DataFlow::Node sink | // Sink is an argument to a CipherGetterCall - sink = getterCall.(OpenSslAlgorithmValueConsumer).getInputNode() and + sink = getterCall.getInputNode() and // Source is `this` src.asExpr() = this and // This traces to a getter diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KnownAlgorithmConstants.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KnownAlgorithmConstants.qll index 15731086ffe..9d60547a45a 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KnownAlgorithmConstants.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/KnownAlgorithmConstants.qll @@ -134,12 +134,12 @@ class KnownOpenSslHashAlgorithmExpr extends Expr instanceof KnownOpenSslAlgorith } } -class KnownOpenSslMACAlgorithmExpr extends Expr instanceof KnownOpenSslAlgorithmExpr { - KnownOpenSslMACAlgorithmExpr() { resolveAlgorithmFromExpr(this, _, "MAC") } +class KnownOpenSslMacAlgorithmExpr extends Expr instanceof KnownOpenSslAlgorithmExpr { + KnownOpenSslMacAlgorithmExpr() { resolveAlgorithmFromExpr(this, _, "MAC") } } -class KnownOpenSslHMACAlgorithmExpr extends Expr instanceof KnownOpenSslMACAlgorithmExpr { - KnownOpenSslHMACAlgorithmExpr() { resolveAlgorithmFromExpr(this, "HMAC", "MAC") } +class KnownOpenSslHMacAlgorithmExpr extends Expr instanceof KnownOpenSslMacAlgorithmExpr { + KnownOpenSslHMacAlgorithmExpr() { resolveAlgorithmFromExpr(this, "HMAC", "MAC") } /** * Gets an explicit cipher algorithm for this MAC algorithm. @@ -148,8 +148,8 @@ class KnownOpenSslHMACAlgorithmExpr extends Expr instanceof KnownOpenSslMACAlgor KnownOpenSslHashAlgorithmExpr getExplicitHashAlgorithm() { result = this } } -class KnownOpenSslCMACAlgorithmExpr extends Expr instanceof KnownOpenSslMACAlgorithmExpr { - KnownOpenSslCMACAlgorithmExpr() { resolveAlgorithmFromExpr(this, "CMAC", "MAC") } +class KnownOpenSslCMacAlgorithmExpr extends Expr instanceof KnownOpenSslMacAlgorithmExpr { + KnownOpenSslCMacAlgorithmExpr() { resolveAlgorithmFromExpr(this, "CMAC", "MAC") } /** * Gets an explicit cipher algorithm for this MAC algorithm. diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/MACAlgorithmInstance.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/MACAlgorithmInstance.qll index bdb0ef05fd3..2e476824316 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/MACAlgorithmInstance.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/MACAlgorithmInstance.qll @@ -6,12 +6,12 @@ private import experimental.quantum.OpenSSL.AlgorithmInstances.OpenSSLAlgorithmI private import experimental.quantum.OpenSSL.Operations.OpenSSLOperations private import AlgToAVCFlow -class KnownOpenSslMACConstantAlgorithmInstance extends OpenSslAlgorithmInstance, - Crypto::MACAlgorithmInstance instanceof KnownOpenSslMACAlgorithmExpr +class KnownOpenSslMacConstantAlgorithmInstance extends OpenSslAlgorithmInstance, + Crypto::MACAlgorithmInstance instanceof KnownOpenSslMacAlgorithmExpr { OpenSslAlgorithmValueConsumer getterCall; - KnownOpenSslMACConstantAlgorithmInstance() { + KnownOpenSslMacConstantAlgorithmInstance() { // Two possibilities: // 1) The source is a literal and flows to a getter, then we know we have an instance // 2) The source is a KnownOpenSslAlgorithm is call, and we know we have an instance immediately from that @@ -33,24 +33,24 @@ class KnownOpenSslMACConstantAlgorithmInstance extends OpenSslAlgorithmInstance, override OpenSslAlgorithmValueConsumer getAvc() { result = getterCall } - override string getRawMACAlgorithmName() { + override string getRawMacAlgorithmName() { result = this.(Literal).getValue().toString() or result = this.(Call).getTarget().getName() } - override Crypto::TMACType getMACType() { - this instanceof KnownOpenSslHMACAlgorithmExpr and result instanceof Crypto::THMAC + override Crypto::TMACType getMacType() { + this instanceof KnownOpenSslHMacAlgorithmExpr and result instanceof Crypto::THMAC or - this instanceof KnownOpenSslCMACAlgorithmExpr and result instanceof Crypto::TCMAC + this instanceof KnownOpenSslCMacAlgorithmExpr and result instanceof Crypto::TCMAC } } -class KnownOpenSslHMACConstantAlgorithmInstance extends Crypto::HMACAlgorithmInstance, - KnownOpenSslMACConstantAlgorithmInstance +class KnownOpenSslHMacConstantAlgorithmInstance extends Crypto::HMACAlgorithmInstance, + KnownOpenSslMacConstantAlgorithmInstance { override Crypto::AlgorithmValueConsumer getHashAlgorithmValueConsumer() { - if exists(this.(KnownOpenSslHMACAlgorithmExpr).getExplicitHashAlgorithm()) + if exists(this.(KnownOpenSslHMacAlgorithmExpr).getExplicitHashAlgorithm()) then // ASSUMPTION: if there is an explicit hash algorithm, it is already modeled // and we can simply grab that model's AVC diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/PaddingAlgorithmInstance.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/PaddingAlgorithmInstance.qll index 4f963cd43cd..7a34b69ddf5 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/PaddingAlgorithmInstance.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/PaddingAlgorithmInstance.qll @@ -63,7 +63,7 @@ class KnownOpenSslPaddingConstantAlgorithmInstance extends OpenSslAlgorithmInsta this instanceof KnownOpenSslPaddingAlgorithmExpr and exists(DataFlow::Node src, DataFlow::Node sink | // Sink is an argument to a CipherGetterCall - sink = getterCall.(OpenSslAlgorithmValueConsumer).getInputNode() and + sink = getterCall.getInputNode() and // Source is `this` src.asExpr() = this and // This traces to a getter @@ -81,7 +81,7 @@ class KnownOpenSslPaddingConstantAlgorithmInstance extends OpenSslAlgorithmInsta this instanceof OpenSslPaddingLiteral and exists(DataFlow::Node src, DataFlow::Node sink | // Sink is an argument to a CipherGetterCall - sink = getterCall.(OpenSslAlgorithmValueConsumer).getInputNode() and + sink = getterCall.getInputNode() and // Source is `this` src.asExpr() = this and // This traces to a padding-specific consumer diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/KEMAlgorithmValueConsumer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/KEMAlgorithmValueConsumer.qll index 3de9ce68529..830adece0f3 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/KEMAlgorithmValueConsumer.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/KEMAlgorithmValueConsumer.qll @@ -4,13 +4,13 @@ private import semmle.code.cpp.dataflow.new.DataFlow private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumerBase private import experimental.quantum.OpenSSL.AlgorithmInstances.OpenSSLAlgorithmInstances -abstract class KEMAlgorithmValueConsumer extends OpenSslAlgorithmValueConsumer { } +abstract class KemAlgorithmValueConsumer extends OpenSslAlgorithmValueConsumer { } -class EvpKEMAlgorithmValueConsumer extends KEMAlgorithmValueConsumer { +class EvpKemAlgorithmValueConsumer extends KemAlgorithmValueConsumer { DataFlow::Node valueArgNode; DataFlow::Node resultNode; - EvpKEMAlgorithmValueConsumer() { + EvpKemAlgorithmValueConsumer() { resultNode.asExpr() = this and ( this.(Call).getTarget().getName() = "EVP_KEM_fetch" and diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/PaddingAlgorithmValueConsumer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/PaddingAlgorithmValueConsumer.qll index efa953a84a7..f080fc0f12a 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/PaddingAlgorithmValueConsumer.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmValueConsumers/PaddingAlgorithmValueConsumer.qll @@ -9,11 +9,11 @@ abstract class PaddingAlgorithmValueConsumer extends OpenSslAlgorithmValueConsum // https://docs.openssl.org/master/man7/EVP_ASYM_CIPHER-RSA/#rsa-asymmetric-cipher-parameters // TODO: need to handle setting padding through EVP_PKEY_CTX_set_params, where modes like "OSSL_PKEY_RSA_PAD_MODE_OAEP" // are set. -class Evp_PKEY_CTX_set_rsa_padding_AlgorithmValueConsumer extends PaddingAlgorithmValueConsumer { +class Evp_PKey_Ctx_set_rsa_padding_AlgorithmValueConsumer extends PaddingAlgorithmValueConsumer { DataFlow::Node valueArgNode; DataFlow::Node resultNode; - Evp_PKEY_CTX_set_rsa_padding_AlgorithmValueConsumer() { + Evp_PKey_Ctx_set_rsa_padding_AlgorithmValueConsumer() { resultNode.asExpr() = this and this.(Call).getTarget().getName() = "EVP_PKEY_CTX_set_rsa_padding" and valueArgNode.asExpr() = this.(Call).getArgument(1) diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherOperation.qll index ae5c1c44c45..1f5bf9e442c 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherOperation.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherOperation.qll @@ -70,8 +70,8 @@ class Evp_Cipher_EX2_or_Simple_Init_Call extends Evp_EX2_Initializer { } } -class Evp_CipherInit_SKEY_Call extends Evp_EX2_Initializer { - Evp_CipherInit_SKEY_Call() { this.(Call).getTarget().getName() in ["EVP_CipherInit_SKEY"] } +class Evp_CipherInit_SKey_Call extends Evp_EX2_Initializer { + Evp_CipherInit_SKey_Call() { this.(Call).getTarget().getName() = "EVP_CipherInit_SKEY" } override Expr getKeyOperationSubtypeArg() { result = this.(Call).getArgument(5) } } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPSignatureOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPSignatureOperation.qll index f9ee6bef622..41a82865291 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPSignatureOperation.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPSignatureOperation.qll @@ -132,7 +132,7 @@ abstract class EvpSignatureOperation extends EvpOperation, Crypto::SignatureOper /** * Keys provided in the initialization call or in a context are found by this method. - * Keys in explicit arguments are found by overriden methods in extending classes. + * Keys in explicit arguments are found by overridden methods in extending classes. */ override Crypto::ConsumerInputDataFlowNode getKeyConsumer() { result = DataFlow::exprNode(this.getInitCall().(EvpKeyInitializer).getKeyArg()) diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll index c2486694b81..7f940e34502 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll @@ -4,7 +4,7 @@ private import experimental.quantum.OpenSSL.CtxFlow private import experimental.quantum.OpenSSL.KeyFlow private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers // Importing these intializers here to ensure the are part of any model that is -// using OpenSslOperationBase. This futher ensures that initializers are tied to opeartions +// using OpenSslOperationBase. This further ensures that initializers are tied to opeartions // even if only importing the operation by itself. import EVPPKeyCtxInitializer @@ -73,10 +73,16 @@ abstract class EvpInitializer extends Call { abstract CtxPointerSource getContext(); } +/** + * A call to initialize a key size. + */ abstract class EvpKeySizeInitializer extends EvpInitializer { abstract Expr getKeySizeArg(); } +/** + * A call to initialize a key operation subtype. + */ abstract class EvpKeyOperationSubtypeInitializer extends EvpInitializer { abstract Expr getKeyOperationSubtypeArg(); @@ -119,6 +125,9 @@ abstract class EvpPrimaryAlgorithmInitializer extends EvpInitializer { } } +/** + * A call to initialize a key. + */ abstract class EvpKeyInitializer extends EvpInitializer { abstract Expr getKeyArg(); } @@ -175,6 +184,9 @@ abstract class EvpIVInitializer extends EvpInitializer { abstract Expr getIVArg(); } +/** + * A call to initialize padding. + */ abstract class EvpPaddingInitializer extends EvpInitializer { /** * Gets the padding mode argument. @@ -183,6 +195,9 @@ abstract class EvpPaddingInitializer extends EvpInitializer { abstract Expr getPaddingArg(); } +/** + * A call to initialize a salt length. + */ abstract class EvpSaltLengthInitializer extends EvpInitializer { /** * Gets the salt length argument. @@ -191,6 +206,9 @@ abstract class EvpSaltLengthInitializer extends EvpInitializer { abstract Expr getSaltLengthArg(); } +/** + * A call to initialize a hash algorithm. + */ abstract class EvpHashAlgorithmInitializer extends EvpInitializer { abstract Expr getHashAlgorithmArg(); diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperations.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperations.qll index efaf71e7e36..78b8f8ce080 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperations.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperations.qll @@ -4,4 +4,3 @@ import EVPHashOperation import ECKeyGenOperation import EVPSignatureOperation import EVPKeyGenOperation -import EVPPKeyCtxInitializer diff --git a/shared/quantum/codeql/quantum/experimental/Model.qll b/shared/quantum/codeql/quantum/experimental/Model.qll index 68b839cf637..d4a900f9bca 100644 --- a/shared/quantum/codeql/quantum/experimental/Model.qll +++ b/shared/quantum/codeql/quantum/experimental/Model.qll @@ -960,14 +960,14 @@ module CryptographyBase Input> { /** * Gets the type of this MAC algorithm, e.g., "HMAC" or "CMAC". */ - abstract TMACType getMACType(); + abstract TMACType getMacType(); /** * Gets the isolated name as it appears in source, e.g., "HMAC-SHA256" in "HMAC-SHA256/UnrelatedInformation". * * This name should not be parsed or formatted beyond isolating the raw MAC name if necessary. */ - abstract string getRawMACAlgorithmName(); + abstract string getRawMacAlgorithmName(); } abstract class MACOperationInstance extends OperationInstance { @@ -983,7 +983,7 @@ module CryptographyBase Input> { } abstract class HMACAlgorithmInstance extends MACAlgorithmInstance { - HMACAlgorithmInstance() { this.getMACType() instanceof THMAC } + HMACAlgorithmInstance() { this.getMacType() instanceof THMAC } /** * Gets the hash algorithm used by this HMAC algorithm. @@ -1814,17 +1814,17 @@ module CryptographyBase Input> { override LocatableElement asElement() { result = instance } final override string getRawAlgorithmName() { - result = instance.asAlg().getRawMACAlgorithmName() + result = instance.asAlg().getRawMacAlgorithmName() } - TMACType getMACType() { result = instance.asAlg().getMACType() } + TMACType getMacType() { result = instance.asAlg().getMacType() } final private predicate macToNameMapping(TMACType type, string name) { type instanceof THMAC and name = "HMAC" } - override string getAlgorithmName() { this.macToNameMapping(this.getMACType(), result) } + override string getAlgorithmName() { this.macToNameMapping(this.getMacType(), result) } } final class HMACAlgorithmNode extends MACAlgorithmNode { From 7355f555a56fdb2c04eba75ca4ef235946b463af Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Mon, 16 Jun 2025 17:27:11 +0100 Subject: [PATCH 102/150] C++: Add an exception edge out of calls inside try statements. --- .../cpp/ir/implementation/raw/internal/TranslatedCall.qll | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll index db46f6807cd..1a5c65d364d 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll @@ -4,6 +4,7 @@ private import semmle.code.cpp.ir.implementation.internal.OperandTag private import semmle.code.cpp.ir.internal.CppType private import semmle.code.cpp.models.interfaces.SideEffect private import semmle.code.cpp.models.interfaces.Throwing +private import semmle.code.cpp.models.interfaces.NonThrowing private import InstructionTag private import SideEffects private import TranslatedElement @@ -366,6 +367,10 @@ class TranslatedFunctionCall extends TranslatedCallExpr, TranslatedDirectCall { or exists(MicrosoftTryStmt tryStmt | tryStmt.getStmt() = expr.getEnclosingStmt().getParent*()) and e instanceof SehExceptionEdge + or + not expr.getTarget() instanceof NonCppThrowingFunction and + exists(TryStmt tryStmt | tryStmt.getStmt() = expr.getEnclosingStmt().getParent*()) and + e instanceof CppExceptionEdge } final override predicate mustThrowException(ExceptionEdge e) { From 6c9c9695736963f1044000527b595479055808a8 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Mon, 16 Jun 2025 12:43:29 -0400 Subject: [PATCH 103/150] Crypto: Remove dead comments --- .../quantum/OpenSSL/Operations/OpenSSLOperationBase.qll | 8 -------- 1 file changed, 8 deletions(-) diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll index 8cdac627518..2d8f2284d2a 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll @@ -287,11 +287,3 @@ abstract class EVPFinal extends EvpOperation { */ override Expr getOutputArg() { result = this.getUpdateCalls().getOutputArg() } } -// Expr getAlgorithmArgFromContext(Expr contextArg) { -// exists(EVPPKeyAlgorithmConsumer source | -// result = source.getValueArgExpr() and -// ctxFlowsToCtxArg(source.getResultNode().asExpr(), ctx) -// ) -// or -// result = getAlgorithmFromKey(getKeyFromCtx(ctx)) -// } From 9f3569b980a51564adcd939cbf4991115ba182bb Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Mon, 16 Jun 2025 17:27:18 +0100 Subject: [PATCH 104/150] C++: Accept test changes. --- .../controlflow/guards-ir/tests.expected | 9 +- .../controlflow/guards/GuardsControl.expected | 1 - .../controlflow/guards/GuardsEnsure.expected | 2 - .../library-tests/ir/ir/aliased_ir.expected | 1606 ++++++++++------- .../test/library-tests/ir/ir/raw_ir.expected | 708 ++++---- 5 files changed, 1300 insertions(+), 1026 deletions(-) diff --git a/cpp/ql/test/library-tests/controlflow/guards-ir/tests.expected b/cpp/ql/test/library-tests/controlflow/guards-ir/tests.expected index 472e48a05b0..1d138afcbea 100644 --- a/cpp/ql/test/library-tests/controlflow/guards-ir/tests.expected +++ b/cpp/ql/test/library-tests/controlflow/guards-ir/tests.expected @@ -448,7 +448,6 @@ astGuardsControl | test.cpp:31:7:31:13 | ... == ... | false | 34 | 34 | | test.cpp:31:7:31:13 | ... == ... | true | 30 | 30 | | test.cpp:31:7:31:13 | ... == ... | true | 31 | 32 | -| test.cpp:42:13:42:20 | call to getABool | false | 53 | 53 | | test.cpp:42:13:42:20 | call to getABool | true | 43 | 45 | astGuardsEnsure | test.c:7:9:7:13 | ... > ... | test.c:7:9:7:9 | x | < | test.c:7:13:7:13 | 0 | 1 | 10 | 11 | @@ -893,8 +892,6 @@ astGuardsEnsure_const | test.cpp:31:7:31:13 | ... == ... | test.cpp:31:7:31:13 | ... == ... | == | 1 | 30 | 30 | | test.cpp:31:7:31:13 | ... == ... | test.cpp:31:7:31:13 | ... == ... | == | 1 | 31 | 32 | | test.cpp:42:13:42:20 | call to getABool | test.cpp:42:13:42:20 | call to getABool | != | 0 | 43 | 45 | -| test.cpp:42:13:42:20 | call to getABool | test.cpp:42:13:42:20 | call to getABool | != | 1 | 53 | 53 | -| test.cpp:42:13:42:20 | call to getABool | test.cpp:42:13:42:20 | call to getABool | == | 0 | 53 | 53 | | test.cpp:42:13:42:20 | call to getABool | test.cpp:42:13:42:20 | call to getABool | == | 1 | 43 | 45 | irGuards | test.c:7:9:7:13 | CompareGT: ... > ... | @@ -1301,8 +1298,8 @@ irGuardsControl | test.cpp:31:7:31:13 | CompareEQ: ... == ... | false | 34 | 34 | | test.cpp:31:7:31:13 | CompareEQ: ... == ... | true | 30 | 30 | | test.cpp:31:7:31:13 | CompareEQ: ... == ... | true | 32 | 32 | -| test.cpp:42:13:42:20 | Call: call to getABool | false | 53 | 53 | | test.cpp:42:13:42:20 | Call: call to getABool | true | 44 | 44 | +| test.cpp:42:13:42:20 | Call: call to getABool | true | 45 | 45 | irGuardsEnsure | test.c:7:9:7:13 | CompareGT: ... > ... | test.c:7:9:7:9 | Load: x | < | test.c:7:13:7:13 | Constant: 0 | 1 | 11 | 11 | | test.c:7:9:7:13 | CompareGT: ... > ... | test.c:7:9:7:9 | Load: x | >= | test.c:7:13:7:13 | Constant: 0 | 1 | 8 | 8 | @@ -1781,6 +1778,6 @@ irGuardsEnsure_const | test.cpp:31:7:31:13 | CompareEQ: ... == ... | test.cpp:31:7:31:13 | CompareEQ: ... == ... | == | 1 | 30 | 30 | | test.cpp:31:7:31:13 | CompareEQ: ... == ... | test.cpp:31:7:31:13 | CompareEQ: ... == ... | == | 1 | 32 | 32 | | test.cpp:42:13:42:20 | Call: call to getABool | test.cpp:42:13:42:20 | Call: call to getABool | != | 0 | 44 | 44 | -| test.cpp:42:13:42:20 | Call: call to getABool | test.cpp:42:13:42:20 | Call: call to getABool | != | 1 | 53 | 53 | -| test.cpp:42:13:42:20 | Call: call to getABool | test.cpp:42:13:42:20 | Call: call to getABool | == | 0 | 53 | 53 | +| test.cpp:42:13:42:20 | Call: call to getABool | test.cpp:42:13:42:20 | Call: call to getABool | != | 0 | 45 | 45 | | test.cpp:42:13:42:20 | Call: call to getABool | test.cpp:42:13:42:20 | Call: call to getABool | == | 1 | 44 | 44 | +| test.cpp:42:13:42:20 | Call: call to getABool | test.cpp:42:13:42:20 | Call: call to getABool | == | 1 | 45 | 45 | diff --git a/cpp/ql/test/library-tests/controlflow/guards/GuardsControl.expected b/cpp/ql/test/library-tests/controlflow/guards/GuardsControl.expected index 57f5fe4065d..a60784a0e10 100644 --- a/cpp/ql/test/library-tests/controlflow/guards/GuardsControl.expected +++ b/cpp/ql/test/library-tests/controlflow/guards/GuardsControl.expected @@ -104,7 +104,6 @@ | test.cpp:31:7:31:13 | ... == ... | false | 34 | 34 | | test.cpp:31:7:31:13 | ... == ... | true | 30 | 30 | | test.cpp:31:7:31:13 | ... == ... | true | 31 | 32 | -| test.cpp:42:13:42:20 | call to getABool | false | 53 | 53 | | test.cpp:42:13:42:20 | call to getABool | true | 43 | 45 | | test.cpp:61:10:61:10 | i | Case[0] | 62 | 64 | | test.cpp:61:10:61:10 | i | Case[1] | 65 | 66 | diff --git a/cpp/ql/test/library-tests/controlflow/guards/GuardsEnsure.expected b/cpp/ql/test/library-tests/controlflow/guards/GuardsEnsure.expected index 0f57d5e0450..67dd6f68ed4 100644 --- a/cpp/ql/test/library-tests/controlflow/guards/GuardsEnsure.expected +++ b/cpp/ql/test/library-tests/controlflow/guards/GuardsEnsure.expected @@ -635,8 +635,6 @@ unary | test.cpp:31:7:31:13 | ... == ... | test.cpp:31:7:31:13 | ... == ... | == | 1 | 30 | 30 | | test.cpp:31:7:31:13 | ... == ... | test.cpp:31:7:31:13 | ... == ... | == | 1 | 31 | 32 | | test.cpp:42:13:42:20 | call to getABool | test.cpp:42:13:42:20 | call to getABool | != | 0 | 43 | 45 | -| test.cpp:42:13:42:20 | call to getABool | test.cpp:42:13:42:20 | call to getABool | != | 1 | 53 | 53 | -| test.cpp:42:13:42:20 | call to getABool | test.cpp:42:13:42:20 | call to getABool | == | 0 | 53 | 53 | | test.cpp:42:13:42:20 | call to getABool | test.cpp:42:13:42:20 | call to getABool | == | 1 | 43 | 45 | | test.cpp:61:10:61:10 | i | test.cpp:61:10:61:10 | i | == | 0 | 62 | 64 | | test.cpp:61:10:61:10 | i | test.cpp:61:10:61:10 | i | == | 1 | 65 | 66 | diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected index 850168dd6d5..c6f2bb1639e 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected @@ -887,14 +887,13 @@ coroutines.cpp: #-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_11, ~m0_15 #-----| m0_17(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_11 #-----| m0_18(unknown) = Chi : total:m0_15, partial:m0_17 -# 88| v88_1(void) = NoOp : -#-----| v0_19(void) = NoOp : -#-----| Goto (back edge) -> Block 3 +#-----| C++ Exception -> Block 4 +#-----| Goto -> Block 3 # 87| Block 2 # 87| r87_42(suspend_always *) = CopyValue : r87_27 # 87| r87_43(glval) = CopyValue : r87_42 -#-----| r0_20(glval) = Convert : r87_43 +#-----| r0_19(glval) = Convert : r87_43 # 87| r87_44(glval) = FunctionAddress[await_suspend] : # 87| r87_45(glval>) = VariableAddress[#temp87:20] : # 87| m87_46(coroutine_handle) = Uninitialized[#temp87:20] : &:r87_45 @@ -910,87 +909,116 @@ coroutines.cpp: # 87| m87_56(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r87_45 # 87| m87_57(unknown) = Chi : total:m87_54, partial:m87_56 # 87| r87_58(coroutine_handle) = Load[#temp87:20] : &:r87_45, ~m87_57 -# 87| v87_59(void) = Call[await_suspend] : func:r87_44, this:r0_20, 0:r87_58 +# 87| v87_59(void) = Call[await_suspend] : func:r87_44, this:r0_19, 0:r87_58 # 87| m87_60(unknown) = ^CallSideEffect : ~m87_57 # 87| m87_61(unknown) = Chi : total:m87_57, partial:m87_60 -#-----| v0_21(void) = ^IndirectReadSideEffect[-1] : &:r0_20, ~m87_61 +#-----| v0_20(void) = ^IndirectReadSideEffect[-1] : &:r0_19, ~m87_61 #-----| Goto -> Block 1 -#-----| Block 3 -#-----| v0_22(void) = NoOp : -# 87| r87_62(glval) = VariableAddress[(unnamed local variable)] : -# 87| r87_63(glval) = FunctionAddress[final_suspend] : -# 87| r87_64(suspend_always) = Call[final_suspend] : func:r87_63, this:r87_62 -# 87| m87_65(unknown) = ^CallSideEffect : ~m0_18 -# 87| m87_66(unknown) = Chi : total:m0_18, partial:m87_65 -# 87| v87_67(void) = ^IndirectReadSideEffect[-1] : &:r87_62, ~m87_66 -# 87| m87_68(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r87_62 -# 87| m87_69(unknown) = Chi : total:m87_66, partial:m87_68 -#-----| r0_23(glval) = VariableAddress[#temp0:0] : -# 87| r87_70(glval) = VariableAddress[#temp87:20] : -# 87| r87_71(glval) = VariableAddress[(unnamed local variable)] : -# 87| r87_72(glval) = FunctionAddress[final_suspend] : -# 87| r87_73(suspend_always) = Call[final_suspend] : func:r87_72, this:r87_71 -# 87| m87_74(unknown) = ^CallSideEffect : ~m87_69 -# 87| m87_75(unknown) = Chi : total:m87_69, partial:m87_74 -# 87| v87_76(void) = ^IndirectReadSideEffect[-1] : &:r87_71, ~m87_75 -# 87| m87_77(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r87_71 -# 87| m87_78(unknown) = Chi : total:m87_75, partial:m87_77 -# 87| m87_79(suspend_always) = Store[#temp87:20] : &:r87_70, r87_73 -# 87| m87_80(unknown) = Chi : total:m87_78, partial:m87_79 -# 87| r87_81(suspend_always *) = CopyValue : r87_70 -# 87| m87_82(suspend_always *) = Store[#temp0:0] : &:r0_23, r87_81 -#-----| r0_24(suspend_always *) = Load[#temp0:0] : &:r0_23, m87_82 -# 87| r87_83(glval) = CopyValue : r0_24 -# 87| r87_84(glval) = Convert : r87_83 -# 87| r87_85(glval) = FunctionAddress[await_ready] : -# 87| r87_86(bool) = Call[await_ready] : func:r87_85, this:r87_84 -# 87| m87_87(unknown) = ^CallSideEffect : ~m87_80 -# 87| m87_88(unknown) = Chi : total:m87_80, partial:m87_87 -# 87| v87_89(void) = ^IndirectReadSideEffect[-1] : &:r87_84, ~m87_88 -#-----| v0_25(void) = ConditionalBranch : r87_86 -#-----| False -> Block 5 -#-----| True -> Block 4 +# 88| Block 3 +# 88| v88_1(void) = NoOp : +#-----| v0_21(void) = NoOp : +#-----| Goto (back edge) -> Block 6 -# 87| Block 4 -# 87| m87_90(unknown) = Phi : from 3:~m87_88, from 5:~m87_120 -# 87| r87_91(suspend_always *) = CopyValue : r87_81 -# 87| r87_92(glval) = CopyValue : r87_91 -#-----| r0_26(glval) = Convert : r87_92 -# 87| r87_93(glval) = FunctionAddress[await_resume] : -# 87| v87_94(void) = Call[await_resume] : func:r87_93, this:r0_26 -# 87| m87_95(unknown) = ^CallSideEffect : ~m87_90 -# 87| m87_96(unknown) = Chi : total:m87_90, partial:m87_95 -#-----| v0_27(void) = ^IndirectReadSideEffect[-1] : &:r0_26, ~m87_96 -# 87| r87_97(glval) = VariableAddress[#return] : -# 87| v87_98(void) = ReturnValue : &:r87_97, ~m87_96 -# 87| v87_99(void) = AliasedUse : ~m87_96 -# 87| v87_100(void) = ExitFunction : +#-----| Block 4 +#-----| v0_22(void) = CatchAny : +#-----| r0_23(glval) = VariableAddress[(unnamed local variable)] : +#-----| r0_24(bool) = Load[(unnamed local variable)] : &:r0_23, m0_7 +#-----| r0_25(bool) = LogicalNot : r0_24 +#-----| v0_26(void) = ConditionalBranch : r0_25 +#-----| False -> Block 5 +#-----| True -> Block 9 # 87| Block 5 -# 87| r87_101(suspend_always *) = CopyValue : r87_81 -# 87| r87_102(glval) = CopyValue : r87_101 -#-----| r0_28(glval) = Convert : r87_102 -# 87| r87_103(glval) = FunctionAddress[await_suspend] : -# 87| r87_104(glval>) = VariableAddress[#temp87:20] : -# 87| m87_105(coroutine_handle) = Uninitialized[#temp87:20] : &:r87_104 -# 87| m87_106(unknown) = Chi : total:m87_88, partial:m87_105 -# 87| r87_107(glval) = FunctionAddress[coroutine_handle] : -# 87| r87_108(glval>) = VariableAddress[(unnamed local variable)] : -# 87| r87_109(glval>) = Convert : r87_108 -# 87| r87_110(coroutine_handle &) = CopyValue : r87_109 -# 87| v87_111(void) = Call[coroutine_handle] : func:r87_107, this:r87_104, 0:r87_110 -# 87| m87_112(unknown) = ^CallSideEffect : ~m87_106 -# 87| m87_113(unknown) = Chi : total:m87_106, partial:m87_112 -# 87| v87_114(void) = ^BufferReadSideEffect[0] : &:r87_110, ~m87_113 -# 87| m87_115(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r87_104 -# 87| m87_116(unknown) = Chi : total:m87_113, partial:m87_115 -# 87| r87_117(coroutine_handle) = Load[#temp87:20] : &:r87_104, ~m87_116 -# 87| v87_118(void) = Call[await_suspend] : func:r87_103, this:r0_28, 0:r87_117 -# 87| m87_119(unknown) = ^CallSideEffect : ~m87_116 -# 87| m87_120(unknown) = Chi : total:m87_116, partial:m87_119 -#-----| v0_29(void) = ^IndirectReadSideEffect[-1] : &:r0_28, ~m87_120 -#-----| Goto -> Block 4 +# 87| r87_62(glval) = VariableAddress[(unnamed local variable)] : +# 87| r87_63(glval) = FunctionAddress[unhandled_exception] : +# 87| v87_64(void) = Call[unhandled_exception] : func:r87_63, this:r87_62 +# 87| m87_65(unknown) = ^CallSideEffect : ~m0_18 +# 87| m87_66(unknown) = Chi : total:m0_18, partial:m87_65 +# 87| v87_67(void) = ^IndirectReadSideEffect[-1] : &:r87_62, ~m87_66 +# 87| m87_68(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r87_62 +# 87| m87_69(unknown) = Chi : total:m87_66, partial:m87_68 +#-----| Goto -> Block 6 + +#-----| Block 6 +#-----| m0_27(unknown) = Phi : from 3:~m0_18, from 5:~m87_69 +#-----| v0_28(void) = NoOp : +# 87| r87_70(glval) = VariableAddress[(unnamed local variable)] : +# 87| r87_71(glval) = FunctionAddress[final_suspend] : +# 87| r87_72(suspend_always) = Call[final_suspend] : func:r87_71, this:r87_70 +# 87| m87_73(unknown) = ^CallSideEffect : ~m0_27 +# 87| m87_74(unknown) = Chi : total:m0_27, partial:m87_73 +# 87| v87_75(void) = ^IndirectReadSideEffect[-1] : &:r87_70, ~m87_74 +# 87| m87_76(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r87_70 +# 87| m87_77(unknown) = Chi : total:m87_74, partial:m87_76 +#-----| r0_29(glval) = VariableAddress[#temp0:0] : +# 87| r87_78(glval) = VariableAddress[#temp87:20] : +# 87| r87_79(glval) = VariableAddress[(unnamed local variable)] : +# 87| r87_80(glval) = FunctionAddress[final_suspend] : +# 87| r87_81(suspend_always) = Call[final_suspend] : func:r87_80, this:r87_79 +# 87| m87_82(unknown) = ^CallSideEffect : ~m87_77 +# 87| m87_83(unknown) = Chi : total:m87_77, partial:m87_82 +# 87| v87_84(void) = ^IndirectReadSideEffect[-1] : &:r87_79, ~m87_83 +# 87| m87_85(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r87_79 +# 87| m87_86(unknown) = Chi : total:m87_83, partial:m87_85 +# 87| m87_87(suspend_always) = Store[#temp87:20] : &:r87_78, r87_81 +# 87| m87_88(unknown) = Chi : total:m87_86, partial:m87_87 +# 87| r87_89(suspend_always *) = CopyValue : r87_78 +# 87| m87_90(suspend_always *) = Store[#temp0:0] : &:r0_29, r87_89 +#-----| r0_30(suspend_always *) = Load[#temp0:0] : &:r0_29, m87_90 +# 87| r87_91(glval) = CopyValue : r0_30 +# 87| r87_92(glval) = Convert : r87_91 +# 87| r87_93(glval) = FunctionAddress[await_ready] : +# 87| r87_94(bool) = Call[await_ready] : func:r87_93, this:r87_92 +# 87| m87_95(unknown) = ^CallSideEffect : ~m87_88 +# 87| m87_96(unknown) = Chi : total:m87_88, partial:m87_95 +# 87| v87_97(void) = ^IndirectReadSideEffect[-1] : &:r87_92, ~m87_96 +#-----| v0_31(void) = ConditionalBranch : r87_94 +#-----| False -> Block 8 +#-----| True -> Block 7 + +# 87| Block 7 +# 87| m87_98(unknown) = Phi : from 6:~m87_96, from 8:~m87_128 +# 87| r87_99(suspend_always *) = CopyValue : r87_89 +# 87| r87_100(glval) = CopyValue : r87_99 +#-----| r0_32(glval) = Convert : r87_100 +# 87| r87_101(glval) = FunctionAddress[await_resume] : +# 87| v87_102(void) = Call[await_resume] : func:r87_101, this:r0_32 +# 87| m87_103(unknown) = ^CallSideEffect : ~m87_98 +# 87| m87_104(unknown) = Chi : total:m87_98, partial:m87_103 +#-----| v0_33(void) = ^IndirectReadSideEffect[-1] : &:r0_32, ~m87_104 +# 87| r87_105(glval) = VariableAddress[#return] : +# 87| v87_106(void) = ReturnValue : &:r87_105, ~m87_104 +# 87| v87_107(void) = AliasedUse : ~m87_104 +# 87| v87_108(void) = ExitFunction : + +# 87| Block 8 +# 87| r87_109(suspend_always *) = CopyValue : r87_89 +# 87| r87_110(glval) = CopyValue : r87_109 +#-----| r0_34(glval) = Convert : r87_110 +# 87| r87_111(glval) = FunctionAddress[await_suspend] : +# 87| r87_112(glval>) = VariableAddress[#temp87:20] : +# 87| m87_113(coroutine_handle) = Uninitialized[#temp87:20] : &:r87_112 +# 87| m87_114(unknown) = Chi : total:m87_96, partial:m87_113 +# 87| r87_115(glval) = FunctionAddress[coroutine_handle] : +# 87| r87_116(glval>) = VariableAddress[(unnamed local variable)] : +# 87| r87_117(glval>) = Convert : r87_116 +# 87| r87_118(coroutine_handle &) = CopyValue : r87_117 +# 87| v87_119(void) = Call[coroutine_handle] : func:r87_115, this:r87_112, 0:r87_118 +# 87| m87_120(unknown) = ^CallSideEffect : ~m87_114 +# 87| m87_121(unknown) = Chi : total:m87_114, partial:m87_120 +# 87| v87_122(void) = ^BufferReadSideEffect[0] : &:r87_118, ~m87_121 +# 87| m87_123(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r87_112 +# 87| m87_124(unknown) = Chi : total:m87_121, partial:m87_123 +# 87| r87_125(coroutine_handle) = Load[#temp87:20] : &:r87_112, ~m87_124 +# 87| v87_126(void) = Call[await_suspend] : func:r87_111, this:r0_34, 0:r87_125 +# 87| m87_127(unknown) = ^CallSideEffect : ~m87_124 +# 87| m87_128(unknown) = Chi : total:m87_124, partial:m87_127 +#-----| v0_35(void) = ^IndirectReadSideEffect[-1] : &:r0_34, ~m87_128 +#-----| Goto -> Block 7 + +# 87| Block 9 +# 87| v87_129(void) = Unreached : # 91| co_returnable_value co_return_int(int) # 91| Block 0 @@ -1065,14 +1093,13 @@ coroutines.cpp: #-----| v0_20(void) = ^IndirectReadSideEffect[-1] : &:r0_15, ~m0_19 #-----| m0_21(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_15 #-----| m0_22(unknown) = Chi : total:m0_19, partial:m0_21 -# 92| v92_3(void) = NoOp : -#-----| v0_23(void) = NoOp : -#-----| Goto (back edge) -> Block 3 +#-----| C++ Exception -> Block 4 +#-----| Goto -> Block 3 # 91| Block 2 # 91| r91_44(suspend_always *) = CopyValue : r91_29 # 91| r91_45(glval) = CopyValue : r91_44 -#-----| r0_24(glval) = Convert : r91_45 +#-----| r0_23(glval) = Convert : r91_45 # 91| r91_46(glval) = FunctionAddress[await_suspend] : # 91| r91_47(glval>) = VariableAddress[#temp91:21] : # 91| m91_48(coroutine_handle) = Uninitialized[#temp91:21] : &:r91_47 @@ -1088,87 +1115,116 @@ coroutines.cpp: # 91| m91_58(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r91_47 # 91| m91_59(unknown) = Chi : total:m91_56, partial:m91_58 # 91| r91_60(coroutine_handle) = Load[#temp91:21] : &:r91_47, ~m91_59 -# 91| v91_61(void) = Call[await_suspend] : func:r91_46, this:r0_24, 0:r91_60 +# 91| v91_61(void) = Call[await_suspend] : func:r91_46, this:r0_23, 0:r91_60 # 91| m91_62(unknown) = ^CallSideEffect : ~m91_59 # 91| m91_63(unknown) = Chi : total:m91_59, partial:m91_62 -#-----| v0_25(void) = ^IndirectReadSideEffect[-1] : &:r0_24, ~m91_63 +#-----| v0_24(void) = ^IndirectReadSideEffect[-1] : &:r0_23, ~m91_63 #-----| Goto -> Block 1 -#-----| Block 3 -#-----| v0_26(void) = NoOp : -# 91| r91_64(glval) = VariableAddress[(unnamed local variable)] : -# 91| r91_65(glval) = FunctionAddress[final_suspend] : -# 91| r91_66(suspend_always) = Call[final_suspend] : func:r91_65, this:r91_64 -# 91| m91_67(unknown) = ^CallSideEffect : ~m0_22 -# 91| m91_68(unknown) = Chi : total:m0_22, partial:m91_67 -# 91| v91_69(void) = ^IndirectReadSideEffect[-1] : &:r91_64, ~m91_68 -# 91| m91_70(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r91_64 -# 91| m91_71(unknown) = Chi : total:m91_68, partial:m91_70 -#-----| r0_27(glval) = VariableAddress[#temp0:0] : -# 91| r91_72(glval) = VariableAddress[#temp91:21] : -# 91| r91_73(glval) = VariableAddress[(unnamed local variable)] : -# 91| r91_74(glval) = FunctionAddress[final_suspend] : -# 91| r91_75(suspend_always) = Call[final_suspend] : func:r91_74, this:r91_73 -# 91| m91_76(unknown) = ^CallSideEffect : ~m91_71 -# 91| m91_77(unknown) = Chi : total:m91_71, partial:m91_76 -# 91| v91_78(void) = ^IndirectReadSideEffect[-1] : &:r91_73, ~m91_77 -# 91| m91_79(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r91_73 -# 91| m91_80(unknown) = Chi : total:m91_77, partial:m91_79 -# 91| m91_81(suspend_always) = Store[#temp91:21] : &:r91_72, r91_75 -# 91| m91_82(unknown) = Chi : total:m91_80, partial:m91_81 -# 91| r91_83(suspend_always *) = CopyValue : r91_72 -# 91| m91_84(suspend_always *) = Store[#temp0:0] : &:r0_27, r91_83 -#-----| r0_28(suspend_always *) = Load[#temp0:0] : &:r0_27, m91_84 -# 91| r91_85(glval) = CopyValue : r0_28 -# 91| r91_86(glval) = Convert : r91_85 -# 91| r91_87(glval) = FunctionAddress[await_ready] : -# 91| r91_88(bool) = Call[await_ready] : func:r91_87, this:r91_86 -# 91| m91_89(unknown) = ^CallSideEffect : ~m91_82 -# 91| m91_90(unknown) = Chi : total:m91_82, partial:m91_89 -# 91| v91_91(void) = ^IndirectReadSideEffect[-1] : &:r91_86, ~m91_90 -#-----| v0_29(void) = ConditionalBranch : r91_88 -#-----| False -> Block 5 -#-----| True -> Block 4 +# 92| Block 3 +# 92| v92_3(void) = NoOp : +#-----| v0_25(void) = NoOp : +#-----| Goto (back edge) -> Block 6 -# 91| Block 4 -# 91| m91_92(unknown) = Phi : from 3:~m91_90, from 5:~m91_122 -# 91| r91_93(suspend_always *) = CopyValue : r91_83 -# 91| r91_94(glval) = CopyValue : r91_93 -#-----| r0_30(glval) = Convert : r91_94 -# 91| r91_95(glval) = FunctionAddress[await_resume] : -# 91| v91_96(void) = Call[await_resume] : func:r91_95, this:r0_30 -# 91| m91_97(unknown) = ^CallSideEffect : ~m91_92 -# 91| m91_98(unknown) = Chi : total:m91_92, partial:m91_97 -#-----| v0_31(void) = ^IndirectReadSideEffect[-1] : &:r0_30, ~m91_98 -# 91| r91_99(glval) = VariableAddress[#return] : -# 91| v91_100(void) = ReturnValue : &:r91_99, ~m91_98 -# 91| v91_101(void) = AliasedUse : ~m91_98 -# 91| v91_102(void) = ExitFunction : +#-----| Block 4 +#-----| v0_26(void) = CatchAny : +#-----| r0_27(glval) = VariableAddress[(unnamed local variable)] : +#-----| r0_28(bool) = Load[(unnamed local variable)] : &:r0_27, m0_11 +#-----| r0_29(bool) = LogicalNot : r0_28 +#-----| v0_30(void) = ConditionalBranch : r0_29 +#-----| False -> Block 5 +#-----| True -> Block 9 # 91| Block 5 -# 91| r91_103(suspend_always *) = CopyValue : r91_83 -# 91| r91_104(glval) = CopyValue : r91_103 -#-----| r0_32(glval) = Convert : r91_104 -# 91| r91_105(glval) = FunctionAddress[await_suspend] : -# 91| r91_106(glval>) = VariableAddress[#temp91:21] : -# 91| m91_107(coroutine_handle) = Uninitialized[#temp91:21] : &:r91_106 -# 91| m91_108(unknown) = Chi : total:m91_90, partial:m91_107 -# 91| r91_109(glval) = FunctionAddress[coroutine_handle] : -# 91| r91_110(glval>) = VariableAddress[(unnamed local variable)] : -# 91| r91_111(glval>) = Convert : r91_110 -# 91| r91_112(coroutine_handle &) = CopyValue : r91_111 -# 91| v91_113(void) = Call[coroutine_handle] : func:r91_109, this:r91_106, 0:r91_112 -# 91| m91_114(unknown) = ^CallSideEffect : ~m91_108 -# 91| m91_115(unknown) = Chi : total:m91_108, partial:m91_114 -# 91| v91_116(void) = ^BufferReadSideEffect[0] : &:r91_112, ~m91_115 -# 91| m91_117(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r91_106 -# 91| m91_118(unknown) = Chi : total:m91_115, partial:m91_117 -# 91| r91_119(coroutine_handle) = Load[#temp91:21] : &:r91_106, ~m91_118 -# 91| v91_120(void) = Call[await_suspend] : func:r91_105, this:r0_32, 0:r91_119 -# 91| m91_121(unknown) = ^CallSideEffect : ~m91_118 -# 91| m91_122(unknown) = Chi : total:m91_118, partial:m91_121 -#-----| v0_33(void) = ^IndirectReadSideEffect[-1] : &:r0_32, ~m91_122 -#-----| Goto -> Block 4 +# 91| r91_64(glval) = VariableAddress[(unnamed local variable)] : +# 91| r91_65(glval) = FunctionAddress[unhandled_exception] : +# 91| v91_66(void) = Call[unhandled_exception] : func:r91_65, this:r91_64 +# 91| m91_67(unknown) = ^CallSideEffect : ~m0_22 +# 91| m91_68(unknown) = Chi : total:m0_22, partial:m91_67 +# 91| v91_69(void) = ^IndirectReadSideEffect[-1] : &:r91_64, ~m91_68 +# 91| m91_70(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r91_64 +# 91| m91_71(unknown) = Chi : total:m91_68, partial:m91_70 +#-----| Goto -> Block 6 + +#-----| Block 6 +#-----| m0_31(unknown) = Phi : from 3:~m0_22, from 5:~m91_71 +#-----| v0_32(void) = NoOp : +# 91| r91_72(glval) = VariableAddress[(unnamed local variable)] : +# 91| r91_73(glval) = FunctionAddress[final_suspend] : +# 91| r91_74(suspend_always) = Call[final_suspend] : func:r91_73, this:r91_72 +# 91| m91_75(unknown) = ^CallSideEffect : ~m0_31 +# 91| m91_76(unknown) = Chi : total:m0_31, partial:m91_75 +# 91| v91_77(void) = ^IndirectReadSideEffect[-1] : &:r91_72, ~m91_76 +# 91| m91_78(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r91_72 +# 91| m91_79(unknown) = Chi : total:m91_76, partial:m91_78 +#-----| r0_33(glval) = VariableAddress[#temp0:0] : +# 91| r91_80(glval) = VariableAddress[#temp91:21] : +# 91| r91_81(glval) = VariableAddress[(unnamed local variable)] : +# 91| r91_82(glval) = FunctionAddress[final_suspend] : +# 91| r91_83(suspend_always) = Call[final_suspend] : func:r91_82, this:r91_81 +# 91| m91_84(unknown) = ^CallSideEffect : ~m91_79 +# 91| m91_85(unknown) = Chi : total:m91_79, partial:m91_84 +# 91| v91_86(void) = ^IndirectReadSideEffect[-1] : &:r91_81, ~m91_85 +# 91| m91_87(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r91_81 +# 91| m91_88(unknown) = Chi : total:m91_85, partial:m91_87 +# 91| m91_89(suspend_always) = Store[#temp91:21] : &:r91_80, r91_83 +# 91| m91_90(unknown) = Chi : total:m91_88, partial:m91_89 +# 91| r91_91(suspend_always *) = CopyValue : r91_80 +# 91| m91_92(suspend_always *) = Store[#temp0:0] : &:r0_33, r91_91 +#-----| r0_34(suspend_always *) = Load[#temp0:0] : &:r0_33, m91_92 +# 91| r91_93(glval) = CopyValue : r0_34 +# 91| r91_94(glval) = Convert : r91_93 +# 91| r91_95(glval) = FunctionAddress[await_ready] : +# 91| r91_96(bool) = Call[await_ready] : func:r91_95, this:r91_94 +# 91| m91_97(unknown) = ^CallSideEffect : ~m91_90 +# 91| m91_98(unknown) = Chi : total:m91_90, partial:m91_97 +# 91| v91_99(void) = ^IndirectReadSideEffect[-1] : &:r91_94, ~m91_98 +#-----| v0_35(void) = ConditionalBranch : r91_96 +#-----| False -> Block 8 +#-----| True -> Block 7 + +# 91| Block 7 +# 91| m91_100(unknown) = Phi : from 6:~m91_98, from 8:~m91_130 +# 91| r91_101(suspend_always *) = CopyValue : r91_91 +# 91| r91_102(glval) = CopyValue : r91_101 +#-----| r0_36(glval) = Convert : r91_102 +# 91| r91_103(glval) = FunctionAddress[await_resume] : +# 91| v91_104(void) = Call[await_resume] : func:r91_103, this:r0_36 +# 91| m91_105(unknown) = ^CallSideEffect : ~m91_100 +# 91| m91_106(unknown) = Chi : total:m91_100, partial:m91_105 +#-----| v0_37(void) = ^IndirectReadSideEffect[-1] : &:r0_36, ~m91_106 +# 91| r91_107(glval) = VariableAddress[#return] : +# 91| v91_108(void) = ReturnValue : &:r91_107, ~m91_106 +# 91| v91_109(void) = AliasedUse : ~m91_106 +# 91| v91_110(void) = ExitFunction : + +# 91| Block 8 +# 91| r91_111(suspend_always *) = CopyValue : r91_91 +# 91| r91_112(glval) = CopyValue : r91_111 +#-----| r0_38(glval) = Convert : r91_112 +# 91| r91_113(glval) = FunctionAddress[await_suspend] : +# 91| r91_114(glval>) = VariableAddress[#temp91:21] : +# 91| m91_115(coroutine_handle) = Uninitialized[#temp91:21] : &:r91_114 +# 91| m91_116(unknown) = Chi : total:m91_98, partial:m91_115 +# 91| r91_117(glval) = FunctionAddress[coroutine_handle] : +# 91| r91_118(glval>) = VariableAddress[(unnamed local variable)] : +# 91| r91_119(glval>) = Convert : r91_118 +# 91| r91_120(coroutine_handle &) = CopyValue : r91_119 +# 91| v91_121(void) = Call[coroutine_handle] : func:r91_117, this:r91_114, 0:r91_120 +# 91| m91_122(unknown) = ^CallSideEffect : ~m91_116 +# 91| m91_123(unknown) = Chi : total:m91_116, partial:m91_122 +# 91| v91_124(void) = ^BufferReadSideEffect[0] : &:r91_120, ~m91_123 +# 91| m91_125(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r91_114 +# 91| m91_126(unknown) = Chi : total:m91_123, partial:m91_125 +# 91| r91_127(coroutine_handle) = Load[#temp91:21] : &:r91_114, ~m91_126 +# 91| v91_128(void) = Call[await_suspend] : func:r91_113, this:r0_38, 0:r91_127 +# 91| m91_129(unknown) = ^CallSideEffect : ~m91_126 +# 91| m91_130(unknown) = Chi : total:m91_126, partial:m91_129 +#-----| v0_39(void) = ^IndirectReadSideEffect[-1] : &:r0_38, ~m91_130 +#-----| Goto -> Block 7 + +# 91| Block 9 +# 91| v91_131(void) = Unreached : # 95| co_returnable_void co_yield_value_void(int) # 95| Block 0 @@ -1220,61 +1276,36 @@ coroutines.cpp: #-----| True -> Block 1 #-----| Block 1 -#-----| m0_8(unknown) = Phi : from 0:~m95_36, from 2:~m95_63 -#-----| r0_9(bool) = Constant[1] : -#-----| r0_10(glval) = VariableAddress[(unnamed local variable)] : -#-----| m0_11(bool) = Store[(unnamed local variable)] : &:r0_10, r0_9 -# 95| r95_38(suspend_always *) = CopyValue : r95_29 -# 95| r95_39(glval) = CopyValue : r95_38 -#-----| r0_12(glval) = Convert : r95_39 -# 95| r95_40(glval) = FunctionAddress[await_resume] : -# 95| v95_41(void) = Call[await_resume] : func:r95_40, this:r0_12 -# 95| m95_42(unknown) = ^CallSideEffect : ~m0_8 -# 95| m95_43(unknown) = Chi : total:m0_8, partial:m95_42 -#-----| v0_13(void) = ^IndirectReadSideEffect[-1] : &:r0_12, ~m95_43 -#-----| v0_14(void) = CopyValue : v95_41 -# 96| r96_1(glval) = VariableAddress[(unnamed local variable)] : -# 96| r96_2(glval) = FunctionAddress[yield_value] : -# 96| r96_3(glval) = VariableAddress[i] : -# 96| r96_4(int) = Load[i] : &:r96_3, m0_4 -# 96| r96_5(suspend_always) = Call[yield_value] : func:r96_2, this:r96_1, 0:r96_4 -# 96| m96_6(unknown) = ^CallSideEffect : ~m95_43 -# 96| m96_7(unknown) = Chi : total:m95_43, partial:m96_6 -# 96| v96_8(void) = ^IndirectReadSideEffect[-1] : &:r96_1, ~m96_7 -# 96| m96_9(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r96_1 -# 96| m96_10(unknown) = Chi : total:m96_7, partial:m96_9 -#-----| r0_15(glval) = VariableAddress[#temp0:0] : -# 96| r96_11(glval) = VariableAddress[#temp96:13] : -# 96| r96_12(glval) = VariableAddress[(unnamed local variable)] : -# 96| r96_13(glval) = FunctionAddress[yield_value] : -# 96| r96_14(glval) = VariableAddress[i] : -# 96| r96_15(int) = Load[i] : &:r96_14, m0_4 -# 96| r96_16(suspend_always) = Call[yield_value] : func:r96_13, this:r96_12, 0:r96_15 -# 96| m96_17(unknown) = ^CallSideEffect : ~m96_10 -# 96| m96_18(unknown) = Chi : total:m96_10, partial:m96_17 -# 96| v96_19(void) = ^IndirectReadSideEffect[-1] : &:r96_12, ~m96_18 -# 96| m96_20(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r96_12 -# 96| m96_21(unknown) = Chi : total:m96_18, partial:m96_20 -# 96| m96_22(suspend_always) = Store[#temp96:13] : &:r96_11, r96_16 -# 96| m96_23(unknown) = Chi : total:m96_21, partial:m96_22 -# 96| r96_24(suspend_always *) = CopyValue : r96_11 -# 96| m96_25(suspend_always *) = Store[#temp0:0] : &:r0_15, r96_24 -#-----| r0_16(suspend_always *) = Load[#temp0:0] : &:r0_15, m96_25 -# 96| r96_26(glval) = CopyValue : r0_16 -# 96| r96_27(glval) = Convert : r96_26 -# 96| r96_28(glval) = FunctionAddress[await_ready] : -# 96| r96_29(bool) = Call[await_ready] : func:r96_28, this:r96_27 -# 96| m96_30(unknown) = ^CallSideEffect : ~m96_23 -# 96| m96_31(unknown) = Chi : total:m96_23, partial:m96_30 -# 96| v96_32(void) = ^IndirectReadSideEffect[-1] : &:r96_27, ~m96_31 -# 96| v96_33(void) = ConditionalBranch : r96_29 -#-----| False -> Block 4 -#-----| True -> Block 3 +#-----| m0_8(unknown) = Phi : from 0:~m95_36, from 2:~m95_63 +#-----| r0_9(bool) = Constant[1] : +#-----| r0_10(glval) = VariableAddress[(unnamed local variable)] : +#-----| m0_11(bool) = Store[(unnamed local variable)] : &:r0_10, r0_9 +# 95| r95_38(suspend_always *) = CopyValue : r95_29 +# 95| r95_39(glval) = CopyValue : r95_38 +#-----| r0_12(glval) = Convert : r95_39 +# 95| r95_40(glval) = FunctionAddress[await_resume] : +# 95| v95_41(void) = Call[await_resume] : func:r95_40, this:r0_12 +# 95| m95_42(unknown) = ^CallSideEffect : ~m0_8 +# 95| m95_43(unknown) = Chi : total:m0_8, partial:m95_42 +#-----| v0_13(void) = ^IndirectReadSideEffect[-1] : &:r0_12, ~m95_43 +#-----| v0_14(void) = CopyValue : v95_41 +# 96| r96_1(glval) = VariableAddress[(unnamed local variable)] : +# 96| r96_2(glval) = FunctionAddress[yield_value] : +# 96| r96_3(glval) = VariableAddress[i] : +# 96| r96_4(int) = Load[i] : &:r96_3, m0_4 +# 96| r96_5(suspend_always) = Call[yield_value] : func:r96_2, this:r96_1, 0:r96_4 +# 96| m96_6(unknown) = ^CallSideEffect : ~m95_43 +# 96| m96_7(unknown) = Chi : total:m95_43, partial:m96_6 +# 96| v96_8(void) = ^IndirectReadSideEffect[-1] : &:r96_1, ~m96_7 +# 96| m96_9(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r96_1 +# 96| m96_10(unknown) = Chi : total:m96_7, partial:m96_9 +#-----| C++ Exception -> Block 8 +#-----| Goto -> Block 3 # 95| Block 2 # 95| r95_44(suspend_always *) = CopyValue : r95_29 # 95| r95_45(glval) = CopyValue : r95_44 -#-----| r0_17(glval) = Convert : r95_45 +#-----| r0_15(glval) = Convert : r95_45 # 95| r95_46(glval) = FunctionAddress[await_suspend] : # 95| r95_47(glval>) = VariableAddress[#temp95:20] : # 95| m95_48(coroutine_handle) = Uninitialized[#temp95:20] : &:r95_47 @@ -1290,14 +1321,47 @@ coroutines.cpp: # 95| m95_58(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r95_47 # 95| m95_59(unknown) = Chi : total:m95_56, partial:m95_58 # 95| r95_60(coroutine_handle) = Load[#temp95:20] : &:r95_47, ~m95_59 -# 95| v95_61(void) = Call[await_suspend] : func:r95_46, this:r0_17, 0:r95_60 +# 95| v95_61(void) = Call[await_suspend] : func:r95_46, this:r0_15, 0:r95_60 # 95| m95_62(unknown) = ^CallSideEffect : ~m95_59 # 95| m95_63(unknown) = Chi : total:m95_59, partial:m95_62 -#-----| v0_18(void) = ^IndirectReadSideEffect[-1] : &:r0_17, ~m95_63 +#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, ~m95_63 #-----| Goto -> Block 1 -# 96| Block 3 -# 96| m96_34(unknown) = Phi : from 1:~m96_31, from 4:~m96_60 +#-----| Block 3 +#-----| r0_17(glval) = VariableAddress[#temp0:0] : +# 96| r96_11(glval) = VariableAddress[#temp96:13] : +# 96| r96_12(glval) = VariableAddress[(unnamed local variable)] : +# 96| r96_13(glval) = FunctionAddress[yield_value] : +# 96| r96_14(glval) = VariableAddress[i] : +# 96| r96_15(int) = Load[i] : &:r96_14, m0_4 +# 96| r96_16(suspend_always) = Call[yield_value] : func:r96_13, this:r96_12, 0:r96_15 +# 96| m96_17(unknown) = ^CallSideEffect : ~m96_10 +# 96| m96_18(unknown) = Chi : total:m96_10, partial:m96_17 +# 96| v96_19(void) = ^IndirectReadSideEffect[-1] : &:r96_12, ~m96_18 +# 96| m96_20(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r96_12 +# 96| m96_21(unknown) = Chi : total:m96_18, partial:m96_20 +#-----| C++ Exception -> Block 8 +#-----| Goto -> Block 4 + +# 96| Block 4 +# 96| m96_22(suspend_always) = Store[#temp96:13] : &:r96_11, r96_16 +# 96| m96_23(unknown) = Chi : total:m96_21, partial:m96_22 +# 96| r96_24(suspend_always *) = CopyValue : r96_11 +# 96| m96_25(suspend_always *) = Store[#temp0:0] : &:r0_17, r96_24 +#-----| r0_18(suspend_always *) = Load[#temp0:0] : &:r0_17, m96_25 +# 96| r96_26(glval) = CopyValue : r0_18 +# 96| r96_27(glval) = Convert : r96_26 +# 96| r96_28(glval) = FunctionAddress[await_ready] : +# 96| r96_29(bool) = Call[await_ready] : func:r96_28, this:r96_27 +# 96| m96_30(unknown) = ^CallSideEffect : ~m96_23 +# 96| m96_31(unknown) = Chi : total:m96_23, partial:m96_30 +# 96| v96_32(void) = ^IndirectReadSideEffect[-1] : &:r96_27, ~m96_31 +# 96| v96_33(void) = ConditionalBranch : r96_29 +#-----| False -> Block 6 +#-----| True -> Block 5 + +# 96| Block 5 +# 96| m96_34(unknown) = Phi : from 4:~m96_31, from 6:~m96_60 # 96| r96_35(suspend_always *) = CopyValue : r96_24 # 96| r96_36(glval) = CopyValue : r96_35 #-----| r0_19(glval) = Convert : r96_36 @@ -1314,14 +1378,13 @@ coroutines.cpp: #-----| v0_26(void) = ^IndirectReadSideEffect[-1] : &:r0_21, ~m0_25 #-----| m0_27(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_21 #-----| m0_28(unknown) = Chi : total:m0_25, partial:m0_27 -# 97| v97_1(void) = NoOp : -#-----| v0_29(void) = NoOp : -#-----| Goto (back edge) -> Block 5 +#-----| C++ Exception -> Block 8 +#-----| Goto -> Block 7 -# 96| Block 4 +# 96| Block 6 # 96| r96_41(suspend_always *) = CopyValue : r96_24 # 96| r96_42(glval) = CopyValue : r96_41 -#-----| r0_30(glval) = Convert : r96_42 +#-----| r0_29(glval) = Convert : r96_42 # 96| r96_43(glval) = FunctionAddress[await_suspend] : # 96| r96_44(glval>) = VariableAddress[#temp96:3] : # 96| m96_45(coroutine_handle) = Uninitialized[#temp96:3] : &:r96_44 @@ -1337,87 +1400,117 @@ coroutines.cpp: # 96| m96_55(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r96_44 # 96| m96_56(unknown) = Chi : total:m96_53, partial:m96_55 # 96| r96_57(coroutine_handle) = Load[#temp96:3] : &:r96_44, ~m96_56 -# 96| v96_58(void) = Call[await_suspend] : func:r96_43, this:r0_30, 0:r96_57 +# 96| v96_58(void) = Call[await_suspend] : func:r96_43, this:r0_29, 0:r96_57 # 96| m96_59(unknown) = ^CallSideEffect : ~m96_56 # 96| m96_60(unknown) = Chi : total:m96_56, partial:m96_59 -#-----| v0_31(void) = ^IndirectReadSideEffect[-1] : &:r0_30, ~m96_60 -#-----| Goto -> Block 3 +#-----| v0_30(void) = ^IndirectReadSideEffect[-1] : &:r0_29, ~m96_60 +#-----| Goto -> Block 5 -#-----| Block 5 -#-----| v0_32(void) = NoOp : -# 95| r95_64(glval) = VariableAddress[(unnamed local variable)] : -# 95| r95_65(glval) = FunctionAddress[final_suspend] : -# 95| r95_66(suspend_always) = Call[final_suspend] : func:r95_65, this:r95_64 -# 95| m95_67(unknown) = ^CallSideEffect : ~m0_28 -# 95| m95_68(unknown) = Chi : total:m0_28, partial:m95_67 -# 95| v95_69(void) = ^IndirectReadSideEffect[-1] : &:r95_64, ~m95_68 -# 95| m95_70(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r95_64 -# 95| m95_71(unknown) = Chi : total:m95_68, partial:m95_70 -#-----| r0_33(glval) = VariableAddress[#temp0:0] : -# 95| r95_72(glval) = VariableAddress[#temp95:20] : -# 95| r95_73(glval) = VariableAddress[(unnamed local variable)] : -# 95| r95_74(glval) = FunctionAddress[final_suspend] : -# 95| r95_75(suspend_always) = Call[final_suspend] : func:r95_74, this:r95_73 -# 95| m95_76(unknown) = ^CallSideEffect : ~m95_71 -# 95| m95_77(unknown) = Chi : total:m95_71, partial:m95_76 -# 95| v95_78(void) = ^IndirectReadSideEffect[-1] : &:r95_73, ~m95_77 -# 95| m95_79(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r95_73 -# 95| m95_80(unknown) = Chi : total:m95_77, partial:m95_79 -# 95| m95_81(suspend_always) = Store[#temp95:20] : &:r95_72, r95_75 -# 95| m95_82(unknown) = Chi : total:m95_80, partial:m95_81 -# 95| r95_83(suspend_always *) = CopyValue : r95_72 -# 95| m95_84(suspend_always *) = Store[#temp0:0] : &:r0_33, r95_83 -#-----| r0_34(suspend_always *) = Load[#temp0:0] : &:r0_33, m95_84 -# 95| r95_85(glval) = CopyValue : r0_34 -# 95| r95_86(glval) = Convert : r95_85 -# 95| r95_87(glval) = FunctionAddress[await_ready] : -# 95| r95_88(bool) = Call[await_ready] : func:r95_87, this:r95_86 -# 95| m95_89(unknown) = ^CallSideEffect : ~m95_82 -# 95| m95_90(unknown) = Chi : total:m95_82, partial:m95_89 -# 95| v95_91(void) = ^IndirectReadSideEffect[-1] : &:r95_86, ~m95_90 -#-----| v0_35(void) = ConditionalBranch : r95_88 -#-----| False -> Block 7 -#-----| True -> Block 6 +# 97| Block 7 +# 97| v97_1(void) = NoOp : +#-----| v0_31(void) = NoOp : +#-----| Goto (back edge) -> Block 10 -# 95| Block 6 -# 95| m95_92(unknown) = Phi : from 5:~m95_90, from 7:~m95_122 -# 95| r95_93(suspend_always *) = CopyValue : r95_83 -# 95| r95_94(glval) = CopyValue : r95_93 -#-----| r0_36(glval) = Convert : r95_94 -# 95| r95_95(glval) = FunctionAddress[await_resume] : -# 95| v95_96(void) = Call[await_resume] : func:r95_95, this:r0_36 -# 95| m95_97(unknown) = ^CallSideEffect : ~m95_92 -# 95| m95_98(unknown) = Chi : total:m95_92, partial:m95_97 -#-----| v0_37(void) = ^IndirectReadSideEffect[-1] : &:r0_36, ~m95_98 -# 95| r95_99(glval) = VariableAddress[#return] : -# 95| v95_100(void) = ReturnValue : &:r95_99, ~m95_98 -# 95| v95_101(void) = AliasedUse : ~m95_98 -# 95| v95_102(void) = ExitFunction : +#-----| Block 8 +#-----| m0_32(unknown) = Phi : from 1:~m96_10, from 3:~m96_21, from 5:~m0_28 +#-----| v0_33(void) = CatchAny : +#-----| r0_34(glval) = VariableAddress[(unnamed local variable)] : +#-----| r0_35(bool) = Load[(unnamed local variable)] : &:r0_34, m0_11 +#-----| r0_36(bool) = LogicalNot : r0_35 +#-----| v0_37(void) = ConditionalBranch : r0_36 +#-----| False -> Block 9 +#-----| True -> Block 13 -# 95| Block 7 -# 95| r95_103(suspend_always *) = CopyValue : r95_83 -# 95| r95_104(glval) = CopyValue : r95_103 -#-----| r0_38(glval) = Convert : r95_104 -# 95| r95_105(glval) = FunctionAddress[await_suspend] : -# 95| r95_106(glval>) = VariableAddress[#temp95:20] : -# 95| m95_107(coroutine_handle) = Uninitialized[#temp95:20] : &:r95_106 -# 95| m95_108(unknown) = Chi : total:m95_90, partial:m95_107 -# 95| r95_109(glval) = FunctionAddress[coroutine_handle] : -# 95| r95_110(glval>) = VariableAddress[(unnamed local variable)] : -# 95| r95_111(glval>) = Convert : r95_110 -# 95| r95_112(coroutine_handle &) = CopyValue : r95_111 -# 95| v95_113(void) = Call[coroutine_handle] : func:r95_109, this:r95_106, 0:r95_112 -# 95| m95_114(unknown) = ^CallSideEffect : ~m95_108 -# 95| m95_115(unknown) = Chi : total:m95_108, partial:m95_114 -# 95| v95_116(void) = ^BufferReadSideEffect[0] : &:r95_112, ~m95_115 -# 95| m95_117(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r95_106 -# 95| m95_118(unknown) = Chi : total:m95_115, partial:m95_117 -# 95| r95_119(coroutine_handle) = Load[#temp95:20] : &:r95_106, ~m95_118 -# 95| v95_120(void) = Call[await_suspend] : func:r95_105, this:r0_38, 0:r95_119 -# 95| m95_121(unknown) = ^CallSideEffect : ~m95_118 -# 95| m95_122(unknown) = Chi : total:m95_118, partial:m95_121 -#-----| v0_39(void) = ^IndirectReadSideEffect[-1] : &:r0_38, ~m95_122 -#-----| Goto -> Block 6 +# 95| Block 9 +# 95| r95_64(glval) = VariableAddress[(unnamed local variable)] : +# 95| r95_65(glval) = FunctionAddress[unhandled_exception] : +# 95| v95_66(void) = Call[unhandled_exception] : func:r95_65, this:r95_64 +# 95| m95_67(unknown) = ^CallSideEffect : ~m0_32 +# 95| m95_68(unknown) = Chi : total:m0_32, partial:m95_67 +# 95| v95_69(void) = ^IndirectReadSideEffect[-1] : &:r95_64, ~m95_68 +# 95| m95_70(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r95_64 +# 95| m95_71(unknown) = Chi : total:m95_68, partial:m95_70 +#-----| Goto -> Block 10 + +#-----| Block 10 +#-----| m0_38(unknown) = Phi : from 7:~m0_28, from 9:~m95_71 +#-----| v0_39(void) = NoOp : +# 95| r95_72(glval) = VariableAddress[(unnamed local variable)] : +# 95| r95_73(glval) = FunctionAddress[final_suspend] : +# 95| r95_74(suspend_always) = Call[final_suspend] : func:r95_73, this:r95_72 +# 95| m95_75(unknown) = ^CallSideEffect : ~m0_38 +# 95| m95_76(unknown) = Chi : total:m0_38, partial:m95_75 +# 95| v95_77(void) = ^IndirectReadSideEffect[-1] : &:r95_72, ~m95_76 +# 95| m95_78(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r95_72 +# 95| m95_79(unknown) = Chi : total:m95_76, partial:m95_78 +#-----| r0_40(glval) = VariableAddress[#temp0:0] : +# 95| r95_80(glval) = VariableAddress[#temp95:20] : +# 95| r95_81(glval) = VariableAddress[(unnamed local variable)] : +# 95| r95_82(glval) = FunctionAddress[final_suspend] : +# 95| r95_83(suspend_always) = Call[final_suspend] : func:r95_82, this:r95_81 +# 95| m95_84(unknown) = ^CallSideEffect : ~m95_79 +# 95| m95_85(unknown) = Chi : total:m95_79, partial:m95_84 +# 95| v95_86(void) = ^IndirectReadSideEffect[-1] : &:r95_81, ~m95_85 +# 95| m95_87(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r95_81 +# 95| m95_88(unknown) = Chi : total:m95_85, partial:m95_87 +# 95| m95_89(suspend_always) = Store[#temp95:20] : &:r95_80, r95_83 +# 95| m95_90(unknown) = Chi : total:m95_88, partial:m95_89 +# 95| r95_91(suspend_always *) = CopyValue : r95_80 +# 95| m95_92(suspend_always *) = Store[#temp0:0] : &:r0_40, r95_91 +#-----| r0_41(suspend_always *) = Load[#temp0:0] : &:r0_40, m95_92 +# 95| r95_93(glval) = CopyValue : r0_41 +# 95| r95_94(glval) = Convert : r95_93 +# 95| r95_95(glval) = FunctionAddress[await_ready] : +# 95| r95_96(bool) = Call[await_ready] : func:r95_95, this:r95_94 +# 95| m95_97(unknown) = ^CallSideEffect : ~m95_90 +# 95| m95_98(unknown) = Chi : total:m95_90, partial:m95_97 +# 95| v95_99(void) = ^IndirectReadSideEffect[-1] : &:r95_94, ~m95_98 +#-----| v0_42(void) = ConditionalBranch : r95_96 +#-----| False -> Block 12 +#-----| True -> Block 11 + +# 95| Block 11 +# 95| m95_100(unknown) = Phi : from 10:~m95_98, from 12:~m95_130 +# 95| r95_101(suspend_always *) = CopyValue : r95_91 +# 95| r95_102(glval) = CopyValue : r95_101 +#-----| r0_43(glval) = Convert : r95_102 +# 95| r95_103(glval) = FunctionAddress[await_resume] : +# 95| v95_104(void) = Call[await_resume] : func:r95_103, this:r0_43 +# 95| m95_105(unknown) = ^CallSideEffect : ~m95_100 +# 95| m95_106(unknown) = Chi : total:m95_100, partial:m95_105 +#-----| v0_44(void) = ^IndirectReadSideEffect[-1] : &:r0_43, ~m95_106 +# 95| r95_107(glval) = VariableAddress[#return] : +# 95| v95_108(void) = ReturnValue : &:r95_107, ~m95_106 +# 95| v95_109(void) = AliasedUse : ~m95_106 +# 95| v95_110(void) = ExitFunction : + +# 95| Block 12 +# 95| r95_111(suspend_always *) = CopyValue : r95_91 +# 95| r95_112(glval) = CopyValue : r95_111 +#-----| r0_45(glval) = Convert : r95_112 +# 95| r95_113(glval) = FunctionAddress[await_suspend] : +# 95| r95_114(glval>) = VariableAddress[#temp95:20] : +# 95| m95_115(coroutine_handle) = Uninitialized[#temp95:20] : &:r95_114 +# 95| m95_116(unknown) = Chi : total:m95_98, partial:m95_115 +# 95| r95_117(glval) = FunctionAddress[coroutine_handle] : +# 95| r95_118(glval>) = VariableAddress[(unnamed local variable)] : +# 95| r95_119(glval>) = Convert : r95_118 +# 95| r95_120(coroutine_handle &) = CopyValue : r95_119 +# 95| v95_121(void) = Call[coroutine_handle] : func:r95_117, this:r95_114, 0:r95_120 +# 95| m95_122(unknown) = ^CallSideEffect : ~m95_116 +# 95| m95_123(unknown) = Chi : total:m95_116, partial:m95_122 +# 95| v95_124(void) = ^BufferReadSideEffect[0] : &:r95_120, ~m95_123 +# 95| m95_125(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r95_114 +# 95| m95_126(unknown) = Chi : total:m95_123, partial:m95_125 +# 95| r95_127(coroutine_handle) = Load[#temp95:20] : &:r95_114, ~m95_126 +# 95| v95_128(void) = Call[await_suspend] : func:r95_113, this:r0_45, 0:r95_127 +# 95| m95_129(unknown) = ^CallSideEffect : ~m95_126 +# 95| m95_130(unknown) = Chi : total:m95_126, partial:m95_129 +#-----| v0_46(void) = ^IndirectReadSideEffect[-1] : &:r0_45, ~m95_130 +#-----| Goto -> Block 11 + +# 95| Block 13 +# 95| v95_131(void) = Unreached : # 99| co_returnable_value co_yield_value_value(int) # 99| Block 0 @@ -1469,61 +1562,36 @@ coroutines.cpp: #-----| True -> Block 1 #-----| Block 1 -#-----| m0_8(unknown) = Phi : from 0:~m99_36, from 2:~m99_63 -#-----| r0_9(bool) = Constant[1] : -#-----| r0_10(glval) = VariableAddress[(unnamed local variable)] : -#-----| m0_11(bool) = Store[(unnamed local variable)] : &:r0_10, r0_9 -# 99| r99_38(suspend_always *) = CopyValue : r99_29 -# 99| r99_39(glval) = CopyValue : r99_38 -#-----| r0_12(glval) = Convert : r99_39 -# 99| r99_40(glval) = FunctionAddress[await_resume] : -# 99| v99_41(void) = Call[await_resume] : func:r99_40, this:r0_12 -# 99| m99_42(unknown) = ^CallSideEffect : ~m0_8 -# 99| m99_43(unknown) = Chi : total:m0_8, partial:m99_42 -#-----| v0_13(void) = ^IndirectReadSideEffect[-1] : &:r0_12, ~m99_43 -#-----| v0_14(void) = CopyValue : v99_41 -# 100| r100_1(glval) = VariableAddress[(unnamed local variable)] : -# 100| r100_2(glval) = FunctionAddress[yield_value] : -# 100| r100_3(glval) = VariableAddress[i] : -# 100| r100_4(int) = Load[i] : &:r100_3, m0_4 -# 100| r100_5(suspend_always) = Call[yield_value] : func:r100_2, this:r100_1, 0:r100_4 -# 100| m100_6(unknown) = ^CallSideEffect : ~m99_43 -# 100| m100_7(unknown) = Chi : total:m99_43, partial:m100_6 -# 100| v100_8(void) = ^IndirectReadSideEffect[-1] : &:r100_1, ~m100_7 -# 100| m100_9(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r100_1 -# 100| m100_10(unknown) = Chi : total:m100_7, partial:m100_9 -#-----| r0_15(glval) = VariableAddress[#temp0:0] : -# 100| r100_11(glval) = VariableAddress[#temp100:13] : -# 100| r100_12(glval) = VariableAddress[(unnamed local variable)] : -# 100| r100_13(glval) = FunctionAddress[yield_value] : -# 100| r100_14(glval) = VariableAddress[i] : -# 100| r100_15(int) = Load[i] : &:r100_14, m0_4 -# 100| r100_16(suspend_always) = Call[yield_value] : func:r100_13, this:r100_12, 0:r100_15 -# 100| m100_17(unknown) = ^CallSideEffect : ~m100_10 -# 100| m100_18(unknown) = Chi : total:m100_10, partial:m100_17 -# 100| v100_19(void) = ^IndirectReadSideEffect[-1] : &:r100_12, ~m100_18 -# 100| m100_20(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r100_12 -# 100| m100_21(unknown) = Chi : total:m100_18, partial:m100_20 -# 100| m100_22(suspend_always) = Store[#temp100:13] : &:r100_11, r100_16 -# 100| m100_23(unknown) = Chi : total:m100_21, partial:m100_22 -# 100| r100_24(suspend_always *) = CopyValue : r100_11 -# 100| m100_25(suspend_always *) = Store[#temp0:0] : &:r0_15, r100_24 -#-----| r0_16(suspend_always *) = Load[#temp0:0] : &:r0_15, m100_25 -# 100| r100_26(glval) = CopyValue : r0_16 -# 100| r100_27(glval) = Convert : r100_26 -# 100| r100_28(glval) = FunctionAddress[await_ready] : -# 100| r100_29(bool) = Call[await_ready] : func:r100_28, this:r100_27 -# 100| m100_30(unknown) = ^CallSideEffect : ~m100_23 -# 100| m100_31(unknown) = Chi : total:m100_23, partial:m100_30 -# 100| v100_32(void) = ^IndirectReadSideEffect[-1] : &:r100_27, ~m100_31 -# 100| v100_33(void) = ConditionalBranch : r100_29 -#-----| False -> Block 4 -#-----| True -> Block 3 +#-----| m0_8(unknown) = Phi : from 0:~m99_36, from 2:~m99_63 +#-----| r0_9(bool) = Constant[1] : +#-----| r0_10(glval) = VariableAddress[(unnamed local variable)] : +#-----| m0_11(bool) = Store[(unnamed local variable)] : &:r0_10, r0_9 +# 99| r99_38(suspend_always *) = CopyValue : r99_29 +# 99| r99_39(glval) = CopyValue : r99_38 +#-----| r0_12(glval) = Convert : r99_39 +# 99| r99_40(glval) = FunctionAddress[await_resume] : +# 99| v99_41(void) = Call[await_resume] : func:r99_40, this:r0_12 +# 99| m99_42(unknown) = ^CallSideEffect : ~m0_8 +# 99| m99_43(unknown) = Chi : total:m0_8, partial:m99_42 +#-----| v0_13(void) = ^IndirectReadSideEffect[-1] : &:r0_12, ~m99_43 +#-----| v0_14(void) = CopyValue : v99_41 +# 100| r100_1(glval) = VariableAddress[(unnamed local variable)] : +# 100| r100_2(glval) = FunctionAddress[yield_value] : +# 100| r100_3(glval) = VariableAddress[i] : +# 100| r100_4(int) = Load[i] : &:r100_3, m0_4 +# 100| r100_5(suspend_always) = Call[yield_value] : func:r100_2, this:r100_1, 0:r100_4 +# 100| m100_6(unknown) = ^CallSideEffect : ~m99_43 +# 100| m100_7(unknown) = Chi : total:m99_43, partial:m100_6 +# 100| v100_8(void) = ^IndirectReadSideEffect[-1] : &:r100_1, ~m100_7 +# 100| m100_9(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r100_1 +# 100| m100_10(unknown) = Chi : total:m100_7, partial:m100_9 +#-----| C++ Exception -> Block 7 +#-----| Goto -> Block 3 # 99| Block 2 # 99| r99_44(suspend_always *) = CopyValue : r99_29 # 99| r99_45(glval) = CopyValue : r99_44 -#-----| r0_17(glval) = Convert : r99_45 +#-----| r0_15(glval) = Convert : r99_45 # 99| r99_46(glval) = FunctionAddress[await_suspend] : # 99| r99_47(glval>) = VariableAddress[#temp99:21] : # 99| m99_48(coroutine_handle) = Uninitialized[#temp99:21] : &:r99_47 @@ -1539,61 +1607,61 @@ coroutines.cpp: # 99| m99_58(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r99_47 # 99| m99_59(unknown) = Chi : total:m99_56, partial:m99_58 # 99| r99_60(coroutine_handle) = Load[#temp99:21] : &:r99_47, ~m99_59 -# 99| v99_61(void) = Call[await_suspend] : func:r99_46, this:r0_17, 0:r99_60 +# 99| v99_61(void) = Call[await_suspend] : func:r99_46, this:r0_15, 0:r99_60 # 99| m99_62(unknown) = ^CallSideEffect : ~m99_59 # 99| m99_63(unknown) = Chi : total:m99_59, partial:m99_62 -#-----| v0_18(void) = ^IndirectReadSideEffect[-1] : &:r0_17, ~m99_63 +#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, ~m99_63 #-----| Goto -> Block 1 -# 100| Block 3 -# 100| m100_34(unknown) = Phi : from 1:~m100_31, from 4:~m100_60 -# 100| r100_35(suspend_always *) = CopyValue : r100_24 -# 100| r100_36(glval) = CopyValue : r100_35 -#-----| r0_19(glval) = Convert : r100_36 -# 100| r100_37(glval) = FunctionAddress[await_resume] : -# 100| v100_38(void) = Call[await_resume] : func:r100_37, this:r0_19 -# 100| m100_39(unknown) = ^CallSideEffect : ~m100_34 -# 100| m100_40(unknown) = Chi : total:m100_34, partial:m100_39 -#-----| v0_20(void) = ^IndirectReadSideEffect[-1] : &:r0_19, ~m100_40 -#-----| v0_21(void) = NoOp : -# 99| r99_64(glval) = VariableAddress[(unnamed local variable)] : -# 99| r99_65(glval) = FunctionAddress[final_suspend] : -# 99| r99_66(suspend_always) = Call[final_suspend] : func:r99_65, this:r99_64 -# 99| m99_67(unknown) = ^CallSideEffect : ~m100_40 -# 99| m99_68(unknown) = Chi : total:m100_40, partial:m99_67 -# 99| v99_69(void) = ^IndirectReadSideEffect[-1] : &:r99_64, ~m99_68 -# 99| m99_70(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r99_64 -# 99| m99_71(unknown) = Chi : total:m99_68, partial:m99_70 -#-----| r0_22(glval) = VariableAddress[#temp0:0] : -# 99| r99_72(glval) = VariableAddress[#temp99:21] : -# 99| r99_73(glval) = VariableAddress[(unnamed local variable)] : -# 99| r99_74(glval) = FunctionAddress[final_suspend] : -# 99| r99_75(suspend_always) = Call[final_suspend] : func:r99_74, this:r99_73 -# 99| m99_76(unknown) = ^CallSideEffect : ~m99_71 -# 99| m99_77(unknown) = Chi : total:m99_71, partial:m99_76 -# 99| v99_78(void) = ^IndirectReadSideEffect[-1] : &:r99_73, ~m99_77 -# 99| m99_79(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r99_73 -# 99| m99_80(unknown) = Chi : total:m99_77, partial:m99_79 -# 99| m99_81(suspend_always) = Store[#temp99:21] : &:r99_72, r99_75 -# 99| m99_82(unknown) = Chi : total:m99_80, partial:m99_81 -# 99| r99_83(suspend_always *) = CopyValue : r99_72 -# 99| m99_84(suspend_always *) = Store[#temp0:0] : &:r0_22, r99_83 -#-----| r0_23(suspend_always *) = Load[#temp0:0] : &:r0_22, m99_84 -# 99| r99_85(glval) = CopyValue : r0_23 -# 99| r99_86(glval) = Convert : r99_85 -# 99| r99_87(glval) = FunctionAddress[await_ready] : -# 99| r99_88(bool) = Call[await_ready] : func:r99_87, this:r99_86 -# 99| m99_89(unknown) = ^CallSideEffect : ~m99_82 -# 99| m99_90(unknown) = Chi : total:m99_82, partial:m99_89 -# 99| v99_91(void) = ^IndirectReadSideEffect[-1] : &:r99_86, ~m99_90 -#-----| v0_24(void) = ConditionalBranch : r99_88 +#-----| Block 3 +#-----| r0_17(glval) = VariableAddress[#temp0:0] : +# 100| r100_11(glval) = VariableAddress[#temp100:13] : +# 100| r100_12(glval) = VariableAddress[(unnamed local variable)] : +# 100| r100_13(glval) = FunctionAddress[yield_value] : +# 100| r100_14(glval) = VariableAddress[i] : +# 100| r100_15(int) = Load[i] : &:r100_14, m0_4 +# 100| r100_16(suspend_always) = Call[yield_value] : func:r100_13, this:r100_12, 0:r100_15 +# 100| m100_17(unknown) = ^CallSideEffect : ~m100_10 +# 100| m100_18(unknown) = Chi : total:m100_10, partial:m100_17 +# 100| v100_19(void) = ^IndirectReadSideEffect[-1] : &:r100_12, ~m100_18 +# 100| m100_20(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r100_12 +# 100| m100_21(unknown) = Chi : total:m100_18, partial:m100_20 +#-----| C++ Exception -> Block 7 +#-----| Goto -> Block 4 + +# 100| Block 4 +# 100| m100_22(suspend_always) = Store[#temp100:13] : &:r100_11, r100_16 +# 100| m100_23(unknown) = Chi : total:m100_21, partial:m100_22 +# 100| r100_24(suspend_always *) = CopyValue : r100_11 +# 100| m100_25(suspend_always *) = Store[#temp0:0] : &:r0_17, r100_24 +#-----| r0_18(suspend_always *) = Load[#temp0:0] : &:r0_17, m100_25 +# 100| r100_26(glval) = CopyValue : r0_18 +# 100| r100_27(glval) = Convert : r100_26 +# 100| r100_28(glval) = FunctionAddress[await_ready] : +# 100| r100_29(bool) = Call[await_ready] : func:r100_28, this:r100_27 +# 100| m100_30(unknown) = ^CallSideEffect : ~m100_23 +# 100| m100_31(unknown) = Chi : total:m100_23, partial:m100_30 +# 100| v100_32(void) = ^IndirectReadSideEffect[-1] : &:r100_27, ~m100_31 +# 100| v100_33(void) = ConditionalBranch : r100_29 #-----| False -> Block 6 #-----| True -> Block 5 -# 100| Block 4 +# 100| Block 5 +# 100| m100_34(unknown) = Phi : from 4:~m100_31, from 6:~m100_60 +# 100| r100_35(suspend_always *) = CopyValue : r100_24 +# 100| r100_36(glval) = CopyValue : r100_35 +#-----| r0_19(glval) = Convert : r100_36 +# 100| r100_37(glval) = FunctionAddress[await_resume] : +# 100| v100_38(void) = Call[await_resume] : func:r100_37, this:r0_19 +# 100| m100_39(unknown) = ^CallSideEffect : ~m100_34 +# 100| m100_40(unknown) = Chi : total:m100_34, partial:m100_39 +#-----| v0_20(void) = ^IndirectReadSideEffect[-1] : &:r0_19, ~m100_40 +#-----| Goto -> Block 9 + +# 100| Block 6 # 100| r100_41(suspend_always *) = CopyValue : r100_24 # 100| r100_42(glval) = CopyValue : r100_41 -#-----| r0_25(glval) = Convert : r100_42 +#-----| r0_21(glval) = Convert : r100_42 # 100| r100_43(glval) = FunctionAddress[await_suspend] : # 100| r100_44(glval>) = VariableAddress[#temp100:3] : # 100| m100_45(coroutine_handle) = Uninitialized[#temp100:3] : &:r100_44 @@ -1609,52 +1677,113 @@ coroutines.cpp: # 100| m100_55(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r100_44 # 100| m100_56(unknown) = Chi : total:m100_53, partial:m100_55 # 100| r100_57(coroutine_handle) = Load[#temp100:3] : &:r100_44, ~m100_56 -# 100| v100_58(void) = Call[await_suspend] : func:r100_43, this:r0_25, 0:r100_57 +# 100| v100_58(void) = Call[await_suspend] : func:r100_43, this:r0_21, 0:r100_57 # 100| m100_59(unknown) = ^CallSideEffect : ~m100_56 # 100| m100_60(unknown) = Chi : total:m100_56, partial:m100_59 -#-----| v0_26(void) = ^IndirectReadSideEffect[-1] : &:r0_25, ~m100_60 -#-----| Goto -> Block 3 - -# 99| Block 5 -# 99| m99_92(unknown) = Phi : from 3:~m99_90, from 6:~m99_122 -# 99| r99_93(suspend_always *) = CopyValue : r99_83 -# 99| r99_94(glval) = CopyValue : r99_93 -#-----| r0_27(glval) = Convert : r99_94 -# 99| r99_95(glval) = FunctionAddress[await_resume] : -# 99| v99_96(void) = Call[await_resume] : func:r99_95, this:r0_27 -# 99| m99_97(unknown) = ^CallSideEffect : ~m99_92 -# 99| m99_98(unknown) = Chi : total:m99_92, partial:m99_97 -#-----| v0_28(void) = ^IndirectReadSideEffect[-1] : &:r0_27, ~m99_98 -# 99| r99_99(glval) = VariableAddress[#return] : -# 99| v99_100(void) = ReturnValue : &:r99_99, ~m99_98 -# 99| v99_101(void) = AliasedUse : ~m99_98 -# 99| v99_102(void) = ExitFunction : - -# 99| Block 6 -# 99| r99_103(suspend_always *) = CopyValue : r99_83 -# 99| r99_104(glval) = CopyValue : r99_103 -#-----| r0_29(glval) = Convert : r99_104 -# 99| r99_105(glval) = FunctionAddress[await_suspend] : -# 99| r99_106(glval>) = VariableAddress[#temp99:21] : -# 99| m99_107(coroutine_handle) = Uninitialized[#temp99:21] : &:r99_106 -# 99| m99_108(unknown) = Chi : total:m99_90, partial:m99_107 -# 99| r99_109(glval) = FunctionAddress[coroutine_handle] : -# 99| r99_110(glval>) = VariableAddress[(unnamed local variable)] : -# 99| r99_111(glval>) = Convert : r99_110 -# 99| r99_112(coroutine_handle &) = CopyValue : r99_111 -# 99| v99_113(void) = Call[coroutine_handle] : func:r99_109, this:r99_106, 0:r99_112 -# 99| m99_114(unknown) = ^CallSideEffect : ~m99_108 -# 99| m99_115(unknown) = Chi : total:m99_108, partial:m99_114 -# 99| v99_116(void) = ^BufferReadSideEffect[0] : &:r99_112, ~m99_115 -# 99| m99_117(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r99_106 -# 99| m99_118(unknown) = Chi : total:m99_115, partial:m99_117 -# 99| r99_119(coroutine_handle) = Load[#temp99:21] : &:r99_106, ~m99_118 -# 99| v99_120(void) = Call[await_suspend] : func:r99_105, this:r0_29, 0:r99_119 -# 99| m99_121(unknown) = ^CallSideEffect : ~m99_118 -# 99| m99_122(unknown) = Chi : total:m99_118, partial:m99_121 -#-----| v0_30(void) = ^IndirectReadSideEffect[-1] : &:r0_29, ~m99_122 +#-----| v0_22(void) = ^IndirectReadSideEffect[-1] : &:r0_21, ~m100_60 #-----| Goto -> Block 5 +#-----| Block 7 +#-----| m0_23(unknown) = Phi : from 1:~m100_10, from 3:~m100_21 +#-----| v0_24(void) = CatchAny : +#-----| r0_25(glval) = VariableAddress[(unnamed local variable)] : +#-----| r0_26(bool) = Load[(unnamed local variable)] : &:r0_25, m0_11 +#-----| r0_27(bool) = LogicalNot : r0_26 +#-----| v0_28(void) = ConditionalBranch : r0_27 +#-----| False -> Block 8 +#-----| True -> Block 12 + +# 99| Block 8 +# 99| r99_64(glval) = VariableAddress[(unnamed local variable)] : +# 99| r99_65(glval) = FunctionAddress[unhandled_exception] : +# 99| v99_66(void) = Call[unhandled_exception] : func:r99_65, this:r99_64 +# 99| m99_67(unknown) = ^CallSideEffect : ~m0_23 +# 99| m99_68(unknown) = Chi : total:m0_23, partial:m99_67 +# 99| v99_69(void) = ^IndirectReadSideEffect[-1] : &:r99_64, ~m99_68 +# 99| m99_70(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r99_64 +# 99| m99_71(unknown) = Chi : total:m99_68, partial:m99_70 +#-----| Goto -> Block 9 + +#-----| Block 9 +#-----| m0_29(unknown) = Phi : from 5:~m100_40, from 8:~m99_71 +#-----| v0_30(void) = NoOp : +# 99| r99_72(glval) = VariableAddress[(unnamed local variable)] : +# 99| r99_73(glval) = FunctionAddress[final_suspend] : +# 99| r99_74(suspend_always) = Call[final_suspend] : func:r99_73, this:r99_72 +# 99| m99_75(unknown) = ^CallSideEffect : ~m0_29 +# 99| m99_76(unknown) = Chi : total:m0_29, partial:m99_75 +# 99| v99_77(void) = ^IndirectReadSideEffect[-1] : &:r99_72, ~m99_76 +# 99| m99_78(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r99_72 +# 99| m99_79(unknown) = Chi : total:m99_76, partial:m99_78 +#-----| r0_31(glval) = VariableAddress[#temp0:0] : +# 99| r99_80(glval) = VariableAddress[#temp99:21] : +# 99| r99_81(glval) = VariableAddress[(unnamed local variable)] : +# 99| r99_82(glval) = FunctionAddress[final_suspend] : +# 99| r99_83(suspend_always) = Call[final_suspend] : func:r99_82, this:r99_81 +# 99| m99_84(unknown) = ^CallSideEffect : ~m99_79 +# 99| m99_85(unknown) = Chi : total:m99_79, partial:m99_84 +# 99| v99_86(void) = ^IndirectReadSideEffect[-1] : &:r99_81, ~m99_85 +# 99| m99_87(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r99_81 +# 99| m99_88(unknown) = Chi : total:m99_85, partial:m99_87 +# 99| m99_89(suspend_always) = Store[#temp99:21] : &:r99_80, r99_83 +# 99| m99_90(unknown) = Chi : total:m99_88, partial:m99_89 +# 99| r99_91(suspend_always *) = CopyValue : r99_80 +# 99| m99_92(suspend_always *) = Store[#temp0:0] : &:r0_31, r99_91 +#-----| r0_32(suspend_always *) = Load[#temp0:0] : &:r0_31, m99_92 +# 99| r99_93(glval) = CopyValue : r0_32 +# 99| r99_94(glval) = Convert : r99_93 +# 99| r99_95(glval) = FunctionAddress[await_ready] : +# 99| r99_96(bool) = Call[await_ready] : func:r99_95, this:r99_94 +# 99| m99_97(unknown) = ^CallSideEffect : ~m99_90 +# 99| m99_98(unknown) = Chi : total:m99_90, partial:m99_97 +# 99| v99_99(void) = ^IndirectReadSideEffect[-1] : &:r99_94, ~m99_98 +#-----| v0_33(void) = ConditionalBranch : r99_96 +#-----| False -> Block 11 +#-----| True -> Block 10 + +# 99| Block 10 +# 99| m99_100(unknown) = Phi : from 9:~m99_98, from 11:~m99_130 +# 99| r99_101(suspend_always *) = CopyValue : r99_91 +# 99| r99_102(glval) = CopyValue : r99_101 +#-----| r0_34(glval) = Convert : r99_102 +# 99| r99_103(glval) = FunctionAddress[await_resume] : +# 99| v99_104(void) = Call[await_resume] : func:r99_103, this:r0_34 +# 99| m99_105(unknown) = ^CallSideEffect : ~m99_100 +# 99| m99_106(unknown) = Chi : total:m99_100, partial:m99_105 +#-----| v0_35(void) = ^IndirectReadSideEffect[-1] : &:r0_34, ~m99_106 +# 99| r99_107(glval) = VariableAddress[#return] : +# 99| v99_108(void) = ReturnValue : &:r99_107, ~m99_106 +# 99| v99_109(void) = AliasedUse : ~m99_106 +# 99| v99_110(void) = ExitFunction : + +# 99| Block 11 +# 99| r99_111(suspend_always *) = CopyValue : r99_91 +# 99| r99_112(glval) = CopyValue : r99_111 +#-----| r0_36(glval) = Convert : r99_112 +# 99| r99_113(glval) = FunctionAddress[await_suspend] : +# 99| r99_114(glval>) = VariableAddress[#temp99:21] : +# 99| m99_115(coroutine_handle) = Uninitialized[#temp99:21] : &:r99_114 +# 99| m99_116(unknown) = Chi : total:m99_98, partial:m99_115 +# 99| r99_117(glval) = FunctionAddress[coroutine_handle] : +# 99| r99_118(glval>) = VariableAddress[(unnamed local variable)] : +# 99| r99_119(glval>) = Convert : r99_118 +# 99| r99_120(coroutine_handle &) = CopyValue : r99_119 +# 99| v99_121(void) = Call[coroutine_handle] : func:r99_117, this:r99_114, 0:r99_120 +# 99| m99_122(unknown) = ^CallSideEffect : ~m99_116 +# 99| m99_123(unknown) = Chi : total:m99_116, partial:m99_122 +# 99| v99_124(void) = ^BufferReadSideEffect[0] : &:r99_120, ~m99_123 +# 99| m99_125(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r99_114 +# 99| m99_126(unknown) = Chi : total:m99_123, partial:m99_125 +# 99| r99_127(coroutine_handle) = Load[#temp99:21] : &:r99_114, ~m99_126 +# 99| v99_128(void) = Call[await_suspend] : func:r99_113, this:r0_36, 0:r99_127 +# 99| m99_129(unknown) = ^CallSideEffect : ~m99_126 +# 99| m99_130(unknown) = Chi : total:m99_126, partial:m99_129 +#-----| v0_37(void) = ^IndirectReadSideEffect[-1] : &:r0_36, ~m99_130 +#-----| Goto -> Block 10 + +# 99| Block 12 +# 99| v99_131(void) = Unreached : + # 103| co_returnable_void co_yield_and_return_void(int) # 103| Block 0 # 103| v103_1(void) = EnterFunction : @@ -1728,38 +1857,13 @@ coroutines.cpp: # 104| v104_8(void) = ^IndirectReadSideEffect[-1] : &:r104_1, ~m104_7 # 104| m104_9(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r104_1 # 104| m104_10(unknown) = Chi : total:m104_7, partial:m104_9 -#-----| r0_15(glval) = VariableAddress[#temp0:0] : -# 104| r104_11(glval) = VariableAddress[#temp104:13] : -# 104| r104_12(glval) = VariableAddress[(unnamed local variable)] : -# 104| r104_13(glval) = FunctionAddress[yield_value] : -# 104| r104_14(glval) = VariableAddress[i] : -# 104| r104_15(int) = Load[i] : &:r104_14, m0_4 -# 104| r104_16(suspend_always) = Call[yield_value] : func:r104_13, this:r104_12, 0:r104_15 -# 104| m104_17(unknown) = ^CallSideEffect : ~m104_10 -# 104| m104_18(unknown) = Chi : total:m104_10, partial:m104_17 -# 104| v104_19(void) = ^IndirectReadSideEffect[-1] : &:r104_12, ~m104_18 -# 104| m104_20(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r104_12 -# 104| m104_21(unknown) = Chi : total:m104_18, partial:m104_20 -# 104| m104_22(suspend_always) = Store[#temp104:13] : &:r104_11, r104_16 -# 104| m104_23(unknown) = Chi : total:m104_21, partial:m104_22 -# 104| r104_24(suspend_always *) = CopyValue : r104_11 -# 104| m104_25(suspend_always *) = Store[#temp0:0] : &:r0_15, r104_24 -#-----| r0_16(suspend_always *) = Load[#temp0:0] : &:r0_15, m104_25 -# 104| r104_26(glval) = CopyValue : r0_16 -# 104| r104_27(glval) = Convert : r104_26 -# 104| r104_28(glval) = FunctionAddress[await_ready] : -# 104| r104_29(bool) = Call[await_ready] : func:r104_28, this:r104_27 -# 104| m104_30(unknown) = ^CallSideEffect : ~m104_23 -# 104| m104_31(unknown) = Chi : total:m104_23, partial:m104_30 -# 104| v104_32(void) = ^IndirectReadSideEffect[-1] : &:r104_27, ~m104_31 -# 104| v104_33(void) = ConditionalBranch : r104_29 -#-----| False -> Block 4 -#-----| True -> Block 3 +#-----| C++ Exception -> Block 8 +#-----| Goto -> Block 3 # 103| Block 2 # 103| r103_44(suspend_always *) = CopyValue : r103_29 # 103| r103_45(glval) = CopyValue : r103_44 -#-----| r0_17(glval) = Convert : r103_45 +#-----| r0_15(glval) = Convert : r103_45 # 103| r103_46(glval) = FunctionAddress[await_suspend] : # 103| r103_47(glval>) = VariableAddress[#temp103:20] : # 103| m103_48(coroutine_handle) = Uninitialized[#temp103:20] : &:r103_47 @@ -1775,14 +1879,47 @@ coroutines.cpp: # 103| m103_58(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r103_47 # 103| m103_59(unknown) = Chi : total:m103_56, partial:m103_58 # 103| r103_60(coroutine_handle) = Load[#temp103:20] : &:r103_47, ~m103_59 -# 103| v103_61(void) = Call[await_suspend] : func:r103_46, this:r0_17, 0:r103_60 +# 103| v103_61(void) = Call[await_suspend] : func:r103_46, this:r0_15, 0:r103_60 # 103| m103_62(unknown) = ^CallSideEffect : ~m103_59 # 103| m103_63(unknown) = Chi : total:m103_59, partial:m103_62 -#-----| v0_18(void) = ^IndirectReadSideEffect[-1] : &:r0_17, ~m103_63 +#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, ~m103_63 #-----| Goto -> Block 1 -# 104| Block 3 -# 104| m104_34(unknown) = Phi : from 1:~m104_31, from 4:~m104_60 +#-----| Block 3 +#-----| r0_17(glval) = VariableAddress[#temp0:0] : +# 104| r104_11(glval) = VariableAddress[#temp104:13] : +# 104| r104_12(glval) = VariableAddress[(unnamed local variable)] : +# 104| r104_13(glval) = FunctionAddress[yield_value] : +# 104| r104_14(glval) = VariableAddress[i] : +# 104| r104_15(int) = Load[i] : &:r104_14, m0_4 +# 104| r104_16(suspend_always) = Call[yield_value] : func:r104_13, this:r104_12, 0:r104_15 +# 104| m104_17(unknown) = ^CallSideEffect : ~m104_10 +# 104| m104_18(unknown) = Chi : total:m104_10, partial:m104_17 +# 104| v104_19(void) = ^IndirectReadSideEffect[-1] : &:r104_12, ~m104_18 +# 104| m104_20(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r104_12 +# 104| m104_21(unknown) = Chi : total:m104_18, partial:m104_20 +#-----| C++ Exception -> Block 8 +#-----| Goto -> Block 4 + +# 104| Block 4 +# 104| m104_22(suspend_always) = Store[#temp104:13] : &:r104_11, r104_16 +# 104| m104_23(unknown) = Chi : total:m104_21, partial:m104_22 +# 104| r104_24(suspend_always *) = CopyValue : r104_11 +# 104| m104_25(suspend_always *) = Store[#temp0:0] : &:r0_17, r104_24 +#-----| r0_18(suspend_always *) = Load[#temp0:0] : &:r0_17, m104_25 +# 104| r104_26(glval) = CopyValue : r0_18 +# 104| r104_27(glval) = Convert : r104_26 +# 104| r104_28(glval) = FunctionAddress[await_ready] : +# 104| r104_29(bool) = Call[await_ready] : func:r104_28, this:r104_27 +# 104| m104_30(unknown) = ^CallSideEffect : ~m104_23 +# 104| m104_31(unknown) = Chi : total:m104_23, partial:m104_30 +# 104| v104_32(void) = ^IndirectReadSideEffect[-1] : &:r104_27, ~m104_31 +# 104| v104_33(void) = ConditionalBranch : r104_29 +#-----| False -> Block 6 +#-----| True -> Block 5 + +# 104| Block 5 +# 104| m104_34(unknown) = Phi : from 4:~m104_31, from 6:~m104_60 # 104| r104_35(suspend_always *) = CopyValue : r104_24 # 104| r104_36(glval) = CopyValue : r104_35 #-----| r0_19(glval) = Convert : r104_36 @@ -1799,14 +1936,13 @@ coroutines.cpp: #-----| v0_26(void) = ^IndirectReadSideEffect[-1] : &:r0_21, ~m0_25 #-----| m0_27(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_21 #-----| m0_28(unknown) = Chi : total:m0_25, partial:m0_27 -# 105| v105_1(void) = NoOp : -#-----| v0_29(void) = NoOp : -#-----| Goto (back edge) -> Block 5 +#-----| C++ Exception -> Block 8 +#-----| Goto -> Block 7 -# 104| Block 4 +# 104| Block 6 # 104| r104_41(suspend_always *) = CopyValue : r104_24 # 104| r104_42(glval) = CopyValue : r104_41 -#-----| r0_30(glval) = Convert : r104_42 +#-----| r0_29(glval) = Convert : r104_42 # 104| r104_43(glval) = FunctionAddress[await_suspend] : # 104| r104_44(glval>) = VariableAddress[#temp104:3] : # 104| m104_45(coroutine_handle) = Uninitialized[#temp104:3] : &:r104_44 @@ -1822,87 +1958,117 @@ coroutines.cpp: # 104| m104_55(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r104_44 # 104| m104_56(unknown) = Chi : total:m104_53, partial:m104_55 # 104| r104_57(coroutine_handle) = Load[#temp104:3] : &:r104_44, ~m104_56 -# 104| v104_58(void) = Call[await_suspend] : func:r104_43, this:r0_30, 0:r104_57 +# 104| v104_58(void) = Call[await_suspend] : func:r104_43, this:r0_29, 0:r104_57 # 104| m104_59(unknown) = ^CallSideEffect : ~m104_56 # 104| m104_60(unknown) = Chi : total:m104_56, partial:m104_59 -#-----| v0_31(void) = ^IndirectReadSideEffect[-1] : &:r0_30, ~m104_60 -#-----| Goto -> Block 3 +#-----| v0_30(void) = ^IndirectReadSideEffect[-1] : &:r0_29, ~m104_60 +#-----| Goto -> Block 5 -#-----| Block 5 -#-----| v0_32(void) = NoOp : -# 103| r103_64(glval) = VariableAddress[(unnamed local variable)] : -# 103| r103_65(glval) = FunctionAddress[final_suspend] : -# 103| r103_66(suspend_always) = Call[final_suspend] : func:r103_65, this:r103_64 -# 103| m103_67(unknown) = ^CallSideEffect : ~m0_28 -# 103| m103_68(unknown) = Chi : total:m0_28, partial:m103_67 -# 103| v103_69(void) = ^IndirectReadSideEffect[-1] : &:r103_64, ~m103_68 -# 103| m103_70(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r103_64 -# 103| m103_71(unknown) = Chi : total:m103_68, partial:m103_70 -#-----| r0_33(glval) = VariableAddress[#temp0:0] : -# 103| r103_72(glval) = VariableAddress[#temp103:20] : -# 103| r103_73(glval) = VariableAddress[(unnamed local variable)] : -# 103| r103_74(glval) = FunctionAddress[final_suspend] : -# 103| r103_75(suspend_always) = Call[final_suspend] : func:r103_74, this:r103_73 -# 103| m103_76(unknown) = ^CallSideEffect : ~m103_71 -# 103| m103_77(unknown) = Chi : total:m103_71, partial:m103_76 -# 103| v103_78(void) = ^IndirectReadSideEffect[-1] : &:r103_73, ~m103_77 -# 103| m103_79(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r103_73 -# 103| m103_80(unknown) = Chi : total:m103_77, partial:m103_79 -# 103| m103_81(suspend_always) = Store[#temp103:20] : &:r103_72, r103_75 -# 103| m103_82(unknown) = Chi : total:m103_80, partial:m103_81 -# 103| r103_83(suspend_always *) = CopyValue : r103_72 -# 103| m103_84(suspend_always *) = Store[#temp0:0] : &:r0_33, r103_83 -#-----| r0_34(suspend_always *) = Load[#temp0:0] : &:r0_33, m103_84 -# 103| r103_85(glval) = CopyValue : r0_34 -# 103| r103_86(glval) = Convert : r103_85 -# 103| r103_87(glval) = FunctionAddress[await_ready] : -# 103| r103_88(bool) = Call[await_ready] : func:r103_87, this:r103_86 -# 103| m103_89(unknown) = ^CallSideEffect : ~m103_82 -# 103| m103_90(unknown) = Chi : total:m103_82, partial:m103_89 -# 103| v103_91(void) = ^IndirectReadSideEffect[-1] : &:r103_86, ~m103_90 -#-----| v0_35(void) = ConditionalBranch : r103_88 -#-----| False -> Block 7 -#-----| True -> Block 6 +# 105| Block 7 +# 105| v105_1(void) = NoOp : +#-----| v0_31(void) = NoOp : +#-----| Goto (back edge) -> Block 10 -# 103| Block 6 -# 103| m103_92(unknown) = Phi : from 5:~m103_90, from 7:~m103_122 -# 103| r103_93(suspend_always *) = CopyValue : r103_83 -# 103| r103_94(glval) = CopyValue : r103_93 -#-----| r0_36(glval) = Convert : r103_94 -# 103| r103_95(glval) = FunctionAddress[await_resume] : -# 103| v103_96(void) = Call[await_resume] : func:r103_95, this:r0_36 -# 103| m103_97(unknown) = ^CallSideEffect : ~m103_92 -# 103| m103_98(unknown) = Chi : total:m103_92, partial:m103_97 -#-----| v0_37(void) = ^IndirectReadSideEffect[-1] : &:r0_36, ~m103_98 -# 103| r103_99(glval) = VariableAddress[#return] : -# 103| v103_100(void) = ReturnValue : &:r103_99, ~m103_98 -# 103| v103_101(void) = AliasedUse : ~m103_98 -# 103| v103_102(void) = ExitFunction : +#-----| Block 8 +#-----| m0_32(unknown) = Phi : from 1:~m104_10, from 3:~m104_21, from 5:~m0_28 +#-----| v0_33(void) = CatchAny : +#-----| r0_34(glval) = VariableAddress[(unnamed local variable)] : +#-----| r0_35(bool) = Load[(unnamed local variable)] : &:r0_34, m0_11 +#-----| r0_36(bool) = LogicalNot : r0_35 +#-----| v0_37(void) = ConditionalBranch : r0_36 +#-----| False -> Block 9 +#-----| True -> Block 13 -# 103| Block 7 -# 103| r103_103(suspend_always *) = CopyValue : r103_83 -# 103| r103_104(glval) = CopyValue : r103_103 -#-----| r0_38(glval) = Convert : r103_104 -# 103| r103_105(glval) = FunctionAddress[await_suspend] : -# 103| r103_106(glval>) = VariableAddress[#temp103:20] : -# 103| m103_107(coroutine_handle) = Uninitialized[#temp103:20] : &:r103_106 -# 103| m103_108(unknown) = Chi : total:m103_90, partial:m103_107 -# 103| r103_109(glval) = FunctionAddress[coroutine_handle] : -# 103| r103_110(glval>) = VariableAddress[(unnamed local variable)] : -# 103| r103_111(glval>) = Convert : r103_110 -# 103| r103_112(coroutine_handle &) = CopyValue : r103_111 -# 103| v103_113(void) = Call[coroutine_handle] : func:r103_109, this:r103_106, 0:r103_112 -# 103| m103_114(unknown) = ^CallSideEffect : ~m103_108 -# 103| m103_115(unknown) = Chi : total:m103_108, partial:m103_114 -# 103| v103_116(void) = ^BufferReadSideEffect[0] : &:r103_112, ~m103_115 -# 103| m103_117(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r103_106 -# 103| m103_118(unknown) = Chi : total:m103_115, partial:m103_117 -# 103| r103_119(coroutine_handle) = Load[#temp103:20] : &:r103_106, ~m103_118 -# 103| v103_120(void) = Call[await_suspend] : func:r103_105, this:r0_38, 0:r103_119 -# 103| m103_121(unknown) = ^CallSideEffect : ~m103_118 -# 103| m103_122(unknown) = Chi : total:m103_118, partial:m103_121 -#-----| v0_39(void) = ^IndirectReadSideEffect[-1] : &:r0_38, ~m103_122 -#-----| Goto -> Block 6 +# 103| Block 9 +# 103| r103_64(glval) = VariableAddress[(unnamed local variable)] : +# 103| r103_65(glval) = FunctionAddress[unhandled_exception] : +# 103| v103_66(void) = Call[unhandled_exception] : func:r103_65, this:r103_64 +# 103| m103_67(unknown) = ^CallSideEffect : ~m0_32 +# 103| m103_68(unknown) = Chi : total:m0_32, partial:m103_67 +# 103| v103_69(void) = ^IndirectReadSideEffect[-1] : &:r103_64, ~m103_68 +# 103| m103_70(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r103_64 +# 103| m103_71(unknown) = Chi : total:m103_68, partial:m103_70 +#-----| Goto -> Block 10 + +#-----| Block 10 +#-----| m0_38(unknown) = Phi : from 7:~m0_28, from 9:~m103_71 +#-----| v0_39(void) = NoOp : +# 103| r103_72(glval) = VariableAddress[(unnamed local variable)] : +# 103| r103_73(glval) = FunctionAddress[final_suspend] : +# 103| r103_74(suspend_always) = Call[final_suspend] : func:r103_73, this:r103_72 +# 103| m103_75(unknown) = ^CallSideEffect : ~m0_38 +# 103| m103_76(unknown) = Chi : total:m0_38, partial:m103_75 +# 103| v103_77(void) = ^IndirectReadSideEffect[-1] : &:r103_72, ~m103_76 +# 103| m103_78(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r103_72 +# 103| m103_79(unknown) = Chi : total:m103_76, partial:m103_78 +#-----| r0_40(glval) = VariableAddress[#temp0:0] : +# 103| r103_80(glval) = VariableAddress[#temp103:20] : +# 103| r103_81(glval) = VariableAddress[(unnamed local variable)] : +# 103| r103_82(glval) = FunctionAddress[final_suspend] : +# 103| r103_83(suspend_always) = Call[final_suspend] : func:r103_82, this:r103_81 +# 103| m103_84(unknown) = ^CallSideEffect : ~m103_79 +# 103| m103_85(unknown) = Chi : total:m103_79, partial:m103_84 +# 103| v103_86(void) = ^IndirectReadSideEffect[-1] : &:r103_81, ~m103_85 +# 103| m103_87(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r103_81 +# 103| m103_88(unknown) = Chi : total:m103_85, partial:m103_87 +# 103| m103_89(suspend_always) = Store[#temp103:20] : &:r103_80, r103_83 +# 103| m103_90(unknown) = Chi : total:m103_88, partial:m103_89 +# 103| r103_91(suspend_always *) = CopyValue : r103_80 +# 103| m103_92(suspend_always *) = Store[#temp0:0] : &:r0_40, r103_91 +#-----| r0_41(suspend_always *) = Load[#temp0:0] : &:r0_40, m103_92 +# 103| r103_93(glval) = CopyValue : r0_41 +# 103| r103_94(glval) = Convert : r103_93 +# 103| r103_95(glval) = FunctionAddress[await_ready] : +# 103| r103_96(bool) = Call[await_ready] : func:r103_95, this:r103_94 +# 103| m103_97(unknown) = ^CallSideEffect : ~m103_90 +# 103| m103_98(unknown) = Chi : total:m103_90, partial:m103_97 +# 103| v103_99(void) = ^IndirectReadSideEffect[-1] : &:r103_94, ~m103_98 +#-----| v0_42(void) = ConditionalBranch : r103_96 +#-----| False -> Block 12 +#-----| True -> Block 11 + +# 103| Block 11 +# 103| m103_100(unknown) = Phi : from 10:~m103_98, from 12:~m103_130 +# 103| r103_101(suspend_always *) = CopyValue : r103_91 +# 103| r103_102(glval) = CopyValue : r103_101 +#-----| r0_43(glval) = Convert : r103_102 +# 103| r103_103(glval) = FunctionAddress[await_resume] : +# 103| v103_104(void) = Call[await_resume] : func:r103_103, this:r0_43 +# 103| m103_105(unknown) = ^CallSideEffect : ~m103_100 +# 103| m103_106(unknown) = Chi : total:m103_100, partial:m103_105 +#-----| v0_44(void) = ^IndirectReadSideEffect[-1] : &:r0_43, ~m103_106 +# 103| r103_107(glval) = VariableAddress[#return] : +# 103| v103_108(void) = ReturnValue : &:r103_107, ~m103_106 +# 103| v103_109(void) = AliasedUse : ~m103_106 +# 103| v103_110(void) = ExitFunction : + +# 103| Block 12 +# 103| r103_111(suspend_always *) = CopyValue : r103_91 +# 103| r103_112(glval) = CopyValue : r103_111 +#-----| r0_45(glval) = Convert : r103_112 +# 103| r103_113(glval) = FunctionAddress[await_suspend] : +# 103| r103_114(glval>) = VariableAddress[#temp103:20] : +# 103| m103_115(coroutine_handle) = Uninitialized[#temp103:20] : &:r103_114 +# 103| m103_116(unknown) = Chi : total:m103_98, partial:m103_115 +# 103| r103_117(glval) = FunctionAddress[coroutine_handle] : +# 103| r103_118(glval>) = VariableAddress[(unnamed local variable)] : +# 103| r103_119(glval>) = Convert : r103_118 +# 103| r103_120(coroutine_handle &) = CopyValue : r103_119 +# 103| v103_121(void) = Call[coroutine_handle] : func:r103_117, this:r103_114, 0:r103_120 +# 103| m103_122(unknown) = ^CallSideEffect : ~m103_116 +# 103| m103_123(unknown) = Chi : total:m103_116, partial:m103_122 +# 103| v103_124(void) = ^BufferReadSideEffect[0] : &:r103_120, ~m103_123 +# 103| m103_125(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r103_114 +# 103| m103_126(unknown) = Chi : total:m103_123, partial:m103_125 +# 103| r103_127(coroutine_handle) = Load[#temp103:20] : &:r103_114, ~m103_126 +# 103| v103_128(void) = Call[await_suspend] : func:r103_113, this:r0_45, 0:r103_127 +# 103| m103_129(unknown) = ^CallSideEffect : ~m103_126 +# 103| m103_130(unknown) = Chi : total:m103_126, partial:m103_129 +#-----| v0_46(void) = ^IndirectReadSideEffect[-1] : &:r0_45, ~m103_130 +#-----| Goto -> Block 11 + +# 103| Block 13 +# 103| v103_131(void) = Unreached : # 108| co_returnable_value co_yield_and_return_value(int) # 108| Block 0 @@ -1977,38 +2143,13 @@ coroutines.cpp: # 109| v109_8(void) = ^IndirectReadSideEffect[-1] : &:r109_1, ~m109_7 # 109| m109_9(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r109_1 # 109| m109_10(unknown) = Chi : total:m109_7, partial:m109_9 -#-----| r0_15(glval) = VariableAddress[#temp0:0] : -# 109| r109_11(glval) = VariableAddress[#temp109:13] : -# 109| r109_12(glval) = VariableAddress[(unnamed local variable)] : -# 109| r109_13(glval) = FunctionAddress[yield_value] : -# 109| r109_14(glval) = VariableAddress[i] : -# 109| r109_15(int) = Load[i] : &:r109_14, m0_4 -# 109| r109_16(suspend_always) = Call[yield_value] : func:r109_13, this:r109_12, 0:r109_15 -# 109| m109_17(unknown) = ^CallSideEffect : ~m109_10 -# 109| m109_18(unknown) = Chi : total:m109_10, partial:m109_17 -# 109| v109_19(void) = ^IndirectReadSideEffect[-1] : &:r109_12, ~m109_18 -# 109| m109_20(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r109_12 -# 109| m109_21(unknown) = Chi : total:m109_18, partial:m109_20 -# 109| m109_22(suspend_always) = Store[#temp109:13] : &:r109_11, r109_16 -# 109| m109_23(unknown) = Chi : total:m109_21, partial:m109_22 -# 109| r109_24(suspend_always *) = CopyValue : r109_11 -# 109| m109_25(suspend_always *) = Store[#temp0:0] : &:r0_15, r109_24 -#-----| r0_16(suspend_always *) = Load[#temp0:0] : &:r0_15, m109_25 -# 109| r109_26(glval) = CopyValue : r0_16 -# 109| r109_27(glval) = Convert : r109_26 -# 109| r109_28(glval) = FunctionAddress[await_ready] : -# 109| r109_29(bool) = Call[await_ready] : func:r109_28, this:r109_27 -# 109| m109_30(unknown) = ^CallSideEffect : ~m109_23 -# 109| m109_31(unknown) = Chi : total:m109_23, partial:m109_30 -# 109| v109_32(void) = ^IndirectReadSideEffect[-1] : &:r109_27, ~m109_31 -# 109| v109_33(void) = ConditionalBranch : r109_29 -#-----| False -> Block 4 -#-----| True -> Block 3 +#-----| C++ Exception -> Block 8 +#-----| Goto -> Block 3 # 108| Block 2 # 108| r108_44(suspend_always *) = CopyValue : r108_29 # 108| r108_45(glval) = CopyValue : r108_44 -#-----| r0_17(glval) = Convert : r108_45 +#-----| r0_15(glval) = Convert : r108_45 # 108| r108_46(glval) = FunctionAddress[await_suspend] : # 108| r108_47(glval>) = VariableAddress[#temp108:21] : # 108| m108_48(coroutine_handle) = Uninitialized[#temp108:21] : &:r108_47 @@ -2024,14 +2165,47 @@ coroutines.cpp: # 108| m108_58(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r108_47 # 108| m108_59(unknown) = Chi : total:m108_56, partial:m108_58 # 108| r108_60(coroutine_handle) = Load[#temp108:21] : &:r108_47, ~m108_59 -# 108| v108_61(void) = Call[await_suspend] : func:r108_46, this:r0_17, 0:r108_60 +# 108| v108_61(void) = Call[await_suspend] : func:r108_46, this:r0_15, 0:r108_60 # 108| m108_62(unknown) = ^CallSideEffect : ~m108_59 # 108| m108_63(unknown) = Chi : total:m108_59, partial:m108_62 -#-----| v0_18(void) = ^IndirectReadSideEffect[-1] : &:r0_17, ~m108_63 +#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, ~m108_63 #-----| Goto -> Block 1 -# 109| Block 3 -# 109| m109_34(unknown) = Phi : from 1:~m109_31, from 4:~m109_60 +#-----| Block 3 +#-----| r0_17(glval) = VariableAddress[#temp0:0] : +# 109| r109_11(glval) = VariableAddress[#temp109:13] : +# 109| r109_12(glval) = VariableAddress[(unnamed local variable)] : +# 109| r109_13(glval) = FunctionAddress[yield_value] : +# 109| r109_14(glval) = VariableAddress[i] : +# 109| r109_15(int) = Load[i] : &:r109_14, m0_4 +# 109| r109_16(suspend_always) = Call[yield_value] : func:r109_13, this:r109_12, 0:r109_15 +# 109| m109_17(unknown) = ^CallSideEffect : ~m109_10 +# 109| m109_18(unknown) = Chi : total:m109_10, partial:m109_17 +# 109| v109_19(void) = ^IndirectReadSideEffect[-1] : &:r109_12, ~m109_18 +# 109| m109_20(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r109_12 +# 109| m109_21(unknown) = Chi : total:m109_18, partial:m109_20 +#-----| C++ Exception -> Block 8 +#-----| Goto -> Block 4 + +# 109| Block 4 +# 109| m109_22(suspend_always) = Store[#temp109:13] : &:r109_11, r109_16 +# 109| m109_23(unknown) = Chi : total:m109_21, partial:m109_22 +# 109| r109_24(suspend_always *) = CopyValue : r109_11 +# 109| m109_25(suspend_always *) = Store[#temp0:0] : &:r0_17, r109_24 +#-----| r0_18(suspend_always *) = Load[#temp0:0] : &:r0_17, m109_25 +# 109| r109_26(glval) = CopyValue : r0_18 +# 109| r109_27(glval) = Convert : r109_26 +# 109| r109_28(glval) = FunctionAddress[await_ready] : +# 109| r109_29(bool) = Call[await_ready] : func:r109_28, this:r109_27 +# 109| m109_30(unknown) = ^CallSideEffect : ~m109_23 +# 109| m109_31(unknown) = Chi : total:m109_23, partial:m109_30 +# 109| v109_32(void) = ^IndirectReadSideEffect[-1] : &:r109_27, ~m109_31 +# 109| v109_33(void) = ConditionalBranch : r109_29 +#-----| False -> Block 6 +#-----| True -> Block 5 + +# 109| Block 5 +# 109| m109_34(unknown) = Phi : from 4:~m109_31, from 6:~m109_60 # 109| r109_35(suspend_always *) = CopyValue : r109_24 # 109| r109_36(glval) = CopyValue : r109_35 #-----| r0_19(glval) = Convert : r109_36 @@ -2052,14 +2226,13 @@ coroutines.cpp: #-----| v0_26(void) = ^IndirectReadSideEffect[-1] : &:r0_21, ~m0_25 #-----| m0_27(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_21 #-----| m0_28(unknown) = Chi : total:m0_25, partial:m0_27 -# 110| v110_5(void) = NoOp : -#-----| v0_29(void) = NoOp : -#-----| Goto (back edge) -> Block 5 +#-----| C++ Exception -> Block 8 +#-----| Goto -> Block 7 -# 109| Block 4 +# 109| Block 6 # 109| r109_41(suspend_always *) = CopyValue : r109_24 # 109| r109_42(glval) = CopyValue : r109_41 -#-----| r0_30(glval) = Convert : r109_42 +#-----| r0_29(glval) = Convert : r109_42 # 109| r109_43(glval) = FunctionAddress[await_suspend] : # 109| r109_44(glval>) = VariableAddress[#temp109:3] : # 109| m109_45(coroutine_handle) = Uninitialized[#temp109:3] : &:r109_44 @@ -2075,87 +2248,117 @@ coroutines.cpp: # 109| m109_55(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r109_44 # 109| m109_56(unknown) = Chi : total:m109_53, partial:m109_55 # 109| r109_57(coroutine_handle) = Load[#temp109:3] : &:r109_44, ~m109_56 -# 109| v109_58(void) = Call[await_suspend] : func:r109_43, this:r0_30, 0:r109_57 +# 109| v109_58(void) = Call[await_suspend] : func:r109_43, this:r0_29, 0:r109_57 # 109| m109_59(unknown) = ^CallSideEffect : ~m109_56 # 109| m109_60(unknown) = Chi : total:m109_56, partial:m109_59 -#-----| v0_31(void) = ^IndirectReadSideEffect[-1] : &:r0_30, ~m109_60 -#-----| Goto -> Block 3 +#-----| v0_30(void) = ^IndirectReadSideEffect[-1] : &:r0_29, ~m109_60 +#-----| Goto -> Block 5 -#-----| Block 5 -#-----| v0_32(void) = NoOp : -# 108| r108_64(glval) = VariableAddress[(unnamed local variable)] : -# 108| r108_65(glval) = FunctionAddress[final_suspend] : -# 108| r108_66(suspend_always) = Call[final_suspend] : func:r108_65, this:r108_64 -# 108| m108_67(unknown) = ^CallSideEffect : ~m0_28 -# 108| m108_68(unknown) = Chi : total:m0_28, partial:m108_67 -# 108| v108_69(void) = ^IndirectReadSideEffect[-1] : &:r108_64, ~m108_68 -# 108| m108_70(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r108_64 -# 108| m108_71(unknown) = Chi : total:m108_68, partial:m108_70 -#-----| r0_33(glval) = VariableAddress[#temp0:0] : -# 108| r108_72(glval) = VariableAddress[#temp108:21] : -# 108| r108_73(glval) = VariableAddress[(unnamed local variable)] : -# 108| r108_74(glval) = FunctionAddress[final_suspend] : -# 108| r108_75(suspend_always) = Call[final_suspend] : func:r108_74, this:r108_73 -# 108| m108_76(unknown) = ^CallSideEffect : ~m108_71 -# 108| m108_77(unknown) = Chi : total:m108_71, partial:m108_76 -# 108| v108_78(void) = ^IndirectReadSideEffect[-1] : &:r108_73, ~m108_77 -# 108| m108_79(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r108_73 -# 108| m108_80(unknown) = Chi : total:m108_77, partial:m108_79 -# 108| m108_81(suspend_always) = Store[#temp108:21] : &:r108_72, r108_75 -# 108| m108_82(unknown) = Chi : total:m108_80, partial:m108_81 -# 108| r108_83(suspend_always *) = CopyValue : r108_72 -# 108| m108_84(suspend_always *) = Store[#temp0:0] : &:r0_33, r108_83 -#-----| r0_34(suspend_always *) = Load[#temp0:0] : &:r0_33, m108_84 -# 108| r108_85(glval) = CopyValue : r0_34 -# 108| r108_86(glval) = Convert : r108_85 -# 108| r108_87(glval) = FunctionAddress[await_ready] : -# 108| r108_88(bool) = Call[await_ready] : func:r108_87, this:r108_86 -# 108| m108_89(unknown) = ^CallSideEffect : ~m108_82 -# 108| m108_90(unknown) = Chi : total:m108_82, partial:m108_89 -# 108| v108_91(void) = ^IndirectReadSideEffect[-1] : &:r108_86, ~m108_90 -#-----| v0_35(void) = ConditionalBranch : r108_88 -#-----| False -> Block 7 -#-----| True -> Block 6 +# 110| Block 7 +# 110| v110_5(void) = NoOp : +#-----| v0_31(void) = NoOp : +#-----| Goto (back edge) -> Block 10 -# 108| Block 6 -# 108| m108_92(unknown) = Phi : from 5:~m108_90, from 7:~m108_122 -# 108| r108_93(suspend_always *) = CopyValue : r108_83 -# 108| r108_94(glval) = CopyValue : r108_93 -#-----| r0_36(glval) = Convert : r108_94 -# 108| r108_95(glval) = FunctionAddress[await_resume] : -# 108| v108_96(void) = Call[await_resume] : func:r108_95, this:r0_36 -# 108| m108_97(unknown) = ^CallSideEffect : ~m108_92 -# 108| m108_98(unknown) = Chi : total:m108_92, partial:m108_97 -#-----| v0_37(void) = ^IndirectReadSideEffect[-1] : &:r0_36, ~m108_98 -# 108| r108_99(glval) = VariableAddress[#return] : -# 108| v108_100(void) = ReturnValue : &:r108_99, ~m108_98 -# 108| v108_101(void) = AliasedUse : ~m108_98 -# 108| v108_102(void) = ExitFunction : +#-----| Block 8 +#-----| m0_32(unknown) = Phi : from 1:~m109_10, from 3:~m109_21, from 5:~m0_28 +#-----| v0_33(void) = CatchAny : +#-----| r0_34(glval) = VariableAddress[(unnamed local variable)] : +#-----| r0_35(bool) = Load[(unnamed local variable)] : &:r0_34, m0_11 +#-----| r0_36(bool) = LogicalNot : r0_35 +#-----| v0_37(void) = ConditionalBranch : r0_36 +#-----| False -> Block 9 +#-----| True -> Block 13 -# 108| Block 7 -# 108| r108_103(suspend_always *) = CopyValue : r108_83 -# 108| r108_104(glval) = CopyValue : r108_103 -#-----| r0_38(glval) = Convert : r108_104 -# 108| r108_105(glval) = FunctionAddress[await_suspend] : -# 108| r108_106(glval>) = VariableAddress[#temp108:21] : -# 108| m108_107(coroutine_handle) = Uninitialized[#temp108:21] : &:r108_106 -# 108| m108_108(unknown) = Chi : total:m108_90, partial:m108_107 -# 108| r108_109(glval) = FunctionAddress[coroutine_handle] : -# 108| r108_110(glval>) = VariableAddress[(unnamed local variable)] : -# 108| r108_111(glval>) = Convert : r108_110 -# 108| r108_112(coroutine_handle &) = CopyValue : r108_111 -# 108| v108_113(void) = Call[coroutine_handle] : func:r108_109, this:r108_106, 0:r108_112 -# 108| m108_114(unknown) = ^CallSideEffect : ~m108_108 -# 108| m108_115(unknown) = Chi : total:m108_108, partial:m108_114 -# 108| v108_116(void) = ^BufferReadSideEffect[0] : &:r108_112, ~m108_115 -# 108| m108_117(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r108_106 -# 108| m108_118(unknown) = Chi : total:m108_115, partial:m108_117 -# 108| r108_119(coroutine_handle) = Load[#temp108:21] : &:r108_106, ~m108_118 -# 108| v108_120(void) = Call[await_suspend] : func:r108_105, this:r0_38, 0:r108_119 -# 108| m108_121(unknown) = ^CallSideEffect : ~m108_118 -# 108| m108_122(unknown) = Chi : total:m108_118, partial:m108_121 -#-----| v0_39(void) = ^IndirectReadSideEffect[-1] : &:r0_38, ~m108_122 -#-----| Goto -> Block 6 +# 108| Block 9 +# 108| r108_64(glval) = VariableAddress[(unnamed local variable)] : +# 108| r108_65(glval) = FunctionAddress[unhandled_exception] : +# 108| v108_66(void) = Call[unhandled_exception] : func:r108_65, this:r108_64 +# 108| m108_67(unknown) = ^CallSideEffect : ~m0_32 +# 108| m108_68(unknown) = Chi : total:m0_32, partial:m108_67 +# 108| v108_69(void) = ^IndirectReadSideEffect[-1] : &:r108_64, ~m108_68 +# 108| m108_70(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r108_64 +# 108| m108_71(unknown) = Chi : total:m108_68, partial:m108_70 +#-----| Goto -> Block 10 + +#-----| Block 10 +#-----| m0_38(unknown) = Phi : from 7:~m0_28, from 9:~m108_71 +#-----| v0_39(void) = NoOp : +# 108| r108_72(glval) = VariableAddress[(unnamed local variable)] : +# 108| r108_73(glval) = FunctionAddress[final_suspend] : +# 108| r108_74(suspend_always) = Call[final_suspend] : func:r108_73, this:r108_72 +# 108| m108_75(unknown) = ^CallSideEffect : ~m0_38 +# 108| m108_76(unknown) = Chi : total:m0_38, partial:m108_75 +# 108| v108_77(void) = ^IndirectReadSideEffect[-1] : &:r108_72, ~m108_76 +# 108| m108_78(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r108_72 +# 108| m108_79(unknown) = Chi : total:m108_76, partial:m108_78 +#-----| r0_40(glval) = VariableAddress[#temp0:0] : +# 108| r108_80(glval) = VariableAddress[#temp108:21] : +# 108| r108_81(glval) = VariableAddress[(unnamed local variable)] : +# 108| r108_82(glval) = FunctionAddress[final_suspend] : +# 108| r108_83(suspend_always) = Call[final_suspend] : func:r108_82, this:r108_81 +# 108| m108_84(unknown) = ^CallSideEffect : ~m108_79 +# 108| m108_85(unknown) = Chi : total:m108_79, partial:m108_84 +# 108| v108_86(void) = ^IndirectReadSideEffect[-1] : &:r108_81, ~m108_85 +# 108| m108_87(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r108_81 +# 108| m108_88(unknown) = Chi : total:m108_85, partial:m108_87 +# 108| m108_89(suspend_always) = Store[#temp108:21] : &:r108_80, r108_83 +# 108| m108_90(unknown) = Chi : total:m108_88, partial:m108_89 +# 108| r108_91(suspend_always *) = CopyValue : r108_80 +# 108| m108_92(suspend_always *) = Store[#temp0:0] : &:r0_40, r108_91 +#-----| r0_41(suspend_always *) = Load[#temp0:0] : &:r0_40, m108_92 +# 108| r108_93(glval) = CopyValue : r0_41 +# 108| r108_94(glval) = Convert : r108_93 +# 108| r108_95(glval) = FunctionAddress[await_ready] : +# 108| r108_96(bool) = Call[await_ready] : func:r108_95, this:r108_94 +# 108| m108_97(unknown) = ^CallSideEffect : ~m108_90 +# 108| m108_98(unknown) = Chi : total:m108_90, partial:m108_97 +# 108| v108_99(void) = ^IndirectReadSideEffect[-1] : &:r108_94, ~m108_98 +#-----| v0_42(void) = ConditionalBranch : r108_96 +#-----| False -> Block 12 +#-----| True -> Block 11 + +# 108| Block 11 +# 108| m108_100(unknown) = Phi : from 10:~m108_98, from 12:~m108_130 +# 108| r108_101(suspend_always *) = CopyValue : r108_91 +# 108| r108_102(glval) = CopyValue : r108_101 +#-----| r0_43(glval) = Convert : r108_102 +# 108| r108_103(glval) = FunctionAddress[await_resume] : +# 108| v108_104(void) = Call[await_resume] : func:r108_103, this:r0_43 +# 108| m108_105(unknown) = ^CallSideEffect : ~m108_100 +# 108| m108_106(unknown) = Chi : total:m108_100, partial:m108_105 +#-----| v0_44(void) = ^IndirectReadSideEffect[-1] : &:r0_43, ~m108_106 +# 108| r108_107(glval) = VariableAddress[#return] : +# 108| v108_108(void) = ReturnValue : &:r108_107, ~m108_106 +# 108| v108_109(void) = AliasedUse : ~m108_106 +# 108| v108_110(void) = ExitFunction : + +# 108| Block 12 +# 108| r108_111(suspend_always *) = CopyValue : r108_91 +# 108| r108_112(glval) = CopyValue : r108_111 +#-----| r0_45(glval) = Convert : r108_112 +# 108| r108_113(glval) = FunctionAddress[await_suspend] : +# 108| r108_114(glval>) = VariableAddress[#temp108:21] : +# 108| m108_115(coroutine_handle) = Uninitialized[#temp108:21] : &:r108_114 +# 108| m108_116(unknown) = Chi : total:m108_98, partial:m108_115 +# 108| r108_117(glval) = FunctionAddress[coroutine_handle] : +# 108| r108_118(glval>) = VariableAddress[(unnamed local variable)] : +# 108| r108_119(glval>) = Convert : r108_118 +# 108| r108_120(coroutine_handle &) = CopyValue : r108_119 +# 108| v108_121(void) = Call[coroutine_handle] : func:r108_117, this:r108_114, 0:r108_120 +# 108| m108_122(unknown) = ^CallSideEffect : ~m108_116 +# 108| m108_123(unknown) = Chi : total:m108_116, partial:m108_122 +# 108| v108_124(void) = ^BufferReadSideEffect[0] : &:r108_120, ~m108_123 +# 108| m108_125(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r108_114 +# 108| m108_126(unknown) = Chi : total:m108_123, partial:m108_125 +# 108| r108_127(coroutine_handle) = Load[#temp108:21] : &:r108_114, ~m108_126 +# 108| v108_128(void) = Call[await_suspend] : func:r108_113, this:r0_45, 0:r108_127 +# 108| m108_129(unknown) = ^CallSideEffect : ~m108_126 +# 108| m108_130(unknown) = Chi : total:m108_126, partial:m108_129 +#-----| v0_46(void) = ^IndirectReadSideEffect[-1] : &:r0_45, ~m108_130 +#-----| Goto -> Block 11 + +# 108| Block 13 +# 108| v108_131(void) = Unreached : destructors_for_temps.cpp: # 9| void ClassWithConstructor::ClassWithConstructor(ClassWithConstructor&&) @@ -17056,23 +17259,27 @@ ir.cpp: # 2276| m2276_7(unknown) = Chi : total:m2276_3, partial:m2276_6 # 2276| m2276_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2276_1 # 2276| m2276_9(unknown) = Chi : total:m2276_7, partial:m2276_8 -# 2277| r2277_1(glval) = VariableAddress[b] : -# 2277| r2277_2(bool) = Load[b] : &:r2277_1, m2274_6 -# 2277| v2277_3(void) = ConditionalBranch : r2277_2 -#-----| False -> Block 4 -#-----| True -> Block 3 +#-----| C++ Exception -> Block 7 +#-----| Goto -> Block 3 # 2274| Block 1 -# 2274| m2274_7(unknown) = Phi : from 2:~m2274_10, from 10:~m2290_1 +# 2274| m2274_7(unknown) = Phi : from 2:~m2274_10, from 12:~m2290_1 # 2274| v2274_8(void) = AliasedUse : ~m2274_7 # 2274| v2274_9(void) = ExitFunction : # 2274| Block 2 -# 2274| m2274_10(unknown) = Phi : from 6:~m2283_12, from 9:~m2281_8 +# 2274| m2274_10(unknown) = Phi : from 8:~m2283_12, from 11:~m2282_1 # 2274| v2274_11(void) = Unwind : #-----| Goto -> Block 1 -# 2278| Block 3 +# 2277| Block 3 +# 2277| r2277_1(glval) = VariableAddress[b] : +# 2277| r2277_2(bool) = Load[b] : &:r2277_1, m2274_6 +# 2277| v2277_3(void) = ConditionalBranch : r2277_2 +#-----| False -> Block 5 +#-----| True -> Block 4 + +# 2278| Block 4 # 2278| r2278_1(glval) = VariableAddress[#throw2278:7] : # 2278| r2278_2(glval) = StringConstant["string literal"] : # 2278| r2278_3(char *) = Convert : r2278_2 @@ -17086,18 +17293,22 @@ ir.cpp: # 2281| v2281_6(void) = ^IndirectReadSideEffect[-1] : &:r2281_1, ~m2281_5 # 2281| m2281_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2281_1 # 2281| m2281_8(unknown) = Chi : total:m2281_5, partial:m2281_7 -#-----| C++ Exception -> Block 5 +#-----| C++ Exception -> Block 7 -# 2280| Block 4 -# 2280| r2280_1(glval) = VariableAddress[s2] : -# 2280| m2280_2(String) = Uninitialized[s2] : &:r2280_1 -# 2280| m2280_3(unknown) = Chi : total:m2276_9, partial:m2280_2 -# 2280| r2280_4(glval) = FunctionAddress[String] : -# 2280| v2280_5(void) = Call[String] : func:r2280_4, this:r2280_1 -# 2280| m2280_6(unknown) = ^CallSideEffect : ~m2280_3 -# 2280| m2280_7(unknown) = Chi : total:m2280_3, partial:m2280_6 -# 2280| m2280_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2280_1 -# 2280| m2280_9(unknown) = Chi : total:m2280_7, partial:m2280_8 +# 2280| Block 5 +# 2280| r2280_1(glval) = VariableAddress[s2] : +# 2280| m2280_2(String) = Uninitialized[s2] : &:r2280_1 +# 2280| m2280_3(unknown) = Chi : total:m2276_9, partial:m2280_2 +# 2280| r2280_4(glval) = FunctionAddress[String] : +# 2280| v2280_5(void) = Call[String] : func:r2280_4, this:r2280_1 +# 2280| m2280_6(unknown) = ^CallSideEffect : ~m2280_3 +# 2280| m2280_7(unknown) = Chi : total:m2280_3, partial:m2280_6 +# 2280| m2280_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2280_1 +# 2280| m2280_9(unknown) = Chi : total:m2280_7, partial:m2280_8 +#-----| C++ Exception -> Block 7 +#-----| Goto -> Block 6 + +# 2281| Block 6 # 2281| r2281_9(glval) = VariableAddress[s2] : # 2281| r2281_10(glval) = FunctionAddress[~String] : # 2281| v2281_11(void) = Call[~String] : func:r2281_10, this:r2281_9 @@ -17114,25 +17325,26 @@ ir.cpp: # 2281| v2281_22(void) = ^IndirectReadSideEffect[-1] : &:r2281_17, ~m2281_21 # 2281| m2281_23(String) = ^IndirectMayWriteSideEffect[-1] : &:r2281_17 # 2281| m2281_24(unknown) = Chi : total:m2281_21, partial:m2281_23 -#-----| Goto -> Block 10 +#-----| Goto -> Block 12 -# 2282| Block 5 -# 2282| v2282_1(void) = CatchByType[const char *] : -#-----| C++ Exception -> Block 7 -#-----| Goto -> Block 6 +# 2282| Block 7 +# 2282| m2282_1(unknown) = Phi : from 0:~m2276_9, from 4:~m2281_8, from 5:~m2280_9 +# 2282| v2282_2(void) = CatchByType[const char *] : +#-----| C++ Exception -> Block 9 +#-----| Goto -> Block 8 -# 2282| Block 6 -# 2282| r2282_2(glval) = VariableAddress[s] : -# 2282| m2282_3(char *) = InitializeParameter[s] : &:r2282_2 -# 2282| r2282_4(char *) = Load[s] : &:r2282_2, m2282_3 -# 2282| m2282_5(unknown) = InitializeIndirection[s] : &:r2282_4 -# 2282| m2282_6(unknown) = Chi : total:m2281_8, partial:m2282_5 +# 2282| Block 8 +# 2282| r2282_3(glval) = VariableAddress[s] : +# 2282| m2282_4(char *) = InitializeParameter[s] : &:r2282_3 +# 2282| r2282_5(char *) = Load[s] : &:r2282_3, m2282_4 +# 2282| m2282_6(unknown) = InitializeIndirection[s] : &:r2282_5 +# 2282| m2282_7(unknown) = Chi : total:m2282_1, partial:m2282_6 # 2283| r2283_1(glval) = VariableAddress[#throw2283:5] : # 2283| m2283_2(String) = Uninitialized[#throw2283:5] : &:r2283_1 -# 2283| m2283_3(unknown) = Chi : total:m2282_6, partial:m2283_2 +# 2283| m2283_3(unknown) = Chi : total:m2282_7, partial:m2283_2 # 2283| r2283_4(glval) = FunctionAddress[String] : # 2283| r2283_5(glval) = VariableAddress[s] : -# 2283| r2283_6(char *) = Load[s] : &:r2283_5, m2282_3 +# 2283| r2283_6(char *) = Load[s] : &:r2283_5, m2282_4 # 2283| v2283_7(void) = Call[String] : func:r2283_4, this:r2283_1, 0:r2283_6 # 2283| m2283_8(unknown) = ^CallSideEffect : ~m2283_3 # 2283| m2283_9(unknown) = Chi : total:m2283_3, partial:m2283_8 @@ -17142,26 +17354,26 @@ ir.cpp: # 2283| v2283_13(void) = ThrowValue : &:r2283_1, ~m2283_12 #-----| C++ Exception -> Block 2 -# 2285| Block 7 +# 2285| Block 9 # 2285| v2285_1(void) = CatchByType[const String &] : -#-----| C++ Exception -> Block 9 -#-----| Goto -> Block 8 +#-----| C++ Exception -> Block 11 +#-----| Goto -> Block 10 -# 2285| Block 8 +# 2285| Block 10 # 2285| r2285_2(glval) = VariableAddress[e] : # 2285| m2285_3(String &) = InitializeParameter[e] : &:r2285_2 # 2285| r2285_4(String &) = Load[e] : &:r2285_2, m2285_3 # 2285| m2285_5(unknown) = InitializeIndirection[e] : &:r2285_4 # 2285| v2285_6(void) = NoOp : -#-----| Goto -> Block 10 +#-----| Goto -> Block 12 -# 2287| Block 9 +# 2287| Block 11 # 2287| v2287_1(void) = CatchAny : # 2288| v2288_1(void) = ReThrow : #-----| C++ Exception -> Block 2 -# 2290| Block 10 -# 2290| m2290_1(unknown) = Phi : from 4:~m2281_24, from 8:~m2281_8 +# 2290| Block 12 +# 2290| m2290_1(unknown) = Phi : from 6:~m2281_24, from 10:~m2282_1 # 2290| v2290_2(void) = NoOp : # 2274| v2274_12(void) = ReturnVoid : #-----| Goto -> Block 1 diff --git a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected index 030db017203..f594062a0a5 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -863,14 +863,13 @@ coroutines.cpp: #-----| mu0_13(unknown) = ^CallSideEffect : ~m? #-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_10, ~m? #-----| mu0_15(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_10 -# 88| v88_1(void) = NoOp : -#-----| v0_16(void) = NoOp : -#-----| Goto (back edge) -> Block 8 +#-----| C++ Exception -> Block 6 +#-----| Goto -> Block 5 # 87| Block 4 # 87| r87_36(suspend_always *) = CopyValue : r87_20 # 87| r87_37(glval) = CopyValue : r87_36 -#-----| r0_17(glval) = Convert : r87_37 +#-----| r0_16(glval) = Convert : r87_37 # 87| r87_38(glval) = FunctionAddress[await_suspend] : # 87| r87_39(glval>) = VariableAddress[#temp87:20] : # 87| mu87_40(coroutine_handle) = Uninitialized[#temp87:20] : &:r87_39 @@ -883,34 +882,39 @@ coroutines.cpp: # 87| v87_47(void) = ^BufferReadSideEffect[0] : &:r87_44, ~m? # 87| mu87_48(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r87_39 # 87| r87_49(coroutine_handle) = Load[#temp87:20] : &:r87_39, ~m? -# 87| v87_50(void) = Call[await_suspend] : func:r87_38, this:r0_17, 0:r87_49 +# 87| v87_50(void) = Call[await_suspend] : func:r87_38, this:r0_16, 0:r87_49 # 87| mu87_51(unknown) = ^CallSideEffect : ~m? -#-----| v0_18(void) = ^IndirectReadSideEffect[-1] : &:r0_17, ~m? +#-----| v0_17(void) = ^IndirectReadSideEffect[-1] : &:r0_16, ~m? #-----| Goto -> Block 3 -#-----| Block 5 +# 88| Block 5 +# 88| v88_1(void) = NoOp : +#-----| v0_18(void) = NoOp : +#-----| Goto (back edge) -> Block 9 + +#-----| Block 6 #-----| v0_19(void) = CatchAny : #-----| r0_20(glval) = VariableAddress[(unnamed local variable)] : #-----| r0_21(bool) = Load[(unnamed local variable)] : &:r0_20, ~m? #-----| r0_22(bool) = LogicalNot : r0_21 #-----| v0_23(void) = ConditionalBranch : r0_22 -#-----| False -> Block 7 -#-----| True -> Block 6 +#-----| False -> Block 8 +#-----| True -> Block 7 -#-----| Block 6 +#-----| Block 7 #-----| v0_24(void) = ReThrow : #-----| C++ Exception -> Block 2 -# 87| Block 7 +# 87| Block 8 # 87| r87_52(glval) = VariableAddress[(unnamed local variable)] : # 87| r87_53(glval) = FunctionAddress[unhandled_exception] : # 87| v87_54(void) = Call[unhandled_exception] : func:r87_53, this:r87_52 # 87| mu87_55(unknown) = ^CallSideEffect : ~m? # 87| v87_56(void) = ^IndirectReadSideEffect[-1] : &:r87_52, ~m? # 87| mu87_57(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r87_52 -#-----| Goto -> Block 8 +#-----| Goto -> Block 9 -#-----| Block 8 +#-----| Block 9 #-----| v0_25(void) = NoOp : # 87| r87_58(glval) = VariableAddress[(unnamed local variable)] : # 87| r87_59(glval) = FunctionAddress[final_suspend] : @@ -937,10 +941,10 @@ coroutines.cpp: # 87| mu87_78(unknown) = ^CallSideEffect : ~m? # 87| v87_79(void) = ^IndirectReadSideEffect[-1] : &:r87_75, ~m? #-----| v0_28(void) = ConditionalBranch : r87_77 -#-----| False -> Block 10 -#-----| True -> Block 9 +#-----| False -> Block 11 +#-----| True -> Block 10 -# 87| Block 9 +# 87| Block 10 # 87| r87_80(suspend_always *) = CopyValue : r87_72 # 87| r87_81(glval) = CopyValue : r87_80 #-----| r0_29(glval) = Convert : r87_81 @@ -952,7 +956,7 @@ coroutines.cpp: # 87| v87_86(void) = ReturnValue : &:r87_85, ~m? #-----| Goto -> Block 1 -# 87| Block 10 +# 87| Block 11 # 87| r87_87(suspend_always *) = CopyValue : r87_72 # 87| r87_88(glval) = CopyValue : r87_87 #-----| r0_31(glval) = Convert : r87_88 @@ -971,7 +975,7 @@ coroutines.cpp: # 87| v87_101(void) = Call[await_suspend] : func:r87_89, this:r0_31, 0:r87_100 # 87| mu87_102(unknown) = ^CallSideEffect : ~m? #-----| v0_32(void) = ^IndirectReadSideEffect[-1] : &:r0_31, ~m? -#-----| Goto -> Block 9 +#-----| Goto -> Block 10 # 91| co_returnable_value co_return_int(int) # 91| Block 0 @@ -1042,14 +1046,13 @@ coroutines.cpp: #-----| mu0_17(unknown) = ^CallSideEffect : ~m? #-----| v0_18(void) = ^IndirectReadSideEffect[-1] : &:r0_14, ~m? #-----| mu0_19(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_14 -# 92| v92_3(void) = NoOp : -#-----| v0_20(void) = NoOp : -#-----| Goto (back edge) -> Block 8 +#-----| C++ Exception -> Block 6 +#-----| Goto -> Block 5 # 91| Block 4 # 91| r91_38(suspend_always *) = CopyValue : r91_22 # 91| r91_39(glval) = CopyValue : r91_38 -#-----| r0_21(glval) = Convert : r91_39 +#-----| r0_20(glval) = Convert : r91_39 # 91| r91_40(glval) = FunctionAddress[await_suspend] : # 91| r91_41(glval>) = VariableAddress[#temp91:21] : # 91| mu91_42(coroutine_handle) = Uninitialized[#temp91:21] : &:r91_41 @@ -1062,34 +1065,39 @@ coroutines.cpp: # 91| v91_49(void) = ^BufferReadSideEffect[0] : &:r91_46, ~m? # 91| mu91_50(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r91_41 # 91| r91_51(coroutine_handle) = Load[#temp91:21] : &:r91_41, ~m? -# 91| v91_52(void) = Call[await_suspend] : func:r91_40, this:r0_21, 0:r91_51 +# 91| v91_52(void) = Call[await_suspend] : func:r91_40, this:r0_20, 0:r91_51 # 91| mu91_53(unknown) = ^CallSideEffect : ~m? -#-----| v0_22(void) = ^IndirectReadSideEffect[-1] : &:r0_21, ~m? +#-----| v0_21(void) = ^IndirectReadSideEffect[-1] : &:r0_20, ~m? #-----| Goto -> Block 3 -#-----| Block 5 +# 92| Block 5 +# 92| v92_3(void) = NoOp : +#-----| v0_22(void) = NoOp : +#-----| Goto (back edge) -> Block 9 + +#-----| Block 6 #-----| v0_23(void) = CatchAny : #-----| r0_24(glval) = VariableAddress[(unnamed local variable)] : #-----| r0_25(bool) = Load[(unnamed local variable)] : &:r0_24, ~m? #-----| r0_26(bool) = LogicalNot : r0_25 #-----| v0_27(void) = ConditionalBranch : r0_26 -#-----| False -> Block 7 -#-----| True -> Block 6 +#-----| False -> Block 8 +#-----| True -> Block 7 -#-----| Block 6 +#-----| Block 7 #-----| v0_28(void) = ReThrow : #-----| C++ Exception -> Block 2 -# 91| Block 7 +# 91| Block 8 # 91| r91_54(glval) = VariableAddress[(unnamed local variable)] : # 91| r91_55(glval) = FunctionAddress[unhandled_exception] : # 91| v91_56(void) = Call[unhandled_exception] : func:r91_55, this:r91_54 # 91| mu91_57(unknown) = ^CallSideEffect : ~m? # 91| v91_58(void) = ^IndirectReadSideEffect[-1] : &:r91_54, ~m? # 91| mu91_59(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r91_54 -#-----| Goto -> Block 8 +#-----| Goto -> Block 9 -#-----| Block 8 +#-----| Block 9 #-----| v0_29(void) = NoOp : # 91| r91_60(glval) = VariableAddress[(unnamed local variable)] : # 91| r91_61(glval) = FunctionAddress[final_suspend] : @@ -1116,10 +1124,10 @@ coroutines.cpp: # 91| mu91_80(unknown) = ^CallSideEffect : ~m? # 91| v91_81(void) = ^IndirectReadSideEffect[-1] : &:r91_77, ~m? #-----| v0_32(void) = ConditionalBranch : r91_79 -#-----| False -> Block 10 -#-----| True -> Block 9 +#-----| False -> Block 11 +#-----| True -> Block 10 -# 91| Block 9 +# 91| Block 10 # 91| r91_82(suspend_always *) = CopyValue : r91_74 # 91| r91_83(glval) = CopyValue : r91_82 #-----| r0_33(glval) = Convert : r91_83 @@ -1131,7 +1139,7 @@ coroutines.cpp: # 91| v91_88(void) = ReturnValue : &:r91_87, ~m? #-----| Goto -> Block 1 -# 91| Block 10 +# 91| Block 11 # 91| r91_89(suspend_always *) = CopyValue : r91_74 # 91| r91_90(glval) = CopyValue : r91_89 #-----| r0_35(glval) = Convert : r91_90 @@ -1150,7 +1158,7 @@ coroutines.cpp: # 91| v91_103(void) = Call[await_suspend] : func:r91_91, this:r0_35, 0:r91_102 # 91| mu91_104(unknown) = ^CallSideEffect : ~m? #-----| v0_36(void) = ^IndirectReadSideEffect[-1] : &:r0_35, ~m? -#-----| Goto -> Block 9 +#-----| Goto -> Block 10 # 95| co_returnable_void co_yield_value_void(int) # 95| Block 0 @@ -1202,53 +1210,32 @@ coroutines.cpp: #-----| Goto -> Block 1 #-----| Block 3 -#-----| r0_8(bool) = Constant[1] : -#-----| r0_9(glval) = VariableAddress[(unnamed local variable)] : -#-----| mu0_10(bool) = Store[(unnamed local variable)] : &:r0_9, r0_8 -# 95| r95_33(suspend_always *) = CopyValue : r95_22 -# 95| r95_34(glval) = CopyValue : r95_33 -#-----| r0_11(glval) = Convert : r95_34 -# 95| r95_35(glval) = FunctionAddress[await_resume] : -# 95| v95_36(void) = Call[await_resume] : func:r95_35, this:r0_11 -# 95| mu95_37(unknown) = ^CallSideEffect : ~m? -#-----| v0_12(void) = ^IndirectReadSideEffect[-1] : &:r0_11, ~m? -#-----| v0_13(void) = CopyValue : v95_36 -# 96| r96_1(glval) = VariableAddress[(unnamed local variable)] : -# 96| r96_2(glval) = FunctionAddress[yield_value] : -# 96| r96_3(glval) = VariableAddress[i] : -# 96| r96_4(int) = Load[i] : &:r96_3, ~m? -# 96| r96_5(suspend_always) = Call[yield_value] : func:r96_2, this:r96_1, 0:r96_4 -# 96| mu96_6(unknown) = ^CallSideEffect : ~m? -# 96| v96_7(void) = ^IndirectReadSideEffect[-1] : &:r96_1, ~m? -# 96| mu96_8(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r96_1 -#-----| r0_14(glval) = VariableAddress[#temp0:0] : -# 96| r96_9(glval) = VariableAddress[#temp96:13] : -# 96| r96_10(glval) = VariableAddress[(unnamed local variable)] : -# 96| r96_11(glval) = FunctionAddress[yield_value] : -# 96| r96_12(glval) = VariableAddress[i] : -# 96| r96_13(int) = Load[i] : &:r96_12, ~m? -# 96| r96_14(suspend_always) = Call[yield_value] : func:r96_11, this:r96_10, 0:r96_13 -# 96| mu96_15(unknown) = ^CallSideEffect : ~m? -# 96| v96_16(void) = ^IndirectReadSideEffect[-1] : &:r96_10, ~m? -# 96| mu96_17(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r96_10 -# 96| mu96_18(suspend_always) = Store[#temp96:13] : &:r96_9, r96_14 -# 96| r96_19(suspend_always *) = CopyValue : r96_9 -# 96| mu96_20(suspend_always *) = Store[#temp0:0] : &:r0_14, r96_19 -#-----| r0_15(suspend_always *) = Load[#temp0:0] : &:r0_14, ~m? -# 96| r96_21(glval) = CopyValue : r0_15 -# 96| r96_22(glval) = Convert : r96_21 -# 96| r96_23(glval) = FunctionAddress[await_ready] : -# 96| r96_24(bool) = Call[await_ready] : func:r96_23, this:r96_22 -# 96| mu96_25(unknown) = ^CallSideEffect : ~m? -# 96| v96_26(void) = ^IndirectReadSideEffect[-1] : &:r96_22, ~m? -# 96| v96_27(void) = ConditionalBranch : r96_24 -#-----| False -> Block 6 -#-----| True -> Block 5 +#-----| r0_8(bool) = Constant[1] : +#-----| r0_9(glval) = VariableAddress[(unnamed local variable)] : +#-----| mu0_10(bool) = Store[(unnamed local variable)] : &:r0_9, r0_8 +# 95| r95_33(suspend_always *) = CopyValue : r95_22 +# 95| r95_34(glval) = CopyValue : r95_33 +#-----| r0_11(glval) = Convert : r95_34 +# 95| r95_35(glval) = FunctionAddress[await_resume] : +# 95| v95_36(void) = Call[await_resume] : func:r95_35, this:r0_11 +# 95| mu95_37(unknown) = ^CallSideEffect : ~m? +#-----| v0_12(void) = ^IndirectReadSideEffect[-1] : &:r0_11, ~m? +#-----| v0_13(void) = CopyValue : v95_36 +# 96| r96_1(glval) = VariableAddress[(unnamed local variable)] : +# 96| r96_2(glval) = FunctionAddress[yield_value] : +# 96| r96_3(glval) = VariableAddress[i] : +# 96| r96_4(int) = Load[i] : &:r96_3, ~m? +# 96| r96_5(suspend_always) = Call[yield_value] : func:r96_2, this:r96_1, 0:r96_4 +# 96| mu96_6(unknown) = ^CallSideEffect : ~m? +# 96| v96_7(void) = ^IndirectReadSideEffect[-1] : &:r96_1, ~m? +# 96| mu96_8(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r96_1 +#-----| C++ Exception -> Block 10 +#-----| Goto -> Block 5 # 95| Block 4 # 95| r95_38(suspend_always *) = CopyValue : r95_22 # 95| r95_39(glval) = CopyValue : r95_38 -#-----| r0_16(glval) = Convert : r95_39 +#-----| r0_14(glval) = Convert : r95_39 # 95| r95_40(glval) = FunctionAddress[await_suspend] : # 95| r95_41(glval>) = VariableAddress[#temp95:20] : # 95| mu95_42(coroutine_handle) = Uninitialized[#temp95:20] : &:r95_41 @@ -1261,12 +1248,41 @@ coroutines.cpp: # 95| v95_49(void) = ^BufferReadSideEffect[0] : &:r95_46, ~m? # 95| mu95_50(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r95_41 # 95| r95_51(coroutine_handle) = Load[#temp95:20] : &:r95_41, ~m? -# 95| v95_52(void) = Call[await_suspend] : func:r95_40, this:r0_16, 0:r95_51 +# 95| v95_52(void) = Call[await_suspend] : func:r95_40, this:r0_14, 0:r95_51 # 95| mu95_53(unknown) = ^CallSideEffect : ~m? -#-----| v0_17(void) = ^IndirectReadSideEffect[-1] : &:r0_16, ~m? +#-----| v0_15(void) = ^IndirectReadSideEffect[-1] : &:r0_14, ~m? #-----| Goto -> Block 3 -# 96| Block 5 +#-----| Block 5 +#-----| r0_16(glval) = VariableAddress[#temp0:0] : +# 96| r96_9(glval) = VariableAddress[#temp96:13] : +# 96| r96_10(glval) = VariableAddress[(unnamed local variable)] : +# 96| r96_11(glval) = FunctionAddress[yield_value] : +# 96| r96_12(glval) = VariableAddress[i] : +# 96| r96_13(int) = Load[i] : &:r96_12, ~m? +# 96| r96_14(suspend_always) = Call[yield_value] : func:r96_11, this:r96_10, 0:r96_13 +# 96| mu96_15(unknown) = ^CallSideEffect : ~m? +# 96| v96_16(void) = ^IndirectReadSideEffect[-1] : &:r96_10, ~m? +# 96| mu96_17(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r96_10 +#-----| C++ Exception -> Block 10 +#-----| Goto -> Block 6 + +# 96| Block 6 +# 96| mu96_18(suspend_always) = Store[#temp96:13] : &:r96_9, r96_14 +# 96| r96_19(suspend_always *) = CopyValue : r96_9 +# 96| mu96_20(suspend_always *) = Store[#temp0:0] : &:r0_16, r96_19 +#-----| r0_17(suspend_always *) = Load[#temp0:0] : &:r0_16, ~m? +# 96| r96_21(glval) = CopyValue : r0_17 +# 96| r96_22(glval) = Convert : r96_21 +# 96| r96_23(glval) = FunctionAddress[await_ready] : +# 96| r96_24(bool) = Call[await_ready] : func:r96_23, this:r96_22 +# 96| mu96_25(unknown) = ^CallSideEffect : ~m? +# 96| v96_26(void) = ^IndirectReadSideEffect[-1] : &:r96_22, ~m? +# 96| v96_27(void) = ConditionalBranch : r96_24 +#-----| False -> Block 8 +#-----| True -> Block 7 + +# 96| Block 7 # 96| r96_28(suspend_always *) = CopyValue : r96_19 # 96| r96_29(glval) = CopyValue : r96_28 #-----| r0_18(glval) = Convert : r96_29 @@ -1280,14 +1296,13 @@ coroutines.cpp: #-----| mu0_23(unknown) = ^CallSideEffect : ~m? #-----| v0_24(void) = ^IndirectReadSideEffect[-1] : &:r0_20, ~m? #-----| mu0_25(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_20 -# 97| v97_1(void) = NoOp : -#-----| v0_26(void) = NoOp : -#-----| Goto (back edge) -> Block 10 +#-----| C++ Exception -> Block 10 +#-----| Goto -> Block 9 -# 96| Block 6 +# 96| Block 8 # 96| r96_33(suspend_always *) = CopyValue : r96_19 # 96| r96_34(glval) = CopyValue : r96_33 -#-----| r0_27(glval) = Convert : r96_34 +#-----| r0_26(glval) = Convert : r96_34 # 96| r96_35(glval) = FunctionAddress[await_suspend] : # 96| r96_36(glval>) = VariableAddress[#temp96:3] : # 96| mu96_37(coroutine_handle) = Uninitialized[#temp96:3] : &:r96_36 @@ -1300,34 +1315,39 @@ coroutines.cpp: # 96| v96_44(void) = ^BufferReadSideEffect[0] : &:r96_41, ~m? # 96| mu96_45(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r96_36 # 96| r96_46(coroutine_handle) = Load[#temp96:3] : &:r96_36, ~m? -# 96| v96_47(void) = Call[await_suspend] : func:r96_35, this:r0_27, 0:r96_46 +# 96| v96_47(void) = Call[await_suspend] : func:r96_35, this:r0_26, 0:r96_46 # 96| mu96_48(unknown) = ^CallSideEffect : ~m? -#-----| v0_28(void) = ^IndirectReadSideEffect[-1] : &:r0_27, ~m? -#-----| Goto -> Block 5 +#-----| v0_27(void) = ^IndirectReadSideEffect[-1] : &:r0_26, ~m? +#-----| Goto -> Block 7 -#-----| Block 7 +# 97| Block 9 +# 97| v97_1(void) = NoOp : +#-----| v0_28(void) = NoOp : +#-----| Goto (back edge) -> Block 13 + +#-----| Block 10 #-----| v0_29(void) = CatchAny : #-----| r0_30(glval) = VariableAddress[(unnamed local variable)] : #-----| r0_31(bool) = Load[(unnamed local variable)] : &:r0_30, ~m? #-----| r0_32(bool) = LogicalNot : r0_31 #-----| v0_33(void) = ConditionalBranch : r0_32 -#-----| False -> Block 9 -#-----| True -> Block 8 +#-----| False -> Block 12 +#-----| True -> Block 11 -#-----| Block 8 +#-----| Block 11 #-----| v0_34(void) = ReThrow : #-----| C++ Exception -> Block 2 -# 95| Block 9 +# 95| Block 12 # 95| r95_54(glval) = VariableAddress[(unnamed local variable)] : # 95| r95_55(glval) = FunctionAddress[unhandled_exception] : # 95| v95_56(void) = Call[unhandled_exception] : func:r95_55, this:r95_54 # 95| mu95_57(unknown) = ^CallSideEffect : ~m? # 95| v95_58(void) = ^IndirectReadSideEffect[-1] : &:r95_54, ~m? # 95| mu95_59(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r95_54 -#-----| Goto -> Block 10 +#-----| Goto -> Block 13 -#-----| Block 10 +#-----| Block 13 #-----| v0_35(void) = NoOp : # 95| r95_60(glval) = VariableAddress[(unnamed local variable)] : # 95| r95_61(glval) = FunctionAddress[final_suspend] : @@ -1354,10 +1374,10 @@ coroutines.cpp: # 95| mu95_80(unknown) = ^CallSideEffect : ~m? # 95| v95_81(void) = ^IndirectReadSideEffect[-1] : &:r95_77, ~m? #-----| v0_38(void) = ConditionalBranch : r95_79 -#-----| False -> Block 12 -#-----| True -> Block 11 +#-----| False -> Block 15 +#-----| True -> Block 14 -# 95| Block 11 +# 95| Block 14 # 95| r95_82(suspend_always *) = CopyValue : r95_74 # 95| r95_83(glval) = CopyValue : r95_82 #-----| r0_39(glval) = Convert : r95_83 @@ -1369,7 +1389,7 @@ coroutines.cpp: # 95| v95_88(void) = ReturnValue : &:r95_87, ~m? #-----| Goto -> Block 1 -# 95| Block 12 +# 95| Block 15 # 95| r95_89(suspend_always *) = CopyValue : r95_74 # 95| r95_90(glval) = CopyValue : r95_89 #-----| r0_41(glval) = Convert : r95_90 @@ -1388,7 +1408,7 @@ coroutines.cpp: # 95| v95_103(void) = Call[await_suspend] : func:r95_91, this:r0_41, 0:r95_102 # 95| mu95_104(unknown) = ^CallSideEffect : ~m? #-----| v0_42(void) = ^IndirectReadSideEffect[-1] : &:r0_41, ~m? -#-----| Goto -> Block 11 +#-----| Goto -> Block 14 # 99| co_returnable_value co_yield_value_value(int) # 99| Block 0 @@ -1440,53 +1460,32 @@ coroutines.cpp: #-----| Goto -> Block 1 #-----| Block 3 -#-----| r0_8(bool) = Constant[1] : -#-----| r0_9(glval) = VariableAddress[(unnamed local variable)] : -#-----| mu0_10(bool) = Store[(unnamed local variable)] : &:r0_9, r0_8 -# 99| r99_33(suspend_always *) = CopyValue : r99_22 -# 99| r99_34(glval) = CopyValue : r99_33 -#-----| r0_11(glval) = Convert : r99_34 -# 99| r99_35(glval) = FunctionAddress[await_resume] : -# 99| v99_36(void) = Call[await_resume] : func:r99_35, this:r0_11 -# 99| mu99_37(unknown) = ^CallSideEffect : ~m? -#-----| v0_12(void) = ^IndirectReadSideEffect[-1] : &:r0_11, ~m? -#-----| v0_13(void) = CopyValue : v99_36 -# 100| r100_1(glval) = VariableAddress[(unnamed local variable)] : -# 100| r100_2(glval) = FunctionAddress[yield_value] : -# 100| r100_3(glval) = VariableAddress[i] : -# 100| r100_4(int) = Load[i] : &:r100_3, ~m? -# 100| r100_5(suspend_always) = Call[yield_value] : func:r100_2, this:r100_1, 0:r100_4 -# 100| mu100_6(unknown) = ^CallSideEffect : ~m? -# 100| v100_7(void) = ^IndirectReadSideEffect[-1] : &:r100_1, ~m? -# 100| mu100_8(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r100_1 -#-----| r0_14(glval) = VariableAddress[#temp0:0] : -# 100| r100_9(glval) = VariableAddress[#temp100:13] : -# 100| r100_10(glval) = VariableAddress[(unnamed local variable)] : -# 100| r100_11(glval) = FunctionAddress[yield_value] : -# 100| r100_12(glval) = VariableAddress[i] : -# 100| r100_13(int) = Load[i] : &:r100_12, ~m? -# 100| r100_14(suspend_always) = Call[yield_value] : func:r100_11, this:r100_10, 0:r100_13 -# 100| mu100_15(unknown) = ^CallSideEffect : ~m? -# 100| v100_16(void) = ^IndirectReadSideEffect[-1] : &:r100_10, ~m? -# 100| mu100_17(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r100_10 -# 100| mu100_18(suspend_always) = Store[#temp100:13] : &:r100_9, r100_14 -# 100| r100_19(suspend_always *) = CopyValue : r100_9 -# 100| mu100_20(suspend_always *) = Store[#temp0:0] : &:r0_14, r100_19 -#-----| r0_15(suspend_always *) = Load[#temp0:0] : &:r0_14, ~m? -# 100| r100_21(glval) = CopyValue : r0_15 -# 100| r100_22(glval) = Convert : r100_21 -# 100| r100_23(glval) = FunctionAddress[await_ready] : -# 100| r100_24(bool) = Call[await_ready] : func:r100_23, this:r100_22 -# 100| mu100_25(unknown) = ^CallSideEffect : ~m? -# 100| v100_26(void) = ^IndirectReadSideEffect[-1] : &:r100_22, ~m? -# 100| v100_27(void) = ConditionalBranch : r100_24 -#-----| False -> Block 6 -#-----| True -> Block 5 +#-----| r0_8(bool) = Constant[1] : +#-----| r0_9(glval) = VariableAddress[(unnamed local variable)] : +#-----| mu0_10(bool) = Store[(unnamed local variable)] : &:r0_9, r0_8 +# 99| r99_33(suspend_always *) = CopyValue : r99_22 +# 99| r99_34(glval) = CopyValue : r99_33 +#-----| r0_11(glval) = Convert : r99_34 +# 99| r99_35(glval) = FunctionAddress[await_resume] : +# 99| v99_36(void) = Call[await_resume] : func:r99_35, this:r0_11 +# 99| mu99_37(unknown) = ^CallSideEffect : ~m? +#-----| v0_12(void) = ^IndirectReadSideEffect[-1] : &:r0_11, ~m? +#-----| v0_13(void) = CopyValue : v99_36 +# 100| r100_1(glval) = VariableAddress[(unnamed local variable)] : +# 100| r100_2(glval) = FunctionAddress[yield_value] : +# 100| r100_3(glval) = VariableAddress[i] : +# 100| r100_4(int) = Load[i] : &:r100_3, ~m? +# 100| r100_5(suspend_always) = Call[yield_value] : func:r100_2, this:r100_1, 0:r100_4 +# 100| mu100_6(unknown) = ^CallSideEffect : ~m? +# 100| v100_7(void) = ^IndirectReadSideEffect[-1] : &:r100_1, ~m? +# 100| mu100_8(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r100_1 +#-----| C++ Exception -> Block 9 +#-----| Goto -> Block 5 # 99| Block 4 # 99| r99_38(suspend_always *) = CopyValue : r99_22 # 99| r99_39(glval) = CopyValue : r99_38 -#-----| r0_16(glval) = Convert : r99_39 +#-----| r0_14(glval) = Convert : r99_39 # 99| r99_40(glval) = FunctionAddress[await_suspend] : # 99| r99_41(glval>) = VariableAddress[#temp99:21] : # 99| mu99_42(coroutine_handle) = Uninitialized[#temp99:21] : &:r99_41 @@ -1499,12 +1498,41 @@ coroutines.cpp: # 99| v99_49(void) = ^BufferReadSideEffect[0] : &:r99_46, ~m? # 99| mu99_50(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r99_41 # 99| r99_51(coroutine_handle) = Load[#temp99:21] : &:r99_41, ~m? -# 99| v99_52(void) = Call[await_suspend] : func:r99_40, this:r0_16, 0:r99_51 +# 99| v99_52(void) = Call[await_suspend] : func:r99_40, this:r0_14, 0:r99_51 # 99| mu99_53(unknown) = ^CallSideEffect : ~m? -#-----| v0_17(void) = ^IndirectReadSideEffect[-1] : &:r0_16, ~m? +#-----| v0_15(void) = ^IndirectReadSideEffect[-1] : &:r0_14, ~m? #-----| Goto -> Block 3 -# 100| Block 5 +#-----| Block 5 +#-----| r0_16(glval) = VariableAddress[#temp0:0] : +# 100| r100_9(glval) = VariableAddress[#temp100:13] : +# 100| r100_10(glval) = VariableAddress[(unnamed local variable)] : +# 100| r100_11(glval) = FunctionAddress[yield_value] : +# 100| r100_12(glval) = VariableAddress[i] : +# 100| r100_13(int) = Load[i] : &:r100_12, ~m? +# 100| r100_14(suspend_always) = Call[yield_value] : func:r100_11, this:r100_10, 0:r100_13 +# 100| mu100_15(unknown) = ^CallSideEffect : ~m? +# 100| v100_16(void) = ^IndirectReadSideEffect[-1] : &:r100_10, ~m? +# 100| mu100_17(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r100_10 +#-----| C++ Exception -> Block 9 +#-----| Goto -> Block 6 + +# 100| Block 6 +# 100| mu100_18(suspend_always) = Store[#temp100:13] : &:r100_9, r100_14 +# 100| r100_19(suspend_always *) = CopyValue : r100_9 +# 100| mu100_20(suspend_always *) = Store[#temp0:0] : &:r0_16, r100_19 +#-----| r0_17(suspend_always *) = Load[#temp0:0] : &:r0_16, ~m? +# 100| r100_21(glval) = CopyValue : r0_17 +# 100| r100_22(glval) = Convert : r100_21 +# 100| r100_23(glval) = FunctionAddress[await_ready] : +# 100| r100_24(bool) = Call[await_ready] : func:r100_23, this:r100_22 +# 100| mu100_25(unknown) = ^CallSideEffect : ~m? +# 100| v100_26(void) = ^IndirectReadSideEffect[-1] : &:r100_22, ~m? +# 100| v100_27(void) = ConditionalBranch : r100_24 +#-----| False -> Block 8 +#-----| True -> Block 7 + +# 100| Block 7 # 100| r100_28(suspend_always *) = CopyValue : r100_19 # 100| r100_29(glval) = CopyValue : r100_28 #-----| r0_18(glval) = Convert : r100_29 @@ -1512,9 +1540,9 @@ coroutines.cpp: # 100| v100_31(void) = Call[await_resume] : func:r100_30, this:r0_18 # 100| mu100_32(unknown) = ^CallSideEffect : ~m? #-----| v0_19(void) = ^IndirectReadSideEffect[-1] : &:r0_18, ~m? -#-----| Goto -> Block 10 +#-----| Goto -> Block 12 -# 100| Block 6 +# 100| Block 8 # 100| r100_33(suspend_always *) = CopyValue : r100_19 # 100| r100_34(glval) = CopyValue : r100_33 #-----| r0_20(glval) = Convert : r100_34 @@ -1533,31 +1561,31 @@ coroutines.cpp: # 100| v100_47(void) = Call[await_suspend] : func:r100_35, this:r0_20, 0:r100_46 # 100| mu100_48(unknown) = ^CallSideEffect : ~m? #-----| v0_21(void) = ^IndirectReadSideEffect[-1] : &:r0_20, ~m? -#-----| Goto -> Block 5 +#-----| Goto -> Block 7 -#-----| Block 7 +#-----| Block 9 #-----| v0_22(void) = CatchAny : #-----| r0_23(glval) = VariableAddress[(unnamed local variable)] : #-----| r0_24(bool) = Load[(unnamed local variable)] : &:r0_23, ~m? #-----| r0_25(bool) = LogicalNot : r0_24 #-----| v0_26(void) = ConditionalBranch : r0_25 -#-----| False -> Block 9 -#-----| True -> Block 8 +#-----| False -> Block 11 +#-----| True -> Block 10 -#-----| Block 8 +#-----| Block 10 #-----| v0_27(void) = ReThrow : #-----| C++ Exception -> Block 2 -# 99| Block 9 +# 99| Block 11 # 99| r99_54(glval) = VariableAddress[(unnamed local variable)] : # 99| r99_55(glval) = FunctionAddress[unhandled_exception] : # 99| v99_56(void) = Call[unhandled_exception] : func:r99_55, this:r99_54 # 99| mu99_57(unknown) = ^CallSideEffect : ~m? # 99| v99_58(void) = ^IndirectReadSideEffect[-1] : &:r99_54, ~m? # 99| mu99_59(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r99_54 -#-----| Goto -> Block 10 +#-----| Goto -> Block 12 -#-----| Block 10 +#-----| Block 12 #-----| v0_28(void) = NoOp : # 99| r99_60(glval) = VariableAddress[(unnamed local variable)] : # 99| r99_61(glval) = FunctionAddress[final_suspend] : @@ -1584,10 +1612,10 @@ coroutines.cpp: # 99| mu99_80(unknown) = ^CallSideEffect : ~m? # 99| v99_81(void) = ^IndirectReadSideEffect[-1] : &:r99_77, ~m? #-----| v0_31(void) = ConditionalBranch : r99_79 -#-----| False -> Block 12 -#-----| True -> Block 11 +#-----| False -> Block 14 +#-----| True -> Block 13 -# 99| Block 11 +# 99| Block 13 # 99| r99_82(suspend_always *) = CopyValue : r99_74 # 99| r99_83(glval) = CopyValue : r99_82 #-----| r0_32(glval) = Convert : r99_83 @@ -1599,7 +1627,7 @@ coroutines.cpp: # 99| v99_88(void) = ReturnValue : &:r99_87, ~m? #-----| Goto -> Block 1 -# 99| Block 12 +# 99| Block 14 # 99| r99_89(suspend_always *) = CopyValue : r99_74 # 99| r99_90(glval) = CopyValue : r99_89 #-----| r0_34(glval) = Convert : r99_90 @@ -1618,7 +1646,7 @@ coroutines.cpp: # 99| v99_103(void) = Call[await_suspend] : func:r99_91, this:r0_34, 0:r99_102 # 99| mu99_104(unknown) = ^CallSideEffect : ~m? #-----| v0_35(void) = ^IndirectReadSideEffect[-1] : &:r0_34, ~m? -#-----| Goto -> Block 11 +#-----| Goto -> Block 13 # 103| co_returnable_void co_yield_and_return_void(int) # 103| Block 0 @@ -1689,34 +1717,13 @@ coroutines.cpp: # 104| mu104_6(unknown) = ^CallSideEffect : ~m? # 104| v104_7(void) = ^IndirectReadSideEffect[-1] : &:r104_1, ~m? # 104| mu104_8(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r104_1 -#-----| r0_14(glval) = VariableAddress[#temp0:0] : -# 104| r104_9(glval) = VariableAddress[#temp104:13] : -# 104| r104_10(glval) = VariableAddress[(unnamed local variable)] : -# 104| r104_11(glval) = FunctionAddress[yield_value] : -# 104| r104_12(glval) = VariableAddress[i] : -# 104| r104_13(int) = Load[i] : &:r104_12, ~m? -# 104| r104_14(suspend_always) = Call[yield_value] : func:r104_11, this:r104_10, 0:r104_13 -# 104| mu104_15(unknown) = ^CallSideEffect : ~m? -# 104| v104_16(void) = ^IndirectReadSideEffect[-1] : &:r104_10, ~m? -# 104| mu104_17(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r104_10 -# 104| mu104_18(suspend_always) = Store[#temp104:13] : &:r104_9, r104_14 -# 104| r104_19(suspend_always *) = CopyValue : r104_9 -# 104| mu104_20(suspend_always *) = Store[#temp0:0] : &:r0_14, r104_19 -#-----| r0_15(suspend_always *) = Load[#temp0:0] : &:r0_14, ~m? -# 104| r104_21(glval) = CopyValue : r0_15 -# 104| r104_22(glval) = Convert : r104_21 -# 104| r104_23(glval) = FunctionAddress[await_ready] : -# 104| r104_24(bool) = Call[await_ready] : func:r104_23, this:r104_22 -# 104| mu104_25(unknown) = ^CallSideEffect : ~m? -# 104| v104_26(void) = ^IndirectReadSideEffect[-1] : &:r104_22, ~m? -# 104| v104_27(void) = ConditionalBranch : r104_24 -#-----| False -> Block 6 -#-----| True -> Block 5 +#-----| C++ Exception -> Block 10 +#-----| Goto -> Block 5 # 103| Block 4 # 103| r103_38(suspend_always *) = CopyValue : r103_22 # 103| r103_39(glval) = CopyValue : r103_38 -#-----| r0_16(glval) = Convert : r103_39 +#-----| r0_14(glval) = Convert : r103_39 # 103| r103_40(glval) = FunctionAddress[await_suspend] : # 103| r103_41(glval>) = VariableAddress[#temp103:20] : # 103| mu103_42(coroutine_handle) = Uninitialized[#temp103:20] : &:r103_41 @@ -1729,12 +1736,41 @@ coroutines.cpp: # 103| v103_49(void) = ^BufferReadSideEffect[0] : &:r103_46, ~m? # 103| mu103_50(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r103_41 # 103| r103_51(coroutine_handle) = Load[#temp103:20] : &:r103_41, ~m? -# 103| v103_52(void) = Call[await_suspend] : func:r103_40, this:r0_16, 0:r103_51 +# 103| v103_52(void) = Call[await_suspend] : func:r103_40, this:r0_14, 0:r103_51 # 103| mu103_53(unknown) = ^CallSideEffect : ~m? -#-----| v0_17(void) = ^IndirectReadSideEffect[-1] : &:r0_16, ~m? +#-----| v0_15(void) = ^IndirectReadSideEffect[-1] : &:r0_14, ~m? #-----| Goto -> Block 3 -# 104| Block 5 +#-----| Block 5 +#-----| r0_16(glval) = VariableAddress[#temp0:0] : +# 104| r104_9(glval) = VariableAddress[#temp104:13] : +# 104| r104_10(glval) = VariableAddress[(unnamed local variable)] : +# 104| r104_11(glval) = FunctionAddress[yield_value] : +# 104| r104_12(glval) = VariableAddress[i] : +# 104| r104_13(int) = Load[i] : &:r104_12, ~m? +# 104| r104_14(suspend_always) = Call[yield_value] : func:r104_11, this:r104_10, 0:r104_13 +# 104| mu104_15(unknown) = ^CallSideEffect : ~m? +# 104| v104_16(void) = ^IndirectReadSideEffect[-1] : &:r104_10, ~m? +# 104| mu104_17(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r104_10 +#-----| C++ Exception -> Block 10 +#-----| Goto -> Block 6 + +# 104| Block 6 +# 104| mu104_18(suspend_always) = Store[#temp104:13] : &:r104_9, r104_14 +# 104| r104_19(suspend_always *) = CopyValue : r104_9 +# 104| mu104_20(suspend_always *) = Store[#temp0:0] : &:r0_16, r104_19 +#-----| r0_17(suspend_always *) = Load[#temp0:0] : &:r0_16, ~m? +# 104| r104_21(glval) = CopyValue : r0_17 +# 104| r104_22(glval) = Convert : r104_21 +# 104| r104_23(glval) = FunctionAddress[await_ready] : +# 104| r104_24(bool) = Call[await_ready] : func:r104_23, this:r104_22 +# 104| mu104_25(unknown) = ^CallSideEffect : ~m? +# 104| v104_26(void) = ^IndirectReadSideEffect[-1] : &:r104_22, ~m? +# 104| v104_27(void) = ConditionalBranch : r104_24 +#-----| False -> Block 8 +#-----| True -> Block 7 + +# 104| Block 7 # 104| r104_28(suspend_always *) = CopyValue : r104_19 # 104| r104_29(glval) = CopyValue : r104_28 #-----| r0_18(glval) = Convert : r104_29 @@ -1748,14 +1784,13 @@ coroutines.cpp: #-----| mu0_23(unknown) = ^CallSideEffect : ~m? #-----| v0_24(void) = ^IndirectReadSideEffect[-1] : &:r0_20, ~m? #-----| mu0_25(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_20 -# 105| v105_1(void) = NoOp : -#-----| v0_26(void) = NoOp : -#-----| Goto (back edge) -> Block 10 +#-----| C++ Exception -> Block 10 +#-----| Goto -> Block 9 -# 104| Block 6 +# 104| Block 8 # 104| r104_33(suspend_always *) = CopyValue : r104_19 # 104| r104_34(glval) = CopyValue : r104_33 -#-----| r0_27(glval) = Convert : r104_34 +#-----| r0_26(glval) = Convert : r104_34 # 104| r104_35(glval) = FunctionAddress[await_suspend] : # 104| r104_36(glval>) = VariableAddress[#temp104:3] : # 104| mu104_37(coroutine_handle) = Uninitialized[#temp104:3] : &:r104_36 @@ -1768,34 +1803,39 @@ coroutines.cpp: # 104| v104_44(void) = ^BufferReadSideEffect[0] : &:r104_41, ~m? # 104| mu104_45(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r104_36 # 104| r104_46(coroutine_handle) = Load[#temp104:3] : &:r104_36, ~m? -# 104| v104_47(void) = Call[await_suspend] : func:r104_35, this:r0_27, 0:r104_46 +# 104| v104_47(void) = Call[await_suspend] : func:r104_35, this:r0_26, 0:r104_46 # 104| mu104_48(unknown) = ^CallSideEffect : ~m? -#-----| v0_28(void) = ^IndirectReadSideEffect[-1] : &:r0_27, ~m? -#-----| Goto -> Block 5 +#-----| v0_27(void) = ^IndirectReadSideEffect[-1] : &:r0_26, ~m? +#-----| Goto -> Block 7 -#-----| Block 7 +# 105| Block 9 +# 105| v105_1(void) = NoOp : +#-----| v0_28(void) = NoOp : +#-----| Goto (back edge) -> Block 13 + +#-----| Block 10 #-----| v0_29(void) = CatchAny : #-----| r0_30(glval) = VariableAddress[(unnamed local variable)] : #-----| r0_31(bool) = Load[(unnamed local variable)] : &:r0_30, ~m? #-----| r0_32(bool) = LogicalNot : r0_31 #-----| v0_33(void) = ConditionalBranch : r0_32 -#-----| False -> Block 9 -#-----| True -> Block 8 +#-----| False -> Block 12 +#-----| True -> Block 11 -#-----| Block 8 +#-----| Block 11 #-----| v0_34(void) = ReThrow : #-----| C++ Exception -> Block 2 -# 103| Block 9 +# 103| Block 12 # 103| r103_54(glval) = VariableAddress[(unnamed local variable)] : # 103| r103_55(glval) = FunctionAddress[unhandled_exception] : # 103| v103_56(void) = Call[unhandled_exception] : func:r103_55, this:r103_54 # 103| mu103_57(unknown) = ^CallSideEffect : ~m? # 103| v103_58(void) = ^IndirectReadSideEffect[-1] : &:r103_54, ~m? # 103| mu103_59(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r103_54 -#-----| Goto -> Block 10 +#-----| Goto -> Block 13 -#-----| Block 10 +#-----| Block 13 #-----| v0_35(void) = NoOp : # 103| r103_60(glval) = VariableAddress[(unnamed local variable)] : # 103| r103_61(glval) = FunctionAddress[final_suspend] : @@ -1822,10 +1862,10 @@ coroutines.cpp: # 103| mu103_80(unknown) = ^CallSideEffect : ~m? # 103| v103_81(void) = ^IndirectReadSideEffect[-1] : &:r103_77, ~m? #-----| v0_38(void) = ConditionalBranch : r103_79 -#-----| False -> Block 12 -#-----| True -> Block 11 +#-----| False -> Block 15 +#-----| True -> Block 14 -# 103| Block 11 +# 103| Block 14 # 103| r103_82(suspend_always *) = CopyValue : r103_74 # 103| r103_83(glval) = CopyValue : r103_82 #-----| r0_39(glval) = Convert : r103_83 @@ -1837,7 +1877,7 @@ coroutines.cpp: # 103| v103_88(void) = ReturnValue : &:r103_87, ~m? #-----| Goto -> Block 1 -# 103| Block 12 +# 103| Block 15 # 103| r103_89(suspend_always *) = CopyValue : r103_74 # 103| r103_90(glval) = CopyValue : r103_89 #-----| r0_41(glval) = Convert : r103_90 @@ -1856,7 +1896,7 @@ coroutines.cpp: # 103| v103_103(void) = Call[await_suspend] : func:r103_91, this:r0_41, 0:r103_102 # 103| mu103_104(unknown) = ^CallSideEffect : ~m? #-----| v0_42(void) = ^IndirectReadSideEffect[-1] : &:r0_41, ~m? -#-----| Goto -> Block 11 +#-----| Goto -> Block 14 # 108| co_returnable_value co_yield_and_return_value(int) # 108| Block 0 @@ -1927,34 +1967,13 @@ coroutines.cpp: # 109| mu109_6(unknown) = ^CallSideEffect : ~m? # 109| v109_7(void) = ^IndirectReadSideEffect[-1] : &:r109_1, ~m? # 109| mu109_8(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r109_1 -#-----| r0_14(glval) = VariableAddress[#temp0:0] : -# 109| r109_9(glval) = VariableAddress[#temp109:13] : -# 109| r109_10(glval) = VariableAddress[(unnamed local variable)] : -# 109| r109_11(glval) = FunctionAddress[yield_value] : -# 109| r109_12(glval) = VariableAddress[i] : -# 109| r109_13(int) = Load[i] : &:r109_12, ~m? -# 109| r109_14(suspend_always) = Call[yield_value] : func:r109_11, this:r109_10, 0:r109_13 -# 109| mu109_15(unknown) = ^CallSideEffect : ~m? -# 109| v109_16(void) = ^IndirectReadSideEffect[-1] : &:r109_10, ~m? -# 109| mu109_17(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r109_10 -# 109| mu109_18(suspend_always) = Store[#temp109:13] : &:r109_9, r109_14 -# 109| r109_19(suspend_always *) = CopyValue : r109_9 -# 109| mu109_20(suspend_always *) = Store[#temp0:0] : &:r0_14, r109_19 -#-----| r0_15(suspend_always *) = Load[#temp0:0] : &:r0_14, ~m? -# 109| r109_21(glval) = CopyValue : r0_15 -# 109| r109_22(glval) = Convert : r109_21 -# 109| r109_23(glval) = FunctionAddress[await_ready] : -# 109| r109_24(bool) = Call[await_ready] : func:r109_23, this:r109_22 -# 109| mu109_25(unknown) = ^CallSideEffect : ~m? -# 109| v109_26(void) = ^IndirectReadSideEffect[-1] : &:r109_22, ~m? -# 109| v109_27(void) = ConditionalBranch : r109_24 -#-----| False -> Block 6 -#-----| True -> Block 5 +#-----| C++ Exception -> Block 10 +#-----| Goto -> Block 5 # 108| Block 4 # 108| r108_38(suspend_always *) = CopyValue : r108_22 # 108| r108_39(glval) = CopyValue : r108_38 -#-----| r0_16(glval) = Convert : r108_39 +#-----| r0_14(glval) = Convert : r108_39 # 108| r108_40(glval) = FunctionAddress[await_suspend] : # 108| r108_41(glval>) = VariableAddress[#temp108:21] : # 108| mu108_42(coroutine_handle) = Uninitialized[#temp108:21] : &:r108_41 @@ -1967,12 +1986,41 @@ coroutines.cpp: # 108| v108_49(void) = ^BufferReadSideEffect[0] : &:r108_46, ~m? # 108| mu108_50(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r108_41 # 108| r108_51(coroutine_handle) = Load[#temp108:21] : &:r108_41, ~m? -# 108| v108_52(void) = Call[await_suspend] : func:r108_40, this:r0_16, 0:r108_51 +# 108| v108_52(void) = Call[await_suspend] : func:r108_40, this:r0_14, 0:r108_51 # 108| mu108_53(unknown) = ^CallSideEffect : ~m? -#-----| v0_17(void) = ^IndirectReadSideEffect[-1] : &:r0_16, ~m? +#-----| v0_15(void) = ^IndirectReadSideEffect[-1] : &:r0_14, ~m? #-----| Goto -> Block 3 -# 109| Block 5 +#-----| Block 5 +#-----| r0_16(glval) = VariableAddress[#temp0:0] : +# 109| r109_9(glval) = VariableAddress[#temp109:13] : +# 109| r109_10(glval) = VariableAddress[(unnamed local variable)] : +# 109| r109_11(glval) = FunctionAddress[yield_value] : +# 109| r109_12(glval) = VariableAddress[i] : +# 109| r109_13(int) = Load[i] : &:r109_12, ~m? +# 109| r109_14(suspend_always) = Call[yield_value] : func:r109_11, this:r109_10, 0:r109_13 +# 109| mu109_15(unknown) = ^CallSideEffect : ~m? +# 109| v109_16(void) = ^IndirectReadSideEffect[-1] : &:r109_10, ~m? +# 109| mu109_17(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r109_10 +#-----| C++ Exception -> Block 10 +#-----| Goto -> Block 6 + +# 109| Block 6 +# 109| mu109_18(suspend_always) = Store[#temp109:13] : &:r109_9, r109_14 +# 109| r109_19(suspend_always *) = CopyValue : r109_9 +# 109| mu109_20(suspend_always *) = Store[#temp0:0] : &:r0_16, r109_19 +#-----| r0_17(suspend_always *) = Load[#temp0:0] : &:r0_16, ~m? +# 109| r109_21(glval) = CopyValue : r0_17 +# 109| r109_22(glval) = Convert : r109_21 +# 109| r109_23(glval) = FunctionAddress[await_ready] : +# 109| r109_24(bool) = Call[await_ready] : func:r109_23, this:r109_22 +# 109| mu109_25(unknown) = ^CallSideEffect : ~m? +# 109| v109_26(void) = ^IndirectReadSideEffect[-1] : &:r109_22, ~m? +# 109| v109_27(void) = ConditionalBranch : r109_24 +#-----| False -> Block 8 +#-----| True -> Block 7 + +# 109| Block 7 # 109| r109_28(suspend_always *) = CopyValue : r109_19 # 109| r109_29(glval) = CopyValue : r109_28 #-----| r0_18(glval) = Convert : r109_29 @@ -1990,14 +2038,13 @@ coroutines.cpp: #-----| mu0_23(unknown) = ^CallSideEffect : ~m? #-----| v0_24(void) = ^IndirectReadSideEffect[-1] : &:r0_20, ~m? #-----| mu0_25(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_20 -# 110| v110_5(void) = NoOp : -#-----| v0_26(void) = NoOp : -#-----| Goto (back edge) -> Block 10 +#-----| C++ Exception -> Block 10 +#-----| Goto -> Block 9 -# 109| Block 6 +# 109| Block 8 # 109| r109_33(suspend_always *) = CopyValue : r109_19 # 109| r109_34(glval) = CopyValue : r109_33 -#-----| r0_27(glval) = Convert : r109_34 +#-----| r0_26(glval) = Convert : r109_34 # 109| r109_35(glval) = FunctionAddress[await_suspend] : # 109| r109_36(glval>) = VariableAddress[#temp109:3] : # 109| mu109_37(coroutine_handle) = Uninitialized[#temp109:3] : &:r109_36 @@ -2010,34 +2057,39 @@ coroutines.cpp: # 109| v109_44(void) = ^BufferReadSideEffect[0] : &:r109_41, ~m? # 109| mu109_45(coroutine_handle) = ^IndirectMayWriteSideEffect[-1] : &:r109_36 # 109| r109_46(coroutine_handle) = Load[#temp109:3] : &:r109_36, ~m? -# 109| v109_47(void) = Call[await_suspend] : func:r109_35, this:r0_27, 0:r109_46 +# 109| v109_47(void) = Call[await_suspend] : func:r109_35, this:r0_26, 0:r109_46 # 109| mu109_48(unknown) = ^CallSideEffect : ~m? -#-----| v0_28(void) = ^IndirectReadSideEffect[-1] : &:r0_27, ~m? -#-----| Goto -> Block 5 +#-----| v0_27(void) = ^IndirectReadSideEffect[-1] : &:r0_26, ~m? +#-----| Goto -> Block 7 -#-----| Block 7 +# 110| Block 9 +# 110| v110_5(void) = NoOp : +#-----| v0_28(void) = NoOp : +#-----| Goto (back edge) -> Block 13 + +#-----| Block 10 #-----| v0_29(void) = CatchAny : #-----| r0_30(glval) = VariableAddress[(unnamed local variable)] : #-----| r0_31(bool) = Load[(unnamed local variable)] : &:r0_30, ~m? #-----| r0_32(bool) = LogicalNot : r0_31 #-----| v0_33(void) = ConditionalBranch : r0_32 -#-----| False -> Block 9 -#-----| True -> Block 8 +#-----| False -> Block 12 +#-----| True -> Block 11 -#-----| Block 8 +#-----| Block 11 #-----| v0_34(void) = ReThrow : #-----| C++ Exception -> Block 2 -# 108| Block 9 +# 108| Block 12 # 108| r108_54(glval) = VariableAddress[(unnamed local variable)] : # 108| r108_55(glval) = FunctionAddress[unhandled_exception] : # 108| v108_56(void) = Call[unhandled_exception] : func:r108_55, this:r108_54 # 108| mu108_57(unknown) = ^CallSideEffect : ~m? # 108| v108_58(void) = ^IndirectReadSideEffect[-1] : &:r108_54, ~m? # 108| mu108_59(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r108_54 -#-----| Goto -> Block 10 +#-----| Goto -> Block 13 -#-----| Block 10 +#-----| Block 13 #-----| v0_35(void) = NoOp : # 108| r108_60(glval) = VariableAddress[(unnamed local variable)] : # 108| r108_61(glval) = FunctionAddress[final_suspend] : @@ -2064,10 +2116,10 @@ coroutines.cpp: # 108| mu108_80(unknown) = ^CallSideEffect : ~m? # 108| v108_81(void) = ^IndirectReadSideEffect[-1] : &:r108_77, ~m? #-----| v0_38(void) = ConditionalBranch : r108_79 -#-----| False -> Block 12 -#-----| True -> Block 11 +#-----| False -> Block 15 +#-----| True -> Block 14 -# 108| Block 11 +# 108| Block 14 # 108| r108_82(suspend_always *) = CopyValue : r108_74 # 108| r108_83(glval) = CopyValue : r108_82 #-----| r0_39(glval) = Convert : r108_83 @@ -2079,7 +2131,7 @@ coroutines.cpp: # 108| v108_88(void) = ReturnValue : &:r108_87, ~m? #-----| Goto -> Block 1 -# 108| Block 12 +# 108| Block 15 # 108| r108_89(suspend_always *) = CopyValue : r108_74 # 108| r108_90(glval) = CopyValue : r108_89 #-----| r0_41(glval) = Convert : r108_90 @@ -2098,7 +2150,7 @@ coroutines.cpp: # 108| v108_103(void) = Call[await_suspend] : func:r108_91, this:r0_41, 0:r108_102 # 108| mu108_104(unknown) = ^CallSideEffect : ~m? #-----| v0_42(void) = ^IndirectReadSideEffect[-1] : &:r0_41, ~m? -#-----| Goto -> Block 11 +#-----| Goto -> Block 14 destructors_for_temps.cpp: # 9| void ClassWithConstructor::ClassWithConstructor(ClassWithConstructor&&) @@ -6769,7 +6821,7 @@ ir.cpp: # 728| r728_3(char *) = Convert : r728_2 # 728| mu728_4(char *) = Store[#throw728:7] : &:r728_1, r728_3 # 728| v728_5(void) = ThrowValue : &:r728_1, ~m? -#-----| C++ Exception -> Block 9 +#-----| C++ Exception -> Block 10 # 730| Block 4 # 730| r730_1(glval) = VariableAddress[x] : @@ -6777,7 +6829,7 @@ ir.cpp: # 730| r730_3(int) = Constant[2] : # 730| r730_4(bool) = CompareLT : r730_2, r730_3 # 730| v730_5(void) = ConditionalBranch : r730_4 -#-----| False -> Block 8 +#-----| False -> Block 9 #-----| True -> Block 5 # 731| Block 5 @@ -6795,7 +6847,7 @@ ir.cpp: # 731| r731_8(int) = Load[#temp731:11] : &:r731_7, ~m? # 731| r731_9(glval) = VariableAddress[x] : # 731| mu731_10(int) = Store[x] : &:r731_9, r731_8 -#-----| Goto -> Block 8 +#-----| Goto -> Block 9 # 731| Block 7 # 731| r731_11(glval) = VariableAddress[#throw731:19] : @@ -6807,21 +6859,25 @@ ir.cpp: # 731| mu731_17(unknown) = ^CallSideEffect : ~m? # 731| v731_18(void) = ^BufferReadSideEffect[0] : &:r731_15, ~m? # 731| mu731_19(String) = ^IndirectMayWriteSideEffect[-1] : &:r731_11 -# 731| v731_20(void) = ThrowValue : &:r731_11, ~m? -#-----| C++ Exception -> Block 9 +#-----| C++ Exception -> Block 10 +#-----| Goto -> Block 8 -# 733| Block 8 +# 731| Block 8 +# 731| v731_20(void) = ThrowValue : &:r731_11, ~m? +#-----| C++ Exception -> Block 10 + +# 733| Block 9 # 733| r733_1(int) = Constant[7] : # 733| r733_2(glval) = VariableAddress[x] : # 733| mu733_3(int) = Store[x] : &:r733_2, r733_1 -#-----| Goto -> Block 14 - -# 735| Block 9 -# 735| v735_1(void) = CatchByType[const char *] : -#-----| C++ Exception -> Block 11 -#-----| Goto -> Block 10 +#-----| Goto -> Block 15 # 735| Block 10 +# 735| v735_1(void) = CatchByType[const char *] : +#-----| C++ Exception -> Block 12 +#-----| Goto -> Block 11 + +# 735| Block 11 # 735| r735_2(glval) = VariableAddress[s] : # 735| mu735_3(char *) = InitializeParameter[s] : &:r735_2 # 735| r735_4(char *) = Load[s] : &:r735_2, ~m? @@ -6838,25 +6894,25 @@ ir.cpp: # 736| v736_10(void) = ThrowValue : &:r736_1, ~m? #-----| C++ Exception -> Block 2 -# 738| Block 11 -# 738| v738_1(void) = CatchByType[const String &] : -#-----| C++ Exception -> Block 13 -#-----| Goto -> Block 12 - # 738| Block 12 +# 738| v738_1(void) = CatchByType[const String &] : +#-----| C++ Exception -> Block 14 +#-----| Goto -> Block 13 + +# 738| Block 13 # 738| r738_2(glval) = VariableAddress[e] : # 738| mu738_3(String &) = InitializeParameter[e] : &:r738_2 # 738| r738_4(String &) = Load[e] : &:r738_2, ~m? # 738| mu738_5(unknown) = InitializeIndirection[e] : &:r738_4 # 738| v738_6(void) = NoOp : -#-----| Goto -> Block 14 +#-----| Goto -> Block 15 -# 740| Block 13 +# 740| Block 14 # 740| v740_1(void) = CatchAny : # 741| v741_1(void) = ReThrow : #-----| C++ Exception -> Block 2 -# 743| Block 14 +# 743| Block 15 # 743| v743_1(void) = NoOp : # 724| v724_9(void) = ReturnVoid : #-----| Goto -> Block 1 @@ -9439,7 +9495,7 @@ ir.cpp: # 1195| r1195_3(char *) = Convert : r1195_2 # 1195| mu1195_4(char *) = Store[#throw1195:7] : &:r1195_1, r1195_3 # 1195| v1195_5(void) = ThrowValue : &:r1195_1, ~m? -#-----| C++ Exception -> Block 9 +#-----| C++ Exception -> Block 10 # 1197| Block 4 # 1197| r1197_1(glval) = VariableAddress[x] : @@ -9447,7 +9503,7 @@ ir.cpp: # 1197| r1197_3(int) = Constant[2] : # 1197| r1197_4(bool) = CompareLT : r1197_2, r1197_3 # 1197| v1197_5(void) = ConditionalBranch : r1197_4 -#-----| False -> Block 8 +#-----| False -> Block 9 #-----| True -> Block 5 # 1198| Block 5 @@ -9465,7 +9521,7 @@ ir.cpp: # 1198| r1198_8(int) = Load[#temp1198:11] : &:r1198_7, ~m? # 1198| r1198_9(glval) = VariableAddress[x] : # 1198| mu1198_10(int) = Store[x] : &:r1198_9, r1198_8 -#-----| Goto -> Block 8 +#-----| Goto -> Block 9 # 1198| Block 7 # 1198| r1198_11(glval) = VariableAddress[#throw1198:19] : @@ -9477,21 +9533,25 @@ ir.cpp: # 1198| mu1198_17(unknown) = ^CallSideEffect : ~m? # 1198| v1198_18(void) = ^BufferReadSideEffect[0] : &:r1198_15, ~m? # 1198| mu1198_19(String) = ^IndirectMayWriteSideEffect[-1] : &:r1198_11 -# 1198| v1198_20(void) = ThrowValue : &:r1198_11, ~m? -#-----| C++ Exception -> Block 9 +#-----| C++ Exception -> Block 10 +#-----| Goto -> Block 8 -# 1200| Block 8 +# 1198| Block 8 +# 1198| v1198_20(void) = ThrowValue : &:r1198_11, ~m? +#-----| C++ Exception -> Block 10 + +# 1200| Block 9 # 1200| r1200_1(int) = Constant[7] : # 1200| r1200_2(glval) = VariableAddress[x] : # 1200| mu1200_3(int) = Store[x] : &:r1200_2, r1200_1 -#-----| Goto -> Block 13 - -# 1202| Block 9 -# 1202| v1202_1(void) = CatchByType[const char *] : -#-----| C++ Exception -> Block 11 -#-----| Goto -> Block 10 +#-----| Goto -> Block 14 # 1202| Block 10 +# 1202| v1202_1(void) = CatchByType[const char *] : +#-----| C++ Exception -> Block 12 +#-----| Goto -> Block 11 + +# 1202| Block 11 # 1202| r1202_2(glval) = VariableAddress[s] : # 1202| mu1202_3(char *) = InitializeParameter[s] : &:r1202_2 # 1202| r1202_4(char *) = Load[s] : &:r1202_2, ~m? @@ -9508,20 +9568,20 @@ ir.cpp: # 1203| v1203_10(void) = ThrowValue : &:r1203_1, ~m? #-----| C++ Exception -> Block 2 -# 1205| Block 11 +# 1205| Block 12 # 1205| v1205_1(void) = CatchByType[const String &] : #-----| C++ Exception -> Block 2 -#-----| Goto -> Block 12 +#-----| Goto -> Block 13 -# 1205| Block 12 +# 1205| Block 13 # 1205| r1205_2(glval) = VariableAddress[e] : # 1205| mu1205_3(String &) = InitializeParameter[e] : &:r1205_2 # 1205| r1205_4(String &) = Load[e] : &:r1205_2, ~m? # 1205| mu1205_5(unknown) = InitializeIndirection[e] : &:r1205_4 # 1205| v1205_6(void) = NoOp : -#-----| Goto -> Block 13 +#-----| Goto -> Block 14 -# 1207| Block 13 +# 1207| Block 14 # 1207| v1207_1(void) = NoOp : # 1191| v1191_9(void) = ReturnVoid : #-----| Goto -> Block 1 @@ -15699,11 +15759,8 @@ ir.cpp: # 2276| v2276_4(void) = Call[String] : func:r2276_3, this:r2276_1 # 2276| mu2276_5(unknown) = ^CallSideEffect : ~m? # 2276| mu2276_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2276_1 -# 2277| r2277_1(glval) = VariableAddress[b] : -# 2277| r2277_2(bool) = Load[b] : &:r2277_1, ~m? -# 2277| v2277_3(void) = ConditionalBranch : r2277_2 -#-----| False -> Block 4 -#-----| True -> Block 3 +#-----| C++ Exception -> Block 7 +#-----| Goto -> Block 3 # 2274| Block 1 # 2274| v2274_6(void) = AliasedUse : ~m? @@ -15713,7 +15770,14 @@ ir.cpp: # 2274| v2274_8(void) = Unwind : #-----| Goto -> Block 1 -# 2278| Block 3 +# 2277| Block 3 +# 2277| r2277_1(glval) = VariableAddress[b] : +# 2277| r2277_2(bool) = Load[b] : &:r2277_1, ~m? +# 2277| v2277_3(void) = ConditionalBranch : r2277_2 +#-----| False -> Block 5 +#-----| True -> Block 4 + +# 2278| Block 4 # 2278| r2278_1(glval) = VariableAddress[#throw2278:7] : # 2278| r2278_2(glval) = StringConstant["string literal"] : # 2278| r2278_3(char *) = Convert : r2278_2 @@ -15725,15 +15789,19 @@ ir.cpp: # 2281| mu2281_4(unknown) = ^CallSideEffect : ~m? # 2281| v2281_5(void) = ^IndirectReadSideEffect[-1] : &:r2281_1, ~m? # 2281| mu2281_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2281_1 -#-----| C++ Exception -> Block 5 +#-----| C++ Exception -> Block 7 -# 2280| Block 4 -# 2280| r2280_1(glval) = VariableAddress[s2] : -# 2280| mu2280_2(String) = Uninitialized[s2] : &:r2280_1 -# 2280| r2280_3(glval) = FunctionAddress[String] : -# 2280| v2280_4(void) = Call[String] : func:r2280_3, this:r2280_1 -# 2280| mu2280_5(unknown) = ^CallSideEffect : ~m? -# 2280| mu2280_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2280_1 +# 2280| Block 5 +# 2280| r2280_1(glval) = VariableAddress[s2] : +# 2280| mu2280_2(String) = Uninitialized[s2] : &:r2280_1 +# 2280| r2280_3(glval) = FunctionAddress[String] : +# 2280| v2280_4(void) = Call[String] : func:r2280_3, this:r2280_1 +# 2280| mu2280_5(unknown) = ^CallSideEffect : ~m? +# 2280| mu2280_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2280_1 +#-----| C++ Exception -> Block 7 +#-----| Goto -> Block 6 + +# 2281| Block 6 # 2281| r2281_7(glval) = VariableAddress[s2] : # 2281| r2281_8(glval) = FunctionAddress[~String] : # 2281| v2281_9(void) = Call[~String] : func:r2281_8, this:r2281_7 @@ -15746,14 +15814,14 @@ ir.cpp: # 2281| mu2281_16(unknown) = ^CallSideEffect : ~m? # 2281| v2281_17(void) = ^IndirectReadSideEffect[-1] : &:r2281_13, ~m? # 2281| mu2281_18(String) = ^IndirectMayWriteSideEffect[-1] : &:r2281_13 -#-----| Goto -> Block 10 +#-----| Goto -> Block 12 -# 2282| Block 5 +# 2282| Block 7 # 2282| v2282_1(void) = CatchByType[const char *] : -#-----| C++ Exception -> Block 7 -#-----| Goto -> Block 6 +#-----| C++ Exception -> Block 9 +#-----| Goto -> Block 8 -# 2282| Block 6 +# 2282| Block 8 # 2282| r2282_2(glval) = VariableAddress[s] : # 2282| mu2282_3(char *) = InitializeParameter[s] : &:r2282_2 # 2282| r2282_4(char *) = Load[s] : &:r2282_2, ~m? @@ -15770,25 +15838,25 @@ ir.cpp: # 2283| v2283_10(void) = ThrowValue : &:r2283_1, ~m? #-----| C++ Exception -> Block 2 -# 2285| Block 7 +# 2285| Block 9 # 2285| v2285_1(void) = CatchByType[const String &] : -#-----| C++ Exception -> Block 9 -#-----| Goto -> Block 8 +#-----| C++ Exception -> Block 11 +#-----| Goto -> Block 10 -# 2285| Block 8 +# 2285| Block 10 # 2285| r2285_2(glval) = VariableAddress[e] : # 2285| mu2285_3(String &) = InitializeParameter[e] : &:r2285_2 # 2285| r2285_4(String &) = Load[e] : &:r2285_2, ~m? # 2285| mu2285_5(unknown) = InitializeIndirection[e] : &:r2285_4 # 2285| v2285_6(void) = NoOp : -#-----| Goto -> Block 10 +#-----| Goto -> Block 12 -# 2287| Block 9 +# 2287| Block 11 # 2287| v2287_1(void) = CatchAny : # 2288| v2288_1(void) = ReThrow : #-----| C++ Exception -> Block 2 -# 2290| Block 10 +# 2290| Block 12 # 2290| v2290_1(void) = NoOp : # 2274| v2274_9(void) = ReturnVoid : #-----| Goto -> Block 1 From 2b6a8321fdd5649c286fd5047cb872fd16406d03 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Mon, 16 Jun 2025 12:53:48 -0400 Subject: [PATCH 105/150] Crypto: Update JCA model to account for Model.qll changes. --- java/ql/lib/experimental/quantum/JCA.qll | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/java/ql/lib/experimental/quantum/JCA.qll b/java/ql/lib/experimental/quantum/JCA.qll index f785c3c9628..16afa26347f 100644 --- a/java/ql/lib/experimental/quantum/JCA.qll +++ b/java/ql/lib/experimental/quantum/JCA.qll @@ -1243,7 +1243,7 @@ module JCAModel { exists(hash_name_to_type_known(this.getRawHashAlgorithmName(), result)) } - override string getRawMACAlgorithmName() { + override string getRawMacAlgorithmName() { result = super.getRawKDFAlgorithmName().splitAt("PBKDF2With", 1) } @@ -1251,7 +1251,7 @@ module JCAModel { result = super.getRawKDFAlgorithmName().splitAt("WithHmac", 1) } - override Crypto::TMACType getMACType() { result instanceof Crypto::THMAC } + override Crypto::TMACType getMacType() { result instanceof Crypto::THMAC } override Crypto::AlgorithmValueConsumer getHMACAlgorithmValueConsumer() { result = this } @@ -1487,9 +1487,9 @@ module JCAModel { MACGetInstanceAlgorithmValueConsumer getConsumer() { result = consumer } - override string getRawMACAlgorithmName() { result = super.getValue() } + override string getRawMacAlgorithmName() { result = super.getValue() } - override Crypto::TMACType getMACType() { + override Crypto::TMACType getMacType() { if mac_name_to_mac_type_known(_, super.getValue()) then mac_name_to_mac_type_known(result, super.getValue()) else result instanceof Crypto::TOtherMACType From fc0c8a8f5a975ffb470943372471090bc1d1e2b5 Mon Sep 17 00:00:00 2001 From: Napalys Klicius Date: Tue, 17 Jun 2025 08:20:35 +0200 Subject: [PATCH 106/150] JS: update change note --- javascript/ql/lib/change-notes/2025-06-16-serialize-js.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javascript/ql/lib/change-notes/2025-06-16-serialize-js.md b/javascript/ql/lib/change-notes/2025-06-16-serialize-js.md index e9afcfaf42f..a89e0e19b6f 100644 --- a/javascript/ql/lib/change-notes/2025-06-16-serialize-js.md +++ b/javascript/ql/lib/change-notes/2025-06-16-serialize-js.md @@ -1,4 +1,4 @@ --- category: minorAnalysis --- -* Improved XSS detection for `serialize-javascript` calls with tainted object properties. +* Improved taint tracking through calls to `serialize-javascript`. From a188adc09b64ad545af5ebbc58e4fc00132afcd1 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 16 Jun 2025 14:32:53 +0200 Subject: [PATCH 107/150] C#: Handle non-unique type arguments when computing generics strings --- csharp/ql/lib/semmle/code/csharp/Generics.qll | 5 ++++- csharp/ql/lib/semmle/code/csharp/commons/QualifiedName.qll | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/Generics.qll b/csharp/ql/lib/semmle/code/csharp/Generics.qll index b5ef16c575e..1a4b5612454 100644 --- a/csharp/ql/lib/semmle/code/csharp/Generics.qll +++ b/csharp/ql/lib/semmle/code/csharp/Generics.qll @@ -110,9 +110,12 @@ private string getTypeArgumentsToString(ConstructedGeneric cg) { strictconcat(Type t, int i | t = cg.getTypeArgument(i) | t.toStringWithTypes(), ", " order by i) } +language[monotonicAggregates] pragma[nomagic] private string getTypeArgumentName(ConstructedGeneric cg, int i) { - result = cg.getTypeArgument(i).getName() + // Normally, `cg.getTypeArgument(i)` will be unique, and in those cases the line below + // is simply the same as `result = cg.getTypeArgument(i).getName()`. + result = strictconcat(Type t | t = cg.getTypeArgument(i) | t.getName(), "/") } /** Gets the concatenation of the `getName()` of type arguments. */ diff --git a/csharp/ql/lib/semmle/code/csharp/commons/QualifiedName.qll b/csharp/ql/lib/semmle/code/csharp/commons/QualifiedName.qll index 417dc137027..2af02f3e85f 100644 --- a/csharp/ql/lib/semmle/code/csharp/commons/QualifiedName.qll +++ b/csharp/ql/lib/semmle/code/csharp/commons/QualifiedName.qll @@ -48,9 +48,12 @@ module QualifiedName { ) } + language[monotonicAggregates] pragma[nomagic] private string getTypeArgumentsQualifiedName(ConstructedGeneric cg, int i) { - result = getFullName(cg.getTypeArgument(i)) + // Normally, `cg.getTypeArgument(i)` will be unique, and in those cases the line below + // is simply the same as `result = getFullName(cg.getTypeArgument(i))`. + result = strictconcat(Type t | t = cg.getTypeArgument(i) | getFullName(t), "/") } /** Gets the concatenation of the `getFullName` of type arguments. */ From 96b7250b61233b35ce3f636c79c59a5c14ba9313 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Mon, 16 Jun 2025 13:01:18 +0200 Subject: [PATCH 108/150] C#: Mass enable quality queries and update tags. --- csharp/ql/src/API Abuse/CallToGCCollect.ql | 6 +++--- csharp/ql/src/API Abuse/CallToObsoleteMethod.ql | 3 ++- csharp/ql/src/API Abuse/ClassImplementsICloneable.ql | 2 +- csharp/ql/src/API Abuse/FormatInvalid.ql | 6 +++--- csharp/ql/src/API Abuse/NoDisposeCallOnLocalIDisposable.ql | 7 ++++--- csharp/ql/src/API Abuse/NullArgumentToEquals.ql | 3 ++- csharp/ql/src/ASP/BlockCodeResponseWrite.ql | 4 +++- .../Refactoring Opportunities/InappropriateIntimacy.ql | 4 +++- csharp/ql/src/Bad Practices/CallsUnmanagedCode.ql | 5 +++-- .../ql/src/Bad Practices/CatchOfNullReferenceException.ql | 4 +++- .../ql/src/Bad Practices/Control-Flow/ConstantCondition.ql | 4 ++-- .../Declarations/LocalScopeVariableShadowsMember.ql | 3 ++- .../src/Bad Practices/Declarations/TooManyRefParameters.ql | 4 +++- csharp/ql/src/Bad Practices/EmptyCatchBlock.ql | 5 +++-- .../Implementation Hiding/ExposeRepresentation.ql | 4 +++- .../Naming Conventions/FieldMasksSuperField.ql | 3 ++- .../Bad Practices/Naming Conventions/SameNameAsSuper.ql | 3 ++- csharp/ql/src/Bad Practices/PathCombine.ql | 4 +++- csharp/ql/src/Bad Practices/UnmanagedCodeCheck.ql | 5 +++-- csharp/ql/src/CSI/CompareIdenticalValues.ql | 4 +++- csharp/ql/src/CSI/NullAlways.ql | 4 ++-- csharp/ql/src/CSI/NullMaybe.ql | 4 ++-- csharp/ql/src/Complexity/BlockWithTooManyStatements.ql | 5 +++-- csharp/ql/src/Complexity/ComplexCondition.ql | 4 +++- csharp/ql/src/Concurrency/FutileSyncOnField.ql | 5 +++-- csharp/ql/src/Concurrency/LockOrder.ql | 5 +++-- csharp/ql/src/Concurrency/LockThis.ql | 5 +++-- csharp/ql/src/Concurrency/LockedWait.ql | 5 +++-- csharp/ql/src/Dead Code/DeadStoreOfLocal.ql | 5 +++-- csharp/ql/src/Documentation/XmldocMissingSummary.ql | 4 +++- csharp/ql/src/Language Abuse/CastThisToTypeParameter.ql | 5 +++-- csharp/ql/src/Language Abuse/CatchOfGenericException.ql | 5 +++-- csharp/ql/src/Language Abuse/ChainedIs.ql | 6 ++++-- csharp/ql/src/Language Abuse/DubiousDowncastOfThis.ql | 6 ++++-- csharp/ql/src/Language Abuse/DubiousTypeTestOfThis.ql | 6 ++++-- csharp/ql/src/Language Abuse/MissedReadonlyOpportunity.ql | 5 +++-- csharp/ql/src/Language Abuse/MissedTernaryOpportunity.ql | 4 +++- csharp/ql/src/Language Abuse/MissedUsingOpportunity.ql | 4 +++- csharp/ql/src/Language Abuse/NestedIf.ql | 4 +++- csharp/ql/src/Language Abuse/RethrowException.ql | 5 +++-- csharp/ql/src/Language Abuse/SimplifyBoolExpr.ql | 3 ++- csharp/ql/src/Language Abuse/UnusedPropertyValue.ql | 5 +++-- .../Likely Bugs/Collections/ContainerLengthCmpOffByOne.ql | 7 +++---- .../ql/src/Likely Bugs/Collections/ContainerSizeCmpZero.ql | 5 ++--- csharp/ql/src/Likely Bugs/Collections/ReadOnlyContainer.ql | 6 +++--- .../ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql | 3 ++- csharp/ql/src/Likely Bugs/ConstantComparison.ql | 4 +++- csharp/ql/src/Likely Bugs/DangerousNonShortCircuitLogic.ql | 5 ++--- csharp/ql/src/Likely Bugs/EqualityCheckOnFloats.ql | 4 ++-- csharp/ql/src/Likely Bugs/EqualsArray.ql | 3 ++- csharp/ql/src/Likely Bugs/HashedButNoHash.ql | 6 +++--- csharp/ql/src/Likely Bugs/ImpossibleArrayCast.ql | 4 ++-- csharp/ql/src/Likely Bugs/IncomparableEquals.ql | 3 ++- csharp/ql/src/Likely Bugs/NestedLoopsSameVariable.ql | 4 ++-- csharp/ql/src/Likely Bugs/PossibleLossOfPrecision.ql | 3 ++- csharp/ql/src/Likely Bugs/RecursiveEquals.ql | 5 +++-- csharp/ql/src/Likely Bugs/ReferenceEqualsOnValueTypes.ql | 4 ++-- csharp/ql/src/Likely Bugs/SelfAssignment.ql | 5 ++--- csharp/ql/src/Likely Bugs/Statements/EmptyBlock.ql | 5 +++-- csharp/ql/src/Likely Bugs/Statements/EmptyLockStatement.ql | 5 +++-- csharp/ql/src/Likely Bugs/StaticFieldWrittenByInstance.ql | 2 +- csharp/ql/src/Likely Bugs/StringBuilderCharInit.ql | 4 +++- csharp/ql/src/Likely Bugs/UncheckedCastInEquals.ql | 6 +++--- csharp/ql/src/Linq/MissedAllOpportunity.ql | 4 +++- csharp/ql/src/Linq/MissedCastOpportunity.ql | 4 +++- csharp/ql/src/Linq/MissedOfTypeOpportunity.ql | 4 +++- csharp/ql/src/Linq/MissedSelectOpportunity.ql | 4 +++- csharp/ql/src/Linq/MissedWhereOpportunity.ql | 4 +++- csharp/ql/src/Linq/RedundantSelect.ql | 4 +++- csharp/ql/src/Performance/StringBuilderInLoop.ql | 4 +++- csharp/ql/src/Performance/StringConcatenationInLoop.ql | 6 +++--- csharp/ql/src/Performance/UseTryGetValue.ql | 6 +++--- csharp/ql/src/Useless code/DefaultToString.ql | 6 +++--- csharp/ql/src/Useless code/FutileConditional.ql | 4 +++- csharp/ql/src/Useless code/IntGetHashCode.ql | 5 +++-- csharp/ql/src/Useless code/RedundantToStringCall.ql | 3 ++- csharp/ql/src/Useless code/UnusedLabel.ql | 3 ++- 77 files changed, 209 insertions(+), 132 deletions(-) diff --git a/csharp/ql/src/API Abuse/CallToGCCollect.ql b/csharp/ql/src/API Abuse/CallToGCCollect.ql index 1757336d32a..b6b892e085e 100644 --- a/csharp/ql/src/API Abuse/CallToGCCollect.ql +++ b/csharp/ql/src/API Abuse/CallToGCCollect.ql @@ -5,9 +5,9 @@ * @problem.severity warning * @precision very-high * @id cs/call-to-gc - * @tags efficiency - * maintainability - * quality + * @tags quality + * reliability + * performance */ import csharp diff --git a/csharp/ql/src/API Abuse/CallToObsoleteMethod.ql b/csharp/ql/src/API Abuse/CallToObsoleteMethod.ql index 8ec7119107e..4b70b779567 100644 --- a/csharp/ql/src/API Abuse/CallToObsoleteMethod.ql +++ b/csharp/ql/src/API Abuse/CallToObsoleteMethod.ql @@ -6,8 +6,9 @@ * @problem.severity warning * @precision very-high * @id cs/call-to-obsolete-method - * @tags changeability + * @tags quality * maintainability + * changeability * external/cwe/cwe-477 */ diff --git a/csharp/ql/src/API Abuse/ClassImplementsICloneable.ql b/csharp/ql/src/API Abuse/ClassImplementsICloneable.ql index 71f19b639dc..43caeecbcd2 100644 --- a/csharp/ql/src/API Abuse/ClassImplementsICloneable.ql +++ b/csharp/ql/src/API Abuse/ClassImplementsICloneable.ql @@ -6,7 +6,7 @@ * @problem.severity recommendation * @precision very-high * @id cs/class-implements-icloneable - * @tags reliability + * @tags quality * maintainability */ diff --git a/csharp/ql/src/API Abuse/FormatInvalid.ql b/csharp/ql/src/API Abuse/FormatInvalid.ql index 2bcd15612ee..d213cce805f 100644 --- a/csharp/ql/src/API Abuse/FormatInvalid.ql +++ b/csharp/ql/src/API Abuse/FormatInvalid.ql @@ -6,9 +6,9 @@ * @problem.severity error * @precision high * @id cs/invalid-string-formatting - * @tags reliability - * maintainability - * quality + * @tags quality + * reliability + * correctness */ import csharp diff --git a/csharp/ql/src/API Abuse/NoDisposeCallOnLocalIDisposable.ql b/csharp/ql/src/API Abuse/NoDisposeCallOnLocalIDisposable.ql index f02b0d49b54..3fc8e07f6af 100644 --- a/csharp/ql/src/API Abuse/NoDisposeCallOnLocalIDisposable.ql +++ b/csharp/ql/src/API Abuse/NoDisposeCallOnLocalIDisposable.ql @@ -6,9 +6,10 @@ * @problem.severity warning * @precision high * @id cs/local-not-disposed - * @tags efficiency - * maintainability - * quality + * @tags quality + * reliability + * correctness + * efficiency * external/cwe/cwe-404 * external/cwe/cwe-459 * external/cwe/cwe-460 diff --git a/csharp/ql/src/API Abuse/NullArgumentToEquals.ql b/csharp/ql/src/API Abuse/NullArgumentToEquals.ql index ec644f3f56c..14347965eb7 100644 --- a/csharp/ql/src/API Abuse/NullArgumentToEquals.ql +++ b/csharp/ql/src/API Abuse/NullArgumentToEquals.ql @@ -6,7 +6,8 @@ * @problem.severity warning * @precision high * @id cs/null-argument-to-equals - * @tags reliability + * @tags quality + * reliability * correctness */ diff --git a/csharp/ql/src/ASP/BlockCodeResponseWrite.ql b/csharp/ql/src/ASP/BlockCodeResponseWrite.ql index 369a4a5bb4e..93f43342f0e 100644 --- a/csharp/ql/src/ASP/BlockCodeResponseWrite.ql +++ b/csharp/ql/src/ASP/BlockCodeResponseWrite.ql @@ -5,7 +5,9 @@ * @problem.severity recommendation * @precision high * @id cs/asp/response-write - * @tags maintainability + * @tags quality + * maintainability + * readability * frameworks/asp.net */ diff --git a/csharp/ql/src/Architecture/Refactoring Opportunities/InappropriateIntimacy.ql b/csharp/ql/src/Architecture/Refactoring Opportunities/InappropriateIntimacy.ql index 3e9ae20c97c..c8014edb3af 100644 --- a/csharp/ql/src/Architecture/Refactoring Opportunities/InappropriateIntimacy.ql +++ b/csharp/ql/src/Architecture/Refactoring Opportunities/InappropriateIntimacy.ql @@ -6,7 +6,9 @@ * @problem.severity recommendation * @precision high * @id cs/coupled-types - * @tags maintainability + * @tags quality + * maintainability + * complexity * modularity */ diff --git a/csharp/ql/src/Bad Practices/CallsUnmanagedCode.ql b/csharp/ql/src/Bad Practices/CallsUnmanagedCode.ql index 035e22c7d3e..4ff3dfffcf0 100644 --- a/csharp/ql/src/Bad Practices/CallsUnmanagedCode.ql +++ b/csharp/ql/src/Bad Practices/CallsUnmanagedCode.ql @@ -5,8 +5,9 @@ * @problem.severity recommendation * @precision high * @id cs/call-to-unmanaged-code - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness */ import csharp diff --git a/csharp/ql/src/Bad Practices/CatchOfNullReferenceException.ql b/csharp/ql/src/Bad Practices/CatchOfNullReferenceException.ql index a78d6b99c1c..39dba529b17 100644 --- a/csharp/ql/src/Bad Practices/CatchOfNullReferenceException.ql +++ b/csharp/ql/src/Bad Practices/CatchOfNullReferenceException.ql @@ -5,8 +5,10 @@ * @problem.severity warning * @precision very-high * @id cs/catch-nullreferenceexception - * @tags reliability + * @tags quality + * reliability * correctness + * error-handling * external/cwe/cwe-395 */ diff --git a/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql b/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql index 7bfdea1e906..5ec702f77e0 100644 --- a/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql +++ b/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql @@ -7,9 +7,9 @@ * @problem.severity warning * @precision very-high * @id cs/constant-condition - * @tags maintainability + * @tags quality + * maintainability * readability - * quality * external/cwe/cwe-835 */ diff --git a/csharp/ql/src/Bad Practices/Declarations/LocalScopeVariableShadowsMember.ql b/csharp/ql/src/Bad Practices/Declarations/LocalScopeVariableShadowsMember.ql index 766fb6d890a..cd1401a2c78 100644 --- a/csharp/ql/src/Bad Practices/Declarations/LocalScopeVariableShadowsMember.ql +++ b/csharp/ql/src/Bad Practices/Declarations/LocalScopeVariableShadowsMember.ql @@ -6,7 +6,8 @@ * @problem.severity recommendation * @precision high * @id cs/local-shadows-member - * @tags maintainability + * @tags quality + * maintainability * readability */ diff --git a/csharp/ql/src/Bad Practices/Declarations/TooManyRefParameters.ql b/csharp/ql/src/Bad Practices/Declarations/TooManyRefParameters.ql index 048aad57978..937be695d3f 100644 --- a/csharp/ql/src/Bad Practices/Declarations/TooManyRefParameters.ql +++ b/csharp/ql/src/Bad Practices/Declarations/TooManyRefParameters.ql @@ -6,8 +6,10 @@ * @problem.severity recommendation * @precision very-high * @id cs/too-many-ref-parameters - * @tags testability + * @tags quality + * maintainability * readability + * testability */ import csharp diff --git a/csharp/ql/src/Bad Practices/EmptyCatchBlock.ql b/csharp/ql/src/Bad Practices/EmptyCatchBlock.ql index 144d53dc61f..7f2996566e3 100644 --- a/csharp/ql/src/Bad Practices/EmptyCatchBlock.ql +++ b/csharp/ql/src/Bad Practices/EmptyCatchBlock.ql @@ -5,8 +5,9 @@ * @problem.severity recommendation * @precision very-high * @id cs/empty-catch-block - * @tags reliability - * readability + * @tags quality + * reliability + * error-handling * exceptions * external/cwe/cwe-390 * external/cwe/cwe-391 diff --git a/csharp/ql/src/Bad Practices/Implementation Hiding/ExposeRepresentation.ql b/csharp/ql/src/Bad Practices/Implementation Hiding/ExposeRepresentation.ql index 3aec796daf7..8c86e2a4187 100644 --- a/csharp/ql/src/Bad Practices/Implementation Hiding/ExposeRepresentation.ql +++ b/csharp/ql/src/Bad Practices/Implementation Hiding/ExposeRepresentation.ql @@ -6,7 +6,9 @@ * @problem.severity recommendation * @precision high * @id cs/expose-implementation - * @tags reliability + * @tags quality + * reliability + * correctness * external/cwe/cwe-485 */ diff --git a/csharp/ql/src/Bad Practices/Naming Conventions/FieldMasksSuperField.ql b/csharp/ql/src/Bad Practices/Naming Conventions/FieldMasksSuperField.ql index 3515e710d82..2fe61148ed2 100644 --- a/csharp/ql/src/Bad Practices/Naming Conventions/FieldMasksSuperField.ql +++ b/csharp/ql/src/Bad Practices/Naming Conventions/FieldMasksSuperField.ql @@ -7,7 +7,8 @@ * @problem.severity warning * @precision high * @id cs/field-masks-base-field - * @tags reliability + * @tags quality + * maintainability * readability * naming */ diff --git a/csharp/ql/src/Bad Practices/Naming Conventions/SameNameAsSuper.ql b/csharp/ql/src/Bad Practices/Naming Conventions/SameNameAsSuper.ql index 83c795a3985..d292fd93422 100644 --- a/csharp/ql/src/Bad Practices/Naming Conventions/SameNameAsSuper.ql +++ b/csharp/ql/src/Bad Practices/Naming Conventions/SameNameAsSuper.ql @@ -5,7 +5,8 @@ * @problem.severity recommendation * @precision high * @id cs/class-name-matches-base-class - * @tags maintainability + * @tags quality + * maintainability * readability * naming */ diff --git a/csharp/ql/src/Bad Practices/PathCombine.ql b/csharp/ql/src/Bad Practices/PathCombine.ql index aa841486bdf..24d358e83aa 100644 --- a/csharp/ql/src/Bad Practices/PathCombine.ql +++ b/csharp/ql/src/Bad Practices/PathCombine.ql @@ -5,7 +5,9 @@ * @problem.severity recommendation * @precision very-high * @id cs/path-combine - * @tags reliability + * @tags quality + * reliability + * correctness */ import csharp diff --git a/csharp/ql/src/Bad Practices/UnmanagedCodeCheck.ql b/csharp/ql/src/Bad Practices/UnmanagedCodeCheck.ql index 6a59fa1d1fa..4103e29b014 100644 --- a/csharp/ql/src/Bad Practices/UnmanagedCodeCheck.ql +++ b/csharp/ql/src/Bad Practices/UnmanagedCodeCheck.ql @@ -5,8 +5,9 @@ * @problem.severity recommendation * @precision high * @id cs/unmanaged-code - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness */ import csharp diff --git a/csharp/ql/src/CSI/CompareIdenticalValues.ql b/csharp/ql/src/CSI/CompareIdenticalValues.ql index 55f48d5f9a9..503067a8a3e 100644 --- a/csharp/ql/src/CSI/CompareIdenticalValues.ql +++ b/csharp/ql/src/CSI/CompareIdenticalValues.ql @@ -7,7 +7,9 @@ * @problem.severity warning * @precision high * @id cs/comparison-of-identical-expressions - * @tags reliability + * @tags quality + * reliability + * correctness */ import csharp diff --git a/csharp/ql/src/CSI/NullAlways.ql b/csharp/ql/src/CSI/NullAlways.ql index 1696f857fde..f8b7791ab89 100644 --- a/csharp/ql/src/CSI/NullAlways.ql +++ b/csharp/ql/src/CSI/NullAlways.ql @@ -5,11 +5,11 @@ * @problem.severity error * @precision very-high * @id cs/dereferenced-value-is-always-null - * @tags reliability + * @tags quality + * reliability * correctness * exceptions * external/cwe/cwe-476 - * quality */ import csharp diff --git a/csharp/ql/src/CSI/NullMaybe.ql b/csharp/ql/src/CSI/NullMaybe.ql index c69df839958..67873ebb291 100644 --- a/csharp/ql/src/CSI/NullMaybe.ql +++ b/csharp/ql/src/CSI/NullMaybe.ql @@ -6,11 +6,11 @@ * @problem.severity warning * @precision high * @id cs/dereferenced-value-may-be-null - * @tags reliability + * @tags quality + * reliability * correctness * exceptions * external/cwe/cwe-476 - * quality */ import csharp diff --git a/csharp/ql/src/Complexity/BlockWithTooManyStatements.ql b/csharp/ql/src/Complexity/BlockWithTooManyStatements.ql index e725b6e1a94..32c0c35fcb6 100644 --- a/csharp/ql/src/Complexity/BlockWithTooManyStatements.ql +++ b/csharp/ql/src/Complexity/BlockWithTooManyStatements.ql @@ -7,9 +7,10 @@ * @problem.severity recommendation * @precision high * @id cs/complex-block - * @tags maintainability - * testability + * @tags quality + * maintainability * complexity + * testability */ import csharp diff --git a/csharp/ql/src/Complexity/ComplexCondition.ql b/csharp/ql/src/Complexity/ComplexCondition.ql index 2813db1cda5..25721b886a2 100644 --- a/csharp/ql/src/Complexity/ComplexCondition.ql +++ b/csharp/ql/src/Complexity/ComplexCondition.ql @@ -5,8 +5,10 @@ * @problem.severity recommendation * @precision high * @id cs/complex-condition - * @tags testability + * @tags quality + * maintainability * readability + * testability */ import csharp diff --git a/csharp/ql/src/Concurrency/FutileSyncOnField.ql b/csharp/ql/src/Concurrency/FutileSyncOnField.ql index 01beb9c9040..c2b59cc5e22 100644 --- a/csharp/ql/src/Concurrency/FutileSyncOnField.ql +++ b/csharp/ql/src/Concurrency/FutileSyncOnField.ql @@ -6,9 +6,10 @@ * @problem.severity error * @precision high * @id cs/unsafe-sync-on-field - * @tags reliability - * correctness + * @tags quality + * reliability * concurrency + * correctness * external/cwe/cwe-662 * external/cwe/cwe-366 */ diff --git a/csharp/ql/src/Concurrency/LockOrder.ql b/csharp/ql/src/Concurrency/LockOrder.ql index 923f4bba2ce..2803a15afd8 100644 --- a/csharp/ql/src/Concurrency/LockOrder.ql +++ b/csharp/ql/src/Concurrency/LockOrder.ql @@ -5,9 +5,10 @@ * @problem.severity error * @precision high * @id cs/inconsistent-lock-sequence - * @tags reliability - * correctness + * @tags quality + * reliability * concurrency + * correctness * external/cwe/cwe-662 */ diff --git a/csharp/ql/src/Concurrency/LockThis.ql b/csharp/ql/src/Concurrency/LockThis.ql index 59d08337d30..81fd2045d36 100644 --- a/csharp/ql/src/Concurrency/LockThis.ql +++ b/csharp/ql/src/Concurrency/LockThis.ql @@ -6,8 +6,9 @@ * @problem.severity warning * @precision high * @id cs/lock-this - * @tags reliability - * maintainability + * @tags quality + * reliability + * concurrency * modularity * external/cwe/cwe-662 */ diff --git a/csharp/ql/src/Concurrency/LockedWait.ql b/csharp/ql/src/Concurrency/LockedWait.ql index b59736fc72b..dbba723ab09 100644 --- a/csharp/ql/src/Concurrency/LockedWait.ql +++ b/csharp/ql/src/Concurrency/LockedWait.ql @@ -5,9 +5,10 @@ * @problem.severity warning * @precision high * @id cs/locked-wait - * @tags reliability - * correctness + * @tags quality + * reliability * concurrency + * correctness * external/cwe/cwe-662 * external/cwe/cwe-833 */ diff --git a/csharp/ql/src/Dead Code/DeadStoreOfLocal.ql b/csharp/ql/src/Dead Code/DeadStoreOfLocal.ql index 5be820ee74c..0f6e6d11fb2 100644 --- a/csharp/ql/src/Dead Code/DeadStoreOfLocal.ql +++ b/csharp/ql/src/Dead Code/DeadStoreOfLocal.ql @@ -5,8 +5,9 @@ * @kind problem * @problem.severity warning * @id cs/useless-assignment-to-local - * @tags maintainability - * quality + * @tags quality + * maintainability + * useless-code * external/cwe/cwe-563 * @precision very-high */ diff --git a/csharp/ql/src/Documentation/XmldocMissingSummary.ql b/csharp/ql/src/Documentation/XmldocMissingSummary.ql index 312848b6bdf..43b76d38017 100644 --- a/csharp/ql/src/Documentation/XmldocMissingSummary.ql +++ b/csharp/ql/src/Documentation/XmldocMissingSummary.ql @@ -5,7 +5,9 @@ * @problem.severity recommendation * @precision high * @id cs/xmldoc/missing-summary - * @tags maintainability + * @tags quality + * maintainability + * readability */ import Documentation diff --git a/csharp/ql/src/Language Abuse/CastThisToTypeParameter.ql b/csharp/ql/src/Language Abuse/CastThisToTypeParameter.ql index 0842845ed27..d394e1c08a4 100644 --- a/csharp/ql/src/Language Abuse/CastThisToTypeParameter.ql +++ b/csharp/ql/src/Language Abuse/CastThisToTypeParameter.ql @@ -5,8 +5,9 @@ * @problem.severity recommendation * @precision high * @id cs/cast-of-this-to-type-parameter - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness * language-features */ diff --git a/csharp/ql/src/Language Abuse/CatchOfGenericException.ql b/csharp/ql/src/Language Abuse/CatchOfGenericException.ql index c0a4b019641..e31a6337295 100644 --- a/csharp/ql/src/Language Abuse/CatchOfGenericException.ql +++ b/csharp/ql/src/Language Abuse/CatchOfGenericException.ql @@ -6,8 +6,9 @@ * @problem.severity recommendation * @precision high * @id cs/catch-of-all-exceptions - * @tags reliability - * maintainability + * @tags quality + * reliability + * error-handling * external/cwe/cwe-396 */ diff --git a/csharp/ql/src/Language Abuse/ChainedIs.ql b/csharp/ql/src/Language Abuse/ChainedIs.ql index c10e5dc6732..47118d29d37 100644 --- a/csharp/ql/src/Language Abuse/ChainedIs.ql +++ b/csharp/ql/src/Language Abuse/ChainedIs.ql @@ -6,8 +6,10 @@ * @problem.severity recommendation * @precision high * @id cs/chained-type-tests - * @tags changeability - * maintainability + * @tags quality + * reliability + * performance + * changeability * language-features */ diff --git a/csharp/ql/src/Language Abuse/DubiousDowncastOfThis.ql b/csharp/ql/src/Language Abuse/DubiousDowncastOfThis.ql index 4082a2b3ce8..9439956f4c1 100644 --- a/csharp/ql/src/Language Abuse/DubiousDowncastOfThis.ql +++ b/csharp/ql/src/Language Abuse/DubiousDowncastOfThis.ql @@ -5,8 +5,10 @@ * @problem.severity warning * @precision high * @id cs/downcast-of-this - * @tags testability - * maintainability + * @tags quality + * reliability + * correctness + * testability * language-features */ diff --git a/csharp/ql/src/Language Abuse/DubiousTypeTestOfThis.ql b/csharp/ql/src/Language Abuse/DubiousTypeTestOfThis.ql index fe5cd65266a..da61754f46e 100644 --- a/csharp/ql/src/Language Abuse/DubiousTypeTestOfThis.ql +++ b/csharp/ql/src/Language Abuse/DubiousTypeTestOfThis.ql @@ -5,8 +5,10 @@ * @problem.severity warning * @precision high * @id cs/type-test-of-this - * @tags testability - * maintainability + * @tags quality + * reliability + * correctness + * testability * language-features */ diff --git a/csharp/ql/src/Language Abuse/MissedReadonlyOpportunity.ql b/csharp/ql/src/Language Abuse/MissedReadonlyOpportunity.ql index 78cce5126df..20016a17f2e 100644 --- a/csharp/ql/src/Language Abuse/MissedReadonlyOpportunity.ql +++ b/csharp/ql/src/Language Abuse/MissedReadonlyOpportunity.ql @@ -6,9 +6,10 @@ * @problem.severity recommendation * @precision high * @id cs/missed-readonly-modifier - * @tags maintainability + * @tags quality + * maintainability + * readability * language-features - * quality */ import csharp diff --git a/csharp/ql/src/Language Abuse/MissedTernaryOpportunity.ql b/csharp/ql/src/Language Abuse/MissedTernaryOpportunity.ql index b8da7e43cc5..bd7492b8583 100644 --- a/csharp/ql/src/Language Abuse/MissedTernaryOpportunity.ql +++ b/csharp/ql/src/Language Abuse/MissedTernaryOpportunity.ql @@ -5,7 +5,9 @@ * @problem.severity recommendation * @precision high * @id cs/missed-ternary-operator - * @tags maintainability + * @tags quality + * maintainability + * readability * language-features */ diff --git a/csharp/ql/src/Language Abuse/MissedUsingOpportunity.ql b/csharp/ql/src/Language Abuse/MissedUsingOpportunity.ql index 1e3534dee69..f3d5414060b 100644 --- a/csharp/ql/src/Language Abuse/MissedUsingOpportunity.ql +++ b/csharp/ql/src/Language Abuse/MissedUsingOpportunity.ql @@ -5,7 +5,9 @@ * @problem.severity recommendation * @precision high * @id cs/missed-using-statement - * @tags maintainability + * @tags quality + * maintainability + * readability * language-features */ diff --git a/csharp/ql/src/Language Abuse/NestedIf.ql b/csharp/ql/src/Language Abuse/NestedIf.ql index 4532fbbebee..2541d4b7d73 100644 --- a/csharp/ql/src/Language Abuse/NestedIf.ql +++ b/csharp/ql/src/Language Abuse/NestedIf.ql @@ -5,7 +5,9 @@ * @problem.severity recommendation * @precision high * @id cs/nested-if-statements - * @tags maintainability + * @tags quality + * maintainability + * readability * language-features */ diff --git a/csharp/ql/src/Language Abuse/RethrowException.ql b/csharp/ql/src/Language Abuse/RethrowException.ql index bd3e2902907..ff5f40d3bd0 100644 --- a/csharp/ql/src/Language Abuse/RethrowException.ql +++ b/csharp/ql/src/Language Abuse/RethrowException.ql @@ -6,9 +6,10 @@ * @problem.severity warning * @precision very-high * @id cs/rethrown-exception-variable - * @tags maintainability + * @tags quality + * reliability + * error-handling * language-features - * exceptions */ import csharp diff --git a/csharp/ql/src/Language Abuse/SimplifyBoolExpr.ql b/csharp/ql/src/Language Abuse/SimplifyBoolExpr.ql index a8ce9c42065..8fea284ae31 100644 --- a/csharp/ql/src/Language Abuse/SimplifyBoolExpr.ql +++ b/csharp/ql/src/Language Abuse/SimplifyBoolExpr.ql @@ -5,8 +5,9 @@ * @kind problem * @problem.severity recommendation * @precision high - * @tags readability + * @tags quality * maintainability + * readability */ import csharp diff --git a/csharp/ql/src/Language Abuse/UnusedPropertyValue.ql b/csharp/ql/src/Language Abuse/UnusedPropertyValue.ql index d1c2e9566fd..4ae23430597 100644 --- a/csharp/ql/src/Language Abuse/UnusedPropertyValue.ql +++ b/csharp/ql/src/Language Abuse/UnusedPropertyValue.ql @@ -6,8 +6,9 @@ * @problem.severity warning * @precision high * @id cs/unused-property-value - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness * language-features */ diff --git a/csharp/ql/src/Likely Bugs/Collections/ContainerLengthCmpOffByOne.ql b/csharp/ql/src/Likely Bugs/Collections/ContainerLengthCmpOffByOne.ql index 754ed8ad773..230abf77a3f 100644 --- a/csharp/ql/src/Likely Bugs/Collections/ContainerLengthCmpOffByOne.ql +++ b/csharp/ql/src/Likely Bugs/Collections/ContainerLengthCmpOffByOne.ql @@ -6,11 +6,10 @@ * @problem.severity error * @precision high * @id cs/index-out-of-bounds - * @tags reliability + * @tags quality + * reliability * correctness - * logic - * quality - * external/cwe/cwe-193 + * external/cwe/cwe-193 */ import csharp diff --git a/csharp/ql/src/Likely Bugs/Collections/ContainerSizeCmpZero.ql b/csharp/ql/src/Likely Bugs/Collections/ContainerSizeCmpZero.ql index 90f5b981e24..44ead3cfd97 100644 --- a/csharp/ql/src/Likely Bugs/Collections/ContainerSizeCmpZero.ql +++ b/csharp/ql/src/Likely Bugs/Collections/ContainerSizeCmpZero.ql @@ -5,10 +5,9 @@ * @problem.severity warning * @precision very-high * @id cs/test-for-negative-container-size - * @tags reliability + * @tags quality + * reliability * correctness - * logic - * quality */ import csharp diff --git a/csharp/ql/src/Likely Bugs/Collections/ReadOnlyContainer.ql b/csharp/ql/src/Likely Bugs/Collections/ReadOnlyContainer.ql index 15dbf92bc9f..f429a52982b 100644 --- a/csharp/ql/src/Likely Bugs/Collections/ReadOnlyContainer.ql +++ b/csharp/ql/src/Likely Bugs/Collections/ReadOnlyContainer.ql @@ -5,9 +5,9 @@ * @problem.severity error * @precision high * @id cs/empty-collection - * @tags reliability - * maintainability - * useless-code + * @tags quality + * reliability + * correctness * external/cwe/cwe-561 */ diff --git a/csharp/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql b/csharp/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql index 1a36fc733e5..5a24a1f5f51 100644 --- a/csharp/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql +++ b/csharp/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql @@ -5,7 +5,8 @@ * @problem.severity error * @precision high * @id cs/unused-collection - * @tags maintainability + * @tags quality + * maintainability * useless-code * external/cwe/cwe-561 */ diff --git a/csharp/ql/src/Likely Bugs/ConstantComparison.ql b/csharp/ql/src/Likely Bugs/ConstantComparison.ql index 790cb53e80b..98352348214 100644 --- a/csharp/ql/src/Likely Bugs/ConstantComparison.ql +++ b/csharp/ql/src/Likely Bugs/ConstantComparison.ql @@ -5,7 +5,9 @@ * @problem.severity warning * @precision high * @id cs/constant-comparison - * @tags correctness + * @tags quality + * reliability + * correctness */ import csharp diff --git a/csharp/ql/src/Likely Bugs/DangerousNonShortCircuitLogic.ql b/csharp/ql/src/Likely Bugs/DangerousNonShortCircuitLogic.ql index f3defa47a43..d40a28450fc 100644 --- a/csharp/ql/src/Likely Bugs/DangerousNonShortCircuitLogic.ql +++ b/csharp/ql/src/Likely Bugs/DangerousNonShortCircuitLogic.ql @@ -6,10 +6,9 @@ * @problem.severity error * @precision high * @id cs/non-short-circuit - * @tags reliability + * @tags quality + * reliability * correctness - * logic - * quality * external/cwe/cwe-480 * external/cwe/cwe-691 */ diff --git a/csharp/ql/src/Likely Bugs/EqualityCheckOnFloats.ql b/csharp/ql/src/Likely Bugs/EqualityCheckOnFloats.ql index 108e6f45f94..ba7710a8793 100644 --- a/csharp/ql/src/Likely Bugs/EqualityCheckOnFloats.ql +++ b/csharp/ql/src/Likely Bugs/EqualityCheckOnFloats.ql @@ -7,9 +7,9 @@ * @problem.severity warning * @precision high * @id cs/equality-on-floats - * @tags reliability + * @tags quality + * reliability * correctness - * quality */ import csharp diff --git a/csharp/ql/src/Likely Bugs/EqualsArray.ql b/csharp/ql/src/Likely Bugs/EqualsArray.ql index 78d86d61364..36978278e04 100644 --- a/csharp/ql/src/Likely Bugs/EqualsArray.ql +++ b/csharp/ql/src/Likely Bugs/EqualsArray.ql @@ -5,7 +5,8 @@ * @problem.severity recommendation * @precision high * @id cs/equals-on-arrays - * @tags reliability + * @tags quality + * reliability * correctness */ diff --git a/csharp/ql/src/Likely Bugs/HashedButNoHash.ql b/csharp/ql/src/Likely Bugs/HashedButNoHash.ql index ae457dc2b78..575605a5c54 100644 --- a/csharp/ql/src/Likely Bugs/HashedButNoHash.ql +++ b/csharp/ql/src/Likely Bugs/HashedButNoHash.ql @@ -5,9 +5,9 @@ * @problem.severity warning * @precision high * @id cs/gethashcode-is-not-defined - * @tags reliability - * maintainability - * quality + * @tags quality + * reliability + * correctness */ import csharp diff --git a/csharp/ql/src/Likely Bugs/ImpossibleArrayCast.ql b/csharp/ql/src/Likely Bugs/ImpossibleArrayCast.ql index a3a9f66f3f7..60719f7587b 100644 --- a/csharp/ql/src/Likely Bugs/ImpossibleArrayCast.ql +++ b/csharp/ql/src/Likely Bugs/ImpossibleArrayCast.ql @@ -5,9 +5,9 @@ * @problem.severity error * @precision high * @id cs/impossible-array-cast - * @tags reliability + * @tags quality + * reliability * correctness - * logic */ import csharp diff --git a/csharp/ql/src/Likely Bugs/IncomparableEquals.ql b/csharp/ql/src/Likely Bugs/IncomparableEquals.ql index 9c1aac0cef9..f5bb977f740 100644 --- a/csharp/ql/src/Likely Bugs/IncomparableEquals.ql +++ b/csharp/ql/src/Likely Bugs/IncomparableEquals.ql @@ -5,7 +5,8 @@ * @problem.severity error * @precision high * @id cs/equals-on-unrelated-types - * @tags reliability + * @tags quality + * reliability * correctness */ diff --git a/csharp/ql/src/Likely Bugs/NestedLoopsSameVariable.ql b/csharp/ql/src/Likely Bugs/NestedLoopsSameVariable.ql index 848246a0b46..0831eb56199 100644 --- a/csharp/ql/src/Likely Bugs/NestedLoopsSameVariable.ql +++ b/csharp/ql/src/Likely Bugs/NestedLoopsSameVariable.ql @@ -6,9 +6,9 @@ * @problem.severity warning * @precision high * @id cs/nested-loops-with-same-variable - * @tags maintainability + * @tags quality + * reliability * correctness - * logic */ import csharp diff --git a/csharp/ql/src/Likely Bugs/PossibleLossOfPrecision.ql b/csharp/ql/src/Likely Bugs/PossibleLossOfPrecision.ql index 1f97debc4ef..c66bbbeedbd 100644 --- a/csharp/ql/src/Likely Bugs/PossibleLossOfPrecision.ql +++ b/csharp/ql/src/Likely Bugs/PossibleLossOfPrecision.ql @@ -6,7 +6,8 @@ * @problem.severity error * @precision high * @id cs/loss-of-precision - * @tags reliability + * @tags quality + * reliability * correctness * external/cwe/cwe-190 * external/cwe/cwe-192 diff --git a/csharp/ql/src/Likely Bugs/RecursiveEquals.ql b/csharp/ql/src/Likely Bugs/RecursiveEquals.ql index c82c36aa50e..b1ce4a73354 100644 --- a/csharp/ql/src/Likely Bugs/RecursiveEquals.ql +++ b/csharp/ql/src/Likely Bugs/RecursiveEquals.ql @@ -6,8 +6,9 @@ * @problem.severity error * @precision high * @id cs/recursive-equals-call - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness */ import csharp diff --git a/csharp/ql/src/Likely Bugs/ReferenceEqualsOnValueTypes.ql b/csharp/ql/src/Likely Bugs/ReferenceEqualsOnValueTypes.ql index de29f6109ad..a73aaf443d8 100644 --- a/csharp/ql/src/Likely Bugs/ReferenceEqualsOnValueTypes.ql +++ b/csharp/ql/src/Likely Bugs/ReferenceEqualsOnValueTypes.ql @@ -5,9 +5,9 @@ * @problem.severity error * @precision high * @id cs/reference-equality-on-valuetypes - * @tags reliability + * @tags quality + * reliability * correctness - * quality * external/cwe/cwe-595 */ diff --git a/csharp/ql/src/Likely Bugs/SelfAssignment.ql b/csharp/ql/src/Likely Bugs/SelfAssignment.ql index e010d18292c..f01a1378242 100644 --- a/csharp/ql/src/Likely Bugs/SelfAssignment.ql +++ b/csharp/ql/src/Likely Bugs/SelfAssignment.ql @@ -5,10 +5,9 @@ * @problem.severity error * @precision high * @id cs/self-assignment - * @tags reliability + * @tags quality + * reliability * correctness - * logic - * quality */ import csharp diff --git a/csharp/ql/src/Likely Bugs/Statements/EmptyBlock.ql b/csharp/ql/src/Likely Bugs/Statements/EmptyBlock.ql index 5929e7e8f91..92664ce8792 100644 --- a/csharp/ql/src/Likely Bugs/Statements/EmptyBlock.ql +++ b/csharp/ql/src/Likely Bugs/Statements/EmptyBlock.ql @@ -6,8 +6,9 @@ * @problem.severity warning * @precision high * @id cs/empty-block - * @tags reliability - * readability + * @tags quality + * reliability + * correctness */ import csharp diff --git a/csharp/ql/src/Likely Bugs/Statements/EmptyLockStatement.ql b/csharp/ql/src/Likely Bugs/Statements/EmptyLockStatement.ql index 4f2b3751876..ddcc7ef0195 100644 --- a/csharp/ql/src/Likely Bugs/Statements/EmptyLockStatement.ql +++ b/csharp/ql/src/Likely Bugs/Statements/EmptyLockStatement.ql @@ -6,9 +6,10 @@ * @problem.severity warning * @precision high * @id cs/empty-lock-statement - * @tags changeability - * readability + * @tags quality + * reliability * concurrency + * changeability * language-features * external/cwe/cwe-585 */ diff --git a/csharp/ql/src/Likely Bugs/StaticFieldWrittenByInstance.ql b/csharp/ql/src/Likely Bugs/StaticFieldWrittenByInstance.ql index 4acea4a35b3..4dd78a81aab 100644 --- a/csharp/ql/src/Likely Bugs/StaticFieldWrittenByInstance.ql +++ b/csharp/ql/src/Likely Bugs/StaticFieldWrittenByInstance.ql @@ -7,7 +7,7 @@ * @problem.severity recommendation * @precision high * @id cs/static-field-written-by-instance - * @tags reliability + * @tags quality * maintainability * modularity */ diff --git a/csharp/ql/src/Likely Bugs/StringBuilderCharInit.ql b/csharp/ql/src/Likely Bugs/StringBuilderCharInit.ql index f2d0a61efe2..2e96cdb4b36 100644 --- a/csharp/ql/src/Likely Bugs/StringBuilderCharInit.ql +++ b/csharp/ql/src/Likely Bugs/StringBuilderCharInit.ql @@ -6,7 +6,9 @@ * @problem.severity error * @precision high * @id cs/stringbuilder-initialized-with-character - * @tags maintainability + * @tags quality + * reliability + * correctness */ import semmle.code.csharp.frameworks.system.Text diff --git a/csharp/ql/src/Likely Bugs/UncheckedCastInEquals.ql b/csharp/ql/src/Likely Bugs/UncheckedCastInEquals.ql index d1e2dbdf056..5c11a77f30d 100644 --- a/csharp/ql/src/Likely Bugs/UncheckedCastInEquals.ql +++ b/csharp/ql/src/Likely Bugs/UncheckedCastInEquals.ql @@ -5,9 +5,9 @@ * @problem.severity warning * @precision high * @id cs/unchecked-cast-in-equals - * @tags reliability - * maintainability - * quality + * @tags quality + * reliability + * correctness */ import csharp diff --git a/csharp/ql/src/Linq/MissedAllOpportunity.ql b/csharp/ql/src/Linq/MissedAllOpportunity.ql index 54fe40faeec..1c03372d23b 100644 --- a/csharp/ql/src/Linq/MissedAllOpportunity.ql +++ b/csharp/ql/src/Linq/MissedAllOpportunity.ql @@ -6,7 +6,9 @@ * @problem.severity recommendation * @precision high * @id cs/linq/missed-all - * @tags maintainability + * @tags quality + * maintainability + * readability * language-features */ diff --git a/csharp/ql/src/Linq/MissedCastOpportunity.ql b/csharp/ql/src/Linq/MissedCastOpportunity.ql index 8d3de1f31b4..d40009e24c8 100644 --- a/csharp/ql/src/Linq/MissedCastOpportunity.ql +++ b/csharp/ql/src/Linq/MissedCastOpportunity.ql @@ -6,7 +6,9 @@ * @problem.severity recommendation * @precision high * @id cs/linq/missed-cast - * @tags maintainability + * @tags quality + * maintainability + * readability * language-features */ diff --git a/csharp/ql/src/Linq/MissedOfTypeOpportunity.ql b/csharp/ql/src/Linq/MissedOfTypeOpportunity.ql index 3d61acfa523..a4c8dff4b53 100644 --- a/csharp/ql/src/Linq/MissedOfTypeOpportunity.ql +++ b/csharp/ql/src/Linq/MissedOfTypeOpportunity.ql @@ -6,7 +6,9 @@ * @problem.severity recommendation * @precision high * @id cs/linq/missed-oftype - * @tags maintainability + * @tags quality + * maintainability + * readability * language-features */ diff --git a/csharp/ql/src/Linq/MissedSelectOpportunity.ql b/csharp/ql/src/Linq/MissedSelectOpportunity.ql index 9f36c3de82b..8ea2a1c11d7 100644 --- a/csharp/ql/src/Linq/MissedSelectOpportunity.ql +++ b/csharp/ql/src/Linq/MissedSelectOpportunity.ql @@ -6,7 +6,9 @@ * @problem.severity recommendation * @precision high * @id cs/linq/missed-select - * @tags maintainability + * @tags quality + * maintainability + * readability * language-features */ diff --git a/csharp/ql/src/Linq/MissedWhereOpportunity.ql b/csharp/ql/src/Linq/MissedWhereOpportunity.ql index 401248d6176..62b34b93305 100644 --- a/csharp/ql/src/Linq/MissedWhereOpportunity.ql +++ b/csharp/ql/src/Linq/MissedWhereOpportunity.ql @@ -5,7 +5,9 @@ * @problem.severity recommendation * @precision high * @id cs/linq/missed-where - * @tags maintainability + * @tags quality + * maintainability + * readability * language-features */ diff --git a/csharp/ql/src/Linq/RedundantSelect.ql b/csharp/ql/src/Linq/RedundantSelect.ql index 5dea1ababfd..73b1c92d247 100644 --- a/csharp/ql/src/Linq/RedundantSelect.ql +++ b/csharp/ql/src/Linq/RedundantSelect.ql @@ -5,7 +5,9 @@ * @problem.severity warning * @precision very-high * @id cs/linq/useless-select - * @tags maintainability + * @tags quality + * maintainability + * useless-code * language-features * external/cwe/cwe-561 */ diff --git a/csharp/ql/src/Performance/StringBuilderInLoop.ql b/csharp/ql/src/Performance/StringBuilderInLoop.ql index 8becb0c7eb2..f1f23ebf5e0 100644 --- a/csharp/ql/src/Performance/StringBuilderInLoop.ql +++ b/csharp/ql/src/Performance/StringBuilderInLoop.ql @@ -5,7 +5,9 @@ * @problem.severity recommendation * @precision very-high * @id cs/stringbuilder-creation-in-loop - * @tags efficiency + * @tags quality + * reliability + * performance */ import csharp diff --git a/csharp/ql/src/Performance/StringConcatenationInLoop.ql b/csharp/ql/src/Performance/StringConcatenationInLoop.ql index b1b420434e9..a015771610d 100644 --- a/csharp/ql/src/Performance/StringConcatenationInLoop.ql +++ b/csharp/ql/src/Performance/StringConcatenationInLoop.ql @@ -5,9 +5,9 @@ * @problem.severity recommendation * @precision very-high * @id cs/string-concatenation-in-loop - * @tags efficiency - * maintainability - * quality + * @tags quality + * reliability + * performance */ import csharp diff --git a/csharp/ql/src/Performance/UseTryGetValue.ql b/csharp/ql/src/Performance/UseTryGetValue.ql index c33c0d1e8d7..3eb97931f30 100644 --- a/csharp/ql/src/Performance/UseTryGetValue.ql +++ b/csharp/ql/src/Performance/UseTryGetValue.ql @@ -6,9 +6,9 @@ * @problem.severity recommendation * @precision high * @id cs/inefficient-containskey - * @tags maintainability - * efficiency - * quality + * @tags quality + * reliability + * performance */ import csharp diff --git a/csharp/ql/src/Useless code/DefaultToString.ql b/csharp/ql/src/Useless code/DefaultToString.ql index ea33fe7874b..c0039fc9052 100644 --- a/csharp/ql/src/Useless code/DefaultToString.ql +++ b/csharp/ql/src/Useless code/DefaultToString.ql @@ -6,9 +6,9 @@ * @problem.severity warning * @precision very-high * @id cs/call-to-object-tostring - * @tags reliability - * maintainability - * quality + * @tags quality + * reliability + * correctness */ import DefaultToStringQuery diff --git a/csharp/ql/src/Useless code/FutileConditional.ql b/csharp/ql/src/Useless code/FutileConditional.ql index d77fd55a434..c1ef924bfdd 100644 --- a/csharp/ql/src/Useless code/FutileConditional.ql +++ b/csharp/ql/src/Useless code/FutileConditional.ql @@ -5,8 +5,10 @@ * @problem.severity warning * @precision very-high * @id cs/useless-if-statement - * @tags reliability + * @tags quality + * maintainability * readability + * useless-code */ import csharp diff --git a/csharp/ql/src/Useless code/IntGetHashCode.ql b/csharp/ql/src/Useless code/IntGetHashCode.ql index 847443d018e..94849639f3d 100644 --- a/csharp/ql/src/Useless code/IntGetHashCode.ql +++ b/csharp/ql/src/Useless code/IntGetHashCode.ql @@ -6,9 +6,10 @@ * @problem.severity recommendation * @precision high * @id cs/useless-gethashcode-call - * @tags readability + * @tags quality + * maintainability + * readability * useless-code - * quality */ import csharp diff --git a/csharp/ql/src/Useless code/RedundantToStringCall.ql b/csharp/ql/src/Useless code/RedundantToStringCall.ql index f0507f9d8a4..55e7056e9a0 100644 --- a/csharp/ql/src/Useless code/RedundantToStringCall.ql +++ b/csharp/ql/src/Useless code/RedundantToStringCall.ql @@ -6,7 +6,8 @@ * @problem.severity recommendation * @precision high * @id cs/useless-tostring-call - * @tags maintainability + * @tags quality + * maintainability * useless-code */ diff --git a/csharp/ql/src/Useless code/UnusedLabel.ql b/csharp/ql/src/Useless code/UnusedLabel.ql index 53ba4180f14..cc625cbc521 100644 --- a/csharp/ql/src/Useless code/UnusedLabel.ql +++ b/csharp/ql/src/Useless code/UnusedLabel.ql @@ -5,7 +5,8 @@ * @problem.severity warning * @precision high * @id cs/unused-label - * @tags maintainability + * @tags quality + * maintainability * useless-code */ From 3301924777281d515f65adb6d86370a69dcf95a4 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Mon, 16 Jun 2025 15:19:10 +0200 Subject: [PATCH 109/150] C#: Update integration test expected output. --- .../csharp-code-quality.qls.expected | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality.qls.expected b/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality.qls.expected index 1ce0a7be504..30b7165cd42 100644 --- a/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality.qls.expected +++ b/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality.qls.expected @@ -1,20 +1,77 @@ ql/csharp/ql/src/API Abuse/CallToGCCollect.ql +ql/csharp/ql/src/API Abuse/CallToObsoleteMethod.ql +ql/csharp/ql/src/API Abuse/ClassImplementsICloneable.ql ql/csharp/ql/src/API Abuse/FormatInvalid.ql ql/csharp/ql/src/API Abuse/NoDisposeCallOnLocalIDisposable.ql +ql/csharp/ql/src/API Abuse/NullArgumentToEquals.ql +ql/csharp/ql/src/ASP/BlockCodeResponseWrite.ql +ql/csharp/ql/src/Architecture/Refactoring Opportunities/InappropriateIntimacy.ql +ql/csharp/ql/src/Bad Practices/CallsUnmanagedCode.ql +ql/csharp/ql/src/Bad Practices/CatchOfNullReferenceException.ql ql/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql +ql/csharp/ql/src/Bad Practices/Declarations/LocalScopeVariableShadowsMember.ql +ql/csharp/ql/src/Bad Practices/Declarations/TooManyRefParameters.ql +ql/csharp/ql/src/Bad Practices/EmptyCatchBlock.ql +ql/csharp/ql/src/Bad Practices/Implementation Hiding/ExposeRepresentation.ql +ql/csharp/ql/src/Bad Practices/Naming Conventions/FieldMasksSuperField.ql +ql/csharp/ql/src/Bad Practices/Naming Conventions/SameNameAsSuper.ql +ql/csharp/ql/src/Bad Practices/PathCombine.ql +ql/csharp/ql/src/Bad Practices/UnmanagedCodeCheck.ql +ql/csharp/ql/src/CSI/CompareIdenticalValues.ql ql/csharp/ql/src/CSI/NullAlways.ql ql/csharp/ql/src/CSI/NullMaybe.ql +ql/csharp/ql/src/Complexity/BlockWithTooManyStatements.ql +ql/csharp/ql/src/Complexity/ComplexCondition.ql +ql/csharp/ql/src/Concurrency/FutileSyncOnField.ql +ql/csharp/ql/src/Concurrency/LockOrder.ql +ql/csharp/ql/src/Concurrency/LockThis.ql +ql/csharp/ql/src/Concurrency/LockedWait.ql ql/csharp/ql/src/Dead Code/DeadStoreOfLocal.ql +ql/csharp/ql/src/Documentation/XmldocMissingSummary.ql +ql/csharp/ql/src/Language Abuse/CastThisToTypeParameter.ql +ql/csharp/ql/src/Language Abuse/CatchOfGenericException.ql +ql/csharp/ql/src/Language Abuse/ChainedIs.ql +ql/csharp/ql/src/Language Abuse/DubiousDowncastOfThis.ql +ql/csharp/ql/src/Language Abuse/DubiousTypeTestOfThis.ql ql/csharp/ql/src/Language Abuse/MissedReadonlyOpportunity.ql +ql/csharp/ql/src/Language Abuse/MissedTernaryOpportunity.ql +ql/csharp/ql/src/Language Abuse/MissedUsingOpportunity.ql +ql/csharp/ql/src/Language Abuse/NestedIf.ql +ql/csharp/ql/src/Language Abuse/RethrowException.ql +ql/csharp/ql/src/Language Abuse/SimplifyBoolExpr.ql +ql/csharp/ql/src/Language Abuse/UnusedPropertyValue.ql ql/csharp/ql/src/Likely Bugs/Collections/ContainerLengthCmpOffByOne.ql ql/csharp/ql/src/Likely Bugs/Collections/ContainerSizeCmpZero.ql +ql/csharp/ql/src/Likely Bugs/Collections/ReadOnlyContainer.ql +ql/csharp/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql +ql/csharp/ql/src/Likely Bugs/ConstantComparison.ql ql/csharp/ql/src/Likely Bugs/DangerousNonShortCircuitLogic.ql ql/csharp/ql/src/Likely Bugs/EqualityCheckOnFloats.ql +ql/csharp/ql/src/Likely Bugs/EqualsArray.ql ql/csharp/ql/src/Likely Bugs/HashedButNoHash.ql +ql/csharp/ql/src/Likely Bugs/ImpossibleArrayCast.ql +ql/csharp/ql/src/Likely Bugs/IncomparableEquals.ql +ql/csharp/ql/src/Likely Bugs/NestedLoopsSameVariable.ql +ql/csharp/ql/src/Likely Bugs/PossibleLossOfPrecision.ql +ql/csharp/ql/src/Likely Bugs/RecursiveEquals.ql ql/csharp/ql/src/Likely Bugs/ReferenceEqualsOnValueTypes.ql ql/csharp/ql/src/Likely Bugs/SelfAssignment.ql +ql/csharp/ql/src/Likely Bugs/Statements/EmptyBlock.ql +ql/csharp/ql/src/Likely Bugs/Statements/EmptyLockStatement.ql +ql/csharp/ql/src/Likely Bugs/StaticFieldWrittenByInstance.ql +ql/csharp/ql/src/Likely Bugs/StringBuilderCharInit.ql ql/csharp/ql/src/Likely Bugs/UncheckedCastInEquals.ql +ql/csharp/ql/src/Linq/MissedAllOpportunity.ql +ql/csharp/ql/src/Linq/MissedCastOpportunity.ql +ql/csharp/ql/src/Linq/MissedOfTypeOpportunity.ql +ql/csharp/ql/src/Linq/MissedSelectOpportunity.ql +ql/csharp/ql/src/Linq/MissedWhereOpportunity.ql +ql/csharp/ql/src/Linq/RedundantSelect.ql +ql/csharp/ql/src/Performance/StringBuilderInLoop.ql ql/csharp/ql/src/Performance/StringConcatenationInLoop.ql ql/csharp/ql/src/Performance/UseTryGetValue.ql ql/csharp/ql/src/Useless code/DefaultToString.ql +ql/csharp/ql/src/Useless code/FutileConditional.ql ql/csharp/ql/src/Useless code/IntGetHashCode.ql +ql/csharp/ql/src/Useless code/RedundantToStringCall.ql +ql/csharp/ql/src/Useless code/UnusedLabel.ql From 758a6b5487e45fd8cdcbfeebc32c2cc8dd8304a8 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Mon, 16 Jun 2025 16:05:43 +0200 Subject: [PATCH 110/150] C#: Add change note. --- csharp/ql/src/change-notes/2025-06-16-tagging.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 csharp/ql/src/change-notes/2025-06-16-tagging.md diff --git a/csharp/ql/src/change-notes/2025-06-16-tagging.md b/csharp/ql/src/change-notes/2025-06-16-tagging.md new file mode 100644 index 00000000000..d0b8d2c41ee --- /dev/null +++ b/csharp/ql/src/change-notes/2025-06-16-tagging.md @@ -0,0 +1,4 @@ +--- +category: queryMetadata +--- +* Query metadata tags have been systematically updated for many C# queries. Primary categorization as either `reliability` or `maintainability`, and relevant sub-category tags such as `readability`, `useless-code`, `complexity`, `performance`, `correctness`, `error-handling`, and `concurrency`. Aligns with the established [Query file metadata and alert message style guide](https://github.com/github/codeql/blob/main/docs/query-metadata-style-guide.md#quality-query-sub-category-tags). From 819ee332393aff0da1040aa7827db90cde7a42f9 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Mon, 16 Jun 2025 16:20:30 +0200 Subject: [PATCH 111/150] C#: Do not add complexity queries that should be configurable to the Code Quality suite. --- .../ql/src/Bad Practices/Declarations/TooManyRefParameters.ql | 3 +-- csharp/ql/src/Complexity/BlockWithTooManyStatements.ql | 3 +-- csharp/ql/src/Complexity/ComplexCondition.ql | 3 +-- csharp/ql/src/Language Abuse/ChainedIs.ql | 3 +-- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/csharp/ql/src/Bad Practices/Declarations/TooManyRefParameters.ql b/csharp/ql/src/Bad Practices/Declarations/TooManyRefParameters.ql index 937be695d3f..05ebd97484c 100644 --- a/csharp/ql/src/Bad Practices/Declarations/TooManyRefParameters.ql +++ b/csharp/ql/src/Bad Practices/Declarations/TooManyRefParameters.ql @@ -6,8 +6,7 @@ * @problem.severity recommendation * @precision very-high * @id cs/too-many-ref-parameters - * @tags quality - * maintainability + * @tags maintainability * readability * testability */ diff --git a/csharp/ql/src/Complexity/BlockWithTooManyStatements.ql b/csharp/ql/src/Complexity/BlockWithTooManyStatements.ql index 32c0c35fcb6..783ab64a375 100644 --- a/csharp/ql/src/Complexity/BlockWithTooManyStatements.ql +++ b/csharp/ql/src/Complexity/BlockWithTooManyStatements.ql @@ -7,8 +7,7 @@ * @problem.severity recommendation * @precision high * @id cs/complex-block - * @tags quality - * maintainability + * @tags maintainability * complexity * testability */ diff --git a/csharp/ql/src/Complexity/ComplexCondition.ql b/csharp/ql/src/Complexity/ComplexCondition.ql index 25721b886a2..0afb27e2a94 100644 --- a/csharp/ql/src/Complexity/ComplexCondition.ql +++ b/csharp/ql/src/Complexity/ComplexCondition.ql @@ -5,8 +5,7 @@ * @problem.severity recommendation * @precision high * @id cs/complex-condition - * @tags quality - * maintainability + * @tags maintainability * readability * testability */ diff --git a/csharp/ql/src/Language Abuse/ChainedIs.ql b/csharp/ql/src/Language Abuse/ChainedIs.ql index 47118d29d37..ec66e150bae 100644 --- a/csharp/ql/src/Language Abuse/ChainedIs.ql +++ b/csharp/ql/src/Language Abuse/ChainedIs.ql @@ -6,8 +6,7 @@ * @problem.severity recommendation * @precision high * @id cs/chained-type-tests - * @tags quality - * reliability + * @tags reliability * performance * changeability * language-features From d296ee7d504d549085d792c2f7d768b80875eac6 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Mon, 16 Jun 2025 16:22:03 +0200 Subject: [PATCH 112/150] C#: Update integration test expected output. --- .../posix/query-suite/csharp-code-quality.qls.expected | 4 ---- 1 file changed, 4 deletions(-) diff --git a/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality.qls.expected b/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality.qls.expected index 30b7165cd42..f1117b4c719 100644 --- a/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality.qls.expected +++ b/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality.qls.expected @@ -10,7 +10,6 @@ ql/csharp/ql/src/Bad Practices/CallsUnmanagedCode.ql ql/csharp/ql/src/Bad Practices/CatchOfNullReferenceException.ql ql/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql ql/csharp/ql/src/Bad Practices/Declarations/LocalScopeVariableShadowsMember.ql -ql/csharp/ql/src/Bad Practices/Declarations/TooManyRefParameters.ql ql/csharp/ql/src/Bad Practices/EmptyCatchBlock.ql ql/csharp/ql/src/Bad Practices/Implementation Hiding/ExposeRepresentation.ql ql/csharp/ql/src/Bad Practices/Naming Conventions/FieldMasksSuperField.ql @@ -20,8 +19,6 @@ ql/csharp/ql/src/Bad Practices/UnmanagedCodeCheck.ql ql/csharp/ql/src/CSI/CompareIdenticalValues.ql ql/csharp/ql/src/CSI/NullAlways.ql ql/csharp/ql/src/CSI/NullMaybe.ql -ql/csharp/ql/src/Complexity/BlockWithTooManyStatements.ql -ql/csharp/ql/src/Complexity/ComplexCondition.ql ql/csharp/ql/src/Concurrency/FutileSyncOnField.ql ql/csharp/ql/src/Concurrency/LockOrder.ql ql/csharp/ql/src/Concurrency/LockThis.ql @@ -30,7 +27,6 @@ ql/csharp/ql/src/Dead Code/DeadStoreOfLocal.ql ql/csharp/ql/src/Documentation/XmldocMissingSummary.ql ql/csharp/ql/src/Language Abuse/CastThisToTypeParameter.ql ql/csharp/ql/src/Language Abuse/CatchOfGenericException.ql -ql/csharp/ql/src/Language Abuse/ChainedIs.ql ql/csharp/ql/src/Language Abuse/DubiousDowncastOfThis.ql ql/csharp/ql/src/Language Abuse/DubiousTypeTestOfThis.ql ql/csharp/ql/src/Language Abuse/MissedReadonlyOpportunity.ql From 9fb47cc125fddf1b2bbf9f6b750099b1749f0668 Mon Sep 17 00:00:00 2001 From: idrissrio Date: Tue, 17 Jun 2025 10:36:21 +0200 Subject: [PATCH 113/150] C++: add tests for attribute extraction on namespace --- .../attributes/namespace/namespace.expected | 11 +++++++++++ .../library-tests/attributes/namespace/namespace.ql | 4 ++++ .../test/library-tests/attributes/namespace/test.cpp | 11 +++++++++++ 3 files changed, 26 insertions(+) create mode 100644 cpp/ql/test/library-tests/attributes/namespace/namespace.expected create mode 100644 cpp/ql/test/library-tests/attributes/namespace/namespace.ql create mode 100644 cpp/ql/test/library-tests/attributes/namespace/test.cpp diff --git a/cpp/ql/test/library-tests/attributes/namespace/namespace.expected b/cpp/ql/test/library-tests/attributes/namespace/namespace.expected new file mode 100644 index 00000000000..a6def774033 --- /dev/null +++ b/cpp/ql/test/library-tests/attributes/namespace/namespace.expected @@ -0,0 +1,11 @@ +| file://:0:0:0:0 | MultiSquared | test.cpp:10:13:10:22 | deprecated | +| file://:0:0:0:0 | MultiSquared | test.cpp:10:25:10:36 | maybe_unused | +| file://:0:0:0:0 | MultiSquared | test.cpp:11:13:11:22 | deprecated | +| file://:0:0:0:0 | MultiSquared | test.cpp:11:25:11:36 | maybe_unused | +| file://:0:0:0:0 | NamespaceTest | test.cpp:1:26:1:35 | deprecated | +| file://:0:0:0:0 | NamespaceTest | test.cpp:2:26:2:35 | deprecated | +| file://:0:0:0:0 | NamespaceTest | test.cpp:3:26:3:37 | maybe_unused | +| test.cpp:4:53:4:61 | MultiAttr | test.cpp:4:26:4:35 | deprecated | +| test.cpp:4:53:4:61 | MultiAttr | test.cpp:4:38:4:49 | maybe_unused | +| test.cpp:6:43:6:56 | OuterNamespace::InnerNamespace | test.cpp:6:30:6:39 | deprecated | +| test.cpp:9:46:9:61 | NamespaceSquared | test.cpp:9:13:9:22 | deprecated | diff --git a/cpp/ql/test/library-tests/attributes/namespace/namespace.ql b/cpp/ql/test/library-tests/attributes/namespace/namespace.ql new file mode 100644 index 00000000000..b1de550728a --- /dev/null +++ b/cpp/ql/test/library-tests/attributes/namespace/namespace.ql @@ -0,0 +1,4 @@ +import cpp + +from Namespace ns +select ns, ns.getAnAttribute() diff --git a/cpp/ql/test/library-tests/attributes/namespace/test.cpp b/cpp/ql/test/library-tests/attributes/namespace/test.cpp new file mode 100644 index 00000000000..564947e36b9 --- /dev/null +++ b/cpp/ql/test/library-tests/attributes/namespace/test.cpp @@ -0,0 +1,11 @@ +namespace __attribute__((deprecated)) NamespaceTest {} +namespace __attribute__((deprecated)) NamespaceTest {} +namespace __attribute__((maybe_unused)) NamespaceTest {} +namespace __attribute__((deprecated, maybe_unused)) MultiAttr {} +namespace OuterNamespace { + namespace __attribute__((deprecated)) InnerNamespace {} +} + +namespace [[deprecated("NamespaceSquared")]] NamespaceSquared {} +namespace [[deprecated, maybe_unused]] MultiSquared {} +namespace [[deprecated, maybe_unused]] MultiSquared {} \ No newline at end of file From ddc429cfebac22b2bbe3d2532b027a0af2ea01bf Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Tue, 17 Jun 2025 13:16:20 +0200 Subject: [PATCH 114/150] Ruby: Update quality related tags. --- ruby/ql/src/queries/performance/DatabaseQueryInLoop.ql | 5 +++-- ruby/ql/src/queries/variables/DeadStoreOfLocal.ql | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/ruby/ql/src/queries/performance/DatabaseQueryInLoop.ql b/ruby/ql/src/queries/performance/DatabaseQueryInLoop.ql index 835fe620984..b34ee080fcd 100644 --- a/ruby/ql/src/queries/performance/DatabaseQueryInLoop.ql +++ b/ruby/ql/src/queries/performance/DatabaseQueryInLoop.ql @@ -5,8 +5,9 @@ * @problem.severity info * @precision high * @id rb/database-query-in-loop - * @tags performance - * quality + * @tags quality + * reliability + * performance */ import ruby diff --git a/ruby/ql/src/queries/variables/DeadStoreOfLocal.ql b/ruby/ql/src/queries/variables/DeadStoreOfLocal.ql index 808ce42dd85..849fb8ecd5a 100644 --- a/ruby/ql/src/queries/variables/DeadStoreOfLocal.ql +++ b/ruby/ql/src/queries/variables/DeadStoreOfLocal.ql @@ -5,8 +5,9 @@ * @kind problem * @problem.severity warning * @id rb/useless-assignment-to-local - * @tags maintainability - * quality + * @tags quality + * maintainability + * useless-code * external/cwe/cwe-563 * @precision high */ From 08d28a5b85aa29466a8eaff3f34a97d77fd49de1 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Tue, 17 Jun 2025 13:17:27 +0200 Subject: [PATCH 115/150] Ruby: Add change-note. --- ruby/ql/src/change-notes/2025-06-17-tagging.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 ruby/ql/src/change-notes/2025-06-17-tagging.md diff --git a/ruby/ql/src/change-notes/2025-06-17-tagging.md b/ruby/ql/src/change-notes/2025-06-17-tagging.md new file mode 100644 index 00000000000..757e1c55577 --- /dev/null +++ b/ruby/ql/src/change-notes/2025-06-17-tagging.md @@ -0,0 +1,5 @@ +--- +category: queryMetadata +--- +* Update query metadata tags for `rb/database-query-in-loop` and `rb/useless-assignment-to-local` to align with the established +[Query file metadata and alert message style guide](https://github.com/github/codeql/blob/main/docs/query-metadata-style-guide.md#quality-query-sub-category-tags). From 433756debbd1c2cf68c22ae3af00f8c83bde0743 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Wed, 4 Jun 2025 11:48:45 +0200 Subject: [PATCH 116/150] Rust: Make `SummarizedCallable` extend `Function` instead of `string` --- .../lib/codeql/rust/dataflow/FlowSummary.qll | 27 +- .../rust/dataflow/internal/DataFlowImpl.qll | 25 +- .../dataflow/internal/FlowSummaryImpl.qll | 4 +- .../rust/dataflow/internal/ModelsAsData.qll | 8 +- .../codeql/rust/dataflow/internal/Node.qll | 8 +- .../codeql/rust/frameworks/stdlib/Clone.qll | 10 +- .../codeql/rust/internal/PathResolution.qll | 4 +- .../codeql/rust/internal/TypeInference.qll | 5 +- .../dataflow/global/viableCallable.expected | 4 +- .../dataflow/local/DataFlowStep.expected | 85 +++--- .../dataflow/local/inline-flow.expected | 32 +-- .../test/library-tests/dataflow/local/main.rs | 22 +- .../library-tests/dataflow/models/models.ql | 2 +- .../PathResolutionConsistency.expected | 30 +- .../dataflow/sources/TaintSources.expected | 20 +- .../library-tests/dataflow/sources/test.rs | 66 ++--- .../dataflow/sources/test_futures_io.rs | 57 ++-- .../dataflow/sources/web_frameworks.rs | 89 ++++-- .../PathResolutionConsistency.expected | 12 +- .../strings/inline-taint-flow.expected | 61 ++-- .../library-tests/dataflow/strings/main.rs | 12 +- .../test/library-tests/sensitivedata/test.rs | 2 +- .../security/CWE-022/TaintedPath.expected | 44 +-- .../query-tests/security/CWE-022/src/main.rs | 8 +- .../query-tests/security/CWE-089/Cargo.lock | 8 +- .../security/CWE-089/SqlInjection.expected | 65 +---- .../test/query-tests/security/CWE-089/sqlx.rs | 8 +- .../CWE-312/CleartextLogging.expected | 261 ++++++------------ .../security/CWE-312/test_logging.rs | 10 +- .../UncontrolledAllocationSize.expected | 148 +++++----- .../test/query-tests/security/CWE-770/main.rs | 4 +- .../test/utils-tests/modelgenerator/option.rs | 6 +- 32 files changed, 477 insertions(+), 670 deletions(-) diff --git a/rust/ql/lib/codeql/rust/dataflow/FlowSummary.qll b/rust/ql/lib/codeql/rust/dataflow/FlowSummary.qll index 60e76ceff94..0c41bb6d7a8 100644 --- a/rust/ql/lib/codeql/rust/dataflow/FlowSummary.qll +++ b/rust/ql/lib/codeql/rust/dataflow/FlowSummary.qll @@ -2,7 +2,6 @@ private import rust private import internal.FlowSummaryImpl as Impl -private import codeql.rust.elements.internal.CallExprBaseImpl::Impl as CallExprBaseImpl // import all instances below private module Summaries { @@ -10,34 +9,10 @@ private module Summaries { private import codeql.rust.dataflow.internal.ModelsAsData } -/** Provides the `Range` class used to define the extent of `LibraryCallable`. */ -module LibraryCallable { - /** A callable defined in library code, identified by a unique string. */ - abstract class Range extends string { - bindingset[this] - Range() { any() } - - /** Gets a call to this library callable. */ - CallExprBase getACall() { - exists(Resolvable r, string crate | - r = CallExprBaseImpl::getCallResolvable(result) and - this = crate + r.getResolvedPath() - | - crate = r.getResolvedCrateOrigin() + "::_::" - or - not r.hasResolvedCrateOrigin() and - crate = "" - ) - } - } -} - -final class LibraryCallable = LibraryCallable::Range; - /** Provides the `Range` class used to define the extent of `SummarizedCallable`. */ module SummarizedCallable { /** A callable with a flow summary, identified by a unique string. */ - abstract class Range extends LibraryCallable::Range, Impl::Public::SummarizedCallable { + abstract class Range extends Impl::Public::SummarizedCallable { bindingset[this] Range() { any() } diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll index 2cf9cc21668..4d714542306 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll @@ -45,10 +45,12 @@ final class DataFlowCallable extends TDataFlowCallable { /** * Gets the underlying library callable, if any. */ - LibraryCallable asLibraryCallable() { this = TLibraryCallable(result) } + SummarizedCallable asSummarizedCallable() { this = TSummarizedCallable(result) } /** Gets a textual representation of this callable. */ - string toString() { result = [this.asCfgScope().toString(), this.asLibraryCallable().toString()] } + string toString() { + result = [this.asCfgScope().toString(), this.asSummarizedCallable().toString()] + } /** Gets the location of this callable. */ Location getLocation() { result = this.asCfgScope().getLocation() } @@ -65,12 +67,9 @@ final class DataFlowCall extends TDataFlowCall { } DataFlowCallable getEnclosingCallable() { - result = TCfgScope(this.asCallCfgNode().getExpr().getEnclosingCfgScope()) + result.asCfgScope() = this.asCallCfgNode().getExpr().getEnclosingCfgScope() or - exists(FlowSummaryImpl::Public::SummarizedCallable c | - this.isSummaryCall(c, _) and - result = TLibraryCallable(c) - ) + this.isSummaryCall(result.asSummarizedCallable(), _) } string toString() { @@ -401,9 +400,11 @@ module RustDataFlow implements InputSig { /** Gets a viable implementation of the target of the given `Call`. */ DataFlowCallable viableCallable(DataFlowCall call) { - result.asCfgScope() = call.asCallCfgNode().getCall().getStaticTarget() - or - result.asLibraryCallable().getACall() = call.asCallCfgNode().getCall() + exists(Callable target | target = call.asCallCfgNode().getCall().getStaticTarget() | + target = result.asCfgScope() + or + target = result.asSummarizedCallable() + ) } /** @@ -757,7 +758,7 @@ module RustDataFlow implements InputSig { predicate allowParameterReturnInSelf(ParameterNode p) { exists(DataFlowCallable c, ParameterPosition pos | p.isParameterOf(c, pos) and - FlowSummaryImpl::Private::summaryAllowParameterReturnInSelf(c.asLibraryCallable(), pos) + FlowSummaryImpl::Private::summaryAllowParameterReturnInSelf(c.asSummarizedCallable(), pos) ) or VariableCapture::Flow::heuristicAllowInstanceParameterReturnInSelf(p.(ClosureParameterNode) @@ -968,7 +969,7 @@ private module Cached { cached newtype TDataFlowCallable = TCfgScope(CfgScope scope) or - TLibraryCallable(LibraryCallable c) + TSummarizedCallable(SummarizedCallable c) /** This is the local flow predicate that is exposed. */ cached diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll index e46abc4dd37..d10c342c6c5 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll @@ -13,7 +13,7 @@ module Input implements InputSig { private import codeql.rust.elements.internal.CallExprBaseImpl::Impl as CallExprBaseImpl private import codeql.rust.frameworks.stdlib.Stdlib - class SummarizedCallableBase = string; + class SummarizedCallableBase = Function; abstract private class SourceSinkBase extends AstNode { /** Gets the associated call. */ @@ -138,7 +138,7 @@ private import Make as Impl private module StepsInput implements Impl::Private::StepsInputSig { DataFlowCall getACall(Public::SummarizedCallable sc) { - result.asCallCfgNode().getCall() = sc.(LibraryCallable).getACall() + result.asCallCfgNode().getCall().getStaticTarget() = sc } RustDataFlow::Node getSourceNode(Input::SourceBase source, Impl::Private::SummaryComponent sc) { diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/ModelsAsData.qll b/rust/ql/lib/codeql/rust/dataflow/internal/ModelsAsData.qll index a879157af5e..00ac7058cc9 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/ModelsAsData.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/ModelsAsData.qll @@ -47,6 +47,7 @@ private import rust private import codeql.rust.dataflow.FlowSummary private import codeql.rust.dataflow.FlowSource private import codeql.rust.dataflow.FlowSink +private import codeql.rust.elements.internal.CallExprBaseImpl::Impl as CallExprBaseImpl /** * Holds if in a call to the function with canonical path `path`, defined in the @@ -120,7 +121,12 @@ private class SummarizedCallableFromModel extends SummarizedCallable::Range { SummarizedCallableFromModel() { summaryModel(crate, path, _, _, _, _, _) and - this = crate + "::_::" + path + exists(CallExprBase call, Resolvable r | + call.getStaticTarget() = this and + r = CallExprBaseImpl::getCallResolvable(call) and + r.getResolvedPath() = path and + r.getResolvedCrateOrigin() = crate + ) } override predicate propagatesFlow( diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll b/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll index 939cb45a0ca..51343c1eb40 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll @@ -44,7 +44,7 @@ abstract class NodePublic extends TNode { abstract class Node extends NodePublic { /** Gets the enclosing callable. */ - DataFlowCallable getEnclosingCallable() { result = TCfgScope(this.getCfgScope()) } + DataFlowCallable getEnclosingCallable() { result.asCfgScope() = this.getCfgScope() } /** Do not call: use `getEnclosingCallable()` instead. */ abstract CfgScope getCfgScope(); @@ -102,9 +102,9 @@ class FlowSummaryNode extends Node, TFlowSummaryNode { } override DataFlowCallable getEnclosingCallable() { - result.asLibraryCallable() = this.getSummarizedCallable() - or result.asCfgScope() = this.getCfgScope() + or + result.asSummarizedCallable() = this.getSummarizedCallable() } override Location getLocation() { @@ -195,7 +195,7 @@ final class SummaryParameterNode extends ParameterNode, FlowSummaryNode { } override predicate isParameterOf(DataFlowCallable c, ParameterPosition pos) { - this.getSummarizedCallable() = c.asLibraryCallable() and pos = pos_ + this.getSummarizedCallable() = c.asSummarizedCallable() and pos = pos_ } } diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/Clone.qll b/rust/ql/lib/codeql/rust/frameworks/stdlib/Clone.qll index 8d3c41c4708..954792ec61e 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/Clone.qll +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/Clone.qll @@ -6,13 +6,9 @@ private import codeql.rust.dataflow.FlowSummary /** A `clone` method. */ final class CloneCallable extends SummarizedCallable::Range { CloneCallable() { - // NOTE: The function target may not exist in the database, so we base this - // on method calls. - exists(MethodCallExpr c | - c.getIdentifier().getText() = "clone" and - c.getArgList().getNumberOfArgs() = 0 and - this = c.getResolvedCrateOrigin() + "::_::" + c.getResolvedPath() - ) + this.getParamList().hasSelfParam() and + this.getParamList().getNumberOfParams() = 0 and + this.getName().getText() = "clone" } final override predicate propagatesFlow( diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll index dcbda16fcbf..c10cdc0140e 100644 --- a/rust/ql/lib/codeql/rust/internal/PathResolution.qll +++ b/rust/ql/lib/codeql/rust/internal/PathResolution.qll @@ -1522,8 +1522,8 @@ private module Debug { private Locatable getRelevantLocatable() { exists(string filepath, int startline, int startcolumn, int endline, int endcolumn | result.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) and - filepath.matches("%/test.rs") and - startline = 74 + filepath.matches("%/main.rs") and + startline = 52 ) } diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index 3248812b2bf..b618c3fb8cb 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -1170,6 +1170,7 @@ final class MethodCall extends Call { * Holds if a method for `type` with the name `name` and the arity `arity` * exists in `impl`. */ +pragma[nomagic] private predicate methodCandidate(Type type, string name, int arity, Impl impl) { type = impl.getSelfTy().(TypeMention).resolveType() and exists(Function f | @@ -1579,8 +1580,8 @@ private module Debug { private Locatable getRelevantLocatable() { exists(string filepath, int startline, int startcolumn, int endline, int endcolumn | result.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) and - filepath.matches("%/main.rs") and - startline = 1718 + filepath.matches("%/sqlx.rs") and + startline = [56 .. 60] ) } diff --git a/rust/ql/test/library-tests/dataflow/global/viableCallable.expected b/rust/ql/test/library-tests/dataflow/global/viableCallable.expected index 822ce4e0a32..be147a36ed3 100644 --- a/rust/ql/test/library-tests/dataflow/global/viableCallable.expected +++ b/rust/ql/test/library-tests/dataflow/global/viableCallable.expected @@ -75,10 +75,10 @@ | main.rs:279:17:279:25 | source(...) | main.rs:1:1:3:1 | fn source | | main.rs:280:9:280:15 | sink(...) | main.rs:5:1:7:1 | fn sink | | main.rs:283:5:283:17 | sink(...) | main.rs:5:1:7:1 | fn sink | -| main.rs:287:13:287:55 | ...::block_on(...) | file://:0:0:0:0 | repo:https://github.com/rust-lang/futures-rs:futures-executor::_::crate::local_pool::block_on | +| main.rs:287:13:287:55 | ...::block_on(...) | file://:0:0:0:0 | fn block_on | | main.rs:287:41:287:54 | async_source(...) | main.rs:268:1:272:1 | fn async_source | | main.rs:288:5:288:11 | sink(...) | main.rs:5:1:7:1 | fn sink | -| main.rs:290:5:290:62 | ...::block_on(...) | file://:0:0:0:0 | repo:https://github.com/rust-lang/futures-rs:futures-executor::_::crate::local_pool::block_on | +| main.rs:290:5:290:62 | ...::block_on(...) | file://:0:0:0:0 | fn block_on | | main.rs:290:33:290:61 | test_async_await_async_part(...) | main.rs:274:1:284:1 | fn test_async_await_async_part | | main.rs:294:5:294:22 | data_out_of_call(...) | main.rs:16:1:19:1 | fn data_out_of_call | | main.rs:295:5:295:35 | data_out_of_call_side_effect1(...) | main.rs:35:1:40:1 | fn data_out_of_call_side_effect1 | diff --git a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected index f588371ed43..dd9bb4ae810 100644 --- a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected +++ b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected @@ -1,5 +1,4 @@ localStep -| file://:0:0:0:0 | [summary param] self in lang:std::_::::canonicalize | file://:0:0:0:0 | [summary] read: Argument[self].OptionalBarrier[normalize-path] in lang:std::_::::canonicalize | | main.rs:3:11:3:11 | [SSA] i | main.rs:4:12:4:12 | i | | main.rs:3:11:3:11 | i | main.rs:3:11:3:11 | [SSA] i | | main.rs:3:11:3:11 | i | main.rs:3:11:3:11 | i | @@ -323,46 +322,46 @@ localStep | main.rs:263:9:263:10 | i1 | main.rs:263:9:263:10 | i1 | | main.rs:263:14:263:16 | TryExpr | main.rs:263:9:263:10 | i1 | | main.rs:266:5:266:11 | Some(...) | main.rs:260:41:267:1 | { ... } | -| main.rs:270:9:270:10 | [SSA] r1 | main.rs:271:29:271:30 | r1 | +| main.rs:270:9:270:10 | [SSA] r1 | main.rs:271:28:271:29 | r1 | | main.rs:270:9:270:10 | r1 | main.rs:270:9:270:10 | [SSA] r1 | | main.rs:270:9:270:10 | r1 | main.rs:270:9:270:10 | r1 | -| main.rs:270:33:270:46 | Ok(...) | main.rs:270:9:270:10 | r1 | +| main.rs:270:32:270:45 | Ok(...) | main.rs:270:9:270:10 | r1 | | main.rs:271:9:271:11 | [SSA] o1a | main.rs:273:10:273:12 | o1a | | main.rs:271:9:271:11 | o1a | main.rs:271:9:271:11 | [SSA] o1a | | main.rs:271:9:271:11 | o1a | main.rs:271:9:271:11 | o1a | -| main.rs:271:29:271:30 | [post] r1 | main.rs:272:29:272:30 | r1 | -| main.rs:271:29:271:30 | [post] receiver for r1 | main.rs:271:29:271:30 | [post] r1 | -| main.rs:271:29:271:30 | r1 | main.rs:271:29:271:30 | receiver for r1 | -| main.rs:271:29:271:30 | r1 | main.rs:272:29:272:30 | r1 | -| main.rs:271:29:271:35 | r1.ok() | main.rs:271:9:271:11 | o1a | +| main.rs:271:28:271:29 | [post] r1 | main.rs:272:28:272:29 | r1 | +| main.rs:271:28:271:29 | [post] receiver for r1 | main.rs:271:28:271:29 | [post] r1 | +| main.rs:271:28:271:29 | r1 | main.rs:271:28:271:29 | receiver for r1 | +| main.rs:271:28:271:29 | r1 | main.rs:272:28:272:29 | r1 | +| main.rs:271:28:271:34 | r1.ok() | main.rs:271:9:271:11 | o1a | | main.rs:272:9:272:11 | [SSA] o1b | main.rs:274:10:274:12 | o1b | | main.rs:272:9:272:11 | o1b | main.rs:272:9:272:11 | [SSA] o1b | | main.rs:272:9:272:11 | o1b | main.rs:272:9:272:11 | o1b | -| main.rs:272:29:272:30 | [post] receiver for r1 | main.rs:272:29:272:30 | [post] r1 | -| main.rs:272:29:272:30 | r1 | main.rs:272:29:272:30 | receiver for r1 | -| main.rs:272:29:272:36 | r1.err() | main.rs:272:9:272:11 | o1b | +| main.rs:272:28:272:29 | [post] receiver for r1 | main.rs:272:28:272:29 | [post] r1 | +| main.rs:272:28:272:29 | r1 | main.rs:272:28:272:29 | receiver for r1 | +| main.rs:272:28:272:35 | r1.err() | main.rs:272:9:272:11 | o1b | | main.rs:273:10:273:12 | [post] receiver for o1a | main.rs:273:10:273:12 | [post] o1a | | main.rs:273:10:273:12 | o1a | main.rs:273:10:273:12 | receiver for o1a | | main.rs:274:10:274:12 | [post] receiver for o1b | main.rs:274:10:274:12 | [post] o1b | | main.rs:274:10:274:12 | o1b | main.rs:274:10:274:12 | receiver for o1b | -| main.rs:276:9:276:10 | [SSA] r2 | main.rs:277:29:277:30 | r2 | +| main.rs:276:9:276:10 | [SSA] r2 | main.rs:277:28:277:29 | r2 | | main.rs:276:9:276:10 | r2 | main.rs:276:9:276:10 | [SSA] r2 | | main.rs:276:9:276:10 | r2 | main.rs:276:9:276:10 | r2 | -| main.rs:276:33:276:47 | Err(...) | main.rs:276:9:276:10 | r2 | +| main.rs:276:32:276:46 | Err(...) | main.rs:276:9:276:10 | r2 | | main.rs:277:9:277:11 | [SSA] o2a | main.rs:279:10:279:12 | o2a | | main.rs:277:9:277:11 | o2a | main.rs:277:9:277:11 | [SSA] o2a | | main.rs:277:9:277:11 | o2a | main.rs:277:9:277:11 | o2a | -| main.rs:277:29:277:30 | [post] r2 | main.rs:278:29:278:30 | r2 | -| main.rs:277:29:277:30 | [post] receiver for r2 | main.rs:277:29:277:30 | [post] r2 | -| main.rs:277:29:277:30 | r2 | main.rs:277:29:277:30 | receiver for r2 | -| main.rs:277:29:277:30 | r2 | main.rs:278:29:278:30 | r2 | -| main.rs:277:29:277:35 | r2.ok() | main.rs:277:9:277:11 | o2a | +| main.rs:277:28:277:29 | [post] r2 | main.rs:278:28:278:29 | r2 | +| main.rs:277:28:277:29 | [post] receiver for r2 | main.rs:277:28:277:29 | [post] r2 | +| main.rs:277:28:277:29 | r2 | main.rs:277:28:277:29 | receiver for r2 | +| main.rs:277:28:277:29 | r2 | main.rs:278:28:278:29 | r2 | +| main.rs:277:28:277:34 | r2.ok() | main.rs:277:9:277:11 | o2a | | main.rs:278:9:278:11 | [SSA] o2b | main.rs:280:10:280:12 | o2b | | main.rs:278:9:278:11 | o2b | main.rs:278:9:278:11 | [SSA] o2b | | main.rs:278:9:278:11 | o2b | main.rs:278:9:278:11 | o2b | -| main.rs:278:29:278:30 | [post] receiver for r2 | main.rs:278:29:278:30 | [post] r2 | -| main.rs:278:29:278:30 | r2 | main.rs:278:29:278:30 | receiver for r2 | -| main.rs:278:29:278:36 | r2.err() | main.rs:278:9:278:11 | o2b | +| main.rs:278:28:278:29 | [post] receiver for r2 | main.rs:278:28:278:29 | [post] r2 | +| main.rs:278:28:278:29 | r2 | main.rs:278:28:278:29 | receiver for r2 | +| main.rs:278:28:278:35 | r2.err() | main.rs:278:9:278:11 | o2b | | main.rs:279:10:279:12 | [post] receiver for o2a | main.rs:279:10:279:12 | [post] o2a | | main.rs:279:10:279:12 | o2a | main.rs:279:10:279:12 | receiver for o2a | | main.rs:280:10:280:12 | [post] receiver for o2b | main.rs:280:10:280:12 | [post] o2b | @@ -702,23 +701,23 @@ localStep | main.rs:469:9:469:9 | [SSA] c | main.rs:474:10:474:10 | c | | main.rs:469:9:469:9 | c | main.rs:469:9:469:9 | [SSA] c | | main.rs:469:9:469:9 | c | main.rs:469:9:469:9 | c | -| main.rs:469:13:469:13 | [post] b | main.rs:470:19:470:19 | b | +| main.rs:469:13:469:13 | [post] b | main.rs:470:18:470:18 | b | | main.rs:469:13:469:13 | [post] receiver for b | main.rs:469:13:469:13 | [post] b | | main.rs:469:13:469:13 | b | main.rs:469:13:469:13 | receiver for b | -| main.rs:469:13:469:13 | b | main.rs:470:19:470:19 | b | +| main.rs:469:13:469:13 | b | main.rs:470:18:470:18 | b | | main.rs:469:13:469:28 | [post] receiver for b.parse() | main.rs:469:13:469:28 | [post] b.parse() | | main.rs:469:13:469:28 | b.parse() | main.rs:469:13:469:28 | receiver for b.parse() | | main.rs:469:13:469:37 | ... .unwrap() | main.rs:469:9:469:9 | c | | main.rs:470:9:470:9 | [SSA] d | main.rs:475:10:475:10 | d | | main.rs:470:9:470:9 | d | main.rs:470:9:470:9 | [SSA] d | | main.rs:470:9:470:9 | d | main.rs:470:9:470:9 | d | -| main.rs:470:19:470:19 | [post] b | main.rs:473:17:473:17 | b | -| main.rs:470:19:470:19 | [post] receiver for b | main.rs:470:19:470:19 | [post] b | -| main.rs:470:19:470:19 | b | main.rs:470:19:470:19 | receiver for b | -| main.rs:470:19:470:19 | b | main.rs:473:17:473:17 | b | -| main.rs:470:19:470:27 | [post] receiver for b.parse() | main.rs:470:19:470:27 | [post] b.parse() | -| main.rs:470:19:470:27 | b.parse() | main.rs:470:19:470:27 | receiver for b.parse() | -| main.rs:470:19:470:36 | ... .unwrap() | main.rs:470:9:470:9 | d | +| main.rs:470:18:470:18 | [post] b | main.rs:473:17:473:17 | b | +| main.rs:470:18:470:18 | [post] receiver for b | main.rs:470:18:470:18 | [post] b | +| main.rs:470:18:470:18 | b | main.rs:470:18:470:18 | receiver for b | +| main.rs:470:18:470:18 | b | main.rs:473:17:473:17 | b | +| main.rs:470:18:470:26 | [post] receiver for b.parse() | main.rs:470:18:470:26 | [post] b.parse() | +| main.rs:470:18:470:26 | b.parse() | main.rs:470:18:470:26 | receiver for b.parse() | +| main.rs:470:18:470:35 | ... .unwrap() | main.rs:470:9:470:9 | d | | main.rs:479:9:479:10 | [SSA] vs | main.rs:481:10:481:11 | vs | | main.rs:479:9:479:10 | vs | main.rs:479:9:479:10 | [SSA] vs | | main.rs:479:9:479:10 | vs | main.rs:479:9:479:10 | vs | @@ -749,19 +748,19 @@ localStep | main.rs:488:10:488:10 | v | main.rs:488:10:488:10 | [SSA] v | | main.rs:488:10:488:10 | v | main.rs:488:10:488:10 | v | | main.rs:488:15:488:16 | [post] receiver for vs | main.rs:488:15:488:16 | [post] vs | -| main.rs:488:15:488:16 | [post] vs | main.rs:492:27:492:28 | vs | +| main.rs:488:15:488:16 | [post] vs | main.rs:492:26:492:27 | vs | | main.rs:488:15:488:16 | vs | main.rs:488:15:488:16 | receiver for vs | -| main.rs:488:15:488:16 | vs | main.rs:492:27:492:28 | vs | +| main.rs:488:15:488:16 | vs | main.rs:492:26:492:27 | vs | | main.rs:492:9:492:11 | [SSA] vs2 | main.rs:493:15:493:17 | vs2 | | main.rs:492:9:492:11 | vs2 | main.rs:492:9:492:11 | [SSA] vs2 | | main.rs:492:9:492:11 | vs2 | main.rs:492:9:492:11 | vs2 | -| main.rs:492:27:492:28 | [post] receiver for vs | main.rs:492:27:492:28 | [post] vs | -| main.rs:492:27:492:28 | [post] vs | main.rs:497:5:497:6 | vs | -| main.rs:492:27:492:28 | vs | main.rs:492:27:492:28 | receiver for vs | -| main.rs:492:27:492:28 | vs | main.rs:497:5:497:6 | vs | -| main.rs:492:27:492:35 | [post] receiver for vs.iter() | main.rs:492:27:492:35 | [post] vs.iter() | -| main.rs:492:27:492:35 | vs.iter() | main.rs:492:27:492:35 | receiver for vs.iter() | -| main.rs:492:27:492:45 | ... .collect() | main.rs:492:9:492:11 | vs2 | +| main.rs:492:26:492:27 | [post] receiver for vs | main.rs:492:26:492:27 | [post] vs | +| main.rs:492:26:492:27 | [post] vs | main.rs:497:5:497:6 | vs | +| main.rs:492:26:492:27 | vs | main.rs:492:26:492:27 | receiver for vs | +| main.rs:492:26:492:27 | vs | main.rs:497:5:497:6 | vs | +| main.rs:492:26:492:34 | [post] receiver for vs.iter() | main.rs:492:26:492:34 | [post] vs.iter() | +| main.rs:492:26:492:34 | vs.iter() | main.rs:492:26:492:34 | receiver for vs.iter() | +| main.rs:492:26:492:44 | ... .collect() | main.rs:492:9:492:11 | vs2 | | main.rs:493:10:493:10 | [SSA] v | main.rs:494:14:494:14 | v | | main.rs:493:10:493:10 | v | main.rs:493:10:493:10 | [SSA] v | | main.rs:493:10:493:10 | v | main.rs:493:10:493:10 | v | @@ -963,7 +962,7 @@ readStep | main.rs:444:41:444:67 | [post] \|...\| ... | main.rs:441:9:441:20 | captured default_name | main.rs:444:41:444:67 | [post] default_name | | main.rs:444:44:444:55 | this | main.rs:441:9:441:20 | captured default_name | main.rs:444:44:444:55 | default_name | | main.rs:469:13:469:13 | [post] receiver for b | file://:0:0:0:0 | &ref | main.rs:469:13:469:13 | [post] b | -| main.rs:470:19:470:19 | [post] receiver for b | file://:0:0:0:0 | &ref | main.rs:470:19:470:19 | [post] b | +| main.rs:470:18:470:18 | [post] receiver for b | file://:0:0:0:0 | &ref | main.rs:470:18:470:18 | [post] b | | main.rs:481:10:481:11 | vs | file://:0:0:0:0 | element | main.rs:481:10:481:14 | vs[0] | | main.rs:482:11:482:35 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:482:10:482:35 | * ... | | main.rs:483:11:483:35 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:483:10:483:35 | * ... | @@ -1023,8 +1022,8 @@ storeStep | main.rs:261:19:261:28 | source(...) | {EXTERNAL LOCATION} | Some | main.rs:261:14:261:29 | Some(...) | | main.rs:262:19:262:19 | 2 | {EXTERNAL LOCATION} | Some | main.rs:262:14:262:20 | Some(...) | | main.rs:266:10:266:10 | 0 | {EXTERNAL LOCATION} | Some | main.rs:266:5:266:11 | Some(...) | -| main.rs:270:36:270:45 | source(...) | {EXTERNAL LOCATION} | Ok | main.rs:270:33:270:46 | Ok(...) | -| main.rs:276:37:276:46 | source(...) | {EXTERNAL LOCATION} | Err | main.rs:276:33:276:47 | Err(...) | +| main.rs:270:35:270:44 | source(...) | {EXTERNAL LOCATION} | Ok | main.rs:270:32:270:45 | Ok(...) | +| main.rs:276:36:276:45 | source(...) | {EXTERNAL LOCATION} | Err | main.rs:276:32:276:46 | Err(...) | | main.rs:284:35:284:44 | source(...) | {EXTERNAL LOCATION} | Ok | main.rs:284:32:284:45 | Ok(...) | | main.rs:285:35:285:35 | 2 | {EXTERNAL LOCATION} | Ok | main.rs:285:32:285:36 | Ok(...) | | main.rs:286:36:286:45 | source(...) | {EXTERNAL LOCATION} | Err | main.rs:286:32:286:46 | Err(...) | @@ -1061,7 +1060,7 @@ storeStep | main.rs:432:18:432:27 | source(...) | file://:0:0:0:0 | element | main.rs:432:5:432:11 | [post] mut_arr | | main.rs:444:41:444:67 | default_name | main.rs:441:9:441:20 | captured default_name | main.rs:444:41:444:67 | \|...\| ... | | main.rs:469:13:469:13 | b | file://:0:0:0:0 | &ref | main.rs:469:13:469:13 | receiver for b | -| main.rs:470:19:470:19 | b | file://:0:0:0:0 | &ref | main.rs:470:19:470:19 | receiver for b | +| main.rs:470:18:470:18 | b | file://:0:0:0:0 | &ref | main.rs:470:18:470:18 | receiver for b | | main.rs:479:15:479:24 | source(...) | file://:0:0:0:0 | element | main.rs:479:14:479:34 | [...] | | main.rs:479:27:479:27 | 2 | file://:0:0:0:0 | element | main.rs:479:14:479:34 | [...] | | main.rs:479:30:479:30 | 3 | file://:0:0:0:0 | element | main.rs:479:14:479:34 | [...] | diff --git a/rust/ql/test/library-tests/dataflow/local/inline-flow.expected b/rust/ql/test/library-tests/dataflow/local/inline-flow.expected index 77e462c2dce..5d9fabca983 100644 --- a/rust/ql/test/library-tests/dataflow/local/inline-flow.expected +++ b/rust/ql/test/library-tests/dataflow/local/inline-flow.expected @@ -117,16 +117,16 @@ edges | main.rs:263:9:263:10 | i1 | main.rs:264:10:264:11 | i1 | provenance | | | main.rs:263:14:263:15 | s1 [Some] | main.rs:263:14:263:16 | TryExpr | provenance | | | main.rs:263:14:263:16 | TryExpr | main.rs:263:9:263:10 | i1 | provenance | | -| main.rs:270:9:270:10 | r1 [Ok] | main.rs:271:29:271:35 | r1.ok() [Some] | provenance | MaD:11 | -| main.rs:270:33:270:46 | Ok(...) [Ok] | main.rs:270:9:270:10 | r1 [Ok] | provenance | | -| main.rs:270:36:270:45 | source(...) | main.rs:270:33:270:46 | Ok(...) [Ok] | provenance | | +| main.rs:270:9:270:10 | r1 [Ok] | main.rs:271:28:271:34 | r1.ok() [Some] | provenance | MaD:11 | +| main.rs:270:32:270:45 | Ok(...) [Ok] | main.rs:270:9:270:10 | r1 [Ok] | provenance | | +| main.rs:270:35:270:44 | source(...) | main.rs:270:32:270:45 | Ok(...) [Ok] | provenance | | | main.rs:271:9:271:11 | o1a [Some] | main.rs:273:10:273:21 | o1a.unwrap() | provenance | MaD:3 | -| main.rs:271:29:271:35 | r1.ok() [Some] | main.rs:271:9:271:11 | o1a [Some] | provenance | | -| main.rs:276:9:276:10 | r2 [Err] | main.rs:278:29:278:36 | r2.err() [Some] | provenance | MaD:8 | -| main.rs:276:33:276:47 | Err(...) [Err] | main.rs:276:9:276:10 | r2 [Err] | provenance | | -| main.rs:276:37:276:46 | source(...) | main.rs:276:33:276:47 | Err(...) [Err] | provenance | | +| main.rs:271:28:271:34 | r1.ok() [Some] | main.rs:271:9:271:11 | o1a [Some] | provenance | | +| main.rs:276:9:276:10 | r2 [Err] | main.rs:278:28:278:35 | r2.err() [Some] | provenance | MaD:8 | +| main.rs:276:32:276:46 | Err(...) [Err] | main.rs:276:9:276:10 | r2 [Err] | provenance | | +| main.rs:276:36:276:45 | source(...) | main.rs:276:32:276:46 | Err(...) [Err] | provenance | | | main.rs:278:9:278:11 | o2b [Some] | main.rs:280:10:280:21 | o2b.unwrap() | provenance | MaD:3 | -| main.rs:278:29:278:36 | r2.err() [Some] | main.rs:278:9:278:11 | o2b [Some] | provenance | | +| main.rs:278:28:278:35 | r2.err() [Some] | main.rs:278:9:278:11 | o2b [Some] | provenance | | | main.rs:284:9:284:10 | s1 [Ok] | main.rs:287:14:287:15 | s1 [Ok] | provenance | | | main.rs:284:32:284:45 | Ok(...) [Ok] | main.rs:284:9:284:10 | s1 [Ok] | provenance | | | main.rs:284:35:284:44 | source(...) | main.rs:284:32:284:45 | Ok(...) [Ok] | provenance | | @@ -373,16 +373,16 @@ nodes | main.rs:263:14:263:16 | TryExpr | semmle.label | TryExpr | | main.rs:264:10:264:11 | i1 | semmle.label | i1 | | main.rs:270:9:270:10 | r1 [Ok] | semmle.label | r1 [Ok] | -| main.rs:270:33:270:46 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] | -| main.rs:270:36:270:45 | source(...) | semmle.label | source(...) | +| main.rs:270:32:270:45 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] | +| main.rs:270:35:270:44 | source(...) | semmle.label | source(...) | | main.rs:271:9:271:11 | o1a [Some] | semmle.label | o1a [Some] | -| main.rs:271:29:271:35 | r1.ok() [Some] | semmle.label | r1.ok() [Some] | +| main.rs:271:28:271:34 | r1.ok() [Some] | semmle.label | r1.ok() [Some] | | main.rs:273:10:273:21 | o1a.unwrap() | semmle.label | o1a.unwrap() | | main.rs:276:9:276:10 | r2 [Err] | semmle.label | r2 [Err] | -| main.rs:276:33:276:47 | Err(...) [Err] | semmle.label | Err(...) [Err] | -| main.rs:276:37:276:46 | source(...) | semmle.label | source(...) | +| main.rs:276:32:276:46 | Err(...) [Err] | semmle.label | Err(...) [Err] | +| main.rs:276:36:276:45 | source(...) | semmle.label | source(...) | | main.rs:278:9:278:11 | o2b [Some] | semmle.label | o2b [Some] | -| main.rs:278:29:278:36 | r2.err() [Some] | semmle.label | r2.err() [Some] | +| main.rs:278:28:278:35 | r2.err() [Some] | semmle.label | r2.err() [Some] | | main.rs:280:10:280:21 | o2b.unwrap() | semmle.label | o2b.unwrap() | | main.rs:284:9:284:10 | s1 [Ok] | semmle.label | s1 [Ok] | | main.rs:284:32:284:45 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] | @@ -545,8 +545,8 @@ testFailures | main.rs:254:10:254:32 | s1.unwrap_or_else(...) | main.rs:253:19:253:28 | source(...) | main.rs:254:10:254:32 | s1.unwrap_or_else(...) | $@ | main.rs:253:19:253:28 | source(...) | source(...) | | main.rs:257:10:257:41 | s2.unwrap_or_else(...) | main.rs:257:31:257:40 | source(...) | main.rs:257:10:257:41 | s2.unwrap_or_else(...) | $@ | main.rs:257:31:257:40 | source(...) | source(...) | | main.rs:264:10:264:11 | i1 | main.rs:261:19:261:28 | source(...) | main.rs:264:10:264:11 | i1 | $@ | main.rs:261:19:261:28 | source(...) | source(...) | -| main.rs:273:10:273:21 | o1a.unwrap() | main.rs:270:36:270:45 | source(...) | main.rs:273:10:273:21 | o1a.unwrap() | $@ | main.rs:270:36:270:45 | source(...) | source(...) | -| main.rs:280:10:280:21 | o2b.unwrap() | main.rs:276:37:276:46 | source(...) | main.rs:280:10:280:21 | o2b.unwrap() | $@ | main.rs:276:37:276:46 | source(...) | source(...) | +| main.rs:273:10:273:21 | o1a.unwrap() | main.rs:270:35:270:44 | source(...) | main.rs:273:10:273:21 | o1a.unwrap() | $@ | main.rs:270:35:270:44 | source(...) | source(...) | +| main.rs:280:10:280:21 | o2b.unwrap() | main.rs:276:36:276:45 | source(...) | main.rs:280:10:280:21 | o2b.unwrap() | $@ | main.rs:276:36:276:45 | source(...) | source(...) | | main.rs:289:10:289:11 | i1 | main.rs:284:35:284:44 | source(...) | main.rs:289:10:289:11 | i1 | $@ | main.rs:284:35:284:44 | source(...) | source(...) | | main.rs:298:10:298:22 | s1.expect(...) | main.rs:297:35:297:44 | source(...) | main.rs:298:10:298:22 | s1.expect(...) | $@ | main.rs:297:35:297:44 | source(...) | source(...) | | main.rs:303:10:303:26 | s2.expect_err(...) | main.rs:301:36:301:45 | source(...) | main.rs:303:10:303:26 | s2.expect_err(...) | $@ | main.rs:301:36:301:45 | source(...) | source(...) | diff --git a/rust/ql/test/library-tests/dataflow/local/main.rs b/rust/ql/test/library-tests/dataflow/local/main.rs index 4323f58c880..f8df7cff372 100644 --- a/rust/ql/test/library-tests/dataflow/local/main.rs +++ b/rust/ql/test/library-tests/dataflow/local/main.rs @@ -267,15 +267,15 @@ fn option_questionmark() -> Option { } fn option_ok() { - let r1 : Result = Ok(source(21)); - let o1a : Option = r1.ok(); - let o1b : Option = r1.err(); + let r1: Result = Ok(source(21)); + let o1a: Option = r1.ok(); + let o1b: Option = r1.err(); sink(o1a.unwrap()); // $ hasValueFlow=21 sink(o1b.unwrap()); - let r2 : Result = Err(source(22)); - let o2a : Option = r2.ok(); - let o2b : Option = r2.err(); + let r2: Result = Err(source(22)); + let o2a: Option = r2.ok(); + let o2b: Option = r2.err(); sink(o2a.unwrap()); sink(o2b.unwrap()); // $ hasValueFlow=22 } @@ -467,12 +467,12 @@ fn parse() { let a = source(90); let b = a.to_string(); let c = b.parse::().unwrap(); - let d : i64 = b.parse().unwrap(); + let d: i64 = b.parse().unwrap(); sink(a); // $ hasValueFlow=90 - sink_string(b); // $ hasTaintFlow=90 - sink(c); // $ hasTaintFlow=90 - sink(d); // $ hasTaintFlow=90 + sink_string(b); // $ MISSING: we are not currently able to resolve the `to_string` call above, which comes from `impl ToString for T` + sink(c); // $ MISSING: hasTaintFlow=90 - we are not currently able to resolve the `parse` call above + sink(d); // $ MISSING: hasTaintFlow=90 - we are not currently able to resolve the `parse` call above } fn iterators() { @@ -489,7 +489,7 @@ fn iterators() { sink(v); // $ MISSING: hasValueFlow=91 } - let vs2 : Vec<&i64> = vs.iter().collect(); + let vs2: Vec<&i64> = vs.iter().collect(); for &v in vs2 { sink(v); // $ MISSING: hasValueFlow=91 } diff --git a/rust/ql/test/library-tests/dataflow/models/models.ql b/rust/ql/test/library-tests/dataflow/models/models.ql index b17b45bba82..e621834bdec 100644 --- a/rust/ql/test/library-tests/dataflow/models/models.ql +++ b/rust/ql/test/library-tests/dataflow/models/models.ql @@ -20,7 +20,7 @@ query predicate invalidSpecComponent(SummarizedCallable sc, string s, string c) // not defined in `models.ext.yml`, in order to test that we can also define // models directly in QL private class SummarizedCallableIdentity extends SummarizedCallable::Range { - SummarizedCallableIdentity() { this = "repo::test::_::crate::identity" } + SummarizedCallableIdentity() { this.getName().getText() = "identity" } override predicate propagatesFlow( string input, string output, boolean preservesValue, string provenance diff --git a/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected index ff85ec81529..5667ceb627d 100644 --- a/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected @@ -4,19 +4,19 @@ multipleMethodCallTargets | test_futures_io.rs:35:26:35:63 | pinned.poll_read(...) | file://:0:0:0:0 | fn poll_read | | test_futures_io.rs:35:26:35:63 | pinned.poll_read(...) | file://:0:0:0:0 | fn poll_read | | test_futures_io.rs:35:26:35:63 | pinned.poll_read(...) | file://:0:0:0:0 | fn poll_read | -| test_futures_io.rs:61:22:61:50 | pinned.poll_fill_buf(...) | file://:0:0:0:0 | fn poll_fill_buf | -| test_futures_io.rs:61:22:61:50 | pinned.poll_fill_buf(...) | file://:0:0:0:0 | fn poll_fill_buf | -| test_futures_io.rs:68:23:68:67 | ... .poll_fill_buf(...) | file://:0:0:0:0 | fn poll_fill_buf | -| test_futures_io.rs:68:23:68:67 | ... .poll_fill_buf(...) | file://:0:0:0:0 | fn poll_fill_buf | -| test_futures_io.rs:92:26:92:63 | pinned.poll_read(...) | file://:0:0:0:0 | fn poll_read | -| test_futures_io.rs:92:26:92:63 | pinned.poll_read(...) | file://:0:0:0:0 | fn poll_read | -| test_futures_io.rs:92:26:92:63 | pinned.poll_read(...) | file://:0:0:0:0 | fn poll_read | -| test_futures_io.rs:115:22:115:50 | pinned.poll_fill_buf(...) | file://:0:0:0:0 | fn poll_fill_buf | -| test_futures_io.rs:115:22:115:50 | pinned.poll_fill_buf(...) | file://:0:0:0:0 | fn poll_fill_buf | -| web_frameworks.rs:88:14:88:23 | a.as_str() | file://:0:0:0:0 | fn as_str | -| web_frameworks.rs:88:14:88:23 | a.as_str() | file://:0:0:0:0 | fn as_str | -| web_frameworks.rs:89:14:89:25 | a.as_bytes() | file://:0:0:0:0 | fn as_bytes | -| web_frameworks.rs:89:14:89:25 | a.as_bytes() | file://:0:0:0:0 | fn as_bytes | +| test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) | file://:0:0:0:0 | fn poll_fill_buf | +| test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) | file://:0:0:0:0 | fn poll_fill_buf | +| test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) | file://:0:0:0:0 | fn poll_fill_buf | +| test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) | file://:0:0:0:0 | fn poll_fill_buf | +| test_futures_io.rs:93:26:93:63 | pinned.poll_read(...) | file://:0:0:0:0 | fn poll_read | +| test_futures_io.rs:93:26:93:63 | pinned.poll_read(...) | file://:0:0:0:0 | fn poll_read | +| test_futures_io.rs:93:26:93:63 | pinned.poll_read(...) | file://:0:0:0:0 | fn poll_read | +| test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) | file://:0:0:0:0 | fn poll_fill_buf | +| test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) | file://:0:0:0:0 | fn poll_fill_buf | +| web_frameworks.rs:101:14:101:23 | a.as_str() | file://:0:0:0:0 | fn as_str | +| web_frameworks.rs:101:14:101:23 | a.as_str() | file://:0:0:0:0 | fn as_str | +| web_frameworks.rs:102:14:102:25 | a.as_bytes() | file://:0:0:0:0 | fn as_bytes | +| web_frameworks.rs:102:14:102:25 | a.as_bytes() | file://:0:0:0:0 | fn as_bytes | multiplePathResolutions | test.rs:112:62:112:73 | ...::from | file://:0:0:0:0 | fn from | | test.rs:112:62:112:73 | ...::from | file://:0:0:0:0 | fn from | @@ -84,8 +84,8 @@ multiplePathResolutions | test_futures_io.rs:25:23:25:61 | ...::try_from | file://:0:0:0:0 | fn try_from | | test_futures_io.rs:25:23:25:61 | ...::try_from | file://:0:0:0:0 | fn try_from | | test_futures_io.rs:25:23:25:61 | ...::try_from | file://:0:0:0:0 | fn try_from | -| test_futures_io.rs:144:26:144:43 | ...::with_capacity | file://:0:0:0:0 | fn with_capacity | -| test_futures_io.rs:144:26:144:43 | ...::with_capacity | file://:0:0:0:0 | fn with_capacity | +| test_futures_io.rs:145:26:145:43 | ...::with_capacity | file://:0:0:0:0 | fn with_capacity | +| test_futures_io.rs:145:26:145:43 | ...::with_capacity | file://:0:0:0:0 | fn with_capacity | multipleCanonicalPaths | file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | | file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | diff --git a/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected index 1958d6a87bf..b5028f38f76 100644 --- a/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected +++ b/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected @@ -82,13 +82,13 @@ | test.rs:806:16:806:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | | test.rs:806:16:806:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | | test_futures_io.rs:19:15:19:32 | ...::connect | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:12:31:12:31 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:12:31:12:31 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:21:31:21:35 | TuplePat | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:21:31:21:36 | TuplePat | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:43:31:43:44 | MyStruct {...} | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:43:31:43:45 | MyStruct {...} | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:51:31:51:32 | ms | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:51:31:51:32 | ms | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:60:15:60:15 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:60:15:60:15 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:11:31:11:31 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:11:31:11:31 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:22:14:22:18 | TuplePat | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:22:14:22:19 | TuplePat | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:48:14:48:28 | MyStruct {...} | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:48:14:48:30 | MyStruct {...} | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:58:14:58:15 | ms | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:58:14:58:15 | ms | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:68:15:68:15 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:68:15:68:15 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | diff --git a/rust/ql/test/library-tests/dataflow/sources/test.rs b/rust/ql/test/library-tests/dataflow/sources/test.rs index 342efbba69e..845050c2fc9 100644 --- a/rust/ql/test/library-tests/dataflow/sources/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/test.rs @@ -308,28 +308,28 @@ async fn test_tokio_stdin() -> Result<(), Box> { let mut stdin = tokio::io::stdin(); // $ Alert[rust/summary/taint-sources] let mut buffer = [0u8; 100]; let _bytes = stdin.read(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow + sink(&buffer); // $ MISSING: hasTaintFlow -- we cannot resolve the `read` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` } { let mut stdin = tokio::io::stdin(); // $ Alert[rust/summary/taint-sources] let mut buffer = Vec::::new(); let _bytes = stdin.read_to_end(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow + sink(&buffer); // $ MISSING: hasTaintFlow -- we cannot resolve the `read_to_end` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` } { let mut stdin = tokio::io::stdin(); // $ Alert[rust/summary/taint-sources] let mut buffer = String::new(); let _bytes = stdin.read_to_string(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow + sink(&buffer); // $ MISSING: hasTaintFlow -- we cannot resolve the `read_to_string` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` } { let mut stdin = tokio::io::stdin(); // $ Alert[rust/summary/taint-sources] let mut buffer = [0; 100]; stdin.read_exact(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow + sink(&buffer); // $ MISSING: hasTaintFlow -- we cannot resolve the `read_exact` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` } { @@ -338,17 +338,17 @@ async fn test_tokio_stdin() -> Result<(), Box> { let v2 = stdin.read_i16().await?; let v3 = stdin.read_f32().await?; let v4 = stdin.read_i64_le().await?; - sink(v1); // $ hasTaintFlow - sink(v2); // $ hasTaintFlow - sink(v3); // $ hasTaintFlow - sink(v4); // $ hasTaintFlow + sink(v1); // $ MISSING: hasTaintFlow -- we cannot resolve the `read_u8` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + sink(v2); // $ MISSING: hasTaintFlow -- we cannot resolve the `read_i16` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + sink(v3); // $ MISSING: hasTaintFlow -- we cannot resolve the `read_f32` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + sink(v4); // $ MISSING: hasTaintFlow -- we cannot resolve the `read_i64_le` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` } { let mut stdin = tokio::io::stdin(); // $ Alert[rust/summary/taint-sources] let mut buffer = bytes::BytesMut::new(); stdin.read_buf(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow + sink(&buffer); // $ MISSING: hasTaintFlow -- we cannot resolve the `read_buf` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` } // --- async reading from stdin (BufReader) --- @@ -356,7 +356,7 @@ async fn test_tokio_stdin() -> Result<(), Box> { { let mut reader = tokio::io::BufReader::new(tokio::io::stdin()); // $ Alert[rust/summary/taint-sources] let data = reader.fill_buf().await?; - sink(&data); // $ hasTaintFlow + sink(&data); // $ MISSING: hasTaintFlow -- we cannot resolve the `fill_buf` call above, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` } { @@ -369,20 +369,20 @@ async fn test_tokio_stdin() -> Result<(), Box> { let mut buffer = String::new(); let mut reader = tokio::io::BufReader::new(tokio::io::stdin()); // $ Alert[rust/summary/taint-sources] reader.read_line(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow + sink(&buffer); // $ MISSING: hasTaintFlow -- we cannot resolve the `read_line` call above, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` } { let mut buffer = Vec::::new(); let mut reader = tokio::io::BufReader::new(tokio::io::stdin()); // $ Alert[rust/summary/taint-sources] reader.read_until(b',', &mut buffer).await?; - sink(&buffer); // $ hasTaintFlow - sink(buffer[0]); // $ hasTaintFlow + sink(&buffer); // $ MISSING: hasTaintFlow -- we cannot resolve the `read_until` call above, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` + sink(buffer[0]); // $ MISSING: hasTaintFlow -- we cannot resolve the `read_until` call above, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` } { let mut reader_split = tokio::io::BufReader::new(tokio::io::stdin()).split(b','); // $ Alert[rust/summary/taint-sources] - sink(reader_split.next_segment().await?.unwrap()); // $ hasTaintFlow + sink(reader_split.next_segment().await?.unwrap()); // $ MISSING: hasTaintFlow -- we cannot resolve the `split` call above, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` while let Some(chunk) = reader_split.next_segment().await? { sink(chunk); // $ MISSING: hasTaintFlow } @@ -391,7 +391,7 @@ async fn test_tokio_stdin() -> Result<(), Box> { { let reader = tokio::io::BufReader::new(tokio::io::stdin()); // $ Alert[rust/summary/taint-sources] let mut lines = reader.lines(); - sink(lines.next_line().await?.unwrap()); // $ hasTaintFlow + sink(lines.next_line().await?.unwrap()); // $ MISSING: hasTaintFlow -- we cannot resolve the `lines` call above, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` while let Some(line) = lines.next_line().await? { sink(line); // $ MISSING: hasTaintFlow } @@ -529,25 +529,25 @@ async fn test_tokio_file() -> std::io::Result<()> { { let mut buffer = [0u8; 100]; let _bytes = file.read(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow="file.txt" + sink(&buffer); // $ MISSING: hasTaintFlow="file.txt" -- we cannot resolve the `read` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` } { let mut buffer = Vec::::new(); let _bytes = file.read_to_end(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow="file.txt" + sink(&buffer); // $ MISSING: hasTaintFlow="file.txt" -- we cannot resolve the `read_to_end` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` } { let mut buffer = String::new(); let _bytes = file.read_to_string(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow="file.txt" + sink(&buffer); // $ MISSING: hasTaintFlow="file.txt" -- we cannot resolve the `read_to_string` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` } { let mut buffer = [0; 100]; file.read_exact(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow="file.txt" + sink(&buffer); // $ MISSING: hasTaintFlow="file.txt" -- we cannot resolve the `read_exact` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` } { @@ -555,16 +555,16 @@ async fn test_tokio_file() -> std::io::Result<()> { let v2 = file.read_i16().await?; let v3 = file.read_f32().await?; let v4 = file.read_i64_le().await?; - sink(v1); // $ hasTaintFlow="file.txt" - sink(v2); // $ hasTaintFlow="file.txt" - sink(v3); // $ hasTaintFlow="file.txt" - sink(v4); // $ hasTaintFlow="file.txt" + sink(v1); // $ MISSING: hasTaintFlow="file.txt" -- we cannot resolve the `read_u8` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + sink(v2); // $ MISSING: hasTaintFlow="file.txt" -- we cannot resolve the `read_i16` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + sink(v3); // $ MISSING: hasTaintFlow="file.txt" -- we cannot resolve the `read_f32` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + sink(v4); // $ MISSING: hasTaintFlow="file.txt" -- we cannot resolve the `read_i64_le` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` } { let mut buffer = bytes::BytesMut::new(); file.read_buf(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow="file.txt" + sink(&buffer); // $ MISSING: hasTaintFlow="file.txt" -- we cannot resolve the `read_buf` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` } // --- misc operations --- @@ -575,7 +575,7 @@ async fn test_tokio_file() -> std::io::Result<()> { let file2 = tokio::fs::File::open("another_file.txt").await?; // $ Alert[rust/summary/taint-sources] let mut reader = file1.chain(file2); reader.read_to_string(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow="file.txt" hasTaintFlow="another_file.txt" + sink(&buffer); // $ MISSING: hasTaintFlow="file.txt" hasTaintFlow="another_file.txt" -- we cannot resolve the `chain` and `read_to_string` calls above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` } { @@ -583,7 +583,7 @@ async fn test_tokio_file() -> std::io::Result<()> { let file1 = tokio::fs::File::open("file.txt").await?; // $ Alert[rust/summary/taint-sources] let mut reader = file1.take(100); reader.read_to_string(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow="file.txt" + sink(&buffer); // $ MISSING: hasTaintFlow="file.txt" -- we cannot resolve the `take` and `read_to_string` calls above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` } Ok(()) @@ -687,8 +687,8 @@ async fn test_tokio_tcpstream(case: i64) -> std::io::Result<()> { sink(buffer1[0]); // $ hasTaintFlow=address println!("buffer2 = {:?}", buffer2); - sink(&buffer2); // $ hasTaintFlow=address - sink(buffer2[0]); // $ hasTaintFlow=address + sink(&buffer2); // $ MISSING: hasTaintFlow=address -- we cannot resolve the `read` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + sink(buffer2[0]); // $ MISSING: hasTaintFlow=address -- we cannot resolve the `read` call above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` let buffer_string = String::from_utf8_lossy(&buffer2[..n2]); println!("string = {}", buffer_string); @@ -777,25 +777,25 @@ fn test_rustls() -> std::io::Result<()> { let server_name = rustls::pki_types::ServerName::try_from("www.example.com").unwrap(); let config_arc = std::sync::Arc::new(config); let mut client = rustls::ClientConnection::new(config_arc, server_name).unwrap(); // $ Alert[rust/summary/taint-sources] - let mut reader = client.reader(); - sink(&reader); // $ hasTaintFlow=config_arc + let mut reader = client.reader(); // We cannot resolve the `reader` call because it comes from `Deref`: https://docs.rs/rustls/latest/rustls/client/struct.ClientConnection.html#deref-methods-ConnectionCommon%3CClientConnectionData%3E + sink(&reader); // $ MISSING: hasTaintFlow=config_arc { let mut buffer = [0u8; 100]; let _bytes = reader.read(&mut buffer)?; - sink(&buffer); // $ hasTaintFlow=config_arc + sink(&buffer); // $ MISSING: hasTaintFlow=config_arc } { let mut buffer = Vec::::new(); let _bytes = reader.read_to_end(&mut buffer)?; - sink(&buffer); // $ hasTaintFlow=config_arc + sink(&buffer); // $ MISSING: hasTaintFlow=config_arc } { let mut buffer = String::new(); let _bytes = reader.read_to_string(&mut buffer)?; - sink(&buffer); // $ hasTaintFlow=config_arc + sink(&buffer); // $ MISSING: hasTaintFlow=config_arc } Ok(()) diff --git a/rust/ql/test/library-tests/dataflow/sources/test_futures_io.rs b/rust/ql/test/library-tests/dataflow/sources/test_futures_io.rs index ad03d33c840..67dce4b21cc 100644 --- a/rust/ql/test/library-tests/dataflow/sources/test_futures_io.rs +++ b/rust/ql/test/library-tests/dataflow/sources/test_futures_io.rs @@ -1,18 +1,18 @@ -fn sink(_: T) { } +fn sink(_: T) {} // --- tests --- -use std::pin::Pin; -use std::task::{Context, Poll}; -use std::io; -use futures::io::AsyncRead; -use futures::io::AsyncReadExt; +use async_std::net::TcpStream; +use async_std::sync::Arc; use futures::io::AsyncBufRead; use futures::io::AsyncBufReadExt; +use futures::io::AsyncRead; +use futures::io::AsyncReadExt; use futures::StreamExt; -use futures_rustls::{TlsConnector}; -use async_std::sync::Arc; -use async_std::net::TcpStream; +use futures_rustls::TlsConnector; +use std::io; +use std::pin::Pin; +use std::task::{Context, Poll}; async fn test_futures_rustls_futures_io() -> io::Result<()> { let url = "www.example.com:443"; @@ -32,10 +32,10 @@ async fn test_futures_rustls_futures_io() -> io::Result<()> { let mut pinned = Pin::new(&mut reader); sink(&pinned); // $ hasTaintFlow=url let mut cx = Context::from_waker(futures::task::noop_waker_ref()); - let bytes_read = pinned.poll_read(&mut cx, &mut buffer); + let bytes_read = pinned.poll_read(&mut cx, &mut buffer); // we cannot correctly resolve this call, since it relies on `Deref` if let Poll::Ready(Ok(n)) = bytes_read { - sink(&buffer); // $ hasTaintFlow=url - sink(&buffer[..n]); // $ hasTaintFlow=url + sink(&buffer); // $ MISSING: hasTaintFlow=url + sink(&buffer[..n]); // $ MISSING: hasTaintFlow=url } } @@ -46,8 +46,9 @@ async fn test_futures_rustls_futures_io() -> io::Result<()> { sink(&buffer1[..bytes_read1]); // $ hasTaintFlow=url let mut buffer2 = [0u8; 64]; - let bytes_read2 = reader.read(&mut buffer2).await?; - sink(&buffer2[..bytes_read2]); // $ hasTaintFlow=url + let bytes_read2 = reader.read(&mut buffer2).await?; // we cannot resolve the `read` call, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + + sink(&buffer2[..bytes_read2]); // $ MISSING: hasTaintFlow=url } let mut reader2 = futures::io::BufReader::new(reader); @@ -79,8 +80,8 @@ async fn test_futures_rustls_futures_io() -> io::Result<()> { { // using the `AsyncBufReadExt::fill_buf` extension method (higher-level) - let buffer = reader2.fill_buf().await?; - sink(buffer); // $ hasTaintFlow=url + let buffer = reader2.fill_buf().await?; // we cannot resolve the `fill_buf` call, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` + sink(buffer); // $ MISSING: hasTaintFlow=url } { @@ -103,8 +104,8 @@ async fn test_futures_rustls_futures_io() -> io::Result<()> { sink(&buffer1[..bytes_read1]); // $ hasTaintFlow=url let mut buffer2 = [0u8; 64]; - let bytes_read2 = reader2.read(&mut buffer2).await?; - sink(&buffer2[..bytes_read2]); // $ hasTaintFlow=url + let bytes_read2 = reader2.read(&mut buffer2).await?; // we cannot resolve the `read` call, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + sink(&buffer2[..bytes_read2]); // $ MISSING: hasTaintFlow=url } { @@ -121,35 +122,35 @@ async fn test_futures_rustls_futures_io() -> io::Result<()> { { // using the `AsyncBufReadExt::fill_buf` extension method (higher-level) - let buffer = reader2.fill_buf().await?; - sink(buffer); // $ hasTaintFlow=url + let buffer = reader2.fill_buf().await?; // we cannot resolve the `fill_buf` call, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` + sink(buffer); // $ MISSING: hasTaintFlow=url } { // using the `AsyncBufReadExt::read_until` extension method let mut line = Vec::new(); - let _bytes_read = reader2.read_until(b'\n', &mut line).await?; - sink(&line); // $ hasTaintFlow=url + let _bytes_read = reader2.read_until(b'\n', &mut line).await?; // we cannot resolve the `read_until` call, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` + sink(&line); // $ MISSING: hasTaintFlow=url } { // using the `AsyncBufReadExt::read_line` extension method let mut line = String::new(); - let _bytes_read = reader2.read_line(&mut line).await?; - sink(&line); // $ hasTaintFlow=url + let _bytes_read = reader2.read_line(&mut line).await?; // we cannot resolve the `read_line` call, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` + sink(&line); // $ MISSING: hasTaintFlow=url } { // using the `AsyncBufReadExt::read_to_end` extension method let mut buffer = Vec::with_capacity(1024); - let _bytes_read = reader2.read_to_end(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow=url + let _bytes_read = reader2.read_to_end(&mut buffer).await?; // we cannot resolve the `read` call, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + sink(&buffer); // $ MISSING: hasTaintFlow=url } { // using the `AsyncBufReadExt::lines` extension method - let mut lines_stream = reader2.lines(); - sink(lines_stream.next().await.unwrap()); // $ hasTaintFlow=url + let mut lines_stream = reader2.lines(); // we cannot resolve the `lines` call, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` + sink(lines_stream.next().await.unwrap()); // $ MISSING: hasTaintFlow=url while let Some(line) = lines_stream.next().await { sink(line.unwrap()); // $ MISSING: hasTaintFlow } diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks.rs b/rust/ql/test/library-tests/dataflow/sources/web_frameworks.rs index f1bf3ab6b0b..4168d1e3f6a 100644 --- a/rust/ql/test/library-tests/dataflow/sources/web_frameworks.rs +++ b/rust/ql/test/library-tests/dataflow/sources/web_frameworks.rs @@ -1,24 +1,26 @@ - -fn sink(_: T) { } +fn sink(_: T) {} // --- tests --- mod poem_test { - use poem::{get, handler, web::Path, web::Query, Route, Server, listener::TcpListener}; - use serde::Deserialize; use super::sink; + use poem::{get, handler, listener::TcpListener, web::Path, web::Query, Route, Server}; + use serde::Deserialize; #[handler] - fn my_poem_handler_1(Path(a): Path) -> String { // $ Alert[rust/summary/taint-sources] - sink(a.as_str()); // $ hasTaintFlow - sink(a.as_bytes()); // $ hasTaintFlow + fn my_poem_handler_1(Path(a): Path, // $ Alert[rust/summary/taint-sources] + ) -> String { + sink(a.as_str()); // $ MISSING: hasTaintFlow -- no type inference for patterns + sink(a.as_bytes()); // $ MISSING: hasTaintFlow -- no type inference for patterns sink(a); // $ hasTaintFlow "".to_string() } #[handler] - fn my_poem_handler_2(Path((a, b)): Path<(String, String)>) -> String { // $ Alert[rust/summary/taint-sources] + fn my_poem_handler_2( + Path((a, b)): Path<(String, String)>, // $ Alert[rust/summary/taint-sources] + ) -> String { sink(a); // $ MISSING: hasTaintFlow sink(b); // $ MISSING: hasTaintFlow @@ -26,7 +28,9 @@ mod poem_test { } #[handler] - fn my_poem_handler_3(path: Path<(String, String)>) -> String { // $ MISSING: Alert[rust/summary/taint-sources] + fn my_poem_handler_3( + path: Path<(String, String)>, // $ MISSING: Alert[rust/summary/taint-sources] + ) -> String { sink(&path.0); // $ MISSING: hasTaintFlow sink(&path.1); // $ MISSING: hasTaintFlow @@ -40,7 +44,9 @@ mod poem_test { } #[handler] - fn my_poem_handler_4(Path(MyStruct {a, b}): Path) -> String { // $ Alert[rust/summary/taint-sources] + fn my_poem_handler_4( + Path(MyStruct { a, b }): Path, // $ Alert[rust/summary/taint-sources] + ) -> String { sink(a); // $ MISSING: hasTaintFlow sink(b); // $ MISSING: hasTaintFlow @@ -48,7 +54,9 @@ mod poem_test { } #[handler] - fn my_poem_handler_5(Path(ms): Path) -> String { // $ Alert[rust/summary/taint-sources] + fn my_poem_handler_5( + Path(ms): Path, // $ Alert[rust/summary/taint-sources] + ) -> String { sink(ms.a); // $ MISSING: hasTaintFlow sink(ms.b); // $ MISSING: hasTaintFlow @@ -73,17 +81,22 @@ mod poem_test { .at("/5/:a/:b", get(my_poem_handler_5)) .at("/6/:a/", get(my_poem_handler_6)); - Server::new(TcpListener::bind("0.0.0.0:3000")).run(app).await.unwrap(); + Server::new(TcpListener::bind("0.0.0.0:3000")) + .run(app) + .await + .unwrap(); // ... } } mod actix_test { - use actix_web::{get, web, App}; use super::sink; + use actix_web::{get, web, App}; - async fn my_actix_handler_1(path: web::Path) -> String { // $ MISSING: Alert[rust/summary/taint-sources] + async fn my_actix_handler_1( + path: web::Path, // $ MISSING: Alert[rust/summary/taint-sources] + ) -> String { let a = path.into_inner(); sink(a.as_str()); // $ MISSING: hasTaintFlow sink(a.as_bytes()); // $ MISSING: hasTaintFlow @@ -92,7 +105,9 @@ mod actix_test { "".to_string() } - async fn my_actix_handler_2(path: web::Path<(String, String)>) -> String { // $ MISSING: Alert[rust/summary/taint-sources] + async fn my_actix_handler_2( + path: web::Path<(String, String)>, // $ MISSING: Alert[rust/summary/taint-sources] + ) -> String { let (a, b) = path.into_inner(); sink(a); // $ MISSING: hasTaintFlow @@ -101,14 +116,18 @@ mod actix_test { "".to_string() } - async fn my_actix_handler_3(web::Query(a): web::Query) -> String { // $ MISSING: Alert[rust/summary/taint-sources] + async fn my_actix_handler_3( + web::Query(a): web::Query, // $ MISSING: Alert[rust/summary/taint-sources] + ) -> String { sink(a); // $ MISSING: hasTaintFlow "".to_string() } #[get("/4/{a}")] - async fn my_actix_handler_4(path: web::Path) -> String { // $ MISSING: Alert[rust/summary/taint-sources] + async fn my_actix_handler_4( + path: web::Path, // $ MISSING: Alert[rust/summary/taint-sources] + ) -> String { let a = path.into_inner(); sink(a); // $ MISSING: hasTaintFlow @@ -127,13 +146,15 @@ mod actix_test { } mod axum_test { - use axum::Router; - use axum::routing::get; - use axum::extract::{Path, Query, Request, Json}; - use std::collections::HashMap; use super::sink; + use axum::extract::{Json, Path, Query, Request}; + use axum::routing::get; + use axum::Router; + use std::collections::HashMap; - async fn my_axum_handler_1(Path(a): Path) -> &'static str { // $ MISSING: Alert[rust/summary/taint-sources] + async fn my_axum_handler_1( + Path(a): Path, // $ MISSING: Alert[rust/summary/taint-sources] + ) -> &'static str { sink(a.as_str()); // $ MISSING: hasTaintFlow sink(a.as_bytes()); // $ MISSING: hasTaintFlow sink(a); // $ MISSING: hasTaintFlow @@ -141,14 +162,18 @@ mod axum_test { "" } - async fn my_axum_handler_2(Path((a, b)): Path<(String, String)>) -> &'static str { // $ MISSING: Alert[rust/summary/taint-sources] + async fn my_axum_handler_2( + Path((a, b)): Path<(String, String)>, // $ MISSING: Alert[rust/summary/taint-sources] + ) -> &'static str { sink(a); // $ MISSING: hasTaintFlow sink(b); // $ MISSING: hasTaintFlow "" } - async fn my_axum_handler_3(Query(params): Query>) -> &'static str { // $ MISSING: Alert[rust/summary/taint-sources] + async fn my_axum_handler_3( + Query(params): Query>, // $ MISSING: Alert[rust/summary/taint-sources] + ) -> &'static str { for (key, value) in params { sink(key); // $ MISSING: hasTaintFlow sink(value); // $ MISSING: hasTaintFlow @@ -157,7 +182,9 @@ mod axum_test { "" } - async fn my_axum_handler_4(request: Request) -> &'static str { // $ MISSING: Alert[rust/summary/taint-sources] + async fn my_axum_handler_4( + request: Request, // $ MISSING: Alert[rust/summary/taint-sources] + ) -> &'static str { sink(request.body()); // $ MISSING: hasTaintFlow request.headers().get("header").unwrap(); // $ MISSING: hasTaintFlow sink(request.into_body()); // $ MISSING: hasTaintFlow @@ -165,20 +192,26 @@ mod axum_test { "" } - async fn my_axum_handler_5(Json(payload): Json) -> &'static str { // $ MISSING: Alert[rust/summary/taint-sources] + async fn my_axum_handler_5( + Json(payload): Json, // $ MISSING: Alert[rust/summary/taint-sources] + ) -> &'static str { sink(payload.as_str()); // $ MISSING: hasTaintFlow sink(payload); // $ MISSING: hasTaintFlow "" } - async fn my_axum_handler_6(body: String) -> &'static str { // $ MISSING: Alert[rust/summary/taint-sources] + async fn my_axum_handler_6( + body: String, // $ MISSING: Alert[rust/summary/taint-sources] + ) -> &'static str { sink(body); // $ MISSING: hasTaintFlow "" } - async fn my_axum_handler_7(body: String) -> &'static str { // $ MISSING: Alert[rust/summary/taint-sources] + async fn my_axum_handler_7( + body: String, // $ MISSING: Alert[rust/summary/taint-sources] + ) -> &'static str { sink(body); // $ MISSING: hasTaintFlow "" diff --git a/rust/ql/test/library-tests/dataflow/strings/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/strings/CONSISTENCY/PathResolutionConsistency.expected index 66f86daf985..f08f15c3aef 100644 --- a/rust/ql/test/library-tests/dataflow/strings/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/dataflow/strings/CONSISTENCY/PathResolutionConsistency.expected @@ -2,9 +2,9 @@ multipleMethodCallTargets | main.rs:64:16:64:25 | s.as_str() | file://:0:0:0:0 | fn as_str | | main.rs:64:16:64:25 | s.as_str() | file://:0:0:0:0 | fn as_str | multiplePathResolutions -| main.rs:52:11:52:22 | ...::from | file://:0:0:0:0 | fn from | -| main.rs:52:11:52:22 | ...::from | file://:0:0:0:0 | fn from | -| main.rs:52:11:52:22 | ...::from | file://:0:0:0:0 | fn from | -| main.rs:52:11:52:22 | ...::from | file://:0:0:0:0 | fn from | -| main.rs:52:11:52:22 | ...::from | file://:0:0:0:0 | fn from | -| main.rs:52:11:52:22 | ...::from | file://:0:0:0:0 | fn from | +| main.rs:52:14:52:25 | ...::from | file://:0:0:0:0 | fn from | +| main.rs:52:14:52:25 | ...::from | file://:0:0:0:0 | fn from | +| main.rs:52:14:52:25 | ...::from | file://:0:0:0:0 | fn from | +| main.rs:52:14:52:25 | ...::from | file://:0:0:0:0 | fn from | +| main.rs:52:14:52:25 | ...::from | file://:0:0:0:0 | fn from | +| main.rs:52:14:52:25 | ...::from | file://:0:0:0:0 | fn from | diff --git a/rust/ql/test/library-tests/dataflow/strings/inline-taint-flow.expected b/rust/ql/test/library-tests/dataflow/strings/inline-taint-flow.expected index 5c56cf594e7..24306107de2 100644 --- a/rust/ql/test/library-tests/dataflow/strings/inline-taint-flow.expected +++ b/rust/ql/test/library-tests/dataflow/strings/inline-taint-flow.expected @@ -1,9 +1,8 @@ models -| 1 | Summary: lang:alloc; <_ as crate::string::ToString>::to_string; Argument[self]; ReturnValue; taint | -| 2 | Summary: lang:alloc; ::from; Argument[0]; ReturnValue; value | -| 3 | Summary: lang:alloc; ::as_str; Argument[self]; ReturnValue; value | -| 4 | Summary: lang:alloc; crate::fmt::format; Argument[0]; ReturnValue; taint | -| 5 | Summary: lang:core; crate::hint::must_use; Argument[0]; ReturnValue; value | +| 1 | Summary: lang:alloc; ::from; Argument[0]; ReturnValue; value | +| 2 | Summary: lang:alloc; ::as_str; Argument[self]; ReturnValue; value | +| 3 | Summary: lang:alloc; crate::fmt::format; Argument[0]; ReturnValue; taint | +| 4 | Summary: lang:core; crate::hint::must_use; Argument[0]; ReturnValue; value | edges | main.rs:26:9:26:9 | s | main.rs:27:19:27:25 | s[...] | provenance | | | main.rs:26:13:26:22 | source(...) | main.rs:26:9:26:9 | s | provenance | | @@ -13,46 +12,42 @@ edges | main.rs:32:9:32:10 | s1 | main.rs:35:9:35:10 | s4 | provenance | | | main.rs:32:14:32:23 | source(...) | main.rs:32:9:32:10 | s1 | provenance | | | main.rs:35:9:35:10 | s4 | main.rs:38:10:38:11 | s4 | provenance | | -| main.rs:51:6:51:7 | s1 | main.rs:52:24:52:25 | s1 | provenance | | -| main.rs:51:11:51:26 | source_slice(...) | main.rs:51:6:51:7 | s1 | provenance | | -| main.rs:52:6:52:7 | s2 | main.rs:53:7:53:8 | s2 | provenance | | -| main.rs:52:11:52:26 | ...::from(...) | main.rs:52:6:52:7 | s2 | provenance | | -| main.rs:52:24:52:25 | s1 | main.rs:52:11:52:26 | ...::from(...) | provenance | MaD:2 | -| main.rs:57:6:57:7 | s1 | main.rs:58:11:58:24 | s1.to_string() | provenance | MaD:1 | -| main.rs:57:11:57:26 | source_slice(...) | main.rs:57:6:57:7 | s1 | provenance | | -| main.rs:58:6:58:7 | s2 | main.rs:59:7:59:8 | s2 | provenance | | -| main.rs:58:11:58:24 | s1.to_string() | main.rs:58:6:58:7 | s2 | provenance | | +| main.rs:51:9:51:10 | s1 | main.rs:52:27:52:28 | s1 | provenance | | +| main.rs:51:14:51:29 | source_slice(...) | main.rs:51:9:51:10 | s1 | provenance | | +| main.rs:52:9:52:10 | s2 | main.rs:53:10:53:11 | s2 | provenance | | +| main.rs:52:14:52:29 | ...::from(...) | main.rs:52:9:52:10 | s2 | provenance | | +| main.rs:52:27:52:28 | s1 | main.rs:52:14:52:29 | ...::from(...) | provenance | MaD:1 | | main.rs:63:9:63:9 | s | main.rs:64:16:64:16 | s | provenance | | -| main.rs:63:9:63:9 | s | main.rs:64:16:64:25 | s.as_str() | provenance | MaD:3 | +| main.rs:63:9:63:9 | s | main.rs:64:16:64:25 | s.as_str() | provenance | MaD:2 | | main.rs:63:13:63:22 | source(...) | main.rs:63:9:63:9 | s | provenance | | -| main.rs:64:16:64:16 | s | main.rs:64:16:64:25 | s.as_str() | provenance | MaD:3 | +| main.rs:64:16:64:16 | s | main.rs:64:16:64:25 | s.as_str() | provenance | MaD:2 | | main.rs:68:9:68:9 | s | main.rs:70:34:70:61 | MacroExpr | provenance | | | main.rs:68:9:68:9 | s | main.rs:73:34:73:59 | MacroExpr | provenance | | | main.rs:68:13:68:22 | source(...) | main.rs:68:9:68:9 | s | provenance | | | main.rs:70:9:70:18 | formatted1 | main.rs:71:10:71:19 | formatted1 | provenance | | | main.rs:70:22:70:62 | ...::format(...) | main.rs:70:9:70:18 | formatted1 | provenance | | -| main.rs:70:34:70:61 | MacroExpr | main.rs:70:22:70:62 | ...::format(...) | provenance | MaD:4 | +| main.rs:70:34:70:61 | MacroExpr | main.rs:70:22:70:62 | ...::format(...) | provenance | MaD:3 | | main.rs:73:9:73:18 | formatted2 | main.rs:74:10:74:19 | formatted2 | provenance | | | main.rs:73:22:73:60 | ...::format(...) | main.rs:73:9:73:18 | formatted2 | provenance | | -| main.rs:73:34:73:59 | MacroExpr | main.rs:73:22:73:60 | ...::format(...) | provenance | MaD:4 | +| main.rs:73:34:73:59 | MacroExpr | main.rs:73:22:73:60 | ...::format(...) | provenance | MaD:3 | | main.rs:76:9:76:13 | width | main.rs:77:34:77:74 | MacroExpr | provenance | | | main.rs:76:17:76:32 | source_usize(...) | main.rs:76:9:76:13 | width | provenance | | | main.rs:77:9:77:18 | formatted3 | main.rs:78:10:78:19 | formatted3 | provenance | | | main.rs:77:22:77:75 | ...::format(...) | main.rs:77:9:77:18 | formatted3 | provenance | | -| main.rs:77:34:77:74 | MacroExpr | main.rs:77:22:77:75 | ...::format(...) | provenance | MaD:4 | +| main.rs:77:34:77:74 | MacroExpr | main.rs:77:22:77:75 | ...::format(...) | provenance | MaD:3 | | main.rs:82:9:82:10 | s1 | main.rs:86:18:86:25 | MacroExpr | provenance | | | main.rs:82:9:82:10 | s1 | main.rs:87:18:87:32 | MacroExpr | provenance | | | main.rs:82:14:82:23 | source(...) | main.rs:82:9:82:10 | s1 | provenance | | | main.rs:86:10:86:26 | res | main.rs:86:18:86:25 | { ... } | provenance | | | main.rs:86:18:86:25 | ...::format(...) | main.rs:86:10:86:26 | res | provenance | | | main.rs:86:18:86:25 | ...::must_use(...) | main.rs:86:10:86:26 | MacroExpr | provenance | | -| main.rs:86:18:86:25 | MacroExpr | main.rs:86:18:86:25 | ...::format(...) | provenance | MaD:4 | -| main.rs:86:18:86:25 | { ... } | main.rs:86:18:86:25 | ...::must_use(...) | provenance | MaD:5 | +| main.rs:86:18:86:25 | MacroExpr | main.rs:86:18:86:25 | ...::format(...) | provenance | MaD:3 | +| main.rs:86:18:86:25 | { ... } | main.rs:86:18:86:25 | ...::must_use(...) | provenance | MaD:4 | | main.rs:87:10:87:33 | res | main.rs:87:18:87:32 | { ... } | provenance | | | main.rs:87:18:87:32 | ...::format(...) | main.rs:87:10:87:33 | res | provenance | | | main.rs:87:18:87:32 | ...::must_use(...) | main.rs:87:10:87:33 | MacroExpr | provenance | | -| main.rs:87:18:87:32 | MacroExpr | main.rs:87:18:87:32 | ...::format(...) | provenance | MaD:4 | -| main.rs:87:18:87:32 | { ... } | main.rs:87:18:87:32 | ...::must_use(...) | provenance | MaD:5 | +| main.rs:87:18:87:32 | MacroExpr | main.rs:87:18:87:32 | ...::format(...) | provenance | MaD:3 | +| main.rs:87:18:87:32 | { ... } | main.rs:87:18:87:32 | ...::must_use(...) | provenance | MaD:4 | nodes | main.rs:26:9:26:9 | s | semmle.label | s | | main.rs:26:13:26:22 | source(...) | semmle.label | source(...) | @@ -64,17 +59,12 @@ nodes | main.rs:32:14:32:23 | source(...) | semmle.label | source(...) | | main.rs:35:9:35:10 | s4 | semmle.label | s4 | | main.rs:38:10:38:11 | s4 | semmle.label | s4 | -| main.rs:51:6:51:7 | s1 | semmle.label | s1 | -| main.rs:51:11:51:26 | source_slice(...) | semmle.label | source_slice(...) | -| main.rs:52:6:52:7 | s2 | semmle.label | s2 | -| main.rs:52:11:52:26 | ...::from(...) | semmle.label | ...::from(...) | -| main.rs:52:24:52:25 | s1 | semmle.label | s1 | -| main.rs:53:7:53:8 | s2 | semmle.label | s2 | -| main.rs:57:6:57:7 | s1 | semmle.label | s1 | -| main.rs:57:11:57:26 | source_slice(...) | semmle.label | source_slice(...) | -| main.rs:58:6:58:7 | s2 | semmle.label | s2 | -| main.rs:58:11:58:24 | s1.to_string() | semmle.label | s1.to_string() | -| main.rs:59:7:59:8 | s2 | semmle.label | s2 | +| main.rs:51:9:51:10 | s1 | semmle.label | s1 | +| main.rs:51:14:51:29 | source_slice(...) | semmle.label | source_slice(...) | +| main.rs:52:9:52:10 | s2 | semmle.label | s2 | +| main.rs:52:14:52:29 | ...::from(...) | semmle.label | ...::from(...) | +| main.rs:52:27:52:28 | s1 | semmle.label | s1 | +| main.rs:53:10:53:11 | s2 | semmle.label | s2 | | main.rs:63:9:63:9 | s | semmle.label | s | | main.rs:63:13:63:22 | source(...) | semmle.label | source(...) | | main.rs:64:16:64:16 | s | semmle.label | s | @@ -114,8 +104,7 @@ testFailures #select | main.rs:28:16:28:21 | sliced | main.rs:26:13:26:22 | source(...) | main.rs:28:16:28:21 | sliced | $@ | main.rs:26:13:26:22 | source(...) | source(...) | | main.rs:38:10:38:11 | s4 | main.rs:32:14:32:23 | source(...) | main.rs:38:10:38:11 | s4 | $@ | main.rs:32:14:32:23 | source(...) | source(...) | -| main.rs:53:7:53:8 | s2 | main.rs:51:11:51:26 | source_slice(...) | main.rs:53:7:53:8 | s2 | $@ | main.rs:51:11:51:26 | source_slice(...) | source_slice(...) | -| main.rs:59:7:59:8 | s2 | main.rs:57:11:57:26 | source_slice(...) | main.rs:59:7:59:8 | s2 | $@ | main.rs:57:11:57:26 | source_slice(...) | source_slice(...) | +| main.rs:53:10:53:11 | s2 | main.rs:51:14:51:29 | source_slice(...) | main.rs:53:10:53:11 | s2 | $@ | main.rs:51:14:51:29 | source_slice(...) | source_slice(...) | | main.rs:64:16:64:25 | s.as_str() | main.rs:63:13:63:22 | source(...) | main.rs:64:16:64:25 | s.as_str() | $@ | main.rs:63:13:63:22 | source(...) | source(...) | | main.rs:71:10:71:19 | formatted1 | main.rs:68:13:68:22 | source(...) | main.rs:71:10:71:19 | formatted1 | $@ | main.rs:68:13:68:22 | source(...) | source(...) | | main.rs:74:10:74:19 | formatted2 | main.rs:68:13:68:22 | source(...) | main.rs:74:10:74:19 | formatted2 | $@ | main.rs:68:13:68:22 | source(...) | source(...) | diff --git a/rust/ql/test/library-tests/dataflow/strings/main.rs b/rust/ql/test/library-tests/dataflow/strings/main.rs index c04934de051..c2e1e02778e 100644 --- a/rust/ql/test/library-tests/dataflow/strings/main.rs +++ b/rust/ql/test/library-tests/dataflow/strings/main.rs @@ -48,15 +48,15 @@ fn string_add_reference() { } fn string_from() { - let s1 = source_slice(36); - let s2 = String::from(s1); - sink(s2); // $ hasValueFlow=36 + let s1 = source_slice(36); + let s2 = String::from(s1); + sink(s2); // $ hasValueFlow=36 } fn string_to_string() { - let s1 = source_slice(22); - let s2 = s1.to_string(); - sink(s2); // $ hasTaintFlow=22 + let s1 = source_slice(22); + let s2 = s1.to_string(); + sink(s2); // $ MISSING: hasTaintFlow=22 - we are not currently able to resolve the `to_string` call above, which comes from `impl ToString for T` } fn as_str() { diff --git a/rust/ql/test/library-tests/sensitivedata/test.rs b/rust/ql/test/library-tests/sensitivedata/test.rs index f74de9f5bf8..a34fbb1dda9 100644 --- a/rust/ql/test/library-tests/sensitivedata/test.rs +++ b/rust/ql/test/library-tests/sensitivedata/test.rs @@ -279,7 +279,7 @@ fn test_private_info( sink(&info.medical_notes); // $ sensitive=private sink(info.medical_notes[0].as_str()); // $ sensitive=private for n in info.medical_notes.iter() { - sink(n.as_str()); // $ sensitive=private + sink(n.as_str()); // $ MISSING: sensitive=private } sink(info.confidentialMessage.as_str()); // $ MISSING: sensitive=private sink(info.confidentialMessage.to_lowercase()); // $ MISSING: sensitive=private diff --git a/rust/ql/test/query-tests/security/CWE-022/TaintedPath.expected b/rust/ql/test/query-tests/security/CWE-022/TaintedPath.expected index 7d8bb23d4c5..9821637a3a0 100644 --- a/rust/ql/test/query-tests/security/CWE-022/TaintedPath.expected +++ b/rust/ql/test/query-tests/security/CWE-022/TaintedPath.expected @@ -1,36 +1,15 @@ #select | src/main.rs:10:5:10:22 | ...::read_to_string | src/main.rs:6:11:6:19 | file_name | src/main.rs:10:5:10:22 | ...::read_to_string | This path depends on a $@. | src/main.rs:6:11:6:19 | file_name | user-provided value | -| src/main.rs:45:5:45:22 | ...::read_to_string | src/main.rs:37:11:37:19 | file_path | src/main.rs:45:5:45:22 | ...::read_to_string | This path depends on a $@. | src/main.rs:37:11:37:19 | file_path | user-provided value | -| src/main.rs:59:5:59:22 | ...::read_to_string | src/main.rs:50:11:50:19 | file_path | src/main.rs:59:5:59:22 | ...::read_to_string | This path depends on a $@. | src/main.rs:50:11:50:19 | file_path | user-provided value | edges | src/main.rs:6:11:6:19 | file_name | src/main.rs:8:35:8:43 | file_name | provenance | | | src/main.rs:8:9:8:17 | file_path | src/main.rs:10:24:10:32 | file_path | provenance | | | src/main.rs:8:21:8:44 | ...::from(...) | src/main.rs:8:9:8:17 | file_path | provenance | | -| src/main.rs:8:35:8:43 | file_name | src/main.rs:8:21:8:44 | ...::from(...) | provenance | MaD:4 | -| src/main.rs:8:35:8:43 | file_name | src/main.rs:8:21:8:44 | ...::from(...) | provenance | MaD:4 | +| src/main.rs:8:35:8:43 | file_name | src/main.rs:8:21:8:44 | ...::from(...) | provenance | MaD:2 | +| src/main.rs:8:35:8:43 | file_name | src/main.rs:8:21:8:44 | ...::from(...) | provenance | MaD:2 | | src/main.rs:10:24:10:32 | file_path | src/main.rs:10:5:10:22 | ...::read_to_string | provenance | MaD:1 Sink:MaD:1 | -| src/main.rs:37:11:37:19 | file_path | src/main.rs:40:52:40:60 | file_path | provenance | | -| src/main.rs:40:9:40:17 | file_path | src/main.rs:45:24:45:32 | file_path | provenance | | -| src/main.rs:40:21:40:62 | public_path.join(...) | src/main.rs:40:9:40:17 | file_path | provenance | | -| src/main.rs:40:38:40:61 | ...::from(...) | src/main.rs:40:21:40:62 | public_path.join(...) | provenance | MaD:3 | -| src/main.rs:40:52:40:60 | file_path | src/main.rs:40:38:40:61 | ...::from(...) | provenance | MaD:4 | -| src/main.rs:40:52:40:60 | file_path | src/main.rs:40:38:40:61 | ...::from(...) | provenance | MaD:4 | -| src/main.rs:45:24:45:32 | file_path | src/main.rs:45:5:45:22 | ...::read_to_string | provenance | MaD:1 Sink:MaD:1 | -| src/main.rs:50:11:50:19 | file_path | src/main.rs:53:52:53:60 | file_path | provenance | | -| src/main.rs:53:9:53:17 | file_path | src/main.rs:54:21:54:44 | file_path.canonicalize() [Ok] | provenance | Config | -| src/main.rs:53:21:53:62 | public_path.join(...) | src/main.rs:53:9:53:17 | file_path | provenance | | -| src/main.rs:53:38:53:61 | ...::from(...) | src/main.rs:53:21:53:62 | public_path.join(...) | provenance | MaD:3 | -| src/main.rs:53:52:53:60 | file_path | src/main.rs:53:38:53:61 | ...::from(...) | provenance | MaD:4 | -| src/main.rs:53:52:53:60 | file_path | src/main.rs:53:38:53:61 | ...::from(...) | provenance | MaD:4 | -| src/main.rs:54:9:54:17 | file_path | src/main.rs:59:24:59:32 | file_path | provenance | | -| src/main.rs:54:21:54:44 | file_path.canonicalize() [Ok] | src/main.rs:54:21:54:53 | ... .unwrap() | provenance | MaD:2 | -| src/main.rs:54:21:54:53 | ... .unwrap() | src/main.rs:54:9:54:17 | file_path | provenance | | -| src/main.rs:59:24:59:32 | file_path | src/main.rs:59:5:59:22 | ...::read_to_string | provenance | MaD:1 Sink:MaD:1 | models | 1 | Sink: lang:std; crate::fs::read_to_string; path-injection; Argument[0] | -| 2 | Summary: lang:core; ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 3 | Summary: lang:std; ::join; Argument[0]; ReturnValue; taint | -| 4 | Summary: lang:std; ::from; Argument[0]; ReturnValue; taint | +| 2 | Summary: lang:std; ::from; Argument[0]; ReturnValue; taint | nodes | src/main.rs:6:11:6:19 | file_name | semmle.label | file_name | | src/main.rs:8:9:8:17 | file_path | semmle.label | file_path | @@ -38,21 +17,4 @@ nodes | src/main.rs:8:35:8:43 | file_name | semmle.label | file_name | | src/main.rs:10:5:10:22 | ...::read_to_string | semmle.label | ...::read_to_string | | src/main.rs:10:24:10:32 | file_path | semmle.label | file_path | -| src/main.rs:37:11:37:19 | file_path | semmle.label | file_path | -| src/main.rs:40:9:40:17 | file_path | semmle.label | file_path | -| src/main.rs:40:21:40:62 | public_path.join(...) | semmle.label | public_path.join(...) | -| src/main.rs:40:38:40:61 | ...::from(...) | semmle.label | ...::from(...) | -| src/main.rs:40:52:40:60 | file_path | semmle.label | file_path | -| src/main.rs:45:5:45:22 | ...::read_to_string | semmle.label | ...::read_to_string | -| src/main.rs:45:24:45:32 | file_path | semmle.label | file_path | -| src/main.rs:50:11:50:19 | file_path | semmle.label | file_path | -| src/main.rs:53:9:53:17 | file_path | semmle.label | file_path | -| src/main.rs:53:21:53:62 | public_path.join(...) | semmle.label | public_path.join(...) | -| src/main.rs:53:38:53:61 | ...::from(...) | semmle.label | ...::from(...) | -| src/main.rs:53:52:53:60 | file_path | semmle.label | file_path | -| src/main.rs:54:9:54:17 | file_path | semmle.label | file_path | -| src/main.rs:54:21:54:44 | file_path.canonicalize() [Ok] | semmle.label | file_path.canonicalize() [Ok] | -| src/main.rs:54:21:54:53 | ... .unwrap() | semmle.label | ... .unwrap() | -| src/main.rs:59:5:59:22 | ...::read_to_string | semmle.label | ...::read_to_string | -| src/main.rs:59:24:59:32 | file_path | semmle.label | file_path | subpaths diff --git a/rust/ql/test/query-tests/security/CWE-022/src/main.rs b/rust/ql/test/query-tests/security/CWE-022/src/main.rs index 7c13da08db5..972ac8e7b6a 100644 --- a/rust/ql/test/query-tests/security/CWE-022/src/main.rs +++ b/rust/ql/test/query-tests/security/CWE-022/src/main.rs @@ -34,7 +34,7 @@ fn tainted_path_handler_folder_good(Query(file_path): Query) -> Result, // $ Source=remote4 + Query(file_path): Query, // $ MISSING: Source=remote4 ) -> Result { let public_path = PathBuf::from("/var/www/public_html"); let file_path = public_path.join(PathBuf::from(file_path)); @@ -42,12 +42,12 @@ fn tainted_path_handler_folder_almost_good1( if !file_path.starts_with(public_path) { return Err(Error::from_status(StatusCode::BAD_REQUEST)); } - fs::read_to_string(file_path).map_err(InternalServerError) // $ path-injection-sink Alert[rust/path-injection]=remote4 + fs::read_to_string(file_path).map_err(InternalServerError) // $ path-injection-sink MISSING: Alert[rust/path-injection]=remote4 -- we cannot resolve the `join` call above, because it needs a `PathBuf -> Path` `Deref` } //#[handler] fn tainted_path_handler_folder_almost_good2( - Query(file_path): Query, // $ Source=remote5 + Query(file_path): Query, // $ MISSING: Source=remote5 ) -> Result { let public_path = PathBuf::from("/var/www/public_html"); let file_path = public_path.join(PathBuf::from(file_path)); @@ -56,7 +56,7 @@ fn tainted_path_handler_folder_almost_good2( if file_path.starts_with(public_path) { return Err(Error::from_status(StatusCode::BAD_REQUEST)); } - fs::read_to_string(file_path).map_err(InternalServerError) // $ path-injection-sink Alert[rust/path-injection]=remote5 + fs::read_to_string(file_path).map_err(InternalServerError) // $ path-injection-sink MISSING: Alert[rust/path-injection]=remote5 -- we cannot resolve the `join` call above, because it needs a `PathBuf -> Path` `Deref` } fn sinks(path1: &Path, path2: &Path) { diff --git a/rust/ql/test/query-tests/security/CWE-089/Cargo.lock b/rust/ql/test/query-tests/security/CWE-089/Cargo.lock index 174703eacd2..2df49df403f 100644 --- a/rust/ql/test/query-tests/security/CWE-089/Cargo.lock +++ b/rust/ql/test/query-tests/security/CWE-089/Cargo.lock @@ -1500,9 +1500,9 @@ dependencies = [ [[package]] name = "r-efi" -version = "5.2.0" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" [[package]] name = "rand" @@ -1654,9 +1654,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.27" +version = "0.23.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "730944ca083c1c233a75c09f199e973ca499344a2b7ba9e755c457e86fb4a321" +checksum = "7160e3e10bf4535308537f3c4e1641468cd0e485175d6163087c0393c7d46643" dependencies = [ "once_cell", "rustls-pki-types", diff --git a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected index ab8e995be76..1e0e215e544 100644 --- a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected @@ -1,36 +1,20 @@ #select -| sqlx.rs:66:26:66:46 | safe_query_3.as_str() | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:66:26:66:46 | safe_query_3.as_str() | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value | | sqlx.rs:67:26:67:48 | unsafe_query_1.as_str() | sqlx.rs:47:22:47:35 | ...::args | sqlx.rs:67:26:67:48 | unsafe_query_1.as_str() | This query depends on a $@. | sqlx.rs:47:22:47:35 | ...::args | user-provided value | | sqlx.rs:69:30:69:52 | unsafe_query_2.as_str() | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:69:30:69:52 | unsafe_query_2.as_str() | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value | -| sqlx.rs:71:30:71:52 | unsafe_query_4.as_str() | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:71:30:71:52 | unsafe_query_4.as_str() | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value | -| sqlx.rs:77:25:77:45 | safe_query_3.as_str() | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value | | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() | sqlx.rs:47:22:47:35 | ...::args | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() | This query depends on a $@. | sqlx.rs:47:22:47:35 | ...::args | user-provided value | | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value | -| sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value | edges | sqlx.rs:47:9:47:18 | arg_string | sqlx.rs:53:27:53:36 | arg_string | provenance | | | sqlx.rs:47:22:47:35 | ...::args | sqlx.rs:47:22:47:37 | ...::args(...) [element] | provenance | Src:MaD:1 | -| sqlx.rs:47:22:47:37 | ...::args(...) [element] | sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | provenance | MaD:10 | -| sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | provenance | MaD:5 | +| sqlx.rs:47:22:47:37 | ...::args(...) [element] | sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | provenance | MaD:7 | +| sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | provenance | MaD:4 | | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | sqlx.rs:47:9:47:18 | arg_string | provenance | | -| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | provenance | MaD:8 | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:54:27:54:39 | remote_string | provenance | | -| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:59:17:59:72 | MacroExpr | provenance | | | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | provenance | Src:MaD:2 | -| sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | sqlx.rs:48:25:48:78 | ... .unwrap() | provenance | MaD:6 | -| sqlx.rs:48:25:48:78 | ... .unwrap() | sqlx.rs:48:25:48:85 | ... .text() [Ok] | provenance | MaD:11 | -| sqlx.rs:48:25:48:85 | ... .text() [Ok] | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | provenance | MaD:7 | +| sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | sqlx.rs:48:25:48:78 | ... .unwrap() | provenance | MaD:5 | +| sqlx.rs:48:25:48:78 | ... .unwrap() | sqlx.rs:48:25:48:85 | ... .text() [Ok] | provenance | MaD:8 | +| sqlx.rs:48:25:48:85 | ... .text() [Ok] | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | provenance | MaD:6 | | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | sqlx.rs:48:9:48:21 | remote_string | provenance | | -| sqlx.rs:49:9:49:21 | remote_number | sqlx.rs:52:32:52:87 | MacroExpr | provenance | | -| sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | provenance | MaD:7 | -| sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | sqlx.rs:49:9:49:21 | remote_number | provenance | | -| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:66:26:66:46 | safe_query_3.as_str() | provenance | MaD:3 | -| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | provenance | MaD:3 | -| sqlx.rs:52:24:52:88 | res | sqlx.rs:52:32:52:87 | { ... } | provenance | | -| sqlx.rs:52:32:52:87 | ...::format(...) | sqlx.rs:52:24:52:88 | res | provenance | | -| sqlx.rs:52:32:52:87 | ...::must_use(...) | sqlx.rs:52:9:52:20 | safe_query_3 | provenance | | -| sqlx.rs:52:32:52:87 | MacroExpr | sqlx.rs:52:32:52:87 | ...::format(...) | provenance | MaD:4 | -| sqlx.rs:52:32:52:87 | { ... } | sqlx.rs:52:32:52:87 | ...::must_use(...) | provenance | MaD:9 | | sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:67:26:67:48 | unsafe_query_1.as_str() | provenance | MaD:3 | | sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() | provenance | MaD:3 | | sqlx.rs:53:26:53:36 | &arg_string [&ref] | sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | provenance | | @@ -39,25 +23,15 @@ edges | sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() | provenance | MaD:3 | | sqlx.rs:54:26:54:39 | &remote_string [&ref] | sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | provenance | | | sqlx.rs:54:27:54:39 | remote_string | sqlx.rs:54:26:54:39 | &remote_string [&ref] | provenance | | -| sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:71:30:71:52 | unsafe_query_4.as_str() | provenance | MaD:3 | -| sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | provenance | MaD:3 | -| sqlx.rs:59:9:59:73 | res | sqlx.rs:59:17:59:72 | { ... } | provenance | | -| sqlx.rs:59:17:59:72 | ...::format(...) | sqlx.rs:59:9:59:73 | res | provenance | | -| sqlx.rs:59:17:59:72 | ...::must_use(...) | sqlx.rs:56:9:56:22 | unsafe_query_4 | provenance | | -| sqlx.rs:59:17:59:72 | MacroExpr | sqlx.rs:59:17:59:72 | ...::format(...) | provenance | MaD:4 | -| sqlx.rs:59:17:59:72 | { ... } | sqlx.rs:59:17:59:72 | ...::must_use(...) | provenance | MaD:9 | models | 1 | Source: lang:std; crate::env::args; commandargs; ReturnValue.Element | | 2 | Source: repo:https://github.com/seanmonstar/reqwest:reqwest; crate::blocking::get; remote; ReturnValue.Field[core::result::Result::Ok(0)] | | 3 | Summary: lang:alloc; ::as_str; Argument[self]; ReturnValue; value | -| 4 | Summary: lang:alloc; crate::fmt::format; Argument[0]; ReturnValue; taint | -| 5 | Summary: lang:core; ::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 6 | Summary: lang:core; ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 7 | Summary: lang:core; ::unwrap_or; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 8 | Summary: lang:core; ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 9 | Summary: lang:core; crate::hint::must_use; Argument[0]; ReturnValue; value | -| 10 | Summary: lang:core; crate::iter::traits::iterator::Iterator::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | -| 11 | Summary: repo:https://github.com/seanmonstar/reqwest:reqwest; ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 4 | Summary: lang:core; ::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 5 | Summary: lang:core; ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 6 | Summary: lang:core; ::unwrap_or; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 7 | Summary: lang:core; crate::iter::traits::iterator::Iterator::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | +| 8 | Summary: repo:https://github.com/seanmonstar/reqwest:reqwest; ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | nodes | sqlx.rs:47:9:47:18 | arg_string | semmle.label | arg_string | | sqlx.rs:47:22:47:35 | ...::args | semmle.label | ...::args | @@ -70,33 +44,14 @@ nodes | sqlx.rs:48:25:48:78 | ... .unwrap() | semmle.label | ... .unwrap() | | sqlx.rs:48:25:48:85 | ... .text() [Ok] | semmle.label | ... .text() [Ok] | | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | -| sqlx.rs:49:9:49:21 | remote_number | semmle.label | remote_number | -| sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | semmle.label | remote_string.parse() [Ok] | -| sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | -| sqlx.rs:52:9:52:20 | safe_query_3 | semmle.label | safe_query_3 | -| sqlx.rs:52:24:52:88 | res | semmle.label | res | -| sqlx.rs:52:32:52:87 | ...::format(...) | semmle.label | ...::format(...) | -| sqlx.rs:52:32:52:87 | ...::must_use(...) | semmle.label | ...::must_use(...) | -| sqlx.rs:52:32:52:87 | MacroExpr | semmle.label | MacroExpr | -| sqlx.rs:52:32:52:87 | { ... } | semmle.label | { ... } | | sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | semmle.label | unsafe_query_1 [&ref] | | sqlx.rs:53:26:53:36 | &arg_string [&ref] | semmle.label | &arg_string [&ref] | | sqlx.rs:53:27:53:36 | arg_string | semmle.label | arg_string | | sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | semmle.label | unsafe_query_2 [&ref] | | sqlx.rs:54:26:54:39 | &remote_string [&ref] | semmle.label | &remote_string [&ref] | | sqlx.rs:54:27:54:39 | remote_string | semmle.label | remote_string | -| sqlx.rs:56:9:56:22 | unsafe_query_4 | semmle.label | unsafe_query_4 | -| sqlx.rs:59:9:59:73 | res | semmle.label | res | -| sqlx.rs:59:17:59:72 | ...::format(...) | semmle.label | ...::format(...) | -| sqlx.rs:59:17:59:72 | ...::must_use(...) | semmle.label | ...::must_use(...) | -| sqlx.rs:59:17:59:72 | MacroExpr | semmle.label | MacroExpr | -| sqlx.rs:59:17:59:72 | { ... } | semmle.label | { ... } | -| sqlx.rs:66:26:66:46 | safe_query_3.as_str() | semmle.label | safe_query_3.as_str() | | sqlx.rs:67:26:67:48 | unsafe_query_1.as_str() | semmle.label | unsafe_query_1.as_str() | | sqlx.rs:69:30:69:52 | unsafe_query_2.as_str() | semmle.label | unsafe_query_2.as_str() | -| sqlx.rs:71:30:71:52 | unsafe_query_4.as_str() | semmle.label | unsafe_query_4.as_str() | -| sqlx.rs:77:25:77:45 | safe_query_3.as_str() | semmle.label | safe_query_3.as_str() | | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() | semmle.label | unsafe_query_1.as_str() | | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() | semmle.label | unsafe_query_2.as_str() | -| sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | semmle.label | unsafe_query_4.as_str() | subpaths diff --git a/rust/ql/test/query-tests/security/CWE-089/sqlx.rs b/rust/ql/test/query-tests/security/CWE-089/sqlx.rs index 3de58350f20..4d121e86fee 100644 --- a/rust/ql/test/query-tests/security/CWE-089/sqlx.rs +++ b/rust/ql/test/query-tests/security/CWE-089/sqlx.rs @@ -63,23 +63,23 @@ async fn test_sqlx_mysql(url: &str, enable_remote: bool) -> Result<(), sqlx::Err // direct execution let _ = conn.execute(safe_query_1.as_str()).await?; // $ sql-sink let _ = conn.execute(safe_query_2.as_str()).await?; // $ sql-sink - let _ = conn.execute(safe_query_3.as_str()).await?; // $ sql-sink SPURIOUS: Alert[rust/sql-injection]=remote1 + let _ = conn.execute(safe_query_3.as_str()).await?; // $ sql-sink let _ = conn.execute(unsafe_query_1.as_str()).await?; // $ sql-sink Alert[rust/sql-injection]=args1 if enable_remote { let _ = conn.execute(unsafe_query_2.as_str()).await?; // $ sql-sink Alert[rust/sql-injection]=remote1 let _ = conn.execute(unsafe_query_3.as_str()).await?; // $ sql-sink MISSING: Alert[rust/sql-injection]=remote1 - let _ = conn.execute(unsafe_query_4.as_str()).await?; // $ sql-sink Alert[rust/sql-injection]=remote1 + let _ = conn.execute(unsafe_query_4.as_str()).await?; // $ sql-sink MISSING: Alert[rust/sql-injection]=remote1 } // prepared queries let _ = sqlx::query(safe_query_1.as_str()).execute(&pool).await?; // $ sql-sink let _ = sqlx::query(safe_query_2.as_str()).execute(&pool).await?; // $ sql-sink - let _ = sqlx::query(safe_query_3.as_str()).execute(&pool).await?; // $ sql-sink SPURIOUS: Alert[rust/sql-injection]=remote1 + let _ = sqlx::query(safe_query_3.as_str()).execute(&pool).await?; // $ sql-sink let _ = sqlx::query(unsafe_query_1.as_str()).execute(&pool).await?; // $ sql-sink Alert[rust/sql-injection]=args1 if enable_remote { let _ = sqlx::query(unsafe_query_2.as_str()).execute(&pool).await?; // $ sql-sink Alert[rust/sql-injection]=remote1 let _ = sqlx::query(unsafe_query_3.as_str()).execute(&pool).await?; // $ sql-sink MISSING: Alert[rust/sql-injection]=remote1 - let _ = sqlx::query(unsafe_query_4.as_str()).execute(&pool).await?; // $ sql-sink Alert[rust/sql-injection]=remote1 + let _ = sqlx::query(unsafe_query_4.as_str()).execute(&pool).await?; // $ sql-sink MISSING: Alert[rust/sql-injection]=remote1 } let _ = sqlx::query(prepared_query_1.as_str()).bind(const_string).execute(&pool).await?; // $ sql-sink let _ = sqlx::query(prepared_query_1.as_str()).bind(arg_string).execute(&pool).await?; // $ sql-sink diff --git a/rust/ql/test/query-tests/security/CWE-312/CleartextLogging.expected b/rust/ql/test/query-tests/security/CWE-312/CleartextLogging.expected index 2c6b8207b70..b0dbd91436a 100644 --- a/rust/ql/test/query-tests/security/CWE-312/CleartextLogging.expected +++ b/rust/ql/test/query-tests/security/CWE-312/CleartextLogging.expected @@ -48,242 +48,194 @@ | test_logging.rs:220:13:220:58 | ...::panic_fmt | test_logging.rs:220:50:220:57 | password | test_logging.rs:220:13:220:58 | ...::panic_fmt | This operation writes $@ to a log file. | test_logging.rs:220:50:220:57 | password | password | | test_logging.rs:223:13:223:60 | ...::assert_failed | test_logging.rs:223:52:223:59 | password | test_logging.rs:223:13:223:60 | ...::assert_failed | This operation writes $@ to a log file. | test_logging.rs:223:52:223:59 | password | password | | test_logging.rs:226:13:226:60 | ...::assert_failed | test_logging.rs:226:52:226:59 | password | test_logging.rs:226:13:226:60 | ...::assert_failed | This operation writes $@ to a log file. | test_logging.rs:226:52:226:59 | password | password | -| test_logging.rs:229:23:229:28 | expect | test_logging.rs:229:54:229:61 | password | test_logging.rs:229:23:229:28 | expect | This operation writes $@ to a log file. | test_logging.rs:229:54:229:61 | password | password | -| test_logging.rs:229:23:229:28 | expect | test_logging.rs:229:54:229:61 | password | test_logging.rs:229:23:229:28 | expect | This operation writes $@ to a log file. | test_logging.rs:229:54:229:61 | password | password | -| test_logging.rs:242:10:242:14 | write | test_logging.rs:242:42:242:49 | password | test_logging.rs:242:10:242:14 | write | This operation writes $@ to a log file. | test_logging.rs:242:42:242:49 | password | password | -| test_logging.rs:245:10:245:18 | write_all | test_logging.rs:245:46:245:53 | password | test_logging.rs:245:10:245:18 | write_all | This operation writes $@ to a log file. | test_logging.rs:245:46:245:53 | password | password | -| test_logging.rs:248:9:248:13 | write | test_logging.rs:248:41:248:48 | password | test_logging.rs:248:9:248:13 | write | This operation writes $@ to a log file. | test_logging.rs:248:41:248:48 | password | password | -| test_logging.rs:251:9:251:13 | write | test_logging.rs:251:41:251:48 | password | test_logging.rs:251:9:251:13 | write | This operation writes $@ to a log file. | test_logging.rs:251:41:251:48 | password | password | edges -| test_logging.rs:42:12:42:35 | MacroExpr | test_logging.rs:42:5:42:36 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:42:12:42:35 | MacroExpr | test_logging.rs:42:5:42:36 | ...::log | provenance | MaD:10 Sink:MaD:10 | | test_logging.rs:42:28:42:35 | password | test_logging.rs:42:12:42:35 | MacroExpr | provenance | | -| test_logging.rs:43:12:43:35 | MacroExpr | test_logging.rs:43:5:43:36 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:43:12:43:35 | MacroExpr | test_logging.rs:43:5:43:36 | ...::log | provenance | MaD:10 Sink:MaD:10 | | test_logging.rs:43:28:43:35 | password | test_logging.rs:43:12:43:35 | MacroExpr | provenance | | -| test_logging.rs:44:11:44:34 | MacroExpr | test_logging.rs:44:5:44:35 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:44:11:44:34 | MacroExpr | test_logging.rs:44:5:44:35 | ...::log | provenance | MaD:10 Sink:MaD:10 | | test_logging.rs:44:27:44:34 | password | test_logging.rs:44:11:44:34 | MacroExpr | provenance | | -| test_logging.rs:45:12:45:35 | MacroExpr | test_logging.rs:45:5:45:36 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:45:12:45:35 | MacroExpr | test_logging.rs:45:5:45:36 | ...::log | provenance | MaD:10 Sink:MaD:10 | | test_logging.rs:45:28:45:35 | password | test_logging.rs:45:12:45:35 | MacroExpr | provenance | | -| test_logging.rs:46:11:46:34 | MacroExpr | test_logging.rs:46:5:46:35 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:46:11:46:34 | MacroExpr | test_logging.rs:46:5:46:35 | ...::log | provenance | MaD:10 Sink:MaD:10 | | test_logging.rs:46:27:46:34 | password | test_logging.rs:46:11:46:34 | MacroExpr | provenance | | -| test_logging.rs:47:24:47:47 | MacroExpr | test_logging.rs:47:5:47:48 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:47:24:47:47 | MacroExpr | test_logging.rs:47:5:47:48 | ...::log | provenance | MaD:10 Sink:MaD:10 | | test_logging.rs:47:40:47:47 | password | test_logging.rs:47:24:47:47 | MacroExpr | provenance | | -| test_logging.rs:52:12:52:35 | MacroExpr | test_logging.rs:52:5:52:36 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:52:12:52:35 | MacroExpr | test_logging.rs:52:5:52:36 | ...::log | provenance | MaD:10 Sink:MaD:10 | | test_logging.rs:52:28:52:35 | password | test_logging.rs:52:12:52:35 | MacroExpr | provenance | | -| test_logging.rs:54:12:54:48 | MacroExpr | test_logging.rs:54:5:54:49 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:54:12:54:48 | MacroExpr | test_logging.rs:54:5:54:49 | ...::log | provenance | MaD:10 Sink:MaD:10 | | test_logging.rs:54:41:54:48 | password | test_logging.rs:54:12:54:48 | MacroExpr | provenance | | -| test_logging.rs:56:12:56:46 | MacroExpr | test_logging.rs:56:5:56:47 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:56:12:56:46 | MacroExpr | test_logging.rs:56:5:56:47 | ...::log | provenance | MaD:10 Sink:MaD:10 | | test_logging.rs:56:39:56:46 | password | test_logging.rs:56:12:56:46 | MacroExpr | provenance | | -| test_logging.rs:57:12:57:33 | MacroExpr | test_logging.rs:57:5:57:34 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:57:12:57:33 | MacroExpr | test_logging.rs:57:5:57:34 | ...::log | provenance | MaD:10 Sink:MaD:10 | | test_logging.rs:57:24:57:31 | password | test_logging.rs:57:12:57:33 | MacroExpr | provenance | | -| test_logging.rs:58:12:58:35 | MacroExpr | test_logging.rs:58:5:58:36 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:58:12:58:35 | MacroExpr | test_logging.rs:58:5:58:36 | ...::log | provenance | MaD:10 Sink:MaD:10 | | test_logging.rs:58:24:58:31 | password | test_logging.rs:58:12:58:35 | MacroExpr | provenance | | -| test_logging.rs:60:30:60:53 | MacroExpr | test_logging.rs:60:5:60:54 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:60:30:60:53 | MacroExpr | test_logging.rs:60:5:60:54 | ...::log | provenance | MaD:10 Sink:MaD:10 | | test_logging.rs:60:46:60:53 | password | test_logging.rs:60:30:60:53 | MacroExpr | provenance | | -| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:61:5:61:55 | ...::log | provenance | MaD:15 Sink:MaD:15 Sink:MaD:15 | -| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:61:5:61:55 | ...::log | provenance | MaD:15 Sink:MaD:15 Sink:MaD:15 Sink:MaD:15 | -| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0] | test_logging.rs:61:5:61:55 | ...::log | provenance | MaD:15 Sink:MaD:15 Sink:MaD:15 | +| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:61:5:61:55 | ...::log | provenance | MaD:11 Sink:MaD:11 Sink:MaD:11 | +| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:61:5:61:55 | ...::log | provenance | MaD:11 Sink:MaD:11 Sink:MaD:11 Sink:MaD:11 | +| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0] | test_logging.rs:61:5:61:55 | ...::log | provenance | MaD:11 Sink:MaD:11 Sink:MaD:11 | | test_logging.rs:61:20:61:28 | &password | test_logging.rs:61:20:61:28 | TupleExpr [tuple.0] | provenance | | | test_logging.rs:61:20:61:28 | &password [&ref] | test_logging.rs:61:20:61:28 | TupleExpr [tuple.0, &ref] | provenance | | | test_logging.rs:61:20:61:28 | TupleExpr [tuple.0, &ref] | test_logging.rs:61:20:61:28 | &... [&ref, tuple.0, &ref] | provenance | | | test_logging.rs:61:20:61:28 | TupleExpr [tuple.0] | test_logging.rs:61:20:61:28 | &... [&ref, tuple.0] | provenance | | | test_logging.rs:61:21:61:28 | password | test_logging.rs:61:20:61:28 | &password | provenance | Config | | test_logging.rs:61:21:61:28 | password | test_logging.rs:61:20:61:28 | &password [&ref] | provenance | | -| test_logging.rs:65:24:65:47 | MacroExpr | test_logging.rs:65:5:65:48 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:65:24:65:47 | MacroExpr | test_logging.rs:65:5:65:48 | ...::log | provenance | MaD:10 Sink:MaD:10 | | test_logging.rs:65:40:65:47 | password | test_logging.rs:65:24:65:47 | MacroExpr | provenance | | -| test_logging.rs:67:42:67:65 | MacroExpr | test_logging.rs:67:5:67:66 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:67:42:67:65 | MacroExpr | test_logging.rs:67:5:67:66 | ...::log | provenance | MaD:10 Sink:MaD:10 | | test_logging.rs:67:58:67:65 | password | test_logging.rs:67:42:67:65 | MacroExpr | provenance | | -| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0, &ref] | test_logging.rs:68:5:68:67 | ...::log | provenance | MaD:15 Sink:MaD:15 Sink:MaD:15 | -| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0, &ref] | test_logging.rs:68:5:68:67 | ...::log | provenance | MaD:15 Sink:MaD:15 Sink:MaD:15 Sink:MaD:15 | -| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0] | test_logging.rs:68:5:68:67 | ...::log | provenance | MaD:15 Sink:MaD:15 Sink:MaD:15 | +| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0, &ref] | test_logging.rs:68:5:68:67 | ...::log | provenance | MaD:11 Sink:MaD:11 Sink:MaD:11 | +| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0, &ref] | test_logging.rs:68:5:68:67 | ...::log | provenance | MaD:11 Sink:MaD:11 Sink:MaD:11 Sink:MaD:11 | +| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0] | test_logging.rs:68:5:68:67 | ...::log | provenance | MaD:11 Sink:MaD:11 Sink:MaD:11 | | test_logging.rs:68:18:68:26 | &password | test_logging.rs:68:18:68:26 | TupleExpr [tuple.0] | provenance | | | test_logging.rs:68:18:68:26 | &password [&ref] | test_logging.rs:68:18:68:26 | TupleExpr [tuple.0, &ref] | provenance | | | test_logging.rs:68:18:68:26 | TupleExpr [tuple.0, &ref] | test_logging.rs:68:18:68:26 | &... [&ref, tuple.0, &ref] | provenance | | | test_logging.rs:68:18:68:26 | TupleExpr [tuple.0] | test_logging.rs:68:18:68:26 | &... [&ref, tuple.0] | provenance | | | test_logging.rs:68:19:68:26 | password | test_logging.rs:68:18:68:26 | &password | provenance | Config | | test_logging.rs:68:19:68:26 | password | test_logging.rs:68:18:68:26 | &password [&ref] | provenance | | -| test_logging.rs:72:23:72:46 | MacroExpr | test_logging.rs:72:5:72:47 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:72:23:72:46 | MacroExpr | test_logging.rs:72:5:72:47 | ...::log | provenance | MaD:10 Sink:MaD:10 | | test_logging.rs:72:39:72:46 | password | test_logging.rs:72:23:72:46 | MacroExpr | provenance | | -| test_logging.rs:74:41:74:64 | MacroExpr | test_logging.rs:74:5:74:65 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:74:41:74:64 | MacroExpr | test_logging.rs:74:5:74:65 | ...::log | provenance | MaD:10 Sink:MaD:10 | | test_logging.rs:74:57:74:64 | password | test_logging.rs:74:41:74:64 | MacroExpr | provenance | | -| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:75:5:75:51 | ...::log | provenance | MaD:15 Sink:MaD:15 Sink:MaD:15 | -| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:75:5:75:51 | ...::log | provenance | MaD:15 Sink:MaD:15 Sink:MaD:15 Sink:MaD:15 | -| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0] | test_logging.rs:75:5:75:51 | ...::log | provenance | MaD:15 Sink:MaD:15 Sink:MaD:15 | +| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:75:5:75:51 | ...::log | provenance | MaD:11 Sink:MaD:11 Sink:MaD:11 | +| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:75:5:75:51 | ...::log | provenance | MaD:11 Sink:MaD:11 Sink:MaD:11 Sink:MaD:11 | +| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0] | test_logging.rs:75:5:75:51 | ...::log | provenance | MaD:11 Sink:MaD:11 Sink:MaD:11 | | test_logging.rs:75:20:75:28 | &password | test_logging.rs:75:20:75:28 | TupleExpr [tuple.0] | provenance | | | test_logging.rs:75:20:75:28 | &password [&ref] | test_logging.rs:75:20:75:28 | TupleExpr [tuple.0, &ref] | provenance | | | test_logging.rs:75:20:75:28 | TupleExpr [tuple.0, &ref] | test_logging.rs:75:20:75:28 | &... [&ref, tuple.0, &ref] | provenance | | | test_logging.rs:75:20:75:28 | TupleExpr [tuple.0] | test_logging.rs:75:20:75:28 | &... [&ref, tuple.0] | provenance | | | test_logging.rs:75:21:75:28 | password | test_logging.rs:75:20:75:28 | &password | provenance | Config | | test_logging.rs:75:21:75:28 | password | test_logging.rs:75:20:75:28 | &password [&ref] | provenance | | -| test_logging.rs:76:23:76:46 | MacroExpr | test_logging.rs:76:5:76:47 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:76:23:76:46 | MacroExpr | test_logging.rs:76:5:76:47 | ...::log | provenance | MaD:10 Sink:MaD:10 | | test_logging.rs:76:39:76:46 | password | test_logging.rs:76:23:76:46 | MacroExpr | provenance | | -| test_logging.rs:82:20:82:43 | MacroExpr | test_logging.rs:82:5:82:44 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:82:20:82:43 | MacroExpr | test_logging.rs:82:5:82:44 | ...::log | provenance | MaD:10 Sink:MaD:10 | | test_logging.rs:82:36:82:43 | password | test_logging.rs:82:20:82:43 | MacroExpr | provenance | | -| test_logging.rs:84:38:84:61 | MacroExpr | test_logging.rs:84:5:84:62 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:84:38:84:61 | MacroExpr | test_logging.rs:84:5:84:62 | ...::log | provenance | MaD:10 Sink:MaD:10 | | test_logging.rs:84:54:84:61 | password | test_logging.rs:84:38:84:61 | MacroExpr | provenance | | -| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:85:5:85:48 | ...::log | provenance | MaD:15 Sink:MaD:15 Sink:MaD:15 | -| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:85:5:85:48 | ...::log | provenance | MaD:15 Sink:MaD:15 Sink:MaD:15 Sink:MaD:15 | -| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0] | test_logging.rs:85:5:85:48 | ...::log | provenance | MaD:15 Sink:MaD:15 Sink:MaD:15 | +| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:85:5:85:48 | ...::log | provenance | MaD:11 Sink:MaD:11 Sink:MaD:11 | +| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:85:5:85:48 | ...::log | provenance | MaD:11 Sink:MaD:11 Sink:MaD:11 Sink:MaD:11 | +| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0] | test_logging.rs:85:5:85:48 | ...::log | provenance | MaD:11 Sink:MaD:11 Sink:MaD:11 | | test_logging.rs:85:20:85:28 | &password | test_logging.rs:85:20:85:28 | TupleExpr [tuple.0] | provenance | | | test_logging.rs:85:20:85:28 | &password [&ref] | test_logging.rs:85:20:85:28 | TupleExpr [tuple.0, &ref] | provenance | | | test_logging.rs:85:20:85:28 | TupleExpr [tuple.0, &ref] | test_logging.rs:85:20:85:28 | &... [&ref, tuple.0, &ref] | provenance | | | test_logging.rs:85:20:85:28 | TupleExpr [tuple.0] | test_logging.rs:85:20:85:28 | &... [&ref, tuple.0] | provenance | | | test_logging.rs:85:21:85:28 | password | test_logging.rs:85:20:85:28 | &password | provenance | Config | | test_logging.rs:85:21:85:28 | password | test_logging.rs:85:20:85:28 | &password [&ref] | provenance | | -| test_logging.rs:86:20:86:43 | MacroExpr | test_logging.rs:86:5:86:44 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:86:20:86:43 | MacroExpr | test_logging.rs:86:5:86:44 | ...::log | provenance | MaD:10 Sink:MaD:10 | | test_logging.rs:86:36:86:43 | password | test_logging.rs:86:20:86:43 | MacroExpr | provenance | | | test_logging.rs:93:9:93:10 | m1 | test_logging.rs:94:11:94:28 | MacroExpr | provenance | | | test_logging.rs:93:14:93:22 | &password | test_logging.rs:93:9:93:10 | m1 | provenance | | | test_logging.rs:93:15:93:22 | password | test_logging.rs:93:14:93:22 | &password | provenance | Config | -| test_logging.rs:94:11:94:28 | MacroExpr | test_logging.rs:94:5:94:29 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:94:11:94:28 | MacroExpr | test_logging.rs:94:5:94:29 | ...::log | provenance | MaD:10 Sink:MaD:10 | | test_logging.rs:96:9:96:10 | m2 | test_logging.rs:97:11:97:18 | MacroExpr | provenance | | | test_logging.rs:96:41:96:49 | &password | test_logging.rs:96:9:96:10 | m2 | provenance | | | test_logging.rs:96:42:96:49 | password | test_logging.rs:96:41:96:49 | &password | provenance | Config | -| test_logging.rs:97:11:97:18 | MacroExpr | test_logging.rs:97:5:97:19 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:97:11:97:18 | MacroExpr | test_logging.rs:97:5:97:19 | ...::log | provenance | MaD:10 Sink:MaD:10 | | test_logging.rs:99:9:99:10 | m3 | test_logging.rs:100:11:100:18 | MacroExpr | provenance | | | test_logging.rs:99:14:99:46 | res | test_logging.rs:99:22:99:45 | { ... } | provenance | | | test_logging.rs:99:22:99:45 | ...::format(...) | test_logging.rs:99:14:99:46 | res | provenance | | | test_logging.rs:99:22:99:45 | ...::must_use(...) | test_logging.rs:99:9:99:10 | m3 | provenance | | -| test_logging.rs:99:22:99:45 | MacroExpr | test_logging.rs:99:22:99:45 | ...::format(...) | provenance | MaD:18 | -| test_logging.rs:99:22:99:45 | { ... } | test_logging.rs:99:22:99:45 | ...::must_use(...) | provenance | MaD:19 | +| test_logging.rs:99:22:99:45 | MacroExpr | test_logging.rs:99:22:99:45 | ...::format(...) | provenance | MaD:12 | +| test_logging.rs:99:22:99:45 | { ... } | test_logging.rs:99:22:99:45 | ...::must_use(...) | provenance | MaD:13 | | test_logging.rs:99:38:99:45 | password | test_logging.rs:99:22:99:45 | MacroExpr | provenance | | -| test_logging.rs:100:11:100:18 | MacroExpr | test_logging.rs:100:5:100:19 | ...::log | provenance | MaD:14 Sink:MaD:14 | -| test_logging.rs:118:12:118:41 | MacroExpr | test_logging.rs:118:5:118:42 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:100:11:100:18 | MacroExpr | test_logging.rs:100:5:100:19 | ...::log | provenance | MaD:10 Sink:MaD:10 | +| test_logging.rs:118:12:118:41 | MacroExpr | test_logging.rs:118:5:118:42 | ...::log | provenance | MaD:10 Sink:MaD:10 | | test_logging.rs:118:28:118:41 | get_password(...) | test_logging.rs:118:12:118:41 | MacroExpr | provenance | | | test_logging.rs:129:9:129:10 | t1 [tuple.1] | test_logging.rs:131:28:131:29 | t1 [tuple.1] | provenance | | | test_logging.rs:129:14:129:33 | TupleExpr [tuple.1] | test_logging.rs:129:9:129:10 | t1 [tuple.1] | provenance | | | test_logging.rs:129:25:129:32 | password | test_logging.rs:129:14:129:33 | TupleExpr [tuple.1] | provenance | | -| test_logging.rs:131:12:131:31 | MacroExpr | test_logging.rs:131:5:131:32 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:131:12:131:31 | MacroExpr | test_logging.rs:131:5:131:32 | ...::log | provenance | MaD:10 Sink:MaD:10 | | test_logging.rs:131:28:131:29 | t1 [tuple.1] | test_logging.rs:131:28:131:31 | t1.1 | provenance | | | test_logging.rs:131:28:131:31 | t1.1 | test_logging.rs:131:12:131:31 | MacroExpr | provenance | | -| test_logging.rs:141:11:141:37 | MacroExpr | test_logging.rs:141:5:141:38 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:141:11:141:37 | MacroExpr | test_logging.rs:141:5:141:38 | ...::log | provenance | MaD:10 Sink:MaD:10 | | test_logging.rs:141:27:141:37 | s1.password | test_logging.rs:141:11:141:37 | MacroExpr | provenance | | -| test_logging.rs:151:11:151:37 | MacroExpr | test_logging.rs:151:5:151:38 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:151:11:151:37 | MacroExpr | test_logging.rs:151:5:151:38 | ...::log | provenance | MaD:10 Sink:MaD:10 | | test_logging.rs:151:27:151:37 | s2.password | test_logging.rs:151:11:151:37 | MacroExpr | provenance | | -| test_logging.rs:176:33:176:79 | &... | test_logging.rs:176:22:176:31 | log_expect | provenance | MaD:10 Sink:MaD:10 | -| test_logging.rs:176:33:176:79 | &... [&ref] | test_logging.rs:176:22:176:31 | log_expect | provenance | MaD:10 Sink:MaD:10 | +| test_logging.rs:176:33:176:79 | &... | test_logging.rs:176:22:176:31 | log_expect | provenance | MaD:6 Sink:MaD:6 | +| test_logging.rs:176:33:176:79 | &... [&ref] | test_logging.rs:176:22:176:31 | log_expect | provenance | MaD:6 Sink:MaD:6 | | test_logging.rs:176:34:176:79 | MacroExpr | test_logging.rs:176:33:176:79 | &... | provenance | Config | | test_logging.rs:176:34:176:79 | MacroExpr | test_logging.rs:176:33:176:79 | &... [&ref] | provenance | | | test_logging.rs:176:34:176:79 | res | test_logging.rs:176:42:176:78 | { ... } | provenance | | | test_logging.rs:176:42:176:78 | ...::format(...) | test_logging.rs:176:34:176:79 | res | provenance | | | test_logging.rs:176:42:176:78 | ...::must_use(...) | test_logging.rs:176:34:176:79 | MacroExpr | provenance | | -| test_logging.rs:176:42:176:78 | MacroExpr | test_logging.rs:176:42:176:78 | ...::format(...) | provenance | MaD:18 | -| test_logging.rs:176:42:176:78 | { ... } | test_logging.rs:176:42:176:78 | ...::must_use(...) | provenance | MaD:19 | +| test_logging.rs:176:42:176:78 | MacroExpr | test_logging.rs:176:42:176:78 | ...::format(...) | provenance | MaD:12 | +| test_logging.rs:176:42:176:78 | { ... } | test_logging.rs:176:42:176:78 | ...::must_use(...) | provenance | MaD:13 | | test_logging.rs:176:70:176:78 | password2 | test_logging.rs:176:42:176:78 | MacroExpr | provenance | | -| test_logging.rs:180:35:180:81 | &... | test_logging.rs:180:24:180:33 | log_expect | provenance | MaD:11 Sink:MaD:11 | -| test_logging.rs:180:35:180:81 | &... [&ref] | test_logging.rs:180:24:180:33 | log_expect | provenance | MaD:11 Sink:MaD:11 | +| test_logging.rs:180:35:180:81 | &... | test_logging.rs:180:24:180:33 | log_expect | provenance | MaD:7 Sink:MaD:7 | +| test_logging.rs:180:35:180:81 | &... [&ref] | test_logging.rs:180:24:180:33 | log_expect | provenance | MaD:7 Sink:MaD:7 | | test_logging.rs:180:36:180:81 | MacroExpr | test_logging.rs:180:35:180:81 | &... | provenance | Config | | test_logging.rs:180:36:180:81 | MacroExpr | test_logging.rs:180:35:180:81 | &... [&ref] | provenance | | | test_logging.rs:180:36:180:81 | res | test_logging.rs:180:44:180:80 | { ... } | provenance | | | test_logging.rs:180:44:180:80 | ...::format(...) | test_logging.rs:180:36:180:81 | res | provenance | | | test_logging.rs:180:44:180:80 | ...::must_use(...) | test_logging.rs:180:36:180:81 | MacroExpr | provenance | | -| test_logging.rs:180:44:180:80 | MacroExpr | test_logging.rs:180:44:180:80 | ...::format(...) | provenance | MaD:18 | -| test_logging.rs:180:44:180:80 | { ... } | test_logging.rs:180:44:180:80 | ...::must_use(...) | provenance | MaD:19 | +| test_logging.rs:180:44:180:80 | MacroExpr | test_logging.rs:180:44:180:80 | ...::format(...) | provenance | MaD:12 | +| test_logging.rs:180:44:180:80 | { ... } | test_logging.rs:180:44:180:80 | ...::must_use(...) | provenance | MaD:13 | | test_logging.rs:180:72:180:80 | password2 | test_logging.rs:180:44:180:80 | MacroExpr | provenance | | | test_logging.rs:183:9:183:19 | err_result2 [Err] | test_logging.rs:184:13:184:23 | err_result2 [Err] | provenance | | | test_logging.rs:183:47:183:68 | Err(...) [Err] | test_logging.rs:183:9:183:19 | err_result2 [Err] | provenance | | | test_logging.rs:183:51:183:59 | password2 | test_logging.rs:183:51:183:67 | password2.clone() | provenance | generated | | test_logging.rs:183:51:183:67 | password2.clone() | test_logging.rs:183:47:183:68 | Err(...) [Err] | provenance | | -| test_logging.rs:184:13:184:23 | err_result2 [Err] | test_logging.rs:184:25:184:34 | log_expect | provenance | MaD:12 Sink:MaD:12 | +| test_logging.rs:184:13:184:23 | err_result2 [Err] | test_logging.rs:184:25:184:34 | log_expect | provenance | MaD:8 Sink:MaD:8 | | test_logging.rs:187:9:187:19 | err_result3 [Err] | test_logging.rs:188:13:188:23 | err_result3 [Err] | provenance | | | test_logging.rs:187:47:187:60 | Err(...) [Err] | test_logging.rs:187:9:187:19 | err_result3 [Err] | provenance | | | test_logging.rs:187:51:187:59 | password2 | test_logging.rs:187:47:187:60 | Err(...) [Err] | provenance | | -| test_logging.rs:188:13:188:23 | err_result3 [Err] | test_logging.rs:188:25:188:34 | log_unwrap | provenance | MaD:13 Sink:MaD:13 | -| test_logging.rs:192:12:192:37 | MacroExpr | test_logging.rs:192:5:192:38 | ...::_print | provenance | MaD:9 Sink:MaD:9 | +| test_logging.rs:188:13:188:23 | err_result3 [Err] | test_logging.rs:188:25:188:34 | log_unwrap | provenance | MaD:9 Sink:MaD:9 | +| test_logging.rs:192:12:192:37 | MacroExpr | test_logging.rs:192:5:192:38 | ...::_print | provenance | MaD:5 Sink:MaD:5 | | test_logging.rs:192:30:192:37 | password | test_logging.rs:192:12:192:37 | MacroExpr | provenance | | -| test_logging.rs:193:14:193:37 | MacroExpr | test_logging.rs:193:5:193:38 | ...::_print | provenance | MaD:9 Sink:MaD:9 | +| test_logging.rs:193:14:193:37 | MacroExpr | test_logging.rs:193:5:193:38 | ...::_print | provenance | MaD:5 Sink:MaD:5 | | test_logging.rs:193:30:193:37 | password | test_logging.rs:193:14:193:37 | MacroExpr | provenance | | -| test_logging.rs:194:13:194:38 | MacroExpr | test_logging.rs:194:5:194:39 | ...::_eprint | provenance | MaD:8 Sink:MaD:8 | +| test_logging.rs:194:13:194:38 | MacroExpr | test_logging.rs:194:5:194:39 | ...::_eprint | provenance | MaD:4 Sink:MaD:4 | | test_logging.rs:194:31:194:38 | password | test_logging.rs:194:13:194:38 | MacroExpr | provenance | | -| test_logging.rs:195:15:195:38 | MacroExpr | test_logging.rs:195:5:195:39 | ...::_eprint | provenance | MaD:8 Sink:MaD:8 | +| test_logging.rs:195:15:195:38 | MacroExpr | test_logging.rs:195:5:195:39 | ...::_eprint | provenance | MaD:4 Sink:MaD:4 | | test_logging.rs:195:31:195:38 | password | test_logging.rs:195:15:195:38 | MacroExpr | provenance | | -| test_logging.rs:199:20:199:43 | MacroExpr | test_logging.rs:199:13:199:44 | ...::panic_fmt | provenance | MaD:4 Sink:MaD:4 | +| test_logging.rs:199:20:199:43 | MacroExpr | test_logging.rs:199:13:199:44 | ...::panic_fmt | provenance | MaD:3 Sink:MaD:3 | | test_logging.rs:199:36:199:43 | password | test_logging.rs:199:20:199:43 | MacroExpr | provenance | | -| test_logging.rs:202:19:202:42 | MacroExpr | test_logging.rs:202:13:202:43 | ...::panic_fmt | provenance | MaD:4 Sink:MaD:4 | +| test_logging.rs:202:19:202:42 | MacroExpr | test_logging.rs:202:13:202:43 | ...::panic_fmt | provenance | MaD:3 Sink:MaD:3 | | test_logging.rs:202:35:202:42 | password | test_logging.rs:202:19:202:42 | MacroExpr | provenance | | -| test_logging.rs:205:28:205:51 | MacroExpr | test_logging.rs:205:13:205:52 | ...::panic_fmt | provenance | MaD:4 Sink:MaD:4 | +| test_logging.rs:205:28:205:51 | MacroExpr | test_logging.rs:205:13:205:52 | ...::panic_fmt | provenance | MaD:3 Sink:MaD:3 | | test_logging.rs:205:44:205:51 | password | test_logging.rs:205:28:205:51 | MacroExpr | provenance | | -| test_logging.rs:208:26:208:49 | MacroExpr | test_logging.rs:208:13:208:50 | ...::panic_fmt | provenance | MaD:4 Sink:MaD:4 | +| test_logging.rs:208:26:208:49 | MacroExpr | test_logging.rs:208:13:208:50 | ...::panic_fmt | provenance | MaD:3 Sink:MaD:3 | | test_logging.rs:208:42:208:49 | password | test_logging.rs:208:26:208:49 | MacroExpr | provenance | | -| test_logging.rs:211:28:211:51 | MacroExpr | test_logging.rs:211:13:211:52 | ...::panic_fmt | provenance | MaD:4 Sink:MaD:4 | +| test_logging.rs:211:28:211:51 | MacroExpr | test_logging.rs:211:13:211:52 | ...::panic_fmt | provenance | MaD:3 Sink:MaD:3 | | test_logging.rs:211:44:211:51 | password | test_logging.rs:211:28:211:51 | MacroExpr | provenance | | -| test_logging.rs:214:13:214:54 | ...::assert_failed [Some] | test_logging.rs:214:13:214:54 | ...::assert_failed | provenance | Sink:MaD:3 | -| test_logging.rs:214:30:214:53 | ...::Some(...) [Some] | test_logging.rs:214:13:214:54 | ...::assert_failed | provenance | MaD:3 Sink:MaD:3 | -| test_logging.rs:214:30:214:53 | ...::Some(...) [Some] | test_logging.rs:214:13:214:54 | ...::assert_failed [Some] | provenance | MaD:2 | +| test_logging.rs:214:13:214:54 | ...::assert_failed [Some] | test_logging.rs:214:13:214:54 | ...::assert_failed | provenance | Sink:MaD:2 | +| test_logging.rs:214:30:214:53 | ...::Some(...) [Some] | test_logging.rs:214:13:214:54 | ...::assert_failed | provenance | MaD:2 Sink:MaD:2 | +| test_logging.rs:214:30:214:53 | ...::Some(...) [Some] | test_logging.rs:214:13:214:54 | ...::assert_failed [Some] | provenance | MaD:1 | | test_logging.rs:214:30:214:53 | MacroExpr | test_logging.rs:214:30:214:53 | ...::Some(...) [Some] | provenance | | | test_logging.rs:214:46:214:53 | password | test_logging.rs:214:30:214:53 | MacroExpr | provenance | | -| test_logging.rs:217:13:217:54 | ...::assert_failed [Some] | test_logging.rs:217:13:217:54 | ...::assert_failed | provenance | Sink:MaD:3 | -| test_logging.rs:217:30:217:53 | ...::Some(...) [Some] | test_logging.rs:217:13:217:54 | ...::assert_failed | provenance | MaD:3 Sink:MaD:3 | -| test_logging.rs:217:30:217:53 | ...::Some(...) [Some] | test_logging.rs:217:13:217:54 | ...::assert_failed [Some] | provenance | MaD:2 | +| test_logging.rs:217:13:217:54 | ...::assert_failed [Some] | test_logging.rs:217:13:217:54 | ...::assert_failed | provenance | Sink:MaD:2 | +| test_logging.rs:217:30:217:53 | ...::Some(...) [Some] | test_logging.rs:217:13:217:54 | ...::assert_failed | provenance | MaD:2 Sink:MaD:2 | +| test_logging.rs:217:30:217:53 | ...::Some(...) [Some] | test_logging.rs:217:13:217:54 | ...::assert_failed [Some] | provenance | MaD:1 | | test_logging.rs:217:30:217:53 | MacroExpr | test_logging.rs:217:30:217:53 | ...::Some(...) [Some] | provenance | | | test_logging.rs:217:46:217:53 | password | test_logging.rs:217:30:217:53 | MacroExpr | provenance | | -| test_logging.rs:220:34:220:57 | MacroExpr | test_logging.rs:220:13:220:58 | ...::panic_fmt | provenance | MaD:4 Sink:MaD:4 | +| test_logging.rs:220:34:220:57 | MacroExpr | test_logging.rs:220:13:220:58 | ...::panic_fmt | provenance | MaD:3 Sink:MaD:3 | | test_logging.rs:220:50:220:57 | password | test_logging.rs:220:34:220:57 | MacroExpr | provenance | | -| test_logging.rs:223:13:223:60 | ...::assert_failed [Some] | test_logging.rs:223:13:223:60 | ...::assert_failed | provenance | Sink:MaD:3 | -| test_logging.rs:223:36:223:59 | ...::Some(...) [Some] | test_logging.rs:223:13:223:60 | ...::assert_failed | provenance | MaD:3 Sink:MaD:3 | -| test_logging.rs:223:36:223:59 | ...::Some(...) [Some] | test_logging.rs:223:13:223:60 | ...::assert_failed [Some] | provenance | MaD:2 | +| test_logging.rs:223:13:223:60 | ...::assert_failed [Some] | test_logging.rs:223:13:223:60 | ...::assert_failed | provenance | Sink:MaD:2 | +| test_logging.rs:223:36:223:59 | ...::Some(...) [Some] | test_logging.rs:223:13:223:60 | ...::assert_failed | provenance | MaD:2 Sink:MaD:2 | +| test_logging.rs:223:36:223:59 | ...::Some(...) [Some] | test_logging.rs:223:13:223:60 | ...::assert_failed [Some] | provenance | MaD:1 | | test_logging.rs:223:36:223:59 | MacroExpr | test_logging.rs:223:36:223:59 | ...::Some(...) [Some] | provenance | | | test_logging.rs:223:52:223:59 | password | test_logging.rs:223:36:223:59 | MacroExpr | provenance | | -| test_logging.rs:226:13:226:60 | ...::assert_failed [Some] | test_logging.rs:226:13:226:60 | ...::assert_failed | provenance | Sink:MaD:3 | -| test_logging.rs:226:36:226:59 | ...::Some(...) [Some] | test_logging.rs:226:13:226:60 | ...::assert_failed | provenance | MaD:3 Sink:MaD:3 | -| test_logging.rs:226:36:226:59 | ...::Some(...) [Some] | test_logging.rs:226:13:226:60 | ...::assert_failed [Some] | provenance | MaD:2 | +| test_logging.rs:226:13:226:60 | ...::assert_failed [Some] | test_logging.rs:226:13:226:60 | ...::assert_failed | provenance | Sink:MaD:2 | +| test_logging.rs:226:36:226:59 | ...::Some(...) [Some] | test_logging.rs:226:13:226:60 | ...::assert_failed | provenance | MaD:2 Sink:MaD:2 | +| test_logging.rs:226:36:226:59 | ...::Some(...) [Some] | test_logging.rs:226:13:226:60 | ...::assert_failed [Some] | provenance | MaD:1 | | test_logging.rs:226:36:226:59 | MacroExpr | test_logging.rs:226:36:226:59 | ...::Some(...) [Some] | provenance | | | test_logging.rs:226:52:226:59 | password | test_logging.rs:226:36:226:59 | MacroExpr | provenance | | -| test_logging.rs:229:30:229:62 | res | test_logging.rs:229:38:229:61 | { ... } | provenance | | -| test_logging.rs:229:30:229:71 | ... .as_str() | test_logging.rs:229:23:229:28 | expect | provenance | MaD:1 Sink:MaD:1 | -| test_logging.rs:229:30:229:71 | ... .as_str() | test_logging.rs:229:23:229:28 | expect | provenance | MaD:1 Sink:MaD:1 | -| test_logging.rs:229:38:229:61 | ...::format(...) | test_logging.rs:229:30:229:62 | res | provenance | | -| test_logging.rs:229:38:229:61 | ...::must_use(...) | test_logging.rs:229:30:229:71 | ... .as_str() | provenance | MaD:17 | -| test_logging.rs:229:38:229:61 | MacroExpr | test_logging.rs:229:38:229:61 | ...::format(...) | provenance | MaD:18 | -| test_logging.rs:229:38:229:61 | { ... } | test_logging.rs:229:38:229:61 | ...::must_use(...) | provenance | MaD:19 | -| test_logging.rs:229:54:229:61 | password | test_logging.rs:229:38:229:61 | MacroExpr | provenance | | -| test_logging.rs:242:16:242:50 | res | test_logging.rs:242:24:242:49 | { ... } | provenance | | -| test_logging.rs:242:16:242:61 | ... .as_bytes() | test_logging.rs:242:10:242:14 | write | provenance | MaD:6 Sink:MaD:6 | -| test_logging.rs:242:24:242:49 | ...::format(...) | test_logging.rs:242:16:242:50 | res | provenance | | -| test_logging.rs:242:24:242:49 | ...::must_use(...) | test_logging.rs:242:16:242:61 | ... .as_bytes() | provenance | MaD:16 | -| test_logging.rs:242:24:242:49 | MacroExpr | test_logging.rs:242:24:242:49 | ...::format(...) | provenance | MaD:18 | -| test_logging.rs:242:24:242:49 | { ... } | test_logging.rs:242:24:242:49 | ...::must_use(...) | provenance | MaD:19 | -| test_logging.rs:242:42:242:49 | password | test_logging.rs:242:24:242:49 | MacroExpr | provenance | | -| test_logging.rs:245:20:245:54 | res | test_logging.rs:245:28:245:53 | { ... } | provenance | | -| test_logging.rs:245:20:245:65 | ... .as_bytes() | test_logging.rs:245:10:245:18 | write_all | provenance | MaD:7 Sink:MaD:7 | -| test_logging.rs:245:28:245:53 | ...::format(...) | test_logging.rs:245:20:245:54 | res | provenance | | -| test_logging.rs:245:28:245:53 | ...::must_use(...) | test_logging.rs:245:20:245:65 | ... .as_bytes() | provenance | MaD:16 | -| test_logging.rs:245:28:245:53 | MacroExpr | test_logging.rs:245:28:245:53 | ...::format(...) | provenance | MaD:18 | -| test_logging.rs:245:28:245:53 | { ... } | test_logging.rs:245:28:245:53 | ...::must_use(...) | provenance | MaD:19 | -| test_logging.rs:245:46:245:53 | password | test_logging.rs:245:28:245:53 | MacroExpr | provenance | | -| test_logging.rs:248:15:248:49 | res | test_logging.rs:248:23:248:48 | { ... } | provenance | | -| test_logging.rs:248:15:248:60 | ... .as_bytes() | test_logging.rs:248:9:248:13 | write | provenance | MaD:6 Sink:MaD:6 | -| test_logging.rs:248:23:248:48 | ...::format(...) | test_logging.rs:248:15:248:49 | res | provenance | | -| test_logging.rs:248:23:248:48 | ...::must_use(...) | test_logging.rs:248:15:248:60 | ... .as_bytes() | provenance | MaD:16 | -| test_logging.rs:248:23:248:48 | MacroExpr | test_logging.rs:248:23:248:48 | ...::format(...) | provenance | MaD:18 | -| test_logging.rs:248:23:248:48 | { ... } | test_logging.rs:248:23:248:48 | ...::must_use(...) | provenance | MaD:19 | -| test_logging.rs:248:41:248:48 | password | test_logging.rs:248:23:248:48 | MacroExpr | provenance | | -| test_logging.rs:251:15:251:49 | res | test_logging.rs:251:23:251:48 | { ... } | provenance | | -| test_logging.rs:251:15:251:60 | ... .as_bytes() | test_logging.rs:251:9:251:13 | write | provenance | MaD:5 Sink:MaD:5 | -| test_logging.rs:251:23:251:48 | ...::format(...) | test_logging.rs:251:15:251:49 | res | provenance | | -| test_logging.rs:251:23:251:48 | ...::must_use(...) | test_logging.rs:251:15:251:60 | ... .as_bytes() | provenance | MaD:16 | -| test_logging.rs:251:23:251:48 | MacroExpr | test_logging.rs:251:23:251:48 | ...::format(...) | provenance | MaD:18 | -| test_logging.rs:251:23:251:48 | { ... } | test_logging.rs:251:23:251:48 | ...::must_use(...) | provenance | MaD:19 | -| test_logging.rs:251:41:251:48 | password | test_logging.rs:251:23:251:48 | MacroExpr | provenance | | models -| 1 | Sink: lang:core; ::expect; log-injection; Argument[0] | -| 2 | Sink: lang:core; crate::panicking::assert_failed; log-injection; Argument[3] | -| 3 | Sink: lang:core; crate::panicking::assert_failed; log-injection; Argument[3].Field[core::option::Option::Some(0)] | -| 4 | Sink: lang:core; crate::panicking::panic_fmt; log-injection; Argument[0] | -| 5 | Sink: lang:std; ::write; log-injection; Argument[0] | -| 6 | Sink: lang:std; ::write; log-injection; Argument[0] | -| 7 | Sink: lang:std; ::write_all; log-injection; Argument[0] | -| 8 | Sink: lang:std; crate::io::stdio::_eprint; log-injection; Argument[0] | -| 9 | Sink: lang:std; crate::io::stdio::_print; log-injection; Argument[0] | -| 10 | Sink: repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err; ::log_expect; log-injection; Argument[0] | -| 11 | Sink: repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err; ::log_expect; log-injection; Argument[0] | -| 12 | Sink: repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err; ::log_expect; log-injection; Argument[self].Field[core::result::Result::Err(0)] | -| 13 | Sink: repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err; ::log_unwrap; log-injection; Argument[self].Field[core::result::Result::Err(0)] | -| 14 | Sink: repo:https://github.com/rust-lang/log:log; crate::__private_api::log; log-injection; Argument[1] | -| 15 | Sink: repo:https://github.com/rust-lang/log:log; crate::__private_api::log; log-injection; Argument[3] | -| 16 | Summary: lang:alloc; ::as_bytes; Argument[self]; ReturnValue; value | -| 17 | Summary: lang:alloc; ::as_str; Argument[self]; ReturnValue; value | -| 18 | Summary: lang:alloc; crate::fmt::format; Argument[0]; ReturnValue; taint | -| 19 | Summary: lang:core; crate::hint::must_use; Argument[0]; ReturnValue; value | +| 1 | Sink: lang:core; crate::panicking::assert_failed; log-injection; Argument[3] | +| 2 | Sink: lang:core; crate::panicking::assert_failed; log-injection; Argument[3].Field[core::option::Option::Some(0)] | +| 3 | Sink: lang:core; crate::panicking::panic_fmt; log-injection; Argument[0] | +| 4 | Sink: lang:std; crate::io::stdio::_eprint; log-injection; Argument[0] | +| 5 | Sink: lang:std; crate::io::stdio::_print; log-injection; Argument[0] | +| 6 | Sink: repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err; ::log_expect; log-injection; Argument[0] | +| 7 | Sink: repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err; ::log_expect; log-injection; Argument[0] | +| 8 | Sink: repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err; ::log_expect; log-injection; Argument[self].Field[core::result::Result::Err(0)] | +| 9 | Sink: repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err; ::log_unwrap; log-injection; Argument[self].Field[core::result::Result::Err(0)] | +| 10 | Sink: repo:https://github.com/rust-lang/log:log; crate::__private_api::log; log-injection; Argument[1] | +| 11 | Sink: repo:https://github.com/rust-lang/log:log; crate::__private_api::log; log-injection; Argument[3] | +| 12 | Summary: lang:alloc; crate::fmt::format; Argument[0]; ReturnValue; taint | +| 13 | Summary: lang:core; crate::hint::must_use; Argument[0]; ReturnValue; value | nodes | test_logging.rs:42:5:42:36 | ...::log | semmle.label | ...::log | | test_logging.rs:42:12:42:35 | MacroExpr | semmle.label | MacroExpr | @@ -493,45 +445,4 @@ nodes | test_logging.rs:226:36:226:59 | ...::Some(...) [Some] | semmle.label | ...::Some(...) [Some] | | test_logging.rs:226:36:226:59 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:226:52:226:59 | password | semmle.label | password | -| test_logging.rs:229:23:229:28 | expect | semmle.label | expect | -| test_logging.rs:229:23:229:28 | expect | semmle.label | expect | -| test_logging.rs:229:30:229:62 | res | semmle.label | res | -| test_logging.rs:229:30:229:71 | ... .as_str() | semmle.label | ... .as_str() | -| test_logging.rs:229:38:229:61 | ...::format(...) | semmle.label | ...::format(...) | -| test_logging.rs:229:38:229:61 | ...::must_use(...) | semmle.label | ...::must_use(...) | -| test_logging.rs:229:38:229:61 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:229:38:229:61 | { ... } | semmle.label | { ... } | -| test_logging.rs:229:54:229:61 | password | semmle.label | password | -| test_logging.rs:242:10:242:14 | write | semmle.label | write | -| test_logging.rs:242:16:242:50 | res | semmle.label | res | -| test_logging.rs:242:16:242:61 | ... .as_bytes() | semmle.label | ... .as_bytes() | -| test_logging.rs:242:24:242:49 | ...::format(...) | semmle.label | ...::format(...) | -| test_logging.rs:242:24:242:49 | ...::must_use(...) | semmle.label | ...::must_use(...) | -| test_logging.rs:242:24:242:49 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:242:24:242:49 | { ... } | semmle.label | { ... } | -| test_logging.rs:242:42:242:49 | password | semmle.label | password | -| test_logging.rs:245:10:245:18 | write_all | semmle.label | write_all | -| test_logging.rs:245:20:245:54 | res | semmle.label | res | -| test_logging.rs:245:20:245:65 | ... .as_bytes() | semmle.label | ... .as_bytes() | -| test_logging.rs:245:28:245:53 | ...::format(...) | semmle.label | ...::format(...) | -| test_logging.rs:245:28:245:53 | ...::must_use(...) | semmle.label | ...::must_use(...) | -| test_logging.rs:245:28:245:53 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:245:28:245:53 | { ... } | semmle.label | { ... } | -| test_logging.rs:245:46:245:53 | password | semmle.label | password | -| test_logging.rs:248:9:248:13 | write | semmle.label | write | -| test_logging.rs:248:15:248:49 | res | semmle.label | res | -| test_logging.rs:248:15:248:60 | ... .as_bytes() | semmle.label | ... .as_bytes() | -| test_logging.rs:248:23:248:48 | ...::format(...) | semmle.label | ...::format(...) | -| test_logging.rs:248:23:248:48 | ...::must_use(...) | semmle.label | ...::must_use(...) | -| test_logging.rs:248:23:248:48 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:248:23:248:48 | { ... } | semmle.label | { ... } | -| test_logging.rs:248:41:248:48 | password | semmle.label | password | -| test_logging.rs:251:9:251:13 | write | semmle.label | write | -| test_logging.rs:251:15:251:49 | res | semmle.label | res | -| test_logging.rs:251:15:251:60 | ... .as_bytes() | semmle.label | ... .as_bytes() | -| test_logging.rs:251:23:251:48 | ...::format(...) | semmle.label | ...::format(...) | -| test_logging.rs:251:23:251:48 | ...::must_use(...) | semmle.label | ...::must_use(...) | -| test_logging.rs:251:23:251:48 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:251:23:251:48 | { ... } | semmle.label | { ... } | -| test_logging.rs:251:41:251:48 | password | semmle.label | password | subpaths diff --git a/rust/ql/test/query-tests/security/CWE-312/test_logging.rs b/rust/ql/test/query-tests/security/CWE-312/test_logging.rs index 4b12005a6cb..f5f94fc89f8 100644 --- a/rust/ql/test/query-tests/security/CWE-312/test_logging.rs +++ b/rust/ql/test/query-tests/security/CWE-312/test_logging.rs @@ -226,7 +226,7 @@ fn test_std(password: String, i: i32, opt_i: Option) { debug_assert_ne!(1, 1, "message = {}", password); // $ Alert[rust/cleartext-logging] } 11 => { - _ = opt_i.expect(format!("message = {}", password).as_str()); // $ Alert[rust/cleartext-logging] + _ = opt_i.expect(format!("message = {}", password).as_str()); // $ MISSING: Alert[rust/cleartext-logging] (https://github.com/github/codeql/pull/19658) } _ => {} } @@ -239,16 +239,16 @@ fn test_std(password: String, i: i32, opt_i: Option) { .write_fmt(format_args!("message = {}\n", password)); // $ MISSING: Alert[rust/cleartext-logging] std::io::stdout() .lock() - .write(format!("message = {}\n", password).as_bytes()); // $ Alert[rust/cleartext-logging] + .write(format!("message = {}\n", password).as_bytes()); // $ MISSING: Alert[rust/cleartext-logging] (https://github.com/github/codeql/pull/19658) std::io::stdout() .lock() - .write_all(format!("message = {}\n", password).as_bytes()); // $ Alert[rust/cleartext-logging] + .write_all(format!("message = {}\n", password).as_bytes()); // $ MISSING: Alert[rust/cleartext-logging] (https://github.com/github/codeql/pull/19658) let mut out = std::io::stdout().lock(); - out.write(format!("message = {}\n", password).as_bytes()); // $ Alert[rust/cleartext-logging] + out.write(format!("message = {}\n", password).as_bytes()); // $ MISSING: Alert[rust/cleartext-logging] (https://github.com/github/codeql/pull/19658) let mut err = std::io::stderr().lock(); - err.write(format!("message = {}\n", password).as_bytes()); // $ Alert[rust/cleartext-logging] + err.write(format!("message = {}\n", password).as_bytes()); // $ MISSING: Alert[rust/cleartext-logging] (https://github.com/github/codeql/pull/19658) } fn main() { diff --git a/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected b/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected index 4294bff6c08..34cb1edba83 100644 --- a/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected +++ b/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected @@ -14,9 +14,7 @@ | main.rs:54:13:54:29 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:54:13:54:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:59:13:59:29 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:59:13:59:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:61:13:61:29 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:61:13:61:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | -| main.rs:63:13:63:29 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:63:13:63:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:64:13:64:29 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:64:13:64:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | -| main.rs:65:13:65:29 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:65:13:65:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:68:13:68:29 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:68:13:68:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:88:13:88:29 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:88:13:88:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:96:17:96:33 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:96:17:96:33 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | @@ -65,40 +63,40 @@ edges | main.rs:18:41:18:41 | v | main.rs:32:60:32:89 | ... * ... | provenance | | | main.rs:18:41:18:41 | v | main.rs:35:9:35:10 | s6 | provenance | | | main.rs:20:9:20:10 | l2 | main.rs:21:31:21:32 | l2 | provenance | | -| main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | main.rs:20:14:20:63 | ... .unwrap() | provenance | MaD:38 | +| main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | main.rs:20:14:20:63 | ... .unwrap() | provenance | MaD:36 | | main.rs:20:14:20:63 | ... .unwrap() | main.rs:20:9:20:10 | l2 | provenance | | -| main.rs:20:50:20:50 | v | main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | provenance | MaD:28 | +| main.rs:20:50:20:50 | v | main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | provenance | MaD:26 | | main.rs:21:31:21:32 | l2 | main.rs:21:13:21:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:21:31:21:32 | l2 | main.rs:22:31:22:44 | l2.align_to(...) [Ok] | provenance | MaD:22 | | main.rs:21:31:21:32 | l2 | main.rs:23:31:23:44 | l2.align_to(...) [Ok] | provenance | MaD:22 | | main.rs:21:31:21:32 | l2 | main.rs:24:38:24:39 | l2 | provenance | | -| main.rs:22:31:22:44 | l2.align_to(...) [Ok] | main.rs:22:31:22:53 | ... .unwrap() | provenance | MaD:38 | +| main.rs:22:31:22:44 | l2.align_to(...) [Ok] | main.rs:22:31:22:53 | ... .unwrap() | provenance | MaD:36 | | main.rs:22:31:22:53 | ... .unwrap() | main.rs:22:13:22:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | -| main.rs:23:31:23:44 | l2.align_to(...) [Ok] | main.rs:23:31:23:53 | ... .unwrap() | provenance | MaD:38 | -| main.rs:23:31:23:53 | ... .unwrap() | main.rs:23:31:23:68 | ... .pad_to_align() | provenance | MaD:31 | +| main.rs:23:31:23:44 | l2.align_to(...) [Ok] | main.rs:23:31:23:53 | ... .unwrap() | provenance | MaD:36 | +| main.rs:23:31:23:53 | ... .unwrap() | main.rs:23:31:23:68 | ... .pad_to_align() | provenance | MaD:29 | | main.rs:23:31:23:68 | ... .pad_to_align() | main.rs:23:13:23:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:24:38:24:39 | l2 | main.rs:24:13:24:36 | ...::alloc_zeroed | provenance | MaD:4 Sink:MaD:4 | | main.rs:29:9:29:10 | l4 | main.rs:30:31:30:32 | l4 | provenance | | | main.rs:29:14:29:64 | ...::from_size_align_unchecked(...) | main.rs:29:9:29:10 | l4 | provenance | | -| main.rs:29:60:29:60 | v | main.rs:29:14:29:64 | ...::from_size_align_unchecked(...) | provenance | MaD:30 | +| main.rs:29:60:29:60 | v | main.rs:29:14:29:64 | ...::from_size_align_unchecked(...) | provenance | MaD:28 | | main.rs:30:31:30:32 | l4 | main.rs:30:13:30:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:32:9:32:10 | l5 | main.rs:33:31:33:32 | l5 | provenance | | | main.rs:32:14:32:118 | ...::from_size_align_unchecked(...) | main.rs:32:9:32:10 | l5 | provenance | | -| main.rs:32:60:32:89 | ... * ... | main.rs:32:14:32:118 | ...::from_size_align_unchecked(...) | provenance | MaD:30 | +| main.rs:32:60:32:89 | ... * ... | main.rs:32:14:32:118 | ...::from_size_align_unchecked(...) | provenance | MaD:28 | | main.rs:33:31:33:32 | l5 | main.rs:33:13:33:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:35:9:35:10 | s6 | main.rs:36:60:36:61 | s6 | provenance | | | main.rs:36:9:36:10 | l6 | main.rs:37:31:37:32 | l6 | provenance | | | main.rs:36:9:36:10 | l6 [Layout.size] | main.rs:37:31:37:32 | l6 [Layout.size] | provenance | | | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) | main.rs:36:9:36:10 | l6 | provenance | | | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) [Layout.size] | main.rs:36:9:36:10 | l6 [Layout.size] | provenance | | -| main.rs:36:60:36:61 | s6 | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) | provenance | MaD:30 | -| main.rs:36:60:36:61 | s6 | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) [Layout.size] | provenance | MaD:29 | +| main.rs:36:60:36:61 | s6 | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) | provenance | MaD:28 | +| main.rs:36:60:36:61 | s6 | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) [Layout.size] | provenance | MaD:27 | | main.rs:37:31:37:32 | l6 | main.rs:37:13:37:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | -| main.rs:37:31:37:32 | l6 | main.rs:39:60:39:68 | l6.size() | provenance | MaD:35 | -| main.rs:37:31:37:32 | l6 [Layout.size] | main.rs:39:60:39:68 | l6.size() | provenance | MaD:34 | +| main.rs:37:31:37:32 | l6 | main.rs:39:60:39:68 | l6.size() | provenance | MaD:33 | +| main.rs:37:31:37:32 | l6 [Layout.size] | main.rs:39:60:39:68 | l6.size() | provenance | MaD:32 | | main.rs:39:9:39:10 | l7 | main.rs:40:31:40:32 | l7 | provenance | | | main.rs:39:14:39:72 | ...::from_size_align_unchecked(...) | main.rs:39:9:39:10 | l7 | provenance | | -| main.rs:39:60:39:68 | l6.size() | main.rs:39:14:39:72 | ...::from_size_align_unchecked(...) | provenance | MaD:30 | +| main.rs:39:60:39:68 | l6.size() | main.rs:39:14:39:72 | ...::from_size_align_unchecked(...) | provenance | MaD:28 | | main.rs:40:31:40:32 | l7 | main.rs:40:13:40:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:43:44:43:51 | ...: usize | main.rs:50:41:50:41 | v | provenance | | | main.rs:43:44:43:51 | ...: usize | main.rs:51:41:51:45 | ... + ... | provenance | | @@ -106,56 +104,47 @@ edges | main.rs:43:44:43:51 | ...: usize | main.rs:54:48:54:53 | ... * ... | provenance | | | main.rs:43:44:43:51 | ...: usize | main.rs:58:34:58:34 | v | provenance | | | main.rs:43:44:43:51 | ...: usize | main.rs:67:46:67:46 | v | provenance | | -| main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | main.rs:50:31:50:51 | ... .unwrap() [tuple.0] | provenance | MaD:38 | +| main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | main.rs:50:31:50:51 | ... .unwrap() [tuple.0] | provenance | MaD:36 | | main.rs:50:31:50:51 | ... .unwrap() [tuple.0] | main.rs:50:31:50:53 | ... .0 | provenance | | | main.rs:50:31:50:53 | ... .0 | main.rs:50:13:50:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | -| main.rs:50:41:50:41 | v | main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:32 | -| main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | main.rs:51:31:51:55 | ... .unwrap() [tuple.0] | provenance | MaD:38 | +| main.rs:50:41:50:41 | v | main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:30 | +| main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | main.rs:51:31:51:55 | ... .unwrap() [tuple.0] | provenance | MaD:36 | | main.rs:51:31:51:55 | ... .unwrap() [tuple.0] | main.rs:51:31:51:57 | ... .0 | provenance | | | main.rs:51:31:51:57 | ... .0 | main.rs:51:13:51:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | -| main.rs:51:41:51:45 | ... + ... | main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:32 | -| main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | main.rs:53:31:53:58 | ... .unwrap() | provenance | MaD:38 | +| main.rs:51:41:51:45 | ... + ... | main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:30 | +| main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | main.rs:53:31:53:58 | ... .unwrap() | provenance | MaD:36 | | main.rs:53:31:53:58 | ... .unwrap() | main.rs:53:13:53:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | -| main.rs:53:48:53:48 | v | main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | provenance | MaD:33 | -| main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | main.rs:54:31:54:63 | ... .unwrap() | provenance | MaD:38 | +| main.rs:53:48:53:48 | v | main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | provenance | MaD:31 | +| main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | main.rs:54:31:54:63 | ... .unwrap() | provenance | MaD:36 | | main.rs:54:31:54:63 | ... .unwrap() | main.rs:54:13:54:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | -| main.rs:54:48:54:53 | ... * ... | main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | provenance | MaD:33 | +| main.rs:54:48:54:53 | ... * ... | main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | provenance | MaD:31 | | main.rs:58:9:58:20 | TuplePat [tuple.0] | main.rs:58:10:58:11 | k1 | provenance | | | main.rs:58:10:58:11 | k1 | main.rs:59:31:59:32 | k1 | provenance | | -| main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | main.rs:58:24:58:66 | ... .expect(...) [tuple.0] | provenance | MaD:37 | +| main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | main.rs:58:24:58:66 | ... .expect(...) [tuple.0] | provenance | MaD:35 | | main.rs:58:24:58:66 | ... .expect(...) [tuple.0] | main.rs:58:9:58:20 | TuplePat [tuple.0] | provenance | | -| main.rs:58:34:58:34 | v | main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | provenance | MaD:32 | +| main.rs:58:34:58:34 | v | main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | provenance | MaD:30 | | main.rs:59:31:59:32 | k1 | main.rs:59:13:59:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:59:31:59:32 | k1 | main.rs:60:34:60:35 | k1 | provenance | | -| main.rs:59:31:59:32 | k1 | main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | provenance | MaD:25 | | main.rs:59:31:59:32 | k1 | main.rs:64:48:64:49 | k1 | provenance | | -| main.rs:59:31:59:32 | k1 | main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | provenance | MaD:27 | | main.rs:60:9:60:20 | TuplePat [tuple.0] | main.rs:60:10:60:11 | k2 | provenance | | | main.rs:60:10:60:11 | k2 | main.rs:61:31:61:32 | k2 | provenance | | -| main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | main.rs:60:24:60:45 | ... .unwrap() [tuple.0] | provenance | MaD:38 | +| main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | main.rs:60:24:60:45 | ... .unwrap() [tuple.0] | provenance | MaD:36 | | main.rs:60:24:60:45 | ... .unwrap() [tuple.0] | main.rs:60:9:60:20 | TuplePat [tuple.0] | provenance | | | main.rs:60:34:60:35 | k1 | main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | provenance | MaD:24 | | main.rs:61:31:61:32 | k2 | main.rs:61:13:61:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | -| main.rs:62:9:62:20 | TuplePat [tuple.0] | main.rs:62:10:62:11 | k3 | provenance | | -| main.rs:62:10:62:11 | k3 | main.rs:63:31:63:32 | k3 | provenance | | -| main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | main.rs:62:24:62:45 | ... .unwrap() [tuple.0] | provenance | MaD:38 | -| main.rs:62:24:62:45 | ... .unwrap() [tuple.0] | main.rs:62:9:62:20 | TuplePat [tuple.0] | provenance | | -| main.rs:63:31:63:32 | k3 | main.rs:63:13:63:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | -| main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | main.rs:64:31:64:59 | ... .unwrap() | provenance | MaD:38 | +| main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | main.rs:64:31:64:59 | ... .unwrap() | provenance | MaD:36 | | main.rs:64:31:64:59 | ... .unwrap() | main.rs:64:13:64:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | -| main.rs:64:48:64:49 | k1 | main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | provenance | MaD:26 | -| main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | main.rs:65:31:65:59 | ... .unwrap() | provenance | MaD:38 | -| main.rs:65:31:65:59 | ... .unwrap() | main.rs:65:13:65:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | +| main.rs:64:48:64:49 | k1 | main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | provenance | MaD:25 | | main.rs:67:9:67:10 | l4 | main.rs:68:31:68:32 | l4 | provenance | | -| main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | main.rs:67:14:67:56 | ... .unwrap() | provenance | MaD:38 | +| main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | main.rs:67:14:67:56 | ... .unwrap() | provenance | MaD:36 | | main.rs:67:14:67:56 | ... .unwrap() | main.rs:67:9:67:10 | l4 | provenance | | | main.rs:67:46:67:46 | v | main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | provenance | MaD:23 | | main.rs:68:31:68:32 | l4 | main.rs:68:13:68:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:86:35:86:42 | ...: usize | main.rs:87:54:87:54 | v | provenance | | | main.rs:87:9:87:14 | layout | main.rs:88:31:88:36 | layout | provenance | | -| main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | main.rs:87:18:87:67 | ... .unwrap() | provenance | MaD:38 | +| main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | main.rs:87:18:87:67 | ... .unwrap() | provenance | MaD:36 | | main.rs:87:18:87:67 | ... .unwrap() | main.rs:87:9:87:14 | layout | provenance | | -| main.rs:87:54:87:54 | v | main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | provenance | MaD:28 | +| main.rs:87:54:87:54 | v | main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | provenance | MaD:26 | | main.rs:88:31:88:36 | layout | main.rs:88:13:88:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:91:38:91:45 | ...: usize | main.rs:92:47:92:47 | v | provenance | | | main.rs:91:38:91:45 | ...: usize | main.rs:101:51:101:51 | v | provenance | | @@ -166,14 +155,14 @@ edges | main.rs:91:38:91:45 | ...: usize | main.rs:161:55:161:55 | v | provenance | | | main.rs:92:9:92:10 | l1 | main.rs:96:35:96:36 | l1 | provenance | | | main.rs:92:9:92:10 | l1 | main.rs:102:35:102:36 | l1 | provenance | | -| main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | main.rs:92:14:92:57 | ... .unwrap() | provenance | MaD:38 | +| main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | main.rs:92:14:92:57 | ... .unwrap() | provenance | MaD:36 | | main.rs:92:14:92:57 | ... .unwrap() | main.rs:92:9:92:10 | l1 | provenance | | | main.rs:92:47:92:47 | v | main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | provenance | MaD:23 | | main.rs:96:35:96:36 | l1 | main.rs:96:17:96:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:96:35:96:36 | l1 | main.rs:109:35:109:36 | l1 | provenance | | | main.rs:96:35:96:36 | l1 | main.rs:111:35:111:36 | l1 | provenance | | | main.rs:101:13:101:14 | l3 | main.rs:103:35:103:36 | l3 | provenance | | -| main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | main.rs:101:18:101:61 | ... .unwrap() | provenance | MaD:38 | +| main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | main.rs:101:18:101:61 | ... .unwrap() | provenance | MaD:36 | | main.rs:101:18:101:61 | ... .unwrap() | main.rs:101:13:101:14 | l3 | provenance | | | main.rs:101:51:101:51 | v | main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | provenance | MaD:23 | | main.rs:102:35:102:36 | l1 | main.rs:102:17:102:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | @@ -186,28 +175,28 @@ edges | main.rs:111:35:111:36 | l1 | main.rs:111:17:111:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:111:35:111:36 | l1 | main.rs:146:35:146:36 | l1 | provenance | | | main.rs:145:13:145:14 | l9 | main.rs:148:35:148:36 | l9 | provenance | | -| main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | main.rs:145:18:145:61 | ... .unwrap() | provenance | MaD:38 | +| main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | main.rs:145:18:145:61 | ... .unwrap() | provenance | MaD:36 | | main.rs:145:18:145:61 | ... .unwrap() | main.rs:145:13:145:14 | l9 | provenance | | | main.rs:145:51:145:51 | v | main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | provenance | MaD:23 | | main.rs:146:35:146:36 | l1 | main.rs:146:17:146:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:146:35:146:36 | l1 | main.rs:177:31:177:32 | l1 | provenance | | | main.rs:148:35:148:36 | l9 | main.rs:148:17:148:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:151:9:151:11 | l10 | main.rs:152:31:152:33 | l10 | provenance | | -| main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | main.rs:151:15:151:78 | ... .unwrap() | provenance | MaD:38 | +| main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | main.rs:151:15:151:78 | ... .unwrap() | provenance | MaD:36 | | main.rs:151:15:151:78 | ... .unwrap() | main.rs:151:9:151:11 | l10 | provenance | | | main.rs:151:48:151:68 | ...::min(...) | main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | provenance | MaD:23 | -| main.rs:151:62:151:62 | v | main.rs:151:48:151:68 | ...::min(...) | provenance | MaD:41 | +| main.rs:151:62:151:62 | v | main.rs:151:48:151:68 | ...::min(...) | provenance | MaD:39 | | main.rs:152:31:152:33 | l10 | main.rs:152:13:152:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:154:9:154:11 | l11 | main.rs:155:31:155:33 | l11 | provenance | | -| main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | main.rs:154:15:154:78 | ... .unwrap() | provenance | MaD:38 | +| main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | main.rs:154:15:154:78 | ... .unwrap() | provenance | MaD:36 | | main.rs:154:15:154:78 | ... .unwrap() | main.rs:154:9:154:11 | l11 | provenance | | | main.rs:154:48:154:68 | ...::max(...) | main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | provenance | MaD:23 | -| main.rs:154:62:154:62 | v | main.rs:154:48:154:68 | ...::max(...) | provenance | MaD:40 | +| main.rs:154:62:154:62 | v | main.rs:154:48:154:68 | ...::max(...) | provenance | MaD:38 | | main.rs:155:31:155:33 | l11 | main.rs:155:13:155:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:161:13:161:15 | l13 | main.rs:162:35:162:37 | l13 | provenance | | -| main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | main.rs:161:19:161:68 | ... .unwrap() | provenance | MaD:38 | +| main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | main.rs:161:19:161:68 | ... .unwrap() | provenance | MaD:36 | | main.rs:161:19:161:68 | ... .unwrap() | main.rs:161:13:161:15 | l13 | provenance | | -| main.rs:161:55:161:55 | v | main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | provenance | MaD:28 | +| main.rs:161:55:161:55 | v | main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | provenance | MaD:26 | | main.rs:162:35:162:37 | l13 | main.rs:162:17:162:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:162:35:162:37 | l13 | main.rs:169:35:169:37 | l13 | provenance | | | main.rs:169:35:169:37 | l13 | main.rs:169:17:169:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | @@ -215,7 +204,7 @@ edges | main.rs:183:29:183:36 | ...: usize | main.rs:192:46:192:46 | v | provenance | | | main.rs:183:29:183:36 | ...: usize | main.rs:202:48:202:48 | v | provenance | | | main.rs:192:9:192:10 | l2 | main.rs:193:38:193:39 | l2 | provenance | | -| main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | main.rs:192:14:192:56 | ... .unwrap() | provenance | MaD:38 | +| main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | main.rs:192:14:192:56 | ... .unwrap() | provenance | MaD:36 | | main.rs:192:14:192:56 | ... .unwrap() | main.rs:192:9:192:10 | l2 | provenance | | | main.rs:192:46:192:46 | v | main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | provenance | MaD:23 | | main.rs:193:38:193:39 | l2 | main.rs:193:32:193:36 | alloc | provenance | MaD:11 Sink:MaD:11 | @@ -256,18 +245,18 @@ edges | main.rs:223:26:223:26 | v | main.rs:223:13:223:24 | ...::calloc | provenance | MaD:18 Sink:MaD:18 | | main.rs:223:26:223:26 | v | main.rs:224:31:224:31 | v | provenance | | | main.rs:224:31:224:31 | v | main.rs:224:13:224:25 | ...::realloc | provenance | MaD:20 Sink:MaD:20 | -| main.rs:279:24:279:41 | ...: String | main.rs:280:21:280:47 | user_input.parse() [Ok] | provenance | MaD:39 | +| main.rs:279:24:279:41 | ...: String | main.rs:280:21:280:47 | user_input.parse() [Ok] | provenance | MaD:37 | | main.rs:280:9:280:17 | num_bytes | main.rs:282:54:282:62 | num_bytes | provenance | | | main.rs:280:21:280:47 | user_input.parse() [Ok] | main.rs:280:21:280:48 | TryExpr | provenance | | | main.rs:280:21:280:48 | TryExpr | main.rs:280:9:280:17 | num_bytes | provenance | | | main.rs:282:9:282:14 | layout | main.rs:284:40:284:45 | layout | provenance | | -| main.rs:282:18:282:66 | ...::from_size_align(...) [Ok] | main.rs:282:18:282:75 | ... .unwrap() | provenance | MaD:38 | +| main.rs:282:18:282:66 | ...::from_size_align(...) [Ok] | main.rs:282:18:282:75 | ... .unwrap() | provenance | MaD:36 | | main.rs:282:18:282:75 | ... .unwrap() | main.rs:282:9:282:14 | layout | provenance | | -| main.rs:282:54:282:62 | num_bytes | main.rs:282:18:282:66 | ...::from_size_align(...) [Ok] | provenance | MaD:28 | +| main.rs:282:54:282:62 | num_bytes | main.rs:282:18:282:66 | ...::from_size_align(...) [Ok] | provenance | MaD:26 | | main.rs:284:40:284:45 | layout | main.rs:284:22:284:38 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:308:25:308:38 | ...::args | main.rs:308:25:308:40 | ...::args(...) [element] | provenance | Src:MaD:21 | -| main.rs:308:25:308:40 | ...::args(...) [element] | main.rs:308:25:308:47 | ... .nth(...) [Some] | provenance | MaD:42 | -| main.rs:308:25:308:47 | ... .nth(...) [Some] | main.rs:308:25:308:74 | ... .unwrap_or(...) | provenance | MaD:36 | +| main.rs:308:25:308:40 | ...::args(...) [element] | main.rs:308:25:308:47 | ... .nth(...) [Some] | provenance | MaD:40 | +| main.rs:308:25:308:47 | ... .nth(...) [Some] | main.rs:308:25:308:74 | ... .unwrap_or(...) | provenance | MaD:34 | | main.rs:308:25:308:74 | ... .unwrap_or(...) | main.rs:279:24:279:41 | ...: String | provenance | | | main.rs:317:9:317:9 | v | main.rs:320:34:320:34 | v | provenance | | | main.rs:317:9:317:9 | v | main.rs:321:42:321:42 | v | provenance | | @@ -275,10 +264,10 @@ edges | main.rs:317:9:317:9 | v | main.rs:323:27:323:27 | v | provenance | | | main.rs:317:9:317:9 | v | main.rs:324:25:324:25 | v | provenance | | | main.rs:317:13:317:26 | ...::args | main.rs:317:13:317:28 | ...::args(...) [element] | provenance | Src:MaD:21 | -| main.rs:317:13:317:28 | ...::args(...) [element] | main.rs:317:13:317:35 | ... .nth(...) [Some] | provenance | MaD:42 | -| main.rs:317:13:317:35 | ... .nth(...) [Some] | main.rs:317:13:317:65 | ... .unwrap_or(...) | provenance | MaD:36 | -| main.rs:317:13:317:65 | ... .unwrap_or(...) | main.rs:317:13:317:82 | ... .parse() [Ok] | provenance | MaD:39 | -| main.rs:317:13:317:82 | ... .parse() [Ok] | main.rs:317:13:317:91 | ... .unwrap() | provenance | MaD:38 | +| main.rs:317:13:317:28 | ...::args(...) [element] | main.rs:317:13:317:35 | ... .nth(...) [Some] | provenance | MaD:40 | +| main.rs:317:13:317:35 | ... .nth(...) [Some] | main.rs:317:13:317:65 | ... .unwrap_or(...) | provenance | MaD:34 | +| main.rs:317:13:317:65 | ... .unwrap_or(...) | main.rs:317:13:317:82 | ... .parse() [Ok] | provenance | MaD:37 | +| main.rs:317:13:317:82 | ... .parse() [Ok] | main.rs:317:13:317:91 | ... .unwrap() | provenance | MaD:36 | | main.rs:317:13:317:91 | ... .unwrap() | main.rs:317:9:317:9 | v | provenance | | | main.rs:320:34:320:34 | v | main.rs:12:36:12:43 | ...: usize | provenance | | | main.rs:321:42:321:42 | v | main.rs:43:44:43:51 | ...: usize | provenance | | @@ -310,24 +299,22 @@ models | 22 | Summary: lang:core; ::align_to; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | | 23 | Summary: lang:core; ::array; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | | 24 | Summary: lang:core; ::extend; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | -| 25 | Summary: lang:core; ::extend; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | -| 26 | Summary: lang:core; ::extend_packed; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 27 | Summary: lang:core; ::extend_packed; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 28 | Summary: lang:core; ::from_size_align; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 29 | Summary: lang:core; ::from_size_align_unchecked; Argument[0]; ReturnValue.Field[core::alloc::layout::Layout::size]; value | -| 30 | Summary: lang:core; ::from_size_align_unchecked; Argument[0]; ReturnValue; taint | -| 31 | Summary: lang:core; ::pad_to_align; Argument[self]; ReturnValue; taint | -| 32 | Summary: lang:core; ::repeat; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | -| 33 | Summary: lang:core; ::repeat_packed; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 34 | Summary: lang:core; ::size; Argument[self].Field[core::alloc::layout::Layout::size]; ReturnValue; value | -| 35 | Summary: lang:core; ::size; Argument[self]; ReturnValue; taint | -| 36 | Summary: lang:core; ::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 37 | Summary: lang:core; ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 38 | Summary: lang:core; ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 39 | Summary: lang:core; ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 40 | Summary: lang:core; crate::cmp::max; Argument[0]; ReturnValue; value | -| 41 | Summary: lang:core; crate::cmp::min; Argument[0]; ReturnValue; value | -| 42 | Summary: lang:core; crate::iter::traits::iterator::Iterator::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | +| 25 | Summary: lang:core; ::extend_packed; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 26 | Summary: lang:core; ::from_size_align; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 27 | Summary: lang:core; ::from_size_align_unchecked; Argument[0]; ReturnValue.Field[core::alloc::layout::Layout::size]; value | +| 28 | Summary: lang:core; ::from_size_align_unchecked; Argument[0]; ReturnValue; taint | +| 29 | Summary: lang:core; ::pad_to_align; Argument[self]; ReturnValue; taint | +| 30 | Summary: lang:core; ::repeat; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | +| 31 | Summary: lang:core; ::repeat_packed; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 32 | Summary: lang:core; ::size; Argument[self].Field[core::alloc::layout::Layout::size]; ReturnValue; value | +| 33 | Summary: lang:core; ::size; Argument[self]; ReturnValue; taint | +| 34 | Summary: lang:core; ::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 35 | Summary: lang:core; ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 36 | Summary: lang:core; ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 37 | Summary: lang:core; ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 38 | Summary: lang:core; crate::cmp::max; Argument[0]; ReturnValue; value | +| 39 | Summary: lang:core; crate::cmp::min; Argument[0]; ReturnValue; value | +| 40 | Summary: lang:core; crate::iter::traits::iterator::Iterator::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | nodes | main.rs:12:36:12:43 | ...: usize | semmle.label | ...: usize | | main.rs:18:13:18:31 | ...::realloc | semmle.label | ...::realloc | @@ -404,19 +391,10 @@ nodes | main.rs:60:34:60:35 | k1 | semmle.label | k1 | | main.rs:61:13:61:29 | ...::alloc | semmle.label | ...::alloc | | main.rs:61:31:61:32 | k2 | semmle.label | k2 | -| main.rs:62:9:62:20 | TuplePat [tuple.0] | semmle.label | TuplePat [tuple.0] | -| main.rs:62:10:62:11 | k3 | semmle.label | k3 | -| main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | semmle.label | k1.extend(...) [Ok, tuple.0] | -| main.rs:62:24:62:45 | ... .unwrap() [tuple.0] | semmle.label | ... .unwrap() [tuple.0] | -| main.rs:63:13:63:29 | ...::alloc | semmle.label | ...::alloc | -| main.rs:63:31:63:32 | k3 | semmle.label | k3 | | main.rs:64:13:64:29 | ...::alloc | semmle.label | ...::alloc | | main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | semmle.label | l3.extend_packed(...) [Ok] | | main.rs:64:31:64:59 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:64:48:64:49 | k1 | semmle.label | k1 | -| main.rs:65:13:65:29 | ...::alloc | semmle.label | ...::alloc | -| main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | semmle.label | k1.extend_packed(...) [Ok] | -| main.rs:65:31:65:59 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:67:9:67:10 | l4 | semmle.label | l4 | | main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | semmle.label | ...::array::<...>(...) [Ok] | | main.rs:67:14:67:56 | ... .unwrap() | semmle.label | ... .unwrap() | diff --git a/rust/ql/test/query-tests/security/CWE-770/main.rs b/rust/ql/test/query-tests/security/CWE-770/main.rs index 2aafe931761..f0b70190042 100644 --- a/rust/ql/test/query-tests/security/CWE-770/main.rs +++ b/rust/ql/test/query-tests/security/CWE-770/main.rs @@ -60,9 +60,9 @@ unsafe fn test_std_alloc_new_repeat_extend(v: usize) { let (k2, _offs2) = l3.extend(k1).unwrap(); let _ = std::alloc::alloc(k2); // $ Alert[rust/uncontrolled-allocation-size]=arg1 let (k3, _offs3) = k1.extend(l3).unwrap(); - let _ = std::alloc::alloc(k3); // $ Alert[rust/uncontrolled-allocation-size]=arg1 + let _ = std::alloc::alloc(k3); // $ MISSING: Alert[rust/uncontrolled-allocation-size]=arg1 (https://github.com/github/codeql/pull/19658) let _ = std::alloc::alloc(l3.extend_packed(k1).unwrap()); // $ Alert[rust/uncontrolled-allocation-size]=arg1 - let _ = std::alloc::alloc(k1.extend_packed(l3).unwrap()); // $ Alert[rust/uncontrolled-allocation-size]=arg1 + let _ = std::alloc::alloc(k1.extend_packed(l3).unwrap()); // $ MISSING: Alert[rust/uncontrolled-allocation-size]=arg1 (https://github.com/github/codeql/pull/19658) let l4 = std::alloc::Layout::array::(v).unwrap(); let _ = std::alloc::alloc(l4); // $ Alert[rust/uncontrolled-allocation-size]=arg1 diff --git a/rust/ql/test/utils-tests/modelgenerator/option.rs b/rust/ql/test/utils-tests/modelgenerator/option.rs index bc1332b75a4..4cb8bff2bc9 100644 --- a/rust/ql/test/utils-tests/modelgenerator/option.rs +++ b/rust/ql/test/utils-tests/modelgenerator/option.rs @@ -414,7 +414,7 @@ impl MyOption<&T> { } } - // summary=repo::test;::cloned;Argument[self].Field[test::option::MyOption::MySome(0)].Reference;ReturnValue.Field[test::option::MyOption::MySome(0)];value;dfc-generated + // MISSING: summary=repo::test;::cloned;Argument[self].Field[test::option::MyOption::MySome(0)].Reference;ReturnValue.Field[test::option::MyOption::MySome(0)];value;dfc-generated pub fn cloned(self) -> MyOption where T: Clone, @@ -438,7 +438,7 @@ impl MyOption<&mut T> { } } - // summary=repo::test;::cloned;Argument[self].Field[test::option::MyOption::MySome(0)].Reference;ReturnValue.Field[test::option::MyOption::MySome(0)];value;dfc-generated + // MISSING: summary=repo::test;::cloned;Argument[self].Field[test::option::MyOption::MySome(0)].Reference;ReturnValue.Field[test::option::MyOption::MySome(0)];value;dfc-generated pub fn cloned(self) -> MyOption where T: Clone, @@ -466,7 +466,7 @@ impl Clone for MyOption where T: Clone, { - // summary=repo::test;::clone;Argument[self].Field[test::option::MyOption::MySome(0)].Reference;ReturnValue.Field[test::option::MyOption::MySome(0)];value;dfc-generated + // MISSING: summary=repo::test;::clone;Argument[self].Field[test::option::MyOption::MySome(0)].Reference;ReturnValue.Field[test::option::MyOption::MySome(0)];value;dfc-generated fn clone(&self) -> Self { match self { MySome(x) => MySome(x.clone()), From ed3cf84efdec5ee0ac3615a41e8f641d85743168 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Mon, 9 Jun 2025 14:03:22 +0100 Subject: [PATCH 117/150] Update init calls subclass to not use pointto --- .../InitCallsSubclassMethod.py | 0 .../InitCallsSubclassMethod.qhelp | 0 .../InitCallsSubclassMethod.ql | 42 +++++++++++++++++++ .../ql/src/Classes/InitCallsSubclassMethod.ql | 30 ------------- 4 files changed, 42 insertions(+), 30 deletions(-) rename python/ql/src/Classes/{ => InitCallsSubclass}/InitCallsSubclassMethod.py (100%) rename python/ql/src/Classes/{ => InitCallsSubclass}/InitCallsSubclassMethod.qhelp (100%) create mode 100644 python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.ql delete mode 100644 python/ql/src/Classes/InitCallsSubclassMethod.ql diff --git a/python/ql/src/Classes/InitCallsSubclassMethod.py b/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.py similarity index 100% rename from python/ql/src/Classes/InitCallsSubclassMethod.py rename to python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.py diff --git a/python/ql/src/Classes/InitCallsSubclassMethod.qhelp b/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.qhelp similarity index 100% rename from python/ql/src/Classes/InitCallsSubclassMethod.qhelp rename to python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.qhelp diff --git a/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.ql b/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.ql new file mode 100644 index 00000000000..565ddb4017e --- /dev/null +++ b/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.ql @@ -0,0 +1,42 @@ +/** + * @name `__init__` method calls overridden method + * @description Calling a method from `__init__` that is overridden by a subclass may result in a partially + * initialized instance being observed. + * @kind problem + * @tags reliability + * correctness + * @problem.severity warning + * @sub-severity low + * @precision high + * @id py/init-calls-subclass + */ + +import python +import semmle.python.dataflow.new.DataFlow +import semmle.python.dataflow.new.internal.DataFlowDispatch + +predicate initSelfCall(Function init, DataFlow::MethodCallNode call) { + init.isInitMethod() and + call.getScope() = init and + exists(DataFlow::Node self, DataFlow::ParameterNode selfArg | + call.calls(self, _) and + selfArg.getParameter() = init.getArg(0) and + DataFlow::localFlow(selfArg, self) + ) +} + +predicate initSelfCallOverridden(Function init, DataFlow::MethodCallNode call, Function override) { + initSelfCall(init, call) and + exists(Class superclass, Class subclass | + superclass = init.getScope() and + subclass = override.getScope() and + subclass = getADirectSubclass+(superclass) and + call.calls(_, override.getName()) + ) +} + +from Function init, DataFlow::MethodCallNode call, Function override +where initSelfCallOverridden(init, call, override) +select call, + "This call to " + override.getName() + " in initialization method is overridden by " + + override.getScope().getName() + ".$@.", override, override.getName() diff --git a/python/ql/src/Classes/InitCallsSubclassMethod.ql b/python/ql/src/Classes/InitCallsSubclassMethod.ql deleted file mode 100644 index 2fb6e90dd7d..00000000000 --- a/python/ql/src/Classes/InitCallsSubclassMethod.ql +++ /dev/null @@ -1,30 +0,0 @@ -/** - * @name `__init__` method calls overridden method - * @description Calling a method from `__init__` that is overridden by a subclass may result in a partially - * initialized instance being observed. - * @kind problem - * @tags reliability - * correctness - * @problem.severity warning - * @sub-severity low - * @precision high - * @id py/init-calls-subclass - */ - -import python - -from - ClassObject supercls, string method, Call call, FunctionObject overriding, - FunctionObject overridden -where - exists(FunctionObject init, SelfAttribute sa | - supercls.declaredAttribute("__init__") = init and - call.getScope() = init.getFunction() and - call.getFunc() = sa - | - sa.getName() = method and - overridden = supercls.declaredAttribute(method) and - overriding.overrides(overridden) - ) -select call, "Call to self.$@ in __init__ method, which is overridden by $@.", overridden, method, - overriding, overriding.descriptiveString() From f3ce57840d0688494bbc5412f09f418253c85e7b Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Tue, 10 Jun 2025 11:46:11 +0100 Subject: [PATCH 118/150] Filter out some results; for if the overridden method doesn't use self, or the call is last in the initialisation. --- .../InitCallsSubclassMethod.ql | 43 +++++++++++++++---- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.ql b/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.ql index 565ddb4017e..37def06de09 100644 --- a/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.ql +++ b/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.ql @@ -25,18 +25,43 @@ predicate initSelfCall(Function init, DataFlow::MethodCallNode call) { ) } -predicate initSelfCallOverridden(Function init, DataFlow::MethodCallNode call, Function override) { - initSelfCall(init, call) and - exists(Class superclass, Class subclass | +predicate initSelfCallOverridden( + Function init, DataFlow::MethodCallNode call, Function target, Function override +) { + init.isInitMethod() and + call.getScope() = init and + exists(Class superclass, Class subclass, DataFlow::Node self, DataFlow::ParameterNode selfArg | superclass = init.getScope() and subclass = override.getScope() and subclass = getADirectSubclass+(superclass) and - call.calls(_, override.getName()) + selfArg.getParameter() = init.getArg(0) and + DataFlow::localFlow(selfArg, self) and + call.calls(self, override.getName()) and + target = superclass.getAMethod() and + target.getName() = override.getName() and + not lastUse(self) ) } -from Function init, DataFlow::MethodCallNode call, Function override -where initSelfCallOverridden(init, call, override) -select call, - "This call to " + override.getName() + " in initialization method is overridden by " + - override.getScope().getName() + ".$@.", override, override.getName() +predicate lastUse(DataFlow::Node node) { + not exists(DataFlow::Node next | DataFlow::localFlow(node, next) and node != next) +} + +predicate readsFromSelf(Function method) { + exists(DataFlow::ParameterNode self, DataFlow::Node sink | + self.getParameter() = method.getArg(0) and + DataFlow::localFlow(self, sink) + | + sink instanceof DataFlow::ArgumentNode + or + sink = any(DataFlow::AttrRead a).getObject() + ) +} + +from Function init, DataFlow::MethodCallNode call, Function target, Function override +where + initSelfCallOverridden(init, call, target, override) and + readsFromSelf(override) and + not isClassmethod(override) +select call, "This call to $@ in an initialization method is overridden by $@.", target, + target.getQualifiedName(), override, override.getQualifiedName() From a04fbc59f5ac4bfec9b567f95e4c5a9753d7bab5 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Wed, 11 Jun 2025 10:52:05 +0100 Subject: [PATCH 119/150] Update tests --- .../InitCallsSubclassMethod.ql | 28 +++---- .../InitCallsSubclassMethod.expected | 2 +- .../InitCallsSubclassMethod.qlref | 2 +- .../init_calls_subclass.py | 77 +++++++++++++++---- 4 files changed, 75 insertions(+), 34 deletions(-) diff --git a/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.ql b/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.ql index 37def06de09..02ffd53a8ae 100644 --- a/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.ql +++ b/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.ql @@ -15,22 +15,13 @@ import python import semmle.python.dataflow.new.DataFlow import semmle.python.dataflow.new.internal.DataFlowDispatch -predicate initSelfCall(Function init, DataFlow::MethodCallNode call) { - init.isInitMethod() and - call.getScope() = init and - exists(DataFlow::Node self, DataFlow::ParameterNode selfArg | - call.calls(self, _) and - selfArg.getParameter() = init.getArg(0) and - DataFlow::localFlow(selfArg, self) - ) -} - predicate initSelfCallOverridden( - Function init, DataFlow::MethodCallNode call, Function target, Function override + Function init, DataFlow::Node self, DataFlow::MethodCallNode call, Function target, + Function override ) { init.isInitMethod() and call.getScope() = init and - exists(Class superclass, Class subclass, DataFlow::Node self, DataFlow::ParameterNode selfArg | + exists(Class superclass, Class subclass, DataFlow::ParameterNode selfArg | superclass = init.getScope() and subclass = override.getScope() and subclass = getADirectSubclass+(superclass) and @@ -38,8 +29,7 @@ predicate initSelfCallOverridden( DataFlow::localFlow(selfArg, self) and call.calls(self, override.getName()) and target = superclass.getAMethod() and - target.getName() = override.getName() and - not lastUse(self) + target.getName() = override.getName() ) } @@ -58,10 +48,14 @@ predicate readsFromSelf(Function method) { ) } -from Function init, DataFlow::MethodCallNode call, Function target, Function override +from + Function init, DataFlow::Node self, DataFlow::MethodCallNode call, Function target, + Function override where - initSelfCallOverridden(init, call, target, override) and + initSelfCallOverridden(init, self, call, target, override) and readsFromSelf(override) and - not isClassmethod(override) + not isClassmethod(override) and + not lastUse(self) and + not target.getName().matches("\\_%") select call, "This call to $@ in an initialization method is overridden by $@.", target, target.getQualifiedName(), override, override.getQualifiedName() diff --git a/python/ql/test/query-tests/Classes/init-calls-subclass-method/InitCallsSubclassMethod.expected b/python/ql/test/query-tests/Classes/init-calls-subclass-method/InitCallsSubclassMethod.expected index d3cde45c1ff..4fd5171998c 100644 --- a/python/ql/test/query-tests/Classes/init-calls-subclass-method/InitCallsSubclassMethod.expected +++ b/python/ql/test/query-tests/Classes/init-calls-subclass-method/InitCallsSubclassMethod.expected @@ -1 +1 @@ -| init_calls_subclass.py:7:9:7:24 | Attribute() | Call to self.$@ in __init__ method, which is overridden by $@. | init_calls_subclass.py:10:5:10:26 | Function set_up | set_up | init_calls_subclass.py:19:5:19:26 | Function set_up | method Sub.set_up | +| init_calls_subclass.py:8:13:8:28 | ControlFlowNode for Attribute() | This call to $@ in an initialization method is overridden by $@. | init_calls_subclass.py:11:9:11:30 | Function set_up | bad1.Super.set_up | init_calls_subclass.py:20:9:20:30 | Function set_up | bad1.Sub.set_up | diff --git a/python/ql/test/query-tests/Classes/init-calls-subclass-method/InitCallsSubclassMethod.qlref b/python/ql/test/query-tests/Classes/init-calls-subclass-method/InitCallsSubclassMethod.qlref index f820a30b11a..6530409f90a 100644 --- a/python/ql/test/query-tests/Classes/init-calls-subclass-method/InitCallsSubclassMethod.qlref +++ b/python/ql/test/query-tests/Classes/init-calls-subclass-method/InitCallsSubclassMethod.qlref @@ -1 +1 @@ -Classes/InitCallsSubclassMethod.ql +Classes/InitCallsSubclass/InitCallsSubclassMethod.ql diff --git a/python/ql/test/query-tests/Classes/init-calls-subclass-method/init_calls_subclass.py b/python/ql/test/query-tests/Classes/init-calls-subclass-method/init_calls_subclass.py index 3248f8d8303..9967477b24b 100644 --- a/python/ql/test/query-tests/Classes/init-calls-subclass-method/init_calls_subclass.py +++ b/python/ql/test/query-tests/Classes/init-calls-subclass-method/init_calls_subclass.py @@ -1,22 +1,69 @@ #Superclass __init__ calls subclass method -class Super(object): +def bad1(): + class Super: - def __init__(self, arg): - self._state = "Not OK" - self.set_up(arg) - self._state = "OK" + def __init__(self, arg): + self._state = "Not OK" + self.set_up(arg) # BAD: set_up is overriden. + self._state = "OK" - def set_up(self, arg): - "Do some set up" + def set_up(self, arg): + "Do some set up" -class Sub(Super): + class Sub(Super): - def __init__(self, arg): - Super.__init__(self, arg) - self.important_state = "OK" + def __init__(self, arg): + super().__init__(arg) + self.important_state = "OK" - def set_up(self, arg): - Super.set_up(self, arg) - "Do some more set up" # Dangerous as self._state is "Not OK" and - # self.important_state is uninitialized \ No newline at end of file + def set_up(self, arg): + super().set_up(arg) + "Do some more set up" # `self` is partially initialized + if self.important_state == "OK": + pass + +def good2(): + class Super: + def __init__(self, arg): + self.a = arg + self.postproc() # OK: Here `postproc` is called after initialisation. + + def postproc(self): + if self.a == 1: + pass + + class Sub(Super): + def postproc(self): + if self.a == 2: + pass + +def good3(): + class Super: + def __init__(self, arg): + self.a = arg + self.set_b() # OK: Here `set_b` is used for initialisation, but does not read the partialy initialized state of `self`. + self.c = 1 + + def set_b(self): + self.b = 3 + + class Sub(Super): + def set_b(self): + self.b = 4 + +def good4(): + class Super: + def __init__(self, arg): + self.a = arg + # OK: Here `_set_b` is likely an internal method (as indicated by the _ prefix). + # We assume thus that regular consumers of the library will not override it, and classes that do are internal and account for `self`'s partially initialised state. + self._set_b() + self.c = 1 + + def _set_b(self): + self.b = 3 + + class Sub(Super): + def _set_b(self): + self.b = self.a+1 \ No newline at end of file From 75bb743ce31039e5693e787054471729b5239d64 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Thu, 12 Jun 2025 10:35:52 +0100 Subject: [PATCH 120/150] Update documentation --- .../InitCallsSubclassMethod.py | 48 ------------------- .../InitCallsSubclassMethod.qhelp | 31 ++++++------ .../examples/InitCallsSubclassMethodBad.py | 23 +++++++++ .../examples/InitCallsSubclassMethodGood.py | 24 ++++++++++ 4 files changed, 62 insertions(+), 64 deletions(-) delete mode 100644 python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.py create mode 100644 python/ql/src/Classes/InitCallsSubclass/examples/InitCallsSubclassMethodBad.py create mode 100644 python/ql/src/Classes/InitCallsSubclass/examples/InitCallsSubclassMethodGood.py diff --git a/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.py b/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.py deleted file mode 100644 index 6e0dedb0142..00000000000 --- a/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.py +++ /dev/null @@ -1,48 +0,0 @@ -#Superclass __init__ calls subclass method - -class Super(object): - - def __init__(self, arg): - self._state = "Not OK" - self.set_up(arg) - self._state = "OK" - - def set_up(self, arg): - "Do some set up" - -class Sub(Super): - - def __init__(self, arg): - Super.__init__(self, arg) - self.important_state = "OK" - - def set_up(self, arg): - Super.set_up(self, arg) - "Do some more set up" # Dangerous as self._state is "Not OK" - - -#Improved version with inheritance: - -class Super(object): - - def __init__(self, arg): - self._state = "Not OK" - self.super_set_up(arg) - self._state = "OK" - - def super_set_up(self, arg): - "Do some set up" - - -class Sub(Super): - - def __init__(self, arg): - Super.__init__(self, arg) - self.sub_set_up(self, arg) - self.important_state = "OK" - - - def sub_set_up(self, arg): - "Do some more set up" - - diff --git a/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.qhelp b/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.qhelp index 72904a0bd29..e729f7b5892 100644 --- a/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.qhelp +++ b/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.qhelp @@ -4,37 +4,36 @@

    -When an instance of a class is initialized, the super-class state should be -fully initialized before it becomes visible to the subclass. -Calling methods of the subclass in the superclass' __init__ -method violates this important invariant. +When initializing an instance of the class in the class' __init__ method, calls tha are made using the instance may receive an instance of the class that is not +yet fully initialized. When a method called in an initializer is overridden in a subclass, the subclass method receives the instance +in a potentially unexpected state, which may lead to runtime errors from accessing uninitialized fields, and generally makes the code +more difficult to maintain.

    -

    Do not use methods that are subclassed in the construction of an object. -For simpler cases move the initialization into the superclass' __init__ method, -preventing it being overridden. Additional initialization of subclass should -be done in the __init__ method of the subclass. -For more complex cases, it is advisable to use a static method or function to manage -object creation. +

    If possible, refactor the initializer method such that initialization is complete before calling any overridden methods. +For helper methods used as part of initialization, avoid overriding them, and instead call any additional logic required +in the subclass' __init__ method. +

    +If calling an overridden method is required, consider marking it as an internal method (by using an _ prefix) to +discourage external users of the library from overriding it and observing partially initialized state.

    -

    Alternatively, avoid inheritance altogether using composition instead.

    -
    +

    In the following case, the `__init__` method of `Super` calls the `set_up` method that is overriden by `Sub`. +This results in `Sun.set_up` being called with a partially initialized instance of `Super` which may be unexpected. - +

    In the following case, the initialization methods are separate between the superclass and the subclass.

  • CERT Secure Coding: -Rule MET05-J. Although this is a Java rule it applies to most object-oriented languages.
  • -
  • Python Standard Library: Static methods.
  • -
  • Wikipedia: Composition over inheritance.
  • +Rule MET05-J. Reference discusses Java but is applicable to object oriented programming in many languages. +
  • StackOverflow: Overridable method calls in constructors.
  • diff --git a/python/ql/src/Classes/InitCallsSubclass/examples/InitCallsSubclassMethodBad.py b/python/ql/src/Classes/InitCallsSubclass/examples/InitCallsSubclassMethodBad.py new file mode 100644 index 00000000000..4bb5466267d --- /dev/null +++ b/python/ql/src/Classes/InitCallsSubclass/examples/InitCallsSubclassMethodBad.py @@ -0,0 +1,23 @@ +class Super(object): + + def __init__(self, arg): + self._state = "Not OK" + self.set_up(arg) # BAD: This method is overridden, so `Sub.set_up` receives a partially initialized instance. + self._state = "OK" + + def set_up(self, arg): + "Do some setup" + self.a = 2 + +class Sub(Super): + + def __init__(self, arg): + super().__init__(arg) + self.important_state = "OK" + + def set_up(self, arg): + super().set_up(arg) + "Do some more setup" + # BAD: at this point `self._state` is set to `"Not OK"`, and `self.important_state` is not initialized. + if self._state == "OK": + self.b = self.a + 2 diff --git a/python/ql/src/Classes/InitCallsSubclass/examples/InitCallsSubclassMethodGood.py b/python/ql/src/Classes/InitCallsSubclass/examples/InitCallsSubclassMethodGood.py new file mode 100644 index 00000000000..ebf501f0664 --- /dev/null +++ b/python/ql/src/Classes/InitCallsSubclass/examples/InitCallsSubclassMethodGood.py @@ -0,0 +1,24 @@ +class Super(object): + + def __init__(self, arg): + self._state = "Not OK" + self.super_set_up(arg) # GOOD: This isn't overriden. Instead, additional setup the subclass needs is called by the subclass' `__init__ method.` + self._state = "OK" + + def super_set_up(self, arg): + "Do some setup" + self.a = 2 + + +class Sub(Super): + + def __init__(self, arg): + super().__init__(arg) + self.sub_set_up(self, arg) + self.important_state = "OK" + + + def sub_set_up(self, arg): + "Do some more setup" + if self._state == "OK": + self.b = self.a + 2 \ No newline at end of file From 90bf45a3ba27186d4d0a874fba9bca5501b289ea Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Thu, 12 Jun 2025 11:14:37 +0100 Subject: [PATCH 121/150] Fix docs --- .../InitCallsSubclass/InitCallsSubclassMethod.qhelp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.qhelp b/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.qhelp index e729f7b5892..81e16aacd26 100644 --- a/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.qhelp +++ b/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.qhelp @@ -24,16 +24,17 @@ discourage external users of the library from overriding it and observing partia

    In the following case, the `__init__` method of `Super` calls the `set_up` method that is overriden by `Sub`. -This results in `Sun.set_up` being called with a partially initialized instance of `Super` which may be unexpected. - -

    In the following case, the initialization methods are separate between the superclass and the subclass. +This results in `Sun.set_up` being called with a partially initialized instance of `Super` which may be unexpected.

    + +

    In the following case, the initialization methods are separate between the superclass and the subclass.

    +
  • CERT Secure Coding: Rule MET05-J. Reference discusses Java but is applicable to object oriented programming in many languages.
  • -
  • StackOverflow: Overridable method calls in constructors.
  • +
  • StackOverflow: Overridable method calls in constructors.
  • From 95153c172ce8a2c984b6edc4328916da0e1e53ea Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Fri, 13 Jun 2025 10:23:03 +0100 Subject: [PATCH 122/150] Add some more details to the documentation --- .../InitCallsSubclassMethod.qhelp | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.qhelp b/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.qhelp index 81e16aacd26..55788736b54 100644 --- a/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.qhelp +++ b/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.qhelp @@ -6,8 +6,9 @@

    When initializing an instance of the class in the class' __init__ method, calls tha are made using the instance may receive an instance of the class that is not yet fully initialized. When a method called in an initializer is overridden in a subclass, the subclass method receives the instance -in a potentially unexpected state, which may lead to runtime errors from accessing uninitialized fields, and generally makes the code -more difficult to maintain. +in a potentially unexpected state. Fields that would be initialized after the call, including potentially in the subclass' __init__ method, +will not be initialized. This may lead to runtime errors, as well as make the code more difficult to maintain, as future changes may not +be aware of which fields would not be initialized.

    @@ -16,14 +17,19 @@ more difficult to maintain.

    If possible, refactor the initializer method such that initialization is complete before calling any overridden methods. For helper methods used as part of initialization, avoid overriding them, and instead call any additional logic required in the subclass' __init__ method. -

    -If calling an overridden method is required, consider marking it as an internal method (by using an _ prefix) to -discourage external users of the library from overriding it and observing partially initialized state. +

    +

    +If the overridden method does not depend on the instance self, and only on its class, consider making it a @classmethod or @staticmethod instead. +

    +

    +If calling an overridden method is absolutely required, consider marking it as an internal method (by using an _ prefix) to +discourage external users of the library from overriding it and observing partially initialized state, and ensure that the fact it is called during initialization +is mentioned in the documentation.

    -

    In the following case, the `__init__` method of `Super` calls the `set_up` method that is overriden by `Sub`. +

    In the following case, the __init__ method of Super calls the set_up method that is overridden by Sub. This results in `Sun.set_up` being called with a partially initialized instance of `Super` which may be unexpected.

    In the following case, the initialization methods are separate between the superclass and the subclass.

    @@ -35,7 +41,7 @@ This results in `Sun.set_up` being called with a partially initialized instance
  • CERT Secure Coding: Rule MET05-J. Reference discusses Java but is applicable to object oriented programming in many languages.
  • StackOverflow: Overridable method calls in constructors.
  • - +
  • Python documentation: @classmethod.
  • From 22a6fa3ebfb1e6315b0007fa5b76e3349afc41a0 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Fri, 13 Jun 2025 10:36:27 +0100 Subject: [PATCH 123/150] Remove case for being last in initialisation. This pattern can still be a problem if the subclass overrides initialisation. --- .../Classes/InitCallsSubclass/InitCallsSubclassMethod.ql | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.ql b/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.ql index 02ffd53a8ae..32eb5ffe79e 100644 --- a/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.ql +++ b/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.ql @@ -5,6 +5,7 @@ * @kind problem * @tags reliability * correctness + * quality * @problem.severity warning * @sub-severity low * @precision high @@ -33,10 +34,6 @@ predicate initSelfCallOverridden( ) } -predicate lastUse(DataFlow::Node node) { - not exists(DataFlow::Node next | DataFlow::localFlow(node, next) and node != next) -} - predicate readsFromSelf(Function method) { exists(DataFlow::ParameterNode self, DataFlow::Node sink | self.getParameter() = method.getArg(0) and @@ -55,7 +52,7 @@ where initSelfCallOverridden(init, self, call, target, override) and readsFromSelf(override) and not isClassmethod(override) and - not lastUse(self) and + not isStaticmethod(override) and not target.getName().matches("\\_%") select call, "This call to $@ in an initialization method is overridden by $@.", target, target.getQualifiedName(), override, override.getQualifiedName() From 2c8896848f7c85aa4c291419235078c77622d011 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Fri, 13 Jun 2025 10:45:06 +0100 Subject: [PATCH 124/150] Update integration test output --- .../query-suite/python-code-quality.qls.expected | 1 + 1 file changed, 1 insertion(+) diff --git a/python/ql/integration-tests/query-suite/python-code-quality.qls.expected b/python/ql/integration-tests/query-suite/python-code-quality.qls.expected index c2168cab937..b93829875d2 100644 --- a/python/ql/integration-tests/query-suite/python-code-quality.qls.expected +++ b/python/ql/integration-tests/query-suite/python-code-quality.qls.expected @@ -1,3 +1,4 @@ +ql/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.ql ql/python/ql/src/Functions/IterReturnsNonSelf.ql ql/python/ql/src/Functions/NonCls.ql ql/python/ql/src/Functions/NonSelf.ql From 547c03cee63c5742f358bdde5026f249c2d811b7 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Fri, 13 Jun 2025 11:16:54 +0100 Subject: [PATCH 125/150] Update tests --- .../python-security-and-quality.qls.expected | 2 +- .../InitCallsSubclassMethod.expected | 1 + .../init_calls_subclass.py | 12 +++++++++--- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/python/ql/integration-tests/query-suite/python-security-and-quality.qls.expected b/python/ql/integration-tests/query-suite/python-security-and-quality.qls.expected index e391dea95cd..170d9f442f9 100644 --- a/python/ql/integration-tests/query-suite/python-security-and-quality.qls.expected +++ b/python/ql/integration-tests/query-suite/python-security-and-quality.qls.expected @@ -4,7 +4,7 @@ ql/python/ql/src/Classes/EqualsOrHash.ql ql/python/ql/src/Classes/EqualsOrNotEquals.ql ql/python/ql/src/Classes/IncompleteOrdering.ql ql/python/ql/src/Classes/InconsistentMRO.ql -ql/python/ql/src/Classes/InitCallsSubclassMethod.ql +ql/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.ql ql/python/ql/src/Classes/MissingCallToDel.ql ql/python/ql/src/Classes/MissingCallToInit.ql ql/python/ql/src/Classes/MutatingDescriptor.ql diff --git a/python/ql/test/query-tests/Classes/init-calls-subclass-method/InitCallsSubclassMethod.expected b/python/ql/test/query-tests/Classes/init-calls-subclass-method/InitCallsSubclassMethod.expected index 4fd5171998c..f06282e133b 100644 --- a/python/ql/test/query-tests/Classes/init-calls-subclass-method/InitCallsSubclassMethod.expected +++ b/python/ql/test/query-tests/Classes/init-calls-subclass-method/InitCallsSubclassMethod.expected @@ -1 +1,2 @@ | init_calls_subclass.py:8:13:8:28 | ControlFlowNode for Attribute() | This call to $@ in an initialization method is overridden by $@. | init_calls_subclass.py:11:9:11:30 | Function set_up | bad1.Super.set_up | init_calls_subclass.py:20:9:20:30 | Function set_up | bad1.Sub.set_up | +| init_calls_subclass.py:32:13:32:27 | ControlFlowNode for Attribute() | This call to $@ in an initialization method is overridden by $@. | init_calls_subclass.py:34:9:34:27 | Function postproc | bad2.Super.postproc | init_calls_subclass.py:43:9:43:27 | Function postproc | bad2.Sub.postproc | diff --git a/python/ql/test/query-tests/Classes/init-calls-subclass-method/init_calls_subclass.py b/python/ql/test/query-tests/Classes/init-calls-subclass-method/init_calls_subclass.py index 9967477b24b..2ef864eb03c 100644 --- a/python/ql/test/query-tests/Classes/init-calls-subclass-method/init_calls_subclass.py +++ b/python/ql/test/query-tests/Classes/init-calls-subclass-method/init_calls_subclass.py @@ -23,19 +23,25 @@ def bad1(): if self.important_state == "OK": pass -def good2(): +def bad2(): class Super: def __init__(self, arg): self.a = arg - self.postproc() # OK: Here `postproc` is called after initialisation. + # BAD: postproc is called after initialization. This is still an issue + # since it may still occur before all initialization on a subclass is complete. + self.postproc() def postproc(self): if self.a == 1: pass class Sub(Super): + def __init__(self, arg): + super().__init__(arg) + self.b = 3 + def postproc(self): - if self.a == 2: + if self.a == 2 and self.b == 3: pass def good3(): From d1bd7228c3b8ab1ab8eb111aadef6612157b8860 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Tue, 17 Jun 2025 09:33:07 +0100 Subject: [PATCH 126/150] Fix typos --- .../Classes/InitCallsSubclass/InitCallsSubclassMethod.qhelp | 2 +- .../Classes/init-calls-subclass-method/init_calls_subclass.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.qhelp b/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.qhelp index 55788736b54..be8ba98c613 100644 --- a/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.qhelp +++ b/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.qhelp @@ -30,7 +30,7 @@ is mentioned in the documentation.

    In the following case, the __init__ method of Super calls the set_up method that is overridden by Sub. -This results in `Sun.set_up` being called with a partially initialized instance of `Super` which may be unexpected.

    +This results in Sub.set_up being called with a partially initialized instance of Super which may be unexpected.

    In the following case, the initialization methods are separate between the superclass and the subclass.

    diff --git a/python/ql/test/query-tests/Classes/init-calls-subclass-method/init_calls_subclass.py b/python/ql/test/query-tests/Classes/init-calls-subclass-method/init_calls_subclass.py index 2ef864eb03c..ef944a9c7ef 100644 --- a/python/ql/test/query-tests/Classes/init-calls-subclass-method/init_calls_subclass.py +++ b/python/ql/test/query-tests/Classes/init-calls-subclass-method/init_calls_subclass.py @@ -48,7 +48,7 @@ def good3(): class Super: def __init__(self, arg): self.a = arg - self.set_b() # OK: Here `set_b` is used for initialisation, but does not read the partialy initialized state of `self`. + self.set_b() # OK: Here `set_b` is used for initialization, but does not read the partially initialized state of `self`. self.c = 1 def set_b(self): @@ -63,7 +63,7 @@ def good4(): def __init__(self, arg): self.a = arg # OK: Here `_set_b` is likely an internal method (as indicated by the _ prefix). - # We assume thus that regular consumers of the library will not override it, and classes that do are internal and account for `self`'s partially initialised state. + # We assume thus that regular consumers of the library will not override it, and classes that do are internal and account for `self`'s partially initialized state. self._set_b() self.c = 1 From 299fe2eb3f16ce7a9811fdd3f345ef01af4ce993 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Tue, 17 Jun 2025 16:19:50 +0200 Subject: [PATCH 127/150] Rust: add `proc-macro` capabilities to QL tests This adds the possibility to add a special `proc_macro.rs` source file to QL tests, which will be generated into a `proc_macro` crate the usual `lib` crate depends on. This allow to define procedural macros in QL tests, and is here used to move the `macro-expansion` integration test to be a language test instead. As the generated manifests involved were starting to get a bit complex, they are now generated from a `mustache` template. --- Cargo.lock | 1 + .../tree_sitter_extractors_deps/defs.bzl | 1 + rust/extractor/BUILD.bazel | 1 + rust/extractor/Cargo.toml | 1 + rust/extractor/src/qltest.rs | 67 +- rust/extractor/src/qltest_cargo.mustache | 42 + .../macro-expansion/Cargo.toml | 3 - .../macro-expansion/attributes/Cargo.toml | 7 - .../macro-expansion/attributes/src/lib.rs | 16 - .../macro-expansion/calls/Cargo.toml | 6 - .../macro-expansion/calls/src/lib.rs | 30 - .../macro-expansion/diagnostics.expected | 55 - .../macro-expansion/proc_macros/Cargo.toml | 11 - .../macro-expansion/source_archive.expected | 4 - .../macro-expansion/test.expected | 34 - .../macro-expansion/test_macro_expansion.py | 2 - rust/ql/test/.gitignore | 3 + .../PathResolutionConsistency.expected | 3 + .../Cargo.lock | 22 +- .../macro-expansion/PrintAst.expected | 2174 +++++++++++++++++ .../PrintAst.qlref | 0 .../extractor-tests/macro-expansion/call.rs | 14 + .../macro-expansion/included}/included.rs | 0 .../macro-expansion/macro_expansion.rs | 80 + .../macro-expansion/proc_macro.rs} | 16 + .../extractor-tests/macro-expansion}/some.txt | 0 .../macro-expansion/test.expected | 37 + .../extractor-tests}/macro-expansion/test.ql | 5 +- .../macro_expansion/PrintAst.expected | 155 -- .../macro_expansion/macro_expansion.rs | 8 - .../macro_expansion/options.yml | 2 - .../macro_expansion/test.expected | 2 - .../extractor-tests/macro_expansion/test.ql | 6 - 33 files changed, 2428 insertions(+), 380 deletions(-) create mode 100644 rust/extractor/src/qltest_cargo.mustache delete mode 100644 rust/ql/integration-tests/macro-expansion/Cargo.toml delete mode 100644 rust/ql/integration-tests/macro-expansion/attributes/Cargo.toml delete mode 100644 rust/ql/integration-tests/macro-expansion/attributes/src/lib.rs delete mode 100644 rust/ql/integration-tests/macro-expansion/calls/Cargo.toml delete mode 100644 rust/ql/integration-tests/macro-expansion/calls/src/lib.rs delete mode 100644 rust/ql/integration-tests/macro-expansion/diagnostics.expected delete mode 100644 rust/ql/integration-tests/macro-expansion/proc_macros/Cargo.toml delete mode 100644 rust/ql/integration-tests/macro-expansion/source_archive.expected delete mode 100644 rust/ql/integration-tests/macro-expansion/test.expected delete mode 100644 rust/ql/integration-tests/macro-expansion/test_macro_expansion.py create mode 100644 rust/ql/test/extractor-tests/macro-expansion/CONSISTENCY/PathResolutionConsistency.expected rename rust/ql/test/extractor-tests/{macro_expansion => macro-expansion}/Cargo.lock (84%) create mode 100644 rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected rename rust/ql/test/extractor-tests/{macro_expansion => macro-expansion}/PrintAst.qlref (100%) create mode 100644 rust/ql/test/extractor-tests/macro-expansion/call.rs rename rust/ql/{integration-tests/macro-expansion/calls/src => test/extractor-tests/macro-expansion/included}/included.rs (100%) create mode 100644 rust/ql/test/extractor-tests/macro-expansion/macro_expansion.rs rename rust/ql/{integration-tests/macro-expansion/proc_macros/src/lib.rs => test/extractor-tests/macro-expansion/proc_macro.rs} (56%) rename rust/ql/{integration-tests/macro-expansion/calls/src => test/extractor-tests/macro-expansion}/some.txt (100%) create mode 100644 rust/ql/test/extractor-tests/macro-expansion/test.expected rename rust/ql/{integration-tests => test/extractor-tests}/macro-expansion/test.ql (81%) delete mode 100644 rust/ql/test/extractor-tests/macro_expansion/PrintAst.expected delete mode 100644 rust/ql/test/extractor-tests/macro_expansion/macro_expansion.rs delete mode 100644 rust/ql/test/extractor-tests/macro_expansion/options.yml delete mode 100644 rust/ql/test/extractor-tests/macro_expansion/test.expected delete mode 100644 rust/ql/test/extractor-tests/macro_expansion/test.ql diff --git a/Cargo.lock b/Cargo.lock index 934cae590c1..80417917020 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -426,6 +426,7 @@ dependencies = [ "figment", "glob", "itertools 0.14.0", + "mustache", "num-traits", "ra_ap_base_db", "ra_ap_cfg", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl b/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl index 0247ee36d9f..547a1e47606 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl @@ -334,6 +334,7 @@ _NORMAL_DEPENDENCIES = { "figment": Label("@vendor_ts__figment-0.10.19//:figment"), "glob": Label("@vendor_ts__glob-0.3.2//:glob"), "itertools": Label("@vendor_ts__itertools-0.14.0//:itertools"), + "mustache": Label("@vendor_ts__mustache-0.9.0//:mustache"), "num-traits": Label("@vendor_ts__num-traits-0.2.19//:num_traits"), "ra_ap_base_db": Label("@vendor_ts__ra_ap_base_db-0.0.273//:ra_ap_base_db"), "ra_ap_cfg": Label("@vendor_ts__ra_ap_cfg-0.0.273//:ra_ap_cfg"), diff --git a/rust/extractor/BUILD.bazel b/rust/extractor/BUILD.bazel index 124895b149c..fe5d8e50859 100644 --- a/rust/extractor/BUILD.bazel +++ b/rust/extractor/BUILD.bazel @@ -7,6 +7,7 @@ codeql_rust_binary( name = "extractor", srcs = glob(["src/**/*.rs"]), aliases = aliases(), + compile_data = ["src/qltest_cargo.mustache"], proc_macro_deps = all_crate_deps( proc_macro = True, ) + [ diff --git a/rust/extractor/Cargo.toml b/rust/extractor/Cargo.toml index bdbe7c969ee..fa3f6171bf8 100644 --- a/rust/extractor/Cargo.toml +++ b/rust/extractor/Cargo.toml @@ -41,3 +41,4 @@ tracing = "0.1.41" tracing-flame = "0.2.0" tracing-subscriber = "0.3.19" chalk-ir = "0.100.0" +mustache = "0.9.0" diff --git a/rust/extractor/src/qltest.rs b/rust/extractor/src/qltest.rs index de0c36df784..665a26469cb 100644 --- a/rust/extractor/src/qltest.rs +++ b/rust/extractor/src/qltest.rs @@ -16,39 +16,54 @@ fn dump_lib() -> anyhow::Result<()> { let lib = paths .iter() .map(|p| p.file_stem().expect("results of glob must have a name")) - .filter(|&p| !["main", "lib"].map(OsStr::new).contains(&p)) + .filter(|&p| !["main", "lib", "proc_macro"].map(OsStr::new).contains(&p)) .map(|p| format!("mod {};", p.to_string_lossy())) .join("\n"); fs::write("lib.rs", lib).context("writing lib.rs") } +#[derive(serde::Serialize)] +enum TestCargoManifest<'a> { + Workspace {}, + Lib { + uses_proc_macro: bool, + uses_main: bool, + dependencies: &'a [String], + }, + Macro {}, +} + +impl TestCargoManifest<'_> { + pub fn dump(&self, path: impl AsRef) -> anyhow::Result<()> { + static TEMPLATE: std::sync::LazyLock = std::sync::LazyLock::new(|| { + mustache::compile_str(include_str!("qltest_cargo.mustache")) + .expect("compiling template") + }); + + let path = path.as_ref(); + fs::create_dir_all(path).with_context(|| format!("creating {}", path.display()))?; + let path = path.join("Cargo.toml"); + let rendered = TEMPLATE + .render_to_string(&self) + .with_context(|| format!("rendering {}", path.display()))?; + fs::write(&path, rendered).with_context(|| format!("writing {}", path.display())) + } +} fn dump_cargo_manifest(dependencies: &[String]) -> anyhow::Result<()> { - let mut manifest = String::from( - r#"[workspace] -[package] -name = "test" -version="0.0.1" -edition="2021" -[lib] -path="lib.rs" -"#, - ); - if fs::exists("main.rs").context("checking existence of main.rs")? { - manifest.push_str( - r#"[[bin]] -name = "main" -path = "main.rs" -"#, - ); + let uses_proc_macro = + fs::exists("proc_macro.rs").context("checking existence of proc_macro.rs")?; + let lib_manifest = TestCargoManifest::Lib { + uses_proc_macro, + uses_main: fs::exists("main.rs").context("checking existence of main.rs")?, + dependencies, + }; + if uses_proc_macro { + TestCargoManifest::Workspace {}.dump("")?; + lib_manifest.dump(".lib")?; + TestCargoManifest::Macro {}.dump(".proc_macro") + } else { + lib_manifest.dump("") } - if !dependencies.is_empty() { - manifest.push_str("[dependencies]\n"); - for dep in dependencies { - manifest.push_str(dep); - manifest.push('\n'); - } - } - fs::write("Cargo.toml", manifest).context("writing Cargo.toml") } fn set_sources(config: &mut Config) -> anyhow::Result<()> { diff --git a/rust/extractor/src/qltest_cargo.mustache b/rust/extractor/src/qltest_cargo.mustache new file mode 100644 index 00000000000..183c7fffd15 --- /dev/null +++ b/rust/extractor/src/qltest_cargo.mustache @@ -0,0 +1,42 @@ +{{#Workspace}} +[workspace] +resolver = "2" +members = [".lib", ".proc_macro"] +{{/Workspace}} + +{{#Lib}} +{{^uses_proc_macro}} +[workspace] +{{/uses_proc_macro}} +[package] +name = "test" +version = "0.1.0" +edition = "2021" +[lib] +path = "{{#uses_proc_macro}}../{{/uses_proc_macro}}lib.rs" +{{#uses_main}} +[[bin]] +name = "main" +path = "{{#uses_proc_macro}}../{{/uses_proc_macro}}main.rs" +{{/uses_main}} +[dependencies] +{{#uses_proc_macro}} +proc_macro = { path = "../.proc_macro" } +{{/uses_proc_macro}} +{{#dependencies}} +{{.}} +{{/dependencies}} +{{/Lib}} + +{{#Macro}} +[package] +name = "proc_macro" +version = "0.1.0" +edition = "2021" +[lib] +path = "../proc_macro.rs" +proc_macro = true +[dependencies] +quote = "1.0.40" +syn = { version = "2.0.100", features = ["full"] } +{{/Macro}} diff --git a/rust/ql/integration-tests/macro-expansion/Cargo.toml b/rust/ql/integration-tests/macro-expansion/Cargo.toml deleted file mode 100644 index 9be2ec64b57..00000000000 --- a/rust/ql/integration-tests/macro-expansion/Cargo.toml +++ /dev/null @@ -1,3 +0,0 @@ -[workspace] -members = [ "attributes", "calls", "proc_macros"] -resolver = "2" diff --git a/rust/ql/integration-tests/macro-expansion/attributes/Cargo.toml b/rust/ql/integration-tests/macro-expansion/attributes/Cargo.toml deleted file mode 100644 index b475ead960a..00000000000 --- a/rust/ql/integration-tests/macro-expansion/attributes/Cargo.toml +++ /dev/null @@ -1,7 +0,0 @@ -[package] -name = "attributes" -version = "0.1.0" -edition = "2024" - -[dependencies] -proc_macros = { path = "../proc_macros" } diff --git a/rust/ql/integration-tests/macro-expansion/attributes/src/lib.rs b/rust/ql/integration-tests/macro-expansion/attributes/src/lib.rs deleted file mode 100644 index 682083aa10a..00000000000 --- a/rust/ql/integration-tests/macro-expansion/attributes/src/lib.rs +++ /dev/null @@ -1,16 +0,0 @@ -use proc_macros::repeat; - -#[repeat(3)] -fn foo() { - _ = concat!("Hello ", "world!"); - - #[repeat(2)] - fn inner() {} -} - -#[repeat(2)] -#[repeat(3)] -fn bar() {} - -#[repeat(0)] -fn baz() {} diff --git a/rust/ql/integration-tests/macro-expansion/calls/Cargo.toml b/rust/ql/integration-tests/macro-expansion/calls/Cargo.toml deleted file mode 100644 index d38cf944489..00000000000 --- a/rust/ql/integration-tests/macro-expansion/calls/Cargo.toml +++ /dev/null @@ -1,6 +0,0 @@ -[package] -name = "calls" -version = "0.1.0" -edition = "2024" - -[dependencies] diff --git a/rust/ql/integration-tests/macro-expansion/calls/src/lib.rs b/rust/ql/integration-tests/macro-expansion/calls/src/lib.rs deleted file mode 100644 index df3fccb7c40..00000000000 --- a/rust/ql/integration-tests/macro-expansion/calls/src/lib.rs +++ /dev/null @@ -1,30 +0,0 @@ -struct S; - -macro_rules! def_x { - () => { - fn x() {} - }; -} - -impl S { - def_x!(); // this doesn't expand since 0.0.274 -} - -macro_rules! my_macro { - ($head:expr, $($tail:tt)*) => { format!($head, $($tail)*) }; -} - - -fn test() { - _ = concat!("x", "y"); - - _ = my_macro!( - concat!("<", "{}", ">"), // this doesn't expand since 0.0.274 - "hi", - ); -} - -include!("included.rs"); - -#[doc = include_str!("some.txt")] // this doesn't expand since 0.0.274 -fn documented() {} diff --git a/rust/ql/integration-tests/macro-expansion/diagnostics.expected b/rust/ql/integration-tests/macro-expansion/diagnostics.expected deleted file mode 100644 index 511bd49f1a5..00000000000 --- a/rust/ql/integration-tests/macro-expansion/diagnostics.expected +++ /dev/null @@ -1,55 +0,0 @@ -{ - "attributes": { - "durations": { - "crateGraph": { - "ms": "__REDACTED__", - "pretty": "__REDACTED__" - }, - "extract": { - "ms": "__REDACTED__", - "pretty": "__REDACTED__" - }, - "extractLibrary": { - "ms": "__REDACTED__", - "pretty": "__REDACTED__" - }, - "findManifests": { - "ms": "__REDACTED__", - "pretty": "__REDACTED__" - }, - "loadManifest": { - "ms": "__REDACTED__", - "pretty": "__REDACTED__" - }, - "loadSource": { - "ms": "__REDACTED__", - "pretty": "__REDACTED__" - }, - "parse": { - "ms": "__REDACTED__", - "pretty": "__REDACTED__" - }, - "parseLibrary": { - "ms": "__REDACTED__", - "pretty": "__REDACTED__" - }, - "total": { - "ms": "__REDACTED__", - "pretty": "__REDACTED__" - } - }, - "numberOfFiles": 4, - "numberOfManifests": 1 - }, - "severity": "note", - "source": { - "extractorName": "rust", - "id": "rust/extractor/telemetry", - "name": "telemetry" - }, - "visibility": { - "cliSummaryTable": false, - "statusPage": false, - "telemetry": true - } -} diff --git a/rust/ql/integration-tests/macro-expansion/proc_macros/Cargo.toml b/rust/ql/integration-tests/macro-expansion/proc_macros/Cargo.toml deleted file mode 100644 index 712f7ba3393..00000000000 --- a/rust/ql/integration-tests/macro-expansion/proc_macros/Cargo.toml +++ /dev/null @@ -1,11 +0,0 @@ -[package] -name = "proc_macros" -version = "0.1.0" -edition = "2024" - -[lib] -proc-macro = true - -[dependencies] -quote = "1.0.40" -syn = { version = "2.0.100", features = ["full"] } diff --git a/rust/ql/integration-tests/macro-expansion/source_archive.expected b/rust/ql/integration-tests/macro-expansion/source_archive.expected deleted file mode 100644 index c1700a0a300..00000000000 --- a/rust/ql/integration-tests/macro-expansion/source_archive.expected +++ /dev/null @@ -1,4 +0,0 @@ -attributes/src/lib.rs -calls/src/included.rs -calls/src/lib.rs -proc_macros/src/lib.rs diff --git a/rust/ql/integration-tests/macro-expansion/test.expected b/rust/ql/integration-tests/macro-expansion/test.expected deleted file mode 100644 index 24d95c99b35..00000000000 --- a/rust/ql/integration-tests/macro-expansion/test.expected +++ /dev/null @@ -1,34 +0,0 @@ -attribute_macros -| attributes/src/lib.rs:3:1:9:1 | fn foo | 0 | attributes/src/lib.rs:4:1:8:16 | fn foo_0 | -| attributes/src/lib.rs:3:1:9:1 | fn foo | 1 | attributes/src/lib.rs:4:1:8:16 | fn foo_1 | -| attributes/src/lib.rs:3:1:9:1 | fn foo | 2 | attributes/src/lib.rs:4:1:8:16 | fn foo_2 | -| attributes/src/lib.rs:7:5:8:16 | fn inner | 0 | attributes/src/lib.rs:8:5:8:16 | fn inner_0 | -| attributes/src/lib.rs:7:5:8:16 | fn inner | 0 | attributes/src/lib.rs:8:5:8:16 | fn inner_0 | -| attributes/src/lib.rs:7:5:8:16 | fn inner | 0 | attributes/src/lib.rs:8:5:8:16 | fn inner_0 | -| attributes/src/lib.rs:7:5:8:16 | fn inner | 1 | attributes/src/lib.rs:8:5:8:16 | fn inner_1 | -| attributes/src/lib.rs:7:5:8:16 | fn inner | 1 | attributes/src/lib.rs:8:5:8:16 | fn inner_1 | -| attributes/src/lib.rs:7:5:8:16 | fn inner | 1 | attributes/src/lib.rs:8:5:8:16 | fn inner_1 | -| attributes/src/lib.rs:11:1:13:11 | fn bar | 0 | attributes/src/lib.rs:12:1:13:10 | fn bar_0 | -| attributes/src/lib.rs:11:1:13:11 | fn bar | 1 | attributes/src/lib.rs:12:1:13:10 | fn bar_1 | -| attributes/src/lib.rs:12:1:13:10 | fn bar_0 | 0 | attributes/src/lib.rs:13:1:13:10 | fn bar_0_0 | -| attributes/src/lib.rs:12:1:13:10 | fn bar_0 | 1 | attributes/src/lib.rs:13:1:13:10 | fn bar_0_1 | -| attributes/src/lib.rs:12:1:13:10 | fn bar_0 | 2 | attributes/src/lib.rs:13:1:13:10 | fn bar_0_2 | -| attributes/src/lib.rs:12:1:13:10 | fn bar_1 | 0 | attributes/src/lib.rs:13:1:13:10 | fn bar_1_0 | -| attributes/src/lib.rs:12:1:13:10 | fn bar_1 | 1 | attributes/src/lib.rs:13:1:13:10 | fn bar_1_1 | -| attributes/src/lib.rs:12:1:13:10 | fn bar_1 | 2 | attributes/src/lib.rs:13:1:13:10 | fn bar_1_2 | -macro_calls -| attributes/src/lib.rs:5:9:5:34 | concat!... | attributes/src/lib.rs:5:17:5:34 | "Hello world!" | -| attributes/src/lib.rs:5:9:5:34 | concat!... | attributes/src/lib.rs:5:17:5:34 | "Hello world!" | -| attributes/src/lib.rs:5:9:5:34 | concat!... | attributes/src/lib.rs:5:17:5:34 | "Hello world!" | -| calls/src/included.rs:2:9:2:39 | concat!... | calls/src/included.rs:2:17:2:38 | "Hello world!" | -| calls/src/lib.rs:10:5:10:13 | def_x!... | calls/src/lib.rs:10:5:10:13 | MacroItems | -| calls/src/lib.rs:19:9:19:25 | concat!... | calls/src/lib.rs:19:17:19:24 | "xy" | -| calls/src/lib.rs:21:9:24:5 | my_macro!... | calls/src/lib.rs:22:9:23:13 | MacroExpr | -| calls/src/lib.rs:22:9:22:31 | concat!... | calls/src/lib.rs:22:17:22:30 | "<{}>" | -| calls/src/lib.rs:22:9:23:13 | ...::format_args!... | calls/src/lib.rs:22:9:23:13 | FormatArgsExpr | -| calls/src/lib.rs:22:9:23:13 | format!... | calls/src/lib.rs:22:9:23:13 | ...::must_use(...) | -| calls/src/lib.rs:27:1:27:24 | concat!... | calls/src/lib.rs:27:1:27:24 | "Hello world!" | -| calls/src/lib.rs:27:1:27:24 | include!... | calls/src/lib.rs:27:1:27:24 | MacroItems | -| calls/src/lib.rs:29:9:29:32 | include_str!... | calls/src/lib.rs:29:22:29:31 | "" | -unexpanded_macro_calls -| attributes/src/lib.rs:5:9:5:35 | concat!... | diff --git a/rust/ql/integration-tests/macro-expansion/test_macro_expansion.py b/rust/ql/integration-tests/macro-expansion/test_macro_expansion.py deleted file mode 100644 index 0d20cc2e27d..00000000000 --- a/rust/ql/integration-tests/macro-expansion/test_macro_expansion.py +++ /dev/null @@ -1,2 +0,0 @@ -def test_macro_expansion(codeql, rust, check_source_archive, rust_check_diagnostics): - codeql.database.create() diff --git a/rust/ql/test/.gitignore b/rust/ql/test/.gitignore index bbbb5decae2..3c36d8c7797 100644 --- a/rust/ql/test/.gitignore +++ b/rust/ql/test/.gitignore @@ -1,3 +1,6 @@ Cargo.toml lib.rs target/ +.proc_macro/ +.lib/ + diff --git a/rust/ql/test/extractor-tests/macro-expansion/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/extractor-tests/macro-expansion/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 00000000000..947e541f0ca --- /dev/null +++ b/rust/ql/test/extractor-tests/macro-expansion/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,3 @@ +multiplePathResolutions +| macro_expansion.rs:1:5:1:14 | proc_macro | file://:0:0:0:0 | Crate(proc_macro@0.0.0) | +| macro_expansion.rs:1:5:1:14 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.1.0) | diff --git a/rust/ql/test/extractor-tests/macro_expansion/Cargo.lock b/rust/ql/test/extractor-tests/macro-expansion/Cargo.lock similarity index 84% rename from rust/ql/test/extractor-tests/macro_expansion/Cargo.lock rename to rust/ql/test/extractor-tests/macro-expansion/Cargo.lock index 05d957e53f2..228850f0b3f 100644 --- a/rust/ql/test/extractor-tests/macro_expansion/Cargo.lock +++ b/rust/ql/test/extractor-tests/macro-expansion/Cargo.lock @@ -2,16 +2,6 @@ # It is not intended for manual editing. version = 4 -[[package]] -name = "ctor" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501" -dependencies = [ - "quote", - "syn", -] - [[package]] name = "proc-macro2" version = "1.0.95" @@ -21,6 +11,14 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "proc_macro" +version = "0.1.0" +dependencies = [ + "quote", + "syn", +] + [[package]] name = "quote" version = "1.0.40" @@ -43,9 +41,9 @@ dependencies = [ [[package]] name = "test" -version = "0.0.1" +version = "0.1.0" dependencies = [ - "ctor", + "proc_macro", ] [[package]] diff --git a/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected b/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected new file mode 100644 index 00000000000..092c26051d6 --- /dev/null +++ b/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected @@ -0,0 +1,2174 @@ +call.rs: +# 1| [SourceFile] SourceFile +# 1| getItem(0): [Use] use ...::macro_expansion +# 1| getUseTree(): [UseTree] ...::macro_expansion +# 1| getPath(): [Path] ...::macro_expansion +# 1| getQualifier(): [Path] crate +# 1| getSegment(): [PathSegment] crate +# 1| getIdentifier(): [NameRef] crate +# 1| getSegment(): [PathSegment] macro_expansion +# 1| getIdentifier(): [NameRef] macro_expansion +# 3| getItem(1): [Function] fn call_some_functions +# 3| getParamList(): [ParamList] ParamList +# 3| getBody(): [BlockExpr] { ... } +# 3| getStmtList(): [StmtList] StmtList +# 4| getStatement(0): [ExprStmt] ExprStmt +# 4| getExpr(): [CallExpr] ...::foo(...) +# 4| getArgList(): [ArgList] ArgList +# 4| getFunction(): [PathExpr] ...::foo +# 4| getPath(): [Path] ...::foo +# 4| getQualifier(): [Path] macro_expansion +# 4| getSegment(): [PathSegment] macro_expansion +# 4| getIdentifier(): [NameRef] macro_expansion +# 4| getSegment(): [PathSegment] foo +# 4| getIdentifier(): [NameRef] foo +# 5| getStatement(1): [ExprStmt] ExprStmt +# 5| getExpr(): [CallExpr] ...::foo_new(...) +# 5| getArgList(): [ArgList] ArgList +# 5| getFunction(): [PathExpr] ...::foo_new +# 5| getPath(): [Path] ...::foo_new +# 5| getQualifier(): [Path] macro_expansion +# 5| getSegment(): [PathSegment] macro_expansion +# 5| getIdentifier(): [NameRef] macro_expansion +# 5| getSegment(): [PathSegment] foo_new +# 5| getIdentifier(): [NameRef] foo_new +# 6| getStatement(2): [ExprStmt] ExprStmt +# 6| getExpr(): [CallExpr] ...::bar_0(...) +# 6| getArgList(): [ArgList] ArgList +# 6| getFunction(): [PathExpr] ...::bar_0 +# 6| getPath(): [Path] ...::bar_0 +# 6| getQualifier(): [Path] macro_expansion +# 6| getSegment(): [PathSegment] macro_expansion +# 6| getIdentifier(): [NameRef] macro_expansion +# 6| getSegment(): [PathSegment] bar_0 +# 6| getIdentifier(): [NameRef] bar_0 +# 7| getStatement(3): [ExprStmt] ExprStmt +# 7| getExpr(): [CallExpr] ...::bar_1(...) +# 7| getArgList(): [ArgList] ArgList +# 7| getFunction(): [PathExpr] ...::bar_1 +# 7| getPath(): [Path] ...::bar_1 +# 7| getQualifier(): [Path] macro_expansion +# 7| getSegment(): [PathSegment] macro_expansion +# 7| getIdentifier(): [NameRef] macro_expansion +# 7| getSegment(): [PathSegment] bar_1 +# 7| getIdentifier(): [NameRef] bar_1 +# 8| getStatement(4): [ExprStmt] ExprStmt +# 8| getExpr(): [CallExpr] ...::bar_0_new(...) +# 8| getArgList(): [ArgList] ArgList +# 8| getFunction(): [PathExpr] ...::bar_0_new +# 8| getPath(): [Path] ...::bar_0_new +# 8| getQualifier(): [Path] macro_expansion +# 8| getSegment(): [PathSegment] macro_expansion +# 8| getIdentifier(): [NameRef] macro_expansion +# 8| getSegment(): [PathSegment] bar_0_new +# 8| getIdentifier(): [NameRef] bar_0_new +# 9| getStatement(5): [ExprStmt] ExprStmt +# 9| getExpr(): [CallExpr] ...::bar_1_new(...) +# 9| getArgList(): [ArgList] ArgList +# 9| getFunction(): [PathExpr] ...::bar_1_new +# 9| getPath(): [Path] ...::bar_1_new +# 9| getQualifier(): [Path] macro_expansion +# 9| getSegment(): [PathSegment] macro_expansion +# 9| getIdentifier(): [NameRef] macro_expansion +# 9| getSegment(): [PathSegment] bar_1_new +# 9| getIdentifier(): [NameRef] bar_1_new +# 10| getStatement(6): [ExprStmt] ExprStmt +# 10| getExpr(): [CallExpr] ...::bzz_0(...) +# 10| getArgList(): [ArgList] ArgList +# 10| getFunction(): [PathExpr] ...::bzz_0 +# 10| getPath(): [Path] ...::bzz_0 +# 10| getQualifier(): [Path] ...::S +# 10| getQualifier(): [Path] macro_expansion +# 10| getSegment(): [PathSegment] macro_expansion +# 10| getIdentifier(): [NameRef] macro_expansion +# 10| getSegment(): [PathSegment] S +# 10| getIdentifier(): [NameRef] S +# 10| getSegment(): [PathSegment] bzz_0 +# 10| getIdentifier(): [NameRef] bzz_0 +# 11| getStatement(7): [ExprStmt] ExprStmt +# 11| getExpr(): [CallExpr] ...::bzz_1(...) +# 11| getArgList(): [ArgList] ArgList +# 11| getFunction(): [PathExpr] ...::bzz_1 +# 11| getPath(): [Path] ...::bzz_1 +# 11| getQualifier(): [Path] ...::S +# 11| getQualifier(): [Path] macro_expansion +# 11| getSegment(): [PathSegment] macro_expansion +# 11| getIdentifier(): [NameRef] macro_expansion +# 11| getSegment(): [PathSegment] S +# 11| getIdentifier(): [NameRef] S +# 11| getSegment(): [PathSegment] bzz_1 +# 11| getIdentifier(): [NameRef] bzz_1 +# 12| getStatement(8): [ExprStmt] ExprStmt +# 12| getExpr(): [CallExpr] ...::bzz_2(...) +# 12| getArgList(): [ArgList] ArgList +# 12| getFunction(): [PathExpr] ...::bzz_2 +# 12| getPath(): [Path] ...::bzz_2 +# 12| getQualifier(): [Path] ...::S +# 12| getQualifier(): [Path] macro_expansion +# 12| getSegment(): [PathSegment] macro_expansion +# 12| getIdentifier(): [NameRef] macro_expansion +# 12| getSegment(): [PathSegment] S +# 12| getIdentifier(): [NameRef] S +# 12| getSegment(): [PathSegment] bzz_2 +# 12| getIdentifier(): [NameRef] bzz_2 +# 13| getStatement(9): [ExprStmt] ExprStmt +# 13| getExpr(): [CallExpr] ...::x(...) +# 13| getArgList(): [ArgList] ArgList +# 13| getFunction(): [PathExpr] ...::x +# 13| getPath(): [Path] ...::x +# 13| getQualifier(): [Path] ...::S +# 13| getQualifier(): [Path] macro_expansion +# 13| getSegment(): [PathSegment] macro_expansion +# 13| getIdentifier(): [NameRef] macro_expansion +# 13| getSegment(): [PathSegment] S +# 13| getIdentifier(): [NameRef] S +# 13| getSegment(): [PathSegment] x +# 13| getIdentifier(): [NameRef] x +# 3| getName(): [Name] call_some_functions +included/included.rs: +# 1| [SourceFile] SourceFile +# 1| getItem(0): [Function] fn included +# 1| getParamList(): [ParamList] ParamList +# 1| getBody(): [BlockExpr] { ... } +# 1| getStmtList(): [StmtList] StmtList +# 2| getStatement(0): [ExprStmt] ExprStmt +# 2| getExpr(): [AssignmentExpr] ... = ... +# 2| getLhs(): [UnderscoreExpr] _ +# 2| getRhs(): [MacroExpr] MacroExpr +# 2| getMacroCall(): [MacroCall] concat!... +# 2| getPath(): [Path] concat +# 2| getSegment(): [PathSegment] concat +# 2| getIdentifier(): [NameRef] concat +# 2| getTokenTree(): [TokenTree] TokenTree +# 2| getMacroCallExpansion(): [StringLiteralExpr] "Hello world!" +# 1| getName(): [Name] included +# 2| [Comment] //... +lib.rs: +# 1| [SourceFile] SourceFile +# 1| getItem(0): [Module] mod call +# 1| getName(): [Name] call +# 2| getItem(1): [Module] mod macro_expansion +# 2| getName(): [Name] macro_expansion +macro_expansion.rs: +# 1| [SourceFile] SourceFile +# 1| getItem(0): [Use] use proc_macro::{...} +# 1| getUseTree(): [UseTree] proc_macro::{...} +# 1| getPath(): [Path] proc_macro +# 1| getSegment(): [PathSegment] proc_macro +# 1| getIdentifier(): [NameRef] proc_macro +# 1| getUseTreeList(): [UseTreeList] UseTreeList +# 1| getUseTree(0): [UseTree] repeat +# 1| getPath(): [Path] repeat +# 1| getSegment(): [PathSegment] repeat +# 1| getIdentifier(): [NameRef] repeat +# 1| getUseTree(1): [UseTree] add_one +# 1| getPath(): [Path] add_one +# 1| getSegment(): [PathSegment] add_one +# 1| getIdentifier(): [NameRef] add_one +# 1| getUseTree(2): [UseTree] erase +# 1| getPath(): [Path] erase +# 1| getSegment(): [PathSegment] erase +# 1| getIdentifier(): [NameRef] erase +# 3| getItem(1): [Function] fn foo +# 4| getAttributeMacroExpansion(): [MacroItems] MacroItems +# 4| getItem(0): [Function] fn foo +# 4| getParamList(): [ParamList] ParamList +# 4| getBody(): [BlockExpr] { ... } +# 4| getStmtList(): [StmtList] StmtList +# 5| getStatement(0): [ExprStmt] ExprStmt +# 5| getExpr(): [AssignmentExpr] ... = ... +# 5| getLhs(): [UnderscoreExpr] _ +# 5| getRhs(): [MacroExpr] MacroExpr +# 5| getMacroCall(): [MacroCall] concat!... +# 5| getPath(): [Path] concat +# 5| getSegment(): [PathSegment] concat +# 5| getIdentifier(): [NameRef] concat +# 5| getTokenTree(): [TokenTree] TokenTree +# 5| getMacroCallExpansion(): [StringLiteralExpr] "Hello world!" +# 7| getStatement(1): [Function] fn inner +# 8| getAttributeMacroExpansion(): [MacroItems] MacroItems +# 8| getItem(0): [Function] fn inner_0 +# 8| getParamList(): [ParamList] ParamList +# 8| getBody(): [BlockExpr] { ... } +# 8| getStmtList(): [StmtList] StmtList +# 8| getName(): [Name] inner_0 +# 8| getItem(1): [Function] fn inner_1 +# 8| getParamList(): [ParamList] ParamList +# 8| getBody(): [BlockExpr] { ... } +# 8| getStmtList(): [StmtList] StmtList +# 8| getName(): [Name] inner_1 +# 8| getParamList(): [ParamList] ParamList +# 7| getAttr(0): [Attr] Attr +# 7| getMeta(): [Meta] Meta +# 7| getPath(): [Path] repeat +# 7| getSegment(): [PathSegment] repeat +# 7| getIdentifier(): [NameRef] repeat +# 7| getTokenTree(): [TokenTree] TokenTree +# 8| getBody(): [BlockExpr] { ... } +# 8| getStmtList(): [StmtList] StmtList +# 8| getName(): [Name] inner +# 10| getStatement(2): [ExprStmt] ExprStmt +# 10| getExpr(): [CallExpr] inner_0(...) +# 10| getArgList(): [ArgList] ArgList +# 10| getFunction(): [PathExpr] inner_0 +# 10| getPath(): [Path] inner_0 +# 10| getSegment(): [PathSegment] inner_0 +# 10| getIdentifier(): [NameRef] inner_0 +# 11| getStatement(3): [ExprStmt] ExprStmt +# 11| getExpr(): [CallExpr] inner_1(...) +# 11| getArgList(): [ArgList] ArgList +# 11| getFunction(): [PathExpr] inner_1 +# 11| getPath(): [Path] inner_1 +# 11| getSegment(): [PathSegment] inner_1 +# 11| getIdentifier(): [NameRef] inner_1 +# 4| getName(): [Name] foo +# 4| getVisibility(): [Visibility] Visibility +# 4| getItem(1): [Function] fn foo_new +# 4| getParamList(): [ParamList] ParamList +# 4| getBody(): [BlockExpr] { ... } +# 4| getStmtList(): [StmtList] StmtList +# 5| getStatement(0): [ExprStmt] ExprStmt +# 5| getExpr(): [AssignmentExpr] ... = ... +# 5| getLhs(): [UnderscoreExpr] _ +# 5| getRhs(): [MacroExpr] MacroExpr +# 5| getMacroCall(): [MacroCall] concat!... +# 5| getPath(): [Path] concat +# 5| getSegment(): [PathSegment] concat +# 5| getIdentifier(): [NameRef] concat +# 5| getTokenTree(): [TokenTree] TokenTree +# 5| getMacroCallExpansion(): [StringLiteralExpr] "Hello world!" +# 7| getStatement(1): [Function] fn inner +# 8| getAttributeMacroExpansion(): [MacroItems] MacroItems +# 8| getItem(0): [Function] fn inner_0 +# 8| getParamList(): [ParamList] ParamList +# 8| getBody(): [BlockExpr] { ... } +# 8| getStmtList(): [StmtList] StmtList +# 8| getName(): [Name] inner_0 +# 8| getItem(1): [Function] fn inner_1 +# 8| getParamList(): [ParamList] ParamList +# 8| getBody(): [BlockExpr] { ... } +# 8| getStmtList(): [StmtList] StmtList +# 8| getName(): [Name] inner_1 +# 8| getParamList(): [ParamList] ParamList +# 7| getAttr(0): [Attr] Attr +# 7| getMeta(): [Meta] Meta +# 7| getPath(): [Path] repeat +# 7| getSegment(): [PathSegment] repeat +# 7| getIdentifier(): [NameRef] repeat +# 7| getTokenTree(): [TokenTree] TokenTree +# 8| getBody(): [BlockExpr] { ... } +# 8| getStmtList(): [StmtList] StmtList +# 8| getName(): [Name] inner +# 10| getStatement(2): [ExprStmt] ExprStmt +# 10| getExpr(): [CallExpr] inner_0(...) +# 10| getArgList(): [ArgList] ArgList +# 10| getFunction(): [PathExpr] inner_0 +# 10| getPath(): [Path] inner_0 +# 10| getSegment(): [PathSegment] inner_0 +# 10| getIdentifier(): [NameRef] inner_0 +# 11| getStatement(3): [ExprStmt] ExprStmt +# 11| getExpr(): [CallExpr] inner_1(...) +# 11| getArgList(): [ArgList] ArgList +# 11| getFunction(): [PathExpr] inner_1 +# 11| getPath(): [Path] inner_1 +# 11| getSegment(): [PathSegment] inner_1 +# 11| getIdentifier(): [NameRef] inner_1 +# 4| getName(): [Name] foo_new +# 4| getVisibility(): [Visibility] Visibility +# 4| getParamList(): [ParamList] ParamList +# 3| getAttr(0): [Attr] Attr +# 3| getMeta(): [Meta] Meta +# 3| getPath(): [Path] add_one +# 3| getSegment(): [PathSegment] add_one +# 3| getIdentifier(): [NameRef] add_one +# 4| getBody(): [BlockExpr] { ... } +# 4| getStmtList(): [StmtList] StmtList +# 5| getStatement(0): [ExprStmt] ExprStmt +# 5| getExpr(): [AssignmentExpr] ... = ... +# 5| getLhs(): [UnderscoreExpr] _ +# 5| getRhs(): [MacroExpr] MacroExpr +# 5| getMacroCall(): [MacroCall] concat!... +# 5| getPath(): [Path] concat +# 5| getSegment(): [PathSegment] concat +# 5| getIdentifier(): [NameRef] concat +# 5| getTokenTree(): [TokenTree] TokenTree +# 7| getStatement(1): [Function] fn inner +# 8| getParamList(): [ParamList] ParamList +# 7| getAttr(0): [Attr] Attr +# 7| getMeta(): [Meta] Meta +# 7| getPath(): [Path] repeat +# 7| getSegment(): [PathSegment] repeat +# 7| getIdentifier(): [NameRef] repeat +# 7| getTokenTree(): [TokenTree] TokenTree +# 8| getBody(): [BlockExpr] { ... } +# 8| getStmtList(): [StmtList] StmtList +# 8| getName(): [Name] inner +# 10| getStatement(2): [ExprStmt] ExprStmt +# 10| getExpr(): [CallExpr] inner_0(...) +# 10| getArgList(): [ArgList] ArgList +# 10| getFunction(): [PathExpr] inner_0 +# 10| getPath(): [Path] inner_0 +# 10| getSegment(): [PathSegment] inner_0 +# 10| getIdentifier(): [NameRef] inner_0 +# 11| getStatement(3): [ExprStmt] ExprStmt +# 11| getExpr(): [CallExpr] inner_1(...) +# 11| getArgList(): [ArgList] ArgList +# 11| getFunction(): [PathExpr] inner_1 +# 11| getPath(): [Path] inner_1 +# 11| getSegment(): [PathSegment] inner_1 +# 11| getIdentifier(): [NameRef] inner_1 +# 4| getName(): [Name] foo +# 4| getVisibility(): [Visibility] Visibility +# 14| getItem(2): [Function] fn bar +# 15| getAttributeMacroExpansion(): [MacroItems] MacroItems +# 15| getItem(0): [Function] fn bar_0 +# 16| getAttributeMacroExpansion(): [MacroItems] MacroItems +# 16| getItem(0): [Function] fn bar_0 +# 16| getParamList(): [ParamList] ParamList +# 16| getBody(): [BlockExpr] { ... } +# 16| getStmtList(): [StmtList] StmtList +# 16| getName(): [Name] bar_0 +# 16| getVisibility(): [Visibility] Visibility +# 16| getItem(1): [Function] fn bar_0_new +# 16| getParamList(): [ParamList] ParamList +# 16| getBody(): [BlockExpr] { ... } +# 16| getStmtList(): [StmtList] StmtList +# 16| getName(): [Name] bar_0_new +# 16| getVisibility(): [Visibility] Visibility +# 16| getParamList(): [ParamList] ParamList +# 15| getAttr(0): [Attr] Attr +# 15| getMeta(): [Meta] Meta +# 15| getPath(): [Path] add_one +# 15| getSegment(): [PathSegment] add_one +# 15| getIdentifier(): [NameRef] add_one +# 16| getBody(): [BlockExpr] { ... } +# 16| getStmtList(): [StmtList] StmtList +# 16| getName(): [Name] bar_0 +# 16| getVisibility(): [Visibility] Visibility +# 15| getItem(1): [Function] fn bar_1 +# 16| getAttributeMacroExpansion(): [MacroItems] MacroItems +# 16| getItem(0): [Function] fn bar_1 +# 16| getParamList(): [ParamList] ParamList +# 16| getBody(): [BlockExpr] { ... } +# 16| getStmtList(): [StmtList] StmtList +# 16| getName(): [Name] bar_1 +# 16| getVisibility(): [Visibility] Visibility +# 16| getItem(1): [Function] fn bar_1_new +# 16| getParamList(): [ParamList] ParamList +# 16| getBody(): [BlockExpr] { ... } +# 16| getStmtList(): [StmtList] StmtList +# 16| getName(): [Name] bar_1_new +# 16| getVisibility(): [Visibility] Visibility +# 16| getParamList(): [ParamList] ParamList +# 15| getAttr(0): [Attr] Attr +# 15| getMeta(): [Meta] Meta +# 15| getPath(): [Path] add_one +# 15| getSegment(): [PathSegment] add_one +# 15| getIdentifier(): [NameRef] add_one +# 16| getBody(): [BlockExpr] { ... } +# 16| getStmtList(): [StmtList] StmtList +# 16| getName(): [Name] bar_1 +# 16| getVisibility(): [Visibility] Visibility +# 16| getParamList(): [ParamList] ParamList +# 14| getAttr(0): [Attr] Attr +# 14| getMeta(): [Meta] Meta +# 14| getPath(): [Path] repeat +# 14| getSegment(): [PathSegment] repeat +# 14| getIdentifier(): [NameRef] repeat +# 14| getTokenTree(): [TokenTree] TokenTree +# 15| getAttr(1): [Attr] Attr +# 15| getMeta(): [Meta] Meta +# 15| getPath(): [Path] add_one +# 15| getSegment(): [PathSegment] add_one +# 15| getIdentifier(): [NameRef] add_one +# 16| getBody(): [BlockExpr] { ... } +# 16| getStmtList(): [StmtList] StmtList +# 16| getName(): [Name] bar +# 16| getVisibility(): [Visibility] Visibility +# 18| getItem(3): [Function] fn baz +# 18| getAttributeMacroExpansion(): [MacroItems] MacroItems +# 19| getParamList(): [ParamList] ParamList +# 18| getAttr(0): [Attr] Attr +# 18| getMeta(): [Meta] Meta +# 18| getPath(): [Path] erase +# 18| getSegment(): [PathSegment] erase +# 18| getIdentifier(): [NameRef] erase +# 19| getBody(): [BlockExpr] { ... } +# 19| getStmtList(): [StmtList] StmtList +# 19| getName(): [Name] baz +# 19| getVisibility(): [Visibility] Visibility +# 22| getItem(4): [MacroRules] MacroRules +# 22| getName(): [Name] hello +# 22| getTokenTree(): [TokenTree] TokenTree +# 28| getItem(5): [Struct] struct S +# 28| getName(): [Name] S +# 28| getVisibility(): [Visibility] Visibility +# 30| getItem(6): [Impl] impl S { ... } +# 30| getAssocItemList(): [AssocItemList] AssocItemList +# 31| getAssocItem(0): [Function] fn bzz +# 32| getParamList(): [ParamList] ParamList +# 31| getAttr(0): [Attr] Attr +# 31| getMeta(): [Meta] Meta +# 31| getPath(): [Path] repeat +# 31| getSegment(): [PathSegment] repeat +# 31| getIdentifier(): [NameRef] repeat +# 31| getTokenTree(): [TokenTree] TokenTree +# 32| getBody(): [BlockExpr] { ... } +# 32| getStmtList(): [StmtList] StmtList +# 33| getStatement(0): [ExprStmt] ExprStmt +# 33| getExpr(): [MacroExpr] MacroExpr +# 33| getMacroCall(): [MacroCall] hello!... +# 33| getPath(): [Path] hello +# 33| getSegment(): [PathSegment] hello +# 33| getIdentifier(): [NameRef] hello +# 33| getTokenTree(): [TokenTree] TokenTree +# 33| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 33| getStatement(0): [ExprStmt] ExprStmt +# 33| getExpr(): [MacroExpr] MacroExpr +# 33| getMacroCall(): [MacroCall] println!... +# 33| getPath(): [Path] println +# 33| getSegment(): [PathSegment] println +# 33| getIdentifier(): [NameRef] println +# 33| getTokenTree(): [TokenTree] TokenTree +# 33| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 33| getTailExpr(): [BlockExpr] { ... } +# 33| getStmtList(): [StmtList] StmtList +# 33| getStatement(0): [ExprStmt] ExprStmt +# 33| getExpr(): [CallExpr] ...::_print(...) +# 33| getArgList(): [ArgList] ArgList +# 33| getArg(0): [MacroExpr] MacroExpr +# 33| getMacroCall(): [MacroCall] ...::format_args_nl!... +# 33| getPath(): [Path] ...::format_args_nl +# 33| getQualifier(): [Path] $crate +# 33| getSegment(): [PathSegment] $crate +# 33| getIdentifier(): [NameRef] $crate +# 33| getSegment(): [PathSegment] format_args_nl +# 33| getIdentifier(): [NameRef] format_args_nl +# 33| getTokenTree(): [TokenTree] TokenTree +# 33| getMacroCallExpansion(): [FormatArgsExpr] FormatArgsExpr +# 33| getTemplate(): [StringLiteralExpr] "hello!\n" +# 33| getFunction(): [PathExpr] ...::_print +# 33| getPath(): [Path] ...::_print +# 33| getQualifier(): [Path] ...::io +# 33| getQualifier(): [Path] $crate +# 33| getSegment(): [PathSegment] $crate +# 33| getIdentifier(): [NameRef] $crate +# 33| getSegment(): [PathSegment] io +# 33| getIdentifier(): [NameRef] io +# 33| getSegment(): [PathSegment] _print +# 33| getIdentifier(): [NameRef] _print +# 32| getName(): [Name] bzz +# 32| getVisibility(): [Visibility] Visibility +# 30| getSelfTy(): [PathTypeRepr] S +# 30| getPath(): [Path] S +# 30| getSegment(): [PathSegment] S +# 30| getIdentifier(): [NameRef] S +# 37| getItem(7): [MacroRules] MacroRules +# 37| getName(): [Name] def_x +# 37| getTokenTree(): [TokenTree] TokenTree +# 43| getItem(8): [Impl] impl S { ... } +# 43| getAssocItemList(): [AssocItemList] AssocItemList +# 44| getAssocItem(0): [MacroCall] def_x!... +# 44| getPath(): [Path] def_x +# 44| getSegment(): [PathSegment] def_x +# 44| getIdentifier(): [NameRef] def_x +# 44| getTokenTree(): [TokenTree] TokenTree +# 44| getMacroCallExpansion(): [MacroItems] MacroItems +# 44| getItem(0): [Function] fn x +# 44| getParamList(): [ParamList] ParamList +# 44| getBody(): [BlockExpr] { ... } +# 44| getStmtList(): [StmtList] StmtList +# 44| getName(): [Name] x +# 44| getVisibility(): [Visibility] Visibility +# 43| getSelfTy(): [PathTypeRepr] S +# 43| getPath(): [Path] S +# 43| getSegment(): [PathSegment] S +# 43| getIdentifier(): [NameRef] S +# 47| getItem(9): [MacroRules] MacroRules +# 47| getName(): [Name] my_macro +# 47| getTokenTree(): [TokenTree] TokenTree +# 52| getItem(10): [Function] fn test +# 52| getParamList(): [ParamList] ParamList +# 52| getBody(): [BlockExpr] { ... } +# 52| getStmtList(): [StmtList] StmtList +# 53| getStatement(0): [ExprStmt] ExprStmt +# 53| getExpr(): [AssignmentExpr] ... = ... +# 53| getLhs(): [UnderscoreExpr] _ +# 53| getRhs(): [MacroExpr] MacroExpr +# 53| getMacroCall(): [MacroCall] concat!... +# 53| getPath(): [Path] concat +# 53| getSegment(): [PathSegment] concat +# 53| getIdentifier(): [NameRef] concat +# 53| getTokenTree(): [TokenTree] TokenTree +# 53| getMacroCallExpansion(): [StringLiteralExpr] "xy" +# 55| getStatement(1): [ExprStmt] ExprStmt +# 55| getExpr(): [AssignmentExpr] ... = ... +# 55| getLhs(): [UnderscoreExpr] _ +# 55| getRhs(): [MacroExpr] MacroExpr +# 55| getMacroCall(): [MacroCall] my_macro!... +# 55| getPath(): [Path] my_macro +# 55| getSegment(): [PathSegment] my_macro +# 55| getIdentifier(): [NameRef] my_macro +# 55| getTokenTree(): [TokenTree] TokenTree +# 56| getMacroCallExpansion(): [MacroExpr] MacroExpr +# 56| getMacroCall(): [MacroCall] format!... +# 55| getPath(): [Path] format +# 55| getSegment(): [PathSegment] format +# 55| getIdentifier(): [NameRef] format +# 56| getTokenTree(): [TokenTree] TokenTree +# 56| getMacroCallExpansion(): [CallExpr] ...::must_use(...) +# 56| getArgList(): [ArgList] ArgList +# 56| getArg(0): [BlockExpr] { ... } +# 56| getStmtList(): [StmtList] StmtList +# 56| getStatement(0): [LetStmt] let ... = ... +# 56| getInitializer(): [CallExpr] ...::format(...) +# 56| getArgList(): [ArgList] ArgList +# 56| getArg(0): [MacroExpr] MacroExpr +# 56| getMacroCall(): [MacroCall] ...::format_args!... +# 55| getPath(): [Path] ...::format_args +# 55| getQualifier(): [Path] ...::__export +# 55| getQualifier(): [Path] $crate +# 55| getSegment(): [PathSegment] $crate +# 55| getIdentifier(): [NameRef] $crate +# 55| getSegment(): [PathSegment] __export +# 55| getIdentifier(): [NameRef] __export +# 55| getSegment(): [PathSegment] format_args +# 55| getIdentifier(): [NameRef] format_args +# 56| getTokenTree(): [TokenTree] TokenTree +# 56| getMacroCallExpansion(): [FormatArgsExpr] FormatArgsExpr +# 57| getArg(0): [FormatArgsArg] FormatArgsArg +# 57| getExpr(): [StringLiteralExpr] "hi" +# 56| getTemplate(): [ParenExpr] (...) +# 56| getExpr(): [MacroExpr] MacroExpr +# 56| getMacroCall(): [MacroCall] concat!... +# 56| getPath(): [Path] concat +# 56| getSegment(): [PathSegment] concat +# 56| getIdentifier(): [NameRef] concat +# 56| getTokenTree(): [TokenTree] TokenTree +# 56| getMacroCallExpansion(): [StringLiteralExpr] "<{}>" +# 55| getFunction(): [PathExpr] ...::format +# 55| getPath(): [Path] ...::format +# 55| getQualifier(): [Path] ...::fmt +# 55| getQualifier(): [Path] $crate +# 55| getSegment(): [PathSegment] $crate +# 55| getIdentifier(): [NameRef] $crate +# 55| getSegment(): [PathSegment] fmt +# 55| getIdentifier(): [NameRef] fmt +# 55| getSegment(): [PathSegment] format +# 55| getIdentifier(): [NameRef] format +# 55| getPat(): [IdentPat] res +# 55| getName(): [Name] res +# 55| getTailExpr(): [PathExpr,VariableAccess] res +# 55| getPath(): [Path] res +# 55| getSegment(): [PathSegment] res +# 55| getIdentifier(): [NameRef] res +# 55| getFunction(): [PathExpr] ...::must_use +# 55| getPath(): [Path] ...::must_use +# 55| getQualifier(): [Path] ...::__export +# 55| getQualifier(): [Path] $crate +# 55| getSegment(): [PathSegment] $crate +# 55| getIdentifier(): [NameRef] $crate +# 55| getSegment(): [PathSegment] __export +# 55| getIdentifier(): [NameRef] __export +# 55| getSegment(): [PathSegment] must_use +# 55| getIdentifier(): [NameRef] must_use +# 52| getName(): [Name] test +# 61| getItem(11): [MacroCall] include!... +# 61| getPath(): [Path] include +# 61| getSegment(): [PathSegment] include +# 61| getIdentifier(): [NameRef] include +# 61| getTokenTree(): [TokenTree] TokenTree +# 61| getMacroCallExpansion(): [MacroItems] MacroItems +# 61| getItem(0): [Function] fn included +# 61| getParamList(): [ParamList] ParamList +# 61| getBody(): [BlockExpr] { ... } +# 61| getStmtList(): [StmtList] StmtList +# 61| getStatement(0): [ExprStmt] ExprStmt +# 61| getExpr(): [AssignmentExpr] ... = ... +# 61| getLhs(): [UnderscoreExpr] _ +# 61| getRhs(): [MacroExpr] MacroExpr +# 61| getMacroCall(): [MacroCall] concat!... +# 61| getPath(): [Path] concat +# 61| getSegment(): [PathSegment] concat +# 61| getIdentifier(): [NameRef] concat +# 61| getTokenTree(): [TokenTree] TokenTree +# 61| getMacroCallExpansion(): [StringLiteralExpr] "Hello world!" +# 61| getName(): [Name] included +# 63| getItem(12): [Function] fn documented +# 64| getParamList(): [ParamList] ParamList +# 63| getAttr(0): [Attr] Attr +# 63| getMeta(): [Meta] Meta +# 63| getExpr(): [MacroExpr] MacroExpr +# 63| getMacroCall(): [MacroCall] include_str!... +# 63| getPath(): [Path] include_str +# 63| getSegment(): [PathSegment] include_str +# 63| getIdentifier(): [NameRef] include_str +# 63| getTokenTree(): [TokenTree] TokenTree +# 63| getMacroCallExpansion(): [StringLiteralExpr] "" +# 63| getPath(): [Path] doc +# 63| getSegment(): [PathSegment] doc +# 63| getIdentifier(): [NameRef] doc +# 64| getBody(): [BlockExpr] { ... } +# 64| getStmtList(): [StmtList] StmtList +# 64| getName(): [Name] documented +# 66| getItem(13): [MacroRules] MacroRules +# 66| getName(): [Name] my_int +# 66| getTokenTree(): [TokenTree] TokenTree +# 70| getItem(14): [Function] fn answer +# 70| getParamList(): [ParamList] ParamList +# 70| getBody(): [BlockExpr] { ... } +# 70| getStmtList(): [StmtList] StmtList +# 71| getStatement(0): [LetStmt] let ... = 42 +# 71| getInitializer(): [IntegerLiteralExpr] 42 +# 71| getPat(): [IdentPat] a +# 71| getName(): [Name] a +# 71| getTypeRepr(): [MacroTypeRepr] MacroTypeRepr +# 71| getMacroCall(): [MacroCall] my_int!... +# 71| getPath(): [Path] my_int +# 71| getSegment(): [PathSegment] my_int +# 71| getIdentifier(): [NameRef] my_int +# 71| getTokenTree(): [TokenTree] TokenTree +# 71| getMacroCallExpansion(): [PathTypeRepr] i32 +# 71| getPath(): [Path] i32 +# 71| getSegment(): [PathSegment] i32 +# 71| getIdentifier(): [NameRef] i32 +# 72| getTailExpr(): [CastExpr] a as ... +# 72| getExpr(): [PathExpr,VariableAccess] a +# 72| getPath(): [Path] a +# 72| getSegment(): [PathSegment] a +# 72| getIdentifier(): [NameRef] a +# 72| getTypeRepr(): [MacroTypeRepr] MacroTypeRepr +# 72| getMacroCall(): [MacroCall] my_int!... +# 72| getPath(): [Path] my_int +# 72| getSegment(): [PathSegment] my_int +# 72| getIdentifier(): [NameRef] my_int +# 72| getTokenTree(): [TokenTree] TokenTree +# 72| getMacroCallExpansion(): [PathTypeRepr] i32 +# 72| getPath(): [Path] i32 +# 72| getSegment(): [PathSegment] i32 +# 72| getIdentifier(): [NameRef] i32 +# 70| getName(): [Name] answer +# 70| getRetType(): [RetTypeRepr] RetTypeRepr +# 70| getTypeRepr(): [MacroTypeRepr] MacroTypeRepr +# 70| getMacroCall(): [MacroCall] my_int!... +# 70| getPath(): [Path] my_int +# 70| getSegment(): [PathSegment] my_int +# 70| getIdentifier(): [NameRef] my_int +# 70| getTokenTree(): [TokenTree] TokenTree +# 70| getMacroCallExpansion(): [PathTypeRepr] i32 +# 70| getPath(): [Path] i32 +# 70| getSegment(): [PathSegment] i32 +# 70| getIdentifier(): [NameRef] i32 +# 76| getItem(15): [TypeAlias] type MyInt +# 76| getName(): [Name] MyInt +# 76| getTypeRepr(): [MacroTypeRepr] MacroTypeRepr +# 76| getMacroCall(): [MacroCall] my_int!... +# 76| getPath(): [Path] my_int +# 76| getSegment(): [PathSegment] my_int +# 76| getIdentifier(): [NameRef] my_int +# 76| getTokenTree(): [TokenTree] TokenTree +# 76| getMacroCallExpansion(): [PathTypeRepr] i32 +# 76| getPath(): [Path] i32 +# 76| getSegment(): [PathSegment] i32 +# 76| getIdentifier(): [NameRef] i32 +# 78| getItem(16): [Struct] struct MyStruct +# 78| getFieldList(): [StructFieldList] StructFieldList +# 79| getField(0): [StructField] StructField +# 79| getName(): [Name] field +# 79| getTypeRepr(): [MacroTypeRepr] MacroTypeRepr +# 79| getMacroCall(): [MacroCall] my_int!... +# 79| getPath(): [Path] my_int +# 79| getSegment(): [PathSegment] my_int +# 79| getIdentifier(): [NameRef] my_int +# 79| getTokenTree(): [TokenTree] TokenTree +# 79| getMacroCallExpansion(): [PathTypeRepr] i32 +# 79| getPath(): [Path] i32 +# 79| getSegment(): [PathSegment] i32 +# 79| getIdentifier(): [NameRef] i32 +# 78| getName(): [Name] MyStruct +# 44| [Comment] //... +# 56| [Comment] //... +# 63| [Comment] //... +# 70| [Comment] //... +# 71| [Comment] //... +# 72| [Comment] //... +# 76| [Comment] //... +# 79| [Comment] //... +proc_macro.rs: +# 1| [SourceFile] SourceFile +# 1| getItem(0): [Use] use ...::TokenStream +# 1| getUseTree(): [UseTree] ...::TokenStream +# 1| getPath(): [Path] ...::TokenStream +# 1| getQualifier(): [Path] proc_macro +# 1| getSegment(): [PathSegment] proc_macro +# 1| getIdentifier(): [NameRef] proc_macro +# 1| getSegment(): [PathSegment] TokenStream +# 1| getIdentifier(): [NameRef] TokenStream +# 2| getItem(1): [Use] use ...::quote +# 2| getUseTree(): [UseTree] ...::quote +# 2| getPath(): [Path] ...::quote +# 2| getQualifier(): [Path] quote +# 2| getSegment(): [PathSegment] quote +# 2| getIdentifier(): [NameRef] quote +# 2| getSegment(): [PathSegment] quote +# 2| getIdentifier(): [NameRef] quote +# 4| getItem(2): [Function] fn repeat +# 5| getParamList(): [ParamList] ParamList +# 5| getParam(0): [Param] ...: TokenStream +# 5| getTypeRepr(): [PathTypeRepr] TokenStream +# 5| getPath(): [Path] TokenStream +# 5| getSegment(): [PathSegment] TokenStream +# 5| getIdentifier(): [NameRef] TokenStream +# 5| getPat(): [IdentPat] attr +# 5| getName(): [Name] attr +# 5| getParam(1): [Param] ...: TokenStream +# 5| getTypeRepr(): [PathTypeRepr] TokenStream +# 5| getPath(): [Path] TokenStream +# 5| getSegment(): [PathSegment] TokenStream +# 5| getIdentifier(): [NameRef] TokenStream +# 5| getPat(): [IdentPat] item +# 5| getName(): [Name] item +# 4| getAttr(0): [Attr] Attr +# 4| getMeta(): [Meta] Meta +# 4| getPath(): [Path] proc_macro_attribute +# 4| getSegment(): [PathSegment] proc_macro_attribute +# 4| getIdentifier(): [NameRef] proc_macro_attribute +# 5| getBody(): [BlockExpr] { ... } +# 5| getStmtList(): [StmtList] StmtList +# 6| getStatement(0): [LetStmt] let ... = ... +# 6| getInitializer(): [MethodCallExpr] ... .unwrap() +# 6| getArgList(): [ArgList] ArgList +# 6| getIdentifier(): [NameRef] unwrap +# 6| getReceiver(): [MethodCallExpr] ... .base10_parse() +# 6| getArgList(): [ArgList] ArgList +# 6| getGenericArgList(): [GenericArgList] <...> +# 6| getGenericArg(0): [TypeArg] TypeArg +# 6| getTypeRepr(): [PathTypeRepr] usize +# 6| getPath(): [Path] usize +# 6| getSegment(): [PathSegment] usize +# 6| getIdentifier(): [NameRef] usize +# 6| getIdentifier(): [NameRef] base10_parse +# 6| getReceiver(): [MacroExpr] MacroExpr +# 6| getMacroCall(): [MacroCall] ...::parse_macro_input!... +# 6| getPath(): [Path] ...::parse_macro_input +# 6| getQualifier(): [Path] syn +# 6| getSegment(): [PathSegment] syn +# 6| getIdentifier(): [NameRef] syn +# 6| getSegment(): [PathSegment] parse_macro_input +# 6| getIdentifier(): [NameRef] parse_macro_input +# 6| getTokenTree(): [TokenTree] TokenTree +# 6| getMacroCallExpansion(): [MatchExpr] match ... { ... } +# 6| getScrutinee(): [CallExpr] ...::parse::<...>(...) +# 6| getArgList(): [ArgList] ArgList +# 6| getArg(0): [PathExpr,VariableAccess] attr +# 6| getPath(): [Path] attr +# 6| getSegment(): [PathSegment] attr +# 6| getIdentifier(): [NameRef] attr +# 6| getFunction(): [PathExpr] ...::parse::<...> +# 6| getPath(): [Path] ...::parse::<...> +# 6| getQualifier(): [Path] $crate +# 6| getSegment(): [PathSegment] $crate +# 6| getIdentifier(): [NameRef] $crate +# 6| getSegment(): [PathSegment] parse::<...> +# 6| getGenericArgList(): [GenericArgList] <...> +# 6| getGenericArg(0): [TypeArg] TypeArg +# 6| getTypeRepr(): [PathTypeRepr] ...::LitInt +# 6| getPath(): [Path] ...::LitInt +# 6| getQualifier(): [Path] syn +# 6| getSegment(): [PathSegment] syn +# 6| getIdentifier(): [NameRef] syn +# 6| getSegment(): [PathSegment] LitInt +# 6| getIdentifier(): [NameRef] LitInt +# 6| getIdentifier(): [NameRef] parse +# 6| getMatchArmList(): [MatchArmList] MatchArmList +# 6| getArm(0): [MatchArm] ... => data +# 6| getExpr(): [PathExpr,VariableAccess] data +# 6| getPath(): [Path] data +# 6| getSegment(): [PathSegment] data +# 6| getIdentifier(): [NameRef] data +# 6| getPat(): [TupleStructPat] ...::Ok(...) +# 6| getPath(): [Path] ...::Ok +# 6| getQualifier(): [Path] ...::__private +# 6| getQualifier(): [Path] $crate +# 6| getSegment(): [PathSegment] $crate +# 6| getIdentifier(): [NameRef] $crate +# 6| getSegment(): [PathSegment] __private +# 6| getIdentifier(): [NameRef] __private +# 6| getSegment(): [PathSegment] Ok +# 6| getIdentifier(): [NameRef] Ok +# 6| getField(0): [IdentPat] data +# 6| getName(): [Name] data +# 6| getArm(1): [MatchArm] ... => ... +# 6| getExpr(): [BlockExpr] { ... } +# 6| getStmtList(): [StmtList] StmtList +# 6| getStatement(0): [ExprStmt] ExprStmt +# 6| getExpr(): [ReturnExpr] return ... +# 6| getExpr(): [CallExpr] ...::from(...) +# 6| getArgList(): [ArgList] ArgList +# 6| getArg(0): [MethodCallExpr] err.to_compile_error() +# 6| getArgList(): [ArgList] ArgList +# 6| getIdentifier(): [NameRef] to_compile_error +# 6| getReceiver(): [PathExpr,VariableAccess] err +# 6| getPath(): [Path] err +# 6| getSegment(): [PathSegment] err +# 6| getIdentifier(): [NameRef] err +# 6| getFunction(): [PathExpr] ...::from +# 6| getPath(): [Path] ...::from +# 6| getQualifier(): [Path] ...::TokenStream +# 6| getQualifier(): [Path] ...::__private +# 6| getQualifier(): [Path] $crate +# 6| getSegment(): [PathSegment] $crate +# 6| getIdentifier(): [NameRef] $crate +# 6| getSegment(): [PathSegment] __private +# 6| getIdentifier(): [NameRef] __private +# 6| getSegment(): [PathSegment] TokenStream +# 6| getIdentifier(): [NameRef] TokenStream +# 6| getSegment(): [PathSegment] from +# 6| getIdentifier(): [NameRef] from +# 6| getPat(): [TupleStructPat] ...::Err(...) +# 6| getPath(): [Path] ...::Err +# 6| getQualifier(): [Path] ...::__private +# 6| getQualifier(): [Path] $crate +# 6| getSegment(): [PathSegment] $crate +# 6| getIdentifier(): [NameRef] $crate +# 6| getSegment(): [PathSegment] __private +# 6| getIdentifier(): [NameRef] __private +# 6| getSegment(): [PathSegment] Err +# 6| getIdentifier(): [NameRef] Err +# 6| getField(0): [IdentPat] err +# 6| getName(): [Name] err +# 6| getPat(): [IdentPat] number +# 6| getName(): [Name] number +# 7| getStatement(1): [LetStmt] let ... = ... +# 7| getInitializer(): [MacroExpr] MacroExpr +# 7| getMacroCall(): [MacroCall] ...::parse_macro_input!... +# 7| getPath(): [Path] ...::parse_macro_input +# 7| getQualifier(): [Path] syn +# 7| getSegment(): [PathSegment] syn +# 7| getIdentifier(): [NameRef] syn +# 7| getSegment(): [PathSegment] parse_macro_input +# 7| getIdentifier(): [NameRef] parse_macro_input +# 7| getTokenTree(): [TokenTree] TokenTree +# 7| getMacroCallExpansion(): [MatchExpr] match ... { ... } +# 7| getScrutinee(): [CallExpr] ...::parse::<...>(...) +# 7| getArgList(): [ArgList] ArgList +# 7| getArg(0): [PathExpr,VariableAccess] item +# 7| getPath(): [Path] item +# 7| getSegment(): [PathSegment] item +# 7| getIdentifier(): [NameRef] item +# 7| getFunction(): [PathExpr] ...::parse::<...> +# 7| getPath(): [Path] ...::parse::<...> +# 7| getQualifier(): [Path] $crate +# 7| getSegment(): [PathSegment] $crate +# 7| getIdentifier(): [NameRef] $crate +# 7| getSegment(): [PathSegment] parse::<...> +# 7| getGenericArgList(): [GenericArgList] <...> +# 7| getGenericArg(0): [TypeArg] TypeArg +# 7| getTypeRepr(): [PathTypeRepr] ...::ItemFn +# 7| getPath(): [Path] ...::ItemFn +# 7| getQualifier(): [Path] syn +# 7| getSegment(): [PathSegment] syn +# 7| getIdentifier(): [NameRef] syn +# 7| getSegment(): [PathSegment] ItemFn +# 7| getIdentifier(): [NameRef] ItemFn +# 7| getIdentifier(): [NameRef] parse +# 7| getMatchArmList(): [MatchArmList] MatchArmList +# 7| getArm(0): [MatchArm] ... => data +# 7| getExpr(): [PathExpr,VariableAccess] data +# 7| getPath(): [Path] data +# 7| getSegment(): [PathSegment] data +# 7| getIdentifier(): [NameRef] data +# 7| getPat(): [TupleStructPat] ...::Ok(...) +# 7| getPath(): [Path] ...::Ok +# 7| getQualifier(): [Path] ...::__private +# 7| getQualifier(): [Path] $crate +# 7| getSegment(): [PathSegment] $crate +# 7| getIdentifier(): [NameRef] $crate +# 7| getSegment(): [PathSegment] __private +# 7| getIdentifier(): [NameRef] __private +# 7| getSegment(): [PathSegment] Ok +# 7| getIdentifier(): [NameRef] Ok +# 7| getField(0): [IdentPat] data +# 7| getName(): [Name] data +# 7| getArm(1): [MatchArm] ... => ... +# 7| getExpr(): [BlockExpr] { ... } +# 7| getStmtList(): [StmtList] StmtList +# 7| getStatement(0): [ExprStmt] ExprStmt +# 7| getExpr(): [ReturnExpr] return ... +# 7| getExpr(): [CallExpr] ...::from(...) +# 7| getArgList(): [ArgList] ArgList +# 7| getArg(0): [MethodCallExpr] err.to_compile_error() +# 7| getArgList(): [ArgList] ArgList +# 7| getIdentifier(): [NameRef] to_compile_error +# 7| getReceiver(): [PathExpr,VariableAccess] err +# 7| getPath(): [Path] err +# 7| getSegment(): [PathSegment] err +# 7| getIdentifier(): [NameRef] err +# 7| getFunction(): [PathExpr] ...::from +# 7| getPath(): [Path] ...::from +# 7| getQualifier(): [Path] ...::TokenStream +# 7| getQualifier(): [Path] ...::__private +# 7| getQualifier(): [Path] $crate +# 7| getSegment(): [PathSegment] $crate +# 7| getIdentifier(): [NameRef] $crate +# 7| getSegment(): [PathSegment] __private +# 7| getIdentifier(): [NameRef] __private +# 7| getSegment(): [PathSegment] TokenStream +# 7| getIdentifier(): [NameRef] TokenStream +# 7| getSegment(): [PathSegment] from +# 7| getIdentifier(): [NameRef] from +# 7| getPat(): [TupleStructPat] ...::Err(...) +# 7| getPath(): [Path] ...::Err +# 7| getQualifier(): [Path] ...::__private +# 7| getQualifier(): [Path] $crate +# 7| getSegment(): [PathSegment] $crate +# 7| getIdentifier(): [NameRef] $crate +# 7| getSegment(): [PathSegment] __private +# 7| getIdentifier(): [NameRef] __private +# 7| getSegment(): [PathSegment] Err +# 7| getIdentifier(): [NameRef] Err +# 7| getField(0): [IdentPat] err +# 7| getName(): [Name] err +# 7| getPat(): [IdentPat] ast +# 7| getName(): [Name] ast +# 8| getStatement(2): [LetStmt] let ... = ... +# 8| getInitializer(): [MethodCallExpr] ... .collect() +# 14| getArgList(): [ArgList] ArgList +# 14| getGenericArgList(): [GenericArgList] <...> +# 14| getGenericArg(0): [TypeArg] TypeArg +# 14| getTypeRepr(): [PathTypeRepr] Vec::<...> +# 14| getPath(): [Path] Vec::<...> +# 14| getSegment(): [PathSegment] Vec::<...> +# 14| getGenericArgList(): [GenericArgList] <...> +# 14| getGenericArg(0): [TypeArg] TypeArg +# 14| getTypeRepr(): [InferTypeRepr] _ +# 14| getIdentifier(): [NameRef] Vec +# 14| getIdentifier(): [NameRef] collect +# 8| getReceiver(): [MethodCallExpr] ... .map(...) +# 9| getArgList(): [ArgList] ArgList +# 9| getArg(0): [ClosureExpr] |...| ... +# 9| getParamList(): [ParamList] ParamList +# 9| getParam(0): [Param] ... +# 9| getPat(): [IdentPat] i +# 9| getName(): [Name] i +# 9| getBody(): [BlockExpr] { ... } +# 9| getStmtList(): [StmtList] StmtList +# 10| getStatement(0): [LetStmt] let ... = ... +# 10| getInitializer(): [MethodCallExpr] ast.clone() +# 10| getArgList(): [ArgList] ArgList +# 10| getIdentifier(): [NameRef] clone +# 10| getReceiver(): [PathExpr,VariableAccess] ast +# 10| getPath(): [Path] ast +# 10| getSegment(): [PathSegment] ast +# 10| getIdentifier(): [NameRef] ast +# 10| getPat(): [IdentPat] mut new_ast +# 10| getName(): [Name] new_ast +# 11| getStatement(1): [ExprStmt] ExprStmt +# 11| getExpr(): [AssignmentExpr] ... = ... +# 11| getLhs(): [FieldExpr] ... .ident +# 11| getContainer(): [FieldExpr] new_ast.sig +# 11| getContainer(): [PathExpr,VariableAccess] new_ast +# 11| getPath(): [Path] new_ast +# 11| getSegment(): [PathSegment] new_ast +# 11| getIdentifier(): [NameRef] new_ast +# 11| getIdentifier(): [NameRef] sig +# 11| getIdentifier(): [NameRef] ident +# 11| getRhs(): [CallExpr] ...::new(...) +# 11| getArgList(): [ArgList] ArgList +# 11| getArg(0): [RefExpr] &... +# 11| getExpr(): [MacroExpr] MacroExpr +# 11| getMacroCall(): [MacroCall] format!... +# 11| getPath(): [Path] format +# 11| getSegment(): [PathSegment] format +# 11| getIdentifier(): [NameRef] format +# 11| getTokenTree(): [TokenTree] TokenTree +# 11| getMacroCallExpansion(): [CallExpr] ...::must_use(...) +# 11| getArgList(): [ArgList] ArgList +# 11| getArg(0): [BlockExpr] { ... } +# 11| getStmtList(): [StmtList] StmtList +# 11| getStatement(0): [LetStmt] let ... = ... +# 11| getInitializer(): [CallExpr] ...::format(...) +# 11| getArgList(): [ArgList] ArgList +# 11| getArg(0): [MacroExpr] MacroExpr +# 11| getMacroCall(): [MacroCall] ...::format_args!... +# 11| getPath(): [Path] ...::format_args +# 11| getQualifier(): [Path] ...::__export +# 11| getQualifier(): [Path] $crate +# 11| getSegment(): [PathSegment] $crate +# 11| getIdentifier(): [NameRef] $crate +# 11| getSegment(): [PathSegment] __export +# 11| getIdentifier(): [NameRef] __export +# 11| getSegment(): [PathSegment] format_args +# 11| getIdentifier(): [NameRef] format_args +# 11| getTokenTree(): [TokenTree] TokenTree +# 11| getMacroCallExpansion(): [FormatArgsExpr] FormatArgsExpr +# 11| getArg(0): [FormatArgsArg] FormatArgsArg +# 11| getExpr(): [FieldExpr] ... .ident +# 11| getContainer(): [FieldExpr] ast.sig +# 11| getContainer(): [PathExpr,VariableAccess] ast +# 11| getPath(): [Path] ast +# 11| getSegment(): [PathSegment] ast +# 11| getIdentifier(): [NameRef] ast +# 11| getIdentifier(): [NameRef] sig +# 11| getIdentifier(): [NameRef] ident +# 11| getArg(1): [FormatArgsArg] FormatArgsArg +# 11| getExpr(): [PathExpr,VariableAccess] i +# 11| getPath(): [Path] i +# 11| getSegment(): [PathSegment] i +# 11| getIdentifier(): [NameRef] i +# 11| getTemplate(): [StringLiteralExpr] "{}_{}" +# 11| getFormat(0): [Format] {} +# 11| getFormat(1): [Format] {} +# 11| getFunction(): [PathExpr] ...::format +# 11| getPath(): [Path] ...::format +# 11| getQualifier(): [Path] ...::fmt +# 11| getQualifier(): [Path] $crate +# 11| getSegment(): [PathSegment] $crate +# 11| getIdentifier(): [NameRef] $crate +# 11| getSegment(): [PathSegment] fmt +# 11| getIdentifier(): [NameRef] fmt +# 11| getSegment(): [PathSegment] format +# 11| getIdentifier(): [NameRef] format +# 11| getPat(): [IdentPat] res +# 11| getName(): [Name] res +# 11| getTailExpr(): [PathExpr,VariableAccess] res +# 11| getPath(): [Path] res +# 11| getSegment(): [PathSegment] res +# 11| getIdentifier(): [NameRef] res +# 11| getFunction(): [PathExpr] ...::must_use +# 11| getPath(): [Path] ...::must_use +# 11| getQualifier(): [Path] ...::__export +# 11| getQualifier(): [Path] $crate +# 11| getSegment(): [PathSegment] $crate +# 11| getIdentifier(): [NameRef] $crate +# 11| getSegment(): [PathSegment] __export +# 11| getIdentifier(): [NameRef] __export +# 11| getSegment(): [PathSegment] must_use +# 11| getIdentifier(): [NameRef] must_use +# 11| getArg(1): [MethodCallExpr] ... .span() +# 11| getArgList(): [ArgList] ArgList +# 11| getIdentifier(): [NameRef] span +# 11| getReceiver(): [FieldExpr] ... .ident +# 11| getContainer(): [FieldExpr] ast.sig +# 11| getContainer(): [PathExpr,VariableAccess] ast +# 11| getPath(): [Path] ast +# 11| getSegment(): [PathSegment] ast +# 11| getIdentifier(): [NameRef] ast +# 11| getIdentifier(): [NameRef] sig +# 11| getIdentifier(): [NameRef] ident +# 11| getFunction(): [PathExpr] ...::new +# 11| getPath(): [Path] ...::new +# 11| getQualifier(): [Path] ...::Ident +# 11| getQualifier(): [Path] syn +# 11| getSegment(): [PathSegment] syn +# 11| getIdentifier(): [NameRef] syn +# 11| getSegment(): [PathSegment] Ident +# 11| getIdentifier(): [NameRef] Ident +# 11| getSegment(): [PathSegment] new +# 11| getIdentifier(): [NameRef] new +# 12| getTailExpr(): [PathExpr,VariableAccess] new_ast +# 12| getPath(): [Path] new_ast +# 12| getSegment(): [PathSegment] new_ast +# 12| getIdentifier(): [NameRef] new_ast +# 9| getIdentifier(): [NameRef] map +# 8| getReceiver(): [ParenExpr] (...) +# 8| getExpr(): [RangeExpr] 0..number +# 8| getEnd(): [PathExpr,VariableAccess] number +# 8| getPath(): [Path] number +# 8| getSegment(): [PathSegment] number +# 8| getIdentifier(): [NameRef] number +# 8| getStart(): [IntegerLiteralExpr] 0 +# 8| getPat(): [IdentPat] items +# 8| getName(): [Name] items +# 15| getTailExpr(): [MethodCallExpr] ... .into() +# 17| getArgList(): [ArgList] ArgList +# 17| getIdentifier(): [NameRef] into +# 15| getReceiver(): [MacroExpr] MacroExpr +# 15| getMacroCall(): [MacroCall] quote!... +# 15| getPath(): [Path] quote +# 15| getSegment(): [PathSegment] quote +# 15| getIdentifier(): [NameRef] quote +# 15| getTokenTree(): [TokenTree] TokenTree +# 16| getMacroCallExpansion(): [BlockExpr] { ... } +# 16| getStmtList(): [StmtList] StmtList +# 15| getStatement(0): [LetStmt] let ... = ... +# 15| getInitializer(): [CallExpr] ...::new(...) +# 15| getArgList(): [ArgList] ArgList +# 15| getFunction(): [PathExpr] ...::new +# 15| getPath(): [Path] ...::new +# 15| getQualifier(): [Path] ...::TokenStream +# 15| getQualifier(): [Path] ...::__private +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] __private +# 15| getIdentifier(): [NameRef] __private +# 15| getSegment(): [PathSegment] TokenStream +# 15| getIdentifier(): [NameRef] TokenStream +# 15| getSegment(): [PathSegment] new +# 15| getIdentifier(): [NameRef] new +# 15| getPat(): [IdentPat] mut _s +# 15| getName(): [Name] _s +# 16| getStatement(1): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_each_token!... +# 15| getPath(): [Path] ...::quote_each_token +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_each_token +# 15| getIdentifier(): [NameRef] quote_each_token +# 16| getTokenTree(): [TokenTree] TokenTree +# 16| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getTailExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_tokens_with_context!... +# 15| getPath(): [Path] ...::quote_tokens_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_tokens_with_context +# 15| getIdentifier(): [NameRef] quote_tokens_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 16| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getTailExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 15| getPath(): [Path] ...::quote_token_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_token_with_context +# 15| getIdentifier(): [NameRef] quote_token_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(0): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 15| getPath(): [Path] ...::quote_token_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_token_with_context +# 15| getIdentifier(): [NameRef] quote_token_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(1): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 15| getPath(): [Path] ...::quote_token_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_token_with_context +# 15| getIdentifier(): [NameRef] quote_token_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(2): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 15| getPath(): [Path] ...::quote_token_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_token_with_context +# 15| getIdentifier(): [NameRef] quote_token_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(3): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 15| getPath(): [Path] ...::quote_token_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_token_with_context +# 15| getIdentifier(): [NameRef] quote_token_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 16| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getTailExpr(): [BlockExpr] { ... } +# 16| getStmtList(): [StmtList] StmtList +# 15| getStatement(0): [Use] use ...::ext::* +# 15| getUseTree(): [UseTree] ...::ext::* +# 15| getPath(): [Path] ...::ext +# 15| getQualifier(): [Path] ...::__private +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] __private +# 15| getIdentifier(): [NameRef] __private +# 15| getSegment(): [PathSegment] ext +# 15| getIdentifier(): [NameRef] ext +# 15| getStatement(1): [LetStmt] let ... = ...::ThereIsNoIteratorInRepetition +# 15| getInitializer(): [PathExpr] ...::ThereIsNoIteratorInRepetition +# 15| getPath(): [Path] ...::ThereIsNoIteratorInRepetition +# 15| getQualifier(): [Path] ...::__private +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] __private +# 15| getIdentifier(): [NameRef] __private +# 15| getSegment(): [PathSegment] ThereIsNoIteratorInRepetition +# 15| getIdentifier(): [NameRef] ThereIsNoIteratorInRepetition +# 15| getPat(): [IdentPat] has_iter +# 15| getName(): [Name] has_iter +# 16| getStatement(2): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::pounded_var_names!... +# 15| getPath(): [Path] ...::pounded_var_names +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_names +# 15| getIdentifier(): [NameRef] pounded_var_names +# 16| getTokenTree(): [TokenTree] TokenTree +# 16| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getTailExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::pounded_var_names_with_context!... +# 15| getPath(): [Path] ...::pounded_var_names_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_names_with_context +# 15| getIdentifier(): [NameRef] pounded_var_names_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 16| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getTailExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::pounded_var_with_context!... +# 15| getPath(): [Path] ...::pounded_var_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_with_context +# 15| getIdentifier(): [NameRef] pounded_var_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 15| getStatement(0): [ExprStmt] ExprStmt +# 15| getExpr(): [MacroExpr] MacroExpr +# 15| getMacroCall(): [MacroCall] ...::pounded_var_with_context!... +# 15| getPath(): [Path] ...::pounded_var_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_with_context +# 15| getIdentifier(): [NameRef] pounded_var_with_context +# 15| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 15| getTailExpr(): [MacroExpr] MacroExpr +# 15| getMacroCall(): [MacroCall] ...::pounded_var_names!... +# 15| getPath(): [Path] ...::pounded_var_names +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_names +# 15| getIdentifier(): [NameRef] pounded_var_names +# 15| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 15| getTailExpr(): [MacroExpr] MacroExpr +# 15| getMacroCall(): [MacroCall] ...::pounded_var_names_with_context!... +# 15| getPath(): [Path] ...::pounded_var_names_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_names_with_context +# 15| getIdentifier(): [NameRef] pounded_var_names_with_context +# 15| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 15| getTailExpr(): [MacroExpr] MacroExpr +# 15| getMacroCall(): [MacroCall] ...::pounded_var_with_context!... +# 15| getPath(): [Path] ...::pounded_var_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_with_context +# 15| getIdentifier(): [NameRef] pounded_var_with_context +# 15| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(1): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::pounded_var_with_context!... +# 15| getPath(): [Path] ...::pounded_var_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_with_context +# 15| getIdentifier(): [NameRef] pounded_var_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(2): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::pounded_var_with_context!... +# 15| getPath(): [Path] ...::pounded_var_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_with_context +# 15| getIdentifier(): [NameRef] pounded_var_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 16| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(0): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_bind_into_iter!... +# 15| getPath(): [Path] ...::quote_bind_into_iter +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_bind_into_iter +# 15| getIdentifier(): [NameRef] quote_bind_into_iter +# 16| getTokenTree(): [TokenTree] TokenTree +# 16| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(0): [LetStmt] let ... = ... +# 15| getAttr(0): [Attr] Attr +# 15| getMeta(): [Meta] Meta +# 15| getPath(): [Path] allow +# 15| getSegment(): [PathSegment] allow +# 15| getIdentifier(): [NameRef] allow +# 15| getTokenTree(): [TokenTree] TokenTree +# 16| getInitializer(): [MethodCallExpr] items.quote_into_iter() +# 15| getArgList(): [ArgList] ArgList +# 15| getIdentifier(): [NameRef] quote_into_iter +# 16| getReceiver(): [PathExpr,VariableAccess] items +# 16| getPath(): [Path] items +# 16| getSegment(): [PathSegment] items +# 16| getIdentifier(): [NameRef] items +# 16| getPat(): [TuplePat] TuplePat +# 16| getField(0): [IdentPat] mut items +# 16| getName(): [Name] items +# 15| getField(1): [IdentPat] i +# 15| getName(): [Name] i +# 15| getStatement(1): [LetStmt] let ... = ... +# 15| getInitializer(): [BinaryExpr] ... | ... +# 15| getLhs(): [PathExpr,VariableAccess] has_iter +# 15| getPath(): [Path] has_iter +# 15| getSegment(): [PathSegment] has_iter +# 15| getIdentifier(): [NameRef] has_iter +# 15| getRhs(): [PathExpr,VariableAccess] i +# 15| getPath(): [Path] i +# 15| getSegment(): [PathSegment] i +# 15| getIdentifier(): [NameRef] i +# 15| getPat(): [IdentPat] has_iter +# 15| getName(): [Name] has_iter +# 15| getStatement(3): [LetStmt] let _ = has_iter +# 15| getInitializer(): [PathExpr,VariableAccess] has_iter +# 15| getPath(): [Path] has_iter +# 15| getSegment(): [PathSegment] has_iter +# 15| getIdentifier(): [NameRef] has_iter +# 15| getPat(): [WildcardPat] _ +# 15| getTypeRepr(): [PathTypeRepr] ...::HasIterator +# 15| getPath(): [Path] ...::HasIterator +# 15| getQualifier(): [Path] ...::__private +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] __private +# 15| getIdentifier(): [NameRef] __private +# 15| getSegment(): [PathSegment] HasIterator +# 15| getIdentifier(): [NameRef] HasIterator +# 16| getTailExpr(): [WhileExpr] while true { ... } +# 16| getLoopBody(): [BlockExpr] { ... } +# 16| getStmtList(): [StmtList] StmtList +# 16| getStatement(0): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::pounded_var_names!... +# 15| getPath(): [Path] ...::pounded_var_names +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_names +# 15| getIdentifier(): [NameRef] pounded_var_names +# 16| getTokenTree(): [TokenTree] TokenTree +# 16| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getTailExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::pounded_var_names_with_context!... +# 15| getPath(): [Path] ...::pounded_var_names_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_names_with_context +# 15| getIdentifier(): [NameRef] pounded_var_names_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 16| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getTailExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::pounded_var_with_context!... +# 15| getPath(): [Path] ...::pounded_var_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_with_context +# 15| getIdentifier(): [NameRef] pounded_var_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 15| getStatement(0): [ExprStmt] ExprStmt +# 15| getExpr(): [MacroExpr] MacroExpr +# 15| getMacroCall(): [MacroCall] ...::pounded_var_with_context!... +# 15| getPath(): [Path] ...::pounded_var_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_with_context +# 15| getIdentifier(): [NameRef] pounded_var_with_context +# 15| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 15| getTailExpr(): [MacroExpr] MacroExpr +# 15| getMacroCall(): [MacroCall] ...::pounded_var_names!... +# 15| getPath(): [Path] ...::pounded_var_names +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_names +# 15| getIdentifier(): [NameRef] pounded_var_names +# 15| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 15| getTailExpr(): [MacroExpr] MacroExpr +# 15| getMacroCall(): [MacroCall] ...::pounded_var_names_with_context!... +# 15| getPath(): [Path] ...::pounded_var_names_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_names_with_context +# 15| getIdentifier(): [NameRef] pounded_var_names_with_context +# 15| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 15| getTailExpr(): [MacroExpr] MacroExpr +# 15| getMacroCall(): [MacroCall] ...::pounded_var_with_context!... +# 15| getPath(): [Path] ...::pounded_var_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_with_context +# 15| getIdentifier(): [NameRef] pounded_var_with_context +# 15| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(1): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::pounded_var_with_context!... +# 15| getPath(): [Path] ...::pounded_var_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_with_context +# 15| getIdentifier(): [NameRef] pounded_var_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(2): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::pounded_var_with_context!... +# 15| getPath(): [Path] ...::pounded_var_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] pounded_var_with_context +# 15| getIdentifier(): [NameRef] pounded_var_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 16| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(0): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_bind_next_or_break!... +# 15| getPath(): [Path] ...::quote_bind_next_or_break +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_bind_next_or_break +# 15| getIdentifier(): [NameRef] quote_bind_next_or_break +# 16| getTokenTree(): [TokenTree] TokenTree +# 16| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(0): [LetStmt] let ... = ... +# 16| getInitializer(): [MatchExpr] match ... { ... } +# 16| getScrutinee(): [MethodCallExpr] items.next() +# 15| getArgList(): [ArgList] ArgList +# 15| getIdentifier(): [NameRef] next +# 16| getReceiver(): [PathExpr,VariableAccess] items +# 16| getPath(): [Path] items +# 16| getSegment(): [PathSegment] items +# 16| getIdentifier(): [NameRef] items +# 15| getMatchArmList(): [MatchArmList] MatchArmList +# 15| getArm(0): [MatchArm] ... => ... +# 15| getExpr(): [CallExpr] ...::RepInterp(...) +# 15| getArgList(): [ArgList] ArgList +# 15| getArg(0): [PathExpr] _x +# 15| getPath(): [Path] _x +# 15| getSegment(): [PathSegment] _x +# 15| getIdentifier(): [NameRef] _x +# 15| getFunction(): [PathExpr] ...::RepInterp +# 15| getPath(): [Path] ...::RepInterp +# 15| getQualifier(): [Path] ...::__private +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] __private +# 15| getIdentifier(): [NameRef] __private +# 15| getSegment(): [PathSegment] RepInterp +# 15| getIdentifier(): [NameRef] RepInterp +# 15| getPat(): [TupleStructPat] Some(...) +# 15| getPath(): [Path] Some +# 15| getSegment(): [PathSegment] Some +# 15| getIdentifier(): [NameRef] Some +# 15| getField(0): [IdentPat] _x +# 15| getName(): [Name] _x +# 15| getArm(1): [MatchArm] ... => ... +# 15| getExpr(): [BreakExpr] break +# 15| getPat(): [IdentPat] None +# 15| getName(): [Name] None +# 16| getPat(): [IdentPat] items +# 16| getName(): [Name] items +# 16| getTailExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_each_token!... +# 15| getPath(): [Path] ...::quote_each_token +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_each_token +# 15| getIdentifier(): [NameRef] quote_each_token +# 16| getTokenTree(): [TokenTree] TokenTree +# 16| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getTailExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_tokens_with_context!... +# 15| getPath(): [Path] ...::quote_tokens_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_tokens_with_context +# 15| getIdentifier(): [NameRef] quote_tokens_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 16| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getTailExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 15| getPath(): [Path] ...::quote_token_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_token_with_context +# 15| getIdentifier(): [NameRef] quote_token_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(0): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 15| getPath(): [Path] ...::quote_token_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_token_with_context +# 15| getIdentifier(): [NameRef] quote_token_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(1): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 15| getPath(): [Path] ...::quote_token_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_token_with_context +# 15| getIdentifier(): [NameRef] quote_token_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(2): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 15| getPath(): [Path] ...::quote_token_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_token_with_context +# 15| getIdentifier(): [NameRef] quote_token_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(3): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 15| getPath(): [Path] ...::quote_token_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_token_with_context +# 15| getIdentifier(): [NameRef] quote_token_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 16| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(0): [ExprStmt] ExprStmt +# 16| getExpr(): [CallExpr] ...::to_tokens(...) +# 16| getArgList(): [ArgList] ArgList +# 16| getArg(0): [RefExpr] &items +# 16| getExpr(): [PathExpr,VariableAccess] items +# 16| getPath(): [Path] items +# 16| getSegment(): [PathSegment] items +# 16| getIdentifier(): [NameRef] items +# 15| getArg(1): [RefExpr] &mut _s +# 15| getExpr(): [PathExpr] _s +# 15| getPath(): [Path] _s +# 15| getSegment(): [PathSegment] _s +# 15| getIdentifier(): [NameRef] _s +# 15| getFunction(): [PathExpr] ...::to_tokens +# 15| getPath(): [Path] ...::to_tokens +# 15| getQualifier(): [Path] ...::ToTokens +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] ToTokens +# 15| getIdentifier(): [NameRef] ToTokens +# 15| getSegment(): [PathSegment] to_tokens +# 15| getIdentifier(): [NameRef] to_tokens +# 16| getStatement(4): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 15| getPath(): [Path] ...::quote_token_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_token_with_context +# 15| getIdentifier(): [NameRef] quote_token_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(5): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 15| getPath(): [Path] ...::quote_token_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_token_with_context +# 15| getIdentifier(): [NameRef] quote_token_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(6): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 15| getPath(): [Path] ...::quote_token_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_token_with_context +# 15| getIdentifier(): [NameRef] quote_token_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 15| getCondition(): [BooleanLiteralExpr] true +# 16| getStatement(4): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 15| getPath(): [Path] ...::quote_token_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_token_with_context +# 15| getIdentifier(): [NameRef] quote_token_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(5): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 15| getPath(): [Path] ...::quote_token_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_token_with_context +# 15| getIdentifier(): [NameRef] quote_token_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(6): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 15| getPath(): [Path] ...::quote_token_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_token_with_context +# 15| getIdentifier(): [NameRef] quote_token_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 16| getStatement(7): [ExprStmt] ExprStmt +# 16| getExpr(): [MacroExpr] MacroExpr +# 16| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 15| getPath(): [Path] ...::quote_token_with_context +# 15| getQualifier(): [Path] $crate +# 15| getSegment(): [PathSegment] $crate +# 15| getIdentifier(): [NameRef] $crate +# 15| getSegment(): [PathSegment] quote_token_with_context +# 15| getIdentifier(): [NameRef] quote_token_with_context +# 16| getTokenTree(): [TokenTree] TokenTree +# 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 15| getTailExpr(): [PathExpr] _s +# 15| getPath(): [Path] _s +# 15| getSegment(): [PathSegment] _s +# 15| getIdentifier(): [NameRef] _s +# 5| getName(): [Name] repeat +# 5| getRetType(): [RetTypeRepr] RetTypeRepr +# 5| getTypeRepr(): [PathTypeRepr] TokenStream +# 5| getPath(): [Path] TokenStream +# 5| getSegment(): [PathSegment] TokenStream +# 5| getIdentifier(): [NameRef] TokenStream +# 5| getVisibility(): [Visibility] Visibility +# 20| getItem(3): [Function] fn add_one +# 21| getParamList(): [ParamList] ParamList +# 21| getParam(0): [Param] ...: TokenStream +# 21| getTypeRepr(): [PathTypeRepr] TokenStream +# 21| getPath(): [Path] TokenStream +# 21| getSegment(): [PathSegment] TokenStream +# 21| getIdentifier(): [NameRef] TokenStream +# 21| getPat(): [IdentPat] _attr +# 21| getName(): [Name] _attr +# 21| getParam(1): [Param] ...: TokenStream +# 21| getTypeRepr(): [PathTypeRepr] TokenStream +# 21| getPath(): [Path] TokenStream +# 21| getSegment(): [PathSegment] TokenStream +# 21| getIdentifier(): [NameRef] TokenStream +# 21| getPat(): [IdentPat] item +# 21| getName(): [Name] item +# 20| getAttr(0): [Attr] Attr +# 20| getMeta(): [Meta] Meta +# 20| getPath(): [Path] proc_macro_attribute +# 20| getSegment(): [PathSegment] proc_macro_attribute +# 20| getIdentifier(): [NameRef] proc_macro_attribute +# 21| getBody(): [BlockExpr] { ... } +# 21| getStmtList(): [StmtList] StmtList +# 22| getStatement(0): [LetStmt] let ... = ... +# 22| getInitializer(): [MacroExpr] MacroExpr +# 22| getMacroCall(): [MacroCall] ...::parse_macro_input!... +# 22| getPath(): [Path] ...::parse_macro_input +# 22| getQualifier(): [Path] syn +# 22| getSegment(): [PathSegment] syn +# 22| getIdentifier(): [NameRef] syn +# 22| getSegment(): [PathSegment] parse_macro_input +# 22| getIdentifier(): [NameRef] parse_macro_input +# 22| getTokenTree(): [TokenTree] TokenTree +# 22| getMacroCallExpansion(): [MatchExpr] match ... { ... } +# 22| getScrutinee(): [CallExpr] ...::parse::<...>(...) +# 22| getArgList(): [ArgList] ArgList +# 22| getArg(0): [PathExpr,VariableAccess] item +# 22| getPath(): [Path] item +# 22| getSegment(): [PathSegment] item +# 22| getIdentifier(): [NameRef] item +# 22| getFunction(): [PathExpr] ...::parse::<...> +# 22| getPath(): [Path] ...::parse::<...> +# 22| getQualifier(): [Path] $crate +# 22| getSegment(): [PathSegment] $crate +# 22| getIdentifier(): [NameRef] $crate +# 22| getSegment(): [PathSegment] parse::<...> +# 22| getGenericArgList(): [GenericArgList] <...> +# 22| getGenericArg(0): [TypeArg] TypeArg +# 22| getTypeRepr(): [PathTypeRepr] ...::ItemFn +# 22| getPath(): [Path] ...::ItemFn +# 22| getQualifier(): [Path] syn +# 22| getSegment(): [PathSegment] syn +# 22| getIdentifier(): [NameRef] syn +# 22| getSegment(): [PathSegment] ItemFn +# 22| getIdentifier(): [NameRef] ItemFn +# 22| getIdentifier(): [NameRef] parse +# 22| getMatchArmList(): [MatchArmList] MatchArmList +# 22| getArm(0): [MatchArm] ... => data +# 22| getExpr(): [PathExpr,VariableAccess] data +# 22| getPath(): [Path] data +# 22| getSegment(): [PathSegment] data +# 22| getIdentifier(): [NameRef] data +# 22| getPat(): [TupleStructPat] ...::Ok(...) +# 22| getPath(): [Path] ...::Ok +# 22| getQualifier(): [Path] ...::__private +# 22| getQualifier(): [Path] $crate +# 22| getSegment(): [PathSegment] $crate +# 22| getIdentifier(): [NameRef] $crate +# 22| getSegment(): [PathSegment] __private +# 22| getIdentifier(): [NameRef] __private +# 22| getSegment(): [PathSegment] Ok +# 22| getIdentifier(): [NameRef] Ok +# 22| getField(0): [IdentPat] data +# 22| getName(): [Name] data +# 22| getArm(1): [MatchArm] ... => ... +# 22| getExpr(): [BlockExpr] { ... } +# 22| getStmtList(): [StmtList] StmtList +# 22| getStatement(0): [ExprStmt] ExprStmt +# 22| getExpr(): [ReturnExpr] return ... +# 22| getExpr(): [CallExpr] ...::from(...) +# 22| getArgList(): [ArgList] ArgList +# 22| getArg(0): [MethodCallExpr] err.to_compile_error() +# 22| getArgList(): [ArgList] ArgList +# 22| getIdentifier(): [NameRef] to_compile_error +# 22| getReceiver(): [PathExpr,VariableAccess] err +# 22| getPath(): [Path] err +# 22| getSegment(): [PathSegment] err +# 22| getIdentifier(): [NameRef] err +# 22| getFunction(): [PathExpr] ...::from +# 22| getPath(): [Path] ...::from +# 22| getQualifier(): [Path] ...::TokenStream +# 22| getQualifier(): [Path] ...::__private +# 22| getQualifier(): [Path] $crate +# 22| getSegment(): [PathSegment] $crate +# 22| getIdentifier(): [NameRef] $crate +# 22| getSegment(): [PathSegment] __private +# 22| getIdentifier(): [NameRef] __private +# 22| getSegment(): [PathSegment] TokenStream +# 22| getIdentifier(): [NameRef] TokenStream +# 22| getSegment(): [PathSegment] from +# 22| getIdentifier(): [NameRef] from +# 22| getPat(): [TupleStructPat] ...::Err(...) +# 22| getPath(): [Path] ...::Err +# 22| getQualifier(): [Path] ...::__private +# 22| getQualifier(): [Path] $crate +# 22| getSegment(): [PathSegment] $crate +# 22| getIdentifier(): [NameRef] $crate +# 22| getSegment(): [PathSegment] __private +# 22| getIdentifier(): [NameRef] __private +# 22| getSegment(): [PathSegment] Err +# 22| getIdentifier(): [NameRef] Err +# 22| getField(0): [IdentPat] err +# 22| getName(): [Name] err +# 22| getPat(): [IdentPat] ast +# 22| getName(): [Name] ast +# 23| getStatement(1): [LetStmt] let ... = ... +# 23| getInitializer(): [MethodCallExpr] ast.clone() +# 23| getArgList(): [ArgList] ArgList +# 23| getIdentifier(): [NameRef] clone +# 23| getReceiver(): [PathExpr,VariableAccess] ast +# 23| getPath(): [Path] ast +# 23| getSegment(): [PathSegment] ast +# 23| getIdentifier(): [NameRef] ast +# 23| getPat(): [IdentPat] mut new_ast +# 23| getName(): [Name] new_ast +# 24| getStatement(2): [ExprStmt] ExprStmt +# 24| getExpr(): [AssignmentExpr] ... = ... +# 24| getLhs(): [FieldExpr] ... .ident +# 24| getContainer(): [FieldExpr] new_ast.sig +# 24| getContainer(): [PathExpr,VariableAccess] new_ast +# 24| getPath(): [Path] new_ast +# 24| getSegment(): [PathSegment] new_ast +# 24| getIdentifier(): [NameRef] new_ast +# 24| getIdentifier(): [NameRef] sig +# 24| getIdentifier(): [NameRef] ident +# 24| getRhs(): [CallExpr] ...::new(...) +# 24| getArgList(): [ArgList] ArgList +# 24| getArg(0): [RefExpr] &... +# 24| getExpr(): [MacroExpr] MacroExpr +# 24| getMacroCall(): [MacroCall] format!... +# 24| getPath(): [Path] format +# 24| getSegment(): [PathSegment] format +# 24| getIdentifier(): [NameRef] format +# 24| getTokenTree(): [TokenTree] TokenTree +# 24| getMacroCallExpansion(): [CallExpr] ...::must_use(...) +# 24| getArgList(): [ArgList] ArgList +# 24| getArg(0): [BlockExpr] { ... } +# 24| getStmtList(): [StmtList] StmtList +# 24| getStatement(0): [LetStmt] let ... = ... +# 24| getInitializer(): [CallExpr] ...::format(...) +# 24| getArgList(): [ArgList] ArgList +# 24| getArg(0): [MacroExpr] MacroExpr +# 24| getMacroCall(): [MacroCall] ...::format_args!... +# 24| getPath(): [Path] ...::format_args +# 24| getQualifier(): [Path] ...::__export +# 24| getQualifier(): [Path] $crate +# 24| getSegment(): [PathSegment] $crate +# 24| getIdentifier(): [NameRef] $crate +# 24| getSegment(): [PathSegment] __export +# 24| getIdentifier(): [NameRef] __export +# 24| getSegment(): [PathSegment] format_args +# 24| getIdentifier(): [NameRef] format_args +# 24| getTokenTree(): [TokenTree] TokenTree +# 24| getMacroCallExpansion(): [FormatArgsExpr] FormatArgsExpr +# 24| getArg(0): [FormatArgsArg] FormatArgsArg +# 24| getExpr(): [FieldExpr] ... .ident +# 24| getContainer(): [FieldExpr] ast.sig +# 24| getContainer(): [PathExpr,VariableAccess] ast +# 24| getPath(): [Path] ast +# 24| getSegment(): [PathSegment] ast +# 24| getIdentifier(): [NameRef] ast +# 24| getIdentifier(): [NameRef] sig +# 24| getIdentifier(): [NameRef] ident +# 24| getTemplate(): [StringLiteralExpr] "{}_new" +# 24| getFormat(0): [Format] {} +# 24| getFunction(): [PathExpr] ...::format +# 24| getPath(): [Path] ...::format +# 24| getQualifier(): [Path] ...::fmt +# 24| getQualifier(): [Path] $crate +# 24| getSegment(): [PathSegment] $crate +# 24| getIdentifier(): [NameRef] $crate +# 24| getSegment(): [PathSegment] fmt +# 24| getIdentifier(): [NameRef] fmt +# 24| getSegment(): [PathSegment] format +# 24| getIdentifier(): [NameRef] format +# 24| getPat(): [IdentPat] res +# 24| getName(): [Name] res +# 24| getTailExpr(): [PathExpr,VariableAccess] res +# 24| getPath(): [Path] res +# 24| getSegment(): [PathSegment] res +# 24| getIdentifier(): [NameRef] res +# 24| getFunction(): [PathExpr] ...::must_use +# 24| getPath(): [Path] ...::must_use +# 24| getQualifier(): [Path] ...::__export +# 24| getQualifier(): [Path] $crate +# 24| getSegment(): [PathSegment] $crate +# 24| getIdentifier(): [NameRef] $crate +# 24| getSegment(): [PathSegment] __export +# 24| getIdentifier(): [NameRef] __export +# 24| getSegment(): [PathSegment] must_use +# 24| getIdentifier(): [NameRef] must_use +# 24| getArg(1): [MethodCallExpr] ... .span() +# 24| getArgList(): [ArgList] ArgList +# 24| getIdentifier(): [NameRef] span +# 24| getReceiver(): [FieldExpr] ... .ident +# 24| getContainer(): [FieldExpr] ast.sig +# 24| getContainer(): [PathExpr,VariableAccess] ast +# 24| getPath(): [Path] ast +# 24| getSegment(): [PathSegment] ast +# 24| getIdentifier(): [NameRef] ast +# 24| getIdentifier(): [NameRef] sig +# 24| getIdentifier(): [NameRef] ident +# 24| getFunction(): [PathExpr] ...::new +# 24| getPath(): [Path] ...::new +# 24| getQualifier(): [Path] ...::Ident +# 24| getQualifier(): [Path] syn +# 24| getSegment(): [PathSegment] syn +# 24| getIdentifier(): [NameRef] syn +# 24| getSegment(): [PathSegment] Ident +# 24| getIdentifier(): [NameRef] Ident +# 24| getSegment(): [PathSegment] new +# 24| getIdentifier(): [NameRef] new +# 25| getTailExpr(): [MethodCallExpr] ... .into() +# 28| getArgList(): [ArgList] ArgList +# 28| getIdentifier(): [NameRef] into +# 25| getReceiver(): [MacroExpr] MacroExpr +# 25| getMacroCall(): [MacroCall] quote!... +# 25| getPath(): [Path] quote +# 25| getSegment(): [PathSegment] quote +# 25| getIdentifier(): [NameRef] quote +# 25| getTokenTree(): [TokenTree] TokenTree +# 26| getMacroCallExpansion(): [BlockExpr] { ... } +# 26| getStmtList(): [StmtList] StmtList +# 25| getStatement(0): [LetStmt] let ... = ... +# 25| getInitializer(): [CallExpr] ...::new(...) +# 25| getArgList(): [ArgList] ArgList +# 25| getFunction(): [PathExpr] ...::new +# 25| getPath(): [Path] ...::new +# 25| getQualifier(): [Path] ...::TokenStream +# 25| getQualifier(): [Path] ...::__private +# 25| getQualifier(): [Path] $crate +# 25| getSegment(): [PathSegment] $crate +# 25| getIdentifier(): [NameRef] $crate +# 25| getSegment(): [PathSegment] __private +# 25| getIdentifier(): [NameRef] __private +# 25| getSegment(): [PathSegment] TokenStream +# 25| getIdentifier(): [NameRef] TokenStream +# 25| getSegment(): [PathSegment] new +# 25| getIdentifier(): [NameRef] new +# 25| getPat(): [IdentPat] mut _s +# 25| getName(): [Name] _s +# 26| getStatement(1): [ExprStmt] ExprStmt +# 26| getExpr(): [MacroExpr] MacroExpr +# 26| getMacroCall(): [MacroCall] ...::quote_each_token!... +# 25| getPath(): [Path] ...::quote_each_token +# 25| getQualifier(): [Path] $crate +# 25| getSegment(): [PathSegment] $crate +# 25| getIdentifier(): [NameRef] $crate +# 25| getSegment(): [PathSegment] quote_each_token +# 25| getIdentifier(): [NameRef] quote_each_token +# 26| getTokenTree(): [TokenTree] TokenTree +# 26| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 26| getTailExpr(): [MacroExpr] MacroExpr +# 26| getMacroCall(): [MacroCall] ...::quote_tokens_with_context!... +# 25| getPath(): [Path] ...::quote_tokens_with_context +# 25| getQualifier(): [Path] $crate +# 25| getSegment(): [PathSegment] $crate +# 25| getIdentifier(): [NameRef] $crate +# 25| getSegment(): [PathSegment] quote_tokens_with_context +# 25| getIdentifier(): [NameRef] quote_tokens_with_context +# 26| getTokenTree(): [TokenTree] TokenTree +# 26| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 27| getTailExpr(): [MacroExpr] MacroExpr +# 27| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 25| getPath(): [Path] ...::quote_token_with_context +# 25| getQualifier(): [Path] $crate +# 25| getSegment(): [PathSegment] $crate +# 25| getIdentifier(): [NameRef] $crate +# 25| getSegment(): [PathSegment] quote_token_with_context +# 25| getIdentifier(): [NameRef] quote_token_with_context +# 27| getTokenTree(): [TokenTree] TokenTree +# 25| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 26| getStatement(0): [ExprStmt] ExprStmt +# 26| getExpr(): [MacroExpr] MacroExpr +# 26| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 25| getPath(): [Path] ...::quote_token_with_context +# 25| getQualifier(): [Path] $crate +# 25| getSegment(): [PathSegment] $crate +# 25| getIdentifier(): [NameRef] $crate +# 25| getSegment(): [PathSegment] quote_token_with_context +# 25| getIdentifier(): [NameRef] quote_token_with_context +# 26| getTokenTree(): [TokenTree] TokenTree +# 25| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 26| getStatement(1): [ExprStmt] ExprStmt +# 26| getExpr(): [MacroExpr] MacroExpr +# 26| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 25| getPath(): [Path] ...::quote_token_with_context +# 25| getQualifier(): [Path] $crate +# 25| getSegment(): [PathSegment] $crate +# 25| getIdentifier(): [NameRef] $crate +# 25| getSegment(): [PathSegment] quote_token_with_context +# 25| getIdentifier(): [NameRef] quote_token_with_context +# 26| getTokenTree(): [TokenTree] TokenTree +# 25| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 26| getStatement(2): [ExprStmt] ExprStmt +# 26| getExpr(): [MacroExpr] MacroExpr +# 26| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 25| getPath(): [Path] ...::quote_token_with_context +# 25| getQualifier(): [Path] $crate +# 25| getSegment(): [PathSegment] $crate +# 25| getIdentifier(): [NameRef] $crate +# 25| getSegment(): [PathSegment] quote_token_with_context +# 25| getIdentifier(): [NameRef] quote_token_with_context +# 26| getTokenTree(): [TokenTree] TokenTree +# 25| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 26| getStatement(3): [ExprStmt] ExprStmt +# 26| getExpr(): [MacroExpr] MacroExpr +# 26| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 25| getPath(): [Path] ...::quote_token_with_context +# 25| getQualifier(): [Path] $crate +# 25| getSegment(): [PathSegment] $crate +# 25| getIdentifier(): [NameRef] $crate +# 25| getSegment(): [PathSegment] quote_token_with_context +# 25| getIdentifier(): [NameRef] quote_token_with_context +# 26| getTokenTree(): [TokenTree] TokenTree +# 26| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 26| getStatement(0): [ExprStmt] ExprStmt +# 26| getExpr(): [CallExpr] ...::to_tokens(...) +# 26| getArgList(): [ArgList] ArgList +# 26| getArg(0): [RefExpr] &ast +# 26| getExpr(): [PathExpr,VariableAccess] ast +# 26| getPath(): [Path] ast +# 26| getSegment(): [PathSegment] ast +# 26| getIdentifier(): [NameRef] ast +# 25| getArg(1): [RefExpr] &mut _s +# 25| getExpr(): [PathExpr] _s +# 25| getPath(): [Path] _s +# 25| getSegment(): [PathSegment] _s +# 25| getIdentifier(): [NameRef] _s +# 25| getFunction(): [PathExpr] ...::to_tokens +# 25| getPath(): [Path] ...::to_tokens +# 25| getQualifier(): [Path] ...::ToTokens +# 25| getQualifier(): [Path] $crate +# 25| getSegment(): [PathSegment] $crate +# 25| getIdentifier(): [NameRef] $crate +# 25| getSegment(): [PathSegment] ToTokens +# 25| getIdentifier(): [NameRef] ToTokens +# 25| getSegment(): [PathSegment] to_tokens +# 25| getIdentifier(): [NameRef] to_tokens +# 26| getStatement(4): [ExprStmt] ExprStmt +# 26| getExpr(): [MacroExpr] MacroExpr +# 26| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 25| getPath(): [Path] ...::quote_token_with_context +# 25| getQualifier(): [Path] $crate +# 25| getSegment(): [PathSegment] $crate +# 25| getIdentifier(): [NameRef] $crate +# 25| getSegment(): [PathSegment] quote_token_with_context +# 25| getIdentifier(): [NameRef] quote_token_with_context +# 26| getTokenTree(): [TokenTree] TokenTree +# 25| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 26| getStatement(5): [ExprStmt] ExprStmt +# 26| getExpr(): [MacroExpr] MacroExpr +# 26| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 25| getPath(): [Path] ...::quote_token_with_context +# 25| getQualifier(): [Path] $crate +# 25| getSegment(): [PathSegment] $crate +# 25| getIdentifier(): [NameRef] $crate +# 25| getSegment(): [PathSegment] quote_token_with_context +# 25| getIdentifier(): [NameRef] quote_token_with_context +# 26| getTokenTree(): [TokenTree] TokenTree +# 27| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 27| getStatement(0): [ExprStmt] ExprStmt +# 27| getExpr(): [CallExpr] ...::to_tokens(...) +# 27| getArgList(): [ArgList] ArgList +# 27| getArg(0): [RefExpr] &new_ast +# 27| getExpr(): [PathExpr,VariableAccess] new_ast +# 27| getPath(): [Path] new_ast +# 27| getSegment(): [PathSegment] new_ast +# 27| getIdentifier(): [NameRef] new_ast +# 25| getArg(1): [RefExpr] &mut _s +# 25| getExpr(): [PathExpr] _s +# 25| getPath(): [Path] _s +# 25| getSegment(): [PathSegment] _s +# 25| getIdentifier(): [NameRef] _s +# 25| getFunction(): [PathExpr] ...::to_tokens +# 25| getPath(): [Path] ...::to_tokens +# 25| getQualifier(): [Path] ...::ToTokens +# 25| getQualifier(): [Path] $crate +# 25| getSegment(): [PathSegment] $crate +# 25| getIdentifier(): [NameRef] $crate +# 25| getSegment(): [PathSegment] ToTokens +# 25| getIdentifier(): [NameRef] ToTokens +# 25| getSegment(): [PathSegment] to_tokens +# 25| getIdentifier(): [NameRef] to_tokens +# 26| getStatement(6): [ExprStmt] ExprStmt +# 26| getExpr(): [MacroExpr] MacroExpr +# 26| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 25| getPath(): [Path] ...::quote_token_with_context +# 25| getQualifier(): [Path] $crate +# 25| getSegment(): [PathSegment] $crate +# 25| getIdentifier(): [NameRef] $crate +# 25| getSegment(): [PathSegment] quote_token_with_context +# 25| getIdentifier(): [NameRef] quote_token_with_context +# 26| getTokenTree(): [TokenTree] TokenTree +# 25| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 26| getStatement(7): [ExprStmt] ExprStmt +# 26| getExpr(): [MacroExpr] MacroExpr +# 26| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 25| getPath(): [Path] ...::quote_token_with_context +# 25| getQualifier(): [Path] $crate +# 25| getSegment(): [PathSegment] $crate +# 25| getIdentifier(): [NameRef] $crate +# 25| getSegment(): [PathSegment] quote_token_with_context +# 25| getIdentifier(): [NameRef] quote_token_with_context +# 26| getTokenTree(): [TokenTree] TokenTree +# 25| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 27| getStatement(8): [ExprStmt] ExprStmt +# 27| getExpr(): [MacroExpr] MacroExpr +# 27| getMacroCall(): [MacroCall] ...::quote_token_with_context!... +# 25| getPath(): [Path] ...::quote_token_with_context +# 25| getQualifier(): [Path] $crate +# 25| getSegment(): [PathSegment] $crate +# 25| getIdentifier(): [NameRef] $crate +# 25| getSegment(): [PathSegment] quote_token_with_context +# 25| getIdentifier(): [NameRef] quote_token_with_context +# 27| getTokenTree(): [TokenTree] TokenTree +# 25| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr +# 25| getTailExpr(): [PathExpr] _s +# 25| getPath(): [Path] _s +# 25| getSegment(): [PathSegment] _s +# 25| getIdentifier(): [NameRef] _s +# 21| getName(): [Name] add_one +# 21| getRetType(): [RetTypeRepr] RetTypeRepr +# 21| getTypeRepr(): [PathTypeRepr] TokenStream +# 21| getPath(): [Path] TokenStream +# 21| getSegment(): [PathSegment] TokenStream +# 21| getIdentifier(): [NameRef] TokenStream +# 21| getVisibility(): [Visibility] Visibility +# 31| getItem(4): [Function] fn erase +# 32| getParamList(): [ParamList] ParamList +# 32| getParam(0): [Param] ...: TokenStream +# 32| getTypeRepr(): [PathTypeRepr] TokenStream +# 32| getPath(): [Path] TokenStream +# 32| getSegment(): [PathSegment] TokenStream +# 32| getIdentifier(): [NameRef] TokenStream +# 32| getPat(): [IdentPat] _attr +# 32| getName(): [Name] _attr +# 32| getParam(1): [Param] ...: TokenStream +# 32| getTypeRepr(): [PathTypeRepr] TokenStream +# 32| getPath(): [Path] TokenStream +# 32| getSegment(): [PathSegment] TokenStream +# 32| getIdentifier(): [NameRef] TokenStream +# 32| getPat(): [IdentPat] _item +# 32| getName(): [Name] _item +# 31| getAttr(0): [Attr] Attr +# 31| getMeta(): [Meta] Meta +# 31| getPath(): [Path] proc_macro_attribute +# 31| getSegment(): [PathSegment] proc_macro_attribute +# 31| getIdentifier(): [NameRef] proc_macro_attribute +# 32| getBody(): [BlockExpr] { ... } +# 32| getStmtList(): [StmtList] StmtList +# 33| getTailExpr(): [CallExpr] ...::new(...) +# 33| getArgList(): [ArgList] ArgList +# 33| getFunction(): [PathExpr] ...::new +# 33| getPath(): [Path] ...::new +# 33| getQualifier(): [Path] TokenStream +# 33| getSegment(): [PathSegment] TokenStream +# 33| getIdentifier(): [NameRef] TokenStream +# 33| getSegment(): [PathSegment] new +# 33| getIdentifier(): [NameRef] new +# 32| getName(): [Name] erase +# 32| getRetType(): [RetTypeRepr] RetTypeRepr +# 32| getTypeRepr(): [PathTypeRepr] TokenStream +# 32| getPath(): [Path] TokenStream +# 32| getSegment(): [PathSegment] TokenStream +# 32| getIdentifier(): [NameRef] TokenStream +# 32| getVisibility(): [Visibility] Visibility diff --git a/rust/ql/test/extractor-tests/macro_expansion/PrintAst.qlref b/rust/ql/test/extractor-tests/macro-expansion/PrintAst.qlref similarity index 100% rename from rust/ql/test/extractor-tests/macro_expansion/PrintAst.qlref rename to rust/ql/test/extractor-tests/macro-expansion/PrintAst.qlref diff --git a/rust/ql/test/extractor-tests/macro-expansion/call.rs b/rust/ql/test/extractor-tests/macro-expansion/call.rs new file mode 100644 index 00000000000..974f4b57051 --- /dev/null +++ b/rust/ql/test/extractor-tests/macro-expansion/call.rs @@ -0,0 +1,14 @@ +use crate::macro_expansion; + +fn call_some_functions() { + macro_expansion::foo(); + macro_expansion::foo_new(); + macro_expansion::bar_0(); + macro_expansion::bar_1(); + macro_expansion::bar_0_new(); + macro_expansion::bar_1_new(); + macro_expansion::S::bzz_0(); + macro_expansion::S::bzz_1(); + macro_expansion::S::bzz_2(); + macro_expansion::S::x(); +} \ No newline at end of file diff --git a/rust/ql/integration-tests/macro-expansion/calls/src/included.rs b/rust/ql/test/extractor-tests/macro-expansion/included/included.rs similarity index 100% rename from rust/ql/integration-tests/macro-expansion/calls/src/included.rs rename to rust/ql/test/extractor-tests/macro-expansion/included/included.rs diff --git a/rust/ql/test/extractor-tests/macro-expansion/macro_expansion.rs b/rust/ql/test/extractor-tests/macro-expansion/macro_expansion.rs new file mode 100644 index 00000000000..419105547a1 --- /dev/null +++ b/rust/ql/test/extractor-tests/macro-expansion/macro_expansion.rs @@ -0,0 +1,80 @@ +use proc_macro::{repeat, add_one, erase}; + +#[add_one] +pub fn foo() { + _ = concat!("Hello ", "world!"); + + #[repeat(2)] + fn inner() {} + + inner_0(); + inner_1(); +} + +#[repeat(2)] +#[add_one] +pub fn bar() {} + +#[erase] +pub fn baz() {} + + +macro_rules! hello { + () => { + println!("hello!"); + }; +} + +pub struct S; + +impl S { + #[repeat(3)] + pub fn bzz() { + hello!(); + } +} + +macro_rules! def_x { + () => { + pub fn x() {} + }; +} + +impl S { + def_x!(); // this doesn't expand since 0.0.274 +} + +macro_rules! my_macro { + ($head:expr, $($tail:tt)*) => { format!($head, $($tail)*) }; +} + + +fn test() { + _ = concat!("x", "y"); + + _ = my_macro!( + concat!("<", "{}", ">"), // this doesn't expand since 0.0.274 + "hi", + ); +} + +include!("included/included.rs"); + +#[doc = include_str!("some.txt")] // this doesn't expand since 0.0.274 +fn documented() {} + +macro_rules! my_int { + () => { i32 }; +} + +fn answer() -> my_int!() { // this didn't expand in 0.0.274..0.0.287 + let a: my_int!() = 42; // this is fine + a as my_int!() // this is fine too +} + + +type MyInt = my_int!(); // this didn't expand in 0.0.274..0.0.287 + +struct MyStruct { + field: my_int!(), // this didn't expand in 0.0.274..0.0.287 +} diff --git a/rust/ql/integration-tests/macro-expansion/proc_macros/src/lib.rs b/rust/ql/test/extractor-tests/macro-expansion/proc_macro.rs similarity index 56% rename from rust/ql/integration-tests/macro-expansion/proc_macros/src/lib.rs rename to rust/ql/test/extractor-tests/macro-expansion/proc_macro.rs index 8d1f3be0e4e..3e9e7ccd1cf 100644 --- a/rust/ql/integration-tests/macro-expansion/proc_macros/src/lib.rs +++ b/rust/ql/test/extractor-tests/macro-expansion/proc_macro.rs @@ -16,3 +16,19 @@ pub fn repeat(attr: TokenStream, item: TokenStream) -> TokenStream { #(#items)* }.into() } + +#[proc_macro_attribute] +pub fn add_one(_attr: TokenStream, item: TokenStream) -> TokenStream { + let ast = syn::parse_macro_input!(item as syn::ItemFn); + let mut new_ast = ast.clone(); + new_ast.sig.ident = syn::Ident::new(&format!("{}_new", ast.sig.ident), ast.sig.ident.span()); + quote! { + #ast + #new_ast + }.into() +} + +#[proc_macro_attribute] +pub fn erase(_attr: TokenStream, _item: TokenStream) -> TokenStream { + TokenStream::new() +} diff --git a/rust/ql/integration-tests/macro-expansion/calls/src/some.txt b/rust/ql/test/extractor-tests/macro-expansion/some.txt similarity index 100% rename from rust/ql/integration-tests/macro-expansion/calls/src/some.txt rename to rust/ql/test/extractor-tests/macro-expansion/some.txt diff --git a/rust/ql/test/extractor-tests/macro-expansion/test.expected b/rust/ql/test/extractor-tests/macro-expansion/test.expected new file mode 100644 index 00000000000..10a73fd947c --- /dev/null +++ b/rust/ql/test/extractor-tests/macro-expansion/test.expected @@ -0,0 +1,37 @@ +attribute_macros +| macro_expansion.rs:3:1:12:1 | fn foo | 0 | macro_expansion.rs:4:1:11:14 | fn foo | +| macro_expansion.rs:3:1:12:1 | fn foo | 1 | macro_expansion.rs:4:1:11:14 | fn foo_new | +| macro_expansion.rs:7:5:8:16 | fn inner | 0 | macro_expansion.rs:8:5:8:16 | fn inner_0 | +| macro_expansion.rs:7:5:8:16 | fn inner | 0 | macro_expansion.rs:8:5:8:16 | fn inner_0 | +| macro_expansion.rs:7:5:8:16 | fn inner | 1 | macro_expansion.rs:8:5:8:16 | fn inner_1 | +| macro_expansion.rs:7:5:8:16 | fn inner | 1 | macro_expansion.rs:8:5:8:16 | fn inner_1 | +| macro_expansion.rs:14:1:16:15 | fn bar | 0 | macro_expansion.rs:15:1:16:14 | fn bar_0 | +| macro_expansion.rs:14:1:16:15 | fn bar | 1 | macro_expansion.rs:15:1:16:14 | fn bar_1 | +| macro_expansion.rs:15:1:16:14 | fn bar_0 | 0 | macro_expansion.rs:16:1:16:14 | fn bar_0 | +| macro_expansion.rs:15:1:16:14 | fn bar_0 | 1 | macro_expansion.rs:16:1:16:14 | fn bar_0_new | +| macro_expansion.rs:15:1:16:14 | fn bar_1 | 0 | macro_expansion.rs:16:1:16:14 | fn bar_1 | +| macro_expansion.rs:15:1:16:14 | fn bar_1 | 1 | macro_expansion.rs:16:1:16:14 | fn bar_1_new | +macro_calls +| included/included.rs:2:9:2:39 | concat!... | included/included.rs:2:17:2:38 | "Hello world!" | +| macro_expansion.rs:5:9:5:34 | concat!... | macro_expansion.rs:5:17:5:34 | "Hello world!" | +| macro_expansion.rs:5:9:5:34 | concat!... | macro_expansion.rs:5:17:5:34 | "Hello world!" | +| macro_expansion.rs:33:9:33:16 | ...::format_args_nl!... | macro_expansion.rs:33:9:33:16 | FormatArgsExpr | +| macro_expansion.rs:33:9:33:16 | hello!... | macro_expansion.rs:33:9:33:16 | MacroBlockExpr | +| macro_expansion.rs:33:9:33:16 | println!... | macro_expansion.rs:33:9:33:16 | MacroBlockExpr | +| macro_expansion.rs:44:5:44:13 | def_x!... | macro_expansion.rs:44:5:44:13 | MacroItems | +| macro_expansion.rs:53:9:53:25 | concat!... | macro_expansion.rs:53:17:53:24 | "xy" | +| macro_expansion.rs:55:9:58:5 | my_macro!... | macro_expansion.rs:56:9:57:13 | MacroExpr | +| macro_expansion.rs:56:9:56:31 | concat!... | macro_expansion.rs:56:17:56:30 | "<{}>" | +| macro_expansion.rs:56:9:57:13 | ...::format_args!... | macro_expansion.rs:56:9:57:13 | FormatArgsExpr | +| macro_expansion.rs:56:9:57:13 | format!... | macro_expansion.rs:56:9:57:13 | ...::must_use(...) | +| macro_expansion.rs:61:1:61:33 | concat!... | macro_expansion.rs:61:1:61:33 | "Hello world!" | +| macro_expansion.rs:61:1:61:33 | include!... | macro_expansion.rs:61:1:61:33 | MacroItems | +| macro_expansion.rs:63:9:63:32 | include_str!... | macro_expansion.rs:63:22:63:31 | "" | +| macro_expansion.rs:70:16:70:24 | my_int!... | macro_expansion.rs:70:16:70:24 | i32 | +| macro_expansion.rs:71:12:71:20 | my_int!... | macro_expansion.rs:71:12:71:20 | i32 | +| macro_expansion.rs:72:10:72:18 | my_int!... | macro_expansion.rs:72:10:72:18 | i32 | +| macro_expansion.rs:76:14:76:22 | my_int!... | macro_expansion.rs:76:14:76:22 | i32 | +| macro_expansion.rs:79:12:79:20 | my_int!... | macro_expansion.rs:79:12:79:20 | i32 | +unexpanded_macro_calls +| macro_expansion.rs:5:9:5:35 | concat!... | +warnings diff --git a/rust/ql/integration-tests/macro-expansion/test.ql b/rust/ql/test/extractor-tests/macro-expansion/test.ql similarity index 81% rename from rust/ql/integration-tests/macro-expansion/test.ql rename to rust/ql/test/extractor-tests/macro-expansion/test.ql index 439ffab9a29..1952dff3041 100644 --- a/rust/ql/integration-tests/macro-expansion/test.ql +++ b/rust/ql/test/extractor-tests/macro-expansion/test.ql @@ -1,4 +1,5 @@ import rust +import codeql.rust.Diagnostics query predicate attribute_macros(Item i, int index, Item expanded) { i.fromSource() and expanded = i.getAttributeMacroExpansion().getItem(index) @@ -6,10 +7,12 @@ query predicate attribute_macros(Item i, int index, Item expanded) { query predicate macro_calls(MacroCall c, AstNode expansion) { c.fromSource() and - not c.getLocation().getFile().getAbsolutePath().matches("%proc_macros%") and + not c.getLocation().getFile().getAbsolutePath().matches("%proc_macro.rs") and expansion = c.getMacroCallExpansion() } query predicate unexpanded_macro_calls(MacroCall c) { c.fromSource() and not c.hasMacroCallExpansion() } + +query predicate warnings(ExtractionWarning w) { any() } diff --git a/rust/ql/test/extractor-tests/macro_expansion/PrintAst.expected b/rust/ql/test/extractor-tests/macro_expansion/PrintAst.expected deleted file mode 100644 index 3881faafeac..00000000000 --- a/rust/ql/test/extractor-tests/macro_expansion/PrintAst.expected +++ /dev/null @@ -1,155 +0,0 @@ -lib.rs: -# 1| [SourceFile] SourceFile -# 1| getItem(0): [Module] mod macro_expansion -# 1| getName(): [Name] macro_expansion -macro_expansion.rs: -# 1| [SourceFile] SourceFile -# 1| getItem(0): [Function] fn foo -# 2| getAttributeMacroExpansion(): [MacroItems] MacroItems -# 2| getItem(0): [Function] fn foo -# 1| getParamList(): [ParamList] ParamList -# 1| getAbi(): [Abi] Abi -# 2| getBody(): [BlockExpr] { ... } -# 2| getStmtList(): [StmtList] StmtList -# 2| getName(): [Name] foo -# 2| getItem(1): [Static] Static -# 1| getAttr(0): [Attr] Attr -# 1| getMeta(): [Meta] Meta -# 1| getPath(): [Path] used -# 1| getSegment(): [PathSegment] used -# 1| getIdentifier(): [NameRef] used -# 1| getAttr(1): [Attr] Attr -# 1| getMeta(): [Meta] Meta -# 1| getPath(): [Path] allow -# 1| getSegment(): [PathSegment] allow -# 1| getIdentifier(): [NameRef] allow -# 1| getTokenTree(): [TokenTree] TokenTree -# 1| getAttr(2): [Attr] Attr -# 1| getMeta(): [Meta] Meta -# 1| getPath(): [Path] doc -# 1| getSegment(): [PathSegment] doc -# 1| getIdentifier(): [NameRef] doc -# 1| getTokenTree(): [TokenTree] TokenTree -# 1| getAttr(3): [Attr] Attr -# 1| getMeta(): [Meta] Meta -# 1| getPath(): [Path] cfg_attr -# 1| getSegment(): [PathSegment] cfg_attr -# 1| getIdentifier(): [NameRef] cfg_attr -# 1| getTokenTree(): [TokenTree] TokenTree -# 1| getAttr(4): [Attr] Attr -# 1| getMeta(): [Meta] Meta -# 1| getPath(): [Path] cfg_attr -# 1| getSegment(): [PathSegment] cfg_attr -# 1| getIdentifier(): [NameRef] cfg_attr -# 1| getTokenTree(): [TokenTree] TokenTree -# 1| getAttr(5): [Attr] Attr -# 1| getMeta(): [Meta] Meta -# 1| getPath(): [Path] cfg_attr -# 1| getSegment(): [PathSegment] cfg_attr -# 1| getIdentifier(): [NameRef] cfg_attr -# 1| getTokenTree(): [TokenTree] TokenTree -# 1| getAttr(6): [Attr] Attr -# 1| getMeta(): [Meta] Meta -# 1| getPath(): [Path] cfg_attr -# 1| getSegment(): [PathSegment] cfg_attr -# 1| getIdentifier(): [NameRef] cfg_attr -# 1| getTokenTree(): [TokenTree] TokenTree -# 1| getAttr(7): [Attr] Attr -# 1| getMeta(): [Meta] Meta -# 1| getPath(): [Path] cfg_attr -# 1| getSegment(): [PathSegment] cfg_attr -# 1| getIdentifier(): [NameRef] cfg_attr -# 1| getTokenTree(): [TokenTree] TokenTree -# 1| getAttr(8): [Attr] Attr -# 1| getMeta(): [Meta] Meta -# 1| getPath(): [Path] cfg_attr -# 1| getSegment(): [PathSegment] cfg_attr -# 1| getIdentifier(): [NameRef] cfg_attr -# 1| getTokenTree(): [TokenTree] TokenTree -# 1| getAttr(9): [Attr] Attr -# 1| getMeta(): [Meta] Meta -# 1| getPath(): [Path] cfg_attr -# 1| getSegment(): [PathSegment] cfg_attr -# 1| getIdentifier(): [NameRef] cfg_attr -# 1| getTokenTree(): [TokenTree] TokenTree -# 1| getAttr(10): [Attr] Attr -# 1| getMeta(): [Meta] Meta -# 1| getPath(): [Path] cfg_attr -# 1| getSegment(): [PathSegment] cfg_attr -# 1| getIdentifier(): [NameRef] cfg_attr -# 1| getTokenTree(): [TokenTree] TokenTree -# 1| getAttr(11): [Attr] Attr -# 1| getMeta(): [Meta] Meta -# 1| getPath(): [Path] cfg_attr -# 1| getSegment(): [PathSegment] cfg_attr -# 1| getIdentifier(): [NameRef] cfg_attr -# 1| getTokenTree(): [TokenTree] TokenTree -# 2| getBody(): [BlockExpr] { ... } -# 2| getStmtList(): [StmtList] StmtList -# 2| getStatement(0): [Function] fn foo___rust_ctor___ctor -# 1| getParamList(): [ParamList] ParamList -# 1| getAttr(0): [Attr] Attr -# 1| getMeta(): [Meta] Meta -# 1| getPath(): [Path] allow -# 1| getSegment(): [PathSegment] allow -# 1| getIdentifier(): [NameRef] allow -# 1| getTokenTree(): [TokenTree] TokenTree -# 1| getAttr(1): [Attr] Attr -# 1| getMeta(): [Meta] Meta -# 1| getPath(): [Path] cfg_attr -# 1| getSegment(): [PathSegment] cfg_attr -# 1| getIdentifier(): [NameRef] cfg_attr -# 1| getTokenTree(): [TokenTree] TokenTree -# 1| getAbi(): [Abi] Abi -# 2| getBody(): [BlockExpr] { ... } -# 2| getStmtList(): [StmtList] StmtList -# 2| getStatement(0): [ExprStmt] ExprStmt -# 2| getExpr(): [CallExpr] foo(...) -# 1| getArgList(): [ArgList] ArgList -# 2| getFunction(): [PathExpr] foo -# 2| getPath(): [Path] foo -# 2| getSegment(): [PathSegment] foo -# 2| getIdentifier(): [NameRef] foo -# 1| getTailExpr(): [IntegerLiteralExpr] 0 -# 1| getName(): [Name] foo___rust_ctor___ctor -# 1| getRetType(): [RetTypeRepr] RetTypeRepr -# 1| getTypeRepr(): [PathTypeRepr] usize -# 1| getPath(): [Path] usize -# 1| getSegment(): [PathSegment] usize -# 1| getIdentifier(): [NameRef] usize -# 1| getTailExpr(): [PathExpr] foo___rust_ctor___ctor -# 1| getPath(): [Path] foo___rust_ctor___ctor -# 1| getSegment(): [PathSegment] foo___rust_ctor___ctor -# 1| getIdentifier(): [NameRef] foo___rust_ctor___ctor -# 1| getName(): [Name] foo___rust_ctor___ctor -# 1| getTypeRepr(): [FnPtrTypeRepr] FnPtrTypeRepr -# 1| getAbi(): [Abi] Abi -# 1| getParamList(): [ParamList] ParamList -# 1| getRetType(): [RetTypeRepr] RetTypeRepr -# 1| getTypeRepr(): [PathTypeRepr] usize -# 1| getPath(): [Path] usize -# 1| getSegment(): [PathSegment] usize -# 1| getIdentifier(): [NameRef] usize -# 2| getParamList(): [ParamList] ParamList -# 1| getAttr(0): [Attr] Attr -# 1| getMeta(): [Meta] Meta -# 1| getPath(): [Path] ...::ctor -# 1| getQualifier(): [Path] ctor -# 1| getSegment(): [PathSegment] ctor -# 1| getIdentifier(): [NameRef] ctor -# 1| getSegment(): [PathSegment] ctor -# 1| getIdentifier(): [NameRef] ctor -# 2| getBody(): [BlockExpr] { ... } -# 2| getStmtList(): [StmtList] StmtList -# 2| getName(): [Name] foo -# 4| getItem(1): [Function] fn bar -# 5| getParamList(): [ParamList] ParamList -# 4| getAttr(0): [Attr] Attr -# 4| getMeta(): [Meta] Meta -# 4| getPath(): [Path] cfg -# 4| getSegment(): [PathSegment] cfg -# 4| getIdentifier(): [NameRef] cfg -# 4| getTokenTree(): [TokenTree] TokenTree -# 5| getBody(): [BlockExpr] { ... } -# 5| getStmtList(): [StmtList] StmtList -# 5| getName(): [Name] bar diff --git a/rust/ql/test/extractor-tests/macro_expansion/macro_expansion.rs b/rust/ql/test/extractor-tests/macro_expansion/macro_expansion.rs deleted file mode 100644 index 1825f1056e3..00000000000 --- a/rust/ql/test/extractor-tests/macro_expansion/macro_expansion.rs +++ /dev/null @@ -1,8 +0,0 @@ -#[ctor::ctor] -fn foo() {} - -#[cfg(any(linux, not(linux)))] -fn bar() {} - -#[cfg(all(linux, not(linux)))] -fn baz() {} diff --git a/rust/ql/test/extractor-tests/macro_expansion/options.yml b/rust/ql/test/extractor-tests/macro_expansion/options.yml deleted file mode 100644 index 07ec8d1b4eb..00000000000 --- a/rust/ql/test/extractor-tests/macro_expansion/options.yml +++ /dev/null @@ -1,2 +0,0 @@ -qltest_dependencies: - - ctor = { version = "0.2.9" } diff --git a/rust/ql/test/extractor-tests/macro_expansion/test.expected b/rust/ql/test/extractor-tests/macro_expansion/test.expected deleted file mode 100644 index 26a02ec8252..00000000000 --- a/rust/ql/test/extractor-tests/macro_expansion/test.expected +++ /dev/null @@ -1,2 +0,0 @@ -| macro_expansion.rs:1:1:2:11 | fn foo | 0 | macro_expansion.rs:2:4:2:10 | fn foo | -| macro_expansion.rs:1:1:2:11 | fn foo | 1 | macro_expansion.rs:2:4:2:6 | Static | diff --git a/rust/ql/test/extractor-tests/macro_expansion/test.ql b/rust/ql/test/extractor-tests/macro_expansion/test.ql deleted file mode 100644 index 17bc7d47b1d..00000000000 --- a/rust/ql/test/extractor-tests/macro_expansion/test.ql +++ /dev/null @@ -1,6 +0,0 @@ -import rust -import TestUtils - -from Item i, MacroItems items, int index, Item expanded -where toBeTested(i) and i.getAttributeMacroExpansion() = items and items.getItem(index) = expanded -select i, index, expanded From 71b92634705f4882827fd2cbf12bb9836e947ecc Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Tue, 17 Jun 2025 17:11:05 +0200 Subject: [PATCH 128/150] Rust: do not remove `Cargo.lock` file when running QL tests --- rust/extractor/src/qltest.rs | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/rust/extractor/src/qltest.rs b/rust/extractor/src/qltest.rs index de0c36df784..b127c2b388d 100644 --- a/rust/extractor/src/qltest.rs +++ b/rust/extractor/src/qltest.rs @@ -4,7 +4,6 @@ use glob::glob; use itertools::Itertools; use std::ffi::OsStr; use std::fs; -use std::path::Path; use std::process::Command; use tracing::info; @@ -60,18 +59,9 @@ fn set_sources(config: &mut Config) -> anyhow::Result<()> { Ok(()) } -fn remove_file_if_exists(path: &Path) -> anyhow::Result<()> { - match fs::remove_file(path) { - Err(e) if e.kind() == std::io::ErrorKind::NotFound => Ok(()), - x => x, - } - .context(format!("removing file {}", path.display())) -} - pub(crate) fn prepare(config: &mut Config) -> anyhow::Result<()> { dump_lib()?; set_sources(config)?; - remove_file_if_exists(Path::new("Cargo.lock"))?; dump_cargo_manifest(&config.qltest_dependencies)?; if config.qltest_cargo_check { let status = Command::new("cargo") From d2a05886c83ea29156c3f7276ac336701e721421 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Tue, 17 Jun 2025 17:16:47 +0200 Subject: [PATCH 129/150] Rust: do not do html escaping in cargo template --- rust/extractor/src/qltest_cargo.mustache | 2 +- rust/ql/test/library-tests/dataflow/models/Cargo.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rust/extractor/src/qltest_cargo.mustache b/rust/extractor/src/qltest_cargo.mustache index 183c7fffd15..444734a6885 100644 --- a/rust/extractor/src/qltest_cargo.mustache +++ b/rust/extractor/src/qltest_cargo.mustache @@ -24,7 +24,7 @@ path = "{{#uses_proc_macro}}../{{/uses_proc_macro}}main.rs" proc_macro = { path = "../.proc_macro" } {{/uses_proc_macro}} {{#dependencies}} -{{.}} +{{{.}}} {{/dependencies}} {{/Lib}} diff --git a/rust/ql/test/library-tests/dataflow/models/Cargo.lock b/rust/ql/test/library-tests/dataflow/models/Cargo.lock index 7fcff65a5e5..58ec89eb390 100644 --- a/rust/ql/test/library-tests/dataflow/models/Cargo.lock +++ b/rust/ql/test/library-tests/dataflow/models/Cargo.lock @@ -219,7 +219,7 @@ dependencies = [ [[package]] name = "test" -version = "0.0.1" +version = "0.1.0" dependencies = [ "tokio", ] From 3f595fdd0370ea55c6d2f04b4c9310cf2a66a2f4 Mon Sep 17 00:00:00 2001 From: idrissrio Date: Tue, 17 Jun 2025 18:47:42 +0200 Subject: [PATCH 130/150] C++: add tests for `ArrayType` typedef resolution --- cpp/ql/test/library-tests/typedefs/ArrayTypedefs.cpp | 7 +++++++ cpp/ql/test/library-tests/typedefs/ArrayTypedefs.expected | 5 +++++ cpp/ql/test/library-tests/typedefs/ArrayTypedefs.ql | 4 ++++ 3 files changed, 16 insertions(+) create mode 100644 cpp/ql/test/library-tests/typedefs/ArrayTypedefs.cpp create mode 100644 cpp/ql/test/library-tests/typedefs/ArrayTypedefs.expected create mode 100644 cpp/ql/test/library-tests/typedefs/ArrayTypedefs.ql diff --git a/cpp/ql/test/library-tests/typedefs/ArrayTypedefs.cpp b/cpp/ql/test/library-tests/typedefs/ArrayTypedefs.cpp new file mode 100644 index 00000000000..393ab4c7d9e --- /dev/null +++ b/cpp/ql/test/library-tests/typedefs/ArrayTypedefs.cpp @@ -0,0 +1,7 @@ +typedef int int_t; +int_t g1[10]; +int_t g2[2][4]; + +typedef float float_t; +float_t arr1[5]; +float_t (*a_pointer)[10]; diff --git a/cpp/ql/test/library-tests/typedefs/ArrayTypedefs.expected b/cpp/ql/test/library-tests/typedefs/ArrayTypedefs.expected new file mode 100644 index 00000000000..9b91579e8dc --- /dev/null +++ b/cpp/ql/test/library-tests/typedefs/ArrayTypedefs.expected @@ -0,0 +1,5 @@ +| file://:0:0:0:0 | float_t[5] | file://:0:0:0:0 | float_t[5] | ArrayTypedefs.cpp:6:9:6:12 | definition of arr1 | +| file://:0:0:0:0 | float_t[10] | file://:0:0:0:0 | float_t[10] | ArrayTypedefs.cpp:7:11:7:19 | definition of a_pointer | +| file://:0:0:0:0 | int_t[2][4] | file://:0:0:0:0 | int_t[2][4] | ArrayTypedefs.cpp:3:7:3:8 | definition of g2 | +| file://:0:0:0:0 | int_t[4] | file://:0:0:0:0 | int_t[4] | ArrayTypedefs.cpp:3:7:3:8 | definition of g2 | +| file://:0:0:0:0 | int_t[10] | file://:0:0:0:0 | int_t[10] | ArrayTypedefs.cpp:2:7:2:8 | definition of g1 | diff --git a/cpp/ql/test/library-tests/typedefs/ArrayTypedefs.ql b/cpp/ql/test/library-tests/typedefs/ArrayTypedefs.ql new file mode 100644 index 00000000000..73ebe35d8ff --- /dev/null +++ b/cpp/ql/test/library-tests/typedefs/ArrayTypedefs.ql @@ -0,0 +1,4 @@ +import cpp + +from ArrayType type +select type, type.resolveTypedefs(), type.getATypeNameUse() From a6d7fb6aad5fe6ef7e06b18b74ca0e63e87a47ee Mon Sep 17 00:00:00 2001 From: idrissrio Date: Tue, 17 Jun 2025 18:49:39 +0200 Subject: [PATCH 131/150] C++: fix typedef resolution in `ArrayType` --- cpp/ql/lib/semmle/code/cpp/Type.qll | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cpp/ql/lib/semmle/code/cpp/Type.qll b/cpp/ql/lib/semmle/code/cpp/Type.qll index fef978b198d..3db3cd49e54 100644 --- a/cpp/ql/lib/semmle/code/cpp/Type.qll +++ b/cpp/ql/lib/semmle/code/cpp/Type.qll @@ -1589,6 +1589,11 @@ class ArrayType extends DerivedType { * Holds if this array is a variable-length array (VLA). */ predicate isVla() { type_is_vla(underlyingElement(this)) } + + override Type resolveTypedefs() { + result.(ArrayType).getBaseType() = this.getBaseType().resolveTypedefs() and + result.(ArrayType).getArraySize() = this.getArraySize() + } } /** From 6ffba11f134cffcd110166a3de0c21731abc5626 Mon Sep 17 00:00:00 2001 From: idrissrio Date: Tue, 17 Jun 2025 18:51:43 +0200 Subject: [PATCH 132/150] C++: accept new test results after changes --- .../test/library-tests/typedefs/ArrayTypedefs.expected | 10 +++++----- cpp/ql/test/library-tests/typedefs/Typedefs1.expected | 6 ++++++ cpp/ql/test/library-tests/typedefs/Typedefs3.expected | 2 ++ 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/cpp/ql/test/library-tests/typedefs/ArrayTypedefs.expected b/cpp/ql/test/library-tests/typedefs/ArrayTypedefs.expected index 9b91579e8dc..83e003b5bb1 100644 --- a/cpp/ql/test/library-tests/typedefs/ArrayTypedefs.expected +++ b/cpp/ql/test/library-tests/typedefs/ArrayTypedefs.expected @@ -1,5 +1,5 @@ -| file://:0:0:0:0 | float_t[5] | file://:0:0:0:0 | float_t[5] | ArrayTypedefs.cpp:6:9:6:12 | definition of arr1 | -| file://:0:0:0:0 | float_t[10] | file://:0:0:0:0 | float_t[10] | ArrayTypedefs.cpp:7:11:7:19 | definition of a_pointer | -| file://:0:0:0:0 | int_t[2][4] | file://:0:0:0:0 | int_t[2][4] | ArrayTypedefs.cpp:3:7:3:8 | definition of g2 | -| file://:0:0:0:0 | int_t[4] | file://:0:0:0:0 | int_t[4] | ArrayTypedefs.cpp:3:7:3:8 | definition of g2 | -| file://:0:0:0:0 | int_t[10] | file://:0:0:0:0 | int_t[10] | ArrayTypedefs.cpp:2:7:2:8 | definition of g1 | +| file://:0:0:0:0 | float_t[5] | file://:0:0:0:0 | float[5] | ArrayTypedefs.cpp:6:9:6:12 | definition of arr1 | +| file://:0:0:0:0 | float_t[10] | file://:0:0:0:0 | float[10] | ArrayTypedefs.cpp:7:11:7:19 | definition of a_pointer | +| file://:0:0:0:0 | int_t[2][4] | file://:0:0:0:0 | int[2][4] | ArrayTypedefs.cpp:3:7:3:8 | definition of g2 | +| file://:0:0:0:0 | int_t[4] | file://:0:0:0:0 | int[4] | ArrayTypedefs.cpp:3:7:3:8 | definition of g2 | +| file://:0:0:0:0 | int_t[10] | file://:0:0:0:0 | int[10] | ArrayTypedefs.cpp:2:7:2:8 | definition of g1 | diff --git a/cpp/ql/test/library-tests/typedefs/Typedefs1.expected b/cpp/ql/test/library-tests/typedefs/Typedefs1.expected index 21b506c015a..f64afc49ccd 100644 --- a/cpp/ql/test/library-tests/typedefs/Typedefs1.expected +++ b/cpp/ql/test/library-tests/typedefs/Typedefs1.expected @@ -1,3 +1,9 @@ +| file://:0:0:0:0 | (global namespace) | ArrayTypedefs.cpp:1:13:1:17 | int_t | +| file://:0:0:0:0 | (global namespace) | ArrayTypedefs.cpp:2:7:2:8 | g1 | +| file://:0:0:0:0 | (global namespace) | ArrayTypedefs.cpp:3:7:3:8 | g2 | +| file://:0:0:0:0 | (global namespace) | ArrayTypedefs.cpp:5:15:5:21 | float_t | +| file://:0:0:0:0 | (global namespace) | ArrayTypedefs.cpp:6:9:6:12 | arr1 | +| file://:0:0:0:0 | (global namespace) | ArrayTypedefs.cpp:7:11:7:19 | a_pointer | | file://:0:0:0:0 | (global namespace) | ODASA-6095-A.hpp:2:8:2:17 | MyTemplate | | file://:0:0:0:0 | (global namespace) | ODASA-6095-A.hpp:2:8:2:17 | MyTemplate | | file://:0:0:0:0 | (global namespace) | ODASA-6095-B.hpp:4:8:4:18 | MyTemplate2 | diff --git a/cpp/ql/test/library-tests/typedefs/Typedefs3.expected b/cpp/ql/test/library-tests/typedefs/Typedefs3.expected index c0f584a04e6..1cd9bc34f15 100644 --- a/cpp/ql/test/library-tests/typedefs/Typedefs3.expected +++ b/cpp/ql/test/library-tests/typedefs/Typedefs3.expected @@ -1,3 +1,5 @@ +| ArrayTypedefs.cpp:1:13:1:17 | int_t | int_t | getBaseType() = int | +| ArrayTypedefs.cpp:5:15:5:21 | float_t | float_t | getBaseType() = float | | ODASA-6095-A.hpp:5:25:5:30 | mytype | MyTemplate::mytype | NestedTypedefType, getBaseType() = MyTemplate, member of MyTemplate | | ODASA-6095-B.hpp:6:43:6:49 | mytype2 | MyTemplate2::mytype2 | NestedTypedefType, getBaseType() = decltype(...), member of MyTemplate2 | | file://:0:0:0:0 | mytype | MyTemplate::mytype | NestedTypedefType, getBaseType() = MyTemplate, member of MyTemplate | From b145523a717bdfcf7089af6f8fc9e8ccaadaf2c8 Mon Sep 17 00:00:00 2001 From: idrissrio Date: Tue, 17 Jun 2025 19:00:37 +0200 Subject: [PATCH 133/150] C++: add change note --- cpp/ql/lib/change-notes/2025-06-17-arraytype-typedefs.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 cpp/ql/lib/change-notes/2025-06-17-arraytype-typedefs.md diff --git a/cpp/ql/lib/change-notes/2025-06-17-arraytype-typedefs.md b/cpp/ql/lib/change-notes/2025-06-17-arraytype-typedefs.md new file mode 100644 index 00000000000..e4e6e732cc7 --- /dev/null +++ b/cpp/ql/lib/change-notes/2025-06-17-arraytype-typedefs.md @@ -0,0 +1,4 @@ +--- +category: fix +--- +* Fixed how typedefs are resolved for ArrayType by overriding the `resolveTypedefs` predicate. From f2f97c993b72f547503a0cf88c7b99280993d177 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Tue, 17 Jun 2025 13:18:03 -0400 Subject: [PATCH 134/150] Crypto: QL docs fix. --- .../quantum/OpenSSL/Operations/OpenSSLOperationBase.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll index a3e20b149ad..7648e4e1d51 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll @@ -133,7 +133,7 @@ abstract class EvpKeyInitializer extends EvpInitializer { } /** - * Any key initializer may initialize the algorithm and the key size through + * A key initializer may initialize the algorithm and the key size through * the key. Extend any instance of key initializer provide initialization * of the algorithm and key size from the key. */ From a81fffcbda839b819586187451ed77cf41a255dd Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Tue, 17 Jun 2025 13:27:54 -0400 Subject: [PATCH 135/150] Crypto: Fix redundant override issue. --- .../OpenSSL/Operations/OpenSSLOperationBase.qll | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll index 7648e4e1d51..34d7f6acec8 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll @@ -137,10 +137,19 @@ abstract class EvpKeyInitializer extends EvpInitializer { * the key. Extend any instance of key initializer provide initialization * of the algorithm and key size from the key. */ -class EvpInitializerThroughKey extends EvpPrimaryAlgorithmInitializer, EvpKeySizeInitializer instanceof EvpKeyInitializer +class EvpInitializerThroughKey extends EvpPrimaryAlgorithmInitializer, EvpKeySizeInitializer, + EvpKeyInitializer { - //TODO: charpred that traces from creation to key arg, grab creator - override CtxPointerSource getContext() { result = EvpKeyInitializer.super.getContext() } + Expr arg; + CtxPointerSource context; + + EvpInitializerThroughKey() { + exists(EvpKeyInitializer keyInit | + arg = keyInit.getKeyArg() and this = keyInit and context = keyInit.getContext() + ) + } + + override CtxPointerSource getContext() { result = context } override Expr getAlgorithmArg() { result = @@ -151,7 +160,7 @@ class EvpInitializerThroughKey extends EvpPrimaryAlgorithmInitializer, EvpKeySiz result = getSourceKeyCreationInstanceFromArg(this.getKeyArg()).getKeySizeConsumer().asExpr() } - Expr getKeyArg() { result = EvpKeyInitializer.super.getKeyArg() } + override Expr getKeyArg() { result = arg } } /** From 214bbf46e8fd8349be9735f950e68ea1fdd1e559 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Wed, 18 Jun 2025 09:01:06 +0200 Subject: [PATCH 136/150] Rust: fix test version to `0.0.1` as previously --- rust/extractor/src/qltest_cargo.mustache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/extractor/src/qltest_cargo.mustache b/rust/extractor/src/qltest_cargo.mustache index 444734a6885..02ecfc45681 100644 --- a/rust/extractor/src/qltest_cargo.mustache +++ b/rust/extractor/src/qltest_cargo.mustache @@ -10,7 +10,7 @@ members = [".lib", ".proc_macro"] {{/uses_proc_macro}} [package] name = "test" -version = "0.1.0" +version = "0.0.1" edition = "2021" [lib] path = "{{#uses_proc_macro}}../{{/uses_proc_macro}}lib.rs" From 5c575ac18765f856572fff0a6b58f7be868a96d4 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Wed, 18 Jun 2025 09:18:36 +0200 Subject: [PATCH 137/150] C#: Address review comments. --- .../posix/query-suite/csharp-code-quality.qls.expected | 1 - .../Refactoring Opportunities/InappropriateIntimacy.ql | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality.qls.expected b/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality.qls.expected index f1117b4c719..53810418624 100644 --- a/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality.qls.expected +++ b/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality.qls.expected @@ -5,7 +5,6 @@ ql/csharp/ql/src/API Abuse/FormatInvalid.ql ql/csharp/ql/src/API Abuse/NoDisposeCallOnLocalIDisposable.ql ql/csharp/ql/src/API Abuse/NullArgumentToEquals.ql ql/csharp/ql/src/ASP/BlockCodeResponseWrite.ql -ql/csharp/ql/src/Architecture/Refactoring Opportunities/InappropriateIntimacy.ql ql/csharp/ql/src/Bad Practices/CallsUnmanagedCode.ql ql/csharp/ql/src/Bad Practices/CatchOfNullReferenceException.ql ql/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql diff --git a/csharp/ql/src/Architecture/Refactoring Opportunities/InappropriateIntimacy.ql b/csharp/ql/src/Architecture/Refactoring Opportunities/InappropriateIntimacy.ql index c8014edb3af..78f6ab5b57a 100644 --- a/csharp/ql/src/Architecture/Refactoring Opportunities/InappropriateIntimacy.ql +++ b/csharp/ql/src/Architecture/Refactoring Opportunities/InappropriateIntimacy.ql @@ -6,8 +6,7 @@ * @problem.severity recommendation * @precision high * @id cs/coupled-types - * @tags quality - * maintainability + * @tags maintainability * complexity * modularity */ From 8bf171fd8585ab2227430fcd58c0c143c7de3e56 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Wed, 18 Jun 2025 09:21:40 +0200 Subject: [PATCH 138/150] Rust: add missing `use` because of semantic conflict --- rust/extractor/src/qltest.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/rust/extractor/src/qltest.rs b/rust/extractor/src/qltest.rs index f1a70be8762..f558981e44b 100644 --- a/rust/extractor/src/qltest.rs +++ b/rust/extractor/src/qltest.rs @@ -4,6 +4,7 @@ use glob::glob; use itertools::Itertools; use std::ffi::OsStr; use std::fs; +use std::path::Path; use std::process::Command; use tracing::info; From 5cd729545d5e3dbd7e8360dd4c9b23b5771bb854 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Wed, 18 Jun 2025 09:22:32 +0200 Subject: [PATCH 139/150] Rust: Extend jump-to-def query with method calls --- .../lib/codeql/rust/internal/Definitions.qll | 26 +++++++++- .../definitions/Definitions.expected | 48 +++++++++++-------- .../ql/test/library-tests/definitions/main.rs | 14 ++++++ 3 files changed, 66 insertions(+), 22 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/Definitions.qll b/rust/ql/lib/codeql/rust/internal/Definitions.qll index 0603146c9af..c03ece9d56d 100644 --- a/rust/ql/lib/codeql/rust/internal/Definitions.qll +++ b/rust/ql/lib/codeql/rust/internal/Definitions.qll @@ -135,12 +135,34 @@ private class PositionalFormatArgumentUse extends Use instanceof PositionalForma override string getUseType() { result = "format argument" } } -private class PathUse extends Use instanceof Path { - override Definition getDefinition() { result.asItemNode() = resolvePath(this) } +private class PathUse extends Use instanceof PathSegment { + private Path path; + + PathUse() { this = path.getSegment() } + + private CallExpr getCall() { result.getFunction().(PathExpr).getPath() = path } + + override Definition getDefinition() { + // Our call resolution logic may disambiguate some calls, so only use those + result.asItemNode() = this.getCall().getStaticTarget() + or + not exists(this.getCall()) and + result.asItemNode() = resolvePath(path) + } override string getUseType() { result = "path" } } +private class MethodUse extends Use instanceof NameRef { + private MethodCallExpr mc; + + MethodUse() { this = mc.getIdentifier() } + + override Definition getDefinition() { result.asItemNode() = mc.getStaticTarget() } + + override string getUseType() { result = "method" } +} + private class FileUse extends Use instanceof Name { override Definition getDefinition() { exists(Module m | diff --git a/rust/ql/test/library-tests/definitions/Definitions.expected b/rust/ql/test/library-tests/definitions/Definitions.expected index 5d2a0db46c5..f3cde895068 100644 --- a/rust/ql/test/library-tests/definitions/Definitions.expected +++ b/rust/ql/test/library-tests/definitions/Definitions.expected @@ -1,21 +1,29 @@ | main.rs:3:5:3:7 | lib | lib.rs:1:1:1:1 | SourceFile | file | -| main.rs:9:22:9:26 | value | main.rs:9:50:9:54 | value | format argument | -| main.rs:9:29:9:33 | width | main.rs:6:9:6:13 | width | local variable | -| main.rs:9:36:9:44 | precision | main.rs:7:9:7:17 | precision | local variable | -| main.rs:10:22:10:22 | 0 | main.rs:10:34:10:38 | value | format argument | -| main.rs:10:25:10:25 | 1 | main.rs:10:41:10:45 | width | format argument | -| main.rs:10:28:10:28 | 2 | main.rs:10:48:10:56 | precision | format argument | -| main.rs:10:34:10:38 | value | main.rs:8:9:8:13 | value | local variable | -| main.rs:10:41:10:45 | width | main.rs:6:9:6:13 | width | local variable | -| main.rs:10:48:10:56 | precision | main.rs:7:9:7:17 | precision | local variable | -| main.rs:11:21:11:22 | {} | main.rs:11:29:11:33 | value | format argument | -| main.rs:11:24:11:25 | {} | main.rs:11:36:11:40 | width | format argument | -| main.rs:11:29:11:33 | value | main.rs:8:9:8:13 | value | local variable | -| main.rs:11:36:11:40 | width | main.rs:6:9:6:13 | width | local variable | -| main.rs:13:22:13:27 | people | main.rs:12:9:12:14 | people | local variable | -| main.rs:14:16:14:16 | 1 | main.rs:14:34:14:34 | 2 | format argument | -| main.rs:14:19:14:20 | {} | main.rs:14:31:14:31 | 1 | format argument | -| main.rs:14:23:14:23 | 0 | main.rs:14:31:14:31 | 1 | format argument | -| main.rs:14:26:14:27 | {} | main.rs:14:34:14:34 | 2 | format argument | -| main.rs:15:31:15:35 | {:<5} | main.rs:15:40:15:42 | "x" | format argument | -| main.rs:16:13:16:13 | S | main.rs:1:1:1:9 | struct S | path | +| main.rs:9:14:9:14 | S | main.rs:7:9:7:21 | struct S | path | +| main.rs:10:36:10:39 | Self | main.rs:7:9:7:21 | struct S | path | +| main.rs:11:17:11:17 | S | main.rs:7:9:7:21 | struct S | path | +| main.rs:21:22:21:26 | value | main.rs:21:50:21:54 | value | format argument | +| main.rs:21:29:21:33 | width | main.rs:18:9:18:13 | width | local variable | +| main.rs:21:36:21:44 | precision | main.rs:19:9:19:17 | precision | local variable | +| main.rs:22:22:22:22 | 0 | main.rs:22:34:22:38 | value | format argument | +| main.rs:22:25:22:25 | 1 | main.rs:22:41:22:45 | width | format argument | +| main.rs:22:28:22:28 | 2 | main.rs:22:48:22:56 | precision | format argument | +| main.rs:22:34:22:38 | value | main.rs:20:9:20:13 | value | local variable | +| main.rs:22:41:22:45 | width | main.rs:18:9:18:13 | width | local variable | +| main.rs:22:48:22:56 | precision | main.rs:19:9:19:17 | precision | local variable | +| main.rs:23:21:23:22 | {} | main.rs:23:29:23:33 | value | format argument | +| main.rs:23:24:23:25 | {} | main.rs:23:36:23:40 | width | format argument | +| main.rs:23:29:23:33 | value | main.rs:20:9:20:13 | value | local variable | +| main.rs:23:36:23:40 | width | main.rs:18:9:18:13 | width | local variable | +| main.rs:25:22:25:27 | people | main.rs:24:9:24:14 | people | local variable | +| main.rs:26:16:26:16 | 1 | main.rs:26:34:26:34 | 2 | format argument | +| main.rs:26:19:26:20 | {} | main.rs:26:31:26:31 | 1 | format argument | +| main.rs:26:23:26:23 | 0 | main.rs:26:31:26:31 | 1 | format argument | +| main.rs:26:26:26:27 | {} | main.rs:26:34:26:34 | 2 | format argument | +| main.rs:27:31:27:35 | {:<5} | main.rs:27:40:27:42 | "x" | format argument | +| main.rs:28:13:28:13 | S | main.rs:1:1:1:9 | struct S | path | +| main.rs:29:13:29:14 | M1 | main.rs:5:1:15:1 | mod M1 | path | +| main.rs:29:17:29:18 | M2 | main.rs:6:5:14:5 | mod M2 | path | +| main.rs:29:21:29:21 | S | main.rs:7:9:7:21 | struct S | path | +| main.rs:30:5:30:5 | s | main.rs:29:9:29:9 | s | local variable | +| main.rs:30:7:30:12 | method | main.rs:10:13:12:13 | fn method | method | diff --git a/rust/ql/test/library-tests/definitions/main.rs b/rust/ql/test/library-tests/definitions/main.rs index bde0b8cb993..35acea6858e 100644 --- a/rust/ql/test/library-tests/definitions/main.rs +++ b/rust/ql/test/library-tests/definitions/main.rs @@ -2,6 +2,18 @@ struct S; mod lib; +mod M1 { + pub mod M2 { + pub struct S; + + impl S { + pub fn method(self) -> Self { + S + } + } + } +} + fn main() { let width = 4; let precision = 2; @@ -14,4 +26,6 @@ fn main() { println!("{1} {} {0} {}", 1, 2); assert_eq!(format!("Hello {:<5}!", "x"), "Hello x !"); let x = S; + let s = M1::M2::S; + s.method(); } From 4ec64021e10970c1a1a985a7b1f0b172a29d525d Mon Sep 17 00:00:00 2001 From: idrissrio Date: Wed, 18 Jun 2025 09:49:12 +0200 Subject: [PATCH 140/150] C++: update change note after review comments --- cpp/ql/lib/change-notes/2025-06-17-arraytype-typedefs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/ql/lib/change-notes/2025-06-17-arraytype-typedefs.md b/cpp/ql/lib/change-notes/2025-06-17-arraytype-typedefs.md index e4e6e732cc7..0bc3130e6a3 100644 --- a/cpp/ql/lib/change-notes/2025-06-17-arraytype-typedefs.md +++ b/cpp/ql/lib/change-notes/2025-06-17-arraytype-typedefs.md @@ -1,4 +1,4 @@ --- category: fix --- -* Fixed how typedefs are resolved for ArrayType by overriding the `resolveTypedefs` predicate. +* `resolveTypedefs` now properly resolves typedefs for `ArrayType`s. From 72559d5198a2bdb4d0d5ac89e84eebf66d66c315 Mon Sep 17 00:00:00 2001 From: idrissrio Date: Wed, 18 Jun 2025 09:50:54 +0200 Subject: [PATCH 141/150] C++: move `resolveTypedefs` tests to dedicated directory --- .../{typedefs => resolve_typedefs}/ArrayTypedefs.cpp | 0 .../{typedefs => resolve_typedefs}/ArrayTypedefs.expected | 0 .../{typedefs => resolve_typedefs}/ArrayTypedefs.ql | 0 cpp/ql/test/library-tests/typedefs/Typedefs1.expected | 6 ------ cpp/ql/test/library-tests/typedefs/Typedefs3.expected | 2 -- 5 files changed, 8 deletions(-) rename cpp/ql/test/library-tests/{typedefs => resolve_typedefs}/ArrayTypedefs.cpp (100%) rename cpp/ql/test/library-tests/{typedefs => resolve_typedefs}/ArrayTypedefs.expected (100%) rename cpp/ql/test/library-tests/{typedefs => resolve_typedefs}/ArrayTypedefs.ql (100%) diff --git a/cpp/ql/test/library-tests/typedefs/ArrayTypedefs.cpp b/cpp/ql/test/library-tests/resolve_typedefs/ArrayTypedefs.cpp similarity index 100% rename from cpp/ql/test/library-tests/typedefs/ArrayTypedefs.cpp rename to cpp/ql/test/library-tests/resolve_typedefs/ArrayTypedefs.cpp diff --git a/cpp/ql/test/library-tests/typedefs/ArrayTypedefs.expected b/cpp/ql/test/library-tests/resolve_typedefs/ArrayTypedefs.expected similarity index 100% rename from cpp/ql/test/library-tests/typedefs/ArrayTypedefs.expected rename to cpp/ql/test/library-tests/resolve_typedefs/ArrayTypedefs.expected diff --git a/cpp/ql/test/library-tests/typedefs/ArrayTypedefs.ql b/cpp/ql/test/library-tests/resolve_typedefs/ArrayTypedefs.ql similarity index 100% rename from cpp/ql/test/library-tests/typedefs/ArrayTypedefs.ql rename to cpp/ql/test/library-tests/resolve_typedefs/ArrayTypedefs.ql diff --git a/cpp/ql/test/library-tests/typedefs/Typedefs1.expected b/cpp/ql/test/library-tests/typedefs/Typedefs1.expected index f64afc49ccd..21b506c015a 100644 --- a/cpp/ql/test/library-tests/typedefs/Typedefs1.expected +++ b/cpp/ql/test/library-tests/typedefs/Typedefs1.expected @@ -1,9 +1,3 @@ -| file://:0:0:0:0 | (global namespace) | ArrayTypedefs.cpp:1:13:1:17 | int_t | -| file://:0:0:0:0 | (global namespace) | ArrayTypedefs.cpp:2:7:2:8 | g1 | -| file://:0:0:0:0 | (global namespace) | ArrayTypedefs.cpp:3:7:3:8 | g2 | -| file://:0:0:0:0 | (global namespace) | ArrayTypedefs.cpp:5:15:5:21 | float_t | -| file://:0:0:0:0 | (global namespace) | ArrayTypedefs.cpp:6:9:6:12 | arr1 | -| file://:0:0:0:0 | (global namespace) | ArrayTypedefs.cpp:7:11:7:19 | a_pointer | | file://:0:0:0:0 | (global namespace) | ODASA-6095-A.hpp:2:8:2:17 | MyTemplate | | file://:0:0:0:0 | (global namespace) | ODASA-6095-A.hpp:2:8:2:17 | MyTemplate | | file://:0:0:0:0 | (global namespace) | ODASA-6095-B.hpp:4:8:4:18 | MyTemplate2 | diff --git a/cpp/ql/test/library-tests/typedefs/Typedefs3.expected b/cpp/ql/test/library-tests/typedefs/Typedefs3.expected index 1cd9bc34f15..c0f584a04e6 100644 --- a/cpp/ql/test/library-tests/typedefs/Typedefs3.expected +++ b/cpp/ql/test/library-tests/typedefs/Typedefs3.expected @@ -1,5 +1,3 @@ -| ArrayTypedefs.cpp:1:13:1:17 | int_t | int_t | getBaseType() = int | -| ArrayTypedefs.cpp:5:15:5:21 | float_t | float_t | getBaseType() = float | | ODASA-6095-A.hpp:5:25:5:30 | mytype | MyTemplate::mytype | NestedTypedefType, getBaseType() = MyTemplate, member of MyTemplate | | ODASA-6095-B.hpp:6:43:6:49 | mytype2 | MyTemplate2::mytype2 | NestedTypedefType, getBaseType() = decltype(...), member of MyTemplate2 | | file://:0:0:0:0 | mytype | MyTemplate::mytype | NestedTypedefType, getBaseType() = MyTemplate, member of MyTemplate | From b29ad5b12a25cb6ca0c00c306c6b9233b1cb72e1 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Wed, 18 Jun 2025 10:22:19 +0200 Subject: [PATCH 142/150] Rust: add attribute macro expansion to path resolution test --- .../PathResolutionInlineExpectationsTest.qll | 1 + .../library-tests/path-resolution/Cargo.lock | 46 +++++ .../library-tests/path-resolution/main.rs | 16 ++ .../path-resolution/path-resolution.expected | 159 +++++++++++------- .../path-resolution/proc_macro.rs | 12 ++ 5 files changed, 169 insertions(+), 65 deletions(-) create mode 100644 rust/ql/test/library-tests/path-resolution/proc_macro.rs diff --git a/rust/ql/lib/utils/test/PathResolutionInlineExpectationsTest.qll b/rust/ql/lib/utils/test/PathResolutionInlineExpectationsTest.qll index e6cf20da84d..c5a95ac9038 100644 --- a/rust/ql/lib/utils/test/PathResolutionInlineExpectationsTest.qll +++ b/rust/ql/lib/utils/test/PathResolutionInlineExpectationsTest.qll @@ -37,6 +37,7 @@ private module ResolveTest implements TestSig { not n = any(Path parent).getQualifier() and location = n.getLocation() and n.fromSource() and + not location.getFile().getAbsolutePath().matches("%proc_macro.rs") and not n.isFromMacroExpansion() and element = n.toString() and tag = "item" diff --git a/rust/ql/test/library-tests/path-resolution/Cargo.lock b/rust/ql/test/library-tests/path-resolution/Cargo.lock index b9856cfaf77..c200b79e06c 100644 --- a/rust/ql/test/library-tests/path-resolution/Cargo.lock +++ b/rust/ql/test/library-tests/path-resolution/Cargo.lock @@ -2,6 +2,52 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proc_macro" +version = "0.1.0" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "syn" +version = "2.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + [[package]] name = "test" version = "0.0.1" +dependencies = [ + "proc_macro", +] + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" diff --git a/rust/ql/test/library-tests/path-resolution/main.rs b/rust/ql/test/library-tests/path-resolution/main.rs index 3b68cff897a..c8c6f36ac3f 100644 --- a/rust/ql/test/library-tests/path-resolution/main.rs +++ b/rust/ql/test/library-tests/path-resolution/main.rs @@ -623,6 +623,18 @@ mod m24 { extern crate self as zelf; +#[proc_macro::add_suffix("changed")] // $ item=add_suffix +fn z() {} // I122 + +struct AStruct {} //I123 +impl AStruct { // $ item=I123 + #[proc_macro::add_suffix("on_type")] // $ item=add_suffix + pub fn z() {} // I124 + + #[proc_macro::add_suffix("on_instance")] // $ item=add_suffix + pub fn z(&self) {} // I125 +} + fn main() { my::nested::nested1::nested2::f(); // $ item=I4 my::f(); // $ item=I38 @@ -653,4 +665,8 @@ fn main() { m23::f(); // $ item=I108 m24::f(); // $ item=I121 zelf::h(); // $ item=I25 + z_changed(); // $ MISSING: item=I122 + AStruct::z_on_type(); // $ MISSING: item=I124 + AStruct{} // $ item=I123 + .z_on_instance(); // MISSING: item=I125 } diff --git a/rust/ql/test/library-tests/path-resolution/path-resolution.expected b/rust/ql/test/library-tests/path-resolution/path-resolution.expected index 666c80dae77..1ecec5f8dc2 100644 --- a/rust/ql/test/library-tests/path-resolution/path-resolution.expected +++ b/rust/ql/test/library-tests/path-resolution/path-resolution.expected @@ -61,7 +61,7 @@ resolvePath | main.rs:30:17:30:21 | super | main.rs:18:5:36:5 | mod m2 | | main.rs:30:17:30:24 | ...::f | main.rs:19:9:21:9 | fn f | | main.rs:33:17:33:17 | f | main.rs:19:9:21:9 | fn f | -| main.rs:40:9:40:13 | super | main.rs:1:1:656:2 | SourceFile | +| main.rs:40:9:40:13 | super | main.rs:1:1:672:2 | SourceFile | | main.rs:40:9:40:17 | ...::m1 | main.rs:13:1:37:1 | mod m1 | | main.rs:40:9:40:21 | ...::m2 | main.rs:18:5:36:5 | mod m2 | | main.rs:40:9:40:24 | ...::g | main.rs:23:9:27:9 | fn g | @@ -73,7 +73,7 @@ resolvePath | main.rs:61:17:61:19 | Foo | main.rs:59:9:59:21 | struct Foo | | main.rs:64:13:64:15 | Foo | main.rs:53:5:53:17 | struct Foo | | main.rs:66:5:66:5 | f | main.rs:55:5:62:5 | fn f | -| main.rs:68:5:68:8 | self | main.rs:1:1:656:2 | SourceFile | +| main.rs:68:5:68:8 | self | main.rs:1:1:672:2 | SourceFile | | main.rs:68:5:68:11 | ...::i | main.rs:71:1:83:1 | fn i | | main.rs:74:13:74:15 | Foo | main.rs:48:1:48:13 | struct Foo | | main.rs:78:16:78:18 | i32 | {EXTERNAL LOCATION} | struct i32 | @@ -88,7 +88,7 @@ resolvePath | main.rs:87:57:87:66 | ...::g | my2/nested2.rs:7:9:9:9 | fn g | | main.rs:87:80:87:86 | nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | | main.rs:100:5:100:22 | f_defined_in_macro | main.rs:99:18:99:42 | fn f_defined_in_macro | -| main.rs:117:13:117:17 | super | main.rs:1:1:656:2 | SourceFile | +| main.rs:117:13:117:17 | super | main.rs:1:1:672:2 | SourceFile | | main.rs:117:13:117:21 | ...::m5 | main.rs:103:1:107:1 | mod m5 | | main.rs:118:9:118:9 | f | main.rs:104:5:106:5 | fn f | | main.rs:118:9:118:9 | f | main.rs:110:5:112:5 | fn f | @@ -266,67 +266,79 @@ resolvePath | main.rs:620:9:620:36 | GenericStruct::<...> | main.rs:563:5:566:5 | struct GenericStruct | | main.rs:620:9:620:47 | ...::call_both | main.rs:586:9:589:9 | fn call_both | | main.rs:620:25:620:35 | Implementor | main.rs:592:5:592:23 | struct Implementor | -| main.rs:627:5:627:6 | my | main.rs:1:1:1:7 | mod my | -| main.rs:627:5:627:14 | ...::nested | my.rs:1:1:1:15 | mod nested | -| main.rs:627:5:627:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 | -| main.rs:627:5:627:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 | -| main.rs:627:5:627:35 | ...::f | my/nested.rs:3:9:5:9 | fn f | -| main.rs:628:5:628:6 | my | main.rs:1:1:1:7 | mod my | -| main.rs:628:5:628:9 | ...::f | my.rs:5:1:7:1 | fn f | -| main.rs:629:5:629:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | -| main.rs:629:5:629:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | -| main.rs:629:5:629:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | -| main.rs:629:5:629:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f | -| main.rs:630:5:630:5 | f | my2/nested2.rs:3:9:5:9 | fn f | -| main.rs:631:5:631:5 | g | my2/nested2.rs:7:9:9:9 | fn g | -| main.rs:632:5:632:9 | crate | main.rs:0:0:0:0 | Crate(main@0.0.1) | -| main.rs:632:5:632:12 | ...::h | main.rs:50:1:69:1 | fn h | -| main.rs:633:5:633:6 | m1 | main.rs:13:1:37:1 | mod m1 | -| main.rs:633:5:633:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 | -| main.rs:633:5:633:13 | ...::g | main.rs:23:9:27:9 | fn g | -| main.rs:634:5:634:6 | m1 | main.rs:13:1:37:1 | mod m1 | -| main.rs:634:5:634:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 | -| main.rs:634:5:634:14 | ...::m3 | main.rs:29:9:35:9 | mod m3 | -| main.rs:634:5:634:17 | ...::h | main.rs:30:27:34:13 | fn h | -| main.rs:635:5:635:6 | m4 | main.rs:39:1:46:1 | mod m4 | -| main.rs:635:5:635:9 | ...::i | main.rs:42:5:45:5 | fn i | -| main.rs:636:5:636:5 | h | main.rs:50:1:69:1 | fn h | -| main.rs:637:5:637:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f | -| main.rs:638:5:638:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g | -| main.rs:639:5:639:5 | j | main.rs:97:1:101:1 | fn j | -| main.rs:640:5:640:6 | m6 | main.rs:109:1:120:1 | mod m6 | -| main.rs:640:5:640:9 | ...::g | main.rs:114:5:119:5 | fn g | -| main.rs:641:5:641:6 | m7 | main.rs:122:1:141:1 | mod m7 | -| main.rs:641:5:641:9 | ...::f | main.rs:133:5:140:5 | fn f | -| main.rs:642:5:642:6 | m8 | main.rs:143:1:197:1 | mod m8 | -| main.rs:642:5:642:9 | ...::g | main.rs:181:5:196:5 | fn g | -| main.rs:643:5:643:6 | m9 | main.rs:199:1:207:1 | mod m9 | -| main.rs:643:5:643:9 | ...::f | main.rs:202:5:206:5 | fn f | -| main.rs:644:5:644:7 | m11 | main.rs:230:1:267:1 | mod m11 | -| main.rs:644:5:644:10 | ...::f | main.rs:235:5:238:5 | fn f | -| main.rs:645:5:645:7 | m15 | main.rs:298:1:352:1 | mod m15 | -| main.rs:645:5:645:10 | ...::f | main.rs:339:5:351:5 | fn f | -| main.rs:646:5:646:7 | m16 | main.rs:354:1:446:1 | mod m16 | -| main.rs:646:5:646:10 | ...::f | main.rs:421:5:445:5 | fn f | -| main.rs:647:5:647:7 | m17 | main.rs:448:1:478:1 | mod m17 | -| main.rs:647:5:647:10 | ...::f | main.rs:472:5:477:5 | fn f | -| main.rs:648:5:648:11 | nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 | -| main.rs:648:5:648:14 | ...::f | my2/nested2.rs:15:9:17:9 | fn f | -| main.rs:649:5:649:11 | nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 | -| main.rs:649:5:649:14 | ...::f | my2/nested2.rs:23:9:25:9 | fn f | -| main.rs:650:5:650:7 | my3 | my2/mod.rs:12:1:12:12 | mod my3 | -| main.rs:650:5:650:10 | ...::f | my2/my3/mod.rs:1:1:5:1 | fn f | -| main.rs:651:5:651:12 | nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f | -| main.rs:652:5:652:7 | m18 | main.rs:480:1:498:1 | mod m18 | -| main.rs:652:5:652:12 | ...::m19 | main.rs:485:5:497:5 | mod m19 | -| main.rs:652:5:652:17 | ...::m20 | main.rs:490:9:496:9 | mod m20 | -| main.rs:652:5:652:20 | ...::g | main.rs:491:13:495:13 | fn g | -| main.rs:653:5:653:7 | m23 | main.rs:527:1:552:1 | mod m23 | -| main.rs:653:5:653:10 | ...::f | main.rs:547:5:551:5 | fn f | -| main.rs:654:5:654:7 | m24 | main.rs:554:1:622:1 | mod m24 | -| main.rs:654:5:654:10 | ...::f | main.rs:608:5:621:5 | fn f | -| main.rs:655:5:655:8 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) | -| main.rs:655:5:655:11 | ...::h | main.rs:50:1:69:1 | fn h | +| main.rs:626:3:626:12 | proc_macro | {EXTERNAL LOCATION} | Crate(proc_macro@0.0.0) | +| main.rs:626:3:626:12 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.1.0) | +| main.rs:626:3:626:24 | ...::add_suffix | proc_macro.rs:4:1:12:1 | fn add_suffix | +| main.rs:630:6:630:12 | AStruct | main.rs:629:1:629:17 | struct AStruct | +| main.rs:631:7:631:16 | proc_macro | {EXTERNAL LOCATION} | Crate(proc_macro@0.0.0) | +| main.rs:631:7:631:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.1.0) | +| main.rs:631:7:631:28 | ...::add_suffix | proc_macro.rs:4:1:12:1 | fn add_suffix | +| main.rs:634:7:634:16 | proc_macro | {EXTERNAL LOCATION} | Crate(proc_macro@0.0.0) | +| main.rs:634:7:634:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.1.0) | +| main.rs:634:7:634:28 | ...::add_suffix | proc_macro.rs:4:1:12:1 | fn add_suffix | +| main.rs:639:5:639:6 | my | main.rs:1:1:1:7 | mod my | +| main.rs:639:5:639:14 | ...::nested | my.rs:1:1:1:15 | mod nested | +| main.rs:639:5:639:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 | +| main.rs:639:5:639:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 | +| main.rs:639:5:639:35 | ...::f | my/nested.rs:3:9:5:9 | fn f | +| main.rs:640:5:640:6 | my | main.rs:1:1:1:7 | mod my | +| main.rs:640:5:640:9 | ...::f | my.rs:5:1:7:1 | fn f | +| main.rs:641:5:641:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | +| main.rs:641:5:641:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | +| main.rs:641:5:641:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | +| main.rs:641:5:641:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:642:5:642:5 | f | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:643:5:643:5 | g | my2/nested2.rs:7:9:9:9 | fn g | +| main.rs:644:5:644:9 | crate | main.rs:0:0:0:0 | Crate(main@0.0.1) | +| main.rs:644:5:644:12 | ...::h | main.rs:50:1:69:1 | fn h | +| main.rs:645:5:645:6 | m1 | main.rs:13:1:37:1 | mod m1 | +| main.rs:645:5:645:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 | +| main.rs:645:5:645:13 | ...::g | main.rs:23:9:27:9 | fn g | +| main.rs:646:5:646:6 | m1 | main.rs:13:1:37:1 | mod m1 | +| main.rs:646:5:646:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 | +| main.rs:646:5:646:14 | ...::m3 | main.rs:29:9:35:9 | mod m3 | +| main.rs:646:5:646:17 | ...::h | main.rs:30:27:34:13 | fn h | +| main.rs:647:5:647:6 | m4 | main.rs:39:1:46:1 | mod m4 | +| main.rs:647:5:647:9 | ...::i | main.rs:42:5:45:5 | fn i | +| main.rs:648:5:648:5 | h | main.rs:50:1:69:1 | fn h | +| main.rs:649:5:649:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:650:5:650:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g | +| main.rs:651:5:651:5 | j | main.rs:97:1:101:1 | fn j | +| main.rs:652:5:652:6 | m6 | main.rs:109:1:120:1 | mod m6 | +| main.rs:652:5:652:9 | ...::g | main.rs:114:5:119:5 | fn g | +| main.rs:653:5:653:6 | m7 | main.rs:122:1:141:1 | mod m7 | +| main.rs:653:5:653:9 | ...::f | main.rs:133:5:140:5 | fn f | +| main.rs:654:5:654:6 | m8 | main.rs:143:1:197:1 | mod m8 | +| main.rs:654:5:654:9 | ...::g | main.rs:181:5:196:5 | fn g | +| main.rs:655:5:655:6 | m9 | main.rs:199:1:207:1 | mod m9 | +| main.rs:655:5:655:9 | ...::f | main.rs:202:5:206:5 | fn f | +| main.rs:656:5:656:7 | m11 | main.rs:230:1:267:1 | mod m11 | +| main.rs:656:5:656:10 | ...::f | main.rs:235:5:238:5 | fn f | +| main.rs:657:5:657:7 | m15 | main.rs:298:1:352:1 | mod m15 | +| main.rs:657:5:657:10 | ...::f | main.rs:339:5:351:5 | fn f | +| main.rs:658:5:658:7 | m16 | main.rs:354:1:446:1 | mod m16 | +| main.rs:658:5:658:10 | ...::f | main.rs:421:5:445:5 | fn f | +| main.rs:659:5:659:7 | m17 | main.rs:448:1:478:1 | mod m17 | +| main.rs:659:5:659:10 | ...::f | main.rs:472:5:477:5 | fn f | +| main.rs:660:5:660:11 | nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 | +| main.rs:660:5:660:14 | ...::f | my2/nested2.rs:15:9:17:9 | fn f | +| main.rs:661:5:661:11 | nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 | +| main.rs:661:5:661:14 | ...::f | my2/nested2.rs:23:9:25:9 | fn f | +| main.rs:662:5:662:7 | my3 | my2/mod.rs:12:1:12:12 | mod my3 | +| main.rs:662:5:662:10 | ...::f | my2/my3/mod.rs:1:1:5:1 | fn f | +| main.rs:663:5:663:12 | nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f | +| main.rs:664:5:664:7 | m18 | main.rs:480:1:498:1 | mod m18 | +| main.rs:664:5:664:12 | ...::m19 | main.rs:485:5:497:5 | mod m19 | +| main.rs:664:5:664:17 | ...::m20 | main.rs:490:9:496:9 | mod m20 | +| main.rs:664:5:664:20 | ...::g | main.rs:491:13:495:13 | fn g | +| main.rs:665:5:665:7 | m23 | main.rs:527:1:552:1 | mod m23 | +| main.rs:665:5:665:10 | ...::f | main.rs:547:5:551:5 | fn f | +| main.rs:666:5:666:7 | m24 | main.rs:554:1:622:1 | mod m24 | +| main.rs:666:5:666:10 | ...::f | main.rs:608:5:621:5 | fn f | +| main.rs:667:5:667:8 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) | +| main.rs:667:5:667:11 | ...::h | main.rs:50:1:69:1 | fn h | +| main.rs:669:5:669:11 | AStruct | main.rs:629:1:629:17 | struct AStruct | +| main.rs:670:5:670:11 | AStruct | main.rs:629:1:629:17 | struct AStruct | | my2/mod.rs:5:5:5:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | | my2/mod.rs:5:5:5:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | | my2/mod.rs:5:5:5:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | @@ -342,7 +354,7 @@ resolvePath | my2/my3/mod.rs:3:5:3:5 | g | my2/mod.rs:3:1:6:1 | fn g | | my2/my3/mod.rs:4:5:4:5 | h | main.rs:50:1:69:1 | fn h | | my2/my3/mod.rs:7:5:7:9 | super | my2/mod.rs:1:1:17:30 | SourceFile | -| my2/my3/mod.rs:7:5:7:16 | ...::super | main.rs:1:1:656:2 | SourceFile | +| my2/my3/mod.rs:7:5:7:16 | ...::super | main.rs:1:1:672:2 | SourceFile | | my2/my3/mod.rs:7:5:7:19 | ...::h | main.rs:50:1:69:1 | fn h | | my2/my3/mod.rs:8:5:8:9 | super | my2/mod.rs:1:1:17:30 | SourceFile | | my2/my3/mod.rs:8:5:8:12 | ...::g | my2/mod.rs:3:1:6:1 | fn g | @@ -369,4 +381,21 @@ resolvePath | my/nested.rs:21:5:21:11 | nested1 | my/nested.rs:1:1:17:1 | mod nested1 | | my/nested.rs:21:5:21:20 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 | | my/nested.rs:21:5:21:23 | ...::f | my/nested.rs:3:9:5:9 | fn f | +| proc_macro.rs:1:5:1:14 | proc_macro | {EXTERNAL LOCATION} | Crate(proc_macro@0.0.0) | +| proc_macro.rs:1:5:1:27 | ...::TokenStream | {EXTERNAL LOCATION} | struct TokenStream | +| proc_macro.rs:2:5:2:9 | quote | {EXTERNAL LOCATION} | Crate(quote@1.0.40) | +| proc_macro.rs:5:25:5:35 | TokenStream | {EXTERNAL LOCATION} | struct TokenStream | +| proc_macro.rs:5:44:5:54 | TokenStream | {EXTERNAL LOCATION} | struct TokenStream | +| proc_macro.rs:5:60:5:70 | TokenStream | {EXTERNAL LOCATION} | struct TokenStream | +| proc_macro.rs:6:16:6:18 | syn | {EXTERNAL LOCATION} | Crate(syn@2.0.103) | +| proc_macro.rs:6:48:6:50 | syn | {EXTERNAL LOCATION} | Crate(syn@2.0.103) | +| proc_macro.rs:6:48:6:58 | ...::LitStr | {EXTERNAL LOCATION} | struct LitStr | +| proc_macro.rs:6:48:6:58 | ...::parse::<...> | {EXTERNAL LOCATION} | fn parse | +| proc_macro.rs:7:19:7:21 | syn | {EXTERNAL LOCATION} | Crate(syn@2.0.103) | +| proc_macro.rs:7:51:7:53 | syn | {EXTERNAL LOCATION} | Crate(syn@2.0.103) | +| proc_macro.rs:7:51:7:61 | ...::ItemFn | {EXTERNAL LOCATION} | struct ItemFn | +| proc_macro.rs:7:51:7:61 | ...::parse::<...> | {EXTERNAL LOCATION} | fn parse | +| proc_macro.rs:8:21:8:23 | syn | {EXTERNAL LOCATION} | Crate(syn@2.0.103) | +| proc_macro.rs:8:21:8:30 | ...::Ident | {EXTERNAL LOCATION} | struct Ident | +| proc_macro.rs:8:21:8:35 | ...::new | {EXTERNAL LOCATION} | fn new | testFailures diff --git a/rust/ql/test/library-tests/path-resolution/proc_macro.rs b/rust/ql/test/library-tests/path-resolution/proc_macro.rs new file mode 100644 index 00000000000..c95fc6fe640 --- /dev/null +++ b/rust/ql/test/library-tests/path-resolution/proc_macro.rs @@ -0,0 +1,12 @@ +use proc_macro::TokenStream; +use quote::quote; + +#[proc_macro_attribute] +pub fn add_suffix(attr: TokenStream, item: TokenStream) -> TokenStream { + let suff = syn::parse_macro_input!(attr as syn::LitStr).value(); + let mut ast = syn::parse_macro_input!(item as syn::ItemFn); + ast.sig.ident = syn::Ident::new(&format!("{}_{}", ast.sig.ident, suff), ast.sig.ident.span()); + quote! { + #ast + }.into() +} From 27eeaf25fde52139b25bc4127abbbf20f71a99f1 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Wed, 18 Jun 2025 10:47:44 +0200 Subject: [PATCH 143/150] Rust: fix lock files --- rust/extractor/src/qltest.rs | 2 +- rust/ql/test/extractor-tests/macro-expansion/Cargo.lock | 2 +- rust/ql/test/library-tests/dataflow/models/Cargo.lock | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/rust/extractor/src/qltest.rs b/rust/extractor/src/qltest.rs index f558981e44b..d21e1d816f2 100644 --- a/rust/extractor/src/qltest.rs +++ b/rust/extractor/src/qltest.rs @@ -91,6 +91,6 @@ pub(crate) fn prepare(config: &mut Config) -> anyhow::Result<()> { } else { anyhow::bail!("requested cargo check failed"); } - } + }; Ok(()) } diff --git a/rust/ql/test/extractor-tests/macro-expansion/Cargo.lock b/rust/ql/test/extractor-tests/macro-expansion/Cargo.lock index 228850f0b3f..c200b79e06c 100644 --- a/rust/ql/test/extractor-tests/macro-expansion/Cargo.lock +++ b/rust/ql/test/extractor-tests/macro-expansion/Cargo.lock @@ -41,7 +41,7 @@ dependencies = [ [[package]] name = "test" -version = "0.1.0" +version = "0.0.1" dependencies = [ "proc_macro", ] diff --git a/rust/ql/test/library-tests/dataflow/models/Cargo.lock b/rust/ql/test/library-tests/dataflow/models/Cargo.lock index 58ec89eb390..7fcff65a5e5 100644 --- a/rust/ql/test/library-tests/dataflow/models/Cargo.lock +++ b/rust/ql/test/library-tests/dataflow/models/Cargo.lock @@ -219,7 +219,7 @@ dependencies = [ [[package]] name = "test" -version = "0.1.0" +version = "0.0.1" dependencies = [ "tokio", ] From 75616de613bcf8d61d8b40784277d967117aeb88 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Wed, 18 Jun 2025 11:12:13 +0200 Subject: [PATCH 144/150] Rust: make `proc_macro` test version also `0.0.1` --- rust/extractor/src/qltest_cargo.mustache | 2 +- .../CONSISTENCY/PathResolutionConsistency.expected | 2 +- rust/ql/test/extractor-tests/macro-expansion/Cargo.lock | 2 +- .../CONSISTENCY/PathResolutionConsistency.expected | 6 ++++++ rust/ql/test/library-tests/path-resolution/Cargo.lock | 2 +- .../library-tests/path-resolution/path-resolution.expected | 6 +++--- 6 files changed, 13 insertions(+), 7 deletions(-) diff --git a/rust/extractor/src/qltest_cargo.mustache b/rust/extractor/src/qltest_cargo.mustache index 02ecfc45681..38db2ca02bf 100644 --- a/rust/extractor/src/qltest_cargo.mustache +++ b/rust/extractor/src/qltest_cargo.mustache @@ -31,7 +31,7 @@ proc_macro = { path = "../.proc_macro" } {{#Macro}} [package] name = "proc_macro" -version = "0.1.0" +version = "0.0.1" edition = "2021" [lib] path = "../proc_macro.rs" diff --git a/rust/ql/test/extractor-tests/macro-expansion/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/extractor-tests/macro-expansion/CONSISTENCY/PathResolutionConsistency.expected index 947e541f0ca..fcaa6dda1dc 100644 --- a/rust/ql/test/extractor-tests/macro-expansion/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/extractor-tests/macro-expansion/CONSISTENCY/PathResolutionConsistency.expected @@ -1,3 +1,3 @@ multiplePathResolutions | macro_expansion.rs:1:5:1:14 | proc_macro | file://:0:0:0:0 | Crate(proc_macro@0.0.0) | -| macro_expansion.rs:1:5:1:14 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.1.0) | +| macro_expansion.rs:1:5:1:14 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | diff --git a/rust/ql/test/extractor-tests/macro-expansion/Cargo.lock b/rust/ql/test/extractor-tests/macro-expansion/Cargo.lock index c200b79e06c..3ed3f289c88 100644 --- a/rust/ql/test/extractor-tests/macro-expansion/Cargo.lock +++ b/rust/ql/test/extractor-tests/macro-expansion/Cargo.lock @@ -13,7 +13,7 @@ dependencies = [ [[package]] name = "proc_macro" -version = "0.1.0" +version = "0.0.1" dependencies = [ "quote", "syn", diff --git a/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected index 9d4e175192b..d242a227c11 100644 --- a/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected @@ -1,3 +1,9 @@ multiplePathResolutions | main.rs:118:9:118:9 | f | main.rs:104:5:106:5 | fn f | | main.rs:118:9:118:9 | f | main.rs:110:5:112:5 | fn f | +| main.rs:626:3:626:12 | proc_macro | file://:0:0:0:0 | Crate(proc_macro@0.0.0) | +| main.rs:626:3:626:12 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | +| main.rs:631:7:631:16 | proc_macro | file://:0:0:0:0 | Crate(proc_macro@0.0.0) | +| main.rs:631:7:631:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | +| main.rs:634:7:634:16 | proc_macro | file://:0:0:0:0 | Crate(proc_macro@0.0.0) | +| main.rs:634:7:634:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | diff --git a/rust/ql/test/library-tests/path-resolution/Cargo.lock b/rust/ql/test/library-tests/path-resolution/Cargo.lock index c200b79e06c..3ed3f289c88 100644 --- a/rust/ql/test/library-tests/path-resolution/Cargo.lock +++ b/rust/ql/test/library-tests/path-resolution/Cargo.lock @@ -13,7 +13,7 @@ dependencies = [ [[package]] name = "proc_macro" -version = "0.1.0" +version = "0.0.1" dependencies = [ "quote", "syn", diff --git a/rust/ql/test/library-tests/path-resolution/path-resolution.expected b/rust/ql/test/library-tests/path-resolution/path-resolution.expected index 1ecec5f8dc2..fd712596821 100644 --- a/rust/ql/test/library-tests/path-resolution/path-resolution.expected +++ b/rust/ql/test/library-tests/path-resolution/path-resolution.expected @@ -267,14 +267,14 @@ resolvePath | main.rs:620:9:620:47 | ...::call_both | main.rs:586:9:589:9 | fn call_both | | main.rs:620:25:620:35 | Implementor | main.rs:592:5:592:23 | struct Implementor | | main.rs:626:3:626:12 | proc_macro | {EXTERNAL LOCATION} | Crate(proc_macro@0.0.0) | -| main.rs:626:3:626:12 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.1.0) | +| main.rs:626:3:626:12 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | | main.rs:626:3:626:24 | ...::add_suffix | proc_macro.rs:4:1:12:1 | fn add_suffix | | main.rs:630:6:630:12 | AStruct | main.rs:629:1:629:17 | struct AStruct | | main.rs:631:7:631:16 | proc_macro | {EXTERNAL LOCATION} | Crate(proc_macro@0.0.0) | -| main.rs:631:7:631:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.1.0) | +| main.rs:631:7:631:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | | main.rs:631:7:631:28 | ...::add_suffix | proc_macro.rs:4:1:12:1 | fn add_suffix | | main.rs:634:7:634:16 | proc_macro | {EXTERNAL LOCATION} | Crate(proc_macro@0.0.0) | -| main.rs:634:7:634:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.1.0) | +| main.rs:634:7:634:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | | main.rs:634:7:634:28 | ...::add_suffix | proc_macro.rs:4:1:12:1 | fn add_suffix | | main.rs:639:5:639:6 | my | main.rs:1:1:1:7 | mod my | | main.rs:639:5:639:14 | ...::nested | my.rs:1:1:1:15 | mod nested | From c35598a2ea5633c42b5e8882f0bfda8003bb5c63 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Wed, 18 Jun 2025 11:48:11 +0200 Subject: [PATCH 145/150] Rust: Add `Deprecated` suffix to existing MaD extensible predicates --- .../dataflow/internal/DataFlowConsistency.qll | 21 ---------- .../rust/dataflow/internal/ModelsAsData.qll | 42 +++++++++++-------- .../rust/dataflow/internal/empty.model.yml | 6 +-- .../codeql/rust/frameworks/async-rs.model.yml | 2 +- .../codeql/rust/frameworks/futures.model.yml | 2 +- .../lib/codeql/rust/frameworks/http.model.yml | 2 +- .../lib/codeql/rust/frameworks/libc.model.yml | 4 +- .../lib/codeql/rust/frameworks/log.model.yml | 2 +- .../codeql/rust/frameworks/postgres.model.yml | 2 +- .../codeql/rust/frameworks/regex.model.yml | 2 +- .../codeql/rust/frameworks/reqwest.model.yml | 6 +-- .../codeql/rust/frameworks/rusqlite.model.yml | 4 +- .../rustcrypto/rustcrypto.model.yml | 2 +- .../codeql/rust/frameworks/rustls.model.yml | 4 +- .../rust/frameworks/stdlib/env.model.yml | 2 +- .../rust/frameworks/stdlib/fs.model.yml | 6 +-- .../rust/frameworks/stdlib/io.model.yml | 4 +- .../frameworks/stdlib/lang-alloc.model.yml | 6 +-- .../frameworks/stdlib/lang-core.model.yml | 6 +-- .../rust/frameworks/stdlib/net.model.yml | 4 +- .../rust/frameworks/tokio-postgres.model.yml | 4 +- .../codeql/rust/frameworks/tokio/fs.model.yml | 2 +- .../codeql/rust/frameworks/tokio/io.model.yml | 4 +- .../rust/frameworks/tokio/net.model.yml | 4 +- .../lib/codeql/rust/frameworks/url.model.yml | 2 +- ....com-actix-actix-web-actix-files.model.yml | 4 +- ...-actix-actix-web-actix-http-test.model.yml | 2 +- ...b.com-actix-actix-web-actix-http.model.yml | 4 +- ...-actix-actix-web-actix-multipart.model.yml | 2 +- ...com-actix-actix-web-actix-router.model.yml | 2 +- ...b.com-actix-actix-web-actix-test.model.yml | 2 +- ...actix-actix-web-actix-web-actors.model.yml | 4 +- ...ctix-actix-web-actix-web-codegen.model.yml | 2 +- ...ub.com-actix-actix-web-actix-web.model.yml | 4 +- ...s-github.com-actix-actix-web-awc.model.yml | 4 +- ...tps-github.com-clap-rs-clap-clap.model.yml | 4 +- ...thub.com-clap-rs-clap-clap_bench.model.yml | 2 +- ...ub.com-clap-rs-clap-clap_builder.model.yml | 4 +- ...b.com-clap-rs-clap-clap_complete.model.yml | 4 +- ...ap-rs-clap-clap_complete_nushell.model.yml | 4 +- ...hub.com-clap-rs-clap-clap_derive.model.yml | 4 +- ...github.com-clap-rs-clap-clap_lex.model.yml | 2 +- ...hub.com-clap-rs-clap-clap_mangen.model.yml | 4 +- ...-github.com-hyperium-hyper-hyper.model.yml | 6 +-- ...hub.com-rust-lang-libc-libc-test.model.yml | 6 +-- ...s-github.com-rust-lang-libc-libc.model.yml | 2 +- ...tps-github.com-rust-lang-log-log.model.yml | 4 +- ...hub.com-BurntSushi-memchr-memchr.model.yml | 4 +- ....com-matklad-once_cell-once_cell.model.yml | 2 +- .../ext/generated/rand/repo-benches.model.yml | 2 +- ...github.com-rust-random-rand-rand.model.yml | 2 +- ...com-rust-random-rand-rand_chacha.model.yml | 2 +- ...b.com-rust-random-rand-rand_core.model.yml | 2 +- ...ub.com-rust-random-rand-rand_pcg.model.yml | 2 +- ....com-seanmonstar-reqwest-reqwest.model.yml | 6 +-- .../generated/rocket/repo-cookies.model.yml | 2 +- .../generated/rocket/repo-fairings.model.yml | 2 +- ...ps-github.com-rwf2-Rocket-rocket.model.yml | 6 +-- ...b.com-rwf2-Rocket-rocket_codegen.model.yml | 4 +- ...thub.com-rwf2-Rocket-rocket_http.model.yml | 4 +- ...contrib-db_pools-rocket_db_pools.model.yml | 2 +- ...n_templates-rocket_dyn_templates.model.yml | 4 +- ...nc_db_pools-rocket_sync_db_pools.model.yml | 2 +- ...t-tree-v0.5-contrib-ws-rocket_ws.model.yml | 2 +- .../rocket/repo-manual_routes.model.yml | 2 +- .../generated/rocket/repo-pastebin.model.yml | 2 +- .../ext/generated/rocket/repo-state.model.yml | 2 +- .../rocket/repo-static-files.model.yml | 2 +- .../ext/generated/rocket/repo-tls.model.yml | 2 +- .../ext/generated/rocket/repo-todo.model.yml | 2 +- .../ext/generated/rust/lang-alloc.model.yml | 6 +-- .../ext/generated/rust/lang-core.model.yml | 6 +-- .../ext/generated/rust/lang-other.model.yml | 2 +- .../generated/rust/lang-proc_macro.model.yml | 4 +- .../lib/ext/generated/rust/lang-std.model.yml | 6 +-- .../generated/rust/repo-dylib-dep.model.yml | 2 +- ...rust-lang-backtrace-rs-backtrace.model.yml | 6 +-- ...ust-lang-portable-simd-core_simd.model.yml | 2 +- ....com-rust-lang-stdarch-core_arch.model.yml | 4 +- .../rust/repo-intrinsic-test.model.yml | 6 +-- .../generated/rust/repo-std_float.model.yml | 2 +- .../rust/repo-stdarch-gen-arm.model.yml | 4 +- .../rust/repo-stdarch-gen-loongarch.model.yml | 2 +- .../rust/repo-stdarch-test.model.yml | 2 +- .../rust/repo-stdarch_examples.model.yml | 2 +- .../rust/repo-test_helpers.model.yml | 2 +- ...-github.com-serde-rs-serde-serde.model.yml | 4 +- ....com-serde-rs-serde-serde_derive.model.yml | 2 +- .../serde/repo-serde_test_suite.model.yml | 2 +- ...com-servo-rust-smallvec-smallvec.model.yml | 6 +-- .../generated/tokio/repo-benches.model.yml | 2 +- .../generated/tokio/repo-examples.model.yml | 2 +- ....com-tokio-rs-tokio-tokio-macros.model.yml | 2 +- ....com-tokio-rs-tokio-tokio-stream.model.yml | 4 +- ...ub.com-tokio-rs-tokio-tokio-test.model.yml | 4 +- ...ub.com-tokio-rs-tokio-tokio-util.model.yml | 4 +- ...-github.com-tokio-rs-tokio-tokio.model.yml | 6 +-- .../dataflow/models/models.ext.yml | 4 +- .../modelgenerator/CaptureSinkModels.ext.yml | 2 +- .../CaptureSourceModels.ext.yml | 2 +- 100 files changed, 186 insertions(+), 201 deletions(-) diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowConsistency.qll b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowConsistency.qll index 909d275dc11..d544ff888d5 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowConsistency.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowConsistency.qll @@ -44,24 +44,3 @@ private module Input implements InputSig { import MakeConsistency private import codeql.rust.dataflow.internal.ModelsAsData - -query predicate missingMadSummaryCanonicalPath(string crate, string path, Addressable a) { - summaryModel(crate, path, _, _, _, _, _) and - a.getCrateOrigin() = crate and - a.getExtendedCanonicalPath() = path and - not exists(a.getCanonicalPath()) -} - -query predicate missingMadSourceCanonicalPath(string crate, string path, Addressable a) { - sourceModel(crate, path, _, _, _, _) and - a.getCrateOrigin() = crate and - a.getExtendedCanonicalPath() = path and - not exists(a.getCanonicalPath()) -} - -query predicate missingMadSinkCanonicalPath(string crate, string path, Addressable a) { - sinkModel(crate, path, _, _, _, _) and - a.getCrateOrigin() = crate and - a.getExtendedCanonicalPath() = path and - not exists(a.getCanonicalPath()) -} diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/ModelsAsData.qll b/rust/ql/lib/codeql/rust/dataflow/internal/ModelsAsData.qll index 00ac7058cc9..7a88d52d357 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/ModelsAsData.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/ModelsAsData.qll @@ -50,6 +50,8 @@ private import codeql.rust.dataflow.FlowSink private import codeql.rust.elements.internal.CallExprBaseImpl::Impl as CallExprBaseImpl /** + * DEPRECATED: Do not use. + * * Holds if in a call to the function with canonical path `path`, defined in the * crate `crate`, the value referred to by `output` is a flow source of the given * `kind`. @@ -59,12 +61,14 @@ private import codeql.rust.elements.internal.CallExprBaseImpl::Impl as CallExprB * For more information on the `kind` parameter, see * https://github.com/github/codeql/blob/main/docs/codeql/reusables/threat-model-description.rst. */ -extensible predicate sourceModel( +extensible predicate sourceModelDeprecated( string crate, string path, string output, string kind, string provenance, QlBuiltins::ExtensionId madId ); /** + * DEPRECATED: Do not use. + * * Holds if in a call to the function with canonical path `path`, defined in the * crate `crate`, the value referred to by `input` is a flow sink of the given * `kind`. @@ -75,12 +79,14 @@ extensible predicate sourceModel( * * - `sql-injection`: a flow sink for SQL injection. */ -extensible predicate sinkModel( +extensible predicate sinkModelDeprecated( string crate, string path, string input, string kind, string provenance, QlBuiltins::ExtensionId madId ); /** + * DEPRECATED: Do not use. + * * Holds if in a call to the function with canonical path `path`, defined in the * crate `crate`, the value referred to by `input` can flow to the value referred * to by `output`. @@ -88,7 +94,7 @@ extensible predicate sinkModel( * `kind` should be either `value` or `taint`, for value-preserving or taint-preserving * steps, respectively. */ -extensible predicate summaryModel( +extensible predicate summaryModelDeprecated( string crate, string path, string input, string output, string kind, string provenance, QlBuiltins::ExtensionId madId ); @@ -100,27 +106,27 @@ extensible predicate summaryModel( */ predicate interpretModelForTest(QlBuiltins::ExtensionId madId, string model) { exists(string crate, string path, string output, string kind | - sourceModel(crate, path, kind, output, _, madId) and + sourceModelDeprecated(crate, path, kind, output, _, madId) and model = "Source: " + crate + "; " + path + "; " + output + "; " + kind ) or exists(string crate, string path, string input, string kind | - sinkModel(crate, path, kind, input, _, madId) and + sinkModelDeprecated(crate, path, kind, input, _, madId) and model = "Sink: " + crate + "; " + path + "; " + input + "; " + kind ) or exists(string type, string path, string input, string output, string kind | - summaryModel(type, path, input, output, kind, _, madId) and + summaryModelDeprecated(type, path, input, output, kind, _, madId) and model = "Summary: " + type + "; " + path + "; " + input + "; " + output + "; " + kind ) } -private class SummarizedCallableFromModel extends SummarizedCallable::Range { +private class SummarizedCallableFromModelDeprecated extends SummarizedCallable::Range { private string crate; private string path; - SummarizedCallableFromModel() { - summaryModel(crate, path, _, _, _, _, _) and + SummarizedCallableFromModelDeprecated() { + summaryModelDeprecated(crate, path, _, _, _, _, _) and exists(CallExprBase call, Resolvable r | call.getStaticTarget() = this and r = CallExprBaseImpl::getCallResolvable(call) and @@ -133,7 +139,7 @@ private class SummarizedCallableFromModel extends SummarizedCallable::Range { string input, string output, boolean preservesValue, string model ) { exists(string kind, QlBuiltins::ExtensionId madId | - summaryModel(crate, path, input, output, kind, _, madId) and + summaryModelDeprecated(crate, path, input, output, kind, _, madId) and model = "MaD:" + madId.toString() | kind = "value" and @@ -145,35 +151,35 @@ private class SummarizedCallableFromModel extends SummarizedCallable::Range { } } -private class FlowSourceFromModel extends FlowSource::Range { +private class FlowSourceFromModelDeprecated extends FlowSource::Range { private string crate; private string path; - FlowSourceFromModel() { - sourceModel(crate, path, _, _, _, _) and + FlowSourceFromModelDeprecated() { + sourceModelDeprecated(crate, path, _, _, _, _) and this.callResolvesTo(crate, path) } override predicate isSource(string output, string kind, Provenance provenance, string model) { exists(QlBuiltins::ExtensionId madId | - sourceModel(crate, path, output, kind, provenance, madId) and + sourceModelDeprecated(crate, path, output, kind, provenance, madId) and model = "MaD:" + madId.toString() ) } } -private class FlowSinkFromModel extends FlowSink::Range { +private class FlowSinkFromModelDeprecated extends FlowSink::Range { private string crate; private string path; - FlowSinkFromModel() { - sinkModel(crate, path, _, _, _, _) and + FlowSinkFromModelDeprecated() { + sinkModelDeprecated(crate, path, _, _, _, _) and this.callResolvesTo(crate, path) } override predicate isSink(string input, string kind, Provenance provenance, string model) { exists(QlBuiltins::ExtensionId madId | - sinkModel(crate, path, input, kind, provenance, madId) and + sinkModelDeprecated(crate, path, input, kind, provenance, madId) and model = "MaD:" + madId.toString() ) } diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/empty.model.yml b/rust/ql/lib/codeql/rust/dataflow/internal/empty.model.yml index 1a33951dfc3..b2c729f2c80 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/empty.model.yml +++ b/rust/ql/lib/codeql/rust/dataflow/internal/empty.model.yml @@ -3,15 +3,15 @@ extensions: # to avoid errors about undefined extensionals. - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: [] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: [] - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: [] diff --git a/rust/ql/lib/codeql/rust/frameworks/async-rs.model.yml b/rust/ql/lib/codeql/rust/frameworks/async-rs.model.yml index 35ab72f7ca1..8276574e73a 100644 --- a/rust/ql/lib/codeql/rust/frameworks/async-rs.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/async-rs.model.yml @@ -1,6 +1,6 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - ["repo:https://github.com/async-rs/async-std:async-std", "::connect", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "remote", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/futures.model.yml b/rust/ql/lib/codeql/rust/frameworks/futures.model.yml index cb311a79e6f..b1fa17f5876 100644 --- a/rust/ql/lib/codeql/rust/frameworks/futures.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/futures.model.yml @@ -1,7 +1,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/rust-lang/futures-rs:futures-executor", "crate::local_pool::block_on", "Argument[0]", "ReturnValue", "value", "manual"] - ["repo:https://github.com/rust-lang/futures-rs:futures-util", "::new", "Argument[0]", "ReturnValue", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/http.model.yml b/rust/ql/lib/codeql/rust/frameworks/http.model.yml index 20da849182e..5ad34ef53fe 100644 --- a/rust/ql/lib/codeql/rust/frameworks/http.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/http.model.yml @@ -1,7 +1,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - ["repo:https://github.com/hyperium/hyper:hyper", "::send_request", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "remote", "manual"] - ["repo:https://github.com/hyperium/hyper:hyper", "::send_request", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "remote", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/libc.model.yml b/rust/ql/lib/codeql/rust/frameworks/libc.model.yml index de34d13aeaa..ce44a71732e 100644 --- a/rust/ql/lib/codeql/rust/frameworks/libc.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/libc.model.yml @@ -1,12 +1,12 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - ["repo:https://github.com/rust-lang/libc:libc", "::free", "Argument[0]", "pointer-invalidate", "manual"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/rust-lang/libc:libc", "::malloc", "Argument[0]", "alloc-size", "manual"] - ["repo:https://github.com/rust-lang/libc:libc", "::aligned_alloc", "Argument[1]", "alloc-size", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/log.model.yml b/rust/ql/lib/codeql/rust/frameworks/log.model.yml index 14d5a92b243..b41b400e414 100644 --- a/rust/ql/lib/codeql/rust/frameworks/log.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/log.model.yml @@ -1,7 +1,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/rust-lang/log:log", "crate::__private_api::log", "Argument[0]", "log-injection", "manual"] # logger / args (pre v0.4.27) - ["repo:https://github.com/rust-lang/log:log", "crate::__private_api::log", "Argument[1]", "log-injection", "manual"] # args / level (pre v0.4.27) diff --git a/rust/ql/lib/codeql/rust/frameworks/postgres.model.yml b/rust/ql/lib/codeql/rust/frameworks/postgres.model.yml index c877947a45f..4aba20e3450 100644 --- a/rust/ql/lib/codeql/rust/frameworks/postgres.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/postgres.model.yml @@ -1,7 +1,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/sfackler/rust-postgres:postgres", "::execute", "Argument[0]", "sql-injection", "manual"] - ["repo:https://github.com/sfackler/rust-postgres:postgres", "::batch_execute", "Argument[0]", "sql-injection", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/regex.model.yml b/rust/ql/lib/codeql/rust/frameworks/regex.model.yml index b645dc0b955..dbe8afe8f6e 100644 --- a/rust/ql/lib/codeql/rust/frameworks/regex.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/regex.model.yml @@ -2,6 +2,6 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/rust-lang/regex:regex", "crate::escape", "Argument[0].Reference", "ReturnValue", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/reqwest.model.yml b/rust/ql/lib/codeql/rust/frameworks/reqwest.model.yml index dabbaf1d8f3..3974d5b0817 100644 --- a/rust/ql/lib/codeql/rust/frameworks/reqwest.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/reqwest.model.yml @@ -1,19 +1,19 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "crate::get", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "remote", "manual"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "crate::blocking::get", "ReturnValue.Field[core::result::Result::Ok(0)]", "remote", "manual"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::request", "Argument[1]", "transmission", "manual"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::request", "Argument[1]", "transmission", "manual"] - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::text", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::text_with_charset", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/rusqlite.model.yml b/rust/ql/lib/codeql/rust/frameworks/rusqlite.model.yml index ba63d848f1f..3da7e2a1bc6 100644 --- a/rust/ql/lib/codeql/rust/frameworks/rusqlite.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/rusqlite.model.yml @@ -1,7 +1,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/rusqlite/rusqlite:rusqlite", "::execute", "Argument[0]", "sql-injection", "manual"] - ["repo:https://github.com/rusqlite/rusqlite:rusqlite", "::execute_batch", "Argument[0]", "sql-injection", "manual"] @@ -12,7 +12,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - ["repo:https://github.com/rusqlite/rusqlite:rusqlite", "::get", "ReturnValue.Field[core::result::Result::Ok(0)]", "database", "manual"] - ["repo:https://github.com/rusqlite/rusqlite:rusqlite", "::get_unwrap", "ReturnValue", "database", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/rustcrypto/rustcrypto.model.yml b/rust/ql/lib/codeql/rust/frameworks/rustcrypto/rustcrypto.model.yml index fe3fd67a8fd..7b7a7964400 100644 --- a/rust/ql/lib/codeql/rust/frameworks/rustcrypto/rustcrypto.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/rustcrypto/rustcrypto.model.yml @@ -1,7 +1,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/RustCrypto/traits:digest", "<_ as crate::digest::Digest>::new_with_prefix", "Argument[0]", "hasher-input", "manual"] - ["repo:https://github.com/RustCrypto/traits:digest", "<_ as crate::digest::Digest>::update", "Argument[0]", "hasher-input", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/rustls.model.yml b/rust/ql/lib/codeql/rust/frameworks/rustls.model.yml index 2f8a1f529a6..1e21646f2ca 100644 --- a/rust/ql/lib/codeql/rust/frameworks/rustls.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/rustls.model.yml @@ -1,12 +1,12 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - ["repo:https://github.com/rustls/rustls:rustls", "::new", "ReturnValue.Field[core::result::Result::Ok(0)]", "remote", "manual"] - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/quininer/futures-rustls:futures-rustls", "::connect", "Argument[1]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["repo:https://github.com/quininer/futures-rustls:futures-rustls", "::poll_read", "Argument[self].Reference", "Argument[1].Reference", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/env.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/env.model.yml index 4674188c384..83036991126 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/env.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/env.model.yml @@ -1,7 +1,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - ["lang:std", "crate::env::args", "ReturnValue.Element", "commandargs", "manual"] - ["lang:std", "crate::env::args_os", "ReturnValue.Element", "commandargs", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/fs.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/fs.model.yml index 72dabacca82..ea1d93b2f7f 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/fs.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/fs.model.yml @@ -1,7 +1,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - ["lang:std", "crate::fs::read", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] - ["lang:std", "crate::fs::read_to_string", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] @@ -12,7 +12,7 @@ extensions: - ["lang:std", "::open_buffered", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["lang:std", "crate::fs::copy", "Argument[0]", "path-injection", "manual"] - ["lang:std", "crate::fs::copy", "Argument[1]", "path-injection", "manual"] @@ -43,7 +43,7 @@ extensions: - ["lang:std", "::open_buffered", "Argument[0]", "path-injection", "manual"] - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["lang:std", "::from", "Argument[0]", "ReturnValue", "taint", "manual"] - ["lang:std", "::join", "Argument[self]", "ReturnValue", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/io.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/io.model.yml index ded14103404..fc86d2fb908 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/io.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/io.model.yml @@ -1,12 +1,12 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - ["lang:std", "crate::io::stdio::stdin", "ReturnValue", "stdin", "manual"] - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["lang:std", "::new", "Argument[0]", "ReturnValue", "taint", "manual"] - ["lang:std", "::fill_buf", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-alloc.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-alloc.model.yml index af7253004df..eea2f6726db 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-alloc.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-alloc.model.yml @@ -1,13 +1,13 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: # Alloc - ["lang:alloc", "crate::alloc::dealloc", "Argument[0]", "pointer-invalidate", "manual"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: # Alloc - ["lang:alloc", "crate::alloc::alloc", "Argument[0]", "alloc-layout", "manual"] @@ -27,7 +27,7 @@ extensions: - ["lang:alloc", "::grow_zeroed", "Argument[2]", "alloc-layout", "manual"] - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: # Box - ["lang:alloc", "::pin", "Argument[0]", "ReturnValue.Reference", "value", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml index d998a3bf068..00d78a7d8cb 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml @@ -1,7 +1,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: # Iterator - ["lang:core", "<[_]>::iter", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] @@ -55,7 +55,7 @@ extensions: - ["lang:core", "::trim", "Argument[self]", "ReturnValue.Reference", "taint", "manual"] - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: # Ptr - ["lang:core", "crate::ptr::drop_in_place", "Argument[0]", "pointer-invalidate", "manual"] @@ -64,7 +64,7 @@ extensions: - ["lang:core", "crate::ptr::null", "ReturnValue", "pointer-invalidate", "manual"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: # Ptr - ["lang:core", "crate::ptr::read", "Argument[0]", "pointer-access", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/net.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/net.model.yml index 3f5f2d1c0ce..307b20b5b88 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/net.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/net.model.yml @@ -1,13 +1,13 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - ["lang:std", "::connect", "ReturnValue.Field[core::result::Result::Ok(0)]", "remote", "manual"] - ["lang:std", "::connect_timeout", "ReturnValue.Field[core::result::Result::Ok(0)]", "remote", "manual"] - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["lang:std", "::try_clone", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["lang:std", "::read", "Argument[self]", "Argument[0].Reference", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/tokio-postgres.model.yml b/rust/ql/lib/codeql/rust/frameworks/tokio-postgres.model.yml index ffe6d6d8eac..7ad54022784 100644 --- a/rust/ql/lib/codeql/rust/frameworks/tokio-postgres.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/tokio-postgres.model.yml @@ -1,7 +1,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/sfackler/rust-postgres:tokio-postgres", "::execute", "Argument[0]", "sql-injection", "manual"] - ["repo:https://github.com/sfackler/rust-postgres:tokio-postgres", "::batch_execute", "Argument[0]", "sql-injection", "manual"] @@ -18,7 +18,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - ["repo:https://github.com/sfackler/rust-postgres:tokio-postgres", "::get", "ReturnValue", "database", "manual"] - ["repo:https://github.com/sfackler/rust-postgres:tokio-postgres", "::try_get", "ReturnValue.Field[core::result::Result::Ok(0)]", "database", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/tokio/fs.model.yml b/rust/ql/lib/codeql/rust/frameworks/tokio/fs.model.yml index e1dd50cdb75..108ca6e1a3a 100644 --- a/rust/ql/lib/codeql/rust/frameworks/tokio/fs.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/tokio/fs.model.yml @@ -1,7 +1,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::fs::read::read", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "file", "manual"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::fs::read_to_string::read_to_string", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "file", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/tokio/io.model.yml b/rust/ql/lib/codeql/rust/frameworks/tokio/io.model.yml index 50a88a79c81..35dcd597c0d 100644 --- a/rust/ql/lib/codeql/rust/frameworks/tokio/io.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/tokio/io.model.yml @@ -1,12 +1,12 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::stdin::stdin", "ReturnValue", "stdin", "manual"] - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue", "taint", "manual"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_buf_read_ext::AsyncBufReadExt::fill_buf", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/tokio/net.model.yml b/rust/ql/lib/codeql/rust/frameworks/tokio/net.model.yml index 5d14dabe485..64926df979e 100644 --- a/rust/ql/lib/codeql/rust/frameworks/tokio/net.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/tokio/net.model.yml @@ -1,12 +1,12 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::connect", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "remote", "manual"] - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::peek", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::async_read_ext::AsyncReadExt::read", "Argument[self]", "Argument[0].Reference", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/url.model.yml b/rust/ql/lib/codeql/rust/frameworks/url.model.yml index 54c6906c08d..496b235c930 100644 --- a/rust/ql/lib/codeql/rust/frameworks/url.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/url.model.yml @@ -2,6 +2,6 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/servo/rust-url:url", "::parse", "Argument[0].Reference", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] diff --git a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-files.model.yml b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-files.model.yml index 7a877781c4d..43197621ed7 100644 --- a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-files.model.yml +++ b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-files.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/actix/actix-web:actix-files", "::project", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-files", "::project_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] @@ -66,7 +66,7 @@ extensions: - ["repo:https://github.com/actix/actix-web:actix-files", "crate::encoding::equiv_utf8_text", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/actix/actix-web:actix-files", "::respond_to", "Argument[self]", "pointer-access", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-files", "::into_response", "Argument[self]", "pointer-access", "df-generated"] diff --git a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-http-test.model.yml b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-http-test.model.yml index 942404ec015..8adc705fa57 100644 --- a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-http-test.model.yml +++ b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-http-test.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/actix/actix-web:actix-http-test", "::addr", "Argument[self].Field[actix_http_test::TestServer::addr]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http-test", "::request", "Argument[0]", "ReturnValue.Field[awc::request::ClientRequest::head].Field[actix_http::requests::head::RequestHead::method]", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-http.model.yml b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-http.model.yml index 53cf6df52e9..f6fb3f75cd4 100644 --- a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-http.model.yml +++ b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-http.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/actix/actix-web:actix-http", "<&crate::header::name::HeaderName as crate::header::as_name::Sealed>::try_as_name", "Argument[self].Reference", "ReturnValue.Field[core::result::Result::Ok(0)].Field[alloc::borrow::Cow::Borrowed(0)]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "<&crate::header::value::HeaderValue as crate::header::into_value::TryIntoHeaderValue>::try_into_value", "Argument[self].Reference", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] @@ -292,7 +292,7 @@ extensions: - ["repo:https://github.com/actix/actix-web:actix-http", "::from", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/actix/actix-web:actix-http", "::from_io", "Argument[1]", "pointer-access", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::new", "Argument[4]", "pointer-access", "df-generated"] diff --git a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-multipart.model.yml b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-multipart.model.yml index a0028869cd3..a080c4c2f91 100644 --- a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-multipart.model.yml +++ b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-multipart.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/actix/actix-web:actix-multipart", "<_ as crate::form::FieldGroupReader>::from_state", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-multipart", "<_ as crate::form::FieldGroupReader>::handle_field", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-router.model.yml b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-router.model.yml index 55156f8eca6..a51fb34941f 100644 --- a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-router.model.yml +++ b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-router.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/actix/actix-web:actix-router", "<&crate::string::String as crate::pattern::IntoPatterns>::patterns", "Argument[self].Reference.Field[alloc::string::String::vec]", "ReturnValue.Field[actix_router::pattern::Patterns::Single(0)].Field[alloc::string::String::vec]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-router", "<&crate::string::String as crate::pattern::IntoPatterns>::patterns", "Argument[self].Reference.Reference", "ReturnValue.Field[actix_router::pattern::Patterns::Single(0)]", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-test.model.yml b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-test.model.yml index 82cb1967c6f..2a52d054057 100644 --- a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-test.model.yml +++ b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-test.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/actix/actix-web:actix-test", "::addr", "Argument[self].Field[actix_test::TestServer::addr]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-test", "::request", "Argument[0]", "ReturnValue.Field[awc::request::ClientRequest::head].Field[actix_http::requests::head::RequestHead::method]", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-web-actors.model.yml b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-web-actors.model.yml index f16e51e652c..003c0df6f59 100644 --- a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-web-actors.model.yml +++ b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-web-actors.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/actix/actix-web:actix-web-actors", "::parts", "Argument[self].Field[actix_web_actors::context::HttpContext::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web-actors", "::parts", "Argument[self].Field[actix_web_actors::ws::WebsocketContext::inner]", "ReturnValue.Reference", "value", "dfc-generated"] @@ -21,7 +21,7 @@ extensions: - ["repo:https://github.com/actix/actix-web:actix-web-actors", "::protocols", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/actix/actix-web:actix-web-actors", "::write", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-web-actors", "::write_eof", "Argument[self]", "log-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-web-codegen.model.yml b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-web-codegen.model.yml index 045b0337dcb..ed06e35ec3e 100644 --- a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-web-codegen.model.yml +++ b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-web-codegen.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/actix/actix-web:actix-web-codegen", "::try_from", "Argument[0].Reference", "ReturnValue.Field[core::result::Result::Ok(0)].Field[actix_web_codegen::route::MethodTypeExt::Custom(0)]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web-codegen", "::new", "Argument[0].Field[actix_web_codegen::route::RouteArgs::path]", "ReturnValue.Field[actix_web_codegen::route::Args::path]", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-web.model.yml b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-web.model.yml index d5f318eeae5..448f6267e46 100644 --- a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-web.model.yml +++ b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-web.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/actix/actix-web:actix-web", "<_ as crate::guard::Guard>::check", "Argument[0]", "Argument[self].Parameter[0]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "<_ as crate::guard::Guard>::check", "Argument[self].ReturnValue", "ReturnValue", "value", "dfc-generated"] @@ -420,7 +420,7 @@ extensions: - ["repo:https://github.com/actix/actix-web:actix-web", "crate::web::scope", "Argument[0]", "ReturnValue", "taint", "df-generated"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/actix/actix-web:actix-web", "::ranked", "Argument[self]", "pointer-access", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::negotiate", "Argument[self]", "pointer-access", "df-generated"] diff --git a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-awc.model.yml b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-awc.model.yml index d67bac17a99..055651257c2 100644 --- a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-awc.model.yml +++ b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-awc.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/actix/actix-web:awc", "::add_default_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::basic_auth", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -262,7 +262,7 @@ extensions: - ["repo:https://github.com/actix/actix-web:awc", "::set_header_if_none", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/actix/actix-web:awc", "::send", "Argument[self]", "pointer-access", "df-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::send_body", "Argument[self]", "pointer-access", "df-generated"] diff --git a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap.model.yml b/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap.model.yml index 154e6912173..68c81938798 100644 --- a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap.model.yml +++ b/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/clap-rs/clap:clap", "::augment_args", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap", "::augment_args_for_update", "Argument[0]", "ReturnValue", "value", "dfc-generated"] @@ -15,7 +15,7 @@ extensions: - ["repo:https://github.com/clap-rs/clap:clap", "::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/clap-rs/clap:clap", "::from_arg_matches", "Argument[0]", "log-injection", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap", "::from_arg_matches_mut", "Argument[0]", "log-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_bench.model.yml b/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_bench.model.yml index c70e37a02bf..c22f0a231a0 100644 --- a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_bench.model.yml +++ b/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_bench.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/clap-rs/clap:clap_bench", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_bench", "::args", "Argument[self].Field[1]", "ReturnValue", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_builder.model.yml b/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_builder.model.yml index 462c5f8126b..71fbb096932 100644 --- a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_builder.model.yml +++ b/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_builder.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/clap-rs/clap:clap_builder", "<_ as crate::builder::value_parser::AnyValueParser>::clone_any", "Argument[self].Reference", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::into_resettable", "Argument[self]", "ReturnValue.Field[clap_builder::builder::resettable::Resettable::Value(0)]", "value", "dfc-generated"] @@ -394,7 +394,7 @@ extensions: - ["repo:https://github.com/clap-rs/clap:clap_builder", "crate::output::textwrap::word_separators::find_words_ascii_space", "Argument[0]", "ReturnValue.Field[core::iter::sources::from_fn::FromFn(0)]", "value", "dfc-generated"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/clap-rs/clap:clap_builder", "<_ as crate::builder::value_parser::TypedValueParser>::parse_ref", "Argument[1]", "pointer-access", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::remove", "Argument[self]", "log-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_complete.model.yml b/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_complete.model.yml index 0f657f77ada..c7ef53d6a79 100644 --- a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_complete.model.yml +++ b/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_complete.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/clap-rs/clap:clap_complete", "<_ as crate::engine::custom::ValueCandidates>::candidates", "Argument[self].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_complete", "<_ as crate::engine::custom::ValueCompleter>::complete", "Argument[0]", "Argument[self].Parameter[0]", "value", "dfc-generated"] @@ -54,7 +54,7 @@ extensions: - ["repo:https://github.com/clap-rs/clap:clap_complete", "crate::engine::custom::complete_path", "Argument[1]", "Argument[2]", "taint", "df-generated"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/clap-rs/clap:clap_complete", "::write_complete", "Argument[1]", "log-injection", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_complete", "::write_complete", "Argument[2]", "log-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_complete_nushell.model.yml b/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_complete_nushell.model.yml index 0317e38cc51..121e004b29b 100644 --- a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_complete_nushell.model.yml +++ b/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_complete_nushell.model.yml @@ -2,12 +2,12 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/clap-rs/clap:clap_complete_nushell", "::file_name", "Argument[0]", "ReturnValue", "taint", "df-generated"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/clap-rs/clap:clap_complete_nushell", "crate::has_command", "Argument[0]", "log-injection", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_complete_nushell", "crate::register_example", "Argument[0]", "log-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_derive.model.yml b/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_derive.model.yml index d64c2819841..4cb827d0845 100644 --- a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_derive.model.yml +++ b/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_derive.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/clap-rs/clap:clap_derive", "::lit_str_or_abort", "Argument[self].Field[clap_derive::attr::ClapAttr::value].Field[core::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_derive", "::value_or_abort", "Argument[self].Field[clap_derive::attr::ClapAttr::value].Field[core::option::Option::Some(0)]", "ReturnValue.Field[core::result::Result::Ok(0)].Reference", "value", "dfc-generated"] @@ -49,7 +49,7 @@ extensions: - ["repo:https://github.com/clap-rs/clap:clap_derive", "crate::utils::ty::inner_type", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/clap-rs/clap:clap_derive", "::action", "Argument[self]", "pointer-access", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_derive", "::value_parser", "Argument[self]", "pointer-access", "df-generated"] diff --git a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_lex.model.yml b/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_lex.model.yml index a17d15e7ffe..75135d83ba0 100644 --- a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_lex.model.yml +++ b/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_lex.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/clap-rs/clap:clap_lex", "::to_value", "Argument[self].Field[clap_lex::ParsedArg::inner]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_lex", "::to_value_os", "Argument[self].Field[clap_lex::ParsedArg::inner]", "ReturnValue", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_mangen.model.yml b/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_mangen.model.yml index 4dea11c285c..2eaf737de22 100644 --- a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_mangen.model.yml +++ b/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_mangen.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/clap-rs/clap:clap_mangen", "::date", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_mangen", "::generate_to", "Argument[self]", "ReturnValue", "taint", "df-generated"] @@ -14,6 +14,6 @@ extensions: - ["repo:https://github.com/clap-rs/clap:clap_mangen", "::title", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/clap-rs/clap:clap_mangen", "::generate_to", "Argument[self]", "path-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/hyper/repo-https-github.com-hyperium-hyper-hyper.model.yml b/rust/ql/lib/ext/generated/hyper/repo-https-github.com-hyperium-hyper-hyper.model.yml index b2611218ec5..ffc0033a152 100644 --- a/rust/ql/lib/ext/generated/hyper/repo-https-github.com-hyperium-hyper-hyper.model.yml +++ b/rust/ql/lib/ext/generated/hyper/repo-https-github.com-hyperium-hyper-hyper.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/hyperium/hyper:hyper", "<_ as crate::ffi::task::IntoDynTaskType>::into_dyn_task_type", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::read", "Argument[self]", "Argument[0]", "taint", "df-generated"] @@ -296,7 +296,7 @@ extensions: - ["repo:https://github.com/hyperium/hyper:hyper", "crate::service::util::service_fn", "Argument[0]", "ReturnValue.Field[hyper::service::util::ServiceFn::f]", "value", "dfc-generated"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/hyperium/hyper:hyper", "::push", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::check", "Argument[1]", "log-injection", "df-generated"] @@ -315,7 +315,7 @@ extensions: - ["repo:https://github.com/hyperium/hyper:hyper", "crate::proto::h2::ping::channel", "Argument[1]", "pointer-access", "df-generated"] - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - ["repo:https://github.com/hyperium/hyper:hyper", "crate::ffi::body::hyper_buf_bytes", "ReturnValue", "pointer-invalidate", "df-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "crate::ffi::http_types::hyper_response_reason_phrase", "ReturnValue", "pointer-invalidate", "df-generated"] diff --git a/rust/ql/lib/ext/generated/libc/repo-https-github.com-rust-lang-libc-libc-test.model.yml b/rust/ql/lib/ext/generated/libc/repo-https-github.com-rust-lang-libc-libc-test.model.yml index 69a5e7acf60..06195f8df2e 100644 --- a/rust/ql/lib/ext/generated/libc/repo-https-github.com-rust-lang-libc-libc-test.model.yml +++ b/rust/ql/lib/ext/generated/libc/repo-https-github.com-rust-lang-libc-libc-test.model.yml @@ -2,18 +2,18 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/rust-lang/libc:libc-test", "::check_file", "Argument[0].Field[alloc::borrow::Cow::Owned(0)]", "Argument[self].Field[style::style::StyleChecker::path].Field[style_tests::style::StyleChecker::path]", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/libc:libc-test", "::check_file", "Argument[0]", "Argument[self].Field[style::style::StyleChecker::path].Field[style_tests::style::StyleChecker::path].Field[std::path::PathBuf::inner]", "value", "dfc-generated"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/rust-lang/libc:libc-test", "::check_file", "Argument[0]", "path-injection", "df-generated"] - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - ["repo:https://github.com/rust-lang/libc:libc-test", "::check_file", "ReturnValue", "file", "df-generated"] - ["repo:https://github.com/rust-lang/libc:libc-test", "::finalize", "ReturnValue", "file", "df-generated"] diff --git a/rust/ql/lib/ext/generated/libc/repo-https-github.com-rust-lang-libc-libc.model.yml b/rust/ql/lib/ext/generated/libc/repo-https-github.com-rust-lang-libc-libc.model.yml index 79aad409395..132aac67b73 100644 --- a/rust/ql/lib/ext/generated/libc/repo-https-github.com-rust-lang-libc-libc.model.yml +++ b/rust/ql/lib/ext/generated/libc/repo-https-github.com-rust-lang-libc-libc.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/rust-lang/libc:libc", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/libc:libc", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/log/repo-https-github.com-rust-lang-log-log.model.yml b/rust/ql/lib/ext/generated/log/repo-https-github.com-rust-lang-log-log.model.yml index 95ec87d32e5..21e059fa1c8 100644 --- a/rust/ql/lib/ext/generated/log/repo-https-github.com-rust-lang-log-log.model.yml +++ b/rust/ql/lib/ext/generated/log/repo-https-github.com-rust-lang-log-log.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/rust-lang/log:log", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rust-lang/log:log", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] @@ -62,7 +62,7 @@ extensions: - ["repo:https://github.com/rust-lang/log:log", "::to_key", "Argument[self]", "ReturnValue.Field[log::kv::key::Key::key]", "value", "dfc-generated"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/rust-lang/log:log", "::file", "Argument[self]", "pointer-access", "df-generated"] - ["repo:https://github.com/rust-lang/log:log", "::module_path", "Argument[self]", "pointer-access", "df-generated"] diff --git a/rust/ql/lib/ext/generated/memchr/repo-https-github.com-BurntSushi-memchr-memchr.model.yml b/rust/ql/lib/ext/generated/memchr/repo-https-github.com-BurntSushi-memchr-memchr.model.yml index 6b3e0f5cdb7..dd487b23533 100644 --- a/rust/ql/lib/ext/generated/memchr/repo-https-github.com-BurntSushi-memchr-memchr.model.yml +++ b/rust/ql/lib/ext/generated/memchr/repo-https-github.com-BurntSushi-memchr-memchr.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find_raw", "Argument[0]", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] @@ -181,7 +181,7 @@ extensions: - ["repo:https://github.com/BurntSushi/memchr:memchr", "crate::tests::substring::prop::suffix_is_substring", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find_prefilter", "Argument[self]", "log-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/once_cell/repo-https-github.com-matklad-once_cell-once_cell.model.yml b/rust/ql/lib/ext/generated/once_cell/repo-https-github.com-matklad-once_cell-once_cell.model.yml index e114e6d60f2..aedeac45465 100644 --- a/rust/ql/lib/ext/generated/once_cell/repo-https-github.com-matklad-once_cell-once_cell.model.yml +++ b/rust/ql/lib/ext/generated/once_cell/repo-https-github.com-matklad-once_cell-once_cell.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/matklad/once_cell:once_cell", "::into_inner", "Argument[self].Field[once_cell::imp::OnceCell::value].Field[core::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/matklad/once_cell:once_cell", "::get_or_init", "Argument[0]", "ReturnValue", "taint", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rand/repo-benches.model.yml b/rust/ql/lib/ext/generated/rand/repo-benches.model.yml index ca719926385..aef54ca39c7 100644 --- a/rust/ql/lib/ext/generated/rand/repo-benches.model.yml +++ b/rust/ql/lib/ext/generated/rand/repo-benches.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo::benches", "::next", "Argument[self].Field[seq_choose::UnhintedIterator::iter].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo::benches", "::next", "Argument[self].Field[seq_choose::WindowHintedIterator::iter].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rand/repo-https-github.com-rust-random-rand-rand.model.yml b/rust/ql/lib/ext/generated/rand/repo-https-github.com-rust-random-rand-rand.model.yml index a446f65bfc6..c7061767df7 100644 --- a/rust/ql/lib/ext/generated/rand/repo-https-github.com-rust-random-rand-rand.model.yml +++ b/rust/ql/lib/ext/generated/rand/repo-https-github.com-rust-random-rand-rand.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/rust-random/rand:rand", "<&_ as crate::distr::uniform::SampleBorrow>::borrow", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rust-random/rand:rand", "<_ as crate::distr::uniform::SampleBorrow>::borrow", "Argument[self]", "ReturnValue", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rand/repo-https-github.com-rust-random-rand-rand_chacha.model.yml b/rust/ql/lib/ext/generated/rand/repo-https-github.com-rust-random-rand-rand_chacha.model.yml index 81d9ba8532e..0763fc5c4a1 100644 --- a/rust/ql/lib/ext/generated/rand/repo-https-github.com-rust-random-rand-rand_chacha.model.yml +++ b/rust/ql/lib/ext/generated/rand/repo-https-github.com-rust-random-rand-rand_chacha.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/rust-random/rand:rand_chacha", "::as_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rust-random/rand:rand_chacha", "::as_mut", "Argument[self].Field[rand_chacha::chacha::Array64(0)]", "ReturnValue.Reference", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rand/repo-https-github.com-rust-random-rand-rand_core.model.yml b/rust/ql/lib/ext/generated/rand/repo-https-github.com-rust-random-rand-rand_core.model.yml index b83d3947dec..3ec8b3dc024 100644 --- a/rust/ql/lib/ext/generated/rand/repo-https-github.com-rust-random-rand-rand_core.model.yml +++ b/rust/ql/lib/ext/generated/rand/repo-https-github.com-rust-random-rand-rand_core.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/rust-random/rand:rand_core", "::re", "Argument[self].Field[0]", "ReturnValue.Field[rand_core::UnwrapMut(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rust-random/rand:rand_core", "::re", "Argument[self].Field[rand_core::UnwrapMut(0)]", "ReturnValue.Field[rand_core::UnwrapMut(0)]", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rand/repo-https-github.com-rust-random-rand-rand_pcg.model.yml b/rust/ql/lib/ext/generated/rand/repo-https-github.com-rust-random-rand-rand_pcg.model.yml index f3d3857fafd..f2f0fe4667e 100644 --- a/rust/ql/lib/ext/generated/rand/repo-https-github.com-rust-random-rand-rand_pcg.model.yml +++ b/rust/ql/lib/ext/generated/rand/repo-https-github.com-rust-random-rand-rand_pcg.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/rust-random/rand:rand_pcg", "::new", "Argument[0]", "ReturnValue.Field[rand_pcg::pcg128::Lcg128Xsl64::state]", "value", "dfc-generated"] - ["repo:https://github.com/rust-random/rand:rand_pcg", "::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] diff --git a/rust/ql/lib/ext/generated/reqwest/repo-https-github.com-seanmonstar-reqwest-reqwest.model.yml b/rust/ql/lib/ext/generated/reqwest/repo-https-github.com-seanmonstar-reqwest-reqwest.model.yml index 7a155beb8e2..ee4af61e5c3 100644 --- a/rust/ql/lib/ext/generated/reqwest/repo-https-github.com-seanmonstar-reqwest-reqwest.model.yml +++ b/rust/ql/lib/ext/generated/reqwest/repo-https-github.com-seanmonstar-reqwest-reqwest.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "<&str as crate::into_url::IntoUrlSealed>::as_str", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::into_url", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] @@ -444,7 +444,7 @@ extensions: - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "crate::error::cast_to_internal_error", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::delete", "Argument[0]", "transmission", "df-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::get", "Argument[0]", "transmission", "df-generated"] @@ -479,7 +479,7 @@ extensions: - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "crate::get", "Argument[0]", "transmission", "df-generated"] - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::file", "ReturnValue", "file", "df-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::file", "ReturnValue", "file", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rocket/repo-cookies.model.yml b/rust/ql/lib/ext/generated/rocket/repo-cookies.model.yml index f9148a8e630..42653daa4cc 100644 --- a/rust/ql/lib/ext/generated/rocket/repo-cookies.model.yml +++ b/rust/ql/lib/ext/generated/rocket/repo-cookies.model.yml @@ -2,6 +2,6 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo::cookies", "::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rocket/repo-fairings.model.yml b/rust/ql/lib/ext/generated/rocket/repo-fairings.model.yml index b5d6fb686d5..8efd6aecaa0 100644 --- a/rust/ql/lib/ext/generated/rocket/repo-fairings.model.yml +++ b/rust/ql/lib/ext/generated/rocket/repo-fairings.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo::fairings", "::on_ignite", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo::fairings", "::on_ignite", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-rocket.model.yml b/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-rocket.model.yml index 87873634e1d..72ea2d607b5 100644 --- a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-rocket.model.yml +++ b/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-rocket.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/rwf2/Rocket:rocket", "<&[u8] as crate::data::from_data::FromData>::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "<&[u8] as crate::data::from_data::FromData>::from_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] @@ -633,7 +633,7 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket", "crate::prepend", "Argument[1]", "ReturnValue", "value", "dfc-generated"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/rwf2/Rocket:rocket", "::signal_stream", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::poll_read", "Argument[1]", "log-injection", "df-generated"] @@ -653,7 +653,7 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket", "::respond_to", "Argument[self]", "log-injection", "df-generated"] - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - ["repo:https://github.com/rwf2/Rocket:rocket", "::open", "ReturnValue", "file", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::open", "ReturnValue", "file", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-rocket_codegen.model.yml b/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-rocket_codegen.model.yml index 123c9feaa28..cb2474f1381 100644 --- a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-rocket_codegen.model.yml +++ b/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-rocket_codegen.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::with_span", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] @@ -68,7 +68,7 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "crate::derive::form_field::first_duplicate", "Argument[0].Element", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::from", "Argument[0]", "pointer-access", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::into_owned", "Argument[self]", "pointer-access", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-rocket_http.model.yml b/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-rocket_http.model.yml index 51d91f1c490..41bfa8fa2e8 100644 --- a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-rocket_http.model.yml +++ b/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-rocket_http.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/rwf2/Rocket:rocket_http", "<&[u8] as crate::uri::fmt::from_uri_param::FromUriParam>::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "<&crate::path::Path as crate::uri::fmt::from_uri_param::FromUriParam>::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] @@ -252,7 +252,7 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket_http", "crate::uri::uri::as_utf8_unchecked", "Argument[0].Field[alloc::borrow::Cow::Owned(0)]", "ReturnValue.Field[alloc::borrow::Cow::Owned(0)].Field[alloc::string::String::vec]", "value", "dfc-generated"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::into_owned", "Argument[self]", "pointer-access", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from_uri_param", "Argument[0]", "pointer-access", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-tree-v0.5-contrib-db_pools-rocket_db_pools.model.yml b/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-tree-v0.5-contrib-db_pools-rocket_db_pools.model.yml index 25107fb8419..645daf7bc3a 100644 --- a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-tree-v0.5-contrib-db_pools-rocket_db_pools.model.yml +++ b/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-tree-v0.5-contrib-db_pools-rocket_db_pools.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/db_pools:rocket_db_pools", "::close", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/db_pools:rocket_db_pools", "::get", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-tree-v0.5-contrib-dyn_templates-rocket_dyn_templates.model.yml b/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-tree-v0.5-contrib-dyn_templates-rocket_dyn_templates.model.yml index 60648bc4d50..3a9898ed61c 100644 --- a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-tree-v0.5-contrib-dyn_templates-rocket_dyn_templates.model.yml +++ b/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-tree-v0.5-contrib-dyn_templates-rocket_dyn_templates.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/dyn_templates:rocket_dyn_templates", "::context", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/dyn_templates:rocket_dyn_templates", "::context", "Argument[self].Field[rocket_dyn_templates::context::manager::ContextManager(0)]", "ReturnValue.Reference", "value", "dfc-generated"] @@ -16,7 +16,7 @@ extensions: - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/dyn_templates:rocket_dyn_templates", "::try_custom", "Argument[0]", "ReturnValue.Field[rocket_dyn_templates::fairing::TemplateFairing::callback].Reference", "value", "dfc-generated"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/dyn_templates:rocket_dyn_templates", "::render", "Argument[0]", "log-injection", "df-generated"] - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/dyn_templates:rocket_dyn_templates", "::render", "Argument[self]", "log-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-tree-v0.5-contrib-sync_db_pools-rocket_sync_db_pools.model.yml b/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-tree-v0.5-contrib-sync_db_pools-rocket_sync_db_pools.model.yml index 1103fe4e9da..3be0817549c 100644 --- a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-tree-v0.5-contrib-sync_db_pools-rocket_sync_db_pools.model.yml +++ b/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-tree-v0.5-contrib-sync_db_pools-rocket_sync_db_pools.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/sync_db_pools:rocket_sync_db_pools", "::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/sync_db_pools:rocket_sync_db_pools", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-tree-v0.5-contrib-ws-rocket_ws.model.yml b/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-tree-v0.5-contrib-ws-rocket_ws.model.yml index b01bf55628e..3adef7bbff1 100644 --- a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-tree-v0.5-contrib-ws-rocket_ws.model.yml +++ b/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-tree-v0.5-contrib-ws-rocket_ws.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/ws:rocket_ws", "::io", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/ws:rocket_ws", "::io", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rocket/repo-manual_routes.model.yml b/rust/ql/lib/ext/generated/rocket/repo-manual_routes.model.yml index cbefe026a95..810332d85c4 100644 --- a/rust/ql/lib/ext/generated/rocket/repo-manual_routes.model.yml +++ b/rust/ql/lib/ext/generated/rocket/repo-manual_routes.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo::manual_routes", "::handle", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo::manual_routes", "::handle", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rocket/repo-pastebin.model.yml b/rust/ql/lib/ext/generated/rocket/repo-pastebin.model.yml index 380631de467..2273ec8865f 100644 --- a/rust/ql/lib/ext/generated/rocket/repo-pastebin.model.yml +++ b/rust/ql/lib/ext/generated/rocket/repo-pastebin.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo::pastebin", "::from_param", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] - ["repo::pastebin", "::file_path", "Argument[self]", "ReturnValue", "taint", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rocket/repo-state.model.yml b/rust/ql/lib/ext/generated/rocket/repo-state.model.yml index eb0be86bc6e..da36bfd4540 100644 --- a/rust/ql/lib/ext/generated/rocket/repo-state.model.yml +++ b/rust/ql/lib/ext/generated/rocket/repo-state.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo::state", "::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo::state", "::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rocket/repo-static-files.model.yml b/rust/ql/lib/ext/generated/rocket/repo-static-files.model.yml index 68eee7cfaf4..dfee6398949 100644 --- a/rust/ql/lib/ext/generated/rocket/repo-static-files.model.yml +++ b/rust/ql/lib/ext/generated/rocket/repo-static-files.model.yml @@ -2,6 +2,6 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo::static-files", "crate::manual::second", "Argument[0]", "path-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rocket/repo-tls.model.yml b/rust/ql/lib/ext/generated/rocket/repo-tls.model.yml index 58bd32ded9e..d42f3c7d40a 100644 --- a/rust/ql/lib/ext/generated/rocket/repo-tls.model.yml +++ b/rust/ql/lib/ext/generated/rocket/repo-tls.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo::tls", "::on_liftoff", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo::tls", "::on_liftoff", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rocket/repo-todo.model.yml b/rust/ql/lib/ext/generated/rocket/repo-todo.model.yml index 839cab64a06..756697d8ea7 100644 --- a/rust/ql/lib/ext/generated/rocket/repo-todo.model.yml +++ b/rust/ql/lib/ext/generated/rocket/repo-todo.model.yml @@ -2,6 +2,6 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo::todo", "::raw", "Argument[1]", "ReturnValue.Field[todo::Context::flash]", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rust/lang-alloc.model.yml b/rust/ql/lib/ext/generated/rust/lang-alloc.model.yml index 8d51b23787c..464878585a8 100644 --- a/rust/ql/lib/ext/generated/rust/lang-alloc.model.yml +++ b/rust/ql/lib/ext/generated/rust/lang-alloc.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["lang:alloc", "<&&str as crate::string::SpecToString>::spec_to_string", "Argument[self].Reference.Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "<&crate::collections::btree::map::BTreeMap as crate::iter::traits::collect::IntoIterator>::into_iter", "Argument[self].Field[alloc::collections::btree::map::BTreeMap::length]", "ReturnValue.Field[alloc::collections::btree::map::Iter::length]", "value", "dfc-generated"] @@ -567,7 +567,7 @@ extensions: - ["lang:alloc", "crate::str::convert_while_ascii", "Argument[0]", "Argument[1]", "taint", "df-generated"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["lang:alloc", "<[_]>::sort", "Argument[self]", "pointer-access", "df-generated"] - ["lang:alloc", "<[_]>::sort_by", "Argument[self]", "pointer-access", "df-generated"] @@ -703,6 +703,6 @@ extensions: - ["lang:alloc", "crate::collections::btree::mem::take_mut", "Argument[0]", "pointer-access", "df-generated"] - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - ["lang:alloc", "::drop", "Argument[self]", "pointer-invalidate", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rust/lang-core.model.yml b/rust/ql/lib/ext/generated/rust/lang-core.model.yml index 207ad64f963..f08c7469e55 100644 --- a/rust/ql/lib/ext/generated/rust/lang-core.model.yml +++ b/rust/ql/lib/ext/generated/rust/lang-core.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["lang:core", "<&_ as crate::borrow::Borrow>::borrow", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "<&_ as crate::clone::Clone>::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] @@ -3162,7 +3162,7 @@ extensions: - ["lang:core", "crate::str::validations::next_code_point", "Argument[0].Element", "ReturnValue", "value", "dfc-generated"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["lang:core", "<[_]>::select_nth_unstable", "Argument[0]", "log-injection", "df-generated"] - ["lang:core", "<[_]>::select_nth_unstable_by", "Argument[0]", "log-injection", "df-generated"] @@ -3192,7 +3192,7 @@ extensions: - ["lang:core", "crate::slice::sort::stable::sort", "Argument[0]", "pointer-access", "df-generated"] - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - ["lang:core", "<[crate::mem::maybe_uninit::MaybeUninit]>::assume_init_drop", "Argument[self]", "pointer-invalidate", "df-generated"] - ["lang:core", "crate::intrinsics::drop_in_place", "Argument[0]", "pointer-invalidate", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rust/lang-other.model.yml b/rust/ql/lib/ext/generated/rust/lang-other.model.yml index 5c88c935851..9966c5313e5 100644 --- a/rust/ql/lib/ext/generated/rust/lang-other.model.yml +++ b/rust/ql/lib/ext/generated/rust/lang-other.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["lang:other", "::set", "Argument[0]", "Argument[self]", "taint", "df-generated"] - ["lang:other", "::unset", "Argument[0]", "Argument[self]", "taint", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rust/lang-proc_macro.model.yml b/rust/ql/lib/ext/generated/rust/lang-proc_macro.model.yml index 6dd0043d3f7..e8a9ec56f28 100644 --- a/rust/ql/lib/ext/generated/rust/lang-proc_macro.model.yml +++ b/rust/ql/lib/ext/generated/rust/lang-proc_macro.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["lang:proc_macro", "<&[u8] as crate::bridge::Mark>::mark", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:proc_macro", "<&[u8] as crate::bridge::Unmark>::unmark", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -128,7 +128,7 @@ extensions: - ["lang:proc_macro", "crate::bridge::client::state::with", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["lang:proc_macro", "::new", "Argument[0]", "log-injection", "df-generated"] - ["lang:proc_macro", "::new_raw", "Argument[0]", "log-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rust/lang-std.model.yml b/rust/ql/lib/ext/generated/rust/lang-std.model.yml index 8d1c891f932..7050005e8d1 100644 --- a/rust/ql/lib/ext/generated/rust/lang-std.model.yml +++ b/rust/ql/lib/ext/generated/rust/lang-std.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["lang:std", "<&[u8] as crate::io::BufRead>::consume", "Argument[self].Element", "Argument[self].Reference.Reference", "value", "dfc-generated"] - ["lang:std", "<&[u8] as crate::io::BufRead>::fill_buf", "Argument[self].Reference", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] @@ -742,7 +742,7 @@ extensions: - ["lang:std", "crate::thread::with_current_name", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["lang:std", "<&crate::io::stdio::Stderr as crate::io::Write>::write", "Argument[0]", "log-injection", "df-generated"] - ["lang:std", "<&crate::io::stdio::Stderr as crate::io::Write>::write_all", "Argument[0]", "log-injection", "df-generated"] @@ -805,7 +805,7 @@ extensions: - ["lang:std", "crate::sys_common::wtf8::slice_error_fail", "Argument[2]", "log-injection", "df-generated"] - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - ["lang:std", "::dealloc", "Argument[0]", "pointer-invalidate", "df-generated"] - ["lang:std", "::open_buffered", "ReturnValue", "file", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rust/repo-dylib-dep.model.yml b/rust/ql/lib/ext/generated/rust/repo-dylib-dep.model.yml index 38b672c31b2..426b1765346 100644 --- a/rust/ql/lib/ext/generated/rust/repo-dylib-dep.model.yml +++ b/rust/ql/lib/ext/generated/rust/repo-dylib-dep.model.yml @@ -2,6 +2,6 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo::dylib-dep", "crate::foo", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rust/repo-https-github.com-rust-lang-backtrace-rs-backtrace.model.yml b/rust/ql/lib/ext/generated/rust/repo-https-github.com-rust-lang-backtrace-rs-backtrace.model.yml index 3be680a3b41..db50a4bd3f0 100644 --- a/rust/ql/lib/ext/generated/rust/repo-https-github.com-rust-lang-backtrace-rs-backtrace.model.yml +++ b/rust/ql/lib/ext/generated/rust/repo-https-github.com-rust-lang-backtrace-rs-backtrace.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::sp", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::clone", "Argument[self].Reference.Field[as_if_std::the_backtrace_crate::backtrace::libunwind::Frame::Cloned::sp].Field[backtrace::backtrace::libunwind::Frame::Cloned::sp].Field[std::backtrace_rs::backtrace::libunwind::Frame::Cloned::sp]", "ReturnValue.Field[as_if_std::the_backtrace_crate::backtrace::libunwind::Frame::Cloned::sp].Field[backtrace::backtrace::libunwind::Frame::Cloned::sp].Field[std::backtrace_rs::backtrace::libunwind::Frame::Cloned::sp]", "value", "dfc-generated"] @@ -31,12 +31,12 @@ extensions: - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "crate::symbolize::gimli::elf::handle_split_dwarf", "Argument[2]", "ReturnValue", "taint", "df-generated"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::new", "Argument[0]", "path-injection", "df-generated"] - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::new", "ReturnValue", "file", "df-generated"] - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "crate::symbolize::gimli::parse_running_mmaps::parse_maps", "ReturnValue", "file", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rust/repo-https-github.com-rust-lang-portable-simd-core_simd.model.yml b/rust/ql/lib/ext/generated/rust/repo-https-github.com-rust-lang-portable-simd-core_simd.model.yml index 4cff3c93029..7a6434f57a8 100644 --- a/rust/ql/lib/ext/generated/rust/repo-https-github.com-rust-lang-portable-simd-core_simd.model.yml +++ b/rust/ql/lib/ext/generated/rust/repo-https-github.com-rust-lang-portable-simd-core_simd.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rust/repo-https-github.com-rust-lang-stdarch-core_arch.model.yml b/rust/ql/lib/ext/generated/rust/repo-https-github.com-rust-lang-stdarch-core_arch.model.yml index d4a10cbcbd9..c12588236ef 100644 --- a/rust/ql/lib/ext/generated/rust/repo-https-github.com-rust-lang-stdarch-core_arch.model.yml +++ b/rust/ql/lib/ext/generated/rust/repo-https-github.com-rust-lang-stdarch-core_arch.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[core::core_arch::simd::f16x16(0)].Field[core_arch::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] @@ -1132,7 +1132,7 @@ extensions: - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86_64::tbm::_tzmsk_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_load_mask32", "Argument[0]", "pointer-access", "df-generated"] - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_load_mask64", "Argument[0]", "pointer-access", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rust/repo-intrinsic-test.model.yml b/rust/ql/lib/ext/generated/rust/repo-intrinsic-test.model.yml index 5fa5019e302..87535d51b1f 100644 --- a/rust/ql/lib/ext/generated/rust/repo-intrinsic-test.model.yml +++ b/rust/ql/lib/ext/generated/rust/repo-intrinsic-test.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo::intrinsic-test", "::from_c", "Argument[0]", "ReturnValue.Field[intrinsic-test::argument::Argument::pos]", "value", "dfc-generated"] - ["repo::intrinsic-test", "::from_c", "Argument[1].Element", "ReturnValue.Field[intrinsic-test::argument::Argument::name].Reference", "value", "dfc-generated"] @@ -29,7 +29,7 @@ extensions: - ["repo::intrinsic-test", "::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo::intrinsic-test", "::from_c", "Argument[1]", "log-injection", "df-generated"] - ["repo::intrinsic-test", "::generate_loop_c", "Argument[self]", "log-injection", "df-generated"] @@ -47,6 +47,6 @@ extensions: - ["repo::intrinsic-test", "crate::values::value_for_array", "Argument[0]", "log-injection", "df-generated"] - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - ["repo::intrinsic-test", "crate::json_parser::get_neon_intrinsics", "ReturnValue", "file", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rust/repo-std_float.model.yml b/rust/ql/lib/ext/generated/rust/repo-std_float.model.yml index 8f7ea31908d..92150d0d52c 100644 --- a/rust/ql/lib/ext/generated/rust/repo-std_float.model.yml +++ b/rust/ql/lib/ext/generated/rust/repo-std_float.model.yml @@ -2,6 +2,6 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo::std_float", "::fract", "Argument[self]", "ReturnValue", "taint", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rust/repo-stdarch-gen-arm.model.yml b/rust/ql/lib/ext/generated/rust/repo-stdarch-gen-arm.model.yml index 6761c2a79bf..fa28fd6eb4c 100644 --- a/rust/ql/lib/ext/generated/rust/repo-stdarch-gen-arm.model.yml +++ b/rust/ql/lib/ext/generated/rust/repo-stdarch-gen-arm.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo::stdarch-gen-arm", "::make_assertion_from_constraint", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo::stdarch-gen-arm", "::make_assertion_from_constraint", "Argument[self]", "ReturnValue", "taint", "df-generated"] @@ -69,7 +69,7 @@ extensions: - ["repo::stdarch-gen-arm", "crate::fn_suffix::make_neon_suffix", "Argument[0]", "ReturnValue", "taint", "df-generated"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo::stdarch-gen-arm", "::to_tokens", "Argument[self]", "log-injection", "df-generated"] - ["repo::stdarch-gen-arm", "::to_tokens", "Argument[self]", "log-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rust/repo-stdarch-gen-loongarch.model.yml b/rust/ql/lib/ext/generated/rust/repo-stdarch-gen-loongarch.model.yml index 845be275385..691d36638ab 100644 --- a/rust/ql/lib/ext/generated/rust/repo-stdarch-gen-loongarch.model.yml +++ b/rust/ql/lib/ext/generated/rust/repo-stdarch-gen-loongarch.model.yml @@ -2,6 +2,6 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo::stdarch-gen-loongarch", "::from", "Argument[0]", "ReturnValue.Field[stdarch-gen-loongarch::Lines::lines]", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rust/repo-stdarch-test.model.yml b/rust/ql/lib/ext/generated/rust/repo-stdarch-test.model.yml index 25fa198710e..bbe62b0a4aa 100644 --- a/rust/ql/lib/ext/generated/rust/repo-stdarch-test.model.yml +++ b/rust/ql/lib/ext/generated/rust/repo-stdarch-test.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo::stdarch-test", "crate::assert", "Argument[1]", "log-injection", "df-generated"] - ["repo::stdarch-test", "crate::assert", "Argument[2]", "log-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rust/repo-stdarch_examples.model.yml b/rust/ql/lib/ext/generated/rust/repo-stdarch_examples.model.yml index 77f55ca022e..f7a10c66502 100644 --- a/rust/ql/lib/ext/generated/rust/repo-stdarch_examples.model.yml +++ b/rust/ql/lib/ext/generated/rust/repo-stdarch_examples.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo::stdarch_examples", "::add", "Argument[0]", "Argument[self].Field[connect5::List::p_move].Element", "value", "dfc-generated"] - ["repo::stdarch_examples", "::size", "Argument[self].Field[connect5::List::p_size]", "ReturnValue", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rust/repo-test_helpers.model.yml b/rust/ql/lib/ext/generated/rust/repo-test_helpers.model.yml index 52e8630e702..d39494b8a36 100644 --- a/rust/ql/lib/ext/generated/rust/repo-test_helpers.model.yml +++ b/rust/ql/lib/ext/generated/rust/repo-test_helpers.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo::test_helpers", "::simplify", "Argument[self].Field[test_helpers::array::ArrayValueTree::shrinker]", "Argument[self].Field[test_helpers::array::ArrayValueTree::last_shrinker].Field[core::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo::test_helpers", "::new", "Argument[0]", "ReturnValue.Field[test_helpers::array::UniformArrayStrategy::strategy]", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/serde/repo-https-github.com-serde-rs-serde-serde.model.yml b/rust/ql/lib/ext/generated/serde/repo-https-github.com-serde-rs-serde-serde.model.yml index e58b5f3f1a3..75c62ab3cc0 100644 --- a/rust/ql/lib/ext/generated/serde/repo-https-github.com-serde-rs-serde-serde.model.yml +++ b/rust/ql/lib/ext/generated/serde/repo-https-github.com-serde-rs-serde-serde.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/serde-rs/serde:serde", "<&[u8] as crate::__private::de::IdentifierDeserializer>::from", "Argument[self]", "ReturnValue.Field[serde::de::value::BytesDeserializer::value]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "<&[u8] as crate::de::IntoDeserializer>::into_deserializer", "Argument[self]", "ReturnValue.Field[serde::de::value::BytesDeserializer::value]", "value", "dfc-generated"] @@ -216,6 +216,6 @@ extensions: - ["repo:https://github.com/serde-rs/serde:serde", "crate::de::value::private::unit_only", "Argument[0]", "ReturnValue.Field[0]", "value", "dfc-generated"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/serde-rs/serde:serde", "::serialize_map", "Argument[0]", "pointer-access", "df-generated"] diff --git a/rust/ql/lib/ext/generated/serde/repo-https-github.com-serde-rs-serde-serde_derive.model.yml b/rust/ql/lib/ext/generated/serde/repo-https-github.com-serde-rs-serde-serde_derive.model.yml index e17e342a26c..2c97f209b9f 100644 --- a/rust/ql/lib/ext/generated/serde/repo-https-github.com-serde-rs-serde-serde_derive.model.yml +++ b/rust/ql/lib/ext/generated/serde/repo-https-github.com-serde-rs-serde-serde_derive.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/serde-rs/serde:serde_derive", "::as_ref", "Argument[self].Field[serde_derive::fragment::Fragment::Block(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::as_ref", "Argument[self].Field[serde_derive::fragment::Fragment::Expr(0)]", "ReturnValue", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/serde/repo-serde_test_suite.model.yml b/rust/ql/lib/ext/generated/serde/repo-serde_test_suite.model.yml index a2ddcdc6bea..4405cf828e8 100644 --- a/rust/ql/lib/ext/generated/serde/repo-serde_test_suite.model.yml +++ b/rust/ql/lib/ext/generated/serde/repo-serde_test_suite.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo::serde_test_suite", "::variant_seed", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[1]", "value", "dfc-generated"] - ["repo::serde_test_suite", "::visit_byte_buf", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/smallvec/repo-https-github.com-servo-rust-smallvec-smallvec.model.yml b/rust/ql/lib/ext/generated/smallvec/repo-https-github.com-servo-rust-smallvec-smallvec.model.yml index 14b626f34ac..48ffb1bfe44 100644 --- a/rust/ql/lib/ext/generated/smallvec/repo-https-github.com-servo-rust-smallvec-smallvec.model.yml +++ b/rust/ql/lib/ext/generated/smallvec/repo-https-github.com-servo-rust-smallvec-smallvec.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] @@ -40,7 +40,7 @@ extensions: - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::size_hint", "Argument[self].Field[smallvec::tests::insert_many_panic::BadIter::hint]", "ReturnValue.Field[0]", "value", "dfc-generated"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::into_inner", "Argument[self]", "pointer-access", "df-generated"] - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::insert", "Argument[0]", "log-injection", "df-generated"] @@ -49,6 +49,6 @@ extensions: - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::remove", "Argument[self]", "log-injection", "df-generated"] - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::drop", "Argument[self]", "pointer-invalidate", "df-generated"] diff --git a/rust/ql/lib/ext/generated/tokio/repo-benches.model.yml b/rust/ql/lib/ext/generated/tokio/repo-benches.model.yml index d371cb1ae58..16d65ece86d 100644 --- a/rust/ql/lib/ext/generated/tokio/repo-benches.model.yml +++ b/rust/ql/lib/ext/generated/tokio/repo-benches.model.yml @@ -2,6 +2,6 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo::benches", "::poll_read", "Argument[1]", "log-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/tokio/repo-examples.model.yml b/rust/ql/lib/ext/generated/tokio/repo-examples.model.yml index 6ad582e06bf..e06ff8659f5 100644 --- a/rust/ql/lib/ext/generated/tokio/repo-examples.model.yml +++ b/rust/ql/lib/ext/generated/tokio/repo-examples.model.yml @@ -2,6 +2,6 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - ["repo::examples", "crate::connect", "ReturnValue", "remote", "df-generated"] diff --git a/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-macros.model.yml b/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-macros.model.yml index d75cefcd1eb..cee63758be2 100644 --- a/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-macros.model.yml +++ b/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-macros.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/tokio-rs/tokio:tokio-macros", "crate::entry::main", "Argument[1]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-macros", "crate::entry::test", "Argument[1]", "ReturnValue", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-stream.model.yml b/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-stream.model.yml index f9f600e7247..a24ca2465d5 100644 --- a/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-stream.model.yml +++ b/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-stream.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::extend", "Argument[2].Field[core::result::Result::Err(0)]", "Argument[1].Reference.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::into_inner", "Argument[self].Field[tokio_stream::stream_close::StreamNotifyClose::inner]", "ReturnValue", "value", "dfc-generated"] @@ -185,7 +185,7 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "crate::stream_ext::throttle::throttle", "Argument[1]", "ReturnValue.Field[tokio_stream::stream_ext::throttle::Throttle::stream]", "value", "dfc-generated"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::insert", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::poll_next_many", "Argument[self]", "log-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-test.model.yml b/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-test.model.yml index 14735129fb2..caa755b005e 100644 --- a/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-test.model.yml +++ b/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-test.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/tokio-rs/tokio:tokio-test", "::build", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-test", "::name", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -25,7 +25,7 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio-test", "crate::task::spawn", "Argument[0]", "ReturnValue.Field[tokio_test::task::Spawn::future].Reference", "value", "dfc-generated"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/tokio-rs/tokio:tokio-test", "::read", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-test", "::read_error", "Argument[self]", "log-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-util.model.yml b/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-util.model.yml index ff79818fb17..ef0a59f70ac 100644 --- a/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-util.model.yml +++ b/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-util.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::from", "Argument[0]", "ReturnValue.Field[length_delimited::Op::Data(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::max_length", "Argument[self].Field[tokio_util::codec::any_delimiter_codec::AnyDelimiterCodec::max_length]", "ReturnValue", "value", "dfc-generated"] @@ -260,7 +260,7 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::read_buffer_mut", "Argument[self].Field[tokio_util::udp::frame::UdpFramed::rd]", "ReturnValue.Reference", "value", "dfc-generated"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::write", "Argument[0]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::poll_read", "Argument[1]", "log-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio.model.yml b/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio.model.yml index ed506488694..5c27e57efa8 100644 --- a/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio.model.yml +++ b/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio.model.yml @@ -2,7 +2,7 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo:https://github.com/tokio-rs/tokio:tokio", "<&[u8] as crate::io::async_buf_read::AsyncBufRead>::consume", "Argument[self].Element", "Argument[self].Reference.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "<&[u8] as crate::io::async_buf_read::AsyncBufRead>::poll_fill_buf", "Argument[self].Reference", "ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]", "value", "dfc-generated"] @@ -1105,7 +1105,7 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::util::typeid::try_transmute", "Argument[0]", "ReturnValue.Field[core::result::Result::Err(0)]", "value", "dfc-generated"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo:https://github.com/tokio-rs/tokio:tokio", "<&[u8] as crate::io::async_read::AsyncRead>::poll_read", "Argument[1]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::poll_read", "Argument[1]", "log-injection", "df-generated"] @@ -1152,7 +1152,7 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::support::signal::send_signal", "Argument[0]", "log-injection", "df-generated"] - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::file_name", "ReturnValue", "file", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::path", "ReturnValue", "file", "df-generated"] diff --git a/rust/ql/test/library-tests/dataflow/models/models.ext.yml b/rust/ql/test/library-tests/dataflow/models/models.ext.yml index db814cce8f5..ee573b4ef80 100644 --- a/rust/ql/test/library-tests/dataflow/models/models.ext.yml +++ b/rust/ql/test/library-tests/dataflow/models/models.ext.yml @@ -9,14 +9,14 @@ extensions: - ["repo::test", "crate::arg_source", "Argument[0]", "test-source", "manual"] - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo::test", "crate::simple_sink", "Argument[0]", "test-sink", "manual"] - ["repo::test", "crate::enum_sink", "Argument[0].Field[main::MyFieldEnum::C::field_c]", "test-sink", "manual"] - ["repo::test", "::sink", "Argument[self].Field[main::MyFieldEnum::D::field_d]", "test-sink", "manual"] - addsTo: pack: codeql/rust-all - extensible: summaryModel + extensible: summaryModelDeprecated data: - ["repo::test", "crate::coerce", "Argument[0]", "ReturnValue", "taint", "manual"] - ["repo::test", "crate::get_var_pos", "Argument[0].Field[main::MyPosEnum::A(0)]", "ReturnValue", "value", "manual"] diff --git a/rust/ql/test/utils-tests/modelgenerator/CaptureSinkModels.ext.yml b/rust/ql/test/utils-tests/modelgenerator/CaptureSinkModels.ext.yml index bedfe748d19..afb95025f38 100644 --- a/rust/ql/test/utils-tests/modelgenerator/CaptureSinkModels.ext.yml +++ b/rust/ql/test/utils-tests/modelgenerator/CaptureSinkModels.ext.yml @@ -1,6 +1,6 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sinkModel + extensible: sinkModelDeprecated data: - ["repo::test", "crate::sinks::known_sink", "Argument[0]", "test-sink", "manual"] diff --git a/rust/ql/test/utils-tests/modelgenerator/CaptureSourceModels.ext.yml b/rust/ql/test/utils-tests/modelgenerator/CaptureSourceModels.ext.yml index fc82ebd6284..a4ead6e478a 100644 --- a/rust/ql/test/utils-tests/modelgenerator/CaptureSourceModels.ext.yml +++ b/rust/ql/test/utils-tests/modelgenerator/CaptureSourceModels.ext.yml @@ -1,6 +1,6 @@ extensions: - addsTo: pack: codeql/rust-all - extensible: sourceModel + extensible: sourceModelDeprecated data: - ["repo::test", "crate::sources::known_source", "ReturnValue", "test-source", "manual"] From 63379df0042a29587fcc27e815a7711981498998 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Wed, 18 Jun 2025 12:12:04 +0200 Subject: [PATCH 146/150] Rust: Add new MaD format based on QL-computed canonical paths --- .../dataflow/internal/FlowSummaryImpl.qll | 5 + .../rust/dataflow/internal/ModelsAsData.qll | 130 ++++++++++++++++-- .../rust/dataflow/internal/empty.model.yml | 12 ++ .../dataflow/models/models.expected | 42 +++--- .../dataflow/models/models.ext.yml | 46 +++---- 5 files changed, 180 insertions(+), 55 deletions(-) diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll index d10c342c6c5..4eeac1d640a 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll @@ -31,6 +31,11 @@ module Input implements InputSig { crate = "" ) } + + /** Holds if the associated call resolves to `path`. */ + final predicate callResolvesTo(string path) { + path = this.getCall().getStaticTarget().(Addressable).getCanonicalPath() + } } abstract class SourceBase extends SourceSinkBase { } diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/ModelsAsData.qll b/rust/ql/lib/codeql/rust/dataflow/internal/ModelsAsData.qll index 7a88d52d357..7b046521b00 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/ModelsAsData.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/ModelsAsData.qll @@ -4,21 +4,19 @@ * The extensible relations have the following columns: * * - Sources: - * `crate; path; output; kind; provenance` + * `path; output; kind; provenance` * - Sinks: - * `crate; path; input; kind; provenance` + * `path; input; kind; provenance` * - Summaries: - * `crate; path; input; output; kind; provenance` + * `path; input; output; kind; provenance` * * The interpretation of a row is similar to API-graphs with a left-to-right * reading. * - * 1. The `crate` column selects a crate. - * 2. The `path` column selects a function with the given canonical path within - * the crate. - * 3. The `input` column specifies how data enters the element selected by the - * first 2 columns, and the `output` column specifies how data leaves the - * element selected by the first 2 columns. Both `input` and `output` are + * 1. The `path` column selects a function with the given canonical path. + * 2. The `input` column specifies how data enters the element selected by the + * first column, and the `output` column specifies how data leaves the + * element selected by the first column. Both `input` and `output` are * `.`-separated lists of "access path tokens" to resolve, starting at the * selected function. * @@ -34,12 +32,12 @@ * - `Field[t(i)]`: position `i` inside the variant/struct with canonical path `v`, for example * `Field[core::option::Option::Some(0)]`. * - `Field[i]`: the `i`th element of a tuple. - * 4. The `kind` column is a tag that can be referenced from QL to determine to + * 3. The `kind` column is a tag that can be referenced from QL to determine to * which classes the interpreted elements should be added. For example, for * sources `"remote"` indicates a default remote flow source, and for summaries * `"taint"` indicates a default additional taint step and `"value"` indicates a * globally applicable value-preserving step. - * 5. The `provenance` column is mainly used internally, and should be set to `"manual"` for + * 4. The `provenance` column is mainly used internally, and should be set to `"manual"` for * all custom models. */ @@ -66,6 +64,19 @@ extensible predicate sourceModelDeprecated( QlBuiltins::ExtensionId madId ); +/** + * Holds if in a call to the function with canonical path `path`, the value referred + * to by `output` is a flow source of the given `kind`. + * + * `output = "ReturnValue"` simply means the result of the call itself. + * + * For more information on the `kind` parameter, see + * https://github.com/github/codeql/blob/main/docs/codeql/reusables/threat-model-description.rst. + */ +extensible predicate sourceModel( + string path, string output, string kind, string provenance, QlBuiltins::ExtensionId madId +); + /** * DEPRECATED: Do not use. * @@ -84,6 +95,20 @@ extensible predicate sinkModelDeprecated( QlBuiltins::ExtensionId madId ); +/** + * Holds if in a call to the function with canonical path `path`, the value referred + * to by `input` is a flow sink of the given `kind`. + * + * For example, `input = Argument[0]` means the first argument of the call. + * + * The following kinds are supported: + * + * - `sql-injection`: a flow sink for SQL injection. + */ +extensible predicate sinkModel( + string path, string input, string kind, string provenance, QlBuiltins::ExtensionId madId +); + /** * DEPRECATED: Do not use. * @@ -99,6 +124,18 @@ extensible predicate summaryModelDeprecated( QlBuiltins::ExtensionId madId ); +/** + * Holds if in a call to the function with canonical path `path`, the value referred + * to by `input` can flow to the value referred to by `output`. + * + * `kind` should be either `value` or `taint`, for value-preserving or taint-preserving + * steps, respectively. + */ +extensible predicate summaryModel( + string path, string input, string output, string kind, string provenance, + QlBuiltins::ExtensionId madId +); + /** * Holds if the given extension tuple `madId` should pretty-print as `model`. * @@ -110,15 +147,30 @@ predicate interpretModelForTest(QlBuiltins::ExtensionId madId, string model) { model = "Source: " + crate + "; " + path + "; " + output + "; " + kind ) or + exists(string path, string output, string kind | + sourceModel(path, kind, output, _, madId) and + model = "Source: " + path + "; " + output + "; " + kind + ) + or exists(string crate, string path, string input, string kind | sinkModelDeprecated(crate, path, kind, input, _, madId) and model = "Sink: " + crate + "; " + path + "; " + input + "; " + kind ) or + exists(string path, string input, string kind | + sinkModel(path, kind, input, _, madId) and + model = "Sink: " + path + "; " + input + "; " + kind + ) + or exists(string type, string path, string input, string output, string kind | summaryModelDeprecated(type, path, input, output, kind, _, madId) and model = "Summary: " + type + "; " + path + "; " + input + "; " + output + "; " + kind ) + or + exists(string path, string input, string output, string kind | + summaryModel(path, input, output, kind, _, madId) and + model = "Summary: " + path + "; " + input + "; " + output + "; " + kind + ) } private class SummarizedCallableFromModelDeprecated extends SummarizedCallable::Range { @@ -151,6 +203,30 @@ private class SummarizedCallableFromModelDeprecated extends SummarizedCallable:: } } +private class SummarizedCallableFromModel extends SummarizedCallable::Range { + private string path; + + SummarizedCallableFromModel() { + summaryModel(path, _, _, _, _, _) and + this.getCanonicalPath() = path + } + + override predicate propagatesFlow( + string input, string output, boolean preservesValue, string model + ) { + exists(string kind, QlBuiltins::ExtensionId madId | + summaryModel(path, input, output, kind, _, madId) and + model = "MaD:" + madId.toString() + | + kind = "value" and + preservesValue = true + or + kind = "taint" and + preservesValue = false + ) + } +} + private class FlowSourceFromModelDeprecated extends FlowSource::Range { private string crate; private string path; @@ -168,6 +244,22 @@ private class FlowSourceFromModelDeprecated extends FlowSource::Range { } } +private class FlowSourceFromModel extends FlowSource::Range { + private string path; + + FlowSourceFromModel() { + sourceModel(path, _, _, _, _) and + this.callResolvesTo(path) + } + + override predicate isSource(string output, string kind, Provenance provenance, string model) { + exists(QlBuiltins::ExtensionId madId | + sourceModel(path, output, kind, provenance, madId) and + model = "MaD:" + madId.toString() + ) + } +} + private class FlowSinkFromModelDeprecated extends FlowSink::Range { private string crate; private string path; @@ -184,3 +276,19 @@ private class FlowSinkFromModelDeprecated extends FlowSink::Range { ) } } + +private class FlowSinkFromModel extends FlowSink::Range { + private string path; + + FlowSinkFromModel() { + sinkModel(path, _, _, _, _) and + this.callResolvesTo(path) + } + + override predicate isSink(string input, string kind, Provenance provenance, string model) { + exists(QlBuiltins::ExtensionId madId | + sinkModel(path, input, kind, provenance, madId) and + model = "MaD:" + madId.toString() + ) + } +} diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/empty.model.yml b/rust/ql/lib/codeql/rust/dataflow/internal/empty.model.yml index b2c729f2c80..1200720a0ce 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/empty.model.yml +++ b/rust/ql/lib/codeql/rust/dataflow/internal/empty.model.yml @@ -5,13 +5,25 @@ extensions: pack: codeql/rust-all extensible: sourceModelDeprecated data: [] + - addsTo: + pack: codeql/rust-all + extensible: sourceModel + data: [] - addsTo: pack: codeql/rust-all extensible: sinkModelDeprecated data: [] + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: [] - addsTo: pack: codeql/rust-all extensible: summaryModelDeprecated data: [] + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: [] diff --git a/rust/ql/test/library-tests/dataflow/models/models.expected b/rust/ql/test/library-tests/dataflow/models/models.expected index 5e1e16eb428..d409ae8cb32 100644 --- a/rust/ql/test/library-tests/dataflow/models/models.expected +++ b/rust/ql/test/library-tests/dataflow/models/models.expected @@ -1,25 +1,25 @@ models -| 1 | Sink: repo::test; ::sink; test-sink; Argument[self].Field[main::MyFieldEnum::D::field_d] | -| 2 | Sink: repo::test; crate::enum_sink; test-sink; Argument[0].Field[main::MyFieldEnum::C::field_c] | -| 3 | Sink: repo::test; crate::simple_sink; test-sink; Argument[0] | -| 4 | Source: repo::test; ::source; test-source; ReturnValue.Field[main::MyFieldEnum::C::field_c] | -| 5 | Source: repo::test; crate::arg_source; test-source; Argument[0] | -| 6 | Source: repo::test; crate::enum_source; test-source; ReturnValue.Field[main::MyFieldEnum::D::field_d] | -| 7 | Source: repo::test; crate::simple_source; test-source; ReturnValue | -| 8 | Summary: repo::test; crate::apply; Argument[0]; Argument[1].Parameter[0]; value | -| 9 | Summary: repo::test; crate::apply; Argument[1].ReturnValue; ReturnValue; value | -| 10 | Summary: repo::test; crate::coerce; Argument[0]; ReturnValue; taint | -| 11 | Summary: repo::test; crate::get_array_element; Argument[0].Element; ReturnValue; value | -| 12 | Summary: repo::test; crate::get_async_number; Argument[0]; ReturnValue.Future; value | -| 13 | Summary: repo::test; crate::get_struct_field; Argument[0].Field[main::MyStruct::field1]; ReturnValue; value | -| 14 | Summary: repo::test; crate::get_tuple_element; Argument[0].Field[0]; ReturnValue; value | -| 15 | Summary: repo::test; crate::get_var_field; Argument[0].Field[main::MyFieldEnum::C::field_c]; ReturnValue; value | -| 16 | Summary: repo::test; crate::get_var_pos; Argument[0].Field[main::MyPosEnum::A(0)]; ReturnValue; value | -| 17 | Summary: repo::test; crate::set_array_element; Argument[0]; ReturnValue.Element; value | -| 18 | Summary: repo::test; crate::set_struct_field; Argument[0]; ReturnValue.Field[main::MyStruct::field2]; value | -| 19 | Summary: repo::test; crate::set_tuple_element; Argument[0]; ReturnValue.Field[1]; value | -| 20 | Summary: repo::test; crate::set_var_field; Argument[0]; ReturnValue.Field[main::MyFieldEnum::D::field_d]; value | -| 21 | Summary: repo::test; crate::set_var_pos; Argument[0]; ReturnValue.Field[main::MyPosEnum::B(0)]; value | +| 1 | Sink: ::sink; test-sink; Argument[self].Field[main::MyFieldEnum::D::field_d] | +| 2 | Sink: main::enum_sink; test-sink; Argument[0].Field[main::MyFieldEnum::C::field_c] | +| 3 | Sink: main::simple_sink; test-sink; Argument[0] | +| 4 | Source: ::source; test-source; ReturnValue.Field[main::MyFieldEnum::C::field_c] | +| 5 | Source: main::arg_source; test-source; Argument[0] | +| 6 | Source: main::enum_source; test-source; ReturnValue.Field[main::MyFieldEnum::D::field_d] | +| 7 | Source: main::simple_source; test-source; ReturnValue | +| 8 | Summary: main::apply; Argument[0]; Argument[1].Parameter[0]; value | +| 9 | Summary: main::apply; Argument[1].ReturnValue; ReturnValue; value | +| 10 | Summary: main::coerce; Argument[0]; ReturnValue; taint | +| 11 | Summary: main::get_array_element; Argument[0].Element; ReturnValue; value | +| 12 | Summary: main::get_async_number; Argument[0]; ReturnValue.Future; value | +| 13 | Summary: main::get_struct_field; Argument[0].Field[main::MyStruct::field1]; ReturnValue; value | +| 14 | Summary: main::get_tuple_element; Argument[0].Field[0]; ReturnValue; value | +| 15 | Summary: main::get_var_field; Argument[0].Field[main::MyFieldEnum::C::field_c]; ReturnValue; value | +| 16 | Summary: main::get_var_pos; Argument[0].Field[main::MyPosEnum::A(0)]; ReturnValue; value | +| 17 | Summary: main::set_array_element; Argument[0]; ReturnValue.Element; value | +| 18 | Summary: main::set_struct_field; Argument[0]; ReturnValue.Field[main::MyStruct::field2]; value | +| 19 | Summary: main::set_tuple_element; Argument[0]; ReturnValue.Field[1]; value | +| 20 | Summary: main::set_var_field; Argument[0]; ReturnValue.Field[main::MyFieldEnum::D::field_d]; value | +| 21 | Summary: main::set_var_pos; Argument[0]; ReturnValue.Field[main::MyPosEnum::B(0)]; value | edges | main.rs:15:9:15:9 | s | main.rs:16:19:16:19 | s | provenance | | | main.rs:15:9:15:9 | s | main.rs:16:19:16:19 | s | provenance | | diff --git a/rust/ql/test/library-tests/dataflow/models/models.ext.yml b/rust/ql/test/library-tests/dataflow/models/models.ext.yml index ee573b4ef80..ba5fc48cf24 100644 --- a/rust/ql/test/library-tests/dataflow/models/models.ext.yml +++ b/rust/ql/test/library-tests/dataflow/models/models.ext.yml @@ -3,32 +3,32 @@ extensions: pack: codeql/rust-all extensible: sourceModel data: - - ["repo::test", "crate::simple_source", "ReturnValue", "test-source", "manual"] - - ["repo::test", "crate::enum_source", "ReturnValue.Field[main::MyFieldEnum::D::field_d]", "test-source", "manual"] - - ["repo::test", "::source", "ReturnValue.Field[main::MyFieldEnum::C::field_c]", "test-source", "manual"] - - ["repo::test", "crate::arg_source", "Argument[0]", "test-source", "manual"] + - ["main::simple_source", "ReturnValue", "test-source", "manual"] + - ["main::enum_source", "ReturnValue.Field[main::MyFieldEnum::D::field_d]", "test-source", "manual"] + - ["::source", "ReturnValue.Field[main::MyFieldEnum::C::field_c]", "test-source", "manual"] + - ["main::arg_source", "Argument[0]", "test-source", "manual"] - addsTo: pack: codeql/rust-all - extensible: sinkModelDeprecated + extensible: sinkModel data: - - ["repo::test", "crate::simple_sink", "Argument[0]", "test-sink", "manual"] - - ["repo::test", "crate::enum_sink", "Argument[0].Field[main::MyFieldEnum::C::field_c]", "test-sink", "manual"] - - ["repo::test", "::sink", "Argument[self].Field[main::MyFieldEnum::D::field_d]", "test-sink", "manual"] + - ["main::simple_sink", "Argument[0]", "test-sink", "manual"] + - ["main::enum_sink", "Argument[0].Field[main::MyFieldEnum::C::field_c]", "test-sink", "manual"] + - ["::sink", "Argument[self].Field[main::MyFieldEnum::D::field_d]", "test-sink", "manual"] - addsTo: pack: codeql/rust-all - extensible: summaryModelDeprecated + extensible: summaryModel data: - - ["repo::test", "crate::coerce", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["repo::test", "crate::get_var_pos", "Argument[0].Field[main::MyPosEnum::A(0)]", "ReturnValue", "value", "manual"] - - ["repo::test", "crate::set_var_pos", "Argument[0]", "ReturnValue.Field[main::MyPosEnum::B(0)]", "value", "manual"] - - ["repo::test", "crate::get_var_field", "Argument[0].Field[main::MyFieldEnum::C::field_c]", "ReturnValue", "value", "manual"] - - ["repo::test", "crate::set_var_field", "Argument[0]", "ReturnValue.Field[main::MyFieldEnum::D::field_d]", "value", "manual"] - - ["repo::test", "crate::get_struct_field", "Argument[0].Field[main::MyStruct::field1]", "ReturnValue", "value", "manual"] - - ["repo::test", "crate::set_struct_field", "Argument[0]", "ReturnValue.Field[main::MyStruct::field2]", "value", "manual"] - - ["repo::test", "crate::get_array_element", "Argument[0].Element", "ReturnValue", "value", "manual"] - - ["repo::test", "crate::set_array_element", "Argument[0]", "ReturnValue.Element", "value", "manual"] - - ["repo::test", "crate::get_tuple_element", "Argument[0].Field[0]", "ReturnValue", "value", "manual"] - - ["repo::test", "crate::set_tuple_element", "Argument[0]", "ReturnValue.Field[1]", "value", "manual"] - - ["repo::test", "crate::apply", "Argument[0]", "Argument[1].Parameter[0]", "value", "manual"] - - ["repo::test", "crate::apply", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"] - - ["repo::test", "crate::get_async_number", "Argument[0]", "ReturnValue.Future", "value", "manual"] + - ["main::coerce", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["main::get_var_pos", "Argument[0].Field[main::MyPosEnum::A(0)]", "ReturnValue", "value", "manual"] + - ["main::set_var_pos", "Argument[0]", "ReturnValue.Field[main::MyPosEnum::B(0)]", "value", "manual"] + - ["main::get_var_field", "Argument[0].Field[main::MyFieldEnum::C::field_c]", "ReturnValue", "value", "manual"] + - ["main::set_var_field", "Argument[0]", "ReturnValue.Field[main::MyFieldEnum::D::field_d]", "value", "manual"] + - ["main::get_struct_field", "Argument[0].Field[main::MyStruct::field1]", "ReturnValue", "value", "manual"] + - ["main::set_struct_field", "Argument[0]", "ReturnValue.Field[main::MyStruct::field2]", "value", "manual"] + - ["main::get_array_element", "Argument[0].Element", "ReturnValue", "value", "manual"] + - ["main::set_array_element", "Argument[0]", "ReturnValue.Element", "value", "manual"] + - ["main::get_tuple_element", "Argument[0].Field[0]", "ReturnValue", "value", "manual"] + - ["main::set_tuple_element", "Argument[0]", "ReturnValue.Field[1]", "value", "manual"] + - ["main::apply", "Argument[0]", "Argument[1].Parameter[0]", "value", "manual"] + - ["main::apply", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"] + - ["main::get_async_number", "Argument[0]", "ReturnValue.Future", "value", "manual"] From 40274dcd69b02ca58310cb1c81a37084cc2af173 Mon Sep 17 00:00:00 2001 From: Tamas Vajk Date: Wed, 18 Jun 2025 08:45:12 +0200 Subject: [PATCH 147/150] Add code-quality-extended query suites --- actions/ql/integration-tests/query-suite/test.py | 2 +- .../codeql-suites/actions-code-quality-extended.qls | 3 +++ cpp/ql/integration-tests/query-suite/test.py | 2 +- .../src/codeql-suites/cpp-code-quality-extended.qls | 3 +++ csharp/ql/integration-tests/posix/query-suite/test.py | 2 +- .../codeql-suites/csharp-code-quality-extended.qls | 3 +++ go/ql/integration-tests/query-suite/test.py | 2 +- go/ql/src/codeql-suites/go-code-quality-extended.qls | 3 +++ java/ql/integration-tests/java/query-suite/test.py | 2 +- .../src/codeql-suites/java-code-quality-extended.qls | 3 +++ javascript/ql/integration-tests/query-suite/test.py | 2 +- .../javascript-code-quality-extended.qls | 3 +++ .../suite-helpers/code-quality-extended-selectors.yml | 11 +++++++++++ python/ql/integration-tests/query-suite/test.py | 2 +- .../codeql-suites/python-code-quality-extended.qls | 3 +++ ruby/ql/integration-tests/query-suite/test.py | 2 +- .../src/codeql-suites/ruby-code-quality-extended.qls | 3 +++ rust/ql/integration-tests/query-suite/test.py | 2 +- .../src/codeql-suites/rust-code-quality-extended.qls | 3 +++ swift/ql/integration-tests/posix/query-suite/test.py | 2 +- .../src/codeql-suites/swift-code-quality-extended.qls | 3 +++ 21 files changed, 51 insertions(+), 10 deletions(-) create mode 100644 actions/ql/src/codeql-suites/actions-code-quality-extended.qls create mode 100644 cpp/ql/src/codeql-suites/cpp-code-quality-extended.qls create mode 100644 csharp/ql/src/codeql-suites/csharp-code-quality-extended.qls create mode 100644 go/ql/src/codeql-suites/go-code-quality-extended.qls create mode 100644 java/ql/src/codeql-suites/java-code-quality-extended.qls create mode 100644 javascript/ql/src/codeql-suites/javascript-code-quality-extended.qls create mode 100644 misc/suite-helpers/code-quality-extended-selectors.yml create mode 100644 python/ql/src/codeql-suites/python-code-quality-extended.qls create mode 100644 ruby/ql/src/codeql-suites/ruby-code-quality-extended.qls create mode 100644 rust/ql/src/codeql-suites/rust-code-quality-extended.qls create mode 100644 swift/ql/src/codeql-suites/swift-code-quality-extended.qls diff --git a/actions/ql/integration-tests/query-suite/test.py b/actions/ql/integration-tests/query-suite/test.py index 6eb57c090b9..b01e9166168 100644 --- a/actions/ql/integration-tests/query-suite/test.py +++ b/actions/ql/integration-tests/query-suite/test.py @@ -2,7 +2,7 @@ import runs_on import pytest from query_suites import * -well_known_query_suites = ['actions-code-quality.qls', 'actions-security-and-quality.qls', 'actions-security-extended.qls', 'actions-code-scanning.qls'] +well_known_query_suites = ['actions-code-quality.qls', 'actions-code-quality-extended.qls', 'actions-security-and-quality.qls', 'actions-security-extended.qls', 'actions-code-scanning.qls'] @runs_on.posix @pytest.mark.parametrize("query_suite", well_known_query_suites) diff --git a/actions/ql/src/codeql-suites/actions-code-quality-extended.qls b/actions/ql/src/codeql-suites/actions-code-quality-extended.qls new file mode 100644 index 00000000000..1ee85cae856 --- /dev/null +++ b/actions/ql/src/codeql-suites/actions-code-quality-extended.qls @@ -0,0 +1,3 @@ +- queries: . +- apply: code-quality-extended-selectors.yml + from: codeql/suite-helpers diff --git a/cpp/ql/integration-tests/query-suite/test.py b/cpp/ql/integration-tests/query-suite/test.py index 232630c4d2a..ac0d818cdd8 100644 --- a/cpp/ql/integration-tests/query-suite/test.py +++ b/cpp/ql/integration-tests/query-suite/test.py @@ -2,7 +2,7 @@ import runs_on import pytest from query_suites import * -well_known_query_suites = ['cpp-code-quality.qls', 'cpp-security-and-quality.qls', 'cpp-security-extended.qls', 'cpp-code-scanning.qls'] +well_known_query_suites = ['cpp-code-quality.qls', 'cpp-code-quality-extended.qls', 'cpp-security-and-quality.qls', 'cpp-security-extended.qls', 'cpp-code-scanning.qls'] @runs_on.posix @pytest.mark.parametrize("query_suite", well_known_query_suites) diff --git a/cpp/ql/src/codeql-suites/cpp-code-quality-extended.qls b/cpp/ql/src/codeql-suites/cpp-code-quality-extended.qls new file mode 100644 index 00000000000..1ee85cae856 --- /dev/null +++ b/cpp/ql/src/codeql-suites/cpp-code-quality-extended.qls @@ -0,0 +1,3 @@ +- queries: . +- apply: code-quality-extended-selectors.yml + from: codeql/suite-helpers diff --git a/csharp/ql/integration-tests/posix/query-suite/test.py b/csharp/ql/integration-tests/posix/query-suite/test.py index 38f0643dfbb..0bc7182bc08 100644 --- a/csharp/ql/integration-tests/posix/query-suite/test.py +++ b/csharp/ql/integration-tests/posix/query-suite/test.py @@ -2,7 +2,7 @@ import runs_on import pytest from query_suites import * -well_known_query_suites = ['csharp-code-quality.qls', 'csharp-security-and-quality.qls', 'csharp-security-extended.qls', 'csharp-code-scanning.qls'] +well_known_query_suites = ['csharp-code-quality.qls', 'csharp-code-quality-extended.qls', 'csharp-security-and-quality.qls', 'csharp-security-extended.qls', 'csharp-code-scanning.qls'] @runs_on.posix @pytest.mark.parametrize("query_suite", well_known_query_suites) diff --git a/csharp/ql/src/codeql-suites/csharp-code-quality-extended.qls b/csharp/ql/src/codeql-suites/csharp-code-quality-extended.qls new file mode 100644 index 00000000000..1ee85cae856 --- /dev/null +++ b/csharp/ql/src/codeql-suites/csharp-code-quality-extended.qls @@ -0,0 +1,3 @@ +- queries: . +- apply: code-quality-extended-selectors.yml + from: codeql/suite-helpers diff --git a/go/ql/integration-tests/query-suite/test.py b/go/ql/integration-tests/query-suite/test.py index d4c6f9f3709..fa48acf32b5 100644 --- a/go/ql/integration-tests/query-suite/test.py +++ b/go/ql/integration-tests/query-suite/test.py @@ -2,7 +2,7 @@ import runs_on import pytest from query_suites import * -well_known_query_suites = ['go-code-quality.qls', 'go-security-and-quality.qls', 'go-security-extended.qls', 'go-code-scanning.qls'] +well_known_query_suites = ['go-code-quality.qls', 'go-code-quality-extended.qls', 'go-security-and-quality.qls', 'go-security-extended.qls', 'go-code-scanning.qls'] @runs_on.posix @pytest.mark.parametrize("query_suite", well_known_query_suites) diff --git a/go/ql/src/codeql-suites/go-code-quality-extended.qls b/go/ql/src/codeql-suites/go-code-quality-extended.qls new file mode 100644 index 00000000000..1ee85cae856 --- /dev/null +++ b/go/ql/src/codeql-suites/go-code-quality-extended.qls @@ -0,0 +1,3 @@ +- queries: . +- apply: code-quality-extended-selectors.yml + from: codeql/suite-helpers diff --git a/java/ql/integration-tests/java/query-suite/test.py b/java/ql/integration-tests/java/query-suite/test.py index 307a66c1431..6c606e17dc7 100644 --- a/java/ql/integration-tests/java/query-suite/test.py +++ b/java/ql/integration-tests/java/query-suite/test.py @@ -2,7 +2,7 @@ import runs_on import pytest from query_suites import * -well_known_query_suites = ['java-code-quality.qls', 'java-security-and-quality.qls', 'java-security-extended.qls', 'java-code-scanning.qls'] +well_known_query_suites = ['java-code-quality.qls', 'java-code-quality-extended.qls', 'java-security-and-quality.qls', 'java-security-extended.qls', 'java-code-scanning.qls'] @runs_on.posix @pytest.mark.parametrize("query_suite", well_known_query_suites) diff --git a/java/ql/src/codeql-suites/java-code-quality-extended.qls b/java/ql/src/codeql-suites/java-code-quality-extended.qls new file mode 100644 index 00000000000..1ee85cae856 --- /dev/null +++ b/java/ql/src/codeql-suites/java-code-quality-extended.qls @@ -0,0 +1,3 @@ +- queries: . +- apply: code-quality-extended-selectors.yml + from: codeql/suite-helpers diff --git a/javascript/ql/integration-tests/query-suite/test.py b/javascript/ql/integration-tests/query-suite/test.py index 54b6f94043f..859df35f369 100644 --- a/javascript/ql/integration-tests/query-suite/test.py +++ b/javascript/ql/integration-tests/query-suite/test.py @@ -2,7 +2,7 @@ import runs_on import pytest from query_suites import * -well_known_query_suites = ['javascript-code-quality.qls', 'javascript-security-and-quality.qls', 'javascript-security-extended.qls', 'javascript-code-scanning.qls'] +well_known_query_suites = ['javascript-code-quality.qls', 'javascript-code-quality-extended.qls', 'javascript-security-and-quality.qls', 'javascript-security-extended.qls', 'javascript-code-scanning.qls'] @runs_on.posix @pytest.mark.parametrize("query_suite", well_known_query_suites) diff --git a/javascript/ql/src/codeql-suites/javascript-code-quality-extended.qls b/javascript/ql/src/codeql-suites/javascript-code-quality-extended.qls new file mode 100644 index 00000000000..1ee85cae856 --- /dev/null +++ b/javascript/ql/src/codeql-suites/javascript-code-quality-extended.qls @@ -0,0 +1,3 @@ +- queries: . +- apply: code-quality-extended-selectors.yml + from: codeql/suite-helpers diff --git a/misc/suite-helpers/code-quality-extended-selectors.yml b/misc/suite-helpers/code-quality-extended-selectors.yml new file mode 100644 index 00000000000..57b9b2cf8a8 --- /dev/null +++ b/misc/suite-helpers/code-quality-extended-selectors.yml @@ -0,0 +1,11 @@ +- description: Selectors for selecting the extended code-quality queries for a language +- include: + kind: + - problem + - path-problem + precision: + - high + - very-high + - medium + tags contain: + - quality diff --git a/python/ql/integration-tests/query-suite/test.py b/python/ql/integration-tests/query-suite/test.py index 940d79bc361..745a3b5e200 100644 --- a/python/ql/integration-tests/query-suite/test.py +++ b/python/ql/integration-tests/query-suite/test.py @@ -2,7 +2,7 @@ import runs_on import pytest from query_suites import * -well_known_query_suites = ['python-code-quality.qls', 'python-security-and-quality.qls', 'python-security-extended.qls', 'python-code-scanning.qls'] +well_known_query_suites = ['python-code-quality.qls', 'python-code-quality-extended.qls', 'python-security-and-quality.qls', 'python-security-extended.qls', 'python-code-scanning.qls'] @runs_on.posix @pytest.mark.parametrize("query_suite", well_known_query_suites) diff --git a/python/ql/src/codeql-suites/python-code-quality-extended.qls b/python/ql/src/codeql-suites/python-code-quality-extended.qls new file mode 100644 index 00000000000..1ee85cae856 --- /dev/null +++ b/python/ql/src/codeql-suites/python-code-quality-extended.qls @@ -0,0 +1,3 @@ +- queries: . +- apply: code-quality-extended-selectors.yml + from: codeql/suite-helpers diff --git a/ruby/ql/integration-tests/query-suite/test.py b/ruby/ql/integration-tests/query-suite/test.py index 7ebb9d9c9b5..3202f0c13fd 100644 --- a/ruby/ql/integration-tests/query-suite/test.py +++ b/ruby/ql/integration-tests/query-suite/test.py @@ -2,7 +2,7 @@ import runs_on import pytest from query_suites import * -well_known_query_suites = ['ruby-code-quality.qls', 'ruby-security-and-quality.qls', 'ruby-security-extended.qls', 'ruby-code-scanning.qls'] +well_known_query_suites = ['ruby-code-quality.qls', 'ruby-code-quality-extended.qls', 'ruby-security-and-quality.qls', 'ruby-security-extended.qls', 'ruby-code-scanning.qls'] @runs_on.posix @pytest.mark.parametrize("query_suite", well_known_query_suites) diff --git a/ruby/ql/src/codeql-suites/ruby-code-quality-extended.qls b/ruby/ql/src/codeql-suites/ruby-code-quality-extended.qls new file mode 100644 index 00000000000..1ee85cae856 --- /dev/null +++ b/ruby/ql/src/codeql-suites/ruby-code-quality-extended.qls @@ -0,0 +1,3 @@ +- queries: . +- apply: code-quality-extended-selectors.yml + from: codeql/suite-helpers diff --git a/rust/ql/integration-tests/query-suite/test.py b/rust/ql/integration-tests/query-suite/test.py index 5f48fb42853..8880d35b1c9 100644 --- a/rust/ql/integration-tests/query-suite/test.py +++ b/rust/ql/integration-tests/query-suite/test.py @@ -2,7 +2,7 @@ import runs_on import pytest from query_suites import * -well_known_query_suites = ['rust-code-quality.qls', 'rust-security-and-quality.qls', 'rust-security-extended.qls', 'rust-code-scanning.qls'] +well_known_query_suites = ['rust-code-quality.qls', 'rust-code-quality-extended.qls', 'rust-security-and-quality.qls', 'rust-security-extended.qls', 'rust-code-scanning.qls'] @runs_on.posix @pytest.mark.parametrize("query_suite", well_known_query_suites) diff --git a/rust/ql/src/codeql-suites/rust-code-quality-extended.qls b/rust/ql/src/codeql-suites/rust-code-quality-extended.qls new file mode 100644 index 00000000000..1ee85cae856 --- /dev/null +++ b/rust/ql/src/codeql-suites/rust-code-quality-extended.qls @@ -0,0 +1,3 @@ +- queries: . +- apply: code-quality-extended-selectors.yml + from: codeql/suite-helpers diff --git a/swift/ql/integration-tests/posix/query-suite/test.py b/swift/ql/integration-tests/posix/query-suite/test.py index 43babae0125..b72b87f2938 100644 --- a/swift/ql/integration-tests/posix/query-suite/test.py +++ b/swift/ql/integration-tests/posix/query-suite/test.py @@ -2,7 +2,7 @@ import runs_on import pytest from query_suites import * -well_known_query_suites = ['swift-code-quality.qls', 'swift-security-and-quality.qls', 'swift-security-extended.qls', 'swift-code-scanning.qls'] +well_known_query_suites = ['swift-code-quality.qls', 'swift-code-quality-extended.qls', 'swift-security-and-quality.qls', 'swift-security-extended.qls', 'swift-code-scanning.qls'] @runs_on.posix @pytest.mark.parametrize("query_suite", well_known_query_suites) diff --git a/swift/ql/src/codeql-suites/swift-code-quality-extended.qls b/swift/ql/src/codeql-suites/swift-code-quality-extended.qls new file mode 100644 index 00000000000..1ee85cae856 --- /dev/null +++ b/swift/ql/src/codeql-suites/swift-code-quality-extended.qls @@ -0,0 +1,3 @@ +- queries: . +- apply: code-quality-extended-selectors.yml + from: codeql/suite-helpers From e6a9ff08a32b9414bfc49163e1cf5fa72fd59cfb Mon Sep 17 00:00:00 2001 From: Tamas Vajk Date: Wed, 18 Jun 2025 09:13:38 +0200 Subject: [PATCH 148/150] Adjust query-suite integration test expected files --- ...actions-code-quality-extended.qls.expected | 1 + .../cpp-code-quality-extended.qls.expected | 1 + .../csharp-code-quality-extended.qls.expected | 20 +++++++++++++++++++ .../go-code-quality-extended.qls.expected | 6 ++++++ .../java-code-quality-extended.qls.expected | 15 ++++++++++++++ .../query-suite/not_included_in_qls.expected | 1 - ...ascript-code-quality-extended.qls.expected | 9 +++++++++ .../python-code-quality-extended.qls.expected | 7 +++++++ .../ruby-code-quality-extended.qls.expected | 3 +++ .../query-suite/not_included_in_qls.expected | 2 -- .../rust-code-quality-extended.qls.expected | 3 +++ .../swift-code-quality-extended.qls.expected | 1 + 12 files changed, 66 insertions(+), 3 deletions(-) create mode 100644 actions/ql/integration-tests/query-suite/actions-code-quality-extended.qls.expected create mode 100644 cpp/ql/integration-tests/query-suite/cpp-code-quality-extended.qls.expected create mode 100644 csharp/ql/integration-tests/posix/query-suite/csharp-code-quality-extended.qls.expected create mode 100644 go/ql/integration-tests/query-suite/go-code-quality-extended.qls.expected create mode 100644 java/ql/integration-tests/java/query-suite/java-code-quality-extended.qls.expected create mode 100644 javascript/ql/integration-tests/query-suite/javascript-code-quality-extended.qls.expected create mode 100644 python/ql/integration-tests/query-suite/python-code-quality-extended.qls.expected create mode 100644 ruby/ql/integration-tests/query-suite/ruby-code-quality-extended.qls.expected create mode 100644 rust/ql/integration-tests/query-suite/rust-code-quality-extended.qls.expected create mode 100644 swift/ql/integration-tests/posix/query-suite/swift-code-quality-extended.qls.expected diff --git a/actions/ql/integration-tests/query-suite/actions-code-quality-extended.qls.expected b/actions/ql/integration-tests/query-suite/actions-code-quality-extended.qls.expected new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/actions/ql/integration-tests/query-suite/actions-code-quality-extended.qls.expected @@ -0,0 +1 @@ + diff --git a/cpp/ql/integration-tests/query-suite/cpp-code-quality-extended.qls.expected b/cpp/ql/integration-tests/query-suite/cpp-code-quality-extended.qls.expected new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/cpp/ql/integration-tests/query-suite/cpp-code-quality-extended.qls.expected @@ -0,0 +1 @@ + diff --git a/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality-extended.qls.expected b/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality-extended.qls.expected new file mode 100644 index 00000000000..1ce0a7be504 --- /dev/null +++ b/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality-extended.qls.expected @@ -0,0 +1,20 @@ +ql/csharp/ql/src/API Abuse/CallToGCCollect.ql +ql/csharp/ql/src/API Abuse/FormatInvalid.ql +ql/csharp/ql/src/API Abuse/NoDisposeCallOnLocalIDisposable.ql +ql/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql +ql/csharp/ql/src/CSI/NullAlways.ql +ql/csharp/ql/src/CSI/NullMaybe.ql +ql/csharp/ql/src/Dead Code/DeadStoreOfLocal.ql +ql/csharp/ql/src/Language Abuse/MissedReadonlyOpportunity.ql +ql/csharp/ql/src/Likely Bugs/Collections/ContainerLengthCmpOffByOne.ql +ql/csharp/ql/src/Likely Bugs/Collections/ContainerSizeCmpZero.ql +ql/csharp/ql/src/Likely Bugs/DangerousNonShortCircuitLogic.ql +ql/csharp/ql/src/Likely Bugs/EqualityCheckOnFloats.ql +ql/csharp/ql/src/Likely Bugs/HashedButNoHash.ql +ql/csharp/ql/src/Likely Bugs/ReferenceEqualsOnValueTypes.ql +ql/csharp/ql/src/Likely Bugs/SelfAssignment.ql +ql/csharp/ql/src/Likely Bugs/UncheckedCastInEquals.ql +ql/csharp/ql/src/Performance/StringConcatenationInLoop.ql +ql/csharp/ql/src/Performance/UseTryGetValue.ql +ql/csharp/ql/src/Useless code/DefaultToString.ql +ql/csharp/ql/src/Useless code/IntGetHashCode.ql diff --git a/go/ql/integration-tests/query-suite/go-code-quality-extended.qls.expected b/go/ql/integration-tests/query-suite/go-code-quality-extended.qls.expected new file mode 100644 index 00000000000..236c285ece0 --- /dev/null +++ b/go/ql/integration-tests/query-suite/go-code-quality-extended.qls.expected @@ -0,0 +1,6 @@ +ql/go/ql/src/InconsistentCode/LengthComparisonOffByOne.ql +ql/go/ql/src/InconsistentCode/MissingErrorCheck.ql +ql/go/ql/src/InconsistentCode/UnhandledCloseWritableHandle.ql +ql/go/ql/src/InconsistentCode/WrappedErrorAlwaysNil.ql +ql/go/ql/src/RedundantCode/NegativeLengthCheck.ql +ql/go/ql/src/RedundantCode/RedundantRecover.ql diff --git a/java/ql/integration-tests/java/query-suite/java-code-quality-extended.qls.expected b/java/ql/integration-tests/java/query-suite/java-code-quality-extended.qls.expected new file mode 100644 index 00000000000..8a10ff68c4f --- /dev/null +++ b/java/ql/integration-tests/java/query-suite/java-code-quality-extended.qls.expected @@ -0,0 +1,15 @@ +ql/java/ql/src/Language Abuse/EmptyMethod.ql +ql/java/ql/src/Language Abuse/TypeVariableHidesType.ql +ql/java/ql/src/Likely Bugs/Arithmetic/IntMultToLong.ql +ql/java/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql +ql/java/ql/src/Likely Bugs/Comparison/IncomparableEquals.ql +ql/java/ql/src/Likely Bugs/Comparison/InconsistentEqualsHashCode.ql +ql/java/ql/src/Likely Bugs/Comparison/MissingInstanceofInEquals.ql +ql/java/ql/src/Likely Bugs/Comparison/RefEqBoxed.ql +ql/java/ql/src/Likely Bugs/Frameworks/JUnit/JUnit5MissingNestedAnnotation.ql +ql/java/ql/src/Likely Bugs/Likely Typos/ContradictoryTypeChecks.ql +ql/java/ql/src/Likely Bugs/Likely Typos/SuspiciousDateFormat.ql +ql/java/ql/src/Likely Bugs/Resource Leaks/CloseReader.ql +ql/java/ql/src/Likely Bugs/Resource Leaks/CloseWriter.ql +ql/java/ql/src/Performance/StringReplaceAllWithNonRegex.ql +ql/java/ql/src/Violations of Best Practice/Undesirable Calls/DoNotCallFinalize.ql diff --git a/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected b/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected index d0378fa2ea4..1f58e51ad80 100644 --- a/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected +++ b/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected @@ -66,7 +66,6 @@ ql/java/ql/src/Frameworks/Spring/XML Configuration Errors/MissingSetters.ql ql/java/ql/src/Language Abuse/CastThisToTypeParameter.ql ql/java/ql/src/Language Abuse/DubiousDowncastOfThis.ql ql/java/ql/src/Language Abuse/DubiousTypeTestOfThis.ql -ql/java/ql/src/Language Abuse/EmptyMethod.ql ql/java/ql/src/Language Abuse/EmptyStatement.ql ql/java/ql/src/Language Abuse/EnumIdentifier.ql ql/java/ql/src/Language Abuse/ImplementsAnnotation.ql diff --git a/javascript/ql/integration-tests/query-suite/javascript-code-quality-extended.qls.expected b/javascript/ql/integration-tests/query-suite/javascript-code-quality-extended.qls.expected new file mode 100644 index 00000000000..bf646822ddc --- /dev/null +++ b/javascript/ql/integration-tests/query-suite/javascript-code-quality-extended.qls.expected @@ -0,0 +1,9 @@ +ql/javascript/ql/src/Declarations/IneffectiveParameterType.ql +ql/javascript/ql/src/Declarations/SuspiciousMethodNameDeclaration.ql +ql/javascript/ql/src/Expressions/ExprHasNoEffect.ql +ql/javascript/ql/src/Expressions/MissingAwait.ql +ql/javascript/ql/src/LanguageFeatures/SpuriousArguments.ql +ql/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql +ql/javascript/ql/src/Quality/UnhandledErrorInStreamPipeline.ql +ql/javascript/ql/src/RegExp/DuplicateCharacterInCharacterClass.ql +ql/javascript/ql/src/RegExp/RegExpAlwaysMatches.ql diff --git a/python/ql/integration-tests/query-suite/python-code-quality-extended.qls.expected b/python/ql/integration-tests/query-suite/python-code-quality-extended.qls.expected new file mode 100644 index 00000000000..c2168cab937 --- /dev/null +++ b/python/ql/integration-tests/query-suite/python-code-quality-extended.qls.expected @@ -0,0 +1,7 @@ +ql/python/ql/src/Functions/IterReturnsNonSelf.ql +ql/python/ql/src/Functions/NonCls.ql +ql/python/ql/src/Functions/NonSelf.ql +ql/python/ql/src/Functions/ReturnConsistentTupleSizes.ql +ql/python/ql/src/Functions/SignatureSpecialMethods.ql +ql/python/ql/src/Resources/FileNotAlwaysClosed.ql +ql/python/ql/src/Variables/LoopVariableCapture/LoopVariableCapture.ql diff --git a/ruby/ql/integration-tests/query-suite/ruby-code-quality-extended.qls.expected b/ruby/ql/integration-tests/query-suite/ruby-code-quality-extended.qls.expected new file mode 100644 index 00000000000..94b2f19caaa --- /dev/null +++ b/ruby/ql/integration-tests/query-suite/ruby-code-quality-extended.qls.expected @@ -0,0 +1,3 @@ +ql/ruby/ql/src/queries/performance/DatabaseQueryInLoop.ql +ql/ruby/ql/src/queries/variables/DeadStoreOfLocal.ql +ql/ruby/ql/src/queries/variables/UninitializedLocal.ql diff --git a/rust/ql/integration-tests/query-suite/not_included_in_qls.expected b/rust/ql/integration-tests/query-suite/not_included_in_qls.expected index a719b933bc0..78cb055abe5 100644 --- a/rust/ql/integration-tests/query-suite/not_included_in_qls.expected +++ b/rust/ql/integration-tests/query-suite/not_included_in_qls.expected @@ -3,8 +3,6 @@ ql/rust/ql/src/queries/summary/LinesOfUserCodeInFiles.ql ql/rust/ql/src/queries/summary/QuerySinks.ql ql/rust/ql/src/queries/summary/SensitiveData.ql ql/rust/ql/src/queries/summary/TaintSources.ql -ql/rust/ql/src/queries/unusedentities/UnreachableCode.ql -ql/rust/ql/src/queries/unusedentities/UnusedValue.ql ql/rust/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql ql/rust/ql/src/utils/modelgenerator/CaptureNeutralModels.ql ql/rust/ql/src/utils/modelgenerator/CaptureSinkModels.ql diff --git a/rust/ql/integration-tests/query-suite/rust-code-quality-extended.qls.expected b/rust/ql/integration-tests/query-suite/rust-code-quality-extended.qls.expected new file mode 100644 index 00000000000..7a7d4dc07c1 --- /dev/null +++ b/rust/ql/integration-tests/query-suite/rust-code-quality-extended.qls.expected @@ -0,0 +1,3 @@ +ql/rust/ql/src/queries/unusedentities/UnreachableCode.ql +ql/rust/ql/src/queries/unusedentities/UnusedValue.ql +ql/rust/ql/src/queries/unusedentities/UnusedVariable.ql diff --git a/swift/ql/integration-tests/posix/query-suite/swift-code-quality-extended.qls.expected b/swift/ql/integration-tests/posix/query-suite/swift-code-quality-extended.qls.expected new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/swift/ql/integration-tests/posix/query-suite/swift-code-quality-extended.qls.expected @@ -0,0 +1 @@ + From 94052f178271ac3508bb932d9aa39bf6cdd56eca Mon Sep 17 00:00:00 2001 From: Tamas Vajk Date: Wed, 18 Jun 2025 11:03:48 +0200 Subject: [PATCH 149/150] Adjust C# expected file after rebase --- .../csharp-code-quality-extended.qls.expected | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality-extended.qls.expected b/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality-extended.qls.expected index 1ce0a7be504..53810418624 100644 --- a/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality-extended.qls.expected +++ b/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality-extended.qls.expected @@ -1,20 +1,72 @@ ql/csharp/ql/src/API Abuse/CallToGCCollect.ql +ql/csharp/ql/src/API Abuse/CallToObsoleteMethod.ql +ql/csharp/ql/src/API Abuse/ClassImplementsICloneable.ql ql/csharp/ql/src/API Abuse/FormatInvalid.ql ql/csharp/ql/src/API Abuse/NoDisposeCallOnLocalIDisposable.ql +ql/csharp/ql/src/API Abuse/NullArgumentToEquals.ql +ql/csharp/ql/src/ASP/BlockCodeResponseWrite.ql +ql/csharp/ql/src/Bad Practices/CallsUnmanagedCode.ql +ql/csharp/ql/src/Bad Practices/CatchOfNullReferenceException.ql ql/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql +ql/csharp/ql/src/Bad Practices/Declarations/LocalScopeVariableShadowsMember.ql +ql/csharp/ql/src/Bad Practices/EmptyCatchBlock.ql +ql/csharp/ql/src/Bad Practices/Implementation Hiding/ExposeRepresentation.ql +ql/csharp/ql/src/Bad Practices/Naming Conventions/FieldMasksSuperField.ql +ql/csharp/ql/src/Bad Practices/Naming Conventions/SameNameAsSuper.ql +ql/csharp/ql/src/Bad Practices/PathCombine.ql +ql/csharp/ql/src/Bad Practices/UnmanagedCodeCheck.ql +ql/csharp/ql/src/CSI/CompareIdenticalValues.ql ql/csharp/ql/src/CSI/NullAlways.ql ql/csharp/ql/src/CSI/NullMaybe.ql +ql/csharp/ql/src/Concurrency/FutileSyncOnField.ql +ql/csharp/ql/src/Concurrency/LockOrder.ql +ql/csharp/ql/src/Concurrency/LockThis.ql +ql/csharp/ql/src/Concurrency/LockedWait.ql ql/csharp/ql/src/Dead Code/DeadStoreOfLocal.ql +ql/csharp/ql/src/Documentation/XmldocMissingSummary.ql +ql/csharp/ql/src/Language Abuse/CastThisToTypeParameter.ql +ql/csharp/ql/src/Language Abuse/CatchOfGenericException.ql +ql/csharp/ql/src/Language Abuse/DubiousDowncastOfThis.ql +ql/csharp/ql/src/Language Abuse/DubiousTypeTestOfThis.ql ql/csharp/ql/src/Language Abuse/MissedReadonlyOpportunity.ql +ql/csharp/ql/src/Language Abuse/MissedTernaryOpportunity.ql +ql/csharp/ql/src/Language Abuse/MissedUsingOpportunity.ql +ql/csharp/ql/src/Language Abuse/NestedIf.ql +ql/csharp/ql/src/Language Abuse/RethrowException.ql +ql/csharp/ql/src/Language Abuse/SimplifyBoolExpr.ql +ql/csharp/ql/src/Language Abuse/UnusedPropertyValue.ql ql/csharp/ql/src/Likely Bugs/Collections/ContainerLengthCmpOffByOne.ql ql/csharp/ql/src/Likely Bugs/Collections/ContainerSizeCmpZero.ql +ql/csharp/ql/src/Likely Bugs/Collections/ReadOnlyContainer.ql +ql/csharp/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql +ql/csharp/ql/src/Likely Bugs/ConstantComparison.ql ql/csharp/ql/src/Likely Bugs/DangerousNonShortCircuitLogic.ql ql/csharp/ql/src/Likely Bugs/EqualityCheckOnFloats.ql +ql/csharp/ql/src/Likely Bugs/EqualsArray.ql ql/csharp/ql/src/Likely Bugs/HashedButNoHash.ql +ql/csharp/ql/src/Likely Bugs/ImpossibleArrayCast.ql +ql/csharp/ql/src/Likely Bugs/IncomparableEquals.ql +ql/csharp/ql/src/Likely Bugs/NestedLoopsSameVariable.ql +ql/csharp/ql/src/Likely Bugs/PossibleLossOfPrecision.ql +ql/csharp/ql/src/Likely Bugs/RecursiveEquals.ql ql/csharp/ql/src/Likely Bugs/ReferenceEqualsOnValueTypes.ql ql/csharp/ql/src/Likely Bugs/SelfAssignment.ql +ql/csharp/ql/src/Likely Bugs/Statements/EmptyBlock.ql +ql/csharp/ql/src/Likely Bugs/Statements/EmptyLockStatement.ql +ql/csharp/ql/src/Likely Bugs/StaticFieldWrittenByInstance.ql +ql/csharp/ql/src/Likely Bugs/StringBuilderCharInit.ql ql/csharp/ql/src/Likely Bugs/UncheckedCastInEquals.ql +ql/csharp/ql/src/Linq/MissedAllOpportunity.ql +ql/csharp/ql/src/Linq/MissedCastOpportunity.ql +ql/csharp/ql/src/Linq/MissedOfTypeOpportunity.ql +ql/csharp/ql/src/Linq/MissedSelectOpportunity.ql +ql/csharp/ql/src/Linq/MissedWhereOpportunity.ql +ql/csharp/ql/src/Linq/RedundantSelect.ql +ql/csharp/ql/src/Performance/StringBuilderInLoop.ql ql/csharp/ql/src/Performance/StringConcatenationInLoop.ql ql/csharp/ql/src/Performance/UseTryGetValue.ql ql/csharp/ql/src/Useless code/DefaultToString.ql +ql/csharp/ql/src/Useless code/FutileConditional.ql ql/csharp/ql/src/Useless code/IntGetHashCode.ql +ql/csharp/ql/src/Useless code/RedundantToStringCall.ql +ql/csharp/ql/src/Useless code/UnusedLabel.ql From c88a5049e0e6ae2f18c699c3ea633c61c68345d9 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Wed, 18 Jun 2025 12:58:35 +0200 Subject: [PATCH 150/150] Rust: Fix column orders in `interpretModelForTest` --- .../rust/dataflow/internal/ModelsAsData.qll | 8 ++-- .../dataflow/models/models.expected | 14 +++--- .../security/CWE-020/RegexInjection.expected | 2 +- .../security/CWE-022/TaintedPath.expected | 2 +- .../security/CWE-089/SqlInjection.expected | 4 +- .../CWE-311/CleartextTransmission.expected | 8 ++-- .../CWE-312/CleartextLogging.expected | 46 +++++++++---------- .../CWE-328/WeakSensitiveDataHashing.expected | 6 +-- .../UncontrolledAllocationSize.expected | 42 ++++++++--------- .../CWE-825/AccessInvalidPointer.expected | 16 +++---- 10 files changed, 74 insertions(+), 74 deletions(-) diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/ModelsAsData.qll b/rust/ql/lib/codeql/rust/dataflow/internal/ModelsAsData.qll index 7b046521b00..bc1f58824b3 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/ModelsAsData.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/ModelsAsData.qll @@ -143,22 +143,22 @@ extensible predicate summaryModel( */ predicate interpretModelForTest(QlBuiltins::ExtensionId madId, string model) { exists(string crate, string path, string output, string kind | - sourceModelDeprecated(crate, path, kind, output, _, madId) and + sourceModelDeprecated(crate, path, output, kind, _, madId) and model = "Source: " + crate + "; " + path + "; " + output + "; " + kind ) or exists(string path, string output, string kind | - sourceModel(path, kind, output, _, madId) and + sourceModel(path, output, kind, _, madId) and model = "Source: " + path + "; " + output + "; " + kind ) or exists(string crate, string path, string input, string kind | - sinkModelDeprecated(crate, path, kind, input, _, madId) and + sinkModelDeprecated(crate, path, input, kind, _, madId) and model = "Sink: " + crate + "; " + path + "; " + input + "; " + kind ) or exists(string path, string input, string kind | - sinkModel(path, kind, input, _, madId) and + sinkModel(path, input, kind, _, madId) and model = "Sink: " + path + "; " + input + "; " + kind ) or diff --git a/rust/ql/test/library-tests/dataflow/models/models.expected b/rust/ql/test/library-tests/dataflow/models/models.expected index d409ae8cb32..9016ebae47e 100644 --- a/rust/ql/test/library-tests/dataflow/models/models.expected +++ b/rust/ql/test/library-tests/dataflow/models/models.expected @@ -1,11 +1,11 @@ models -| 1 | Sink: ::sink; test-sink; Argument[self].Field[main::MyFieldEnum::D::field_d] | -| 2 | Sink: main::enum_sink; test-sink; Argument[0].Field[main::MyFieldEnum::C::field_c] | -| 3 | Sink: main::simple_sink; test-sink; Argument[0] | -| 4 | Source: ::source; test-source; ReturnValue.Field[main::MyFieldEnum::C::field_c] | -| 5 | Source: main::arg_source; test-source; Argument[0] | -| 6 | Source: main::enum_source; test-source; ReturnValue.Field[main::MyFieldEnum::D::field_d] | -| 7 | Source: main::simple_source; test-source; ReturnValue | +| 1 | Sink: ::sink; Argument[self].Field[main::MyFieldEnum::D::field_d]; test-sink | +| 2 | Sink: main::enum_sink; Argument[0].Field[main::MyFieldEnum::C::field_c]; test-sink | +| 3 | Sink: main::simple_sink; Argument[0]; test-sink | +| 4 | Source: ::source; ReturnValue.Field[main::MyFieldEnum::C::field_c]; test-source | +| 5 | Source: main::arg_source; Argument[0]; test-source | +| 6 | Source: main::enum_source; ReturnValue.Field[main::MyFieldEnum::D::field_d]; test-source | +| 7 | Source: main::simple_source; ReturnValue; test-source | | 8 | Summary: main::apply; Argument[0]; Argument[1].Parameter[0]; value | | 9 | Summary: main::apply; Argument[1].ReturnValue; ReturnValue; value | | 10 | Summary: main::coerce; Argument[0]; ReturnValue; taint | diff --git a/rust/ql/test/query-tests/security/CWE-020/RegexInjection.expected b/rust/ql/test/query-tests/security/CWE-020/RegexInjection.expected index 81fbfbda158..49ba42d13ef 100644 --- a/rust/ql/test/query-tests/security/CWE-020/RegexInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-020/RegexInjection.expected @@ -13,7 +13,7 @@ edges | main.rs:5:25:5:44 | { ... } | main.rs:5:25:5:44 | ...::must_use(...) | provenance | MaD:4 | | main.rs:6:26:6:30 | regex | main.rs:6:25:6:30 | ®ex | provenance | | models -| 1 | Source: lang:std; crate::env::var; environment; ReturnValue.Field[core::result::Result::Ok(0)] | +| 1 | Source: lang:std; crate::env::var; ReturnValue.Field[core::result::Result::Ok(0)]; environment | | 2 | Summary: lang:alloc; crate::fmt::format; Argument[0]; ReturnValue; taint | | 3 | Summary: lang:core; ::unwrap_or; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | | 4 | Summary: lang:core; crate::hint::must_use; Argument[0]; ReturnValue; value | diff --git a/rust/ql/test/query-tests/security/CWE-022/TaintedPath.expected b/rust/ql/test/query-tests/security/CWE-022/TaintedPath.expected index 9821637a3a0..71879802efa 100644 --- a/rust/ql/test/query-tests/security/CWE-022/TaintedPath.expected +++ b/rust/ql/test/query-tests/security/CWE-022/TaintedPath.expected @@ -8,7 +8,7 @@ edges | src/main.rs:8:35:8:43 | file_name | src/main.rs:8:21:8:44 | ...::from(...) | provenance | MaD:2 | | src/main.rs:10:24:10:32 | file_path | src/main.rs:10:5:10:22 | ...::read_to_string | provenance | MaD:1 Sink:MaD:1 | models -| 1 | Sink: lang:std; crate::fs::read_to_string; path-injection; Argument[0] | +| 1 | Sink: lang:std; crate::fs::read_to_string; Argument[0]; path-injection | | 2 | Summary: lang:std; ::from; Argument[0]; ReturnValue; taint | nodes | src/main.rs:6:11:6:19 | file_name | semmle.label | file_name | diff --git a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected index 1e0e215e544..1a6b417ce67 100644 --- a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected @@ -24,8 +24,8 @@ edges | sqlx.rs:54:26:54:39 | &remote_string [&ref] | sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | provenance | | | sqlx.rs:54:27:54:39 | remote_string | sqlx.rs:54:26:54:39 | &remote_string [&ref] | provenance | | models -| 1 | Source: lang:std; crate::env::args; commandargs; ReturnValue.Element | -| 2 | Source: repo:https://github.com/seanmonstar/reqwest:reqwest; crate::blocking::get; remote; ReturnValue.Field[core::result::Result::Ok(0)] | +| 1 | Source: lang:std; crate::env::args; ReturnValue.Element; commandargs | +| 2 | Source: repo:https://github.com/seanmonstar/reqwest:reqwest; crate::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote | | 3 | Summary: lang:alloc; ::as_str; Argument[self]; ReturnValue; value | | 4 | Summary: lang:core; ::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | | 5 | Summary: lang:core; ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | diff --git a/rust/ql/test/query-tests/security/CWE-311/CleartextTransmission.expected b/rust/ql/test/query-tests/security/CWE-311/CleartextTransmission.expected index 2782ec0222a..4eb499670b2 100644 --- a/rust/ql/test/query-tests/security/CWE-311/CleartextTransmission.expected +++ b/rust/ql/test/query-tests/security/CWE-311/CleartextTransmission.expected @@ -51,10 +51,10 @@ edges | main.rs:33:50:33:57 | password | main.rs:33:23:33:57 | MacroExpr | provenance | | | main.rs:35:33:35:35 | url | main.rs:35:12:35:18 | request | provenance | MaD:2 Sink:MaD:2 | models -| 1 | Sink: repo:https://github.com/seanmonstar/reqwest:reqwest; ::post; transmission; Argument[0] | -| 2 | Sink: repo:https://github.com/seanmonstar/reqwest:reqwest; ::request; transmission; Argument[1] | -| 3 | Sink: repo:https://github.com/seanmonstar/reqwest:reqwest; ::request; transmission; Argument[1] | -| 4 | Sink: repo:https://github.com/seanmonstar/reqwest:reqwest; crate::blocking::get; transmission; Argument[0] | +| 1 | Sink: repo:https://github.com/seanmonstar/reqwest:reqwest; ::post; Argument[0]; transmission | +| 2 | Sink: repo:https://github.com/seanmonstar/reqwest:reqwest; ::request; Argument[1]; transmission | +| 3 | Sink: repo:https://github.com/seanmonstar/reqwest:reqwest; ::request; Argument[1]; transmission | +| 4 | Sink: repo:https://github.com/seanmonstar/reqwest:reqwest; crate::blocking::get; Argument[0]; transmission | | 5 | Summary: lang:alloc; crate::fmt::format; Argument[0]; ReturnValue; taint | | 6 | Summary: lang:core; ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | | 7 | Summary: lang:core; crate::hint::must_use; Argument[0]; ReturnValue; value | diff --git a/rust/ql/test/query-tests/security/CWE-312/CleartextLogging.expected b/rust/ql/test/query-tests/security/CWE-312/CleartextLogging.expected index b0dbd91436a..1f44e6c07bc 100644 --- a/rust/ql/test/query-tests/security/CWE-312/CleartextLogging.expected +++ b/rust/ql/test/query-tests/security/CWE-312/CleartextLogging.expected @@ -200,40 +200,40 @@ edges | test_logging.rs:208:42:208:49 | password | test_logging.rs:208:26:208:49 | MacroExpr | provenance | | | test_logging.rs:211:28:211:51 | MacroExpr | test_logging.rs:211:13:211:52 | ...::panic_fmt | provenance | MaD:3 Sink:MaD:3 | | test_logging.rs:211:44:211:51 | password | test_logging.rs:211:28:211:51 | MacroExpr | provenance | | -| test_logging.rs:214:13:214:54 | ...::assert_failed [Some] | test_logging.rs:214:13:214:54 | ...::assert_failed | provenance | Sink:MaD:2 | -| test_logging.rs:214:30:214:53 | ...::Some(...) [Some] | test_logging.rs:214:13:214:54 | ...::assert_failed | provenance | MaD:2 Sink:MaD:2 | -| test_logging.rs:214:30:214:53 | ...::Some(...) [Some] | test_logging.rs:214:13:214:54 | ...::assert_failed [Some] | provenance | MaD:1 | +| test_logging.rs:214:13:214:54 | ...::assert_failed [Some] | test_logging.rs:214:13:214:54 | ...::assert_failed | provenance | Sink:MaD:1 | +| test_logging.rs:214:30:214:53 | ...::Some(...) [Some] | test_logging.rs:214:13:214:54 | ...::assert_failed | provenance | MaD:1 Sink:MaD:1 | +| test_logging.rs:214:30:214:53 | ...::Some(...) [Some] | test_logging.rs:214:13:214:54 | ...::assert_failed [Some] | provenance | MaD:2 | | test_logging.rs:214:30:214:53 | MacroExpr | test_logging.rs:214:30:214:53 | ...::Some(...) [Some] | provenance | | | test_logging.rs:214:46:214:53 | password | test_logging.rs:214:30:214:53 | MacroExpr | provenance | | -| test_logging.rs:217:13:217:54 | ...::assert_failed [Some] | test_logging.rs:217:13:217:54 | ...::assert_failed | provenance | Sink:MaD:2 | -| test_logging.rs:217:30:217:53 | ...::Some(...) [Some] | test_logging.rs:217:13:217:54 | ...::assert_failed | provenance | MaD:2 Sink:MaD:2 | -| test_logging.rs:217:30:217:53 | ...::Some(...) [Some] | test_logging.rs:217:13:217:54 | ...::assert_failed [Some] | provenance | MaD:1 | +| test_logging.rs:217:13:217:54 | ...::assert_failed [Some] | test_logging.rs:217:13:217:54 | ...::assert_failed | provenance | Sink:MaD:1 | +| test_logging.rs:217:30:217:53 | ...::Some(...) [Some] | test_logging.rs:217:13:217:54 | ...::assert_failed | provenance | MaD:1 Sink:MaD:1 | +| test_logging.rs:217:30:217:53 | ...::Some(...) [Some] | test_logging.rs:217:13:217:54 | ...::assert_failed [Some] | provenance | MaD:2 | | test_logging.rs:217:30:217:53 | MacroExpr | test_logging.rs:217:30:217:53 | ...::Some(...) [Some] | provenance | | | test_logging.rs:217:46:217:53 | password | test_logging.rs:217:30:217:53 | MacroExpr | provenance | | | test_logging.rs:220:34:220:57 | MacroExpr | test_logging.rs:220:13:220:58 | ...::panic_fmt | provenance | MaD:3 Sink:MaD:3 | | test_logging.rs:220:50:220:57 | password | test_logging.rs:220:34:220:57 | MacroExpr | provenance | | -| test_logging.rs:223:13:223:60 | ...::assert_failed [Some] | test_logging.rs:223:13:223:60 | ...::assert_failed | provenance | Sink:MaD:2 | -| test_logging.rs:223:36:223:59 | ...::Some(...) [Some] | test_logging.rs:223:13:223:60 | ...::assert_failed | provenance | MaD:2 Sink:MaD:2 | -| test_logging.rs:223:36:223:59 | ...::Some(...) [Some] | test_logging.rs:223:13:223:60 | ...::assert_failed [Some] | provenance | MaD:1 | +| test_logging.rs:223:13:223:60 | ...::assert_failed [Some] | test_logging.rs:223:13:223:60 | ...::assert_failed | provenance | Sink:MaD:1 | +| test_logging.rs:223:36:223:59 | ...::Some(...) [Some] | test_logging.rs:223:13:223:60 | ...::assert_failed | provenance | MaD:1 Sink:MaD:1 | +| test_logging.rs:223:36:223:59 | ...::Some(...) [Some] | test_logging.rs:223:13:223:60 | ...::assert_failed [Some] | provenance | MaD:2 | | test_logging.rs:223:36:223:59 | MacroExpr | test_logging.rs:223:36:223:59 | ...::Some(...) [Some] | provenance | | | test_logging.rs:223:52:223:59 | password | test_logging.rs:223:36:223:59 | MacroExpr | provenance | | -| test_logging.rs:226:13:226:60 | ...::assert_failed [Some] | test_logging.rs:226:13:226:60 | ...::assert_failed | provenance | Sink:MaD:2 | -| test_logging.rs:226:36:226:59 | ...::Some(...) [Some] | test_logging.rs:226:13:226:60 | ...::assert_failed | provenance | MaD:2 Sink:MaD:2 | -| test_logging.rs:226:36:226:59 | ...::Some(...) [Some] | test_logging.rs:226:13:226:60 | ...::assert_failed [Some] | provenance | MaD:1 | +| test_logging.rs:226:13:226:60 | ...::assert_failed [Some] | test_logging.rs:226:13:226:60 | ...::assert_failed | provenance | Sink:MaD:1 | +| test_logging.rs:226:36:226:59 | ...::Some(...) [Some] | test_logging.rs:226:13:226:60 | ...::assert_failed | provenance | MaD:1 Sink:MaD:1 | +| test_logging.rs:226:36:226:59 | ...::Some(...) [Some] | test_logging.rs:226:13:226:60 | ...::assert_failed [Some] | provenance | MaD:2 | | test_logging.rs:226:36:226:59 | MacroExpr | test_logging.rs:226:36:226:59 | ...::Some(...) [Some] | provenance | | | test_logging.rs:226:52:226:59 | password | test_logging.rs:226:36:226:59 | MacroExpr | provenance | | models -| 1 | Sink: lang:core; crate::panicking::assert_failed; log-injection; Argument[3] | -| 2 | Sink: lang:core; crate::panicking::assert_failed; log-injection; Argument[3].Field[core::option::Option::Some(0)] | -| 3 | Sink: lang:core; crate::panicking::panic_fmt; log-injection; Argument[0] | -| 4 | Sink: lang:std; crate::io::stdio::_eprint; log-injection; Argument[0] | -| 5 | Sink: lang:std; crate::io::stdio::_print; log-injection; Argument[0] | -| 6 | Sink: repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err; ::log_expect; log-injection; Argument[0] | -| 7 | Sink: repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err; ::log_expect; log-injection; Argument[0] | -| 8 | Sink: repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err; ::log_expect; log-injection; Argument[self].Field[core::result::Result::Err(0)] | -| 9 | Sink: repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err; ::log_unwrap; log-injection; Argument[self].Field[core::result::Result::Err(0)] | -| 10 | Sink: repo:https://github.com/rust-lang/log:log; crate::__private_api::log; log-injection; Argument[1] | -| 11 | Sink: repo:https://github.com/rust-lang/log:log; crate::__private_api::log; log-injection; Argument[3] | +| 1 | Sink: lang:core; crate::panicking::assert_failed; Argument[3].Field[core::option::Option::Some(0)]; log-injection | +| 2 | Sink: lang:core; crate::panicking::assert_failed; Argument[3]; log-injection | +| 3 | Sink: lang:core; crate::panicking::panic_fmt; Argument[0]; log-injection | +| 4 | Sink: lang:std; crate::io::stdio::_eprint; Argument[0]; log-injection | +| 5 | Sink: lang:std; crate::io::stdio::_print; Argument[0]; log-injection | +| 6 | Sink: repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err; ::log_expect; Argument[0]; log-injection | +| 7 | Sink: repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err; ::log_expect; Argument[0]; log-injection | +| 8 | Sink: repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err; ::log_expect; Argument[self].Field[core::result::Result::Err(0)]; log-injection | +| 9 | Sink: repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err; ::log_unwrap; Argument[self].Field[core::result::Result::Err(0)]; log-injection | +| 10 | Sink: repo:https://github.com/rust-lang/log:log; crate::__private_api::log; Argument[1]; log-injection | +| 11 | Sink: repo:https://github.com/rust-lang/log:log; crate::__private_api::log; Argument[3]; log-injection | | 12 | Summary: lang:alloc; crate::fmt::format; Argument[0]; ReturnValue; taint | | 13 | Summary: lang:core; crate::hint::must_use; Argument[0]; ReturnValue; value | nodes diff --git a/rust/ql/test/query-tests/security/CWE-328/WeakSensitiveDataHashing.expected b/rust/ql/test/query-tests/security/CWE-328/WeakSensitiveDataHashing.expected index d2ea36bbebf..062e3a63cc3 100644 --- a/rust/ql/test/query-tests/security/CWE-328/WeakSensitiveDataHashing.expected +++ b/rust/ql/test/query-tests/security/CWE-328/WeakSensitiveDataHashing.expected @@ -33,9 +33,9 @@ edges | test.rs:83:26:83:33 | password | test.rs:83:26:83:44 | password.as_bytes() | provenance | MaD:4 | | test.rs:83:26:83:44 | password.as_bytes() | test.rs:83:9:83:24 | ...::digest | provenance | MaD:1 Sink:MaD:1 | models -| 1 | Sink: repo:https://github.com/RustCrypto/traits:digest; <_ as crate::digest::Digest>::digest; hasher-input; Argument[0] | -| 2 | Sink: repo:https://github.com/RustCrypto/traits:digest; <_ as crate::digest::Digest>::new_with_prefix; hasher-input; Argument[0] | -| 3 | Sink: repo:https://github.com/stainless-steel/md5:md5; crate::compute; hasher-input; Argument[0] | +| 1 | Sink: repo:https://github.com/RustCrypto/traits:digest; <_ as crate::digest::Digest>::digest; Argument[0]; hasher-input | +| 2 | Sink: repo:https://github.com/RustCrypto/traits:digest; <_ as crate::digest::Digest>::new_with_prefix; Argument[0]; hasher-input | +| 3 | Sink: repo:https://github.com/stainless-steel/md5:md5; crate::compute; Argument[0]; hasher-input | | 4 | Summary: lang:core; ::as_bytes; Argument[self]; ReturnValue; taint | | 5 | Summary: lang:core; ::trim; Argument[self]; ReturnValue.Reference; taint | nodes diff --git a/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected b/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected index 34cb1edba83..9d0423390a7 100644 --- a/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected +++ b/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected @@ -275,27 +275,27 @@ edges | main.rs:323:27:323:27 | v | main.rs:183:29:183:36 | ...: usize | provenance | | | main.rs:324:25:324:25 | v | main.rs:217:27:217:34 | ...: usize | provenance | | models -| 1 | Sink: lang:alloc; ::allocate; alloc-layout; Argument[0] | -| 2 | Sink: lang:alloc; ::allocate_zeroed; alloc-layout; Argument[0] | -| 3 | Sink: lang:alloc; crate::alloc::alloc; alloc-layout; Argument[0] | -| 4 | Sink: lang:alloc; crate::alloc::alloc_zeroed; alloc-layout; Argument[0] | -| 5 | Sink: lang:alloc; crate::alloc::realloc; alloc-size; Argument[2] | -| 6 | Sink: lang:std; ::allocate; alloc-layout; Argument[0] | -| 7 | Sink: lang:std; ::allocate_zeroed; alloc-layout; Argument[0] | -| 8 | Sink: lang:std; ::grow; alloc-layout; Argument[2] | -| 9 | Sink: lang:std; ::grow_zeroed; alloc-layout; Argument[2] | -| 10 | Sink: lang:std; ::shrink; alloc-layout; Argument[2] | -| 11 | Sink: lang:std; ::alloc; alloc-layout; Argument[0] | -| 12 | Sink: lang:std; ::alloc; alloc-size; Argument[0] | -| 13 | Sink: lang:std; ::alloc_zeroed; alloc-layout; Argument[0] | -| 14 | Sink: lang:std; ::alloc_zeroed; alloc-size; Argument[0] | -| 15 | Sink: lang:std; ::realloc; alloc-layout; Argument[2] | -| 16 | Sink: lang:std; ::realloc; alloc-size; Argument[2] | -| 17 | Sink: repo:https://github.com/rust-lang/libc:libc; ::aligned_alloc; alloc-size; Argument[1] | -| 18 | Sink: repo:https://github.com/rust-lang/libc:libc; ::calloc; alloc-size; Argument[0,1] | -| 19 | Sink: repo:https://github.com/rust-lang/libc:libc; ::malloc; alloc-size; Argument[0] | -| 20 | Sink: repo:https://github.com/rust-lang/libc:libc; ::realloc; alloc-size; Argument[1] | -| 21 | Source: lang:std; crate::env::args; commandargs; ReturnValue.Element | +| 1 | Sink: lang:alloc; ::allocate; Argument[0]; alloc-layout | +| 2 | Sink: lang:alloc; ::allocate_zeroed; Argument[0]; alloc-layout | +| 3 | Sink: lang:alloc; crate::alloc::alloc; Argument[0]; alloc-layout | +| 4 | Sink: lang:alloc; crate::alloc::alloc_zeroed; Argument[0]; alloc-layout | +| 5 | Sink: lang:alloc; crate::alloc::realloc; Argument[2]; alloc-size | +| 6 | Sink: lang:std; ::allocate; Argument[0]; alloc-layout | +| 7 | Sink: lang:std; ::allocate_zeroed; Argument[0]; alloc-layout | +| 8 | Sink: lang:std; ::grow; Argument[2]; alloc-layout | +| 9 | Sink: lang:std; ::grow_zeroed; Argument[2]; alloc-layout | +| 10 | Sink: lang:std; ::shrink; Argument[2]; alloc-layout | +| 11 | Sink: lang:std; ::alloc; Argument[0]; alloc-layout | +| 12 | Sink: lang:std; ::alloc; Argument[0]; alloc-size | +| 13 | Sink: lang:std; ::alloc_zeroed; Argument[0]; alloc-layout | +| 14 | Sink: lang:std; ::alloc_zeroed; Argument[0]; alloc-size | +| 15 | Sink: lang:std; ::realloc; Argument[2]; alloc-layout | +| 16 | Sink: lang:std; ::realloc; Argument[2]; alloc-size | +| 17 | Sink: repo:https://github.com/rust-lang/libc:libc; ::aligned_alloc; Argument[1]; alloc-size | +| 18 | Sink: repo:https://github.com/rust-lang/libc:libc; ::calloc; Argument[0,1]; alloc-size | +| 19 | Sink: repo:https://github.com/rust-lang/libc:libc; ::malloc; Argument[0]; alloc-size | +| 20 | Sink: repo:https://github.com/rust-lang/libc:libc; ::realloc; Argument[1]; alloc-size | +| 21 | Source: lang:std; crate::env::args; ReturnValue.Element; commandargs | | 22 | Summary: lang:core; ::align_to; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | | 23 | Summary: lang:core; ::array; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | | 24 | Summary: lang:core; ::extend; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | diff --git a/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected b/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected index e8a0eead8f9..f4f85a37d7c 100644 --- a/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected +++ b/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected @@ -51,14 +51,14 @@ edges | deallocation.rs:242:3:242:25 | ...::drop_in_place | deallocation.rs:242:27:242:29 | [post] ptr | provenance | Src:MaD:6 MaD:6 | | deallocation.rs:242:27:242:29 | [post] ptr | deallocation.rs:248:18:248:20 | ptr | provenance | | models -| 1 | Sink: lang:core; crate::ptr::read; pointer-access; Argument[0] | -| 2 | Sink: lang:core; crate::ptr::write; pointer-access; Argument[0] | -| 3 | Source: lang:alloc; crate::alloc::dealloc; pointer-invalidate; Argument[0] | -| 4 | Source: lang:core; crate::ptr::dangling; pointer-invalidate; ReturnValue | -| 5 | Source: lang:core; crate::ptr::dangling_mut; pointer-invalidate; ReturnValue | -| 6 | Source: lang:core; crate::ptr::drop_in_place; pointer-invalidate; Argument[0] | -| 7 | Source: lang:core; crate::ptr::null; pointer-invalidate; ReturnValue | -| 8 | Source: repo:https://github.com/rust-lang/libc:libc; ::free; pointer-invalidate; Argument[0] | +| 1 | Sink: lang:core; crate::ptr::read; Argument[0]; pointer-access | +| 2 | Sink: lang:core; crate::ptr::write; Argument[0]; pointer-access | +| 3 | Source: lang:alloc; crate::alloc::dealloc; Argument[0]; pointer-invalidate | +| 4 | Source: lang:core; crate::ptr::dangling; ReturnValue; pointer-invalidate | +| 5 | Source: lang:core; crate::ptr::dangling_mut; ReturnValue; pointer-invalidate | +| 6 | Source: lang:core; crate::ptr::drop_in_place; Argument[0]; pointer-invalidate | +| 7 | Source: lang:core; crate::ptr::null; ReturnValue; pointer-invalidate | +| 8 | Source: repo:https://github.com/rust-lang/libc:libc; ::free; Argument[0]; pointer-invalidate | nodes | deallocation.rs:20:3:20:21 | ...::dealloc | semmle.label | ...::dealloc | | deallocation.rs:20:23:20:24 | [post] m1 | semmle.label | [post] m1 |