mirror of
https://github.com/libguestfs/libguestfs.git
synced 2026-03-22 07:03:38 +00:00
Check error returns from posix_fallocate (RHBZ#579664).
posix_fallocate has a non-standard way to return error indications. Thus all our calls to posix_fallocate were effectively unchecked. For example: $ guestfish alloc test.img 1P $ echo $? 0 $ ll test.img -rw-rw-r--. 1 rjones rjones 0 2010-04-06 11:02 test.img $ rm test.img With this change, errors are detected and reported properly: $ ./fish/guestfish alloc test.img 1P fallocate: File too large This is a fix for: https://bugzilla.redhat.com/show_bug.cgi?id=579664
This commit is contained in:
@@ -23,6 +23,7 @@
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include "daemon.h"
|
||||
#include "actions.h"
|
||||
@@ -41,10 +42,9 @@ do_fallocate (const char *path, int len)
|
||||
}
|
||||
|
||||
#ifdef HAVE_POSIX_FALLOCATE
|
||||
int r;
|
||||
|
||||
r = posix_fallocate (fd, 0, len);
|
||||
if (r == -1) {
|
||||
int err = posix_fallocate (fd, 0, len);
|
||||
if (err != 0) {
|
||||
errno = err;
|
||||
reply_with_perror ("%s", path);
|
||||
close (fd);
|
||||
return -1;
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <inttypes.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include "fish.h"
|
||||
|
||||
@@ -55,7 +56,9 @@ do_alloc (const char *cmd, int argc, char *argv[])
|
||||
}
|
||||
|
||||
#ifdef HAVE_POSIX_FALLOCATE
|
||||
if (posix_fallocate (fd, 0, size) == -1) {
|
||||
int err = posix_fallocate (fd, 0, size);
|
||||
if (err != 0) {
|
||||
errno = err;
|
||||
perror ("fallocate");
|
||||
close (fd);
|
||||
unlink (argv[0]);
|
||||
|
||||
Reference in New Issue
Block a user