private static void FillTestData() { var p = new Program() { ProgramID = Programs.Count + 1, ProgramName = "Scary Lesson" }; var pl = new ProgramLocation() { ProgramLocationID = ProgramLocations.Count + 1, ProgramID = p.ProgramID, ProgramLocationName = "Haunted House" }; Programs.Add(p); ProgramLocations.Add(pl); p = new Program() { ProgramID = Programs.Count + 1, ProgramName = "Terrifying Teachings" }; pl = new ProgramLocation() { ProgramLocationID = ProgramLocations.Count + 1, ProgramID = p.ProgramID, ProgramLocationName = "Mystical Mansion" }; Programs.Add(p); ProgramLocations.Add(pl); p = new Program() { ProgramID = Programs.Count + 1, ProgramName = "Unassociated Program" }; Programs.Add(p); }
private HorizonClient CreateHorizonClientImpl(ProgramLocation location, ReadOnlySpan <byte> accessControlData, ReadOnlySpan <byte> accessControlDescriptor) { HorizonClient client = CreateHorizonClient(); LoaderClient.Fs.RegisterProgram(client.ProcessId.Value, location.ProgramId, location.StorageId, accessControlData, accessControlDescriptor).ThrowIfFailure(); return(client); }
internal ProgramInformation(string programFolder, ProgramLocation location) { Path = programFolder; ProgramLocation = location; Name = new DirectoryInfo(programFolder).Name; IEnumerable <string> files = Directory.EnumerateFiles(programFolder); DllFiles = files.Where(s => s.EndsWith(".dll")).ToList(); ExeFile = System.IO.Path.Combine(programFolder, files.First(f => f.EndsWith("exe"))); }
internal ProgramInformation (string programFolder, ProgramLocation location) { Name = programFolder; ProgramLocation = location; Path = new DirectoryInfo(programFolder).Name; IEnumerable<string> files = Directory.EnumerateFiles (programFolder); DllFiles = files.Where(s => s.EndsWith(".dll")).ToList(); ExeFile = System.IO.Path.Combine(programFolder, files.First(f => f.EndsWith("exe"))); }
public void RemoveNoConstraintsBasedOnVars() { IConstraintManager CM = new ConstraintManager(); IExprBuilder builder = GetBuilder(); // Dummy Boogie variable var bv8TypeIdent = new TypedIdent(Token.NoToken, "bv8", Microsoft.Boogie.Type.GetBvType(8)); var dummyVarBv = new GlobalVariable(Token.NoToken, bv8TypeIdent); // dummyVar needs a programLocation, otherwise SymbolicVariable constructor raises an exception var progLoc = new ProgramLocation(dummyVarBv); dummyVarBv.SetMetadata <ProgramLocation>((int)Symbooglix.Annotation.AnnotationIndex.PROGRAM_LOCATION, progLoc); var s0 = new SymbolicVariable("s0", dummyVarBv).Expr; var s1 = new SymbolicVariable("s1", dummyVarBv).Expr; var s2 = new SymbolicVariable("s2", dummyVarBv).Expr; // Construct some constraints Expr c0 = builder.Eq(builder.BVAND(s0, s1), builder.ConstantBV(0, 8)); Expr c1 = builder.Eq(s2, builder.ConstantBV(1, 8)); CM.AddConstraint(c0, progLoc); CM.AddConstraint(c1, progLoc); var mockSolver = new MockSolver(); var indepenceSolver = new Symbooglix.Solver.ConstraintIndependenceSolver(mockSolver); Expr queryExpr = builder.Eq(builder.BVAND(s1, s2), builder.ConstantBV(0, 8)); indepenceSolver.ComputeSatisfiability(new Solver.Query(CM, new Constraint(queryExpr))); // Check no constraints were removed Assert.AreEqual(2, mockSolver.Constraints.Count); Assert.AreSame(queryExpr, mockSolver.QueryExpr); bool c0Found = false; bool c1Found = false; foreach (var constraint in mockSolver.Constraints) { if (c0 == constraint.Condition) { c0Found = true; } if (c1 == constraint.Condition) { c1Found = true; } } Assert.IsTrue(c0Found); Assert.IsTrue(c1Found); }
public HorizonClient CreateHorizonClient(ProgramLocation location, AccessControlBits.Bits fsPermissions) { var descriptor = new AccessControlDescriptor(); var dataHeader = new AccessControlDataHeader(); descriptor.Version = 1; dataHeader.Version = 1; descriptor.AccessFlags = (ulong)fsPermissions; dataHeader.AccessFlags = (ulong)fsPermissions; return(CreateHorizonClientImpl(location, SpanHelpers.AsReadOnlyByteSpan(in dataHeader), SpanHelpers.AsReadOnlyByteSpan(in descriptor))); }
private void UpdateProgramList() { var media = new string[] { ProgramPathEV3 }; programList = new List <ProgramInformation> (); foreach (var mediaPath in media) { IEnumerable <string> programsFolders = Directory.EnumerateDirectories(mediaPath); foreach (var programFolder in programsFolders) { ProgramLocation location = ProgramLocation.ProgramFolder; programList.Add(new ProgramInformation(programFolder, location)); } } }
SymbolicVariable GetVar(string name) { // FIXME: THIS IS A HACK! // Dummy Boogie variable var IntTypeIdent = new TypedIdent(Token.NoToken, name, Microsoft.Boogie.Type.Int); var dummyVarBv = new GlobalVariable(Token.NoToken, IntTypeIdent); // dummyVar needs a programLocation, otherwise SymbolicVariable constructor raises an exception var progLoc = new ProgramLocation(dummyVarBv); dummyVarBv.SetMetadata <ProgramLocation>((int)Symbooglix.Annotation.AnnotationIndex.PROGRAM_LOCATION, progLoc); return(new SymbolicVariable(name, dummyVarBv)); }
private string LocationToString (ProgramLocation location) { string s = ""; switch (location) { case MonoBrickFirmware.FileSystem.ProgramLocation.ProgramFolder: s = "Program folder"; break; case MonoBrickFirmware.FileSystem.ProgramLocation.SDCard: s = "SD card"; break; case MonoBrickFirmware.FileSystem.ProgramLocation.Custom: s = "Custom"; break; } return s; }
private string LocationToString(ProgramLocation location) { string s = ""; switch (location) { case MonoBrickFirmware.FileSystem.ProgramLocation.ProgramFolder: s = "Program folder"; break; case MonoBrickFirmware.FileSystem.ProgramLocation.SDCard: s = "SD card"; break; case MonoBrickFirmware.FileSystem.ProgramLocation.Custom: s = "Custom"; break; } return(s); }
public HorizonClient CreateHorizonClient(ProgramLocation location, ReadOnlySpan <byte> fsAccessControlData, ReadOnlySpan <byte> fsAccessControlDescriptor) { return(CreateHorizonClientImpl(location, fsAccessControlData, fsAccessControlDescriptor)); }
private void CheckIsNotNullAndString(ProgramLocation pl) { Assert.IsNotNull(pl); Assert.IsNotNullOrEmpty(pl.ToString()); }
public void RemoveOneConstraintBasedOnVarsAndFunctions() { IConstraintManager CM = new ConstraintManager(); var builder = GetBuilder(); // Dummy Boogie variable var bv8Type = Microsoft.Boogie.Type.GetBvType(8); var bv8TypeIdent = new TypedIdent(Token.NoToken, "bv8", bv8Type); var dummyVarBv = new GlobalVariable(Token.NoToken, bv8TypeIdent); // dummyVar needs a programLocation, otherwise SymbolicVariable constructor raises an exception var progLoc = new ProgramLocation(dummyVarBv); dummyVarBv.SetMetadata <ProgramLocation>((int)Symbooglix.Annotation.AnnotationIndex.PROGRAM_LOCATION, progLoc); var s0 = new SymbolicVariable("s0", dummyVarBv).Expr; var s1 = new SymbolicVariable("s1", dummyVarBv).Expr; var s2 = new SymbolicVariable("s2", dummyVarBv).Expr; // Construct some constraints Expr c0 = builder.Eq(builder.BVAND(s0, s1), builder.ConstantBV(0, 8)); Expr c1 = builder.Eq(s2, builder.ConstantBV(1, 8)); var FCB = new FunctionCallBuilder(); var foobarFunc = FCB.CreateUninterpretedFunctionCall("foobar", bv8Type, new List <Microsoft.Boogie.Type>() { bv8Type }); // foobar(0bv8) == 0bv8 Expr c2 = builder.Eq(builder.UFC(foobarFunc, builder.ConstantBV(0, 8)), builder.ConstantBV(0, 8)); CM.AddConstraint(c0, progLoc); CM.AddConstraint(c1, progLoc); CM.AddConstraint(c2, progLoc); var mockSolver = new MockSolver(); var indepenceSolver = new Symbooglix.Solver.ConstraintIndependenceSolver(mockSolver); // The query expression does not use the "foobar" function so we don't need to keep constraints on that function Expr queryExpr = builder.Eq(builder.BVAND(s1, s2), builder.ConstantBV(0, 8)); indepenceSolver.ComputeSatisfiability(new Solver.Query(CM, new Constraint(queryExpr))); // Check no constraints were removed Assert.AreEqual(2, mockSolver.Constraints.Count); Assert.AreSame(queryExpr, mockSolver.QueryExpr); bool c0Found = false; bool c1Found = false; foreach (var constraint in mockSolver.Constraints) { if (c0 == constraint.Condition) { c0Found = true; } if (c1 == constraint.Condition) { c1Found = true; } } Assert.IsTrue(c0Found); Assert.IsTrue(c1Found); }