On 3/27/19 11:31 AM, Daniel P. Berrangé wrote:
The mock fopen() function will abort if "/proc/mounts" is
requested with "r" permissions and VIR_CGROUP_MOCK_FILENAME
env var is not set.
Unfortunately this is triggering by the libselinux library
constructor when it tries to read /proc/mounts to find out
if selinuxfs is mounted in an unusual place.
This, however, only affects libselinux in Debian as that
opens with "r", while in Fedora / RHEL it opens "re" and
thus luckily never triggered the abort(), instead getting
an EACCESS.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
tests/vircgroupmock.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/tests/vircgroupmock.c b/tests/vircgroupmock.c
index 06bd0a5f29..9c67a44b0d 100644
--- a/tests/vircgroupmock.c
+++ b/tests/vircgroupmock.c
@@ -460,8 +460,10 @@ FILE *fopen(const char *path, const char *mode)
}
if (type) {
- if (!filename)
- abort();
+ if (!filename) {
+ errno = EACCES;
+ return NULL;
+ }
if (virAsprintfQuiet(&filepath, "%s/vircgroupdata/%s.%s",
abs_srcdir, filename, type) < 0) {
abort();
How about:
diff --git i/tests/vircgroupmock.c w/tests/vircgroupmock.c
index 06bd0a5f29..83f43e72bf 100644
--- i/tests/vircgroupmock.c
+++ w/tests/vircgroupmock.c
@@ -459,9 +459,7 @@ FILE *fopen(const char *path, const char *mode)
}
}
- if (type) {
- if (!filename)
- abort();
+ if (filename && type) {
if (virAsprintfQuiet(&filepath, "%s/vircgroupdata/%s.%s",
abs_srcdir, filename, type) < 0) {
abort();
Michal