From 8fe8eecbb42646495cbddba34c55c16c06011587 Mon Sep 17 00:00:00 2001 From: Oscar Spencer Date: Sat, 22 Apr 2023 22:38:09 +0200 Subject: [PATCH] fix: Return correct length of string in fd_prestat_get (#202) --- src/uvwasi.c | 4 ++-- test/test-fd-prestat-dir-name.c | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/uvwasi.c b/src/uvwasi.c index 38a6817..9e7fc76 100644 --- a/src/uvwasi.c +++ b/src/uvwasi.c @@ -1122,7 +1122,7 @@ uvwasi_errno_t uvwasi_fd_prestat_get(uvwasi_t* uvwasi, } buf->pr_type = UVWASI_PREOPENTYPE_DIR; - buf->u.dir.pr_name_len = strlen(wrap->path) + 1; + buf->u.dir.pr_name_len = strlen(wrap->path); err = UVWASI_ESUCCESS; exit: uv_mutex_unlock(&wrap->mutex); @@ -1156,7 +1156,7 @@ uvwasi_errno_t uvwasi_fd_prestat_dir_name(uvwasi_t* uvwasi, goto exit; } - size = strlen(wrap->path) + 1; + size = strlen(wrap->path); if (size > (size_t) path_len) { err = UVWASI_ENOBUFS; goto exit; diff --git a/test/test-fd-prestat-dir-name.c b/test/test-fd-prestat-dir-name.c index 1778bb8..d9711a1 100644 --- a/test/test-fd-prestat-dir-name.c +++ b/test/test-fd-prestat-dir-name.c @@ -34,16 +34,17 @@ int main(void) { assert(err == 0); assert(prestat.pr_type == UVWASI_PREOPENTYPE_DIR); assert(prestat.u.dir.pr_name_len == - strlen(init_options.preopens[0].mapped_path) + 1); + strlen(init_options.preopens[0].mapped_path)); /* Verify uvwasi_fd_prestat_dir_name(). */ - prestat_buf_size = prestat.u.dir.pr_name_len + 1; - prestat_buf = malloc(prestat_buf_size); + prestat_buf_size = prestat.u.dir.pr_name_len; + prestat_buf = malloc(prestat_buf_size + 1); assert(prestat_buf != NULL); err = uvwasi_fd_prestat_dir_name(&uvwasi, 3, prestat_buf, prestat_buf_size); + prestat_buf[prestat_buf_size] = '\0'; assert(err == 0); assert(strcmp(prestat_buf, init_options.preopens[0].mapped_path) == 0); free(prestat_buf);