[Pkg-libvirt-commits] [libguestfs] 63/266: src: always check value passed to set_memsize

Hilko Bengen bengen at moszumanska.debian.org
Fri Oct 3 14:41:42 UTC 2014


This is an automated email from the git hooks/post-receive script.

bengen pushed a commit to annotated tag debian/1%1.27.35-1
in repository libguestfs.

commit 7912759fc331f6e8a0f7c87731f6bfe8c6e96c1f
Author: Pino Toscano <ptoscano at redhat.com>
Date:   Fri Aug 8 10:15:32 2014 +0200

    src: always check value passed to set_memsize
    
    Move the minimum memory check from the environment parsing to
    set_memsize, so the limit is actually enforced also when using the API.
    
    Adapt the rhbz557655.sh test to the invalid memsize values being
    rejected now, and add a new test for checking invalid parameters
    explicitly.
---
 fish/Makefile.am                             |  1 +
 fish/test-invalid-params.sh                  | 71 ++++++++++++++++++++++++++++
 src/handle.c                                 | 13 +++--
 tests/regressions/rhbz557655-expected.stdout |  7 ++-
 tests/regressions/rhbz557655.sh              |  8 ++--
 5 files changed, 88 insertions(+), 12 deletions(-)

diff --git a/fish/Makefile.am b/fish/Makefile.am
index ad984ec..9ce1daf 100644
--- a/fish/Makefile.am
+++ b/fish/Makefile.am
@@ -272,6 +272,7 @@ TESTS = \
 	test-d.sh \
 	test-escapes.sh \
 	test-events.sh \
+	test-invalid-params.sh \
 	test-tilde.sh
 
 if ENABLE_APPLIANCE
diff --git a/fish/test-invalid-params.sh b/fish/test-invalid-params.sh
new file mode 100755
index 0000000..60da094
--- /dev/null
+++ b/fish/test-invalid-params.sh
@@ -0,0 +1,71 @@
+#!/bin/bash -
+# libguestfs
+# Copyright (C) 2014 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+# Test passing invalid parameters for memory size, smp, etc when setting up
+# the appliance.
+
+set -e
+
+# Memory size
+output=$(
+$VG ./guestfish <<EOF
+set-memsize 400
+-set-memsize 0
+-set-memsize 100
+-set-memsize -500
+-set-memsize 0x10
+-set-memsize 010
+-set-memsize -1073741824
+get-memsize
+EOF
+)
+if [ "$output" != "400" ]; then
+    echo "$0: error: output of guestfish after memsize commands did not match expected output"
+    echo "$output"
+    exit 1
+fi
+
+# smp
+output=$(
+$VG ./guestfish <<EOF
+set-smp 2
+-set-smp 0
+-set-smp 300
+-set-smp -2
+get-smp
+EOF
+)
+if [ "$output" != "2" ]; then
+    echo "$0: error: output of guestfish after smp commands did not match expected output"
+    echo "$output"
+    exit 1
+fi
+
+# Backend
+output=$(
+$VG ./guestfish <<EOF
+set-backend direct
+-set-backend backend-which-does-not-exist
+get-backend
+EOF
+)
+if [ "$output" != "direct" ]; then
+    echo "$0: error: output of guestfish after backend commands did not match expected output"
+    echo "$output"
+    exit 1
+fi
diff --git a/src/handle.c b/src/handle.c
index 719bbcd..0200528 100644
--- a/src/handle.c
+++ b/src/handle.c
@@ -226,11 +226,14 @@ parse_environment (guestfs_h *g,
 
   str = do_getenv (data, "LIBGUESTFS_MEMSIZE");
   if (str) {
-    if (sscanf (str, "%d", &memsize) != 1 || memsize < MIN_MEMSIZE) {
-      error (g, _("non-numeric or too small value for LIBGUESTFS_MEMSIZE"));
+    if (sscanf (str, "%d", &memsize) != 1) {
+      error (g, _("non-numeric value for LIBGUESTFS_MEMSIZE"));
+      return -1;
+    }
+    if (guestfs_set_memsize (g, memsize) == -1) {
+      /* set_memsize produces an error message already. */
       return -1;
     }
-    guestfs_set_memsize (g, memsize);
   }
 
   str = do_getenv (data, "LIBGUESTFS_BACKEND");
@@ -552,6 +555,10 @@ guestfs__get_append (guestfs_h *g)
 int
 guestfs__set_memsize (guestfs_h *g, int memsize)
 {
+  if (memsize < MIN_MEMSIZE) {
+    error (g, _("too small value for memsize (must be at least %d)"), MIN_MEMSIZE);
+    return -1;
+  }
   g->memsize = memsize;
   return 0;
 }
diff --git a/tests/regressions/rhbz557655-expected.stdout b/tests/regressions/rhbz557655-expected.stdout
index 80bc8bc..abc08e0 100644
--- a/tests/regressions/rhbz557655-expected.stdout
+++ b/tests/regressions/rhbz557655-expected.stdout
@@ -1,7 +1,6 @@
-0
-16
-8
--1073741824
+500
+512
+4096
 1073741823
 1234
 1234
diff --git a/tests/regressions/rhbz557655.sh b/tests/regressions/rhbz557655.sh
index 750263b..87eb279 100755
--- a/tests/regressions/rhbz557655.sh
+++ b/tests/regressions/rhbz557655.sh
@@ -27,13 +27,11 @@ export LANG=C
 ../../fish/guestfish >> rhbz557655.out 2>> rhbz557655.err <<EOF
 # set-memsize is just a convenient non-daemon function that
 # takes a single integer argument.
-set-memsize 0
+set-memsize 500
 get-memsize
-set-memsize 0x10
+set-memsize 0x200
 get-memsize
-set-memsize 010
-get-memsize
-set-memsize -1073741824
+set-memsize 010000
 get-memsize
 set-memsize 1073741823
 get-memsize

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-libvirt/libguestfs.git



More information about the Pkg-libvirt-commits mailing list