Mercurial > illumos > illumos-gate
changeset 10260:2896314db48b
6865459 cctime in ndmpd returns pointer to a buffer on its stack
6859840 ndmp backup fails : ndmpd crash
author | Reza Sabdar <Reza.Sabdar@Sun.COM> |
---|---|
date | Wed, 05 Aug 2009 11:20:52 -0700 |
parents | 139695f850ed |
children | f3fec2334981 |
files | usr/src/cmd/ndmpd/ndmp/ndmpd_util.c usr/src/cmd/ndmpd/tlm/tlm_backup_reader.c |
diffstat | 2 files changed, 9 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/usr/src/cmd/ndmpd/ndmp/ndmpd_util.c Wed Aug 05 11:12:45 2009 +0800 +++ b/usr/src/cmd/ndmpd/ndmp/ndmpd_util.c Wed Aug 05 11:20:52 2009 -0700 @@ -2182,7 +2182,7 @@ cctime(time_t *t) { char *bp, *cp; - char tbuf[BUFSIZ]; + static char tbuf[BUFSIZ]; if (!t) return (""); @@ -2190,7 +2190,9 @@ if (*t == (time_t)0) return ("the epoch"); - bp = ctime_r(t, tbuf, BUFSIZ); + if ((bp = ctime_r(t, tbuf, BUFSIZ)) == NULL) + return (""); + cp = strchr(bp, '\n'); if (cp) *cp = '\0';
--- a/usr/src/cmd/ndmpd/tlm/tlm_backup_reader.c Wed Aug 05 11:12:45 2009 +0800 +++ b/usr/src/cmd/ndmpd/tlm/tlm_backup_reader.c Wed Aug 05 11:20:52 2009 -0700 @@ -72,6 +72,7 @@ tlm_cmd_t *); extern libzfs_handle_t *zlibh; +extern mutex_t zlib_mtx; /* @@ -1262,8 +1263,10 @@ (void) strlcpy(mhp->nh_magic, ZFS_META_MAGIC, sizeof (mhp->nh_magic)); (void) strlcpy(mhp->nh_dataset, dataset, sizeof (mhp->nh_dataset)); + (void) mutex_lock(&zlib_mtx); if ((mhp->nh_handle = zfs_open(zlibh, dataset, ZFS_TYPE_DATASET)) == NULL) { + (void) mutex_unlock(&zlib_mtx); free(mhp); return (ZPROP_INVAL); } @@ -1283,6 +1286,7 @@ nvlist_lookup_string(ulist, ZPROP_VALUE, &sval) != 0 || nvlist_lookup_string(ulist, ZPROP_SOURCE, &ssrc) != 0) { zfs_close(mhp->nh_handle); + (void) mutex_unlock(&zlib_mtx); free(mhp); return (-1); } @@ -1296,6 +1300,7 @@ } zfs_close(mhp->nh_handle); + (void) mutex_unlock(&zlib_mtx); if ((wbuf = get_write_buffer(size, &actual_size, TRUE, lcmd)) != NULL) {