From 2c651d3ed5e7d7d78338ce542e66ee9fb36a9275 Mon Sep 17 00:00:00 2001 From: zhongtao Date: Sun, 14 May 2023 14:25:22 +0800 Subject: [PATCH 4/9] ensure isulad_io not NULL before close fd Signed-off-by: zhongtao --- src/cmd/isulad-shim/process.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/cmd/isulad-shim/process.c b/src/cmd/isulad-shim/process.c index 7716c288..6ad50c53 100644 --- a/src/cmd/isulad-shim/process.c +++ b/src/cmd/isulad-shim/process.c @@ -194,6 +194,10 @@ static int stdin_cb(int fd, uint32_t events, void *cbdata, struct epoll_descr *d } else { fd_to = &(p->shim_io->in); } + + if (fd_to == NULL || *fd_to == -1) { + return EPOLL_LOOP_HANDLE_CONTINUE; + } w_count = write_nointr_in_total(*fd_to, p->buf, r_count); if (w_count < 0) { /* When any error occurs, set the write fd -1 */ @@ -797,21 +801,21 @@ static int init_isulad_stdio(process_t *p) return SHIM_OK; failure: if (p->isulad_io != NULL) { + if (p->isulad_io->in > 0) { + close(p->isulad_io->in); + } + if (p->isulad_io->out > 0) { + close(p->isulad_io->out); + } + if (p->isulad_io->err > 0) { + close(p->isulad_io->err); + } + if (p->isulad_io->resize > 0) { + close(p->isulad_io->resize); + } free(p->isulad_io); p->isulad_io = NULL; } - if (p->isulad_io->in > 0) { - close(p->isulad_io->in); - } - if (p->isulad_io->out > 0) { - close(p->isulad_io->out); - } - if (p->isulad_io->err > 0) { - close(p->isulad_io->err); - } - if (p->isulad_io->resize > 0) { - close(p->isulad_io->resize); - } return SHIM_ERR; } -- 2.40.1