From e54a74440e891f86934369551075090cc2aaee74 Mon Sep 17 00:00:00 2001 From: openeuler-iSula Date: Sun, 29 Dec 2019 17:00:31 +0800 Subject: [PATCH] isulad: fix code bug Signed-off-by: openeuler-iSula --- docs/build_guide.md | 19 +++++++++++++++++++ src/cutils/utils.c | 6 +++++- .../execution/execute/execution_stream.c | 4 ++++ 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 docs/build_guide.md diff --git a/docs/build_guide.md b/docs/build_guide.md new file mode 100644 index 0000000..cb4f380 --- /dev/null +++ b/docs/build_guide.md @@ -0,0 +1,19 @@ +## Install Dependencies + +```sh +$ sudo yum install -y cmake gcc-c++ systemd-devel yajl-devel libcurl libcurl-devel clibcni clibcni-devel protobuf-devel grpc-devel grpc-plugins http-parser-devel libwebsockets-devel libevhtp-devel libevent-devel lcr lxc-devel +``` + + + +## Build steps: + +Run the cmds under the iSulad source directory +```sh +$ sudo mkdir build +$ sudo cd build +$ sudo cmake .. +$ sudo make +$ sudo make install +``` + diff --git a/src/cutils/utils.c b/src/cutils/utils.c index d62ca89..d2c50bc 100644 --- a/src/cutils/utils.c +++ b/src/cutils/utils.c @@ -514,9 +514,13 @@ static void set_stderr_buf(char **stderr_buf, const char *format, ...) va_list argp; va_start(argp, format); - (void)vsprintf(errbuf, format, argp); + int nret = vsnprintf(errbuf, BUFSIZ, format, argp); va_end(argp); + if (nret < 0 || nret >= BUFSIZ) { + return; + } + *stderr_buf = json_marshal_string(errbuf, strlen(errbuf), NULL, &jerr); if (*stderr_buf == NULL) { *stderr_buf = util_strdup_s(errbuf); diff --git a/src/services/execution/execute/execution_stream.c b/src/services/execution/execute/execution_stream.c index 3ad79fc..80ebf20 100644 --- a/src/services/execution/execute/execution_stream.c +++ b/src/services/execution/execute/execution_stream.c @@ -1190,6 +1190,10 @@ static ssize_t extract_stream_to_io_read(void *content, void *buf, size_t buf_le DEBUG("Client may exited"); return -1; } + if (copy.data_len > buf_len) { + free(copy.data); + return -1; + } (void)memcpy(buf, copy.data, copy.data_len); free(copy.data); return (ssize_t)(copy.data_len); -- Gitee