Compare commits

...
Sign in to create a new pull request.

3 commits

Author SHA1 Message Date
50021ce587 [#236] Switch base image for OCI container to Debian
Related: TrueCloudLab/frostfs-node#1724

Signed-off-by: Vitaliy Potyarkin <v.potyarkin@yadro.com>
2025-05-12 15:09:19 +00:00
5e6ee3a41c [#241] Add fuzzing files removing to make clean
Signed-off-by: Marina Biryukova <m.biryukova@yadro.com>
2025-05-07 10:35:37 +03:00
3aed60aa79 [#241] Remove exit codes from fuzzing tests
Signed-off-by: Marina Biryukova <m.biryukova@yadro.com>
2025-05-07 10:35:26 +03:00
4 changed files with 61 additions and 68 deletions

View file

@ -1,7 +1,10 @@
FROM golang:1.24-alpine AS basebuilder FROM golang:1.24 AS builder
RUN apk add --update make bash ca-certificates RUN apt-get update && \
apt-get install --no-install-recommends -y \
FROM basebuilder AS builder bash \
ca-certificates \
&& \
rm -rf /var/lib/apt/lists/*
ENV GOGC=off ENV GOGC=off
ENV CGO_ENABLED=0 ENV CGO_ENABLED=0
ARG BUILD=now ARG BUILD=now
@ -13,7 +16,7 @@ COPY . /src
RUN make RUN make
# Executable image # Executable image
FROM scratch FROM debian:stable-slim
WORKDIR / WORKDIR /

View file

@ -1,5 +1,10 @@
FROM alpine FROM debian:stable-slim
RUN apk add --update --no-cache bash ca-certificates RUN apt-get update && \
apt-get install --no-install-recommends -y \
bash \
ca-certificates \
&& \
rm -rf /var/lib/apt/lists/*
WORKDIR / WORKDIR /

View file

@ -31,6 +31,10 @@ PKG_VERSION ?= $(shell echo $(VERSION) | sed "s/^v//" | \
.PHONY: debpackage debclean .PHONY: debpackage debclean
FUZZING_DIR = $(shell pwd)/tests/fuzzing/files FUZZING_DIR = $(shell pwd)/tests/fuzzing/files
FUZZING_TEMP_DIRS = $(shell find . -type f -name '*_fuzz_test.go' -exec dirname {} \; | uniq | xargs -I{} echo -n "{}/tempfuzz ")
FUZZING_COVER_FILES = $(shell find . -type f -name '*_fuzz_test.go' -exec dirname {} \; | uniq | xargs -I{} echo -n "{}/cover.out ")
FUZZING_FUNC_FILES = $(shell find . -type f -name '*_fuzz_test.go' -exec dirname {} \; | uniq | xargs -I{} echo -n "{}/func.txt ")
FUZZING_INDEX_FILES = $(shell find . -type f -name '*_fuzz_test.go' -exec dirname {} \; | uniq | xargs -I{} echo -n "{}/index.html ")
NGFUZZ_REPO = https://gitflic.ru/project/yadro/ngfuzz.git NGFUZZ_REPO = https://gitflic.ru/project/yadro/ngfuzz.git
FUZZ_TIMEOUT ?= 30 FUZZ_TIMEOUT ?= 30
FUZZ_FUNCTIONS ?= "" FUZZ_FUNCTIONS ?= ""
@ -188,7 +192,10 @@ version:
# Clean up # Clean up
clean: clean:
rm -rf vendor rm -rf vendor
rm -rf $(BINDIR) rm -rf $(BINDIR)
rm -rf $(FUZZING_DIR) $(FUZZING_TEMP_DIRS)
rm -f $(FUZZING_COVER_FILES) $(FUZZING_FUNC_FILES) $(FUZZING_INDEX_FILES)
git checkout -- go.mod go.sum
# Package for Debian # Package for Debian
debpackage: debpackage:

View file

@ -24,11 +24,6 @@ import (
"go.uber.org/zap" "go.uber.org/zap"
) )
const (
fuzzSuccessExitCode = 0
fuzzFailExitCode = -1
)
func prepareStrings(tp *go_fuzz_utils.TypeProvider, count int) ([]string, error) { func prepareStrings(tp *go_fuzz_utils.TypeProvider, count int) ([]string, error) {
array := make([]string, count) array := make([]string, count)
var err error var err error
@ -222,23 +217,18 @@ func InitFuzzUpload() {
} }
func DoFuzzUpload(input []byte) int { func DoFuzzUpload(input []byte) {
// FUZZER INIT // FUZZER INIT
if len(input) < 100 { if len(input) < 100 {
return fuzzFailExitCode return
} }
tp, err := go_fuzz_utils.NewTypeProvider(input) tp, err := go_fuzz_utils.NewTypeProvider(input)
if err != nil { if err != nil {
return fuzzFailExitCode return
} }
_, _, _, _, _, _, _, err = upload(tp) _, _, _, _, _, _, _, _ = upload(tp)
if err != nil {
return fuzzFailExitCode
}
return fuzzSuccessExitCode
} }
func FuzzUpload(f *testing.F) { func FuzzUpload(f *testing.F) {
@ -307,30 +297,28 @@ func InitFuzzGet() {
} }
func DoFuzzGet(input []byte) int { func DoFuzzGet(input []byte) {
// FUZZER INIT // FUZZER INIT
if len(input) < 100 { if len(input) < 100 {
return fuzzFailExitCode return
} }
tp, err := go_fuzz_utils.NewTypeProvider(input) tp, err := go_fuzz_utils.NewTypeProvider(input)
if err != nil { if err != nil {
return fuzzFailExitCode return
} }
ctx, hc, cnrID, resp, filename, _, _, err := upload(tp) ctx, hc, cnrID, resp, filename, _, _, err := upload(tp)
if err != nil { if err != nil {
return fuzzFailExitCode return
} }
r, err := downloadOrHead(tp, ctx, hc, cnrID, resp, filename) r, err := downloadOrHead(tp, ctx, hc, cnrID, resp, filename)
if err != nil { if err != nil {
return fuzzFailExitCode return
} }
hc.Handler().DownloadByAddressOrBucketName(r) hc.Handler().DownloadByAddressOrBucketName(r)
return fuzzSuccessExitCode
} }
func FuzzGet(f *testing.F) { func FuzzGet(f *testing.F) {
@ -343,30 +331,28 @@ func InitFuzzHead() {
} }
func DoFuzzHead(input []byte) int { func DoFuzzHead(input []byte) {
// FUZZER INIT // FUZZER INIT
if len(input) < 100 { if len(input) < 100 {
return fuzzFailExitCode return
} }
tp, err := go_fuzz_utils.NewTypeProvider(input) tp, err := go_fuzz_utils.NewTypeProvider(input)
if err != nil { if err != nil {
return fuzzFailExitCode return
} }
ctx, hc, cnrID, resp, filename, _, _, err := upload(tp) ctx, hc, cnrID, resp, filename, _, _, err := upload(tp)
if err != nil { if err != nil {
return fuzzFailExitCode return
} }
r, err := downloadOrHead(tp, ctx, hc, cnrID, resp, filename) r, err := downloadOrHead(tp, ctx, hc, cnrID, resp, filename)
if err != nil { if err != nil {
return fuzzFailExitCode return
} }
hc.Handler().HeadByAddressOrBucketName(r) hc.Handler().HeadByAddressOrBucketName(r)
return fuzzSuccessExitCode
} }
func FuzzHead(f *testing.F) { func FuzzHead(f *testing.F) {
@ -379,36 +365,36 @@ func InitFuzzDownloadByAttribute() {
} }
func DoFuzzDownloadByAttribute(input []byte) int { func DoFuzzDownloadByAttribute(input []byte) {
// FUZZER INIT // FUZZER INIT
if len(input) < 100 { if len(input) < 100 {
return fuzzFailExitCode return
} }
tp, err := go_fuzz_utils.NewTypeProvider(input) tp, err := go_fuzz_utils.NewTypeProvider(input)
if err != nil { if err != nil {
return fuzzFailExitCode return
} }
ctx, hc, cnrID, _, _, attrKey, attrVal, err := upload(tp) ctx, hc, cnrID, _, _, attrKey, attrVal, err := upload(tp)
if err != nil { if err != nil {
return fuzzFailExitCode return
} }
cid := cnrID.EncodeToString() cid := cnrID.EncodeToString()
cid, err = maybeFillRandom(tp, cid) cid, err = maybeFillRandom(tp, cid)
if err != nil { if err != nil {
return fuzzFailExitCode return
} }
attrKey, err = maybeFillRandom(tp, attrKey) attrKey, err = maybeFillRandom(tp, attrKey)
if err != nil { if err != nil {
return fuzzFailExitCode return
} }
attrVal, err = maybeFillRandom(tp, attrVal) attrVal, err = maybeFillRandom(tp, attrVal)
if err != nil { if err != nil {
return fuzzFailExitCode return
} }
r := new(fasthttp.RequestCtx) r := new(fasthttp.RequestCtx)
@ -418,8 +404,6 @@ func DoFuzzDownloadByAttribute(input []byte) int {
r.SetUserValue("attr_val", attrVal) r.SetUserValue("attr_val", attrVal)
hc.Handler().DownloadByAttribute(r) hc.Handler().DownloadByAttribute(r)
return fuzzSuccessExitCode
} }
func FuzzDownloadByAttribute(f *testing.F) { func FuzzDownloadByAttribute(f *testing.F) {
@ -432,36 +416,36 @@ func InitFuzzHeadByAttribute() {
} }
func DoFuzzHeadByAttribute(input []byte) int { func DoFuzzHeadByAttribute(input []byte) {
// FUZZER INIT // FUZZER INIT
if len(input) < 100 { if len(input) < 100 {
return fuzzFailExitCode return
} }
tp, err := go_fuzz_utils.NewTypeProvider(input) tp, err := go_fuzz_utils.NewTypeProvider(input)
if err != nil { if err != nil {
return fuzzFailExitCode return
} }
ctx, hc, cnrID, _, _, attrKey, attrVal, err := upload(tp) ctx, hc, cnrID, _, _, attrKey, attrVal, err := upload(tp)
if err != nil { if err != nil {
return fuzzFailExitCode return
} }
cid := cnrID.EncodeToString() cid := cnrID.EncodeToString()
cid, err = maybeFillRandom(tp, cid) cid, err = maybeFillRandom(tp, cid)
if err != nil { if err != nil {
return fuzzFailExitCode return
} }
attrKey, err = maybeFillRandom(tp, attrKey) attrKey, err = maybeFillRandom(tp, attrKey)
if err != nil { if err != nil {
return fuzzFailExitCode return
} }
attrVal, err = maybeFillRandom(tp, attrVal) attrVal, err = maybeFillRandom(tp, attrVal)
if err != nil { if err != nil {
return fuzzFailExitCode return
} }
r := new(fasthttp.RequestCtx) r := new(fasthttp.RequestCtx)
@ -471,8 +455,6 @@ func DoFuzzHeadByAttribute(input []byte) int {
r.SetUserValue("attr_val", attrVal) r.SetUserValue("attr_val", attrVal)
hc.Handler().HeadByAttribute(r) hc.Handler().HeadByAttribute(r)
return fuzzSuccessExitCode
} }
func FuzzHeadByAttribute(f *testing.F) { func FuzzHeadByAttribute(f *testing.F) {
@ -485,32 +467,32 @@ func InitFuzzDownloadZipped() {
} }
func DoFuzzDownloadZipped(input []byte) int { func DoFuzzDownloadZipped(input []byte) {
// FUZZER INIT // FUZZER INIT
if len(input) < 100 { if len(input) < 100 {
return fuzzFailExitCode return
} }
tp, err := go_fuzz_utils.NewTypeProvider(input) tp, err := go_fuzz_utils.NewTypeProvider(input)
if err != nil { if err != nil {
return fuzzFailExitCode return
} }
ctx, hc, cnrID, _, _, _, _, err := upload(tp) ctx, hc, cnrID, _, _, _, _, err := upload(tp)
if err != nil { if err != nil {
return fuzzFailExitCode return
} }
cid := cnrID.EncodeToString() cid := cnrID.EncodeToString()
cid, err = maybeFillRandom(tp, cid) cid, err = maybeFillRandom(tp, cid)
if err != nil { if err != nil {
return fuzzFailExitCode return
} }
prefix := "" prefix := ""
prefix, err = maybeFillRandom(tp, prefix) prefix, err = maybeFillRandom(tp, prefix)
if err != nil { if err != nil {
return fuzzFailExitCode return
} }
r := new(fasthttp.RequestCtx) r := new(fasthttp.RequestCtx)
@ -519,8 +501,6 @@ func DoFuzzDownloadZipped(input []byte) int {
r.SetUserValue("prefix", prefix) r.SetUserValue("prefix", prefix)
hc.Handler().DownloadZip(r) hc.Handler().DownloadZip(r)
return fuzzSuccessExitCode
} }
func FuzzDownloadZipped(f *testing.F) { func FuzzDownloadZipped(f *testing.F) {
@ -533,21 +513,21 @@ func InitFuzzStoreBearerTokenAppCtx() {
} }
func DoFuzzStoreBearerTokenAppCtx(input []byte) int { func DoFuzzStoreBearerTokenAppCtx(input []byte) {
// FUZZER INIT // FUZZER INIT
if len(input) < 100 { if len(input) < 100 {
return fuzzFailExitCode return
} }
tp, err := go_fuzz_utils.NewTypeProvider(input) tp, err := go_fuzz_utils.NewTypeProvider(input)
if err != nil { if err != nil {
return fuzzFailExitCode return
} }
prefix := "" prefix := ""
prefix, err = maybeFillRandom(tp, prefix) prefix, err = maybeFillRandom(tp, prefix)
if err != nil { if err != nil {
return fuzzFailExitCode return
} }
ctx := context.Background() ctx := context.Background()
@ -570,8 +550,6 @@ func DoFuzzStoreBearerTokenAppCtx(input []byte) int {
} }
tokens.StoreBearerTokenAppCtx(ctx, r) tokens.StoreBearerTokenAppCtx(ctx, r)
return fuzzSuccessExitCode
} }
func FuzzStoreBearerTokenAppCtx(f *testing.F) { func FuzzStoreBearerTokenAppCtx(f *testing.F) {