Skip to content

Commit

Permalink
Merge pull request #3050 from LLLXXXCCC/RemoveExtraValueContentAnalysis
Browse files Browse the repository at this point in the history
Fix null cfg bug.
  • Loading branch information
dotpaul committed Nov 23, 2019
2 parents 1a63d89 + a50d6c9 commit 070f56b
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 19 deletions.
Expand Up @@ -77,6 +77,11 @@ public override void Initialize(AnalysisContext context)
}
ControlFlowGraph cfg = operationBlockStartContext.OperationBlocks.GetControlFlowGraph();
if (cfg == null)
{
return;
}
WellKnownTypeProvider wellKnownTypeProvider = WellKnownTypeProvider.GetOrCreate(compilation);
InterproceduralAnalysisConfiguration interproceduralAnalysisConfiguration = InterproceduralAnalysisConfiguration.Create(
options,
Expand Down Expand Up @@ -115,12 +120,11 @@ public override void Initialize(AnalysisContext context)
operationAnalysisContext =>
{
IPropertyReferenceOperation propertyReferenceOperation = (IPropertyReferenceOperation)operationAnalysisContext.Operation;
IOperation rootOperation = operationAnalysisContext.Operation.GetRoot();
if (sourceInfoSymbolMap.IsSourceProperty(propertyReferenceOperation.Property))
{
lock (rootOperationsNeedingAnalysis)
{
rootOperationsNeedingAnalysis.Add(rootOperation);
rootOperationsNeedingAnalysis.Add(propertyReferenceOperation.GetRoot());
}
}
},
Expand All @@ -130,20 +134,16 @@ public override void Initialize(AnalysisContext context)
operationAnalysisContext =>
{
IInvocationOperation invocationOperation = (IInvocationOperation)operationAnalysisContext.Operation;
IOperation rootOperation = operationAnalysisContext.Operation.GetRoot();
if (rootOperation.TryGetEnclosingControlFlowGraph(out ControlFlowGraph cfg))
if (sourceInfoSymbolMap.IsSourceMethod(
invocationOperation.TargetMethod,
invocationOperation.Arguments,
pointsToFactory,
valueContentFactory,
out _))
{
if (sourceInfoSymbolMap.IsSourceMethod(
invocationOperation.TargetMethod,
invocationOperation.Arguments,
pointsToFactory,
valueContentFactory,
out _))
lock (rootOperationsNeedingAnalysis)
{
lock (rootOperationsNeedingAnalysis)
{
rootOperationsNeedingAnalysis.Add(rootOperation);
}
rootOperationsNeedingAnalysis.Add(invocationOperation.GetRoot());
}
}
},
Expand Down Expand Up @@ -181,11 +181,6 @@ public override void Initialize(AnalysisContext context)
foreach (IOperation rootOperation in rootOperationsNeedingAnalysis)
{
if (!rootOperation.TryGetEnclosingControlFlowGraph(out ControlFlowGraph cfg))
{
continue;
}
TaintedDataAnalysisResult taintedDataAnalysisResult = TaintedDataAnalysis.TryGetOrComputeResult(
cfg,
operationBlockAnalysisContext.Compilation,
Expand Down
Expand Up @@ -434,6 +434,20 @@ public static string Calculate(string unhashedNameId)
}");
}

[Fact]
public void Test_NullCfg_NoDiagnostic()
{
VerifyCSharp(@"
using System;
public class TestClass
{
public static string ContentName => ""Satya"";
public static readonly byte[] ByteArray = Convert.FromBase64String(""Some strings."");
}");
}

protected override DiagnosticAnalyzer GetBasicDiagnosticAnalyzer()
{
return new DoNotHardCodeCertificate();
Expand Down

0 comments on commit 070f56b

Please sign in to comment.