Commit Graph

551 Commits

Author SHA1 Message Date
Richard W.M. Jones
b13c22668d appliance: Use supermin >= 5.
This requires the new version of supermin (5.1.0).
2014-02-26 15:21:08 +00:00
Pino Toscano
8b1f1c15f5 fish: use XDG paths for the config file
Read the configuration file from XDG paths for both global and
user-local locations, keeping the old paths as fallback.
2014-02-18 10:44:49 +01:00
Pino Toscano
8577aded98 fish: change order of config files being read
First read the global configuration and then the local one in user's
HOME, so the latter can really override system settings.
2014-02-17 16:24:41 +01:00
Pino Toscano
5d2b0d1366 fish: small refactor of config reading code
Even though so far there is just one possible setting to read, isolate
in an own function the code to parse a configuration file and read the
settings out of it.

Now there's a new config_t handle used every time, but since config_read
would reset an handle completely, there is no behaviour change.
2014-02-17 16:21:18 +01:00
Richard W.M. Jones
d56b8bcb2c Remove some unused header files.
Found by make syntax-check.
2014-02-14 12:33:37 +00:00
Richard W.M. Jones
cd9f741174 fish/uri: Initialize some variables to avoid a warning.
The warning only appears when we set CFLAGS to be the same as used by
RPM, which you can do by setting:

  CFLAGS="$(rpm --eval '%{__global_cflags}')"

before running ./configure.

FWIW the current value of that RPM expression (in Fedora 20) is:

  -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches

It is not clear which option precisely enables the warning.
2014-02-13 17:48:23 +00:00
Richard W.M. Jones
d93e3c50eb fish: Additional GUESTFISH_* environment variables to control the prompt.
This adds:

 - GUESTFISH_INIT
 - GUESTFISH_OUTPUT
 - GUESTFISH_RESTORE

which along with existing GUESTFISH_PS1 allow you to fine control the
colour of the output.
2014-02-03 13:57:33 +00:00
Richard W.M. Jones
f02fddc26b tests: Update miscellaneous tests to use disk-create API.
Instead of calling out to qemu-img / truncate.
2014-01-28 21:02:11 +00:00
Richard W.M. Jones
2794eac739 fish: Use disk-create API to implement guestfish 'alloc' and 'sparse' commands. 2014-01-28 21:02:11 +00:00
Richard W.M. Jones
01d27033bd lib, fish: Handle Gluster, NBD, iSCSI and Sheepdog paths properly.
This fixes the handling of paths for the protocols named above, with
respect to leading '/' (or not) on the volume/export name.

