Skip to content

Commit 755e74f

Browse files
authored
Restrict token permissions and add OpenSSF badge to repository (#100)
1 parent d175220 commit 755e74f

File tree

6 files changed

+84
-100
lines changed

6 files changed

+84
-100
lines changed

.github/workflows/ci.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ env:
2020
MINGW_URL: "https://github.com/brechtsanders/winlibs_mingw/releases/download/13.2.0-16.0.6-11.0.0-ucrt-r1/winlibs-x86_64-posix-seh-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1.7z"
2121
MINGW_VERSION: "13.2.0-16.0.6-11.0.0-ucrt-r1"
2222

23+
permissions:
24+
contents: read
25+
2326
jobs:
2427
cache_craff:
2528
runs-on: ubuntu-latest

.github/workflows/scans.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ on:
77
pull_request:
88
branches: ["main"]
99

10+
permissions:
11+
contents: read
12+
1013
jobs:
1114
super_lint:
1215
name: Run Super Linter

Cargo.toml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,21 +48,21 @@ libafl_bolts = { git = "https://github.com/AFLplusplus/LibAFL", rev = "0f26f6ea3
4848
libafl_targets = { git = "https://github.com/AFLplusplus/LibAFL", rev = "0f26f6ea32aa74ee526636558842ec06bbfb49bb", default-features = false, features = [
4949
"std",
5050
] }
51-
yaxpeax-arch = { version = "0.2.8", default-features = false, features = [
51+
yaxpeax-arch = { version = "0.3.2", default-features = false, features = [
5252
"std",
5353
"use-serde",
5454
] }
55-
yaxpeax-x86 = { version = "1.2.2", default-features = false, features = [
55+
yaxpeax-x86 = { version = "2.0.0", default-features = false, features = [
5656
"std",
5757
"use-serde",
5858
"fmt",
5959
] }
60-
typed-builder = "0.18.2"
60+
typed-builder = "0.19.1"
6161
raw-cstr = "0.1.4"
6262
goblin = "0.8.2"
6363
yaxpeax-riscv = { git = "https://github.com/DrChat/yaxpeax-riscv", version = "0.1.0", features = [
6464
"serde",
65-
], rev = "0e2151b" }
65+
], rev = "5973ff8" }
6666
crc32fast = "1.4.2"
6767
simics = "0.1.1"
6868
indoc = "2.0.5"
@@ -74,7 +74,7 @@ num-traits = "0.2.19"
7474
num-derive = "0.4.2"
7575
tracing-subscriber = "0.3.18"
7676
tracing = { version = "0.1.40", features = ["log"] }
77-
yaxpeax-arm = "0.2.5"
77+
yaxpeax-arm = "0.3.0"
7878
chrono = "0.4.38"
7979

8080
[dev-dependencies]

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/9349/badge)](https://www.bestpractices.dev/projects/9349)
2+
13
# TSFFS: Target Software Fuzzer For SIMICS
24

35
TSFFS is a snapshotting, coverage-guided fuzzer built on the

src/arch/x86.rs

Lines changed: 34 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -766,79 +766,67 @@ impl TryFrom<(&Operand, Option<u8>)> for CmpExpr {
766766
let value = value.0;
767767

768768
let expr = match value {
769-
Operand::ImmediateI8(i) => CmpExpr::I8(*i),
770-
Operand::ImmediateU8(u) => CmpExpr::U8(*u),
771-
Operand::ImmediateI16(i) => CmpExpr::I16(*i),
772-
Operand::ImmediateU16(u) => CmpExpr::U16(*u),
773-
Operand::ImmediateI32(i) => CmpExpr::I32(*i),
774-
Operand::ImmediateU32(u) => CmpExpr::U32(*u),
775-
Operand::Register(r) => CmpExpr::Reg((r.name().to_string(), r.width())),
776-
Operand::DisplacementU32(d) => CmpExpr::Addr(*d as u64),
777-
Operand::RegDeref(r) => CmpExpr::Deref((
778-
Box::new(CmpExpr::Reg((r.name().to_string(), r.width()))),
769+
Operand::ImmediateI8 { imm } => CmpExpr::I8(*imm),
770+
Operand::ImmediateU8 { imm } => CmpExpr::U8(*imm),
771+
Operand::ImmediateI16 { imm } => CmpExpr::I16(*imm),
772+
Operand::ImmediateU16 { imm } => CmpExpr::U16(*imm),
773+
Operand::ImmediateI32 { imm } => CmpExpr::I32(*imm),
774+
Operand::ImmediateU32 { imm } => CmpExpr::U32(*imm),
775+
Operand::Register { reg } => CmpExpr::Reg((reg.name().to_string(), reg.width())),
776+
Operand::AbsoluteU32 { addr } => CmpExpr::Addr(*addr as u64),
777+
Operand::MemDeref { base } => CmpExpr::Deref((
778+
Box::new(CmpExpr::Reg((base.name().to_string(), base.width()))),
779779
width,
780780
)),
781-
Operand::RegDisp(r, d) => CmpExpr::Deref((
781+
Operand::Disp { base, disp } => CmpExpr::Deref((
782782
Box::new(CmpExpr::Add((
783-
Box::new(CmpExpr::Reg((r.name().to_string(), r.width()))),
784-
Box::new(CmpExpr::I32(*d)),
783+
Box::new(CmpExpr::Reg((base.name().to_string(), base.width()))),
784+
Box::new(CmpExpr::I32(*disp)),
785785
))),
786786
width,
787787
)),
788-
Operand::RegScale(r, s) => CmpExpr::Deref((
788+
Operand::MemIndexScale { index, scale } => CmpExpr::Deref((
789789
Box::new(CmpExpr::Mul((
790-
Box::new(CmpExpr::Reg((r.name().to_string(), r.width()))),
791-
Box::new(CmpExpr::U8(*s)),
790+
Box::new(CmpExpr::Reg((index.name().to_string(), index.width()))),
791+
Box::new(CmpExpr::U8(*scale)),
792792
))),
793793
width,
794794
)),
795-
Operand::RegIndexBase(r, i) => CmpExpr::Deref((
796-
Box::new(CmpExpr::Add((
797-
Box::new(CmpExpr::Reg((r.name().to_string(), r.width()))),
798-
Box::new(CmpExpr::Reg((i.name().to_string(), i.width()))),
799-
))),
800-
width,
801-
)),
802-
Operand::RegIndexBaseDisp(r, i, d) => CmpExpr::Deref((
803-
Box::new(CmpExpr::Add((
804-
Box::new(CmpExpr::Add((
805-
Box::new(CmpExpr::Reg((r.name().to_string(), r.width()))),
806-
Box::new(CmpExpr::Reg((i.name().to_string(), i.width()))),
807-
))),
808-
Box::new(CmpExpr::I32(*d)),
809-
))),
810-
width,
811-
)),
812-
Operand::RegScaleDisp(r, s, d) => CmpExpr::Deref((
795+
Operand::MemIndexScaleDisp { index, scale, disp } => CmpExpr::Deref((
813796
Box::new(CmpExpr::Add((
814797
Box::new(CmpExpr::Mul((
815-
Box::new(CmpExpr::Reg((r.name().to_string(), r.width()))),
816-
Box::new(CmpExpr::U8(*s)),
798+
Box::new(CmpExpr::Reg((index.name().to_string(), index.width()))),
799+
Box::new(CmpExpr::U8(*scale)),
817800
))),
818-
Box::new(CmpExpr::I32(*d)),
801+
Box::new(CmpExpr::I32(*disp)),
819802
))),
820803
width,
821804
)),
822-
Operand::RegIndexBaseScale(r, i, s) => CmpExpr::Deref((
805+
Operand::MemBaseIndexScale { base, index, scale } => CmpExpr::Deref((
823806
Box::new(CmpExpr::Add((
824-
Box::new(CmpExpr::Reg((r.name().to_string(), r.width()))),
807+
Box::new(CmpExpr::Reg((base.name().to_string(), base.width()))),
825808
Box::new(CmpExpr::Add((
826-
Box::new(CmpExpr::Reg((i.name().to_string(), i.width()))),
827-
Box::new(CmpExpr::U8(*s)),
809+
Box::new(CmpExpr::Reg((index.name().to_string(), index.width()))),
810+
Box::new(CmpExpr::U8(*scale)),
828811
))),
829812
))),
830813
width,
831814
)),
832-
Operand::RegIndexBaseScaleDisp(r, i, s, d) => CmpExpr::Deref((
815+
Operand::MemBaseIndexScaleDisp {
816+
base,
817+
index,
818+
scale,
819+
disp,
820+
} => CmpExpr::Deref((
833821
Box::new(CmpExpr::Add((
834822
Box::new(CmpExpr::Add((
835-
Box::new(CmpExpr::Reg((r.name().to_string(), r.width()))),
823+
Box::new(CmpExpr::Reg((base.name().to_string(), base.width()))),
836824
Box::new(CmpExpr::Add((
837-
Box::new(CmpExpr::Reg((i.name().to_string(), i.width()))),
838-
Box::new(CmpExpr::U8(*s)),
825+
Box::new(CmpExpr::Reg((index.name().to_string(), index.width()))),
826+
Box::new(CmpExpr::U8(*scale)),
839827
))),
840828
))),
841-
Box::new(CmpExpr::I32(*d)),
829+
Box::new(CmpExpr::I32(*disp)),
842830
))),
843831
width,
844832
)),

src/arch/x86_64.rs

Lines changed: 37 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -740,82 +740,70 @@ impl TryFrom<(&Operand, Option<u8>)> for CmpExpr {
740740
let value = value.0;
741741

742742
let expr = match value {
743-
Operand::ImmediateI8(i) => CmpExpr::I8(*i),
744-
Operand::ImmediateU8(u) => CmpExpr::U8(*u),
745-
Operand::ImmediateI16(i) => CmpExpr::I16(*i),
746-
Operand::ImmediateU16(u) => CmpExpr::U16(*u),
747-
Operand::ImmediateI32(i) => CmpExpr::I32(*i),
748-
Operand::ImmediateU32(u) => CmpExpr::U32(*u),
749-
Operand::ImmediateI64(i) => CmpExpr::I64(*i),
750-
Operand::ImmediateU64(u) => CmpExpr::U64(*u),
751-
Operand::Register(r) => CmpExpr::Reg((r.name().to_string(), r.width())),
752-
Operand::DisplacementU32(d) => CmpExpr::Addr(*d as u64),
753-
Operand::DisplacementU64(d) => CmpExpr::Addr(*d),
754-
Operand::RegDeref(r) => CmpExpr::Deref((
755-
Box::new(CmpExpr::Reg((r.name().to_string(), r.width()))),
743+
Operand::ImmediateI8 { imm } => CmpExpr::I8(*imm),
744+
Operand::ImmediateU8 { imm } => CmpExpr::U8(*imm),
745+
Operand::ImmediateI16 { imm } => CmpExpr::I16(*imm),
746+
Operand::ImmediateU16 { imm } => CmpExpr::U16(*imm),
747+
Operand::ImmediateI32 { imm } => CmpExpr::I32(*imm),
748+
Operand::ImmediateU32 { imm } => CmpExpr::U32(*imm),
749+
Operand::ImmediateI64 { imm } => CmpExpr::I64(*imm),
750+
Operand::ImmediateU64 { imm } => CmpExpr::U64(*imm),
751+
Operand::Register { reg } => CmpExpr::Reg((reg.name().to_string(), reg.width())),
752+
Operand::AbsoluteU32 { addr } => CmpExpr::Addr(*addr as u64),
753+
Operand::AbsoluteU64 { addr } => CmpExpr::Addr(*addr),
754+
Operand::MemDeref { base } => CmpExpr::Deref((
755+
Box::new(CmpExpr::Reg((base.name().to_string(), base.width()))),
756756
width,
757757
)),
758-
Operand::RegDisp(r, d) => CmpExpr::Deref((
758+
Operand::Disp { base, disp } => CmpExpr::Deref((
759759
Box::new(CmpExpr::Add((
760-
Box::new(CmpExpr::Reg((r.name().to_string(), r.width()))),
761-
Box::new(CmpExpr::I32(*d)),
760+
Box::new(CmpExpr::Reg((base.name().to_string(), base.width()))),
761+
Box::new(CmpExpr::I32(*disp)),
762762
))),
763763
width,
764764
)),
765-
Operand::RegScale(r, s) => CmpExpr::Deref((
765+
Operand::MemIndexScale { index, scale } => CmpExpr::Deref((
766766
Box::new(CmpExpr::Mul((
767-
Box::new(CmpExpr::Reg((r.name().to_string(), r.width()))),
768-
Box::new(CmpExpr::U8(*s)),
767+
Box::new(CmpExpr::Reg((index.name().to_string(), index.width()))),
768+
Box::new(CmpExpr::U8(*scale)),
769769
))),
770770
width,
771771
)),
772-
Operand::RegIndexBase(r, i) => CmpExpr::Deref((
773-
Box::new(CmpExpr::Add((
774-
Box::new(CmpExpr::Reg((r.name().to_string(), r.width()))),
775-
Box::new(CmpExpr::Reg((i.name().to_string(), i.width()))),
776-
))),
777-
width,
778-
)),
779-
Operand::RegIndexBaseDisp(r, i, d) => CmpExpr::Deref((
780-
Box::new(CmpExpr::Add((
781-
Box::new(CmpExpr::Add((
782-
Box::new(CmpExpr::Reg((r.name().to_string(), r.width()))),
783-
Box::new(CmpExpr::Reg((i.name().to_string(), i.width()))),
784-
))),
785-
Box::new(CmpExpr::I32(*d)),
786-
))),
787-
width,
788-
)),
789-
Operand::RegScaleDisp(r, s, d) => CmpExpr::Deref((
772+
Operand::MemIndexScaleDisp { index, scale, disp } => CmpExpr::Deref((
790773
Box::new(CmpExpr::Add((
791774
Box::new(CmpExpr::Mul((
792-
Box::new(CmpExpr::Reg((r.name().to_string(), r.width()))),
793-
Box::new(CmpExpr::U8(*s)),
775+
Box::new(CmpExpr::Reg((index.name().to_string(), index.width()))),
776+
Box::new(CmpExpr::U8(*scale)),
794777
))),
795-
Box::new(CmpExpr::I32(*d)),
778+
Box::new(CmpExpr::I32(*disp)),
796779
))),
797780
width,
798781
)),
799-
Operand::RegIndexBaseScale(r, i, s) => CmpExpr::Deref((
782+
Operand::MemBaseIndexScale { base, index, scale } => CmpExpr::Deref((
800783
Box::new(CmpExpr::Add((
801-
Box::new(CmpExpr::Reg((r.name().to_string(), r.width()))),
784+
Box::new(CmpExpr::Reg((base.name().to_string(), base.width()))),
802785
Box::new(CmpExpr::Add((
803-
Box::new(CmpExpr::Reg((i.name().to_string(), i.width()))),
804-
Box::new(CmpExpr::U8(*s)),
786+
Box::new(CmpExpr::Reg((index.name().to_string(), index.width()))),
787+
Box::new(CmpExpr::U8(*scale)),
805788
))),
806789
))),
807790
width,
808791
)),
809-
Operand::RegIndexBaseScaleDisp(r, i, s, d) => CmpExpr::Deref((
792+
Operand::MemBaseIndexScaleDisp {
793+
base,
794+
index,
795+
scale,
796+
disp,
797+
} => CmpExpr::Deref((
810798
Box::new(CmpExpr::Add((
811799
Box::new(CmpExpr::Add((
812-
Box::new(CmpExpr::Reg((r.name().to_string(), r.width()))),
800+
Box::new(CmpExpr::Reg((base.name().to_string(), base.width()))),
813801
Box::new(CmpExpr::Add((
814-
Box::new(CmpExpr::Reg((i.name().to_string(), i.width()))),
815-
Box::new(CmpExpr::U8(*s)),
802+
Box::new(CmpExpr::Reg((index.name().to_string(), index.width()))),
803+
Box::new(CmpExpr::U8(*scale)),
816804
))),
817805
))),
818-
Box::new(CmpExpr::I32(*d)),
806+
Box::new(CmpExpr::I32(*disp)),
819807
))),
820808
width,
821809
)),

0 commit comments

Comments
 (0)