X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=daemon%2Ftar.c;h=95408271b87e33dbd291f2663d322fcc3a932f8b;hb=6bb4c300addd0776d9f74653b98383c717bc29a1;hp=a33ec3a0a6a2a11dec1494e933655d9b41e3263c;hpb=a30f66436eac79b9e532e448882d03375c0d5e78;p=libguestfs.git diff --git a/daemon/tar.c b/daemon/tar.c index a33ec3a..9540827 100644 --- a/daemon/tar.c +++ b/daemon/tar.c @@ -1,5 +1,5 @@ /* libguestfs - the guestfsd daemon - * Copyright (C) 2009 Red Hat Inc. + * Copyright (C) 2009 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 @@ -36,7 +36,7 @@ fwrite_cb (void *fp_ptr, const void *buf, int len) /* Has one FileIn parameter. */ int -do_tar_in (const char *dir) +do_tar_in (char *dir) { int err, r, len; FILE *fp; @@ -68,8 +68,10 @@ do_tar_in (const char *dir) cancel_receive (); errno = err; reply_with_perror ("%s", cmd); + free (cmd); return -1; } + free (cmd); r = receive_file (fwrite_cb, &fp); if (r == -1) { /* write error */ @@ -86,7 +88,7 @@ do_tar_in (const char *dir) return -1; } - if (pclose (fp) == -1) { + if (pclose (fp) != 0) { err = errno; cancel_receive (); errno = err; @@ -99,7 +101,7 @@ do_tar_in (const char *dir) /* Has one FileOut parameter. */ int -do_tar_out (const char *dir) +do_tar_out (char *dir) { int r, len; FILE *fp; @@ -123,8 +125,10 @@ do_tar_out (const char *dir) fp = popen (cmd, "r"); if (fp == NULL) { reply_with_perror ("%s", cmd); + free (cmd); return -1; } + free (cmd); /* Now we must send the reply message, before the file contents. After * this there is no opportunity in the protocol to send any error @@ -146,7 +150,7 @@ do_tar_out (const char *dir) return -1; } - if (pclose (fp) == -1) { + if (pclose (fp) != 0) { perror (dir); send_file_end (1); /* Cancel. */ return -1; @@ -158,7 +162,7 @@ do_tar_out (const char *dir) /* Has one FileIn parameter. */ int -do_tgz_in (const char *dir) +do_tgz_in (char *dir) { int err, r, len; FILE *fp; @@ -190,8 +194,10 @@ do_tgz_in (const char *dir) cancel_receive (); errno = err; reply_with_perror ("%s", cmd); + free (cmd); return -1; } + free (cmd); r = receive_file (fwrite_cb, &fp); if (r == -1) { /* write error */ @@ -208,7 +214,7 @@ do_tgz_in (const char *dir) return -1; } - if (pclose (fp) == -1) { + if (pclose (fp) != 0) { err = errno; cancel_receive (); errno = err; @@ -221,7 +227,7 @@ do_tgz_in (const char *dir) /* Has one FileOut parameter. */ int -do_tgz_out (const char *dir) +do_tgz_out (char *dir) { int r, len; FILE *fp; @@ -245,8 +251,10 @@ do_tgz_out (const char *dir) fp = popen (cmd, "r"); if (fp == NULL) { reply_with_perror ("%s", cmd); + free (cmd); return -1; } + free (cmd); /* Now we must send the reply message, before the file contents. After * this there is no opportunity in the protocol to send any error @@ -268,7 +276,7 @@ do_tgz_out (const char *dir) return -1; } - if (pclose (fp) == -1) { + if (pclose (fp) != 0) { perror (dir); send_file_end (1); /* Cancel. */ return -1;