[Libguestfs] [PATCH] Replace File::Path's remove_tree
Richard W.M. Jones
rjones at redhat.com
Wed Jan 26 17:41:37 UTC 2011
On Wed, Jan 26, 2011 at 05:39:06PM +0000, Matthew Booth wrote:
> We were using remove_tree in the RHEV cleanup code. remove_tree seems to use
> chdir. Unfortunately, as this code will be running seteuid(36), it is not
> unlikely that the current working directory will not be readable. This causes
> remove_tree to fail.
>
> This patch replaces remove_tree with a simple rm -rf. We also only warn on
> failure, as it's not strictly fatal.
>
> Fixes RHBZ#670778
> ---
> lib/Sys/VirtV2V/Connection/RHEVTarget.pm | 24 +++++-------------------
> 1 files changed, 5 insertions(+), 19 deletions(-)
>
> diff --git a/lib/Sys/VirtV2V/Connection/RHEVTarget.pm b/lib/Sys/VirtV2V/Connection/RHEVTarget.pm
> index 7ea84f8..944c324 100644
> --- a/lib/Sys/VirtV2V/Connection/RHEVTarget.pm
> +++ b/lib/Sys/VirtV2V/Connection/RHEVTarget.pm
> @@ -243,7 +243,6 @@ sub DESTROY
>
> package Sys::VirtV2V::Connection::RHEVTarget::Vol;
>
> -use File::Path qw(remove_tree);
> use File::Spec::Functions;
> use File::Temp qw(tempdir);
> use POSIX;
> @@ -380,25 +379,12 @@ sub _cleanup
>
> return unless (defined($tmpdir));
>
> - my $errors = [];
> - eval {
> - remove_tree($tmpdir, { error => \$errors });
> - };
> - push(@$errors, $@) if ($@);
> -
> - if (@$errors > 0) {
> - foreach my $error (@$errors) {
> - foreach my $file (keys(%$error)) {
> - warn(user_message(__x("Error removing {file}: {error}",
> - file => $file,
> - error => $error->{$file})));
> - }
> - }
> -
> - die(user_message(__x("Unable to remove temporary directory ".
> - "{dir}", dir => $tmpdir)));
> + my $ret = system('rm', '-rf', $tmpdir);
> + if (WEXITSTATUS($ret) != 0) {
> + warn user_message(__x("Error whilst attempting to remove temporary ".
> + "directory {dir}",
> + dir => $tmpdir));
> }
> -
> $tmpdir = undef;
> }
>
Looks better to me, so ACK.
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
New in Fedora 11: Fedora Windows cross-compiler. Compile Windows
programs, test, and build Windows installers. Over 70 libraries supprt'd
http://fedoraproject.org/wiki/MinGW http://www.annexia.org/fedora_mingw
More information about the Libguestfs
mailing list