{
  "$schema" : "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json",
  "version" : "2.1.0",
  "runs" : [ {
    "tool" : {
      "driver" : {
        "name" : "CodeQL",
        "organization" : "GitHub",
        "semanticVersion" : "2.4.2",
        "rules" : [ {
          "id" : "cpp/bad-addition-overflow-check",
          "name" : "cpp/bad-addition-overflow-check",
          "shortDescription" : {
            "text" : "Bad check for overflow of integer addition"
          },
          "fullDescription" : {
            "text" : "Checking for overflow of integer addition by comparing against one of the arguments of the addition does not work when the result of the addition is automatically promoted to a larger type."
          },
          "defaultConfiguration" : {
            "level" : "error"
          },
          "properties" : {
            "tags" : [ "reliability", "correctness", "security", "external/cwe/cwe-190", "external/cwe/cwe-192" ],
            "kind" : "problem",
            "precision" : "very-high",
            "name" : "Bad check for overflow of integer addition",
            "description" : "Checking for overflow of integer addition by comparing\n              against one of the arguments of the addition does not work\n              when the result of the addition is automatically promoted\n              to a larger type.",
            "id" : "cpp/bad-addition-overflow-check",
            "problem.severity" : "error"
          }
        }, {
          "id" : "cpp/pointer-overflow-check",
          "name" : "cpp/pointer-overflow-check",
          "shortDescription" : {
            "text" : "Pointer overflow check"
          },
          "fullDescription" : {
            "text" : "Adding a value to a pointer to check if it overflows relies on undefined behavior and may lead to memory corruption."
          },
          "defaultConfiguration" : {
            "level" : "error"
          },
          "properties" : {
            "tags" : [ "reliability", "security" ],
            "kind" : "problem",
            "precision" : "high",
            "name" : "Pointer overflow check",
            "description" : "Adding a value to a pointer to check if it overflows relies\n              on undefined behavior and may lead to memory corruption.",
            "id" : "cpp/pointer-overflow-check",
            "problem.severity" : "error"
          }
        }, {
          "id" : "cpp/uninitialized-local",
          "name" : "cpp/uninitialized-local",
          "shortDescription" : {
            "text" : "Potentially uninitialized local variable"
          },
          "fullDescription" : {
            "text" : "Reading from a local variable that has not been assigned to will typically yield garbage."
          },
          "defaultConfiguration" : { },
          "properties" : {
            "tags" : [ "security", "external/cwe/cwe-665", "external/cwe/cwe-457" ],
            "kind" : "problem",
            "precision" : "medium",
            "name" : "Potentially uninitialized local variable",
            "description" : "Reading from a local variable that has not been assigned to\n              will typically yield garbage.",
            "id" : "cpp/uninitialized-local",
            "problem.severity" : "warning"
          }
        }, {
          "id" : "cpp/too-few-arguments",
          "name" : "cpp/too-few-arguments",
          "shortDescription" : {
            "text" : "Call to function with fewer arguments than declared parameters"
          },
          "fullDescription" : {
            "text" : "A function call is passing fewer arguments than the number of declared parameters of the function. This may indicate that the code does not follow the author's intent. It is also a vulnerability, since the function is likely to operate on undefined data."
          },
          "defaultConfiguration" : {
            "level" : "error"
          },
          "properties" : {
            "tags" : [ "correctness", "maintainability", "security" ],
            "kind" : "problem",
            "precision" : "very-high",
            "name" : "Call to function with fewer arguments than declared parameters",
            "description" : "A function call is passing fewer arguments than the number of\n              declared parameters of the function. This may indicate\n              that the code does not follow the author's intent. It is also\n              a vulnerability, since the function is likely to operate on\n              undefined data.",
            "id" : "cpp/too-few-arguments",
            "problem.severity" : "error"
          }
        }, {
          "id" : "cpp/comparison-with-wider-type",
          "name" : "cpp/comparison-with-wider-type",
          "shortDescription" : {
            "text" : "Comparison of narrow type with wide type in loop condition"
          },
          "fullDescription" : {
            "text" : "Comparisons between types of different widths in a loop condition can cause the loop to behave unexpectedly."
          },
          "defaultConfiguration" : { },
          "properties" : {
            "tags" : [ "reliability", "security", "external/cwe/cwe-190", "external/cwe/cwe-197", "external/cwe/cwe-835" ],
            "kind" : "problem",
            "precision" : "high",
            "name" : "Comparison of narrow type with wide type in loop condition",
            "description" : "Comparisons between types of different widths in a loop\n              condition can cause the loop to behave unexpectedly.",
            "id" : "cpp/comparison-with-wider-type",
            "problem.severity" : "warning"
          }
        }, {
          "id" : "cpp/hresult-boolean-conversion",
          "name" : "cpp/hresult-boolean-conversion",
          "shortDescription" : {
            "text" : "Cast between HRESULT and a Boolean type"
          },
          "fullDescription" : {
            "text" : "Casting an HRESULT to/from a Boolean type and then using it in a test expression will yield an incorrect result because success (S_OK) in HRESULT is indicated by a value of 0."
          },
          "defaultConfiguration" : {
            "level" : "error"
          },
          "properties" : {
            "tags" : [ "security", "external/cwe/cwe-253", "external/microsoft/C6214", "external/microsoft/C6215", "external/microsoft/C6216", "external/microsoft/C6217", "external/microsoft/C6230" ],
            "kind" : "problem",
            "precision" : "high",
            "name" : "Cast between HRESULT and a Boolean type",
            "description" : "Casting an HRESULT to/from a Boolean type and then using it in a test expression will yield an incorrect result because success (S_OK) in HRESULT is indicated by a value of 0.",
            "id" : "cpp/hresult-boolean-conversion",
            "problem.severity" : "error"
          }
        }, {
          "id" : "SM02313",
          "name" : "cpp/conditionally-uninitialized-variable",
          "shortDescription" : {
            "text" : "Conditionally uninitialized variable"
          },
          "fullDescription" : {
            "text" : "An initialization function is used to initialize a local variable, but the returned status code is not checked. The variable may be left in an uninitialized state, and reading the variable may result in undefined behavior."
          },
          "defaultConfiguration" : { },
          "properties" : {
            "tags" : [ "security", "external/cwe/cwe-457" ],
            "kind" : "problem",
            "name" : "Conditionally uninitialized variable",
            "opaque-id" : "SM02313",
            "description" : "An initialization function is used to initialize a local variable, but the\n              returned status code is not checked. The variable may be left in an uninitialized\n              state, and reading the variable may result in undefined behavior.",
            "id" : "cpp/conditionally-uninitialized-variable",
            "problem.severity" : "warning"
          }
        }, {
          "id" : "cpp/incorrect-string-type-conversion",
          "name" : "cpp/incorrect-string-type-conversion",
          "shortDescription" : {
            "text" : "Cast from char* to wchar_t*"
          },
          "fullDescription" : {
            "text" : "Casting a byte string to a wide-character string is likely to yield a string that is incorrectly terminated or aligned. This can lead to undefined behavior, including buffer overruns."
          },
          "defaultConfiguration" : {
            "level" : "error"
          },
          "properties" : {
            "tags" : [ "security", "external/cwe/cwe-704", "external/microsoft/c/c6276" ],
            "kind" : "problem",
            "precision" : "high",
            "name" : "Cast from char* to wchar_t*",
            "description" : "Casting a byte string to a wide-character string is likely\n              to yield a string that is incorrectly terminated or aligned.\n              This can lead to undefined behavior, including buffer overruns.",
            "id" : "cpp/incorrect-string-type-conversion",
            "problem.severity" : "error"
          }
        }, {
          "id" : "cpp/windows/wdk/deprecated-api",
          "name" : "cpp/windows/wdk/deprecated-api",
          "shortDescription" : {
            "text" : "Use of deprecated WDK API"
          },
          "fullDescription" : {
            "text" : "Use of deprecated WDK API detected."
          },
          "defaultConfiguration" : { },
          "properties" : {
            "feature.area" : "Multiple",
            "owner.email" : "raulga@microsoft.com",
            "security.severity" : "Low",
            "query-version" : "1.1",
            "kind" : "problem",
            "impact" : "Attack Surface Reduction",
            "repro.text" : "The following code locations contain calls to a deprecated WDK API",
            "name" : "Use of deprecated WDK API",
            "description" : "Use of deprecated WDK API detected.",
            "id" : "cpp/windows/wdk/deprecated-api",
            "platform" : "Desktop",
            "problem.severity" : "warning"
          }
        } ]
      }
    },
    "results" : [ ],
    "columnKind" : "utf16CodeUnits",
    "properties" : {
      "semmle.formatSpecifier" : "sarifv2.1.0"
    }
  } ]
}