linux-auth/myfuzz/auth_fuzz.go.backup
2026-05-06 17:28:16 +03:00

48 lines
1.7 KiB
Text
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package myfuzz
import (
"bytes"
"linux-auth/internal/auth"
"linux-auth/internal/db"
)
// Fuzz — это функция, которую будет вызывать go-fuzz.
// Принимает только []byte — все входные данные в одном байтовом потоке.
func Fuzz(data []byte) int {
// Инициализируем БД на каждом вызове — go-fuzz не имеет f.Cleanup()
if err := db.Init("test_data.db"); err != nil {
return -1 // ошибка инициализации — краш
}
defer db.Close() // закрываем после каждого вызова
// Разделяем байты по нулевому байту (\x00) — это разделитель между username и password
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 {
// Разрешённые пары (аналогично f.Add)
if (username == "admin" && password == "admin123") ||
(username == "user1" && password == "password1") {
return 1 // норма — это ожидаемый результат
}
// Неожиданный успешный вход — это баг!
return -1 // краш
}
// Неудачная аутентификация — это нормально
return 1 // норма
}