Add additional go bindings for get*con calls
- Add go bindings test command - Modify man pages of set*con calls to mention that they are thread specific
This commit is contained in:
parent
ee8c867b33
commit
2492943f41
@ -10,10 +10,10 @@ index fd4f0b1..51469bc 100644
|
|||||||
DISABLE_SETRANS ?= n
|
DISABLE_SETRANS ?= n
|
||||||
diff --git a/libselinux/golang/Makefile b/libselinux/golang/Makefile
|
diff --git a/libselinux/golang/Makefile b/libselinux/golang/Makefile
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..ad3e481
|
index 0000000..b75677b
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/libselinux/golang/Makefile
|
+++ b/libselinux/golang/Makefile
|
||||||
@@ -0,0 +1,17 @@
|
@@ -0,0 +1,22 @@
|
||||||
+# Installation directories.
|
+# Installation directories.
|
||||||
+PREFIX ?= $(DESTDIR)/usr
|
+PREFIX ?= $(DESTDIR)/usr
|
||||||
+LIBDIR ?= $(DESTDIR)/usr/lib
|
+LIBDIR ?= $(DESTDIR)/usr/lib
|
||||||
@ -25,18 +25,23 @@ index 0000000..ad3e481
|
|||||||
+ install -m 644 selinux.go $(GODIR)
|
+ install -m 644 selinux.go $(GODIR)
|
||||||
+
|
+
|
||||||
+test:
|
+test:
|
||||||
|
+ @mkdir selinux
|
||||||
|
+ @cp selinux.go selinux
|
||||||
|
+ GOPATH=$(pwd) go run test.go
|
||||||
|
+ @rm -rf selinux
|
||||||
+
|
+
|
||||||
+clean:
|
+clean:
|
||||||
+
|
+ @rm -f *~
|
||||||
|
+ @rm -rf selinux
|
||||||
+indent:
|
+indent:
|
||||||
+
|
+
|
||||||
+relabel:
|
+relabel:
|
||||||
diff --git a/libselinux/golang/selinux.go b/libselinux/golang/selinux.go
|
diff --git a/libselinux/golang/selinux.go b/libselinux/golang/selinux.go
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..9e7fdb3
|
index 0000000..6cee26a
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/libselinux/golang/selinux.go
|
+++ b/libselinux/golang/selinux.go
|
||||||
@@ -0,0 +1,302 @@
|
@@ -0,0 +1,378 @@
|
||||||
+package selinux
|
+package selinux
|
||||||
+
|
+
|
||||||
+/*
|
+/*
|
||||||
@ -86,6 +91,74 @@ index 0000000..9e7fdb3
|
|||||||
+ return int(rc), err
|
+ return int(rc), err
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
|
+func Getfilecon(path string) (string, error) {
|
||||||
|
+ var scon C.security_context_t
|
||||||
|
+ var fcon string
|
||||||
|
+ rc, err := C.lgetfilecon(C.CString(path),&scon)
|
||||||
|
+ if (rc >= 0) {
|
||||||
|
+ fcon = C.GoString(scon)
|
||||||
|
+ err = nil
|
||||||
|
+ }
|
||||||
|
+ return fcon, err
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+func Setfscreatecon(scon string) (int, error) {
|
||||||
|
+ var (
|
||||||
|
+ rc C.int
|
||||||
|
+ err error
|
||||||
|
+ )
|
||||||
|
+ if (scon != "") {
|
||||||
|
+ rc, err = C.setfscreatecon(C.CString(scon))
|
||||||
|
+ } else {
|
||||||
|
+ rc, err = C.setfscreatecon(nil)
|
||||||
|
+ }
|
||||||
|
+ return int(rc), err
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+func Getfscreatecon() (string, error) {
|
||||||
|
+ var scon C.security_context_t
|
||||||
|
+ var fcon string
|
||||||
|
+ rc, err := C.getfscreatecon(&scon)
|
||||||
|
+ if (rc >= 0) {
|
||||||
|
+ fcon = C.GoString(scon)
|
||||||
|
+ err = nil
|
||||||
|
+ C.freecon(scon)
|
||||||
|
+ }
|
||||||
|
+ return fcon, err
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+func Getcon() (string) {
|
||||||
|
+ var pcon C.security_context_t
|
||||||
|
+ C.getcon(&pcon)
|
||||||
|
+ scon := C.GoString(pcon)
|
||||||
|
+ C.freecon(pcon)
|
||||||
|
+ return scon
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+func Getpidcon(pid int) (string, error) {
|
||||||
|
+ var pcon C.security_context_t
|
||||||
|
+ var scon string
|
||||||
|
+ rc, err := C.getpidcon(C.pid_t(pid), &pcon)
|
||||||
|
+ if (rc >= 0) {
|
||||||
|
+ scon = C.GoString(pcon)
|
||||||
|
+ C.freecon(pcon)
|
||||||
|
+ err = nil
|
||||||
|
+ }
|
||||||
|
+ return scon, err
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+func Getpeercon(socket int) (string, error) {
|
||||||
|
+ var pcon C.security_context_t
|
||||||
|
+ var scon string
|
||||||
|
+ rc, err := C.getpeercon(C.int(socket), &pcon)
|
||||||
|
+ if (rc >= 0) {
|
||||||
|
+ scon = C.GoString(pcon)
|
||||||
|
+ C.freecon(pcon)
|
||||||
|
+ err = nil
|
||||||
|
+ }
|
||||||
|
+ return scon, err
|
||||||
|
+}
|
||||||
|
+
|
||||||
+func Setexeccon(scon string) (int, error) {
|
+func Setexeccon(scon string) (int, error) {
|
||||||
+ var val *C.char
|
+ var val *C.char
|
||||||
+ if ! Selinux_enabled() {
|
+ if ! Selinux_enabled() {
|
||||||
@ -338,7 +411,77 @@ index 0000000..9e7fdb3
|
|||||||
+ fmt.Println(flabel)
|
+ fmt.Println(flabel)
|
||||||
+ pid := os.Getpid()
|
+ pid := os.Getpid()
|
||||||
+ fmt.Printf("PID:%d MCS:%s\n", pid, Int_to_mcs(pid, 1023))
|
+ fmt.Printf("PID:%d MCS:%s\n", pid, Int_to_mcs(pid, 1023))
|
||||||
|
+ fmt.Println(Getcon())
|
||||||
|
+ fmt.Println(Getfilecon("/etc/passwd"))
|
||||||
|
+ fmt.Println(Getpidcon(1))
|
||||||
|
+ Setfscreatecon("unconfined_u:unconfined_r:unconfined_t:s0")
|
||||||
|
+ fmt.Println(Getfscreatecon())
|
||||||
|
+ Setfscreatecon("")
|
||||||
|
+ fmt.Println(Getfscreatecon())
|
||||||
|
+ fmt.Println(Getpidcon(1))
|
||||||
+}
|
+}
|
||||||
|
diff --git a/libselinux/golang/test.go b/libselinux/golang/test.go
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..fed6de8
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/libselinux/golang/test.go
|
||||||
|
@@ -0,0 +1,9 @@
|
||||||
|
+package main
|
||||||
|
+
|
||||||
|
+import (
|
||||||
|
+ "./selinux"
|
||||||
|
+)
|
||||||
|
+
|
||||||
|
+func main() {
|
||||||
|
+ selinux.Test()
|
||||||
|
+}
|
||||||
|
diff --git a/libselinux/man/man3/getfscreatecon.3 b/libselinux/man/man3/getfscreatecon.3
|
||||||
|
index c7675be..677ece4 100644
|
||||||
|
--- a/libselinux/man/man3/getfscreatecon.3
|
||||||
|
+++ b/libselinux/man/man3/getfscreatecon.3
|
||||||
|
@@ -49,6 +49,11 @@ Signal handlers that perform a
|
||||||
|
must take care to
|
||||||
|
save, reset, and restore the fscreate context to avoid unexpected behavior.
|
||||||
|
.
|
||||||
|
+
|
||||||
|
+.br
|
||||||
|
+.B Note:
|
||||||
|
+Contexts are thread specific.
|
||||||
|
+
|
||||||
|
.SH "RETURN VALUE"
|
||||||
|
On error \-1 is returned.
|
||||||
|
On success 0 is returned.
|
||||||
|
diff --git a/libselinux/man/man3/getkeycreatecon.3 b/libselinux/man/man3/getkeycreatecon.3
|
||||||
|
index d6a118c..b503535 100644
|
||||||
|
--- a/libselinux/man/man3/getkeycreatecon.3
|
||||||
|
+++ b/libselinux/man/man3/getkeycreatecon.3
|
||||||
|
@@ -48,6 +48,10 @@ Signal handlers that perform a
|
||||||
|
.BR setkeycreatecon ()
|
||||||
|
must take care to
|
||||||
|
save, reset, and restore the keycreate context to avoid unexpected behavior.
|
||||||
|
+
|
||||||
|
+.br
|
||||||
|
+.B Note:
|
||||||
|
+Contexts are thread specific.
|
||||||
|
.
|
||||||
|
.SH "RETURN VALUE"
|
||||||
|
On error \-1 is returned.
|
||||||
|
diff --git a/libselinux/man/man3/getsockcreatecon.3 b/libselinux/man/man3/getsockcreatecon.3
|
||||||
|
index 99e9436..673738c 100644
|
||||||
|
--- a/libselinux/man/man3/getsockcreatecon.3
|
||||||
|
+++ b/libselinux/man/man3/getsockcreatecon.3
|
||||||
|
@@ -49,6 +49,11 @@ Signal handlers that perform a
|
||||||
|
must take care to
|
||||||
|
save, reset, and restore the sockcreate context to avoid unexpected behavior.
|
||||||
|
.
|
||||||
|
+
|
||||||
|
+.br
|
||||||
|
+.B Note:
|
||||||
|
+Contexts are thread specific.
|
||||||
|
+
|
||||||
|
.SH "RETURN VALUE"
|
||||||
|
On error \-1 is returned.
|
||||||
|
On success 0 is returned.
|
||||||
diff --git a/libselinux/src/Makefile b/libselinux/src/Makefile
|
diff --git a/libselinux/src/Makefile b/libselinux/src/Makefile
|
||||||
index 02dd829..6dfdb46 100644
|
index 02dd829..6dfdb46 100644
|
||||||
--- a/libselinux/src/Makefile
|
--- a/libselinux/src/Makefile
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
Summary: SELinux library and simple utilities
|
Summary: SELinux library and simple utilities
|
||||||
Name: libselinux
|
Name: libselinux
|
||||||
Version: 2.2.2
|
Version: 2.2.2
|
||||||
Release: 3%{?dist}
|
Release: 4%{?dist}
|
||||||
License: Public Domain
|
License: Public Domain
|
||||||
Group: System Environment/Libraries
|
Group: System Environment/Libraries
|
||||||
Source: %{name}-%{version}.tgz
|
Source: %{name}-%{version}.tgz
|
||||||
@ -243,6 +243,11 @@ rm -rf %{buildroot}
|
|||||||
%{ruby_sitearch}/selinux.so
|
%{ruby_sitearch}/selinux.so
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Feb 14 2014 Dan Walsh <dwalsh@redhat.com> - 2.2.2-4
|
||||||
|
- Add additional go bindings for get*con calls
|
||||||
|
- Add go bindings test command
|
||||||
|
- Modify man pages of set*con calls to mention that they are thread specific
|
||||||
|
|
||||||
* Fri Jan 24 2014 Dan Walsh <dwalsh@redhat.com> - 2.2.2-3
|
* Fri Jan 24 2014 Dan Walsh <dwalsh@redhat.com> - 2.2.2-3
|
||||||
- Move selinux.go to /usr/lib64/golang/src/pkg/github.com/selinux/selinux.go
|
- Move selinux.go to /usr/lib64/golang/src/pkg/github.com/selinux/selinux.go
|
||||||
- Add Int_to_mcs function to generate MCS labels from integers.
|
- Add Int_to_mcs function to generate MCS labels from integers.
|
||||||
|
Loading…
Reference in New Issue
Block a user