diff options
-rw-r--r-- | mgmt_fn.c | 11 | ||||
-rw-r--r-- | trywrite.c | 8 |
2 files changed, 16 insertions, 3 deletions
@@ -17,7 +17,16 @@ get_path(struct iovec *dst, struct mog_mgmt *mgmt, char *buf, bool sdup) char *path; if (sdup) { - path = xmalloc(dst->iov_len + 1); + path = malloc(dst->iov_len + 1); + if (!path) { + struct iovec iov; + + IOV_STR(&iov, "ERROR: out-of-memory\r\n"); + mog_mgmt_writev(mgmt, &iov, 1); + + return NULL; + } + memcpy(path, dst->iov_base, dst->iov_len); } else { path = dst->iov_base; @@ -12,10 +12,14 @@ struct mog_wbuf { static void * wbuf_newv(size_t total, struct iovec *iov, int iovcnt) { - struct mog_wbuf *wbuf = xmalloc(sizeof(struct mog_wbuf) + total); - void *dst = wbuf->buf; + struct mog_wbuf *wbuf = malloc(sizeof(struct mog_wbuf) + total); + void *dst; int i; + if (!wbuf) return MOG_WR_ERROR; + + dst = wbuf->buf; + wbuf->len = total; wbuf->off = 0; |