diff options
author | Don Brady <don.brady@delphix.com> | 2020-06-19 16:40:07 -0500 |
---|---|---|
committer | Jason King <jason.king@joyent.com> | 2020-07-07 12:55:10 -0500 |
commit | 7ac89354c798225fea6296348415955ccd95fb80 (patch) | |
tree | 898a5b9a1cadcc1759f4bdf36e26e0d6122cf24b /usr/src/cmd/zfs/zfs_main.c | |
parent | 6f0673af8764c356a5bd511fc7ca8af579fe2000 (diff) | |
download | illumos-joyent-7ac89354c798225fea6296348415955ccd95fb80.tar.gz |
12877 Port OpenZFS #7780 - Add basic zfs ioc input nvpair validation
12895 zfs_onexit_fd_hold fails to release non-zfs fds
Portions contributed by: Brian Behlendorf <behlendorf1@llnl.gov>
Portions contributed by: George Wilson <george.wilson@delphix.com>
Portions contributed by: Simon Klinkert <simon.klinkert@gmail.com>
Portions contributed by: Jason King <jason.king@joyent.com>
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Reviewed by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed by: Toomas Soome <tsoome@me.com>
Approved by: Dan McDonald <danmcd@joyent.com>
Diffstat (limited to 'usr/src/cmd/zfs/zfs_main.c')
-rw-r--r-- | usr/src/cmd/zfs/zfs_main.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/usr/src/cmd/zfs/zfs_main.c b/usr/src/cmd/zfs/zfs_main.c index 08a0b6bcd1..695da7fcbc 100644 --- a/usr/src/cmd/zfs/zfs_main.c +++ b/usr/src/cmd/zfs/zfs_main.c @@ -7344,7 +7344,7 @@ zfs_do_bookmark(int argc, char **argv) fnvlist_free(nvl); if (ret != 0) { - const char *err_msg; + const char *err_msg = NULL; char errbuf[1024]; (void) snprintf(errbuf, sizeof (errbuf), @@ -7368,11 +7368,13 @@ zfs_do_bookmark(int argc, char **argv) err_msg = "out of space"; break; default: - err_msg = "unknown error"; + (void) zfs_standard_error(g_zfs, ret, errbuf); break; } - (void) fprintf(stderr, "%s: %s\n", errbuf, - dgettext(TEXT_DOMAIN, err_msg)); + if (err_msg != NULL) { + (void) fprintf(stderr, "%s: %s\n", errbuf, + dgettext(TEXT_DOMAIN, err_msg)); + } } return (ret != 0); @@ -7389,7 +7391,7 @@ zfs_do_channel_program(int argc, char **argv) char c; char *progbuf, *filename, *poolname; size_t progsize, progread; - nvlist_t *outnvl; + nvlist_t *outnvl = NULL; uint64_t instrlimit = ZCP_DEFAULT_INSTRLIMIT; uint64_t memlimit = ZCP_DEFAULT_MEMLIMIT; boolean_t sync_flag = B_TRUE, json_output = B_FALSE; @@ -7529,7 +7531,8 @@ zfs_do_channel_program(int argc, char **argv) * falling back on strerror() for an unexpected return code. */ char *errstring = NULL; - if (nvlist_exists(outnvl, ZCP_RET_ERROR)) { + const char *msg = gettext("Channel program execution failed"); + if (outnvl != NULL && nvlist_exists(outnvl, ZCP_RET_ERROR)) { (void) nvlist_lookup_string(outnvl, ZCP_RET_ERROR, &errstring); if (errstring == NULL) @@ -7554,12 +7557,11 @@ zfs_do_channel_program(int argc, char **argv) "programs must be run as root."; break; default: - errstring = strerror(ret); + (void) zfs_standard_error(g_zfs, ret, msg); } } - (void) fprintf(stderr, - gettext("Channel program execution failed:\n%s\n"), - errstring); + if (errstring != NULL) + (void) fprintf(stderr, "%s:\n%s\n", msg, errstring); } else { if (json_output) { (void) nvlist_print_json(stdout, outnvl); |