See previous commits which did the same fixes for Ceph:
commit 53a3ff9c00
commit 992a6b2970
2014-01-23 21:49:16 +00:00
Richard W.M. Jones
992a6b2970 fish: Handle Ceph/rbd URIs and convert them to paths properly (RHBZ#1026688).
The path at the API level (for guestfs_add_drive_opts) is:

  pool/disk

The URI syntax is either rbd:///pool/disk or rbd://server:port/pool/disk.
Because of the way URI parsing works we may need to remove a leading
'/' character before passing the path down to the API.
2014-01-23 14:46:03 +00:00
Richard W.M. Jones
b93a1d50ad fish/uri: Tidy up error messages. 2014-01-23 14:46:03 +00:00
Richard W.M. Jones
1e4663858b New API: set-backend-settings, get-backend-settings.
Allow settings (an arbitrary list of strings) to be passed to the
current backend.  This will allow us to tweak how the backend works,
eg. by forcing TCG.
2014-01-18 16:32:03 +00:00
Richard W.M. Jones
07e47513df fish: Fix tests that specified qcow2 format, but passed a raw format disk.
In some tests we were specifying qcow2 as the image format when adding
a disk, but actually passing a raw format image.

Libguestfs previously did not detect this until guestfs_launch, but it
was still a bug to pass an incorrect format to guestfs_add_drive_opts.

It only worked because these tests never call guestfs_launch.

A later commit in this series will cause this to be detected
(sometimes) during guestfs_add_drive_opts.
2014-01-16 18:01:46 +00:00
Pino Toscano
b7bb1f6cee builder, edit, fish: use copy-attributes
Make use of the new copy-attributes command to properly copy all file
attributes from a file to the new version of it.
2014-01-14 11:08:25 +01:00
Richard W.M. Jones
aba64a0327 fish: Add test-file-attrs.sh to EXTRA_DIST.
This fixes commit efb5f18415.
2014-01-13 22:12:33 +00:00
Pino Toscano
efb5f18415 New API: copy-attributes.
This allows one to copy attributes (like permissions, xattrs,
ownership) from a file to another.
2014-01-13 14:57:44 +01:00
Richard W.M. Jones
6c971faecf Update copyright dates for 2014. 2014-01-02 16:53:34 +00:00
Richard W.M. Jones
70db54974b fish: Fix memory leak in inspect/-i code (detected by valgrind).
This only manifested in the new virt-diff tool.
2013-12-18 18:37:50 +00:00
Richard W.M. Jones
1ee879f3e5 New tool: virt-diff.
This tool can be used to show the differences between two
disk images.
2013-12-18 15:15:53 +00:00
Richard W.M. Jones
2b674ccdd3 fish: options: Add alternate add_drives_handle and inspect_mount_handle.
These functions don't use the implicit 'g' global variable, but
take a handle argument instead.
2013-12-18 15:15:53 +00:00
Richard W.M. Jones
c513d3a6e5 fish: Add option parsing for -A and -D options.
Same as -a and -d except these add the drives to a second list
of drives (drvs2).
2013-12-18 15:15:53 +00:00
Richard W.M. Jones
28adf7cea6 fish: Move -d option parsing to common function.
This is essentially just code motion, except:

(1) It cleans up a few variable declarations which were implicitly
used by the old macro that aren't needed any more.

(2) The options are reordered alphabetically.
2013-12-18 15:15:52 +00:00
Richard W.M. Jones
d9826467c2 fish: Deprecate the -D option (prefer --no-dest-paths instead).
This option will now print a warning:
guestfish: warning: -D option is deprecated, use --no-dest-paths instead
2013-12-18 15:15:52 +00:00
Richard W.M. Jones
d39b4dc606 fish: Ensure print_inspect_prompt can only be called by guestfish.
Code clean-up.
2013-12-18 15:15:52 +00:00
Richard W.M. Jones
a4f4f9c075 inspector: Ensure low-level inspection functions can only be called by virt-inspector.
Code clean-up.
2013-12-18 15:15:52 +00:00
Richard W.M. Jones
d6e4709f5b fish: options: Fix incorrect comment. 2013-12-18 15:15:52 +00:00
Richard W.M. Jones
fb41ce252f Change supermin man pages section 8 to section 1.
Corresponding change in upstream supermin:
cb3f9e8bba
2013-11-12 08:49:45 +00:00
Richard W.M. Jones
24a315507d Add man page for /etc/libguestfs-tools.conf (RHBZ#1019889).
Add a man page to document this configuration file.  This is
required by some distros, eg. Debian and RHEL.
2013-10-17 15:23:40 +01:00
Richard W.M. Jones
54fb09e052 fish: CVE-2013-4419: Fix insecure temporary directory handling for remote guestfish (RHBZ#1016960).
When using the guestfish --remote or guestfish --listen options,
guestfish would create a socket in a known location
(/tmp/.guestfish-$UID/socket-$PID).

The location has to be a known one in order for both ends to
communicate.  However no checking was done that the containing
directory (/tmp/.guestfish-$UID) is owned by the user.  Thus another
user could create this directory and potentially modify sockets owned
by another user's guestfish client or server.

This commit fixes the issue by creating the directory unconditionally,
and then checking that the directory has the correct owner and
permissions, thus preventing another user from creating the directory
first.

If guestfish sees a suspicious socket directory it will print an error
like this and exit with an error status:

  guestfish: '/tmp/.guestfish-1000' is not a directory or has insecure owner or permissions

Thanks: Michael Scherer for discovering this issue.

Version 2:
 - Add assigned CVE number.
 - Update documentation.

Signed-off-by: Richard W.M. Jones <rjones@redhat.com>
2013-10-17 12:54:06 +01:00
Richard W.M. Jones
9f1bcbca55 fish: Use UNIX_PATH_MAX instead of hard-coded value for max length of socket buf. 2013-10-09 20:56:41 +01:00
Richard W.M. Jones
9ba6717e94 New tool: virt-builder: For quickly building virtual machine images.
On baremetal you can build and customize a new guest in under 2
minutes.  For example:

$ virt-builder fedora-19 \
    --root-password password:test \
    --install minicom \
    --firstboot-command 'yum -y update' \
    --firstboot-command 'useradd -m -p "" rjones ; chage -d 0 rjones'
[     0.0] Downloading: file:///home/rjones/d/libguestfs/builder/website/fedora-19.xz
[     1.0] Uncompressing: file:///home/rjones/d/libguestfs/builder/website/fedora-19.xz
[    24.0] Running virt-resize to expand the disk to 4.2G
[    77.0] Opening the new disk
[    81.0] Installing packages: minicom
[    94.0] Installing firstboot command: [001] yum -y update
[    94.0] Installing firstboot command: [002] useradd -m -p "" rjones ; chage -d 0 rjones
[    94.0] Finishing off
2013-10-03 22:02:16 +01:00
Richard W.M. Jones
3f0748f1fc rescue: Use cachemode "unsafe" for the virt-rescue --scratch option. 2013-09-01 13:47:51 +01:00
Richard W.M. Jones
b1919066ca Initialize CLEANUP_* stack variables with NULL in various places.
Code like:

  CLEANUP_FREE char *buf;
  /* some code which might return early */
  buf = malloc (10);

is a potential bug because the free (*buf) might be called when buf is
an uninitialized pointer.  Initialize buf = NULL to avoid this.

Several of these are bugs, most are not bugs (because there is no
early return statement before the variable gets initialized).

However the compiler can elide the initialization, and even if it does
not the performance "penalty" is miniscule, and correctness is better.
2013-08-22 19:48:05 +01:00
Richard W.M. Jones
7e39695461 fish: Document that guestfish --remote --add won't work as expected (RHBZ#998513). 2013-08-19 14:17:55 +01:00
Richard W.M. Jones
78dbd08dd2 Rename 'qemu' as 'hv', 'LIBGUESTFS_QEMU' as 'LIBGUESTFS_HV'. 2013-08-14 17:25:34 +01:00
Richard W.M. Jones
65b4ab11e1 tests: fish: Add valgrind testing to various existing tests.
This involves running ./guestfish under $VG (== valgrind + options,
defined only when check-valgrind is run).
2013-07-30 16:27:55 +01:00
Richard W.M. Jones
23d429ff84 fish: Add a test for -a URI options. 2013-07-30 16:15:04 +01:00
Richard W.M. Jones
e3df223a5a fish: Fix guestfish so it can recognize sheepdog://... as a valid URI.
Because "sheepdog" is 8 characters, it wasn't recognized before.
2013-07-30 16:13:24 +01:00
Richard W.M. Jones
4d7c14fdbb fish: Split off URI handling (for -a argument) from general options parsing.
This is so we will be able to reuse the same code in the OCaml tools.

This is just code motion.
2013-07-30 15:37:16 +01:00
Richard W.M. Jones
671be806ae fish: options: Fix optarg -> arg.
Don't read the global variable optarg.  Read arg instead.
(In all cases they are the same, so this bug made no difference).
2013-07-30 13:49:49 +01:00
Richard W.M. Jones
a3891430bc fish: Don't store xmlURIPtr directly in the drive struct.
Original drv_uri fields:

      xmlURIPtr uri;        /* URI */
      char *socket;         /* ?socket parameter from URI. */
      const char *format;   /* format (NULL == autodetect) */

New drv_uri fields:

      char *path;           /* disk path */
      char *protocol;       /* protocol (eg. "nbd") */
      char **server;        /* server(s) - can be NULL */
      char *username;       /* username - can be NULL */
      const char *format;   /* format (NULL == autodetect) */
      const char *orig_uri; /* original URI (for error messages etc.) */

This is just code motion.
2013-07-30 12:17:22 +01:00
Richard W.M. Jones
4180abcc1f tests: Use unique or temporary names for temporary files.
Review every test(!) to ensure that it:

 - Doesn't use a generic name (eg. "test1.img", "test.out") for any
   temporary file it needs.

 - Does instead use a unique name or a temporary name (eg. a name like
   "name-of-the-test.img", or a scratch disk).

 - Does not use 'rm -f' to clean up its temporary files (so we can
   detect errors if the wrong temporary file is created or removed).

This allows tests to be run in parallel, so they don't stomp on each
other's temporary files.
2013-07-23 10:16:00 +01:00
Richard W.M. Jones
ccd069f859 fish: For -N option, add drive with explicit format = "raw".
Although autodetecting is safe (we always have just created a drive),
it saves a little bit of time if we don't have to run qemu-img to
detect the disk format with the libvirt backend.

Note that for prepared drives the format is always raw and we don't
anticipate creating drives in other formats.
2013-07-23 09:44:32 +01:00
Richard W.M. Jones
7c8c6e0760 fish: Allow -N filename=type to use 'filename' instead of 'test1.img' (etc.)
So:

  guestfish -N fs

is equivalent to:

  guestfish -N test1.img=fs
2013-07-22 15:45:06 +01:00
Richard W.M. Jones
3c94f02456 fish: Split up long line in --help output. 2013-07-22 15:24:52 +01:00
Richard W.M. Jones
a8b03201f0 fish: Clarify documentation.
It's not "the guest" which is launched, but the libguestfs appliance.
2013-07-22 15:16:39 +01:00
Richard W.M. Jones
e52a6b56f4 fish: Check for out of memory failure.
(Found by Coverity)
2013-05-28 15:48:42 +01:00
Richard W.M. Jones
5c80f22b64 syntax-check: Remove unused ``#includes''. 2013-05-24 14:20:51 +01:00
Hilko Bengen
40a0e08619 fish/test-events.sh: ignore "trace get_path" line
The test would fail when LIBGUESTFS_PATH was not set.
2013-05-19 21:55:29 +02:00