>From 9d736b09a45fab349943058d60c7b4343167a3af Mon Sep 17 00:00:00 2001 From: Richard Jones Date: Fri, 27 Nov 2009 17:56:51 +0000 Subject: [PATCH 9/9] daemon error handling: gnulib calls need separate error handling. --- daemon/augeas.c | 8 ++++---- daemon/checksum.c | 2 +- daemon/cmp.c | 4 ++-- daemon/command.c | 2 +- daemon/cpmv.c | 4 ++-- daemon/daemon.h | 9 +++++++++ daemon/dd.c | 4 ++-- daemon/debug.c | 6 +++--- daemon/dir.c | 4 ++-- daemon/du.c | 2 +- daemon/echo_daemon.c | 2 +- daemon/ext2.c | 2 +- daemon/file.c | 10 +++++----- daemon/find.c | 8 ++++---- daemon/grep.c | 2 +- daemon/grub.c | 2 +- daemon/guestfsd.c | 6 +++--- daemon/headtail.c | 2 +- daemon/hexdump.c | 2 +- daemon/initrd.c | 2 +- daemon/inotify.c | 8 ++++---- daemon/link.c | 6 +++--- daemon/ls.c | 2 +- daemon/lvm.c | 4 ++-- daemon/mount.c | 8 ++++---- daemon/parted.c | 6 +++--- daemon/proto.c | 2 +- daemon/readdir.c | 4 ++-- daemon/realpath.c | 4 ++-- daemon/scrub.c | 4 ++-- daemon/selinux.c | 2 +- daemon/stat.c | 8 ++++---- daemon/statvfs.c | 10 +++++----- daemon/strings.c | 2 +- daemon/swap.c | 6 +++--- daemon/tar.c | 8 ++++---- daemon/wc.c | 2 +- daemon/xattr.c | 22 +++++++++++----------- src/generator.ml | 6 +++--- 39 files changed, 103 insertions(+), 94 deletions(-) diff --git a/daemon/augeas.c b/daemon/augeas.c index de325de..c04e345 100644 --- a/daemon/augeas.c +++ b/daemon/augeas.c @@ -74,7 +74,7 @@ do_aug_init (const char *root, int flags) buf = sysroot_path (root); if (!buf) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return -1; } @@ -179,7 +179,7 @@ do_aug_get (const char *path) /* The value is an internal Augeas string, so we must copy it. GC FTW. */ v = strdup (value); if (v == NULL) { - reply_with_perror ("strdup"); + reply_with_perror_gnulib ("strdup"); return NULL; } @@ -290,7 +290,7 @@ do_aug_match (const char *path) */ vp = realloc (matches, sizeof (char *) * (r+1)); if (vp == NULL) { - reply_with_perror ("realloc"); + reply_with_perror_gnulib ("realloc"); free (vp); return NULL; } @@ -365,7 +365,7 @@ do_aug_ls (const char *path) len += 3; /* / * + terminating \0 */ buf = malloc (len); if (buf == NULL) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return NULL; } diff --git a/daemon/checksum.c b/daemon/checksum.c index 499d19d..6775a38 100644 --- a/daemon/checksum.c +++ b/daemon/checksum.c @@ -58,7 +58,7 @@ do_checksum (const char *csumtype, const char *path) /* Make the path relative to /sysroot. */ buf = sysroot_path (path); if (!buf) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return NULL; } diff --git a/daemon/cmp.c b/daemon/cmp.c index 2b7e33b..2700bd0 100644 --- a/daemon/cmp.c +++ b/daemon/cmp.c @@ -36,13 +36,13 @@ do_equal (const char *file1, const char *file2) file1buf = sysroot_path (file1); if (file1buf == NULL) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return -1; } file2buf = sysroot_path (file2); if (file2buf == NULL) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); free (file1buf); return -1; } diff --git a/daemon/command.c b/daemon/command.c index b2350ec..d9ca2cb 100644 --- a/daemon/command.c +++ b/daemon/command.c @@ -64,7 +64,7 @@ do_command (char *const *argv) if (sysroot_dev == NULL || sysroot_dev_pts == NULL || sysroot_proc == NULL || sysroot_selinux == NULL || sysroot_sys == NULL) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); free (sysroot_dev); free (sysroot_dev_pts); free (sysroot_proc); diff --git a/daemon/cpmv.c b/daemon/cpmv.c index 47b8aa2..5288b69 100644 --- a/daemon/cpmv.c +++ b/daemon/cpmv.c @@ -54,13 +54,13 @@ cpmv_cmd (const char *cmd, const char *flags, const char *src, const char *dest) srcbuf = sysroot_path (src); if (srcbuf == NULL) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return -1; } destbuf = sysroot_path (dest); if (destbuf == NULL) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); free (srcbuf); return -1; } diff --git a/daemon/daemon.h b/daemon/daemon.h index 96d08dd..167f1e5 100644 --- a/daemon/daemon.h +++ b/daemon/daemon.h @@ -130,6 +130,10 @@ extern void main_loop (int sock) __attribute__((noreturn)); * return -1; * } * + * The _gnulib_ variations are used for Gnulib replacement functions + * (eg. malloc, strdup, asprintf). These always set errno, not the + * Windows equivalent. + * * The _sock_ variations are only used for socket calls (Win32 has a * different way to return errors from socket calls). In reality * these variants are never used because the only socket we talk to is @@ -139,6 +143,7 @@ extern void main_loop (int sock) __attribute__((noreturn)); typedef int errtype; static inline void clear_error(void) { errno = 0; } static inline int get_error(void) { return errno; } +static inline int get_gnulib_error(void) { return errno; } static inline int get_sock_error(void) { return errno; } #else typedef DWORD errtype; @@ -149,6 +154,7 @@ static inline void clear_error(void) errno = 0; } static inline DWORD get_error(void) { return GetLastError (); } +static inline DWORD get_gnulib_error(void) { return (DWORD) errno; } static inline DWORD get_sock_error(void) { return WSAGetLastError (); } #endif @@ -174,6 +180,7 @@ static inline int get_errno(void) { return errno; } /* Ordinary daemon functions use these to indicate errors. * reply_with_error: Report an error. * reply_with_perror: Report an error followed by errno message. + * reply_with_perror_gnulib: Same as reply_with_perror for Gnulib calls. * reply_with_perror_sock: Same as reply_with_perror for socket calls. * reply_with_perror_with_err: Same as reply_with_perror but use an * error code that you saved previously from get_error(). @@ -182,6 +189,8 @@ extern void reply_with_error (const char *fs, ...) __attribute__((format (printf,1,2))); #define reply_with_perror(...) \ reply_with_perror_with_err (get_error(),__VA_ARGS__) +#define reply_with_perror_gnulib(...) \ + reply_with_perror_with_err (get_gnulib_error(),__VA_ARGS__) #define reply_with_perror_sock(...) \ reply_with_perror_with_err (get_sock_error(),__VA_ARGS__) extern void reply_with_perror_with_err (errtype err, const char *fs, ...) diff --git a/daemon/dd.c b/daemon/dd.c index 0a53b31..907fa01 100644 --- a/daemon/dd.c +++ b/daemon/dd.c @@ -41,7 +41,7 @@ do_dd (const char *src, const char *dest) else r = asprintf (&if_arg, "if=%s%s", sysroot, src); if (r == -1) { - reply_with_perror ("asprintf"); + reply_with_perror_gnulib ("asprintf"); return -1; } @@ -52,7 +52,7 @@ do_dd (const char *src, const char *dest) else r = asprintf (&of_arg, "of=%s%s", sysroot, dest); if (r == -1) { - reply_with_perror ("asprintf"); + reply_with_perror_gnulib ("asprintf"); free (if_arg); return -1; } diff --git a/daemon/debug.c b/daemon/debug.c index cb905cb..2b5fb06 100644 --- a/daemon/debug.c +++ b/daemon/debug.c @@ -101,7 +101,7 @@ debug_help (const char *subcmd, int argc, char *const *const argv) r = strdup ("Commands supported:"); if (!r) { - reply_with_perror ("strdup"); + reply_with_perror_gnulib ("strdup"); return NULL; } @@ -110,7 +110,7 @@ debug_help (const char *subcmd, int argc, char *const *const argv) len += strlen (cmds[i].cmd) + 1; /* space + new command */ p = realloc (r, len + 1); /* +1 for the final NUL */ if (p == NULL) { - reply_with_perror ("realloc"); + reply_with_perror_gnulib ("realloc"); free (r); return NULL; } @@ -226,7 +226,7 @@ debug_sh (const char *subcmd, int argc, char *const *const argv) len += strlen (argv[i]) + 1; cmd = malloc (len); if (!cmd) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return NULL; } for (i = j = 0; i < argc; ++i) { diff --git a/daemon/dir.c b/daemon/dir.c index 072dcf5..8eac736 100644 --- a/daemon/dir.c +++ b/daemon/dir.c @@ -65,7 +65,7 @@ do_rm_rf (const char *path) buf = sysroot_path (path); if (buf == NULL) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return -1; } @@ -224,7 +224,7 @@ do_mkdtemp (const char *template) { char *writable = strdup (template); if (writable == NULL) { - reply_with_perror ("strdup"); + reply_with_perror_gnulib ("strdup"); return NULL; } diff --git a/daemon/du.c b/daemon/du.c index e6df245..21e6818 100644 --- a/daemon/du.c +++ b/daemon/du.c @@ -39,7 +39,7 @@ do_du (const char *path) /* Make the path relative to /sysroot. */ buf = sysroot_path (path); if (!buf) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return -1; } diff --git a/daemon/echo_daemon.c b/daemon/echo_daemon.c index 658974b..e9ad742 100644 --- a/daemon/echo_daemon.c +++ b/daemon/echo_daemon.c @@ -49,7 +49,7 @@ do_echo_daemon (char *const *argv) /* Make the output buffer big enough for the string and its terminator */ char *out_new = realloc (out, out_len + 1); if (NULL == out_new) { - reply_with_perror ("realloc"); + reply_with_perror_gnulib ("realloc"); free(out); return 0; } diff --git a/daemon/ext2.c b/daemon/ext2.c index f46bac9..b00e5fb 100644 --- a/daemon/ext2.c +++ b/daemon/ext2.c @@ -225,7 +225,7 @@ do_get_e2uuid (const char *device) p = strdup (p); if (!p) { - reply_with_perror ("strdup"); + reply_with_perror_gnulib ("strdup"); free (out); return NULL; } diff --git a/daemon/file.c b/daemon/file.c index bbb6426..da1f988 100644 --- a/daemon/file.c +++ b/daemon/file.c @@ -99,7 +99,7 @@ do_cat (const char *path) } buf2 = realloc (buf, alloc); if (buf2 == NULL) { - reply_with_perror ("realloc"); + reply_with_perror_gnulib ("realloc"); free (buf); close (fd); return NULL; @@ -366,7 +366,7 @@ do_read_file (const char *path, size_t *size_r) } r = malloc (*size_r); if (r == NULL) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); close (fd); return NULL; } @@ -417,7 +417,7 @@ do_pread (const char *path, int count, int64_t offset, size_t *size_r) buf = malloc (count); if (buf == NULL) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); close (fd); return NULL; } @@ -455,7 +455,7 @@ do_file (const char *path) else { buf = sysroot_path (path); if (!buf) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return NULL; } freeit = 1; @@ -511,7 +511,7 @@ do_zfile (const char *method, const char *path) } if (asprintf_nowarn (&cmd, "%s %R | file -bsL -", zcat, path) == -1) { - reply_with_perror ("asprintf"); + reply_with_perror_gnulib ("asprintf"); return NULL; } diff --git a/daemon/find.c b/daemon/find.c index 391b87b..2382634 100644 --- a/daemon/find.c +++ b/daemon/find.c @@ -62,7 +62,7 @@ do_find (const char *dir) sysrootdir = sysroot_path (dir); if (!sysrootdir) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return NULL; } @@ -82,7 +82,7 @@ do_find (const char *dir) /* Assemble the external find command. */ if (asprintf_nowarn (&cmd, "find %Q -print0", sysrootdir) == -1) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("gnulib"); free (sysrootdir); return NULL; } @@ -154,7 +154,7 @@ do_find0 (const char *dir) sysrootdir = sysroot_path (dir); if (!sysrootdir) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return -1; } @@ -173,7 +173,7 @@ do_find0 (const char *dir) sysrootdirlen = strlen (sysrootdir); if (asprintf_nowarn (&cmd, "find %Q -print0", sysrootdir) == -1) { - reply_with_perror ("asprintf"); + reply_with_perror_gnulib ("asprintf"); free (sysrootdir); return -1; } diff --git a/daemon/grep.c b/daemon/grep.c index d1f5a3f..bb0faa3 100644 --- a/daemon/grep.c +++ b/daemon/grep.c @@ -38,7 +38,7 @@ grep (const char *prog, const char *flag, const char *regex, const char *path) /* Make the path relative to /sysroot. */ buf = sysroot_path (path); if (!buf) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return NULL; } diff --git a/daemon/grub.c b/daemon/grub.c index 657abbb..a073313 100644 --- a/daemon/grub.c +++ b/daemon/grub.c @@ -33,7 +33,7 @@ do_grub_install (const char *root, const char *device) char *buf; if (asprintf_nowarn (&buf, "--root-directory=%R", root) == -1) { - reply_with_perror ("asprintf"); + reply_with_perror_gnulib ("asprintf"); return -1; } diff --git a/daemon/guestfsd.c b/daemon/guestfsd.c index c3af8c5..b293ef6 100644 --- a/daemon/guestfsd.c +++ b/daemon/guestfsd.c @@ -445,7 +445,7 @@ read_cmdline (void) /* Turn "/path" into "/sysroot/path". * - * Caller must check for NULL and call reply_with_perror ("malloc") + * Caller must check for NULL and call reply_with_perror_gnulib ("malloc") * if it is. Caller must also free the string. * * See also the custom %R printf formatter which does shell quoting too. @@ -516,7 +516,7 @@ add_string (char ***argv, int *size, int *alloc, const char *str) *alloc += 64; new_argv = realloc (*argv, *alloc * sizeof (char *)); if (new_argv == NULL) { - reply_with_perror ("realloc"); + reply_with_perror_gnulib ("realloc"); free_strings (*argv); return -1; } @@ -526,7 +526,7 @@ add_string (char ***argv, int *size, int *alloc, const char *str) if (str) { new_str = strdup (str); if (new_str == NULL) { - reply_with_perror ("strdup"); + reply_with_perror_gnulib ("strdup"); free_strings (*argv); } } else diff --git a/daemon/headtail.c b/daemon/headtail.c index 9175cf0..52fe060 100644 --- a/daemon/headtail.c +++ b/daemon/headtail.c @@ -38,7 +38,7 @@ headtail (const char *prog, const char *flag, const char *n, const char *path) /* Make the path relative to /sysroot. */ buf = sysroot_path (path); if (!buf) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return NULL; } diff --git a/daemon/hexdump.c b/daemon/hexdump.c index 7016faf..55409af 100644 --- a/daemon/hexdump.c +++ b/daemon/hexdump.c @@ -34,7 +34,7 @@ do_hexdump (const char *path) buf = sysroot_path (path); if (!buf) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return NULL; } diff --git a/daemon/initrd.c b/daemon/initrd.c index 9c92fee..0d8fdc0 100644 --- a/daemon/initrd.c +++ b/daemon/initrd.c @@ -40,7 +40,7 @@ do_initrd_list (const char *path) /* "zcat /sysroot/ | cpio --quiet -it", but path must be quoted. */ if (asprintf_nowarn (&cmd, "zcat %R | cpio --quiet -it", path) == -1) { - reply_with_perror ("asprintf"); + reply_with_perror_gnulib ("asprintf"); return NULL; } diff --git a/daemon/inotify.c b/daemon/inotify.c index 749b8b7..634c125 100644 --- a/daemon/inotify.c +++ b/daemon/inotify.c @@ -159,7 +159,7 @@ do_inotify_add_watch (const char *path, int mask) buf = sysroot_path (path); if (!buf) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return -1; } @@ -204,7 +204,7 @@ do_inotify_read (void) ret = malloc (sizeof *ret); if (ret == NULL) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return NULL; } ret->guestfs_int_inotify_event_list_len = 0; @@ -257,7 +257,7 @@ do_inotify_read (void) (ret->guestfs_int_inotify_event_list_len + 1) * sizeof (guestfs_int_inotify_event)); if (np == NULL) { - reply_with_perror ("realloc"); + reply_with_perror_gnulib ("realloc"); goto error; } ret->guestfs_int_inotify_event_list_val = np; @@ -273,7 +273,7 @@ do_inotify_read (void) else in->in_name = strdup (""); /* Should have optional string fields XXX. */ if (in->in_name == NULL) { - reply_with_perror ("strdup"); + reply_with_perror_gnulib ("strdup"); goto error; } diff --git a/daemon/link.c b/daemon/link.c index 97f6ac0..b6d0a6a 100644 --- a/daemon/link.c +++ b/daemon/link.c @@ -47,7 +47,7 @@ do_readlink (const char *path) ret = strndup (link, r); if (ret == NULL) { - reply_with_perror ("strndup"); + reply_with_perror_gnulib ("strndup"); return NULL; } @@ -117,7 +117,7 @@ _link (const char *flag, int symbolic, const char *target, const char *linkname) /* Prefix linkname with sysroot. */ buf_linkname = sysroot_path (linkname); if (!buf_linkname) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return -1; } @@ -130,7 +130,7 @@ _link (const char *flag, int symbolic, const char *target, const char *linkname) if (!symbolic && target[0] == '/') { buf_target = sysroot_path (target); if (!buf_target) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); free (buf_linkname); return -1; } diff --git a/daemon/ls.c b/daemon/ls.c index a15ce62..d9bc3e8 100644 --- a/daemon/ls.c +++ b/daemon/ls.c @@ -88,7 +88,7 @@ do_ll (const char *path) spath = sysroot_path (path); if (!spath) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return NULL; } diff --git a/daemon/lvm.c b/daemon/lvm.c index 564517c..81d2fdd 100644 --- a/daemon/lvm.c +++ b/daemon/lvm.c @@ -209,7 +209,7 @@ do_vgcreate (const char *volgroup, char *const *physvols) argc = count_strings (physvols) + 3; argv = malloc (sizeof (char *) * (argc + 1)); if (argv == NULL) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return -1; } argv[0] = "/sbin/lvm"; @@ -437,7 +437,7 @@ do_vg_activate (int activate, char *const *volgroups) argc = count_strings (volgroups) + 4; argv = malloc (sizeof (char *) * (argc+1)); if (argv == NULL) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return -1; } diff --git a/daemon/mount.c b/daemon/mount.c index f447380..ef8b51f 100644 --- a/daemon/mount.c +++ b/daemon/mount.c @@ -59,7 +59,7 @@ do_mount_vfs (const char *options, const char *vfstype, mp = sysroot_path (mountpoint); if (!mp) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return -1; } @@ -116,7 +116,7 @@ do_umount (const char *pathordevice) buf = is_dev ? strdup (pathordevice) : sysroot_path (pathordevice); if (buf == NULL) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return -1; } @@ -323,13 +323,13 @@ do_mount_loop (const char *file, const char *mountpoint) /* We have to prefix /sysroot on both the filename and the mountpoint. */ mp = sysroot_path (mountpoint); if (!mp) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return -1; } buf = sysroot_path (file); if (!file) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); free (mp); return -1; } diff --git a/daemon/parted.c b/daemon/parted.c index 2b0df44..5f17e99 100644 --- a/daemon/parted.c +++ b/daemon/parted.c @@ -291,7 +291,7 @@ do_part_get_parttype (const char *device) r = strdup (r); if (!r) { - reply_with_perror ("strdup"); + reply_with_perror_gnulib ("strdup"); free_strings (lines); return NULL; } @@ -321,14 +321,14 @@ do_part_list (const char *device) r = malloc (sizeof *r); if (r == NULL) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); goto error1; } r->guestfs_int_partition_list_len = nr_rows; r->guestfs_int_partition_list_val = malloc (nr_rows * sizeof (guestfs_int_partition)); if (r->guestfs_int_partition_list_val == NULL) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); goto error2; } diff --git a/daemon/proto.c b/daemon/proto.c index 23748a4..f4fb017 100644 --- a/daemon/proto.c +++ b/daemon/proto.c @@ -81,7 +81,7 @@ main_loop (int _sock) buf = malloc (len); if (!buf) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); continue; } diff --git a/daemon/readdir.c b/daemon/readdir.c index 0d72912..849cf45 100644 --- a/daemon/readdir.c +++ b/daemon/readdir.c @@ -39,7 +39,7 @@ do_readdir (const char *path) ret = malloc (sizeof *ret); if (ret == NULL) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return NULL; } @@ -65,7 +65,7 @@ do_readdir (const char *path) sizeof (guestfs_int_dirent) * (i+1)); v.name = strdup (d->d_name); if (!p || !v.name) { - reply_with_perror ("allocate"); + reply_with_perror_gnulib ("realloc"); free (ret->guestfs_int_dirent_list_val); free (p); free (v.name); diff --git a/daemon/realpath.c b/daemon/realpath.c index 2760aff..0d50bb9 100644 --- a/daemon/realpath.c +++ b/daemon/realpath.c @@ -191,7 +191,7 @@ do_case_sensitive_path (const char *path) ret[next] = '\0'; char *retp = strdup (ret); if (retp == NULL) { - reply_with_perror ("strdup"); + reply_with_perror_gnulib ("strdup"); return NULL; } return retp; /* caller frees */ @@ -205,7 +205,7 @@ do_case_sensitive_path (const char *path) */ char *ret = strdup (path); if (ret == NULL) { - reply_with_perror ("strdup"); + reply_with_perror_gnulib ("strdup"); return NULL; } return ret; diff --git a/daemon/scrub.c b/daemon/scrub.c index e37a1e1..f7cdddf 100644 --- a/daemon/scrub.c +++ b/daemon/scrub.c @@ -63,7 +63,7 @@ do_scrub_file (const char *file) /* Make the path relative to /sysroot. */ buf = sysroot_path (file); if (!buf) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return -1; } @@ -90,7 +90,7 @@ do_scrub_freespace (const char *dir) /* Make the path relative to /sysroot. */ buf = sysroot_path (dir); if (!buf) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return -1; } diff --git a/daemon/selinux.c b/daemon/selinux.c index e49e657..aac44e7 100644 --- a/daemon/selinux.c +++ b/daemon/selinux.c @@ -79,7 +79,7 @@ do_getcon (void) r = strdup (context); freecon (context); if (r == NULL) { - reply_with_perror ("strdup"); + reply_with_perror_gnulib ("strdup"); return NULL; } diff --git a/daemon/stat.c b/daemon/stat.c index c14d15e..ad999cb 100644 --- a/daemon/stat.c +++ b/daemon/stat.c @@ -50,7 +50,7 @@ do_stat (const char *path) ret = malloc (sizeof *ret); if (ret == NULL) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return NULL; } @@ -99,7 +99,7 @@ do_lstat (const char *path) ret = malloc (sizeof *ret); if (ret == NULL) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return NULL; } @@ -140,13 +140,13 @@ do_lstatlist (const char *path, char *const *names) ret = malloc (sizeof *ret); if (!ret) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return NULL; } ret->guestfs_int_stat_list_len = nr_names; ret->guestfs_int_stat_list_val = calloc (nr_names, sizeof (guestfs_int_stat)); if (ret->guestfs_int_stat_list_val == NULL) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); free (ret); return NULL; } diff --git a/daemon/statvfs.c b/daemon/statvfs.c index 4fdcc24..202e9db 100644 --- a/daemon/statvfs.c +++ b/daemon/statvfs.c @@ -60,7 +60,7 @@ do_statvfs (const char *path) ret = malloc (sizeof *ret); if (ret == NULL) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return NULL; } @@ -89,7 +89,7 @@ do_statvfs (const char *path) disk = sysroot_path (path); if (!disk) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return NULL; } @@ -105,7 +105,7 @@ do_statvfs (const char *path) ret = malloc (sizeof *ret); if (ret == NULL) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return NULL; } @@ -150,7 +150,7 @@ do_statvfs (const char *path) disk = sysroot_path (path); if (!disk) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return NULL; } @@ -164,7 +164,7 @@ do_statvfs (const char *path) ret = malloc (sizeof *ret); if (ret == NULL) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return NULL; } diff --git a/daemon/strings.c b/daemon/strings.c index d7dc392..051573b 100644 --- a/daemon/strings.c +++ b/daemon/strings.c @@ -35,7 +35,7 @@ do_strings_e (const char *encoding, const char *path) buf = sysroot_path (path); if (!buf) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return NULL; } diff --git a/daemon/swap.c b/daemon/swap.c index 2d3d9ff..6c86d30 100644 --- a/daemon/swap.c +++ b/daemon/swap.c @@ -94,7 +94,7 @@ do_mkswap_file (const char *path) buf = sysroot_path (path); if (!buf) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return -1; } @@ -145,7 +145,7 @@ do_swapon_file (const char *path) buf = sysroot_path (path); if (!buf) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return -1; } @@ -162,7 +162,7 @@ do_swapoff_file (const char *path) buf = sysroot_path (path); if (!buf) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return -1; } diff --git a/daemon/tar.c b/daemon/tar.c index 56d291d..cbd3aa2 100644 --- a/daemon/tar.c +++ b/daemon/tar.c @@ -51,7 +51,7 @@ do_tar_in (const char *dir) /* "tar -C /sysroot%s -xf -" but we have to quote the dir. */ if (asprintf_nowarn (&cmd, "tar -C %R -xf -", dir) == -1) { - err = get_error (); + err = get_gnulib_error (); cancel_receive (); reply_with_perror_with_err (err, "asprintf"); return -1; @@ -105,7 +105,7 @@ do_tar_out (const char *dir) /* "tar -C /sysroot%s -cf - ." but we have to quote the dir. */ if (asprintf_nowarn (&cmd, "tar -C %R -cf - .", dir) == -1) { - reply_with_perror ("asprintf"); + reply_with_perror_gnulib ("asprintf"); return -1; } @@ -169,7 +169,7 @@ do_tgz_in (const char *dir) /* "tar -C /sysroot%s -zxf -" but we have to quote the dir. */ if (asprintf_nowarn (&cmd, "tar -C %R -zxf -", dir) == -1) { - err = get_error (); + err = get_gnulib_error (); cancel_receive (); reply_with_perror_with_err (err, "asprintf"); return -1; @@ -223,7 +223,7 @@ do_tgz_out (const char *dir) /* "tar -C /sysroot%s -zcf - ." but we have to quote the dir. */ if (asprintf_nowarn (&cmd, "tar -C %R -zcf - .", dir) == -1) { - reply_with_perror ("asprintf"); + reply_with_perror_gnulib ("asprintf"); return -1; } diff --git a/daemon/wc.c b/daemon/wc.c index b64940b..53791fa 100644 --- a/daemon/wc.c +++ b/daemon/wc.c @@ -37,7 +37,7 @@ wc (const char *flag, const char *path) /* Make the path relative to /sysroot. */ buf = sysroot_path (path); if (!buf) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); return -1; } diff --git a/daemon/xattr.c b/daemon/xattr.c index 77092c4..17afbae 100644 --- a/daemon/xattr.c +++ b/daemon/xattr.c @@ -135,7 +135,7 @@ getxattrs (const char *path, buf = malloc (len); if (buf == NULL) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); goto error; } @@ -150,7 +150,7 @@ getxattrs (const char *path, r = calloc (1, sizeof (*r)); if (r == NULL) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); goto error; } @@ -164,7 +164,7 @@ getxattrs (const char *path, r->guestfs_int_xattr_list_val = calloc (r->guestfs_int_xattr_list_len, sizeof (guestfs_int_xattr)); if (r->guestfs_int_xattr_list_val == NULL) { - reply_with_perror ("calloc"); + reply_with_perror_gnulib ("calloc"); goto error; } @@ -184,7 +184,7 @@ getxattrs (const char *path, if (r->guestfs_int_xattr_list_val[j].attrname == NULL || r->guestfs_int_xattr_list_val[j].attrval.attrval_val == NULL) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); goto error; } @@ -284,7 +284,7 @@ do_lxattrlist (const char *path, char *const *names) ret = malloc (sizeof (*ret)); if (ret == NULL) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); goto error; } @@ -309,7 +309,7 @@ do_lxattrlist (const char *path, char *const *names) realloc (ret->guestfs_int_xattr_list_val, (ret->guestfs_int_xattr_list_len+1)*sizeof (guestfs_int_xattr)); if (newptr == NULL) { - reply_with_perror ("realloc"); + reply_with_perror_gnulib ("realloc"); goto error; } ret->guestfs_int_xattr_list_val = newptr; @@ -323,7 +323,7 @@ do_lxattrlist (const char *path, char *const *names) entry->attrname = strdup (""); if (entry->attrname == NULL) { - reply_with_perror ("strdup"); + reply_with_perror_gnulib ("strdup"); goto error; } @@ -335,7 +335,7 @@ do_lxattrlist (const char *path, char *const *names) buf = malloc (len); if (buf == NULL) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); goto error; } @@ -357,7 +357,7 @@ do_lxattrlist (const char *path, char *const *names) (ret->guestfs_int_xattr_list_len+nr_attrs) * sizeof (guestfs_int_xattr)); if (newptr == NULL) { - reply_with_perror ("realloc"); + reply_with_perror_gnulib ("realloc"); goto error; } ret->guestfs_int_xattr_list_val = newptr; @@ -389,7 +389,7 @@ do_lxattrlist (const char *path, char *const *names) if (entry[j+1].attrname == NULL || entry[j+1].attrval.attrval_val == NULL) { - reply_with_perror ("malloc"); + reply_with_perror_gnulib ("malloc"); goto error; } @@ -412,7 +412,7 @@ do_lxattrlist (const char *path, char *const *names) entry[0].attrval.attrval_val = strdup (num); if (entry[0].attrval.attrval_val == NULL) { - reply_with_perror ("strdup"); + reply_with_perror_gnulib ("strdup"); goto error; } } diff --git a/src/generator.ml b/src/generator.ml index 9e602ac..129041d 100755 --- a/src/generator.ml +++ b/src/generator.ml @@ -5646,7 +5646,7 @@ and generate_daemon_actions () = pr " %s = realloc (args.%s.%s_val,\n" n n n; pr " sizeof (char *) * (args.%s.%s_len+1));\n" n n; pr " if (%s == NULL) {\n" n; - pr " reply_with_perror (\"realloc\");\n"; + pr " reply_with_perror_gnulib (\"realloc\");\n"; pr " goto done;\n"; pr " }\n"; pr " %s[args.%s.%s_len] = NULL;\n" n n n; @@ -5898,7 +5898,7 @@ and generate_daemon_actions () = pr "\n"; pr " ret = malloc (sizeof *ret);\n"; pr " if (!ret) {\n"; - pr " reply_with_perror (\"malloc\");\n"; + pr " reply_with_perror_gnulib (\"malloc\");\n"; pr " return NULL;\n"; pr " }\n"; pr "\n"; @@ -5941,7 +5941,7 @@ and generate_daemon_actions () = pr " newp = realloc (ret->guestfs_int_lvm_%s_list_val,\n" typ; pr " sizeof (guestfs_int_lvm_%s) * (i+1));\n" typ; pr " if (newp == NULL) {\n"; - pr " reply_with_perror (\"realloc\");\n"; + pr " reply_with_perror_gnulib (\"realloc\");\n"; pr " free (ret->guestfs_int_lvm_%s_list_val);\n" typ; pr " free (ret);\n"; pr " free (out);\n"; -- 1.6.5.2