Explorar o código

apparmor: switch IsLoaded to return bool

Signed-off-by: Aleksa Sarai <asarai@suse.de>
Aleksa Sarai %!s(int64=8) %!d(string=hai) anos
pai
achega
e440a57a79
Modificáronse 2 ficheiros con 12 adicións e 6 borrados
  1. 1 1
      daemon/apparmor_default.go
  2. 11 5
      profiles/apparmor/apparmor.go

+ 1 - 1
daemon/apparmor_default.go

@@ -21,7 +21,7 @@ func installDefaultAppArmorProfile() {
 			// Allow daemon to run if loading failed, but are active
 			// (possibly through another run, manually, or via system startup)
 			for _, policy := range apparmorProfiles {
-				if err := aaprofile.IsLoaded(policy); err != nil {
+				if loaded, err := aaprofile.IsLoaded(policy); err != nil || !loaded {
 					logrus.Errorf("AppArmor enabled on system but the %s profile could not be loaded.", policy)
 				}
 			}

+ 11 - 5
profiles/apparmor/apparmor.go

@@ -94,22 +94,28 @@ func InstallDefault(name string) error {
 	return nil
 }
 
-// IsLoaded checks if a passed profile has been loaded into the kernel.
-func IsLoaded(name string) error {
+// IsLoaded checks if a profile with the given name has been loaded into the
+// kernel.
+func IsLoaded(name string) (bool, error) {
 	file, err := os.Open("/sys/kernel/security/apparmor/profiles")
 	if err != nil {
-		return err
+		return false, err
 	}
 	defer file.Close()
 
 	r := bufio.NewReader(file)
 	for {
 		p, err := r.ReadString('\n')
+		if err == io.EOF {
+			break
+		}
 		if err != nil {
-			return err
+			return false, err
 		}
 		if strings.HasPrefix(p, name+" ") {
-			return nil
+			return true, nil
 		}
 	}
+
+	return false, nil
 }