summaryrefslogtreecommitdiffstats
path: root/regressions
Commit message (Collapse)AuthorAgeFilesLines
...
* guestfish: Use xstrtol to parse integers (RHBZ#557655).Richard Jones2010-01-253-1/+108
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Current code uses atoi to parse the generator Int type and atoll to parse the generator Int64 type. The problem with the ato* functions is that they don't cope with errors very well, and they cannot parse numbers that begin with 0.. or 0x.. for octal and hexadecimal respectively. This replaces the atoi call with a call to Gnulib xstrtol and the atoll call with a call to Gnulib xstrtoll. The generated code looks like this for all Int arguments: { strtol_error xerr; long r; xerr = xstrtol (argv[0], NULL, 0, &r, ""); if (xerr != LONGINT_OK) { fprintf (stderr, _("%s: %s: invalid integer parameter (%s returned %d)\n"), cmd, "memsize", "xstrtol", xerr); return -1; } /* The Int type in the generator is a signed 31 bit int. */ if (r < (-(2LL<<30)) || r > ((2LL<<30)-1)) { fprintf (stderr, _("%s: %s: integer out of range\n"), cmd, "memsize"); return -1; } /* The check above should ensure this assignment does not overflow. */ memsize = r; } and like this for all Int64 arguments (note we don't need the range check for these): { strtol_error xerr; long long r; xerr = xstrtoll (argv[1], NULL, 0, &r, ""); if (xerr != LONGINT_OK) { fprintf (stderr, _("%s: %s: invalid integer parameter (%s returned %d)\n"), cmd, "size", "xstrtoll", xerr); return -1; } size = r; } Note this also fixes an unrelated bug in guestfish handling of RBufferOut. We were using 'fwrite' without checking the return value, and this could have caused silent failures, eg. in the case where there was not enough disk space to store the resulting file, or even if the program was interrupted (but continued) during the write. Replace this with Gnulib 'full-write', and check the return value and report errors.
* build: Fix inter-directory dependenciesMatthew Booth2009-11-191-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | This change adds an explicit dependency on generator.ml for every file it generates, except java files. Java is left for another time because it's considerably trickier. It also adds a build rule for src/libguestfs.la so it can be rebuilt as required from other directories. It does this by creating a top level make file, subdir-rules.mk, which can be included from sub-directories. sub-directories need to define 'generator_built' to include local files which are built by generator.ml, and they will be updated automatically. This fixes parallel make, and will automatically re-create generated files when make is run from any directory. It also fixes the problem which efad4f53 was targetting. Specifically, src/guestfs_protocol.(c|h) had an erroneous dependency on stamp-generator, and therefore generator.ml, despite not being directly created by it. This caused them to be recreated every time generator.ml ran rather than only when src/guestfs_protocol.x was updated, which cascaded into a daemon and therefore appliance update. This patch also changes the contents of the distribution tarball by including files created by rpcgen.
* Generic partition creation interface.Richard Jones2009-11-104-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit introduces a generic partition creation interface which should be future-proof and extensible, and partially replaces the old sfdisk-based interface. The implementation is based on parted but is hopefully not too dependent on the particulars of parted. The following new calls are introduced: guestfs_part_init: Initialize a disk with a partition table. Unlike the sfdisk- based interface, we also support GPT and other partition types, which is essential to scale to devices larger than 2TB. guestfs_part_add: Add a partition to an existing disk. guestfs_part_disk: Convenience function which combines part_init & part_add, creating a single partition that covers the whole disk. guestfs_part_set_bootable: guestfs_part_set_name: Set various aspects of existing partitions. guestfs_part_list: List partitions on a device. This returns a programming-friendly list of partition structs (in contrast to sfdisk-l which cannot be parsed). guestfs_part_get_parttype: Return the partition table type, eg. "msdos" or "gpt". The following calls are planned, but not added currently: guestfs_part_get_bootable guestfs_part_get_name guestfs_part_set_type guestfs_part_get_type
* Debian: Use /bin/bash as the shell for regression test scripts.Richard Jones2009-11-0414-14/+14
| | | | | | | | | | /bin/sh on Debian is a minimal shell called 'dash' which doesn't support some features we need such as the particular 'function' syntax used by regressions/test-stringlist.sh, and therefore this script was failing on Debian. Change all of these scripts to use #!/bin/bash explicitly to avoid these sorts of problems.
* New API: find0 (unlimited version of find)Richard Jones2009-10-202-0/+40
| | | | | | | | | | | | | This adds a new API call guestfs_find0, which is like guestfs_find but mainly doesn't suffer from the protocol limit of the earlier command. The earlier command is not deprecated because it is still very useful. guestfs_find0 uses a FileOut parameter and writes the results to an external file. The filenames in the output are separated by ASCII NUL characters (so a bit like "find -print0"). There is also the addition of a regression test for this command.
* guestfish: Enable grouping in string listsMatthew Booth2009-09-142-1/+62
| | | | | | | | | | | | | | | | | | | | | | This change adds the ability to group entries in a string list with single quotes. So the string: "'foo bar'" becomes 1 token rather than 2. Consequently single quotes must now be escaped: "\'" resolves to a literal single quote. Incidentally, this change also alters another, probably unintentional behaviour of the previous implementation, in that tokens are separated by any amount of whitespace rather than a single whitespace character. I.e.: "a b" resolves to: 'a' 'b' rather than: 'a' '' 'b' That last syntax can be used if an empty argument is still desired. Whitespace is now also defined to include tabs. parse_string_list can also now fail if it contains an unmatched open quote.
* guestfish: Redirect stdout when executing remote commandsMatthew Booth2009-09-141-0/+12
| | | | | | | | | | | guestfish --listen necessarily redirects its stdout to /dev/null so as not to interfere with eval. The remote protocol doesn't contain any other provision for collecting stdout for the caller, so executing guestfish --remote will never generate any output. This patch fixes that by forwarding the caller's STDOUT to the listener over the unix socket connection. The listener redirects its STDOUT to the caller's STDOUT for the duration of the command, then closes it again.
* tests: Found three more references to the squashfs, replaced with ISO.Richard W.M. Jones2009-08-192-4/+4
|
* tests: increase likelihood that heap abuse triggers failureJim Meyering2009-08-131-0/+3
| | | | | * regressions/Makefile.am (TESTS_ENVIRONMENT): Always set MALLOC_PERTURB_ to a random value in 1..255.
* Fix regression test rhbz503169c10.sh.Richard Jones2009-08-121-0/+3
| | | | | | | 'll' command has changed semantics very slightly (see commit 6727e7c8bdf1cb39264a9de6333d228b51c39956). We need to fix this test so it doesn't try to run the ll command without a mounted disk.
* Add copyright and license notice to regressions/test-noexec-stack.plRichard Jones2009-08-061-0/+15
|
* Add a test for an executable stack in resultant binariesMatthew Booth2009-08-052-3/+69
|
* build: remove trailing blanks, enable syntax-checkJim Meyering2009-08-041-1/+1
| | | | | | | * regressions/test-cancellation-download-librarycancels.sh: * src/generator.ml: * cfg.mk (disable_temporarily): Remove sc_trailing_blank. * .x-sc_trailing_blank: New file.
* RHEL 5 thinks squashfs is HFS+ filesystem, unless we specify the type ↵Richard Jones2009-07-231-1/+1
| | | | explicitly.
* Generator: Implement RBufferOut and "read-file" call.Richard W.M. Jones2009-07-212-0/+35
| | | | | | | | | This commit implements the RBufferOut type for returning arbitrary 8 bit data from calls. We also implement the guestfs_read_file call to read a whole file that can contain any 8 bit content, but up to a limit of ~ 2 MB.
* Guestfish feature: remote control of guestfish over a pipe.Richard Jones2009-07-142-0/+35
| | | | | | | | | | | | | | | | | The use case is to have a long-running guestfish process in a shell script, and thus to avoid the overhead of starting guestfish each time. Do: eval `guestfish --listen` guestfish --remote somecmd guestfish --remote someothercmd guestfish --remote exit This patch also supports having multiple guestfish processes at the same time. The protocol is simple XDR messages over a Unix domain socket.
* Regression test: Test reopening the handle in the same process.Richard W.M. Jones2009-07-112-1/+43
|
* RHEL 5: Mount squashfs with explicit type.Richard Jones2009-07-071-1/+1
|
* Test two (of four) cancellation paths.Richard Jones2009-07-063-0/+85
|
* Introduce regression tests for various qemu failures.Richard Jones2009-07-068-13/+150
| | | | | | | | | | | Test failure of qemu and recovery of the library: - mid-command - between commands - during launch [test not working yet] - explicitly killed by guestfs_kill_subprocess Also this patch cleans up the other tests in this directory and disables the long-winded test-bootbootboot test.
* remove trailing blanksJim Meyering2009-07-031-1/+0
|
* Fix RHBZ#503169 comment 13 (regression) and add a regression test.Richard Jones2009-06-042-0/+45
|
* Added regression test for RHBZ503169#c10Richard Jones2009-06-042-3/+52
|
* Move pure regression tests to their own subdirectory.Richard Jones2009-06-043-0/+103