[lxc-devel] [lxd/master] [Makefiles] Whitelist ldflags in libcap pkgconfig

Foxboron on Github lxc-bot at linuxcontainers.org
Sat Jan 18 23:30:35 UTC 2020


A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 1077 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20200118/76273a55/attachment.bin>
-------------- next part --------------
From 7e3df061d39b676bb1cfe903ccc704f4a1cf8c6e Mon Sep 17 00:00:00 2001
From: Morten Linderud <morten at linderud.pw>
Date: Sun, 19 Jan 2020 00:13:13 +0100
Subject: [PATCH] [Makefiles] Whitelist ldflags in libcap pkgconfig

libcap 1.29 was extended to support go, in turn adding some extensions
to the distributed pkgconfig files [1]. By default for security reasons,
the cgo compiler only allows -D, -I, and -l however allows us to extend
this by adding a regex filter to CGO_ALLOW_LDFLAGS [2].

It should be noted that libcap implement the same in their build systems
[3], but use a more relaxed ALLOW regex. Restrict ours as it probably
shouldn't be too wide.

Fixes: #6727

[1]: https://git.kernel.org/pub/scm/libs/libcap/libcap.git/commit/?id=1a61e6f395f2d2784365920872c14d9f69ff8cf1
[2]: https://golang.org/cmd/cgo/
[3]: https://git.kernel.org/pub/scm/libs/libcap/libcap.git/commit/?id=b2b267ef1c83f1f3d3105a4bb84f8bebbc130dec

Signed-off-by: Morten Linderud <morten at linderud.pw>
---
 Makefile      |  2 ++
 doc/index.md  |  1 +
 ldflags.patch | 11 +++++++++++
 lxd/cgo.go    |  2 +-
 4 files changed, 15 insertions(+), 1 deletion(-)
 create mode 100644 ldflags.patch

diff --git a/Makefile b/Makefile
index 9c99a60a1b..3ff398dbbc 100644
--- a/Makefile
+++ b/Makefile
@@ -105,6 +105,8 @@ deps:
 	@echo "export CGO_CFLAGS=\"-I$(GOPATH)/deps/sqlite/ -I$(GOPATH)/deps/libco/ -I$(GOPATH)/deps/raft/include/ -I$(GOPATH)/deps/dqlite/include/\""
 	@echo "export CGO_LDFLAGS=\"-L$(GOPATH)/deps/sqlite/.libs/ -L$(GOPATH)/deps/libco/ -L$(GOPATH)/deps/raft/.libs -L$(GOPATH)/deps/dqlite/.libs/\""
 	@echo "export LD_LIBRARY_PATH=\"$(GOPATH)/deps/sqlite/.libs/:$(GOPATH)/deps/libco/:$(GOPATH)/deps/raft/.libs/:$(GOPATH)/deps/dqlite/.libs/\""
+	@echo "export CGO_LDFLAGS_ALLOW=\"-Wl,-wrap,pthread_create\""
+
 
 .PHONY: update
 update:
diff --git a/doc/index.md b/doc/index.md
index d4ba7b809a..29eae1ab54 100644
--- a/doc/index.md
+++ b/doc/index.md
@@ -119,6 +119,7 @@ make deps
 export CGO_CFLAGS="${CGO_CFLAGS} -I${GOPATH}/deps/sqlite/ -I${GOPATH}/deps/dqlite/include/ -I${GOPATH}/deps/raft/include/ -I${GOPATH}/deps/libco/"
 export CGO_LDFLAGS="${CGO_LDFLAGS} -L${GOPATH}/deps/sqlite/.libs/ -L${GOPATH}/deps/dqlite/.libs/ -L${GOPATH}/deps/raft/.libs -L${GOPATH}/deps/libco/"
 export LD_LIBRARY_PATH="${GOPATH}/deps/sqlite/.libs/:${GOPATH}/deps/dqlite/.libs/:${GOPATH}/deps/raft/.libs:${GOPATH}/deps/libco/:${LD_LIBRARY_PATH}"
+export CGO_LDFLAGS_ALLOW="-Wl,-wrap,pthread_create"
 make
 ```
 
diff --git a/ldflags.patch b/ldflags.patch
new file mode 100644
index 0000000000..fef1a71ed4
--- /dev/null
+++ b/ldflags.patch
@@ -0,0 +1,11 @@
+diff --git a/lxd/cgo.go b/lxd/cgo.go
+index c8c175a93..625e75b0b 100644
+--- a/lxd/cgo.go
++++ b/lxd/cgo.go
+@@ -9,5 +9,5 @@ package main
+ // #cgo CFLAGS: -Werror=return-type -Wendif-labels -Werror=overflow
+ // #cgo CFLAGS: -Wnested-externs -fexceptions
+ // #cgo pkg-config: lxc
+-// #cgo pkg-config: libcap
++// #cgo LDFLAGS: -lpsx -Wl,-wrap,pthread_create
+ import "C"
diff --git a/lxd/cgo.go b/lxd/cgo.go
index c8c175a93e..625e75b0b5 100644
--- a/lxd/cgo.go
+++ b/lxd/cgo.go
@@ -9,5 +9,5 @@ package main
 // #cgo CFLAGS: -Werror=return-type -Wendif-labels -Werror=overflow
 // #cgo CFLAGS: -Wnested-externs -fexceptions
 // #cgo pkg-config: lxc
-// #cgo pkg-config: libcap
+// #cgo LDFLAGS: -L/lib64 -lcap -lpsx -lpthread -Wl,-wrap,pthread_create
 import "C"


More information about the lxc-devel mailing list