[libvirt] [PATCH] tests: don't abort in fopen(/proc/mounts)

Michal Privoznik mprivozn at redhat.com
Wed Mar 27 11:55:18 UTC 2019


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 at 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




More information about the libvir-list mailing list