Skip to content

Commit 296dee9

Browse files
committed
Merge remote-tracking branch 'upstream/main' into fixmodel
2 parents 5a451e9 + 28a5a1d commit 296dee9

File tree

13 files changed

+320
-117
lines changed

13 files changed

+320
-117
lines changed

cpp/autobuilder/Semmle.Autobuild.Cpp.Tests/BuildScripts.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,9 +145,9 @@ IEnumerable<string> IBuildActions.EnumerateDirectories(string dir)
145145

146146
bool IBuildActions.IsMacOs() => IsMacOs;
147147

148-
public bool IsArm { get; set; }
148+
public bool IsRunningOnAppleSilicon { get; set; }
149149

150-
bool IBuildActions.IsArm() => IsArm;
150+
bool IBuildActions.IsRunningOnAppleSilicon() => IsRunningOnAppleSilicon;
151151

152152
string IBuildActions.PathCombine(params string[] parts)
153153
{

csharp/autobuilder/Semmle.Autobuild.CSharp.Tests/BuildScripts.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,9 +159,9 @@ IEnumerable<string> IBuildActions.EnumerateDirectories(string dir)
159159

160160
bool IBuildActions.IsMacOs() => IsMacOs;
161161

162-
public bool IsArm { get; set; }
162+
public bool IsRunningOnAppleSilicon { get; set; }
163163

164-
bool IBuildActions.IsArm() => IsArm;
164+
bool IBuildActions.IsRunningOnAppleSilicon() => IsRunningOnAppleSilicon;
165165

166166
public string PathCombine(params string[] parts)
167167
{

csharp/autobuilder/Semmle.Autobuild.Shared/BuildActions.cs

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using System.Diagnostics;
44
using System.Diagnostics.CodeAnalysis;
55
using System.IO;
6+
using System.Linq;
67
using System.Runtime.InteropServices;
78
using System.Xml;
89
using Semmle.Util;
@@ -119,10 +120,10 @@ public interface IBuildActions
119120
bool IsMacOs();
120121

121122
/// <summary>
122-
/// Gets a value indicating whether we are running on arm.
123+
/// Gets a value indicating whether we are running on Apple Silicon.
123124
/// </summary>
124-
/// <returns>True if we are running on arm.</returns>
125-
bool IsArm();
125+
/// <returns>True if we are running on Apple Silicon.</returns>
126+
bool IsRunningOnAppleSilicon();
126127

127128
/// <summary>
128129
/// Combine path segments, Path.Combine().
@@ -240,9 +241,25 @@ int IBuildActions.RunProcess(string cmd, string args, string? workingDirectory,
240241

241242
bool IBuildActions.IsMacOs() => RuntimeInformation.IsOSPlatform(OSPlatform.OSX);
242243

243-
bool IBuildActions.IsArm() =>
244-
RuntimeInformation.ProcessArchitecture == Architecture.Arm64 ||
245-
RuntimeInformation.ProcessArchitecture == Architecture.Arm;
244+
bool IBuildActions.IsRunningOnAppleSilicon()
245+
{
246+
var thisBuildActions = (IBuildActions)this;
247+
248+
if (!thisBuildActions.IsMacOs())
249+
{
250+
return false;
251+
}
252+
253+
try
254+
{
255+
thisBuildActions.RunProcess("sysctl", "machdep.cpu.brand_string", workingDirectory: null, env: null, out var stdOut);
256+
return stdOut?.Any(s => s?.ToLowerInvariant().Contains("apple") == true) ?? false;
257+
}
258+
catch (Exception)
259+
{
260+
return false;
261+
}
262+
}
246263

247264
string IBuildActions.PathCombine(params string[] parts) => Path.Combine(parts);
248265

csharp/autobuilder/Semmle.Autobuild.Shared/MsBuildRule.cs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,12 @@ internal static class MsBuildCommandExtensions
1515
/// <returns></returns>
1616
public static CommandBuilder MsBuildCommand(this CommandBuilder cmdBuilder, IAutobuilder<AutobuildOptionsShared> builder)
1717
{
18-
var isArmMac = builder.Actions.IsMacOs() && builder.Actions.IsArm();
19-
2018
// mono doesn't ship with `msbuild` on Arm-based Macs, but we can fall back to
2119
// msbuild that ships with `dotnet` which can be invoked with `dotnet msbuild`
2220
// perhaps we should do this on all platforms?
23-
return isArmMac ?
24-
cmdBuilder.RunCommand("dotnet").Argument("msbuild") :
25-
cmdBuilder.RunCommand("msbuild");
21+
return builder.Actions.IsRunningOnAppleSilicon()
22+
? cmdBuilder.RunCommand("dotnet").Argument("msbuild")
23+
: cmdBuilder.RunCommand("msbuild");
2624
}
2725
}
2826

ql/Cargo.lock

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ql/extractor/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ tree-sitter-blame = {path = "../buramu/tree-sitter-blame"}
1414
tree-sitter-json = {git = "https://github.com/tausbn/tree-sitter-json.git", rev = "745663ee997f1576fe1e7187e6347e0db36ec7a9"}
1515
clap = { version = "4.2", features = ["derive"] }
1616
tracing = "0.1"
17-
tracing-subscriber = { version = "0.3.17", features = ["env-filter"] }
17+
tracing-subscriber = { version = "0.3.18", features = ["env-filter"] }
1818
rayon = "1.8.0"
1919
regex = "1.10.2"
2020
codeql-extractor = { path = "../../shared/tree-sitter-extractor" }

swift/ql/lib/codeql/swift/frameworks/StandardLibrary/NsString.qll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,8 +103,8 @@ private class NsStringSummaries extends SummaryModelCsv {
103103
";NSString;true;data(using:);;;Argument[-1];ReturnValue;taint",
104104
";NSString;true;data(using:allowLossyConversion:);;;Argument[-1];ReturnValue;taint",
105105
";NSString;true;path(withComponents:);;;Argument[0].CollectionElement;ReturnValue;taint",
106-
";NSString;true;completePath(into:caseSensitive:matchesInto:filterTypes:);;;Argument[-1];Argument[0];taint",
107-
";NSString;true;completePath(into:caseSensitive:matchesInto:filterTypes:);;;Argument[-1];Argument[2];taint",
106+
";NSString;true;completePath(into:caseSensitive:matchesInto:filterTypes:);;;Argument[-1];Argument[0].CollectionElement;taint",
107+
";NSString;true;completePath(into:caseSensitive:matchesInto:filterTypes:);;;Argument[-1];Argument[2].CollectionElement.CollectionElement;taint",
108108
";NSString;true;getFileSystemRepresentation(_:maxLength:);;;Argument[-1];Argument[0];taint",
109109
";NSString;true;appendingPathComponent(_:);;;Argument[-1..0];ReturnValue;taint",
110110
";NSString;true;appendingPathComponent(_:conformingTo:);;;Argument[-1..0];ReturnValue;taint",

swift/ql/lib/codeql/swift/frameworks/StandardLibrary/NsUrl.qll

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,34 @@
33
*/
44

55
import swift
6+
private import codeql.swift.dataflow.DataFlow
67
private import codeql.swift.dataflow.ExternalFlow
8+
private import codeql.swift.dataflow.FlowSteps
9+
10+
/**
11+
* A content implying that, if an `NSURL` is tainted, then all its fields are tainted.
12+
*/
13+
private class NSUrlFieldsInheritTaint extends TaintInheritingContent,
14+
DataFlow::Content::FieldContent
15+
{
16+
NSUrlFieldsInheritTaint() {
17+
this.getField().getEnclosingDecl().asNominalTypeDecl().getFullName() = "NSURL"
18+
}
19+
}
720

821
/**
922
* A model for `NSURL` members that permit taint flow.
1023
*/
1124
private class NsUrlSummaries extends SummaryModelCsv {
1225
override predicate row(string row) {
13-
row = ";NSURL;true;init(string:);(String);;Argument[0];ReturnValue.OptionalSome;taint"
26+
row =
27+
[
28+
";NSURL;true;init(string:);(String);;Argument[0];ReturnValue.OptionalSome;taint",
29+
";NSURL;true;appendingPathComponent(_:);;;Argument[-1..0];ReturnValue;taint",
30+
";NSURL;true;appendingPathComponent(_:isDirectory:);;;Argument[-1..0];ReturnValue;taint",
31+
";NSURL;true;appendingPathComponent(_:conformingTo:);;;Argument[-1..0];ReturnValue;taint",
32+
";NSURL;true;appendingPathExtension(_:);;;Argument[-1..0];ReturnValue;taint",
33+
";NSURL;true;appendingPathExtension(for:);;;Argument[-1];ReturnValue;taint",
34+
]
1435
}
1536
}

swift/ql/lib/codeql/swift/frameworks/StandardLibrary/String.qll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ private class StringSummaries extends SummaryModelCsv {
4545
";StringProtocol;true;applyingTransform(_:reverse:);;;Argument[-1];ReturnValue;taint",
4646
";StringProtocol;true;cString(using:);;;Argument[-1];ReturnValue;taint",
4747
";StringProtocol;true;capitalized(with:);;;Argument[-1];ReturnValue;taint",
48-
";StringProtocol;true;completePath(into:caseSensitive:matchesInto:filterTypes:);;;Argument[-1];Argument[0].OptionalSome.CollectionElement;taint",
49-
";StringProtocol;true;completePath(into:caseSensitive:matchesInto:filterTypes:);;;Argument[-1];Argument[2].OptionalSome.CollectionElement.CollectionElement;taint",
48+
";StringProtocol;true;completePath(into:caseSensitive:matchesInto:filterTypes:);;;Argument[-1];Argument[0].CollectionElement;taint",
49+
";StringProtocol;true;completePath(into:caseSensitive:matchesInto:filterTypes:);;;Argument[-1];Argument[2].CollectionElement.CollectionElement;taint",
5050
";StringProtocol;true;components(separatedBy:);;;Argument[-1];ReturnValue.CollectionElement;taint",
5151
";StringProtocol;true;data(using:allowLossyConversion:);;;Argument[-1];ReturnValue;taint",
5252
";StringProtocol;true;folding(options:locale:);;;Argument[-1];ReturnValue;taint",

swift/ql/lib/codeql/swift/frameworks/StandardLibrary/Url.qll

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ class UrlDecl extends StructDecl {
1515
/**
1616
* A content implying that, if a `URL` is tainted, then all its fields are tainted.
1717
*/
18-
private class UriFieldsInheritTaint extends TaintInheritingContent, DataFlow::Content::FieldContent {
19-
UriFieldsInheritTaint() {
18+
private class UrlFieldsInheritTaint extends TaintInheritingContent, DataFlow::Content::FieldContent {
19+
UrlFieldsInheritTaint() {
2020
this.getField().getEnclosingDecl().asNominalTypeDecl() instanceof UrlDecl
2121
}
2222
}
@@ -108,6 +108,8 @@ private class UrlSummaries extends SummaryModelCsv {
108108
";URL;true;init(dataRepresentation:relativeTo:isAbsolute:);;;Argument[0];ReturnValue;taint",
109109
";URL;true;init(dataRepresentation:relativeTo:isAbsolute:);;;Argument[1].OptionalSome;ReturnValue;taint",
110110
";URL;true;init(_:strategy:);;;Argument[0];ReturnValue;taint",
111+
";URL;true;init(filePath:);;;Argument[0];ReturnValue.OptionalSome;taint",
112+
";URL;true;init(filePath:isDirectory:);;;Argument[0];ReturnValue.OptionalSome;taint",
111113
";URL;true;init(filePath:directoryHint:);;;Argument[0];ReturnValue.OptionalSome;taint",
112114
";URL;true;init(filePath:directoryHint:relativeTo:);;;Argument[0];ReturnValue;taint",
113115
";URL;true;init(filePath:directoryHint:relativeTo:);;;Argument[2].OptionalSome;ReturnValue;taint",
@@ -128,6 +130,7 @@ private class UrlSummaries extends SummaryModelCsv {
128130
";URL;true;appendingPathComponent(_:conformingTo:);;;Argument[-1..0];ReturnValue;taint",
129131
";URL;true;appendPathExtension(_:);;;Argument[-1..0];Argument[-1];taint",
130132
";URL;true;appendingPathExtension(_:);;;Argument[-1..0];ReturnValue;taint",
133+
";URL;true;appendingPathExtension(for:);;;Argument[-1];ReturnValue;taint",
131134
";URL;true;deletingLastPathComponent();;;Argument[-1];ReturnValue;taint",
132135
";URL;true;deletingPathExtension();;;Argument[-1];ReturnValue;taint",
133136
";URL;true;bookmarkData(options:includingResourceValuesForKeys:relativeTo:);;;Argument[-1];ReturnValue;taint",

0 commit comments

Comments
 (0)