Skip to content

Commit

Permalink
internal: call selinux_set_policy_root at start of files stage
Browse files Browse the repository at this point in the history
Calls selinux_set_policy_root at the beginning of the files stage in an
attempt to load in the selinux policies from disk.
  • Loading branch information
Derek Gonyeo committed May 1, 2018
1 parent 9796484 commit 0bf83f9
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 0 deletions.
5 changes: 5 additions & 0 deletions internal/exec/stages/files/files.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,11 @@ func (stage) Name() string {
}

func (s stage) Run(config types.Config) bool {
if err := util.SelinuxSetPolicyRoot(s.DestDir); err != nil {
s.Logger.Crit("failed to set selinux root: %v", err)
return false
}

if err := s.createPasswd(config); err != nil {
s.Logger.Crit("failed to create users/groups: %v", err)
return false
Expand Down
37 changes: 37 additions & 0 deletions internal/exec/util/selinux.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
// Copyright 2018 CoreOS, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// +build linux

package util

// #cgo LDFLAGS: -lselinux
// #include <stdlib.h>
// #include <selinux/selinux.h>
import "C"

import (
"fmt"
"unsafe"
)

func SelinuxSetPolicyRoot(rootPath string) error {
cRootPath := C.CString(rootPath)
defer C.free(unsafe.Pointer(cRootPath))
res := C.selinux_set_policy_root(cRootPath)
if res != 0 {
return fmt.Errorf("selinux_set_policy_root: failed to set policy root")
}
return nil
}

0 comments on commit 0bf83f9

Please sign in to comment.