build: simplify profile struct.

This commit is contained in:
Alexandre Pujol 2023-07-25 22:01:07 +01:00
parent 714971911a
commit 6ea2df19eb
Failed to generate hash of commit
3 changed files with 10 additions and 19 deletions

View file

@ -29,24 +29,22 @@ var (
)
type AppArmorProfile struct {
Content string
Variables map[string][]string
Attachments []string
}
func NewAppArmorProfile(content string) *AppArmorProfile {
func NewAppArmorProfile() *AppArmorProfile {
variables := make(map[string][]string)
maps.Copy(variables, Tunables)
return &AppArmorProfile{
Content: content,
Variables: variables,
Attachments: []string{},
}
}
// ParseVariables extract all variables from the profile
func (p *AppArmorProfile) ParseVariables() {
matches := regVariablesDef.FindAllStringSubmatch(p.Content, -1)
func (p *AppArmorProfile) ParseVariables(content string) {
matches := regVariablesDef.FindAllStringSubmatch(content, -1)
for _, match := range matches {
if len(match) > 2 {
key := match[1]

View file

@ -12,14 +12,11 @@ import (
func TestNewAppArmorProfile(t *testing.T) {
tests := []struct {
name string
content string
want *AppArmorProfile
}{
{
name: "aa",
content: "",
want: &AppArmorProfile{
Content: "",
Variables: map[string][]string{
"bin": {"/{usr/,}{s,}bin"},
"lib": {"/{usr/,}lib{,exec,32,64}"},
@ -33,7 +30,7 @@ func TestNewAppArmorProfile(t *testing.T) {
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := NewAppArmorProfile(tt.content); !reflect.DeepEqual(got, tt.want) {
if got := NewAppArmorProfile(); !reflect.DeepEqual(got, tt.want) {
t.Errorf("NewAppArmorProfile() = %v, want %v", got, tt.want)
}
})
@ -81,12 +78,11 @@ func TestAppArmorProfile_ParseVariables(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
p := &AppArmorProfile{
Content: tt.content,
Variables: map[string][]string{},
Attachments: []string{},
}
p.ParseVariables()
p.ParseVariables(tt.content)
if !reflect.DeepEqual(p.Variables, tt.want) {
t.Errorf("AppArmorProfile.ParseVariables() = %v, want %v", p.Variables, tt.want)
}
@ -111,7 +107,6 @@ func TestAppArmorProfile_resolve(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
p := &AppArmorProfile{
Content: "",
Variables: tt.variables,
Attachments: []string{},
}
@ -179,7 +174,6 @@ func TestAppArmorProfile_ResolveAttachments(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
p := &AppArmorProfile{
Content: "",
Variables: tt.variables,
Attachments: []string{},
}
@ -233,7 +227,6 @@ func TestAppArmorProfile_NestAttachments(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
p := &AppArmorProfile{
Content: "",
Variables: map[string][]string{},
Attachments: tt.Attachments,
}

View file

@ -45,8 +45,8 @@ func BuildComplain(profile string) string {
// Bypass userspace tools restriction
func BuildUserspace(profile string) string {
p := aa.NewAppArmorProfile(profile)
p.ParseVariables()
p := aa.NewAppArmorProfile()
p.ParseVariables(profile)
p.ResolveAttachments()
att := p.NestAttachments()
matches := regAttachments.FindAllString(profile, -1)