dhscanner-kbapi 1.1.4 → 1.2.0
raw patch · 10 files changed
+432/−637 lines, 10 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- Content: AuthenticatedHttpGetHandlerRequestObject :: [String] -> Word -> AuthenticatedHttpGetHandlerRequestObject
- Content: AuthenticatedHttpPostHandlerRequestObject :: [String] -> Word -> AuthenticatedHttpPostHandlerRequestObject
- Content: AuthenticatedHttpPutHandlerRequestObject :: [String] -> Word -> AuthenticatedHttpPutHandlerRequestObject
- Content: ByAllButOneBadReturn :: AuthEvidence
- Content: ByHeaderNullCheck :: String -> AuthEvidence
- Content: Comment :: Location -> String -> Comment
- Content: CommentsInFunction :: Location -> Word -> CommentsInFunction
- Content: ConstStringsMatching :: String -> Word -> ConstStringsMatching
- Content: ControlFlowPath :: Location -> Location -> Word -> ControlFlowPath
- Content: ControlFlowReachableFileActionSink :: Location -> Word -> Word -> ControlFlowReachableFileActionSink
- Content: ControlFlowReachableSqlSink :: Location -> Word -> Word -> ControlFlowReachableSqlSink
- Content: DataFlowPath :: Location -> Location -> Word -> DataFlowPath
- Content: FileActionKindCount :: FileActionKind -> Word -> FileActionKindCount
- Content: FileDelete :: FileActionKind
- Content: FileRead :: FileActionKind
- Content: FileWrite :: FileActionKind
- Content: FoundAuthenticatedHttpGetHandlerRequestObject :: Word -> [FoundAuthenticatedHttpGetHandlerRequestObjectMatch] -> FoundAuthenticatedHttpGetHandlerRequestObject
- Content: FoundAuthenticatedHttpGetHandlerRequestObjectMatch :: Location -> Location -> String -> String -> AuthEvidence -> FoundAuthenticatedHttpGetHandlerRequestObjectMatch
- Content: FoundAuthenticatedHttpPostHandlerRequestObject :: Word -> [FoundAuthenticatedHttpPostHandlerRequestObjectMatch] -> FoundAuthenticatedHttpPostHandlerRequestObject
- Content: FoundAuthenticatedHttpPostHandlerRequestObjectMatch :: Location -> Location -> String -> String -> AuthEvidence -> FoundAuthenticatedHttpPostHandlerRequestObjectMatch
- Content: FoundAuthenticatedHttpPutHandlerRequestObject :: Word -> [FoundAuthenticatedHttpPutHandlerRequestObjectMatch] -> FoundAuthenticatedHttpPutHandlerRequestObject
- Content: FoundAuthenticatedHttpPutHandlerRequestObjectMatch :: Location -> Location -> String -> String -> AuthEvidence -> FoundAuthenticatedHttpPutHandlerRequestObjectMatch
- Content: FoundCommentsInFunction :: Location -> Word -> [Comment] -> FoundCommentsInFunction
- Content: FoundConstStringMatch :: Location -> String -> FoundConstStringMatch
- Content: FoundConstStringsMatching :: String -> Word -> [FoundConstStringMatch] -> FoundConstStringsMatching
- Content: FoundControlFlowPath :: Maybe [Location] -> FoundControlFlowPath
- Content: FoundControlFlowReachableFileActionSink :: Word -> [FileActionKindCount] -> [FoundControlFlowReachableFileActionSinkMatch] -> FoundControlFlowReachableFileActionSink
- Content: FoundControlFlowReachableFileActionSinkMatch :: Location -> String -> FileActionKind -> FoundControlFlowReachableFileActionSinkMatch
- Content: FoundControlFlowReachableSqlSink :: Word -> [SqlSinkKindCount] -> [FoundControlFlowReachableSqlSinkMatch] -> FoundControlFlowReachableSqlSink
- Content: FoundControlFlowReachableSqlSinkMatch :: Location -> String -> SqlSinkKind -> FoundControlFlowReachableSqlSinkMatch
- Content: FoundDataFlowPath :: Maybe [Location] -> FoundDataFlowPath
- Content: FoundHttpGetHandlerRequestObject :: Word -> [FoundHttpGetHandlerRequestObjectMatch] -> FoundHttpGetHandlerRequestObject
- Content: FoundHttpGetHandlerRequestObjectMatch :: Location -> Location -> String -> FoundHttpGetHandlerRequestObjectMatch
- Content: FoundHttpPostHandlerRequestObjectMatch :: Location -> Location -> String -> FoundHttpPostHandlerRequestObjectMatch
- Content: FoundHttpPutHandlerRequestObjectMatch :: Location -> Location -> String -> FoundHttpPutHandlerRequestObjectMatch
- Content: FoundUnauthenticatedHttpGetHandlerRequestObject :: Word -> [FoundHttpGetHandlerRequestObjectMatch] -> FoundUnauthenticatedHttpGetHandlerRequestObject
- Content: FoundUnauthenticatedHttpPostHandlerRequestObject :: Word -> [FoundHttpPostHandlerRequestObjectMatch] -> FoundUnauthenticatedHttpPostHandlerRequestObject
- Content: FoundUnauthenticatedHttpPutHandlerRequestObject :: Word -> [FoundHttpPutHandlerRequestObjectMatch] -> FoundUnauthenticatedHttpPutHandlerRequestObject
- Content: FoundWriteContentToLocalFile :: Word -> [Location] -> FoundWriteContentToLocalFile
- Content: HttpGetHandlerRequestObject :: [String] -> Word -> HttpGetHandlerRequestObject
- Content: SqlPreparedStatement :: SqlSinkKind
- Content: SqlRaw :: SqlSinkKind
- Content: SqlSinkKindCount :: SqlSinkKind -> Word -> SqlSinkKindCount
- Content: UnauthenticatedHttpGetHandlerRequestObject :: [String] -> Word -> UnauthenticatedHttpGetHandlerRequestObject
- Content: UnauthenticatedHttpPostHandlerRequestObject :: [String] -> Word -> UnauthenticatedHttpPostHandlerRequestObject
- Content: UnauthenticatedHttpPutHandlerRequestObject :: [String] -> Word -> UnauthenticatedHttpPutHandlerRequestObject
- Content: WriteContentToLocalFile :: Word -> WriteContentToLocalFile
- Content: [authenticatedHttpGetHandlerRequestObjectLimit] :: AuthenticatedHttpGetHandlerRequestObject -> Word
- Content: [authenticatedHttpGetHandlerRequestObjectUrlParts] :: AuthenticatedHttpGetHandlerRequestObject -> [String]
- Content: [authenticatedHttpPostHandlerRequestObjectLimit] :: AuthenticatedHttpPostHandlerRequestObject -> Word
- Content: [authenticatedHttpPostHandlerRequestObjectUrlParts] :: AuthenticatedHttpPostHandlerRequestObject -> [String]
- Content: [authenticatedHttpPutHandlerRequestObjectLimit] :: AuthenticatedHttpPutHandlerRequestObject -> Word
- Content: [authenticatedHttpPutHandlerRequestObjectUrlParts] :: AuthenticatedHttpPutHandlerRequestObject -> [String]
- Content: [commentContent] :: Comment -> String
- Content: [commentLocation] :: Comment -> Location
- Content: [commentsInFunctionLimit] :: CommentsInFunction -> Word
- Content: [commentsInFunctionLocation] :: CommentsInFunction -> Location
- Content: [constStringsMatchingLimit] :: ConstStringsMatching -> Word
- Content: [constStringsMatchingThisRegex] :: ConstStringsMatching -> String
- Content: [controlFlowPathCallee] :: ControlFlowPath -> Location
- Content: [controlFlowPathCaller] :: ControlFlowPath -> Location
- Content: [controlFlowPathLimitNumHops] :: ControlFlowPath -> Word
- Content: [controlFlowReachableFileActionSinkFrom] :: ControlFlowReachableFileActionSink -> Location
- Content: [controlFlowReachableFileActionSinkLimitNumHops] :: ControlFlowReachableFileActionSink -> Word
- Content: [controlFlowReachableFileActionSinkLimit] :: ControlFlowReachableFileActionSink -> Word
- Content: [controlFlowReachableSqlSinkFrom] :: ControlFlowReachableSqlSink -> Location
- Content: [controlFlowReachableSqlSinkLimitNumHops] :: ControlFlowReachableSqlSink -> Word
- Content: [controlFlowReachableSqlSinkLimit] :: ControlFlowReachableSqlSink -> Word
- Content: [dataFlowPathFrom] :: DataFlowPath -> Location
- Content: [dataFlowPathLimitLength] :: DataFlowPath -> Word
- Content: [dataFlowPathTo] :: DataFlowPath -> Location
- Content: [fileActionKindCountCount] :: FileActionKindCount -> Word
- Content: [fileActionKindCountKind] :: FileActionKindCount -> FileActionKind
- Content: [foundAuthenticatedHttpGetHandlerAuthEvidence] :: FoundAuthenticatedHttpGetHandlerRequestObjectMatch -> AuthEvidence
- Content: [foundAuthenticatedHttpGetHandlerAuthenticatingFunctionName] :: FoundAuthenticatedHttpGetHandlerRequestObjectMatch -> String
- Content: [foundAuthenticatedHttpGetHandlerLocation] :: FoundAuthenticatedHttpGetHandlerRequestObjectMatch -> Location
- Content: [foundAuthenticatedHttpGetHandlerRequestObjectLocation] :: FoundAuthenticatedHttpGetHandlerRequestObjectMatch -> Location
- Content: [foundAuthenticatedHttpGetHandlerRequestObjectMatchUrl] :: FoundAuthenticatedHttpGetHandlerRequestObjectMatch -> String
- Content: [foundAuthenticatedHttpGetHandlerRequestObjectMatches] :: FoundAuthenticatedHttpGetHandlerRequestObject -> [FoundAuthenticatedHttpGetHandlerRequestObjectMatch]
- Content: [foundAuthenticatedHttpGetHandlerRequestObjectTotal] :: FoundAuthenticatedHttpGetHandlerRequestObject -> Word
- Content: [foundAuthenticatedHttpPostHandlerAuthEvidence] :: FoundAuthenticatedHttpPostHandlerRequestObjectMatch -> AuthEvidence
- Content: [foundAuthenticatedHttpPostHandlerAuthenticatingFunctionName] :: FoundAuthenticatedHttpPostHandlerRequestObjectMatch -> String
- Content: [foundAuthenticatedHttpPostHandlerLocation] :: FoundAuthenticatedHttpPostHandlerRequestObjectMatch -> Location
- Content: [foundAuthenticatedHttpPostHandlerRequestObjectLocation] :: FoundAuthenticatedHttpPostHandlerRequestObjectMatch -> Location
- Content: [foundAuthenticatedHttpPostHandlerRequestObjectMatchUrl] :: FoundAuthenticatedHttpPostHandlerRequestObjectMatch -> String
- Content: [foundAuthenticatedHttpPostHandlerRequestObjectMatches] :: FoundAuthenticatedHttpPostHandlerRequestObject -> [FoundAuthenticatedHttpPostHandlerRequestObjectMatch]
- Content: [foundAuthenticatedHttpPostHandlerRequestObjectTotal] :: FoundAuthenticatedHttpPostHandlerRequestObject -> Word
- Content: [foundAuthenticatedHttpPutHandlerAuthEvidence] :: FoundAuthenticatedHttpPutHandlerRequestObjectMatch -> AuthEvidence
- Content: [foundAuthenticatedHttpPutHandlerAuthenticatingFunctionName] :: FoundAuthenticatedHttpPutHandlerRequestObjectMatch -> String
- Content: [foundAuthenticatedHttpPutHandlerLocation] :: FoundAuthenticatedHttpPutHandlerRequestObjectMatch -> Location
- Content: [foundAuthenticatedHttpPutHandlerRequestObjectLocation] :: FoundAuthenticatedHttpPutHandlerRequestObjectMatch -> Location
- Content: [foundAuthenticatedHttpPutHandlerRequestObjectMatchUrl] :: FoundAuthenticatedHttpPutHandlerRequestObjectMatch -> String
- Content: [foundAuthenticatedHttpPutHandlerRequestObjectMatches] :: FoundAuthenticatedHttpPutHandlerRequestObject -> [FoundAuthenticatedHttpPutHandlerRequestObjectMatch]
- Content: [foundAuthenticatedHttpPutHandlerRequestObjectTotal] :: FoundAuthenticatedHttpPutHandlerRequestObject -> Word
- Content: [foundCommentsInFunctionComments] :: FoundCommentsInFunction -> [Comment]
- Content: [foundCommentsInFunctionLocation] :: FoundCommentsInFunction -> Location
- Content: [foundCommentsInFunctionTotal] :: FoundCommentsInFunction -> Word
- Content: [foundConstStringMatchLocation] :: FoundConstStringMatch -> Location
- Content: [foundConstStringMatchValue] :: FoundConstStringMatch -> String
- Content: [foundConstStringsMatchesTotal] :: FoundConstStringsMatching -> Word
- Content: [foundConstStringsMatches] :: FoundConstStringsMatching -> [FoundConstStringMatch]
- Content: [foundConstStringsMatchingThisRegex] :: FoundConstStringsMatching -> String
- Content: [foundControlFlowPathPath] :: FoundControlFlowPath -> Maybe [Location]
- Content: [foundControlFlowReachableFileActionSinkCountsByKind] :: FoundControlFlowReachableFileActionSink -> [FileActionKindCount]
- Content: [foundControlFlowReachableFileActionSinkMatchKind] :: FoundControlFlowReachableFileActionSinkMatch -> FileActionKind
- Content: [foundControlFlowReachableFileActionSinkMatchLocation] :: FoundControlFlowReachableFileActionSinkMatch -> Location
- Content: [foundControlFlowReachableFileActionSinkMatchQualifiedName] :: FoundControlFlowReachableFileActionSinkMatch -> String
- Content: [foundControlFlowReachableFileActionSinkMatches] :: FoundControlFlowReachableFileActionSink -> [FoundControlFlowReachableFileActionSinkMatch]
- Content: [foundControlFlowReachableFileActionSinkTotal] :: FoundControlFlowReachableFileActionSink -> Word
- Content: [foundControlFlowReachableSqlSinkCountsByKind] :: FoundControlFlowReachableSqlSink -> [SqlSinkKindCount]
- Content: [foundControlFlowReachableSqlSinkMatchKind] :: FoundControlFlowReachableSqlSinkMatch -> SqlSinkKind
- Content: [foundControlFlowReachableSqlSinkMatchLocation] :: FoundControlFlowReachableSqlSinkMatch -> Location
- Content: [foundControlFlowReachableSqlSinkMatchQualifiedName] :: FoundControlFlowReachableSqlSinkMatch -> String
- Content: [foundControlFlowReachableSqlSinkMatches] :: FoundControlFlowReachableSqlSink -> [FoundControlFlowReachableSqlSinkMatch]
- Content: [foundControlFlowReachableSqlSinkTotal] :: FoundControlFlowReachableSqlSink -> Word
- Content: [foundDataFlowPathPath] :: FoundDataFlowPath -> Maybe [Location]
- Content: [foundHttpGetHandlerLocation] :: FoundHttpGetHandlerRequestObjectMatch -> Location
- Content: [foundHttpGetHandlerRequestObjectMatchLocation] :: FoundHttpGetHandlerRequestObjectMatch -> Location
- Content: [foundHttpGetHandlerRequestObjectMatchUrl] :: FoundHttpGetHandlerRequestObjectMatch -> String
- Content: [foundHttpGetHandlerRequestObjectMatches] :: FoundHttpGetHandlerRequestObject -> [FoundHttpGetHandlerRequestObjectMatch]
- Content: [foundHttpGetHandlerRequestObjectTotal] :: FoundHttpGetHandlerRequestObject -> Word
- Content: [foundHttpPostHandlerLocation] :: FoundHttpPostHandlerRequestObjectMatch -> Location
- Content: [foundHttpPostHandlerRequestObjectLocation] :: FoundHttpPostHandlerRequestObjectMatch -> Location
- Content: [foundHttpPostHandlerRequestObjectMatchUrl] :: FoundHttpPostHandlerRequestObjectMatch -> String
- Content: [foundHttpPutHandlerLocation] :: FoundHttpPutHandlerRequestObjectMatch -> Location
- Content: [foundHttpPutHandlerRequestObjectLocation] :: FoundHttpPutHandlerRequestObjectMatch -> Location
- Content: [foundHttpPutHandlerRequestObjectMatchUrl] :: FoundHttpPutHandlerRequestObjectMatch -> String
- Content: [foundUnauthenticatedHttpGetHandlerRequestObjectMatches] :: FoundUnauthenticatedHttpGetHandlerRequestObject -> [FoundHttpGetHandlerRequestObjectMatch]
- Content: [foundUnauthenticatedHttpGetHandlerRequestObjectTotal] :: FoundUnauthenticatedHttpGetHandlerRequestObject -> Word
- Content: [foundUnauthenticatedHttpPostHandlerRequestObjectMatches] :: FoundUnauthenticatedHttpPostHandlerRequestObject -> [FoundHttpPostHandlerRequestObjectMatch]
- Content: [foundUnauthenticatedHttpPostHandlerRequestObjectTotal] :: FoundUnauthenticatedHttpPostHandlerRequestObject -> Word
- Content: [foundUnauthenticatedHttpPutHandlerRequestObjectMatches] :: FoundUnauthenticatedHttpPutHandlerRequestObject -> [FoundHttpPutHandlerRequestObjectMatch]
- Content: [foundUnauthenticatedHttpPutHandlerRequestObjectTotal] :: FoundUnauthenticatedHttpPutHandlerRequestObject -> Word
- Content: [foundWriteContentToLocalFileLocations] :: FoundWriteContentToLocalFile -> [Location]
- Content: [foundWriteContentToLocalFileTotal] :: FoundWriteContentToLocalFile -> Word
- Content: [httpGetHandlerRequestObjectLimit] :: HttpGetHandlerRequestObject -> Word
- Content: [httpGetHandlerRequestObjectUrlParts] :: HttpGetHandlerRequestObject -> [String]
- Content: [sqlSinkKindCountCount] :: SqlSinkKindCount -> Word
- Content: [sqlSinkKindCountKind] :: SqlSinkKindCount -> SqlSinkKind
- Content: [unauthenticatedHttpGetHandlerRequestObjectLimit] :: UnauthenticatedHttpGetHandlerRequestObject -> Word
- Content: [unauthenticatedHttpGetHandlerRequestObjectUrlParts] :: UnauthenticatedHttpGetHandlerRequestObject -> [String]
- Content: [unauthenticatedHttpPostHandlerRequestObjectLimit] :: UnauthenticatedHttpPostHandlerRequestObject -> Word
- Content: [unauthenticatedHttpPostHandlerRequestObjectUrlParts] :: UnauthenticatedHttpPostHandlerRequestObject -> [String]
- Content: [unauthenticatedHttpPutHandlerRequestObjectLimit] :: UnauthenticatedHttpPutHandlerRequestObject -> Word
- Content: [unauthenticatedHttpPutHandlerRequestObjectUrlParts] :: UnauthenticatedHttpPutHandlerRequestObject -> [String]
- Content: [writeContentToLocalFileLimit] :: WriteContentToLocalFile -> Word
- Content: data AuthEvidence
- Content: data AuthenticatedHttpGetHandlerRequestObject
- Content: data AuthenticatedHttpPostHandlerRequestObject
- Content: data AuthenticatedHttpPutHandlerRequestObject
- Content: data Comment
- Content: data CommentsInFunction
- Content: data ConstStringsMatching
- Content: data ControlFlowPath
- Content: data ControlFlowReachableFileActionSink
- Content: data ControlFlowReachableSqlSink
- Content: data DataFlowPath
- Content: data FileActionKind
- Content: data FileActionKindCount
- Content: data FoundAuthenticatedHttpGetHandlerRequestObject
- Content: data FoundAuthenticatedHttpGetHandlerRequestObjectMatch
- Content: data FoundAuthenticatedHttpPostHandlerRequestObject
- Content: data FoundAuthenticatedHttpPostHandlerRequestObjectMatch
- Content: data FoundAuthenticatedHttpPutHandlerRequestObject
- Content: data FoundAuthenticatedHttpPutHandlerRequestObjectMatch
- Content: data FoundCommentsInFunction
- Content: data FoundConstStringMatch
- Content: data FoundConstStringsMatching
- Content: data FoundControlFlowPath
- Content: data FoundControlFlowReachableFileActionSink
- Content: data FoundControlFlowReachableFileActionSinkMatch
- Content: data FoundControlFlowReachableSqlSink
- Content: data FoundControlFlowReachableSqlSinkMatch
- Content: data FoundDataFlowPath
- Content: data FoundHttpGetHandlerRequestObject
- Content: data FoundHttpGetHandlerRequestObjectMatch
- Content: data FoundHttpPostHandlerRequestObjectMatch
- Content: data FoundHttpPutHandlerRequestObjectMatch
- Content: data FoundUnauthenticatedHttpGetHandlerRequestObject
- Content: data FoundUnauthenticatedHttpPostHandlerRequestObject
- Content: data FoundUnauthenticatedHttpPutHandlerRequestObject
- Content: data FoundWriteContentToLocalFile
- Content: data HttpGetHandlerRequestObject
- Content: data SqlSinkKind
- Content: data SqlSinkKindCount
- Content: data UnauthenticatedHttpGetHandlerRequestObject
- Content: data UnauthenticatedHttpPostHandlerRequestObject
- Content: data UnauthenticatedHttpPutHandlerRequestObject
- Content: data WriteContentToLocalFile
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.AuthEvidence
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.AuthenticatedHttpGetHandlerRequestObject
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.AuthenticatedHttpPostHandlerRequestObject
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.AuthenticatedHttpPutHandlerRequestObject
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.Comment
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.CommentsInFunction
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.ConstStringsMatching
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.ControlFlowPath
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.ControlFlowReachableFileActionSink
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.ControlFlowReachableSqlSink
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.DataFlowPath
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.FileActionKind
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.FileActionKindCount
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.FoundAuthenticatedHttpGetHandlerRequestObject
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.FoundAuthenticatedHttpGetHandlerRequestObjectMatch
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.FoundAuthenticatedHttpPostHandlerRequestObject
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.FoundAuthenticatedHttpPostHandlerRequestObjectMatch
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.FoundAuthenticatedHttpPutHandlerRequestObject
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.FoundAuthenticatedHttpPutHandlerRequestObjectMatch
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.FoundCommentsInFunction
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.FoundConstStringMatch
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.FoundConstStringsMatching
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.FoundControlFlowPath
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.FoundControlFlowReachableFileActionSink
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.FoundControlFlowReachableFileActionSinkMatch
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.FoundControlFlowReachableSqlSink
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.FoundControlFlowReachableSqlSinkMatch
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.FoundDataFlowPath
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.FoundHttpGetHandlerRequestObject
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.FoundHttpGetHandlerRequestObjectMatch
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.FoundHttpPostHandlerRequestObjectMatch
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.FoundHttpPutHandlerRequestObjectMatch
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.FoundUnauthenticatedHttpGetHandlerRequestObject
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.FoundUnauthenticatedHttpPostHandlerRequestObject
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.FoundUnauthenticatedHttpPutHandlerRequestObject
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.FoundWriteContentToLocalFile
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.HttpGetHandlerRequestObject
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.SqlSinkKind
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.SqlSinkKindCount
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.UnauthenticatedHttpGetHandlerRequestObject
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.UnauthenticatedHttpPostHandlerRequestObject
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.UnauthenticatedHttpPutHandlerRequestObject
- Content: instance Data.Aeson.Types.FromJSON.FromJSON Content.WriteContentToLocalFile
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.AuthEvidence
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.AuthenticatedHttpGetHandlerRequestObject
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.AuthenticatedHttpPostHandlerRequestObject
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.AuthenticatedHttpPutHandlerRequestObject
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.Comment
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.CommentsInFunction
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.ConstStringsMatching
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.ControlFlowPath
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.ControlFlowReachableFileActionSink
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.ControlFlowReachableSqlSink
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.DataFlowPath
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.FileActionKind
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.FileActionKindCount
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.FoundAuthenticatedHttpGetHandlerRequestObject
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.FoundAuthenticatedHttpGetHandlerRequestObjectMatch
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.FoundAuthenticatedHttpPostHandlerRequestObject
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.FoundAuthenticatedHttpPostHandlerRequestObjectMatch
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.FoundAuthenticatedHttpPutHandlerRequestObject
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.FoundAuthenticatedHttpPutHandlerRequestObjectMatch
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.FoundCommentsInFunction
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.FoundConstStringMatch
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.FoundConstStringsMatching
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.FoundControlFlowPath
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.FoundControlFlowReachableFileActionSink
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.FoundControlFlowReachableFileActionSinkMatch
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.FoundControlFlowReachableSqlSink
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.FoundControlFlowReachableSqlSinkMatch
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.FoundDataFlowPath
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.FoundHttpGetHandlerRequestObject
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.FoundHttpGetHandlerRequestObjectMatch
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.FoundHttpPostHandlerRequestObjectMatch
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.FoundHttpPutHandlerRequestObjectMatch
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.FoundUnauthenticatedHttpGetHandlerRequestObject
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.FoundUnauthenticatedHttpPostHandlerRequestObject
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.FoundUnauthenticatedHttpPutHandlerRequestObject
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.FoundWriteContentToLocalFile
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.HttpGetHandlerRequestObject
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.SqlSinkKind
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.SqlSinkKindCount
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.UnauthenticatedHttpGetHandlerRequestObject
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.UnauthenticatedHttpPostHandlerRequestObject
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.UnauthenticatedHttpPutHandlerRequestObject
- Content: instance Data.Aeson.Types.ToJSON.ToJSON Content.WriteContentToLocalFile
- Content: instance GHC.Internal.Classes.Eq Content.AuthEvidence
- Content: instance GHC.Internal.Classes.Eq Content.AuthenticatedHttpGetHandlerRequestObject
- Content: instance GHC.Internal.Classes.Eq Content.AuthenticatedHttpPostHandlerRequestObject
- Content: instance GHC.Internal.Classes.Eq Content.AuthenticatedHttpPutHandlerRequestObject
- Content: instance GHC.Internal.Classes.Eq Content.Comment
- Content: instance GHC.Internal.Classes.Eq Content.CommentsInFunction
- Content: instance GHC.Internal.Classes.Eq Content.ConstStringsMatching
- Content: instance GHC.Internal.Classes.Eq Content.ControlFlowPath
- Content: instance GHC.Internal.Classes.Eq Content.ControlFlowReachableFileActionSink
- Content: instance GHC.Internal.Classes.Eq Content.ControlFlowReachableSqlSink
- Content: instance GHC.Internal.Classes.Eq Content.DataFlowPath
- Content: instance GHC.Internal.Classes.Eq Content.FileActionKind
- Content: instance GHC.Internal.Classes.Eq Content.FileActionKindCount
- Content: instance GHC.Internal.Classes.Eq Content.FoundAuthenticatedHttpGetHandlerRequestObject
- Content: instance GHC.Internal.Classes.Eq Content.FoundAuthenticatedHttpGetHandlerRequestObjectMatch
- Content: instance GHC.Internal.Classes.Eq Content.FoundAuthenticatedHttpPostHandlerRequestObject
- Content: instance GHC.Internal.Classes.Eq Content.FoundAuthenticatedHttpPostHandlerRequestObjectMatch
- Content: instance GHC.Internal.Classes.Eq Content.FoundAuthenticatedHttpPutHandlerRequestObject
- Content: instance GHC.Internal.Classes.Eq Content.FoundAuthenticatedHttpPutHandlerRequestObjectMatch
- Content: instance GHC.Internal.Classes.Eq Content.FoundCommentsInFunction
- Content: instance GHC.Internal.Classes.Eq Content.FoundConstStringMatch
- Content: instance GHC.Internal.Classes.Eq Content.FoundConstStringsMatching
- Content: instance GHC.Internal.Classes.Eq Content.FoundControlFlowPath
- Content: instance GHC.Internal.Classes.Eq Content.FoundControlFlowReachableFileActionSink
- Content: instance GHC.Internal.Classes.Eq Content.FoundControlFlowReachableFileActionSinkMatch
- Content: instance GHC.Internal.Classes.Eq Content.FoundControlFlowReachableSqlSink
- Content: instance GHC.Internal.Classes.Eq Content.FoundControlFlowReachableSqlSinkMatch
- Content: instance GHC.Internal.Classes.Eq Content.FoundDataFlowPath
- Content: instance GHC.Internal.Classes.Eq Content.FoundHttpGetHandlerRequestObject
- Content: instance GHC.Internal.Classes.Eq Content.FoundHttpGetHandlerRequestObjectMatch
- Content: instance GHC.Internal.Classes.Eq Content.FoundHttpPostHandlerRequestObjectMatch
- Content: instance GHC.Internal.Classes.Eq Content.FoundHttpPutHandlerRequestObjectMatch
- Content: instance GHC.Internal.Classes.Eq Content.FoundUnauthenticatedHttpGetHandlerRequestObject
- Content: instance GHC.Internal.Classes.Eq Content.FoundUnauthenticatedHttpPostHandlerRequestObject
- Content: instance GHC.Internal.Classes.Eq Content.FoundUnauthenticatedHttpPutHandlerRequestObject
- Content: instance GHC.Internal.Classes.Eq Content.FoundWriteContentToLocalFile
- Content: instance GHC.Internal.Classes.Eq Content.HttpGetHandlerRequestObject
- Content: instance GHC.Internal.Classes.Eq Content.SqlSinkKind
- Content: instance GHC.Internal.Classes.Eq Content.SqlSinkKindCount
- Content: instance GHC.Internal.Classes.Eq Content.UnauthenticatedHttpGetHandlerRequestObject
- Content: instance GHC.Internal.Classes.Eq Content.UnauthenticatedHttpPostHandlerRequestObject
- Content: instance GHC.Internal.Classes.Eq Content.UnauthenticatedHttpPutHandlerRequestObject
- Content: instance GHC.Internal.Classes.Eq Content.WriteContentToLocalFile
- Content: instance GHC.Internal.Classes.Ord Content.AuthEvidence
- Content: instance GHC.Internal.Classes.Ord Content.AuthenticatedHttpGetHandlerRequestObject
- Content: instance GHC.Internal.Classes.Ord Content.AuthenticatedHttpPostHandlerRequestObject
- Content: instance GHC.Internal.Classes.Ord Content.AuthenticatedHttpPutHandlerRequestObject
- Content: instance GHC.Internal.Classes.Ord Content.Comment
- Content: instance GHC.Internal.Classes.Ord Content.CommentsInFunction
- Content: instance GHC.Internal.Classes.Ord Content.ConstStringsMatching
- Content: instance GHC.Internal.Classes.Ord Content.ControlFlowPath
- Content: instance GHC.Internal.Classes.Ord Content.ControlFlowReachableFileActionSink
- Content: instance GHC.Internal.Classes.Ord Content.ControlFlowReachableSqlSink
- Content: instance GHC.Internal.Classes.Ord Content.DataFlowPath
- Content: instance GHC.Internal.Classes.Ord Content.FileActionKind
- Content: instance GHC.Internal.Classes.Ord Content.FileActionKindCount
- Content: instance GHC.Internal.Classes.Ord Content.FoundAuthenticatedHttpGetHandlerRequestObject
- Content: instance GHC.Internal.Classes.Ord Content.FoundAuthenticatedHttpGetHandlerRequestObjectMatch
- Content: instance GHC.Internal.Classes.Ord Content.FoundAuthenticatedHttpPostHandlerRequestObject
- Content: instance GHC.Internal.Classes.Ord Content.FoundAuthenticatedHttpPostHandlerRequestObjectMatch
- Content: instance GHC.Internal.Classes.Ord Content.FoundAuthenticatedHttpPutHandlerRequestObject
- Content: instance GHC.Internal.Classes.Ord Content.FoundAuthenticatedHttpPutHandlerRequestObjectMatch
- Content: instance GHC.Internal.Classes.Ord Content.FoundCommentsInFunction
- Content: instance GHC.Internal.Classes.Ord Content.FoundConstStringMatch
- Content: instance GHC.Internal.Classes.Ord Content.FoundConstStringsMatching
- Content: instance GHC.Internal.Classes.Ord Content.FoundControlFlowPath
- Content: instance GHC.Internal.Classes.Ord Content.FoundControlFlowReachableFileActionSink
- Content: instance GHC.Internal.Classes.Ord Content.FoundControlFlowReachableFileActionSinkMatch
- Content: instance GHC.Internal.Classes.Ord Content.FoundControlFlowReachableSqlSink
- Content: instance GHC.Internal.Classes.Ord Content.FoundControlFlowReachableSqlSinkMatch
- Content: instance GHC.Internal.Classes.Ord Content.FoundDataFlowPath
- Content: instance GHC.Internal.Classes.Ord Content.FoundHttpGetHandlerRequestObject
- Content: instance GHC.Internal.Classes.Ord Content.FoundHttpGetHandlerRequestObjectMatch
- Content: instance GHC.Internal.Classes.Ord Content.FoundHttpPostHandlerRequestObjectMatch
- Content: instance GHC.Internal.Classes.Ord Content.FoundHttpPutHandlerRequestObjectMatch
- Content: instance GHC.Internal.Classes.Ord Content.FoundUnauthenticatedHttpGetHandlerRequestObject
- Content: instance GHC.Internal.Classes.Ord Content.FoundUnauthenticatedHttpPostHandlerRequestObject
- Content: instance GHC.Internal.Classes.Ord Content.FoundUnauthenticatedHttpPutHandlerRequestObject
- Content: instance GHC.Internal.Classes.Ord Content.FoundWriteContentToLocalFile
- Content: instance GHC.Internal.Classes.Ord Content.HttpGetHandlerRequestObject
- Content: instance GHC.Internal.Classes.Ord Content.SqlSinkKind
- Content: instance GHC.Internal.Classes.Ord Content.SqlSinkKindCount
- Content: instance GHC.Internal.Classes.Ord Content.UnauthenticatedHttpGetHandlerRequestObject
- Content: instance GHC.Internal.Classes.Ord Content.UnauthenticatedHttpPostHandlerRequestObject
- Content: instance GHC.Internal.Classes.Ord Content.UnauthenticatedHttpPutHandlerRequestObject
- Content: instance GHC.Internal.Classes.Ord Content.WriteContentToLocalFile
- Content: instance GHC.Internal.Generics.Generic Content.AuthEvidence
- Content: instance GHC.Internal.Generics.Generic Content.AuthenticatedHttpGetHandlerRequestObject
- Content: instance GHC.Internal.Generics.Generic Content.AuthenticatedHttpPostHandlerRequestObject
- Content: instance GHC.Internal.Generics.Generic Content.AuthenticatedHttpPutHandlerRequestObject
- Content: instance GHC.Internal.Generics.Generic Content.Comment
- Content: instance GHC.Internal.Generics.Generic Content.CommentsInFunction
- Content: instance GHC.Internal.Generics.Generic Content.ConstStringsMatching
- Content: instance GHC.Internal.Generics.Generic Content.ControlFlowPath
- Content: instance GHC.Internal.Generics.Generic Content.ControlFlowReachableFileActionSink
- Content: instance GHC.Internal.Generics.Generic Content.ControlFlowReachableSqlSink
- Content: instance GHC.Internal.Generics.Generic Content.DataFlowPath
- Content: instance GHC.Internal.Generics.Generic Content.FileActionKind
- Content: instance GHC.Internal.Generics.Generic Content.FileActionKindCount
- Content: instance GHC.Internal.Generics.Generic Content.FoundAuthenticatedHttpGetHandlerRequestObject
- Content: instance GHC.Internal.Generics.Generic Content.FoundAuthenticatedHttpGetHandlerRequestObjectMatch
- Content: instance GHC.Internal.Generics.Generic Content.FoundAuthenticatedHttpPostHandlerRequestObject
- Content: instance GHC.Internal.Generics.Generic Content.FoundAuthenticatedHttpPostHandlerRequestObjectMatch
- Content: instance GHC.Internal.Generics.Generic Content.FoundAuthenticatedHttpPutHandlerRequestObject
- Content: instance GHC.Internal.Generics.Generic Content.FoundAuthenticatedHttpPutHandlerRequestObjectMatch
- Content: instance GHC.Internal.Generics.Generic Content.FoundCommentsInFunction
- Content: instance GHC.Internal.Generics.Generic Content.FoundConstStringMatch
- Content: instance GHC.Internal.Generics.Generic Content.FoundConstStringsMatching
- Content: instance GHC.Internal.Generics.Generic Content.FoundControlFlowPath
- Content: instance GHC.Internal.Generics.Generic Content.FoundControlFlowReachableFileActionSink
- Content: instance GHC.Internal.Generics.Generic Content.FoundControlFlowReachableFileActionSinkMatch
- Content: instance GHC.Internal.Generics.Generic Content.FoundControlFlowReachableSqlSink
- Content: instance GHC.Internal.Generics.Generic Content.FoundControlFlowReachableSqlSinkMatch
- Content: instance GHC.Internal.Generics.Generic Content.FoundDataFlowPath
- Content: instance GHC.Internal.Generics.Generic Content.FoundHttpGetHandlerRequestObject
- Content: instance GHC.Internal.Generics.Generic Content.FoundHttpGetHandlerRequestObjectMatch
- Content: instance GHC.Internal.Generics.Generic Content.FoundHttpPostHandlerRequestObjectMatch
- Content: instance GHC.Internal.Generics.Generic Content.FoundHttpPutHandlerRequestObjectMatch
- Content: instance GHC.Internal.Generics.Generic Content.FoundUnauthenticatedHttpGetHandlerRequestObject
- Content: instance GHC.Internal.Generics.Generic Content.FoundUnauthenticatedHttpPostHandlerRequestObject
- Content: instance GHC.Internal.Generics.Generic Content.FoundUnauthenticatedHttpPutHandlerRequestObject
- Content: instance GHC.Internal.Generics.Generic Content.FoundWriteContentToLocalFile
- Content: instance GHC.Internal.Generics.Generic Content.HttpGetHandlerRequestObject
- Content: instance GHC.Internal.Generics.Generic Content.SqlSinkKind
- Content: instance GHC.Internal.Generics.Generic Content.SqlSinkKindCount
- Content: instance GHC.Internal.Generics.Generic Content.UnauthenticatedHttpGetHandlerRequestObject
- Content: instance GHC.Internal.Generics.Generic Content.UnauthenticatedHttpPostHandlerRequestObject
- Content: instance GHC.Internal.Generics.Generic Content.UnauthenticatedHttpPutHandlerRequestObject
- Content: instance GHC.Internal.Generics.Generic Content.WriteContentToLocalFile
- Content: instance GHC.Internal.Show.Show Content.AuthEvidence
- Content: instance GHC.Internal.Show.Show Content.AuthenticatedHttpGetHandlerRequestObject
- Content: instance GHC.Internal.Show.Show Content.AuthenticatedHttpPostHandlerRequestObject
- Content: instance GHC.Internal.Show.Show Content.AuthenticatedHttpPutHandlerRequestObject
- Content: instance GHC.Internal.Show.Show Content.Comment
- Content: instance GHC.Internal.Show.Show Content.CommentsInFunction
- Content: instance GHC.Internal.Show.Show Content.ConstStringsMatching
- Content: instance GHC.Internal.Show.Show Content.ControlFlowPath
- Content: instance GHC.Internal.Show.Show Content.ControlFlowReachableFileActionSink
- Content: instance GHC.Internal.Show.Show Content.ControlFlowReachableSqlSink
- Content: instance GHC.Internal.Show.Show Content.DataFlowPath
- Content: instance GHC.Internal.Show.Show Content.FileActionKind
- Content: instance GHC.Internal.Show.Show Content.FileActionKindCount
- Content: instance GHC.Internal.Show.Show Content.FoundAuthenticatedHttpGetHandlerRequestObject
- Content: instance GHC.Internal.Show.Show Content.FoundAuthenticatedHttpGetHandlerRequestObjectMatch
- Content: instance GHC.Internal.Show.Show Content.FoundAuthenticatedHttpPostHandlerRequestObject
- Content: instance GHC.Internal.Show.Show Content.FoundAuthenticatedHttpPostHandlerRequestObjectMatch
- Content: instance GHC.Internal.Show.Show Content.FoundAuthenticatedHttpPutHandlerRequestObject
- Content: instance GHC.Internal.Show.Show Content.FoundAuthenticatedHttpPutHandlerRequestObjectMatch
- Content: instance GHC.Internal.Show.Show Content.FoundCommentsInFunction
- Content: instance GHC.Internal.Show.Show Content.FoundConstStringMatch
- Content: instance GHC.Internal.Show.Show Content.FoundConstStringsMatching
- Content: instance GHC.Internal.Show.Show Content.FoundControlFlowPath
- Content: instance GHC.Internal.Show.Show Content.FoundControlFlowReachableFileActionSink
- Content: instance GHC.Internal.Show.Show Content.FoundControlFlowReachableFileActionSinkMatch
- Content: instance GHC.Internal.Show.Show Content.FoundControlFlowReachableSqlSink
- Content: instance GHC.Internal.Show.Show Content.FoundControlFlowReachableSqlSinkMatch
- Content: instance GHC.Internal.Show.Show Content.FoundDataFlowPath
- Content: instance GHC.Internal.Show.Show Content.FoundHttpGetHandlerRequestObject
- Content: instance GHC.Internal.Show.Show Content.FoundHttpGetHandlerRequestObjectMatch
- Content: instance GHC.Internal.Show.Show Content.FoundHttpPostHandlerRequestObjectMatch
- Content: instance GHC.Internal.Show.Show Content.FoundHttpPutHandlerRequestObjectMatch
- Content: instance GHC.Internal.Show.Show Content.FoundUnauthenticatedHttpGetHandlerRequestObject
- Content: instance GHC.Internal.Show.Show Content.FoundUnauthenticatedHttpPostHandlerRequestObject
- Content: instance GHC.Internal.Show.Show Content.FoundUnauthenticatedHttpPutHandlerRequestObject
- Content: instance GHC.Internal.Show.Show Content.FoundWriteContentToLocalFile
- Content: instance GHC.Internal.Show.Show Content.HttpGetHandlerRequestObject
- Content: instance GHC.Internal.Show.Show Content.SqlSinkKind
- Content: instance GHC.Internal.Show.Show Content.SqlSinkKindCount
- Content: instance GHC.Internal.Show.Show Content.UnauthenticatedHttpGetHandlerRequestObject
- Content: instance GHC.Internal.Show.Show Content.UnauthenticatedHttpPostHandlerRequestObject
- Content: instance GHC.Internal.Show.Show Content.UnauthenticatedHttpPutHandlerRequestObject
- Content: instance GHC.Internal.Show.Show Content.WriteContentToLocalFile
- Kbapi: AuthenticatedHttpGetHandlerRequestObject :: AuthenticatedHttpGetHandlerRequestObject -> Query
- Kbapi: AuthenticatedHttpPostHandlerRequestObject :: AuthenticatedHttpPostHandlerRequestObject -> Query
- Kbapi: AuthenticatedHttpPutHandlerRequestObject :: AuthenticatedHttpPutHandlerRequestObject -> Query
- Kbapi: CommentsInFunction :: CommentsInFunction -> Query
- Kbapi: ConstStringsMatching :: ConstStringsMatching -> Query
- Kbapi: ControlFlowPath :: ControlFlowPath -> Query
- Kbapi: ControlFlowReachableFileActionSink :: ControlFlowReachableFileActionSink -> Query
- Kbapi: ControlFlowReachableSqlSink :: ControlFlowReachableSqlSink -> Query
- Kbapi: DataFlowPath :: DataFlowPath -> Query
- Kbapi: FoundAuthenticatedHttpGetHandlerRequestObject :: FoundAuthenticatedHttpGetHandlerRequestObject -> QueryResult
- Kbapi: FoundAuthenticatedHttpPostHandlerRequestObject :: FoundAuthenticatedHttpPostHandlerRequestObject -> QueryResult
- Kbapi: FoundAuthenticatedHttpPutHandlerRequestObject :: FoundAuthenticatedHttpPutHandlerRequestObject -> QueryResult
- Kbapi: FoundControlFlowPath :: FoundControlFlowPath -> QueryResult
- Kbapi: FoundControlFlowReachableFileActionSink :: FoundControlFlowReachableFileActionSink -> QueryResult
- Kbapi: FoundControlFlowReachableSqlSink :: FoundControlFlowReachableSqlSink -> QueryResult
- Kbapi: FoundHttpGetHandlerRequestObject :: FoundHttpGetHandlerRequestObject -> QueryResult
- Kbapi: FoundUnauthenticatedHttpGetHandlerRequestObject :: FoundUnauthenticatedHttpGetHandlerRequestObject -> QueryResult
- Kbapi: FoundUnauthenticatedHttpPostHandlerRequestObject :: FoundUnauthenticatedHttpPostHandlerRequestObject -> QueryResult
- Kbapi: FoundUnauthenticatedHttpPutHandlerRequestObject :: FoundUnauthenticatedHttpPutHandlerRequestObject -> QueryResult
- Kbapi: FoundWriteContentToLocalFile :: FoundWriteContentToLocalFile -> QueryResult
- Kbapi: HttpGetHandlerRequestObject :: HttpGetHandlerRequestObject -> Query
- Kbapi: UnauthenticatedHttpGetHandlerRequestObject :: UnauthenticatedHttpGetHandlerRequestObject -> Query
- Kbapi: UnauthenticatedHttpPostHandlerRequestObject :: UnauthenticatedHttpPostHandlerRequestObject -> Query
- Kbapi: UnauthenticatedHttpPutHandlerRequestObject :: UnauthenticatedHttpPutHandlerRequestObject -> Query
- Kbapi: WriteContentToLocalFile :: WriteContentToLocalFile -> Query
+ Kbapi: FoundControlFlowReachableSinks :: Content -> QueryResult
+ Kbapi: FoundHttpHandlers :: Content -> QueryResult
+ Kbapi: FoundSanitizers :: Content -> QueryResult
+ Kbapi: SelectComments :: Features -> Query
+ Kbapi: SelectConstStrings :: Features -> Query
+ Kbapi: SelectControlFlowReachableSinks :: Features -> Query
+ Kbapi: SelectDataFlowPath :: Features -> Query
+ Kbapi: SelectHttpHandlers :: Features -> Query
+ Kbapi: SelectSanitizers :: Features -> Query
+ WithComments: Comment :: Location -> String -> Comment
+ WithComments: Content :: Word -> [Comment] -> Content
+ WithComments: Features :: Location -> Word -> Features
+ WithComments: [commentContent] :: Comment -> String
+ WithComments: [commentLocation] :: Comment -> Location
+ WithComments: [inFunction] :: Features -> Location
+ WithComments: [matches] :: Content -> [Comment]
+ WithComments: [maxNumComments] :: Features -> Word
+ WithComments: [total] :: Content -> Word
+ WithComments: data Comment
+ WithComments: data Content
+ WithComments: data Features
+ WithComments: instance Data.Aeson.Types.FromJSON.FromJSON WithComments.Comment
+ WithComments: instance Data.Aeson.Types.FromJSON.FromJSON WithComments.Content
+ WithComments: instance Data.Aeson.Types.FromJSON.FromJSON WithComments.Features
+ WithComments: instance Data.Aeson.Types.ToJSON.ToJSON WithComments.Comment
+ WithComments: instance Data.Aeson.Types.ToJSON.ToJSON WithComments.Content
+ WithComments: instance Data.Aeson.Types.ToJSON.ToJSON WithComments.Features
+ WithComments: instance GHC.Internal.Classes.Eq WithComments.Comment
+ WithComments: instance GHC.Internal.Classes.Eq WithComments.Content
+ WithComments: instance GHC.Internal.Classes.Eq WithComments.Features
+ WithComments: instance GHC.Internal.Classes.Ord WithComments.Comment
+ WithComments: instance GHC.Internal.Classes.Ord WithComments.Content
+ WithComments: instance GHC.Internal.Classes.Ord WithComments.Features
+ WithComments: instance GHC.Internal.Generics.Generic WithComments.Comment
+ WithComments: instance GHC.Internal.Generics.Generic WithComments.Content
+ WithComments: instance GHC.Internal.Generics.Generic WithComments.Features
+ WithComments: instance GHC.Internal.Show.Show WithComments.Comment
+ WithComments: instance GHC.Internal.Show.Show WithComments.Content
+ WithComments: instance GHC.Internal.Show.Show WithComments.Features
+ WithConstStrings: Content :: Word -> [Match] -> Content
+ WithConstStrings: Features :: String -> Word -> Features
+ WithConstStrings: Match :: Location -> String -> Match
+ WithConstStrings: [location] :: Match -> Location
+ WithConstStrings: [matches] :: Content -> [Match]
+ WithConstStrings: [matchingRegex] :: Features -> String
+ WithConstStrings: [maxNumConstStrings] :: Features -> Word
+ WithConstStrings: [total] :: Content -> Word
+ WithConstStrings: [value] :: Match -> String
+ WithConstStrings: data Content
+ WithConstStrings: data Features
+ WithConstStrings: data Match
+ WithConstStrings: instance Data.Aeson.Types.FromJSON.FromJSON WithConstStrings.Content
+ WithConstStrings: instance Data.Aeson.Types.FromJSON.FromJSON WithConstStrings.Features
+ WithConstStrings: instance Data.Aeson.Types.FromJSON.FromJSON WithConstStrings.Match
+ WithConstStrings: instance Data.Aeson.Types.ToJSON.ToJSON WithConstStrings.Content
+ WithConstStrings: instance Data.Aeson.Types.ToJSON.ToJSON WithConstStrings.Features
+ WithConstStrings: instance Data.Aeson.Types.ToJSON.ToJSON WithConstStrings.Match
+ WithConstStrings: instance GHC.Internal.Classes.Eq WithConstStrings.Content
+ WithConstStrings: instance GHC.Internal.Classes.Eq WithConstStrings.Features
+ WithConstStrings: instance GHC.Internal.Classes.Eq WithConstStrings.Match
+ WithConstStrings: instance GHC.Internal.Classes.Ord WithConstStrings.Content
+ WithConstStrings: instance GHC.Internal.Classes.Ord WithConstStrings.Features
+ WithConstStrings: instance GHC.Internal.Classes.Ord WithConstStrings.Match
+ WithConstStrings: instance GHC.Internal.Generics.Generic WithConstStrings.Content
+ WithConstStrings: instance GHC.Internal.Generics.Generic WithConstStrings.Features
+ WithConstStrings: instance GHC.Internal.Generics.Generic WithConstStrings.Match
+ WithConstStrings: instance GHC.Internal.Show.Show WithConstStrings.Content
+ WithConstStrings: instance GHC.Internal.Show.Show WithConstStrings.Features
+ WithConstStrings: instance GHC.Internal.Show.Show WithConstStrings.Match
+ WithControlFlowReachableSinks: Content :: Word -> [Match] -> Content
+ WithControlFlowReachableSinks: Features :: Location -> Set Sink -> Word -> Word -> Features
+ WithControlFlowReachableSinks: FileOperationDelete :: Sink
+ WithControlFlowReachableSinks: FileOperationRead :: Sink
+ WithControlFlowReachableSinks: FileOperationWrite :: Sink
+ WithControlFlowReachableSinks: Match :: Location -> String -> Sink -> Match
+ WithControlFlowReachableSinks: OpenRedirect :: Sink
+ WithControlFlowReachableSinks: SQL :: Sink
+ WithControlFlowReachableSinks: SSRF :: Sink
+ WithControlFlowReachableSinks: [from] :: Features -> Location
+ WithControlFlowReachableSinks: [kind] :: Match -> Sink
+ WithControlFlowReachableSinks: [location] :: Match -> Location
+ WithControlFlowReachableSinks: [matches] :: Content -> [Match]
+ WithControlFlowReachableSinks: [maxNumHops] :: Features -> Word
+ WithControlFlowReachableSinks: [maxNumSinks] :: Features -> Word
+ WithControlFlowReachableSinks: [qualifiedName] :: Match -> String
+ WithControlFlowReachableSinks: [sinks] :: Features -> Set Sink
+ WithControlFlowReachableSinks: [total] :: Content -> Word
+ WithControlFlowReachableSinks: data Content
+ WithControlFlowReachableSinks: data Features
+ WithControlFlowReachableSinks: data Match
+ WithControlFlowReachableSinks: data Sink
+ WithControlFlowReachableSinks: instance Data.Aeson.Types.FromJSON.FromJSON WithControlFlowReachableSinks.Content
+ WithControlFlowReachableSinks: instance Data.Aeson.Types.FromJSON.FromJSON WithControlFlowReachableSinks.Features
+ WithControlFlowReachableSinks: instance Data.Aeson.Types.FromJSON.FromJSON WithControlFlowReachableSinks.Match
+ WithControlFlowReachableSinks: instance Data.Aeson.Types.FromJSON.FromJSON WithControlFlowReachableSinks.Sink
+ WithControlFlowReachableSinks: instance Data.Aeson.Types.ToJSON.ToJSON WithControlFlowReachableSinks.Content
+ WithControlFlowReachableSinks: instance Data.Aeson.Types.ToJSON.ToJSON WithControlFlowReachableSinks.Features
+ WithControlFlowReachableSinks: instance Data.Aeson.Types.ToJSON.ToJSON WithControlFlowReachableSinks.Match
+ WithControlFlowReachableSinks: instance Data.Aeson.Types.ToJSON.ToJSON WithControlFlowReachableSinks.Sink
+ WithControlFlowReachableSinks: instance GHC.Internal.Classes.Eq WithControlFlowReachableSinks.Content
+ WithControlFlowReachableSinks: instance GHC.Internal.Classes.Eq WithControlFlowReachableSinks.Features
+ WithControlFlowReachableSinks: instance GHC.Internal.Classes.Eq WithControlFlowReachableSinks.Match
+ WithControlFlowReachableSinks: instance GHC.Internal.Classes.Eq WithControlFlowReachableSinks.Sink
+ WithControlFlowReachableSinks: instance GHC.Internal.Classes.Ord WithControlFlowReachableSinks.Content
+ WithControlFlowReachableSinks: instance GHC.Internal.Classes.Ord WithControlFlowReachableSinks.Features
+ WithControlFlowReachableSinks: instance GHC.Internal.Classes.Ord WithControlFlowReachableSinks.Match
+ WithControlFlowReachableSinks: instance GHC.Internal.Classes.Ord WithControlFlowReachableSinks.Sink
+ WithControlFlowReachableSinks: instance GHC.Internal.Generics.Generic WithControlFlowReachableSinks.Content
+ WithControlFlowReachableSinks: instance GHC.Internal.Generics.Generic WithControlFlowReachableSinks.Features
+ WithControlFlowReachableSinks: instance GHC.Internal.Generics.Generic WithControlFlowReachableSinks.Match
+ WithControlFlowReachableSinks: instance GHC.Internal.Generics.Generic WithControlFlowReachableSinks.Sink
+ WithControlFlowReachableSinks: instance GHC.Internal.Show.Show WithControlFlowReachableSinks.Content
+ WithControlFlowReachableSinks: instance GHC.Internal.Show.Show WithControlFlowReachableSinks.Features
+ WithControlFlowReachableSinks: instance GHC.Internal.Show.Show WithControlFlowReachableSinks.Match
+ WithControlFlowReachableSinks: instance GHC.Internal.Show.Show WithControlFlowReachableSinks.Sink
+ WithDataFlowPath: Content :: Maybe [Location] -> Content
+ WithDataFlowPath: Features :: Location -> Location -> Word -> Word -> Features
+ WithDataFlowPath: [from] :: Features -> Location
+ WithDataFlowPath: [maxNumInterProceduralEdges] :: Features -> Word
+ WithDataFlowPath: [maxNumIntraProceduralEdges] :: Features -> Word
+ WithDataFlowPath: [path] :: Content -> Maybe [Location]
+ WithDataFlowPath: [to] :: Features -> Location
+ WithDataFlowPath: data Content
+ WithDataFlowPath: data Features
+ WithDataFlowPath: instance Data.Aeson.Types.FromJSON.FromJSON WithDataFlowPath.Content
+ WithDataFlowPath: instance Data.Aeson.Types.FromJSON.FromJSON WithDataFlowPath.Features
+ WithDataFlowPath: instance Data.Aeson.Types.ToJSON.ToJSON WithDataFlowPath.Content
+ WithDataFlowPath: instance Data.Aeson.Types.ToJSON.ToJSON WithDataFlowPath.Features
+ WithDataFlowPath: instance GHC.Internal.Classes.Eq WithDataFlowPath.Content
+ WithDataFlowPath: instance GHC.Internal.Classes.Eq WithDataFlowPath.Features
+ WithDataFlowPath: instance GHC.Internal.Classes.Ord WithDataFlowPath.Content
+ WithDataFlowPath: instance GHC.Internal.Classes.Ord WithDataFlowPath.Features
+ WithDataFlowPath: instance GHC.Internal.Generics.Generic WithDataFlowPath.Content
+ WithDataFlowPath: instance GHC.Internal.Generics.Generic WithDataFlowPath.Features
+ WithDataFlowPath: instance GHC.Internal.Show.Show WithDataFlowPath.Content
+ WithDataFlowPath: instance GHC.Internal.Show.Show WithDataFlowPath.Features
+ WithHttpHandlers: AnonymousFunction :: HttpHandlerDef
+ WithHttpHandlers: Authenticated :: AuthFilter
+ WithHttpHandlers: Authentication :: String -> AuthEvidence -> Authentication
+ WithHttpHandlers: ByAllButOneBadReturn :: AuthEvidence
+ WithHttpHandlers: ByHeaderNullCheck :: String -> AuthEvidence
+ WithHttpHandlers: ClassName :: String -> ClassName
+ WithHttpHandlers: Content :: Word -> [HttpHandler] -> Content
+ WithHttpHandlers: CookieValue :: Location -> CookieValue
+ WithHttpHandlers: CookieValueCtor :: CookieValue -> UserInput
+ WithHttpHandlers: Delete :: HttpVerb
+ WithHttpHandlers: Features :: Set HttpVerb -> Set AuthFilter -> Maybe [String] -> Word -> Features
+ WithHttpHandlers: FunctionName :: String -> FunctionName
+ WithHttpHandlers: Get :: HttpVerb
+ WithHttpHandlers: HttpHandler :: HttpVerb -> Location -> HttpHandlerDef -> String -> [UserInput] -> Maybe Authentication -> HttpHandler
+ WithHttpHandlers: MethodName :: String -> MethodName
+ WithHttpHandlers: MethodOfClass :: MethodName -> ClassName -> HttpHandlerDef
+ WithHttpHandlers: NamedFunction :: FunctionName -> HttpHandlerDef
+ WithHttpHandlers: Patch :: HttpVerb
+ WithHttpHandlers: PathVariable :: Location -> PathVariable
+ WithHttpHandlers: PathVariableCtor :: PathVariable -> UserInput
+ WithHttpHandlers: Post :: HttpVerb
+ WithHttpHandlers: Put :: HttpVerb
+ WithHttpHandlers: RequestBody :: Location -> RequestBody
+ WithHttpHandlers: RequestBodyCtor :: RequestBody -> UserInput
+ WithHttpHandlers: RequestHeader :: Location -> RequestHeader
+ WithHttpHandlers: RequestHeaderCtor :: RequestHeader -> UserInput
+ WithHttpHandlers: RequestObject :: Location -> RequestObject
+ WithHttpHandlers: RequestObjectCtor :: RequestObject -> UserInput
+ WithHttpHandlers: RequestParam :: String -> Location -> RequestParam
+ WithHttpHandlers: RequestParamCtor :: RequestParam -> UserInput
+ WithHttpHandlers: RequestPart :: Location -> RequestPart
+ WithHttpHandlers: RequestPartCtor :: RequestPart -> UserInput
+ WithHttpHandlers: Unauthenticated :: AuthFilter
+ WithHttpHandlers: [authenticationEvidence] :: Authentication -> AuthEvidence
+ WithHttpHandlers: [authenticationFunctionName] :: Authentication -> String
+ WithHttpHandlers: [authentications] :: Features -> Set AuthFilter
+ WithHttpHandlers: [httpHandlerAuth] :: HttpHandler -> Maybe Authentication
+ WithHttpHandlers: [httpHandlerDef] :: HttpHandler -> HttpHandlerDef
+ WithHttpHandlers: [httpHandlerLocation] :: HttpHandler -> Location
+ WithHttpHandlers: [httpHandlerUrl] :: HttpHandler -> String
+ WithHttpHandlers: [httpHandlerUserInputs] :: HttpHandler -> [UserInput]
+ WithHttpHandlers: [httpHandlerVerb] :: HttpHandler -> HttpVerb
+ WithHttpHandlers: [matches] :: Content -> [HttpHandler]
+ WithHttpHandlers: [maxNumHttpHandlers] :: Features -> Word
+ WithHttpHandlers: [requestParamLocation] :: RequestParam -> Location
+ WithHttpHandlers: [requestParamName] :: RequestParam -> String
+ WithHttpHandlers: [routeContainsUrlParts] :: Features -> Maybe [String]
+ WithHttpHandlers: [total] :: Content -> Word
+ WithHttpHandlers: [verbs] :: Features -> Set HttpVerb
+ WithHttpHandlers: data AuthEvidence
+ WithHttpHandlers: data AuthFilter
+ WithHttpHandlers: data Authentication
+ WithHttpHandlers: data ClassName
+ WithHttpHandlers: data Content
+ WithHttpHandlers: data CookieValue
+ WithHttpHandlers: data Features
+ WithHttpHandlers: data FunctionName
+ WithHttpHandlers: data HttpHandler
+ WithHttpHandlers: data HttpHandlerDef
+ WithHttpHandlers: data HttpVerb
+ WithHttpHandlers: data MethodName
+ WithHttpHandlers: data PathVariable
+ WithHttpHandlers: data RequestBody
+ WithHttpHandlers: data RequestHeader
+ WithHttpHandlers: data RequestObject
+ WithHttpHandlers: data RequestParam
+ WithHttpHandlers: data RequestPart
+ WithHttpHandlers: data UserInput
+ WithHttpHandlers: instance Data.Aeson.Types.FromJSON.FromJSON WithHttpHandlers.AuthEvidence
+ WithHttpHandlers: instance Data.Aeson.Types.FromJSON.FromJSON WithHttpHandlers.AuthFilter
+ WithHttpHandlers: instance Data.Aeson.Types.FromJSON.FromJSON WithHttpHandlers.Authentication
+ WithHttpHandlers: instance Data.Aeson.Types.FromJSON.FromJSON WithHttpHandlers.ClassName
+ WithHttpHandlers: instance Data.Aeson.Types.FromJSON.FromJSON WithHttpHandlers.Content
+ WithHttpHandlers: instance Data.Aeson.Types.FromJSON.FromJSON WithHttpHandlers.CookieValue
+ WithHttpHandlers: instance Data.Aeson.Types.FromJSON.FromJSON WithHttpHandlers.Features
+ WithHttpHandlers: instance Data.Aeson.Types.FromJSON.FromJSON WithHttpHandlers.FunctionName
+ WithHttpHandlers: instance Data.Aeson.Types.FromJSON.FromJSON WithHttpHandlers.HttpHandler
+ WithHttpHandlers: instance Data.Aeson.Types.FromJSON.FromJSON WithHttpHandlers.HttpHandlerDef
+ WithHttpHandlers: instance Data.Aeson.Types.FromJSON.FromJSON WithHttpHandlers.HttpVerb
+ WithHttpHandlers: instance Data.Aeson.Types.FromJSON.FromJSON WithHttpHandlers.MethodName
+ WithHttpHandlers: instance Data.Aeson.Types.FromJSON.FromJSON WithHttpHandlers.PathVariable
+ WithHttpHandlers: instance Data.Aeson.Types.FromJSON.FromJSON WithHttpHandlers.RequestBody
+ WithHttpHandlers: instance Data.Aeson.Types.FromJSON.FromJSON WithHttpHandlers.RequestHeader
+ WithHttpHandlers: instance Data.Aeson.Types.FromJSON.FromJSON WithHttpHandlers.RequestObject
+ WithHttpHandlers: instance Data.Aeson.Types.FromJSON.FromJSON WithHttpHandlers.RequestParam
+ WithHttpHandlers: instance Data.Aeson.Types.FromJSON.FromJSON WithHttpHandlers.RequestPart
+ WithHttpHandlers: instance Data.Aeson.Types.FromJSON.FromJSON WithHttpHandlers.UserInput
+ WithHttpHandlers: instance Data.Aeson.Types.ToJSON.ToJSON WithHttpHandlers.AuthEvidence
+ WithHttpHandlers: instance Data.Aeson.Types.ToJSON.ToJSON WithHttpHandlers.AuthFilter
+ WithHttpHandlers: instance Data.Aeson.Types.ToJSON.ToJSON WithHttpHandlers.Authentication
+ WithHttpHandlers: instance Data.Aeson.Types.ToJSON.ToJSON WithHttpHandlers.ClassName
+ WithHttpHandlers: instance Data.Aeson.Types.ToJSON.ToJSON WithHttpHandlers.Content
+ WithHttpHandlers: instance Data.Aeson.Types.ToJSON.ToJSON WithHttpHandlers.CookieValue
+ WithHttpHandlers: instance Data.Aeson.Types.ToJSON.ToJSON WithHttpHandlers.Features
+ WithHttpHandlers: instance Data.Aeson.Types.ToJSON.ToJSON WithHttpHandlers.FunctionName
+ WithHttpHandlers: instance Data.Aeson.Types.ToJSON.ToJSON WithHttpHandlers.HttpHandler
+ WithHttpHandlers: instance Data.Aeson.Types.ToJSON.ToJSON WithHttpHandlers.HttpHandlerDef
+ WithHttpHandlers: instance Data.Aeson.Types.ToJSON.ToJSON WithHttpHandlers.HttpVerb
+ WithHttpHandlers: instance Data.Aeson.Types.ToJSON.ToJSON WithHttpHandlers.MethodName
+ WithHttpHandlers: instance Data.Aeson.Types.ToJSON.ToJSON WithHttpHandlers.PathVariable
+ WithHttpHandlers: instance Data.Aeson.Types.ToJSON.ToJSON WithHttpHandlers.RequestBody
+ WithHttpHandlers: instance Data.Aeson.Types.ToJSON.ToJSON WithHttpHandlers.RequestHeader
+ WithHttpHandlers: instance Data.Aeson.Types.ToJSON.ToJSON WithHttpHandlers.RequestObject
+ WithHttpHandlers: instance Data.Aeson.Types.ToJSON.ToJSON WithHttpHandlers.RequestParam
+ WithHttpHandlers: instance Data.Aeson.Types.ToJSON.ToJSON WithHttpHandlers.RequestPart
+ WithHttpHandlers: instance Data.Aeson.Types.ToJSON.ToJSON WithHttpHandlers.UserInput
+ WithHttpHandlers: instance GHC.Internal.Classes.Eq WithHttpHandlers.AuthEvidence
+ WithHttpHandlers: instance GHC.Internal.Classes.Eq WithHttpHandlers.AuthFilter
+ WithHttpHandlers: instance GHC.Internal.Classes.Eq WithHttpHandlers.Authentication
+ WithHttpHandlers: instance GHC.Internal.Classes.Eq WithHttpHandlers.ClassName
+ WithHttpHandlers: instance GHC.Internal.Classes.Eq WithHttpHandlers.Content
+ WithHttpHandlers: instance GHC.Internal.Classes.Eq WithHttpHandlers.CookieValue
+ WithHttpHandlers: instance GHC.Internal.Classes.Eq WithHttpHandlers.Features
+ WithHttpHandlers: instance GHC.Internal.Classes.Eq WithHttpHandlers.FunctionName
+ WithHttpHandlers: instance GHC.Internal.Classes.Eq WithHttpHandlers.HttpHandler
+ WithHttpHandlers: instance GHC.Internal.Classes.Eq WithHttpHandlers.HttpHandlerDef
+ WithHttpHandlers: instance GHC.Internal.Classes.Eq WithHttpHandlers.HttpVerb
+ WithHttpHandlers: instance GHC.Internal.Classes.Eq WithHttpHandlers.MethodName
+ WithHttpHandlers: instance GHC.Internal.Classes.Eq WithHttpHandlers.PathVariable
+ WithHttpHandlers: instance GHC.Internal.Classes.Eq WithHttpHandlers.RequestBody
+ WithHttpHandlers: instance GHC.Internal.Classes.Eq WithHttpHandlers.RequestHeader
+ WithHttpHandlers: instance GHC.Internal.Classes.Eq WithHttpHandlers.RequestObject
+ WithHttpHandlers: instance GHC.Internal.Classes.Eq WithHttpHandlers.RequestParam
+ WithHttpHandlers: instance GHC.Internal.Classes.Eq WithHttpHandlers.RequestPart
+ WithHttpHandlers: instance GHC.Internal.Classes.Eq WithHttpHandlers.UserInput
+ WithHttpHandlers: instance GHC.Internal.Classes.Ord WithHttpHandlers.AuthEvidence
+ WithHttpHandlers: instance GHC.Internal.Classes.Ord WithHttpHandlers.AuthFilter
+ WithHttpHandlers: instance GHC.Internal.Classes.Ord WithHttpHandlers.Authentication
+ WithHttpHandlers: instance GHC.Internal.Classes.Ord WithHttpHandlers.ClassName
+ WithHttpHandlers: instance GHC.Internal.Classes.Ord WithHttpHandlers.Content
+ WithHttpHandlers: instance GHC.Internal.Classes.Ord WithHttpHandlers.CookieValue
+ WithHttpHandlers: instance GHC.Internal.Classes.Ord WithHttpHandlers.Features
+ WithHttpHandlers: instance GHC.Internal.Classes.Ord WithHttpHandlers.FunctionName
+ WithHttpHandlers: instance GHC.Internal.Classes.Ord WithHttpHandlers.HttpHandler
+ WithHttpHandlers: instance GHC.Internal.Classes.Ord WithHttpHandlers.HttpHandlerDef
+ WithHttpHandlers: instance GHC.Internal.Classes.Ord WithHttpHandlers.HttpVerb
+ WithHttpHandlers: instance GHC.Internal.Classes.Ord WithHttpHandlers.MethodName
+ WithHttpHandlers: instance GHC.Internal.Classes.Ord WithHttpHandlers.PathVariable
+ WithHttpHandlers: instance GHC.Internal.Classes.Ord WithHttpHandlers.RequestBody
+ WithHttpHandlers: instance GHC.Internal.Classes.Ord WithHttpHandlers.RequestHeader
+ WithHttpHandlers: instance GHC.Internal.Classes.Ord WithHttpHandlers.RequestObject
+ WithHttpHandlers: instance GHC.Internal.Classes.Ord WithHttpHandlers.RequestParam
+ WithHttpHandlers: instance GHC.Internal.Classes.Ord WithHttpHandlers.RequestPart
+ WithHttpHandlers: instance GHC.Internal.Classes.Ord WithHttpHandlers.UserInput
+ WithHttpHandlers: instance GHC.Internal.Generics.Generic WithHttpHandlers.AuthEvidence
+ WithHttpHandlers: instance GHC.Internal.Generics.Generic WithHttpHandlers.AuthFilter
+ WithHttpHandlers: instance GHC.Internal.Generics.Generic WithHttpHandlers.Authentication
+ WithHttpHandlers: instance GHC.Internal.Generics.Generic WithHttpHandlers.ClassName
+ WithHttpHandlers: instance GHC.Internal.Generics.Generic WithHttpHandlers.Content
+ WithHttpHandlers: instance GHC.Internal.Generics.Generic WithHttpHandlers.CookieValue
+ WithHttpHandlers: instance GHC.Internal.Generics.Generic WithHttpHandlers.Features
+ WithHttpHandlers: instance GHC.Internal.Generics.Generic WithHttpHandlers.FunctionName
+ WithHttpHandlers: instance GHC.Internal.Generics.Generic WithHttpHandlers.HttpHandler
+ WithHttpHandlers: instance GHC.Internal.Generics.Generic WithHttpHandlers.HttpHandlerDef
+ WithHttpHandlers: instance GHC.Internal.Generics.Generic WithHttpHandlers.HttpVerb
+ WithHttpHandlers: instance GHC.Internal.Generics.Generic WithHttpHandlers.MethodName
+ WithHttpHandlers: instance GHC.Internal.Generics.Generic WithHttpHandlers.PathVariable
+ WithHttpHandlers: instance GHC.Internal.Generics.Generic WithHttpHandlers.RequestBody
+ WithHttpHandlers: instance GHC.Internal.Generics.Generic WithHttpHandlers.RequestHeader
+ WithHttpHandlers: instance GHC.Internal.Generics.Generic WithHttpHandlers.RequestObject
+ WithHttpHandlers: instance GHC.Internal.Generics.Generic WithHttpHandlers.RequestParam
+ WithHttpHandlers: instance GHC.Internal.Generics.Generic WithHttpHandlers.RequestPart
+ WithHttpHandlers: instance GHC.Internal.Generics.Generic WithHttpHandlers.UserInput
+ WithHttpHandlers: instance GHC.Internal.Show.Show WithHttpHandlers.AuthEvidence
+ WithHttpHandlers: instance GHC.Internal.Show.Show WithHttpHandlers.AuthFilter
+ WithHttpHandlers: instance GHC.Internal.Show.Show WithHttpHandlers.Authentication
+ WithHttpHandlers: instance GHC.Internal.Show.Show WithHttpHandlers.ClassName
+ WithHttpHandlers: instance GHC.Internal.Show.Show WithHttpHandlers.Content
+ WithHttpHandlers: instance GHC.Internal.Show.Show WithHttpHandlers.CookieValue
+ WithHttpHandlers: instance GHC.Internal.Show.Show WithHttpHandlers.Features
+ WithHttpHandlers: instance GHC.Internal.Show.Show WithHttpHandlers.FunctionName
+ WithHttpHandlers: instance GHC.Internal.Show.Show WithHttpHandlers.HttpHandler
+ WithHttpHandlers: instance GHC.Internal.Show.Show WithHttpHandlers.HttpHandlerDef
+ WithHttpHandlers: instance GHC.Internal.Show.Show WithHttpHandlers.HttpVerb
+ WithHttpHandlers: instance GHC.Internal.Show.Show WithHttpHandlers.MethodName
+ WithHttpHandlers: instance GHC.Internal.Show.Show WithHttpHandlers.PathVariable
+ WithHttpHandlers: instance GHC.Internal.Show.Show WithHttpHandlers.RequestBody
+ WithHttpHandlers: instance GHC.Internal.Show.Show WithHttpHandlers.RequestHeader
+ WithHttpHandlers: instance GHC.Internal.Show.Show WithHttpHandlers.RequestObject
+ WithHttpHandlers: instance GHC.Internal.Show.Show WithHttpHandlers.RequestParam
+ WithHttpHandlers: instance GHC.Internal.Show.Show WithHttpHandlers.RequestPart
+ WithHttpHandlers: instance GHC.Internal.Show.Show WithHttpHandlers.UserInput
+ WithSanitizers: Content :: Word -> [Sanitizer] -> Content
+ WithSanitizers: Features :: Location -> Location -> Word -> Features
+ WithSanitizers: FlowStep :: Location -> Maybe String -> FlowStep
+ WithSanitizers: IfThenElse :: PartCall -> Word -> [FlowStep] -> [PartCall] -> [PartCall] -> IfThenElse
+ WithSanitizers: PartCall :: Location -> Maybe String -> [String] -> PartCall
+ WithSanitizers: TopLevelIfThenElse :: IfThenElse -> Sanitizer
+ WithSanitizers: [cond] :: IfThenElse -> PartCall
+ WithSanitizers: [constStringArgs] :: PartCall -> [String]
+ WithSanitizers: [elsePart] :: IfThenElse -> [PartCall]
+ WithSanitizers: [flowStepLocation] :: FlowStep -> Location
+ WithSanitizers: [flowStepQualifiedName] :: FlowStep -> Maybe String
+ WithSanitizers: [location] :: PartCall -> Location
+ WithSanitizers: [matches] :: Content -> [Sanitizer]
+ WithSanitizers: [maxNumSanitizers] :: Features -> Word
+ WithSanitizers: [qualifiedName] :: PartCall -> Maybe String
+ WithSanitizers: [sink] :: Features -> Location
+ WithSanitizers: [thenPart] :: IfThenElse -> [PartCall]
+ WithSanitizers: [total] :: Content -> Word
+ WithSanitizers: [userInputArgIndex] :: IfThenElse -> Word
+ WithSanitizers: [userInputFlow] :: IfThenElse -> [FlowStep]
+ WithSanitizers: [userInput] :: Features -> Location
+ WithSanitizers: data Content
+ WithSanitizers: data Features
+ WithSanitizers: data FlowStep
+ WithSanitizers: data IfThenElse
+ WithSanitizers: data PartCall
+ WithSanitizers: data Sanitizer
+ WithSanitizers: instance Data.Aeson.Types.FromJSON.FromJSON WithSanitizers.Content
+ WithSanitizers: instance Data.Aeson.Types.FromJSON.FromJSON WithSanitizers.Features
+ WithSanitizers: instance Data.Aeson.Types.FromJSON.FromJSON WithSanitizers.FlowStep
+ WithSanitizers: instance Data.Aeson.Types.FromJSON.FromJSON WithSanitizers.IfThenElse
+ WithSanitizers: instance Data.Aeson.Types.FromJSON.FromJSON WithSanitizers.PartCall
+ WithSanitizers: instance Data.Aeson.Types.FromJSON.FromJSON WithSanitizers.Sanitizer
+ WithSanitizers: instance Data.Aeson.Types.ToJSON.ToJSON WithSanitizers.Content
+ WithSanitizers: instance Data.Aeson.Types.ToJSON.ToJSON WithSanitizers.Features
+ WithSanitizers: instance Data.Aeson.Types.ToJSON.ToJSON WithSanitizers.FlowStep
+ WithSanitizers: instance Data.Aeson.Types.ToJSON.ToJSON WithSanitizers.IfThenElse
+ WithSanitizers: instance Data.Aeson.Types.ToJSON.ToJSON WithSanitizers.PartCall
+ WithSanitizers: instance Data.Aeson.Types.ToJSON.ToJSON WithSanitizers.Sanitizer
+ WithSanitizers: instance GHC.Internal.Classes.Eq WithSanitizers.Content
+ WithSanitizers: instance GHC.Internal.Classes.Eq WithSanitizers.Features
+ WithSanitizers: instance GHC.Internal.Classes.Eq WithSanitizers.FlowStep
+ WithSanitizers: instance GHC.Internal.Classes.Eq WithSanitizers.IfThenElse
+ WithSanitizers: instance GHC.Internal.Classes.Eq WithSanitizers.PartCall
+ WithSanitizers: instance GHC.Internal.Classes.Eq WithSanitizers.Sanitizer
+ WithSanitizers: instance GHC.Internal.Classes.Ord WithSanitizers.Content
+ WithSanitizers: instance GHC.Internal.Classes.Ord WithSanitizers.Features
+ WithSanitizers: instance GHC.Internal.Classes.Ord WithSanitizers.FlowStep
+ WithSanitizers: instance GHC.Internal.Classes.Ord WithSanitizers.IfThenElse
+ WithSanitizers: instance GHC.Internal.Classes.Ord WithSanitizers.PartCall
+ WithSanitizers: instance GHC.Internal.Classes.Ord WithSanitizers.Sanitizer
+ WithSanitizers: instance GHC.Internal.Generics.Generic WithSanitizers.Content
+ WithSanitizers: instance GHC.Internal.Generics.Generic WithSanitizers.Features
+ WithSanitizers: instance GHC.Internal.Generics.Generic WithSanitizers.FlowStep
+ WithSanitizers: instance GHC.Internal.Generics.Generic WithSanitizers.IfThenElse
+ WithSanitizers: instance GHC.Internal.Generics.Generic WithSanitizers.PartCall
+ WithSanitizers: instance GHC.Internal.Generics.Generic WithSanitizers.Sanitizer
+ WithSanitizers: instance GHC.Internal.Show.Show WithSanitizers.Content
+ WithSanitizers: instance GHC.Internal.Show.Show WithSanitizers.Features
+ WithSanitizers: instance GHC.Internal.Show.Show WithSanitizers.FlowStep
+ WithSanitizers: instance GHC.Internal.Show.Show WithSanitizers.IfThenElse
+ WithSanitizers: instance GHC.Internal.Show.Show WithSanitizers.PartCall
+ WithSanitizers: instance GHC.Internal.Show.Show WithSanitizers.Sanitizer
- Kbapi: FoundCommentsInFunction :: FoundCommentsInFunction -> QueryResult
+ Kbapi: FoundCommentsInFunction :: Content -> QueryResult
- Kbapi: FoundConstStringsMatching :: FoundConstStringsMatching -> QueryResult
+ Kbapi: FoundConstStringsMatching :: Content -> QueryResult
- Kbapi: FoundDataFlowPath :: FoundDataFlowPath -> QueryResult
+ Kbapi: FoundDataFlowPath :: Content -> QueryResult
Files
- dhscanner-kbapi.cabal +7/−2
- json-schema-creator/Main.hs +60/−48
- src/Content.hs +0/−558
- src/Kbapi.hs +18/−29
- src/WithComments.hs +37/−0
- src/WithConstStrings.hs +37/−0
- src/WithControlFlowReachableSinks.hs +50/−0
- src/WithDataFlowPath.hs +30/−0
- src/WithHttpHandlers.hs +123/−0
- src/WithSanitizers.hs +70/−0
dhscanner-kbapi.cabal view
@@ -28,7 +28,7 @@ fundamental modifications to the structure or specification of code facts. -version: 1.1.4+version: 1.2.0 license: GPL-3.0-only license-file: LICENSE author: OrenGitHub@@ -49,7 +49,12 @@ exposed-modules: Kbapi,- Content+ WithHttpHandlers,+ WithControlFlowReachableSinks,+ WithConstStrings,+ WithComments,+ WithDataFlowPath,+ WithSanitizers build-depends: aeson >= 2.2 && < 2.4,
json-schema-creator/Main.hs view
@@ -9,7 +9,8 @@ -- general imports import Data.Proxy ( Proxy(..) )-import Data.OpenApi ( ToSchema, toSchema, declareSchemaRef )+import Data.OpenApi ( ToSchema(..), SchemaOptions(..), NamedSchema(..), toSchema, declareSchemaRef, defaultSchemaOptions, genericDeclareNamedSchema )+import GHC.Generics ( Generic ) import Data.OpenApi.Declare ( runDeclare ) import Data.Aeson ( Value(..), toJSON, object, (.=) ) import Data.Aeson.Encode.Pretty ( encodePretty )@@ -19,69 +20,80 @@ import qualified Data.ByteString.Lazy as BL -- project imports-import Content import Location import Kbapi ( Query, QueryResult ) +-- project qualified imports+import qualified WithHttpHandlers+import qualified WithControlFlowReachableSinks+import qualified WithConstStrings+import qualified WithComments+import qualified WithDataFlowPath+import qualified WithSanitizers++-- every query module names its type Features : qualify the schema name+qualifiedAs :: String -> SchemaOptions+qualifiedAs m = defaultSchemaOptions { datatypeNameModifier = ((m ++ ".") ++) }+ instance ToSchema Query instance ToSchema QueryResult instance ToSchema Location -instance ToSchema ConstStringsMatching-instance ToSchema FoundConstStringsMatching-instance ToSchema FoundConstStringMatch--instance ToSchema AuthEvidence--instance ToSchema UnauthenticatedHttpPostHandlerRequestObject-instance ToSchema FoundUnauthenticatedHttpPostHandlerRequestObject-instance ToSchema AuthenticatedHttpPostHandlerRequestObject-instance ToSchema FoundAuthenticatedHttpPostHandlerRequestObject-instance ToSchema FoundAuthenticatedHttpPostHandlerRequestObjectMatch-instance ToSchema FoundHttpPostHandlerRequestObjectMatch--instance ToSchema HttpGetHandlerRequestObject-instance ToSchema FoundHttpGetHandlerRequestObject-instance ToSchema FoundHttpGetHandlerRequestObjectMatch+instance ToSchema WithHttpHandlers.Features where declareNamedSchema = genericDeclareNamedSchema (qualifiedAs "WithHttpHandlers")+instance ToSchema WithHttpHandlers.HttpVerb+instance ToSchema WithHttpHandlers.AuthFilter+instance ToSchema WithHttpHandlers.Content where declareNamedSchema = genericDeclareNamedSchema (qualifiedAs "WithHttpHandlers")+instance ToSchema WithHttpHandlers.HttpHandler+instance ToSchema WithHttpHandlers.HttpHandlerDef+instance ToSchema WithHttpHandlers.MethodName+instance ToSchema WithHttpHandlers.ClassName+instance ToSchema WithHttpHandlers.FunctionName+instance ToSchema WithHttpHandlers.UserInput+instance ToSchema WithHttpHandlers.RequestObject+instance ToSchema WithHttpHandlers.RequestParam+instance ToSchema WithHttpHandlers.PathVariable+instance ToSchema WithHttpHandlers.RequestBody+instance ToSchema WithHttpHandlers.RequestHeader+instance ToSchema WithHttpHandlers.CookieValue+instance ToSchema WithHttpHandlers.RequestPart+instance ToSchema WithHttpHandlers.Authentication+instance ToSchema WithHttpHandlers.AuthEvidence -instance ToSchema UnauthenticatedHttpGetHandlerRequestObject-instance ToSchema FoundUnauthenticatedHttpGetHandlerRequestObject-instance ToSchema AuthenticatedHttpGetHandlerRequestObject-instance ToSchema FoundAuthenticatedHttpGetHandlerRequestObject-instance ToSchema FoundAuthenticatedHttpGetHandlerRequestObjectMatch+instance ToSchema WithControlFlowReachableSinks.Features where declareNamedSchema = genericDeclareNamedSchema (qualifiedAs "WithControlFlowReachableSinks")+instance ToSchema WithControlFlowReachableSinks.Sink+instance ToSchema WithControlFlowReachableSinks.Content where declareNamedSchema = genericDeclareNamedSchema (qualifiedAs "WithControlFlowReachableSinks")+instance ToSchema WithControlFlowReachableSinks.Match where declareNamedSchema = genericDeclareNamedSchema (qualifiedAs "WithControlFlowReachableSinks") -instance ToSchema UnauthenticatedHttpPutHandlerRequestObject-instance ToSchema FoundUnauthenticatedHttpPutHandlerRequestObject-instance ToSchema AuthenticatedHttpPutHandlerRequestObject-instance ToSchema FoundAuthenticatedHttpPutHandlerRequestObject-instance ToSchema FoundAuthenticatedHttpPutHandlerRequestObjectMatch-instance ToSchema FoundHttpPutHandlerRequestObjectMatch+instance ToSchema WithConstStrings.Features where declareNamedSchema = genericDeclareNamedSchema (qualifiedAs "WithConstStrings")+instance ToSchema WithConstStrings.Content where declareNamedSchema = genericDeclareNamedSchema (qualifiedAs "WithConstStrings")+instance ToSchema WithConstStrings.Match where declareNamedSchema = genericDeclareNamedSchema (qualifiedAs "WithConstStrings") -instance ToSchema CommentsInFunction-instance ToSchema FoundCommentsInFunction-instance ToSchema Comment+instance ToSchema WithComments.Features where declareNamedSchema = genericDeclareNamedSchema (qualifiedAs "WithComments")+instance ToSchema WithComments.Content where declareNamedSchema = genericDeclareNamedSchema (qualifiedAs "WithComments")+instance ToSchema WithComments.Comment -instance ToSchema WriteContentToLocalFile-instance ToSchema FoundWriteContentToLocalFile+instance ToSchema WithDataFlowPath.Features where declareNamedSchema = genericDeclareNamedSchema (qualifiedAs "WithDataFlowPath")+instance ToSchema WithDataFlowPath.Content where declareNamedSchema = genericDeclareNamedSchema (qualifiedAs "WithDataFlowPath") -instance ToSchema ControlFlowPath-instance ToSchema FoundControlFlowPath+instance ToSchema WithSanitizers.Features where declareNamedSchema = genericDeclareNamedSchema (qualifiedAs "WithSanitizers")+instance ToSchema WithSanitizers.Content where declareNamedSchema = genericDeclareNamedSchema (qualifiedAs "WithSanitizers")+instance ToSchema WithSanitizers.IfThenElse+instance ToSchema WithSanitizers.PartCall+instance ToSchema WithSanitizers.FlowStep -instance ToSchema DataFlowPath-instance ToSchema FoundDataFlowPath+-- openapi3 ignores tagSingleConstructors : describe the tagged Sanitizer+-- through a mirror ( drop it once Sanitizer has a second constructor )+data SanitizerTag = TopLevelIfThenElse deriving ( Generic )+data SanitizerMirror = SanitizerMirror { tag :: SanitizerTag, contents :: WithSanitizers.IfThenElse } deriving ( Generic ) -instance ToSchema SqlSinkKind-instance ToSchema SqlSinkKindCount-instance ToSchema ControlFlowReachableSqlSink-instance ToSchema FoundControlFlowReachableSqlSink-instance ToSchema FoundControlFlowReachableSqlSinkMatch+instance ToSchema SanitizerTag+instance ToSchema SanitizerMirror -instance ToSchema FileActionKind-instance ToSchema FileActionKindCount-instance ToSchema ControlFlowReachableFileActionSink-instance ToSchema FoundControlFlowReachableFileActionSink-instance ToSchema FoundControlFlowReachableFileActionSinkMatch+instance ToSchema WithSanitizers.Sanitizer where+ declareNamedSchema _ = do+ NamedSchema _ s <- declareNamedSchema (Proxy :: Proxy SanitizerMirror)+ pure (NamedSchema (Just "Sanitizer") s) schemaWithDefs :: ToSchema a => Proxy a -> Value schemaWithDefs p =
− src/Content.hs
@@ -1,558 +0,0 @@-{-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE DeriveAnyClass #-}--module Content--where---- general imports-import GHC.Generics-import Data.Aeson--- project imports-import Location--data ConstStringsMatching- = ConstStringsMatching- {- constStringsMatchingThisRegex :: String,- constStringsMatchingLimit :: Word- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )--data FoundConstStringsMatching- = FoundConstStringsMatching- {- foundConstStringsMatchingThisRegex :: String,- foundConstStringsMatchesTotal :: Word,- foundConstStringsMatches :: [ FoundConstStringMatch ]- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )--data FoundConstStringMatch- = FoundConstStringMatch- {- foundConstStringMatchLocation :: Location,- foundConstStringMatchValue :: String- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )--data UnauthenticatedHttpPostHandlerRequestObject- = UnauthenticatedHttpPostHandlerRequestObject- {- unauthenticatedHttpPostHandlerRequestObjectUrlParts :: [ String ],- unauthenticatedHttpPostHandlerRequestObjectLimit :: Word- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )--data FoundUnauthenticatedHttpPostHandlerRequestObject- = FoundUnauthenticatedHttpPostHandlerRequestObject- {- foundUnauthenticatedHttpPostHandlerRequestObjectTotal :: Word,- foundUnauthenticatedHttpPostHandlerRequestObjectMatches :: [ FoundHttpPostHandlerRequestObjectMatch ]- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )--data AuthenticatedHttpPostHandlerRequestObject- = AuthenticatedHttpPostHandlerRequestObject- {- authenticatedHttpPostHandlerRequestObjectUrlParts :: [ String ],- authenticatedHttpPostHandlerRequestObjectLimit :: Word- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )--data FoundAuthenticatedHttpPostHandlerRequestObject- = FoundAuthenticatedHttpPostHandlerRequestObject- {- foundAuthenticatedHttpPostHandlerRequestObjectTotal :: Word,- foundAuthenticatedHttpPostHandlerRequestObjectMatches :: [ FoundAuthenticatedHttpPostHandlerRequestObjectMatch ]- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )---- | Evidence carrier for authenticated-handler classifications.------ Same "one concept, N payload shapes" tagged-union pattern that--- 'Kbapi.Query' itself uses. Each constructor names a distinct--- structural recognition path in the KB and carries whatever--- payload that path can bind. New auth mechanisms are pure leaf--- additions here : add a constructor + a matching Prolog clause--- + one line in the queryengine decoder \- no existing consumer--- changes.------ Current constructors :------ * @ByHeaderNullCheck HeaderKey@ \- the authenticating function--- implements the strict @Request.headers.get( key ) ; if(!v)--- return null@ idiom. @HeaderKey@ is the header name string--- ( e.g. @\"x-api-key\"@ ). Bound by the KB rule--- @utils_early_return_null_on_missing_request_header_value@.------ * @ByAllButOneBadReturn@ \- the authenticating function's body--- shape is "K-1 bad-http returns + 1 parser-injected fall-through" :--- every failing path emits an error response, the single success--- path falls through implicitly. No payload \- the evidence /is/--- the shape, and the callable\'s name is already carried by--- @foundAuthenticatedHttpPostHandlerAuthenticatingFunctionName@--- ( or its GET twin ) on the enclosing match record.-data AuthEvidence- = ByHeaderNullCheck String- | ByAllButOneBadReturn- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )---- | A match for an authenticated POST handler request object query.------ Same shape as 'FoundHttpPostHandlerRequestObjectMatch', plus two--- structurally discovered pieces of metadata that identify /how/ the--- handler is authenticated :------ * @foundAuthenticatedHttpPostHandlerAuthenticatingFunctionName@ \---- the name of the callable that gates the handler ( e.g. tier-1--- catalog name @\'authenticateRequest\'@, or @\'checkAuth\'@ when--- the shape catalog fires ).------ * @foundAuthenticatedHttpPostHandlerAuthEvidence@ \---- an 'AuthEvidence' tagged union describing /which/ structural--- recognition path bound this match, plus any mechanism-specific--- payload ( e.g. the header key for @ByHeaderNullCheck@ ). See the--- 'AuthEvidence' haddock for the current constructors.-data FoundAuthenticatedHttpPostHandlerRequestObjectMatch- = FoundAuthenticatedHttpPostHandlerRequestObjectMatch- {- foundAuthenticatedHttpPostHandlerLocation :: Location,- foundAuthenticatedHttpPostHandlerRequestObjectLocation :: Location,- foundAuthenticatedHttpPostHandlerRequestObjectMatchUrl :: String,- foundAuthenticatedHttpPostHandlerAuthenticatingFunctionName :: String,- foundAuthenticatedHttpPostHandlerAuthEvidence :: AuthEvidence- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )--data FoundHttpPostHandlerRequestObjectMatch- = FoundHttpPostHandlerRequestObjectMatch- {- foundHttpPostHandlerLocation :: Location,- foundHttpPostHandlerRequestObjectLocation :: Location,- foundHttpPostHandlerRequestObjectMatchUrl :: String- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )--data HttpGetHandlerRequestObject- = HttpGetHandlerRequestObject- {- httpGetHandlerRequestObjectUrlParts :: [ String ],- httpGetHandlerRequestObjectLimit :: Word- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )--data FoundHttpGetHandlerRequestObject- = FoundHttpGetHandlerRequestObject- {- foundHttpGetHandlerRequestObjectTotal :: Word,- foundHttpGetHandlerRequestObjectMatches :: [ FoundHttpGetHandlerRequestObjectMatch ]- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )--data FoundHttpGetHandlerRequestObjectMatch- = FoundHttpGetHandlerRequestObjectMatch- {- foundHttpGetHandlerLocation :: Location,- foundHttpGetHandlerRequestObjectMatchLocation :: Location,- foundHttpGetHandlerRequestObjectMatchUrl :: String- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )---- | Symmetric GET variant of 'UnauthenticatedHttpPostHandlerRequestObject'.--- Enumerates HTTP GET handlers whose bodies contain /no/ call to any--- recognized authenticating function (per the Prolog predicate--- @utils_unauthenticated_http_get_handler_request_object/3@ ).------ Together with 'AuthenticatedHttpGetHandlerRequestObject' this is the--- GET half of the "first fork" the LLM agent hits : auth vs pre-auth--- endpoints. See the OWASP-IL 2026 talk notes ("first move" bridge--- slide) for the harness-side story.-data UnauthenticatedHttpGetHandlerRequestObject- = UnauthenticatedHttpGetHandlerRequestObject- {- unauthenticatedHttpGetHandlerRequestObjectUrlParts :: [ String ],- unauthenticatedHttpGetHandlerRequestObjectLimit :: Word- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )---- | Result payload for 'UnauthenticatedHttpGetHandlerRequestObject'. The--- per-match shape reuses 'FoundHttpGetHandlerRequestObjectMatch' because--- an unauthenticated GET handler carries no auth metadata to surface ----- symmetric to how 'FoundUnauthenticatedHttpPostHandlerRequestObject'--- reuses 'FoundHttpPostHandlerRequestObjectMatch'.-data FoundUnauthenticatedHttpGetHandlerRequestObject- = FoundUnauthenticatedHttpGetHandlerRequestObject- {- foundUnauthenticatedHttpGetHandlerRequestObjectTotal :: Word,- foundUnauthenticatedHttpGetHandlerRequestObjectMatches :: [ FoundHttpGetHandlerRequestObjectMatch ]- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )---- | Symmetric GET variant of 'AuthenticatedHttpPostHandlerRequestObject'.--- Enumerates HTTP GET handlers whose bodies contain a call to a--- recognized authenticating function that itself satisfies the strict--- "early-return-null on missing request-header value" structural gate.--- See @utils_authenticated_http_get_handler_request_object/5@ in--- utils.pl and the Prolog-side notes on the corresponding POST /5--- predicate.-data AuthenticatedHttpGetHandlerRequestObject- = AuthenticatedHttpGetHandlerRequestObject- {- authenticatedHttpGetHandlerRequestObjectUrlParts :: [ String ],- authenticatedHttpGetHandlerRequestObjectLimit :: Word- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )--data FoundAuthenticatedHttpGetHandlerRequestObject- = FoundAuthenticatedHttpGetHandlerRequestObject- {- foundAuthenticatedHttpGetHandlerRequestObjectTotal :: Word,- foundAuthenticatedHttpGetHandlerRequestObjectMatches :: [ FoundAuthenticatedHttpGetHandlerRequestObjectMatch ]- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )---- | A match for an authenticated GET handler request object query. Same--- shape as 'FoundAuthenticatedHttpPostHandlerRequestObjectMatch', with--- @GetHandler@ substituted for @PostHandler@ throughout the field--- naming to keep POST/GET results distinguishable at the JSON layer.-data FoundAuthenticatedHttpGetHandlerRequestObjectMatch- = FoundAuthenticatedHttpGetHandlerRequestObjectMatch- {- foundAuthenticatedHttpGetHandlerLocation :: Location,- foundAuthenticatedHttpGetHandlerRequestObjectLocation :: Location,- foundAuthenticatedHttpGetHandlerRequestObjectMatchUrl :: String,- foundAuthenticatedHttpGetHandlerAuthenticatingFunctionName :: String,- foundAuthenticatedHttpGetHandlerAuthEvidence :: AuthEvidence- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )---- | Symmetric PUT variant of 'UnauthenticatedHttpPostHandlerRequestObject'.--- Enumerates HTTP PUT handlers whose bodies contain /no/ call to any--- recognized authenticating function.------ Adding any other HTTP verb ( PATCH, DELETE, HEAD, OPTIONS, ... ) is--- a pure leaf addition : mirror this block, add a new Query--- constructor + a new KB-side clause + a new queryengine handler.--- No existing consumer needs to change.-data UnauthenticatedHttpPutHandlerRequestObject- = UnauthenticatedHttpPutHandlerRequestObject- {- unauthenticatedHttpPutHandlerRequestObjectUrlParts :: [ String ],- unauthenticatedHttpPutHandlerRequestObjectLimit :: Word- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )---- | Result payload for 'UnauthenticatedHttpPutHandlerRequestObject'.--- Reuses 'FoundHttpPutHandlerRequestObjectMatch' because an--- unauthenticated PUT handler carries no auth metadata to surface ----- symmetric to how 'FoundUnauthenticatedHttpPostHandlerRequestObject'--- reuses 'FoundHttpPostHandlerRequestObjectMatch'.-data FoundUnauthenticatedHttpPutHandlerRequestObject- = FoundUnauthenticatedHttpPutHandlerRequestObject- {- foundUnauthenticatedHttpPutHandlerRequestObjectTotal :: Word,- foundUnauthenticatedHttpPutHandlerRequestObjectMatches :: [ FoundHttpPutHandlerRequestObjectMatch ]- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )---- | Symmetric PUT variant of 'AuthenticatedHttpPostHandlerRequestObject'.--- Same @AuthEvidence@ catalog + @AuthFuncName@ metadata as the POST--- twin; see the POST record's haddock for the tagged-union rationale.-data AuthenticatedHttpPutHandlerRequestObject- = AuthenticatedHttpPutHandlerRequestObject- {- authenticatedHttpPutHandlerRequestObjectUrlParts :: [ String ],- authenticatedHttpPutHandlerRequestObjectLimit :: Word- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )--data FoundAuthenticatedHttpPutHandlerRequestObject- = FoundAuthenticatedHttpPutHandlerRequestObject- {- foundAuthenticatedHttpPutHandlerRequestObjectTotal :: Word,- foundAuthenticatedHttpPutHandlerRequestObjectMatches :: [ FoundAuthenticatedHttpPutHandlerRequestObjectMatch ]- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )---- | A match for an authenticated PUT handler request object query. Same--- shape as 'FoundAuthenticatedHttpPostHandlerRequestObjectMatch', with--- @PutHandler@ substituted for @PostHandler@ throughout the field--- naming to keep POST/GET/PUT results distinguishable at the JSON layer.-data FoundAuthenticatedHttpPutHandlerRequestObjectMatch- = FoundAuthenticatedHttpPutHandlerRequestObjectMatch- {- foundAuthenticatedHttpPutHandlerLocation :: Location,- foundAuthenticatedHttpPutHandlerRequestObjectLocation :: Location,- foundAuthenticatedHttpPutHandlerRequestObjectMatchUrl :: String,- foundAuthenticatedHttpPutHandlerAuthenticatingFunctionName :: String,- foundAuthenticatedHttpPutHandlerAuthEvidence :: AuthEvidence- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )---- | A match for an ( unauthenticated ) PUT handler request object query.--- Same shape as 'FoundHttpPostHandlerRequestObjectMatch', with--- @PutHandler@ substituted for @PostHandler@ throughout the field--- naming to keep POST/PUT results distinguishable at the JSON layer.-data FoundHttpPutHandlerRequestObjectMatch- = FoundHttpPutHandlerRequestObjectMatch- {- foundHttpPutHandlerLocation :: Location,- foundHttpPutHandlerRequestObjectLocation :: Location,- foundHttpPutHandlerRequestObjectMatchUrl :: String- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )--data CommentsInFunction- = CommentsInFunction- {- commentsInFunctionLocation :: Location,- commentsInFunctionLimit :: Word- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )--data FoundCommentsInFunction- = FoundCommentsInFunction- {- foundCommentsInFunctionLocation :: Location,- foundCommentsInFunctionTotal :: Word,- foundCommentsInFunctionComments :: [ Comment ]- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )--data Comment- = Comment- {- commentLocation :: Location,- commentContent :: String- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )--data WriteContentToLocalFile- = WriteContentToLocalFile- {- writeContentToLocalFileLimit :: Word- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )--data FoundWriteContentToLocalFile- = FoundWriteContentToLocalFile- {- foundWriteContentToLocalFileTotal :: Word,- foundWriteContentToLocalFileLocations :: [ Location ]- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )--data ControlFlowPath- = ControlFlowPath- {- controlFlowPathCaller :: Location,- controlFlowPathCallee :: Location,- controlFlowPathLimitNumHops :: Word- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )--data FoundControlFlowPath- = FoundControlFlowPath- {- foundControlFlowPathPath :: Maybe [ Location ]- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )--data DataFlowPath- = DataFlowPath- {- dataFlowPathFrom :: Location,- dataFlowPathTo :: Location,- dataFlowPathLimitLength :: Word- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )--data FoundDataFlowPath- = FoundDataFlowPath- {- foundDataFlowPathPath :: Maybe [ Location ]- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )---- | Enumeration query \- SQL sinks control-flow-reachable from an--- entry point.------ Coarse tier of the coarse-to-fine reachability pipeline.--- Control-flow reachability is a /sound over-approximation/ of--- dataflow reachability under a sound call graph, which makes it--- suitable as a shortlist \- not as a citation. Callers that need--- to verify a specific sink is actually reached by attacker---- controlled input compose this query with a dataflow-path query--- on top.------ Enumeration ( sink side free ) rather than verification ( sink--- side bound ) is a deliberate shape choice : callers almost--- always want /the set/ of reachable sinks per entry point, not a--- per-site yes\/no. Per-site verification remains available via--- 'ControlFlowPath'.------ The result payload carries per-kind sub-totals--- ( 'SqlSinkKindCount' ) so callers can rank entry points by their--- sink profile without iterating the matches list.-data ControlFlowReachableSqlSink- = ControlFlowReachableSqlSink- {- controlFlowReachableSqlSinkFrom :: Location,- controlFlowReachableSqlSinkLimitNumHops :: Word,- controlFlowReachableSqlSinkLimit :: Word- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )---- | Structural classifier for a single SQL sink call site.------ Same \"one concept, N structural paths\" tagged-union pattern as--- 'AuthEvidence' : each constructor names a distinct sink shape a--- KB-side recognizer can classify against. Framework-agnostic \---- the same two shapes appear across every ORM \/ DB library. The--- concrete library name ( eg the resolved FQN of the sink call )--- is carried separately on each match as a plain string ; this--- classifier abstracts over it.------ Current constructors :------ * @SqlPreparedStatement@ \- the sink parameterizes caller input--- by construction ( bound parameters, ORM object-form APIs, ... ).--- Injection-safe under the library's contract ; no additional--- structural gate needed.------ * @SqlRaw@ \- the sink executes a caller-supplied SQL string.--- Injection risk lives on the caller ; additional structural--- gates ( eg proof that all interpolations are bound, or that--- the string is a compile-time constant ) are needed to clear it.------ Adding a new shape is a pure leaf addition here + a matching--- KB-side clause. No existing consumer needs to change.-data SqlSinkKind- = SqlPreparedStatement- | SqlRaw- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )---- | Per-kind sink count. Present in the enumeration payload as a--- pre-aggregated ranking signal. Every constructor of 'SqlSinkKind'--- is expected to appear in the payload's counts list ( zero-filled--- when absent ) so callers can direct-lookup without existence--- checks.-data SqlSinkKindCount- = SqlSinkKindCount- {- sqlSinkKindCountKind :: SqlSinkKind,- sqlSinkKindCountCount :: Word- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )---- | Result payload for 'ControlFlowReachableSqlSink'.------ @Total@ is the sum across all kinds ; @CountsByKind@ is the per-kind--- breakdown ( a pre-aggregated ranking signal ) ; @Matches@ is the--- flat list of individual sink call sites. Match ordering is--- implementation-defined \- callers that need a specific ordering--- should sort client-side on the fields exposed by--- 'FoundControlFlowReachableSqlSinkMatch'.-data FoundControlFlowReachableSqlSink- = FoundControlFlowReachableSqlSink- {- foundControlFlowReachableSqlSinkTotal :: Word,- foundControlFlowReachableSqlSinkCountsByKind :: [ SqlSinkKindCount ],- foundControlFlowReachableSqlSinkMatches :: [ FoundControlFlowReachableSqlSinkMatch ]- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )---- | A single reachable SQL sink match.------ Fields :------ * @Location@ \- the sink call site. Anchors downstream refinement--- ( eg a structural clearance predicate or a dataflow query ).------ * @QualifiedName@ \- the fully qualified name of the sink callee--- as a plain string ( a human-readable label for context ). Do--- not dispatch on it ; dispatch on @Kind@ so the structural--- classification stays authoritative. This is the naming--- convention future kbapi additions should follow for FQN-shaped--- string fields ; see the OWASP-IL talk notes for the--- \"Qualified Names\" pedagogical framing.------ * @Kind@ \- structural classifier bound by the KB-side recognizer.--- See 'SqlSinkKind' for the current catalog.-data FoundControlFlowReachableSqlSinkMatch- = FoundControlFlowReachableSqlSinkMatch- {- foundControlFlowReachableSqlSinkMatchLocation :: Location,- foundControlFlowReachableSqlSinkMatchQualifiedName :: String,- foundControlFlowReachableSqlSinkMatchKind :: SqlSinkKind- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )---- | Enumeration query \- file-action sinks control-flow-reachable--- from an entry point. Symmetric to 'ControlFlowReachableSqlSink' ;--- see that record for the coarse-to-fine framing.-data ControlFlowReachableFileActionSink- = ControlFlowReachableFileActionSink- {- controlFlowReachableFileActionSinkFrom :: Location,- controlFlowReachableFileActionSinkLimitNumHops :: Word,- controlFlowReachableFileActionSinkLimit :: Word- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )---- | Structural classifier for a single file-action sink call site.------ Same tagged-union pattern as 'SqlSinkKind' and 'AuthEvidence'.--- Framework-agnostic \- the same shapes appear across every--- filesystem API ( Node.js, Python, Go, Ruby, ... ). The concrete--- library name is carried separately on each match as a plain--- string ; this classifier abstracts over it.------ Current constructors :------ * @FileWrite@ \- content-writing sinks ( create \/ overwrite \/--- append file contents ).------ Reserved for future leaf additions :------ * @FileDelete@ \- removal sinks ( unlink \/ rmdir \/ recursive--- remove ).-data FileActionKind- = FileWrite- | FileRead- | FileDelete- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )---- | Per-kind file-action sink count. Symmetric to 'SqlSinkKindCount'.-data FileActionKindCount- = FileActionKindCount- {- fileActionKindCountKind :: FileActionKind,- fileActionKindCountCount :: Word- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )---- | Result payload for 'ControlFlowReachableFileActionSink'.--- Symmetric to 'FoundControlFlowReachableSqlSink' ; see that record--- for the field semantics.-data FoundControlFlowReachableFileActionSink- = FoundControlFlowReachableFileActionSink- {- foundControlFlowReachableFileActionSinkTotal :: Word,- foundControlFlowReachableFileActionSinkCountsByKind :: [ FileActionKindCount ],- foundControlFlowReachableFileActionSinkMatches :: [ FoundControlFlowReachableFileActionSinkMatch ]- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )---- | A single reachable file-action sink match. Symmetric to--- 'FoundControlFlowReachableSqlSinkMatch' ; see that record for--- the field semantics.-data FoundControlFlowReachableFileActionSinkMatch- = FoundControlFlowReachableFileActionSinkMatch- {- foundControlFlowReachableFileActionSinkMatchLocation :: Location,- foundControlFlowReachableFileActionSinkMatchQualifiedName :: String,- foundControlFlowReachableFileActionSinkMatchKind :: FileActionKind- }- deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )
src/Kbapi.hs view
@@ -48,38 +48,27 @@ import GHC.Generics -- project imports-import qualified Content+import qualified WithHttpHandlers+import qualified WithControlFlowReachableSinks+import qualified WithDataFlowPath+import qualified WithConstStrings+import qualified WithComments+import qualified WithSanitizers data Query- = ConstStringsMatching Content.ConstStringsMatching- | HttpGetHandlerRequestObject Content.HttpGetHandlerRequestObject- | UnauthenticatedHttpGetHandlerRequestObject Content.UnauthenticatedHttpGetHandlerRequestObject- | AuthenticatedHttpGetHandlerRequestObject Content.AuthenticatedHttpGetHandlerRequestObject- | UnauthenticatedHttpPostHandlerRequestObject Content.UnauthenticatedHttpPostHandlerRequestObject- | AuthenticatedHttpPostHandlerRequestObject Content.AuthenticatedHttpPostHandlerRequestObject- | UnauthenticatedHttpPutHandlerRequestObject Content.UnauthenticatedHttpPutHandlerRequestObject- | AuthenticatedHttpPutHandlerRequestObject Content.AuthenticatedHttpPutHandlerRequestObject- | CommentsInFunction Content.CommentsInFunction- | WriteContentToLocalFile Content.WriteContentToLocalFile- | ControlFlowPath Content.ControlFlowPath- | DataFlowPath Content.DataFlowPath- | ControlFlowReachableSqlSink Content.ControlFlowReachableSqlSink- | ControlFlowReachableFileActionSink Content.ControlFlowReachableFileActionSink+ = SelectHttpHandlers WithHttpHandlers.Features+ | SelectControlFlowReachableSinks WithControlFlowReachableSinks.Features+ | SelectDataFlowPath WithDataFlowPath.Features+ | SelectConstStrings WithConstStrings.Features+ | SelectComments WithComments.Features+ | SelectSanitizers WithSanitizers.Features deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON ) data QueryResult- = FoundConstStringsMatching Content.FoundConstStringsMatching- | FoundHttpGetHandlerRequestObject Content.FoundHttpGetHandlerRequestObject- | FoundUnauthenticatedHttpGetHandlerRequestObject Content.FoundUnauthenticatedHttpGetHandlerRequestObject- | FoundAuthenticatedHttpGetHandlerRequestObject Content.FoundAuthenticatedHttpGetHandlerRequestObject- | FoundUnauthenticatedHttpPostHandlerRequestObject Content.FoundUnauthenticatedHttpPostHandlerRequestObject- | FoundAuthenticatedHttpPostHandlerRequestObject Content.FoundAuthenticatedHttpPostHandlerRequestObject- | FoundUnauthenticatedHttpPutHandlerRequestObject Content.FoundUnauthenticatedHttpPutHandlerRequestObject- | FoundAuthenticatedHttpPutHandlerRequestObject Content.FoundAuthenticatedHttpPutHandlerRequestObject- | FoundCommentsInFunction Content.FoundCommentsInFunction- | FoundWriteContentToLocalFile Content.FoundWriteContentToLocalFile- | FoundControlFlowPath Content.FoundControlFlowPath- | FoundDataFlowPath Content.FoundDataFlowPath- | FoundControlFlowReachableSqlSink Content.FoundControlFlowReachableSqlSink- | FoundControlFlowReachableFileActionSink Content.FoundControlFlowReachableFileActionSink+ = FoundHttpHandlers WithHttpHandlers.Content+ | FoundControlFlowReachableSinks WithControlFlowReachableSinks.Content+ | FoundConstStringsMatching WithConstStrings.Content+ | FoundCommentsInFunction WithComments.Content+ | FoundDataFlowPath WithDataFlowPath.Content+ | FoundSanitizers WithSanitizers.Content deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )
+ src/WithComments.hs view
@@ -0,0 +1,37 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DeriveAnyClass #-}++module WithComments++where++-- general imports+import GHC.Generics+import Data.Aeson++-- project imports+import Location++data Features+ = Features+ {+ inFunction :: Location,+ maxNumComments :: Word+ }+ deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )++data Content+ = Content+ {+ total :: Word,+ matches :: [ Comment ]+ }+ deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )++data Comment+ = Comment+ {+ commentLocation :: Location,+ commentContent :: String+ }+ deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )
+ src/WithConstStrings.hs view
@@ -0,0 +1,37 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DeriveAnyClass #-}++module WithConstStrings++where++-- general imports+import GHC.Generics+import Data.Aeson++-- project imports+import Location++data Features+ = Features+ {+ matchingRegex :: String,+ maxNumConstStrings :: Word+ }+ deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )++data Content+ = Content+ {+ total :: Word,+ matches :: [ Match ]+ }+ deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )++data Match+ = Match+ {+ location :: Location,+ value :: String+ }+ deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )
+ src/WithControlFlowReachableSinks.hs view
@@ -0,0 +1,50 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DeriveAnyClass #-}++module WithControlFlowReachableSinks++where++-- general imports+import GHC.Generics+import Data.Aeson+import Data.Set ( Set )++-- project imports+import Location++data Features+ = Features+ {+ from :: Location,+ sinks :: Set Sink,+ maxNumHops :: Word,+ maxNumSinks :: Word+ }+ deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )++data Sink+ = FileOperationRead+ | FileOperationWrite+ | FileOperationDelete+ | OpenRedirect+ | SSRF+ | SQL+ deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )++data Content+ = Content+ {+ total :: Word,+ matches :: [ Match ]+ }+ deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )++data Match+ = Match+ {+ location :: Location,+ qualifiedName :: String,+ kind :: Sink+ }+ deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )
+ src/WithDataFlowPath.hs view
@@ -0,0 +1,30 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DeriveAnyClass #-}++module WithDataFlowPath++where++-- general imports+import GHC.Generics+import Data.Aeson++-- project imports+import Location++data Features+ = Features+ {+ from :: Location,+ to :: Location,+ maxNumIntraProceduralEdges :: Word,+ maxNumInterProceduralEdges :: Word+ }+ deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )++data Content+ = Content+ {+ path :: Maybe [ Location ]+ }+ deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )
+ src/WithHttpHandlers.hs view
@@ -0,0 +1,123 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DeriveAnyClass #-}++module WithHttpHandlers++where++-- general imports+import GHC.Generics+import Data.Aeson+import Data.Set ( Set )++-- project imports+import Location++data Features+ = Features+ {+ verbs :: Set HttpVerb,+ authentications :: Set AuthFilter,+ routeContainsUrlParts :: Maybe [ String ], -- ^ Nothing = don't filter+ maxNumHttpHandlers :: Word+ }+ deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )++data HttpVerb = Get | Post | Put | Delete | Patch+ deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )++data AuthFilter = Unauthenticated | Authenticated+ deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )++data Content+ = Content+ {+ total :: Word,+ matches :: [ HttpHandler ]+ }+ deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )++data HttpHandler+ = HttpHandler+ {+ httpHandlerVerb :: HttpVerb,+ httpHandlerLocation :: Location,+ httpHandlerDef :: HttpHandlerDef,+ httpHandlerUrl :: String,+ httpHandlerUserInputs :: [ UserInput ],+ httpHandlerAuth :: Maybe Authentication+ }+ deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )++data HttpHandlerDef+ = MethodOfClass MethodName ClassName+ | NamedFunction FunctionName+ | AnonymousFunction+ deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )++data MethodName = MethodName String deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )+data ClassName = ClassName String deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )+data FunctionName = FunctionName String deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )++data UserInput+ = RequestObjectCtor RequestObject+ | RequestParamCtor RequestParam+ | PathVariableCtor PathVariable+ | RequestBodyCtor RequestBody+ | RequestHeaderCtor RequestHeader+ | CookieValueCtor CookieValue+ | RequestPartCtor RequestPart+ deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )++data RequestObject = RequestObject Location deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )++data RequestParam+ = RequestParam+ {+ requestParamName :: String,+ requestParamLocation :: Location+ }+ deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )++data PathVariable = PathVariable Location deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )+data RequestBody = RequestBody Location deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )+data RequestHeader = RequestHeader Location deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )+data CookieValue = CookieValue Location deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )+data RequestPart = RequestPart Location deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )++data Authentication+ = Authentication+ {+ authenticationFunctionName :: String,+ authenticationEvidence :: AuthEvidence+ }+ deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )++-- | Evidence carrier for authenticated-handler classifications.+--+-- Same "one concept, N payload shapes" tagged-union pattern that+-- 'Kbapi.Query' itself uses. Each constructor names a distinct+-- structural recognition path in the KB and carries whatever+-- payload that path can bind. New auth mechanisms are pure leaf+-- additions here : add a constructor + a matching Prolog clause+-- + one line in the queryengine decoder \- no existing consumer+-- changes.+--+-- Current constructors :+--+-- * @ByHeaderNullCheck HeaderKey@ \- the authenticating function+-- implements the strict @Request.headers.get( key ) ; if(!v)+-- return null@ idiom. @HeaderKey@ is the header name string+-- ( e.g. @\"x-api-key\"@ ). Bound by the KB rule+-- @utils_early_return_null_on_missing_request_header_value@.+--+-- * @ByAllButOneBadReturn@ \- the authenticating function's body+-- shape is "K-1 bad-http returns + 1 parser-injected fall-through" :+-- every failing path emits an error response, the single success+-- path falls through implicitly. No payload \- the evidence /is/+-- the shape, and the callable\'s name is already carried by+-- 'authenticationFunctionName'.+data AuthEvidence+ = ByHeaderNullCheck String+ | ByAllButOneBadReturn+ deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )
+ src/WithSanitizers.hs view
@@ -0,0 +1,70 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DeriveAnyClass #-}++module WithSanitizers++where++-- general imports+import GHC.Generics+import Data.Aeson++-- project imports+import Location++data Features+ = Features+ {+ userInput :: Location,+ sink :: Location,+ maxNumSanitizers :: Word+ }+ deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )++data Content+ = Content+ {+ total :: Word,+ matches :: [ Sanitizer ]+ }+ deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )++-- | One constructor per gadget kind ; tagged in JSON even while it is the only one+data Sanitizer+ = TopLevelIfThenElse IfThenElse+ deriving ( Show, Eq, Ord, Generic )++instance ToJSON Sanitizer where+ toJSON = genericToJSON defaultOptions { tagSingleConstructors = True }+ toEncoding = genericToEncoding defaultOptions { tagSingleConstructors = True }++instance FromJSON Sanitizer where+ parseJSON = genericParseJSON defaultOptions { tagSingleConstructors = True }++data IfThenElse+ = IfThenElse+ {+ cond :: PartCall,+ userInputArgIndex :: Word,+ userInputFlow :: [ FlowStep ],+ thenPart :: [ PartCall ],+ elsePart :: [ PartCall ]+ }+ deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )++data FlowStep+ = FlowStep+ {+ flowStepLocation :: Location,+ flowStepQualifiedName :: Maybe String+ }+ deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )++data PartCall+ = PartCall+ {+ location :: Location,+ qualifiedName :: Maybe String,+ constStringArgs :: [ String ]+ }+ deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )