final bad try

This commit is contained in:
vovuas2003 2026-05-06 18:08:22 +03:00
parent b540edbe1e
commit fa5e0287e5
7 changed files with 106 additions and 1 deletions

View file

@ -192,3 +192,16 @@ bash scripts/run.sh
4.3. ./build_for_go-fuzz.sh 4.3. ./build_for_go-fuzz.sh
4.4. ./run_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
View file

@ -10,4 +10,7 @@ require (
golang.org/x/term v0.38.0 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
View file

@ -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 h1:A5blZ5ulQo2AtayQ9/limgHEkFreKj1Dv226a1K73s0=
github.com/mattn/go-sqlite3 v1.14.33/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= 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= github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4=

39
golang-fuzz/auth_fuzz.go Normal file
View 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
}

View 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)
}
}

View file

@ -0,0 +1,3 @@
#!/bin/bash
go install github.com/ultraware/golang-fuzz@latest

7
golang-fuzz/run_golang-fuzz.sh Executable file
View 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