]> xenbits.xensource.com Git - libvirt.git/commitdiff
Iface: disallow network tuning in session mode globally
authorErik Skultety <eskultet@redhat.com>
Thu, 6 Nov 2014 11:38:52 +0000 (12:38 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Thu, 6 Nov 2014 13:28:37 +0000 (14:28 +0100)
Patch 43b67f2e disallowed network tuning only with qemu driver, however
this patch moved the check for root privileges into
virNetDevBandwidthSet function, so the call should now
fail in all possible cases. A mock function was created so that the test
suite doesn't fail because of unsufficient privileges.

src/util/virnetdevbandwidth.c
tests/Makefile.am
tests/virnetdevbandwidthmock.c [new file with mode: 0644]
tests/virnetdevbandwidthtest.c

index 5fa231a1ff5bdfe190deb834a1766d949936599a..9f2a159a2a0ec9d8bb16ef3e7a3a46c6f37810af 100644 (file)
@@ -21,6 +21,7 @@
  */
 
 #include <config.h>
+#include <unistd.h>
 
 #include "virnetdevbandwidth.h"
 #include "vircommand.h"
@@ -74,6 +75,13 @@ virNetDevBandwidthSet(const char *ifname,
         goto cleanup;
     }
 
+    if (geteuid() != 0) {
+        virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+                       _("Network bandwidth tuning is not available"
+                         " in session mode"));
+        return -1;
+    }
+
     virNetDevBandwidthClear(ifname);
 
     if (bandwidth->in && bandwidth->in->average) {
index 7b22f9021b9a7f11e56b3e580de41ed353bbd500..a3e3ab31d9118f227defcb5963fb51983fd871e7 100644 (file)
@@ -167,7 +167,6 @@ test_programs = virshtest sockettest \
        virstringtest \
        virportallocatortest \
        sysinfotest \
-       virnetdevbandwidthtest \
        virkmodtest \
        vircapstest \
        domaincapstest \
@@ -318,7 +317,9 @@ test_programs += metadatatest
 test_programs += secretxml2xmltest
 
 if WITH_LINUX
-test_programs += virusbtest
+test_programs += virusbtest \
+       virnetdevbandwidthtest \
+       $(NULL)
 endif WITH_LINUX
 
 test_scripts = \
@@ -409,7 +410,9 @@ test_libraries += \
 endif WITH_DBUS
 
 if WITH_LINUX
-test_libraries += virusbmock.la
+test_libraries += virusbmock.la \
+               virnetdevbandwidthmock.la \
+               $(NULL)
 endif WITH_LINUX
 
 if WITH_TESTS
@@ -825,9 +828,6 @@ commandhelper_LDADD = \
 
 commandhelper_LDFLAGS = -static
 
-virnetdevbandwidthtest_SOURCES = \
-       virnetdevbandwidthtest.c testutils.h testutils.c
-virnetdevbandwidthtest_LDADD = $(LDADDS) $(LIBXML_LIBS)
 
 virkmodtest_SOURCES = \
        virkmodtest.c testutils.h testutils.c
@@ -994,12 +994,24 @@ virusbtest_SOURCES = \
        virusbtest.c testutils.h testutils.c
 virusbtest_LDADD = $(LDADDS)
 
+virnetdevbandwidthtest_SOURCES = \
+       virnetdevbandwidthtest.c testutils.h testutils.c
+virnetdevbandwidthtest_LDADD = $(LDADDS) $(LIBXML_LIBS)
+
 virusbmock_la_SOURCES = virusbmock.c
 virusbmock_la_CFLAGS = $(AM_CFLAGS)
 virusbmock_la_LDFLAGS = -module -avoid-version \
         -rpath /evil/libtool/hack/to/force/shared/lib/creation
+
+virnetdevbandwidthmock_la_SOURCES = \
+       virnetdevbandwidthmock.c
+virnetdevbandwidthmock_la_CFLAGS = $(AM_CFLAGS)
+virnetdevbandwidthmock_la_LDFLAGS = -module -avoid-version \
+        -rpath /evil/libtool/hack/to/force/shared/lib/creation
+
 else ! WITH_LINUX
-       EXTRA_DIST += virusbtest.c virusbmock.c
+       EXTRA_DIST += virusbtest.c virusbmock.c \
+               virnetdevbandwidthtest.c virnetdevbandwidthmock.c
 endif ! WITH_LINUX
 
 if WITH_DBUS
diff --git a/tests/virnetdevbandwidthmock.c b/tests/virnetdevbandwidthmock.c
new file mode 100644 (file)
index 0000000..45eaa6e
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2014 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library.  If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ * Author: Erik Skultety <eskultet@redhat.com>
+ */
+
+#include <config.h>
+#include <unistd.h>
+#include <sys/types.h>
+
+uid_t geteuid(void)
+{
+    return 0;
+}
index 384991e1ead722515dbb319f64b45f64ee29bfc4..cd24442ab2abe5a62b5549769d620f67c4885ee3 100644 (file)
@@ -167,4 +167,4 @@ mymain(void)
     return ret;
 }
 
-VIRT_TEST_MAIN(mymain);
+VIRT_TEST_MAIN_PRELOAD(mymain, abs_builddir "/.libs/virnetdevbandwidthmock.so")