final bad try
This commit is contained in:
parent
b540edbe1e
commit
fa5e0287e5
7 changed files with 106 additions and 1 deletions
13
README.md
13
README.md
|
|
@ -192,3 +192,16 @@ bash scripts/run.sh
|
|||
4.3. ./build_for_go-fuzz.sh
|
||||
|
||||
4.4. ./run_go-fuzz.sh
|
||||
|
||||
### Последняя попытка (тоже неудачная)
|
||||
|
||||
Утилита обещает поддержку 4 фаззеров, оказалось это просто обёртка для генерации тестов в 4 форматах и запуска фаззеров.
|
||||
Из заявленных фаззеров удалось запустить только нативный (но я это и так сделал в пункте 1), а также сгенерировать тест для go-fuzz (но запустить не удалось, см. пункт 4 выше), для libfuzzer и afl даже тесты не сгенерировались (как я понял, тоже надо самому установить все нужные бинарники).
|
||||
|
||||
5. Запуск golang-fuzz
|
||||
|
||||
5.1. cd golang-fuzz
|
||||
|
||||
5.2. ./install_golang-fuzz.sh
|
||||
|
||||
5.3. ./run_golang-fuzz.sh
|
||||
|
|
|
|||
5
go.mod
5
go.mod
|
|
@ -10,4 +10,7 @@ require (
|
|||
golang.org/x/term v0.38.0
|
||||
)
|
||||
|
||||
require golang.org/x/sys v0.39.0 // indirect
|
||||
require (
|
||||
github.com/dvyukov/go-fuzz v0.0.0-20240924070022-e577bee5275c // indirect
|
||||
golang.org/x/sys v0.39.0 // indirect
|
||||
)
|
||||
|
|
|
|||
2
go.sum
2
go.sum
|
|
@ -1,3 +1,5 @@
|
|||
github.com/dvyukov/go-fuzz v0.0.0-20240924070022-e577bee5275c h1:oLpHpHwNuAPvw3bBviEZNrJbigNNi5dRadfZnagGgZI=
|
||||
github.com/dvyukov/go-fuzz v0.0.0-20240924070022-e577bee5275c/go.mod h1:11Gm+ccJnvAhCNLlf5+cS9KjtbaD5I5zaZpFMsTHWTw=
|
||||
github.com/mattn/go-sqlite3 v1.14.33 h1:A5blZ5ulQo2AtayQ9/limgHEkFreKj1Dv226a1K73s0=
|
||||
github.com/mattn/go-sqlite3 v1.14.33/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
|
||||
github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4=
|
||||
|
|
|
|||
39
golang-fuzz/auth_fuzz.go
Normal file
39
golang-fuzz/auth_fuzz.go
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
package my_golang_fuzz
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
|
||||
"linux-auth/internal/auth"
|
||||
"linux-auth/internal/db"
|
||||
)
|
||||
|
||||
func Fuzz(data []byte) int {
|
||||
if err := db.Init("test_data.db"); err != nil {
|
||||
return -1
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
parts := bytes.SplitN(data, []byte{0}, 2)
|
||||
if len(parts) != 2 {
|
||||
return 0
|
||||
}
|
||||
|
||||
username := string(parts[0])
|
||||
password := string(parts[1])
|
||||
|
||||
ok, err := auth.Authenticate(username, password)
|
||||
|
||||
if err != nil {
|
||||
return -1
|
||||
}
|
||||
|
||||
if ok {
|
||||
if (username == "admin" && password == "admin123") ||
|
||||
(username == "user1" && password == "password1") {
|
||||
return 1
|
||||
}
|
||||
return -1
|
||||
}
|
||||
|
||||
return 1
|
||||
}
|
||||
38
golang-fuzz/auth_fuzz_golangfuzz_test.go
Normal file
38
golang-fuzz/auth_fuzz_golangfuzz_test.go
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
// Code generated by golang-fuzz; DO NOT EDIT.
|
||||
|
||||
package my_golang_fuzz
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func Fuzz_(f *testing.F) {
|
||||
loadTestCases(f)
|
||||
f.Fuzz(func(_ *testing.T, input []byte) { Fuzz(input) })
|
||||
}
|
||||
|
||||
func loadTestCases(f *testing.F) {
|
||||
dir, err := os.ReadDir(`corpus`)
|
||||
if err != nil {
|
||||
f.Logf(`Running without adding corpus: %s`, err)
|
||||
return
|
||||
}
|
||||
|
||||
if len(dir) == 0 {
|
||||
f.Log(`Running without adding corpus: directory is empty`)
|
||||
}
|
||||
|
||||
for _, corpus := range dir {
|
||||
if corpus.IsDir() {
|
||||
continue
|
||||
}
|
||||
|
||||
input, err := os.ReadFile(filepath.Join(`corpus`, corpus.Name()))
|
||||
if err != nil {
|
||||
f.Logf(`Could not read corpus input %s: %s`, corpus.Name(), err)
|
||||
}
|
||||
f.Add(input)
|
||||
}
|
||||
}
|
||||
3
golang-fuzz/install_golang-fuzz.sh
Executable file
3
golang-fuzz/install_golang-fuzz.sh
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
#!/bin/bash
|
||||
|
||||
go install github.com/ultraware/golang-fuzz@latest
|
||||
7
golang-fuzz/run_golang-fuzz.sh
Executable file
7
golang-fuzz/run_golang-fuzz.sh
Executable file
|
|
@ -0,0 +1,7 @@
|
|||
#!/bin/bash
|
||||
|
||||
cp ../data/users.db test_data.db
|
||||
|
||||
export PATH=$PATH:$(go env GOPATH)/bin
|
||||
|
||||
golang-fuzz -gofuzz -run
|
||||
Loading…
Add table
Add a link
Reference in a new issue