mirror of
https://github.com/github/codeql.git
synced 2026-05-05 05:35:13 +02:00
C#: Escape IDs in TRAP label definitions
This commit is contained in:
@@ -15,9 +15,14 @@ namespace Semmle.Extraction
|
||||
|
||||
public Label Label { get; set; }
|
||||
|
||||
public abstract void WriteId(TextWriter trapFile);
|
||||
public abstract void WriteId(EscapingTextWriter trapFile);
|
||||
|
||||
public abstract void WriteQuotedId(TextWriter trapFile);
|
||||
public virtual void WriteQuotedId(EscapingTextWriter trapFile)
|
||||
{
|
||||
trapFile.WriteUnescaped("@\"");
|
||||
WriteId(trapFile);
|
||||
trapFile.WriteUnescaped('\"');
|
||||
}
|
||||
|
||||
public abstract Location? ReportingLocation { get; }
|
||||
|
||||
@@ -27,9 +32,10 @@ namespace Semmle.Extraction
|
||||
{
|
||||
trapFile.WriteLabel(this);
|
||||
trapFile.Write("=");
|
||||
using var escaping = new EscapingTextWriter(trapFile);
|
||||
try
|
||||
{
|
||||
WriteQuotedId(trapFile);
|
||||
WriteQuotedId(escaping);
|
||||
}
|
||||
catch (Exception ex) // lgtm[cs/catch-of-all-exceptions]
|
||||
{
|
||||
@@ -51,7 +57,7 @@ namespace Semmle.Extraction
|
||||
/// </summary>
|
||||
public string GetDebugLabel()
|
||||
{
|
||||
using var writer = new StringWriter();
|
||||
using var writer = new EscapingTextWriter();
|
||||
writer.WriteLabel(Label.Value);
|
||||
writer.Write('=');
|
||||
WriteQuotedId(writer);
|
||||
|
||||
@@ -29,14 +29,14 @@ namespace Semmle.Extraction
|
||||
/// Writes the unique identifier of this entitiy to a trap file.
|
||||
/// </summary>
|
||||
/// <param name="trapFile">The trapfile to write to.</param>
|
||||
void WriteId(TextWriter trapFile);
|
||||
void WriteId(EscapingTextWriter trapFile);
|
||||
|
||||
/// <summary>
|
||||
/// Writes the quoted identifier of this entity,
|
||||
/// which could be @"..." or *
|
||||
/// </summary>
|
||||
/// <param name="trapFile">The trapfile to write to.</param>
|
||||
void WriteQuotedId(TextWriter trapFile);
|
||||
void WriteQuotedId(EscapingTextWriter trapFile);
|
||||
|
||||
/// <summary>
|
||||
/// The location for reporting purposes.
|
||||
|
||||
@@ -7,12 +7,5 @@ namespace Semmle.Extraction
|
||||
protected LabelledEntity(Context cx) : base(cx)
|
||||
{
|
||||
}
|
||||
|
||||
public override void WriteQuotedId(TextWriter trapFile)
|
||||
{
|
||||
trapFile.Write("@\"");
|
||||
WriteId(trapFile);
|
||||
trapFile.Write('\"');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,14 +9,14 @@ namespace Semmle.Extraction
|
||||
cx.AddFreshLabel(this);
|
||||
}
|
||||
|
||||
public sealed override void WriteId(TextWriter writer)
|
||||
public sealed override void WriteId(EscapingTextWriter writer)
|
||||
{
|
||||
writer.Write('*');
|
||||
}
|
||||
|
||||
public sealed override void WriteQuotedId(TextWriter writer)
|
||||
public sealed override void WriteQuotedId(EscapingTextWriter writer)
|
||||
{
|
||||
WriteId(writer);
|
||||
writer.Write('*');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace Semmle.Extraction.Entities
|
||||
|
||||
public override bool NeedsPopulation => true;
|
||||
|
||||
public override void WriteId(System.IO.TextWriter trapFile)
|
||||
public override void WriteId(EscapingTextWriter trapFile)
|
||||
{
|
||||
trapFile.Write(TransformedPath.DatabaseId);
|
||||
trapFile.Write(";sourcefile");
|
||||
|
||||
@@ -15,7 +15,7 @@ namespace Semmle.Extraction.Entities
|
||||
|
||||
public override bool NeedsPopulation => true;
|
||||
|
||||
public override void WriteId(System.IO.TextWriter trapFile)
|
||||
public override void WriteId(EscapingTextWriter trapFile)
|
||||
{
|
||||
trapFile.Write(Symbol.DatabaseId);
|
||||
trapFile.Write(";folder");
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace Semmle.Extraction.Entities
|
||||
trapFile.files(this, "", "", "");
|
||||
}
|
||||
|
||||
public override void WriteId(TextWriter trapFile)
|
||||
public override void WriteId(EscapingTextWriter trapFile)
|
||||
{
|
||||
trapFile.Write("GENERATED;sourcefile");
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace Semmle.Extraction.Entities
|
||||
trapFile.locations_default(this, generatedFile, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
public override void WriteId(TextWriter trapFile)
|
||||
public override void WriteId(EscapingTextWriter trapFile)
|
||||
{
|
||||
trapFile.Write("loc,");
|
||||
trapFile.WriteSubId(generatedFile);
|
||||
|
||||
Reference in New Issue
Block a user