diff --git a/appsec/embed.go b/appsec/embed.go index ac8bea8..52cf177 100644 --- a/appsec/embed.go +++ b/appsec/embed.go @@ -5,10 +5,16 @@ package appsec -import _ "embed" // Blank import comment for golint compliance +import ( + _ "embed" // Blank import comment for golint compliance + "unsafe" +) -// StaticRecommendedRules holds the recommended AppSec security rules (v1.14.2) -// Source: https://github.com/DataDog/appsec-event-rules/blob/1.14.2/build/recommended.json -// -//go:embed rules.json -var StaticRecommendedRules string +var ( + //go:embed rules.json + staticRecommendedRules []byte + + // StaticRecommendedRules holds the recommended AppSec security rules (v1.14.2) + // Source: https://github.com/DataDog/appsec-event-rules/blob/1.14.2/build/recommended.json + StaticRecommendedRules = unsafe.String(&staticRecommendedRules[0], len(staticRecommendedRules)) +) diff --git a/appsec/rules.go b/appsec/rules.go index 29a46bf..50bc023 100644 --- a/appsec/rules.go +++ b/appsec/rules.go @@ -2,23 +2,20 @@ // under the Apache License Version 2.0. // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2023-present Datadog, Inc. + package appsec import "encoding/json" // DefaultRuleset returns the marshaled default recommended security rules for AppSec func DefaultRuleset() ([]byte, error) { - rules, err := DefaultRulesetMap() - if err != nil { - return nil, err - } - return json.Marshal(rules) + return staticRecommendedRules, nil } // DefaultRulesetMap returns the unmarshaled default recommended security rules for AppSec func DefaultRulesetMap() (map[string]any, error) { var rules map[string]any - if err := json.Unmarshal([]byte(StaticRecommendedRules), &rules); err != nil { + if err := json.Unmarshal(staticRecommendedRules, &rules); err != nil { return nil, err } diff --git a/appsec/rules_test.go b/appsec/rules_test.go new file mode 100644 index 0000000..f03545b --- /dev/null +++ b/appsec/rules_test.go @@ -0,0 +1,24 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2023-present Datadog, Inc. + +package appsec + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestDefaultRuleset(t *testing.T) { + rules, err := DefaultRuleset() + require.NoError(t, err) + require.NotEmpty(t, rules) +} + +func TestDefaultRulesetMap(t *testing.T) { + rules, err := DefaultRulesetMap() + require.NoError(t, err) + require.NotEmpty(t, rules) +}