From 7eda35fd05557243f29f7cfe81d5495d9082b701 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Sat, 12 Apr 2025 12:58:13 +0200 Subject: [PATCH] profiles/apparmor: IsLoaded: optimize - Use a bufio.Scanner to read the profiles - Use strings.Cut Before/After: BenchmarkIsLoaded-10 2258 508049 ns/op 244266 B/op 10004 allocs/op BenchmarkIsLoaded-10 5680 208703 ns/op 4264 B/op 4 allocs/op Signed-off-by: Sebastiaan van Stijn --- profiles/apparmor/apparmor.go | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/profiles/apparmor/apparmor.go b/profiles/apparmor/apparmor.go index ce128f6f1f..445eed64e9 100644 --- a/profiles/apparmor/apparmor.go +++ b/profiles/apparmor/apparmor.go @@ -103,20 +103,17 @@ func isLoaded(name string, fileName string) (bool, error) { } defer file.Close() - r := bufio.NewReader(file) - for { - p, err := r.ReadString('\n') - if err == io.EOF { - break - } - if err != nil { - return false, err - } - if strings.HasPrefix(p, name+" ") { + scanner := bufio.NewScanner(file) + for scanner.Scan() { + if prefix, _, ok := strings.Cut(scanner.Text(), " "); ok && prefix == name { return true, nil } } + if err := scanner.Err(); err != nil { + return false, err + } + return false, nil }