diff --git a/src/minivhd/minivhd_create.c b/src/minivhd/minivhd_create.c index e1bf916..9e34ece 100644 --- a/src/minivhd/minivhd_create.c +++ b/src/minivhd/minivhd_create.c @@ -98,7 +98,7 @@ static int mvhd_gen_par_loc(MVHDSparseHeader* header, char child_dir[MVHD_MAX_PATH_BYTES] = {0}; size_t child_dir_len; if (strlen(child_path) < sizeof child_dir) { - strcpy_s(child_dir, MVHD_MAX_PATH_BYTES, child_path); + strcpy(child_dir, child_path); } else { *err = MVHD_ERR_PATH_LEN; rv = -1; diff --git a/src/minivhd/minivhd_manage.c b/src/minivhd/minivhd_manage.c index 5942e96..75e0953 100644 --- a/src/minivhd/minivhd_manage.c +++ b/src/minivhd/minivhd_manage.c @@ -171,7 +171,7 @@ static bool mvhd_parent_path_exists(struct MVHDPaths* paths, uint32_t plat_code) if (plat_code == MVHD_DIF_LOC_W2RU && *paths->w2ru_path) { cwk_ret = cwk_path_join((const char*)paths->dir_path, (const char*)paths->w2ru_path, paths->joined_path, sizeof paths->joined_path); } else if (plat_code == MVHD_DIF_LOC_W2KU && *paths->w2ku_path) { - strncpy_s(paths->joined_path, sizeof paths->joined_path, (const char*)paths->w2ku_path, sizeof paths->joined_path); + memcpy(paths->joined_path, paths->w2ku_path, (sizeof paths->joined_path) - 1); cwk_ret = 0; } else if (plat_code == 0) { cwk_ret = cwk_path_join((const char*)paths->dir_path, (const char*)paths->file_name, paths->joined_path, sizeof paths->joined_path); @@ -182,7 +182,8 @@ static bool mvhd_parent_path_exists(struct MVHDPaths* paths, uint32_t plat_code) f = mvhd_fopen((const char*)paths->joined_path, "rb", &ferr); if (f != NULL) { /* We found a file at the requested path! */ - strncpy_s(tmp_open_path, sizeof tmp_open_path, paths->joined_path, sizeof tmp_open_path); + memcpy(tmp_open_path, paths->joined_path, (sizeof paths->joined_path) - 1); + tmp_open_path[sizeof tmp_open_path - 1] = '\0'; fclose(f); return true; } else { @@ -225,7 +226,7 @@ static char* mvhd_get_diff_parent_path(MVHDMeta* vhdm, int* err) { *err = MVHD_ERR_PATH_LEN; goto paths_cleanup; } - strncpy_s(paths->dir_path, sizeof paths->dir_path, vhdm->filename, dirlen); + memcpy(paths->dir_path, vhdm->filename, dirlen); /* Get the filename field from the sparse header. */ utf_outlen = (int)sizeof paths->file_name; utf_inlen = (int)sizeof vhdm->sparse.par_utf16_name; @@ -373,7 +374,8 @@ MVHDMeta* mvhd_open(const char* path, bool readonly, int* err) { *err = MVHD_ERR_PATH_LEN; goto cleanup_vhdm; } - strcpy_s(vhdm->filename, sizeof vhdm->filename, path); + //This is safe, as we've just checked for potential overflow above + strcpy(vhdm->filename, path); vhdm->f = readonly ? mvhd_fopen((const char*)vhdm->filename, "rb", err) : mvhd_fopen((const char*)vhdm->filename, "rb+", err); if (vhdm->f == NULL) { /* note, mvhd_fopen sets err for us */ diff --git a/src/wx-config.c b/src/wx-config.c index a35f8da..2421d67 100644 --- a/src/wx-config.c +++ b/src/wx-config.c @@ -20,8 +20,8 @@ #include "video.h" #include "vid_voodoo.h" -#include "MiniVHD/minivhd.h" -#include "MiniVHD/minivhd_util.h" +#include "minivhd/minivhd.h" +#include "minivhd/minivhd_util.h" //#define MAX_CYLINDERS ((((1 << 28)-1) / 16) / 63) #define MAX_CYLINDERS 265264 /*Award 430VX won't POST with a larger drive*/