diff --git a/.gitignore b/.gitignore index 49efa270a4..dfb1997d18 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ build/* *.DIR doc/html ceed.pc +config.mk # Mac specific .DS_Store diff --git a/Makefile b/Makefile index 8dfcafbe15..5838f0934d 100644 --- a/Makefile +++ b/Makefile @@ -29,6 +29,7 @@ ifeq (,$(filter-out undefined default,$(origin LINK))) LINK = $(CC) endif NVCC ?= $(CUDA_DIR)/bin/nvcc +NVCC_CXX ?= $(CXX) # ASAN must be left empty if you don't want to use it ASAN ?= @@ -544,11 +545,14 @@ print-% : configure : @: > config.mk @echo "CC = $(CC)" | tee -a config.mk + @echo "CXX = $(CXX)" | tee -a config.mk @echo "FC = $(FC)" | tee -a config.mk @echo "NVCC = $(NVCC)" | tee -a config.mk + @echo "NVCC_CXX = $(NVCC_CXX)" | tee -a config.mk @echo "CFLAGS = $(CFLAGS)" | tee -a config.mk @echo "CPPFLAGS = $(CPPFLAGS)" | tee -a config.mk @echo "FFLAGS = $(FFLAGS)" | tee -a config.mk + @echo "NVCCFLAGS = $(NVCCFLAGS)" | tee -a config.mk @echo "LDFLAGS = $(LDFLAGS)" | tee -a config.mk @echo "LDLIBS = $(LDLIBS)" | tee -a config.mk @echo "MAGMA_DIR = $(MAGMA_DIR)" | tee -a config.mk diff --git a/backends/occa/ceed-occa-okl.c b/backends/occa/ceed-occa-okl.c index 0403a82ed9..a71984ee93 100644 --- a/backends/occa/ceed-occa-okl.c +++ b/backends/occa/ceed-occa-okl.c @@ -25,15 +25,13 @@ int CeedOklPath_Occa(const Ceed ceed, const char *c_src_file, int ierr; Ceed_Occa *ceed_data; ierr = CeedGetData(ceed, (void *)&ceed_data); CeedChk(ierr); - ierr = CeedCalloc(OCCA_PATH_MAX,okl_file); CeedChk(ierr); - memcpy(*okl_file,c_src_file,strlen(c_src_file)); + ierr = CeedCalloc(OCCA_PATH_MAX+1, okl_file); CeedChk(ierr); char *okl = *okl_file; - const char *last_dot = strrchr(okl,'.'); + strncpy(okl, c_src_file, OCCA_PATH_MAX); + char *last_dot = strrchr(okl, '.'); if (!last_dot) return CeedError(ceed, 1, "Cannot find file's extension!"); - const size_t okl_path_len = last_dot - okl; - // TODO: Update strncpy to avoid memory corruption - strncpy(&okl[okl_path_len],".okl",5); + strncpy(last_dot, ".okl", OCCA_PATH_MAX - (last_dot - okl)); dbg("[CeedOklPath] Current OKL is %s",okl); // Test if we can get file's status, if (stat(okl, &buf)!=0) { // if not revert to occa cache diff --git a/interface/ceed-qfunction.c b/interface/ceed-qfunction.c index 851baa3518..6f7eb8a410 100644 --- a/interface/ceed-qfunction.c +++ b/interface/ceed-qfunction.c @@ -83,8 +83,9 @@ int CeedQFunctionCreateInterior(Ceed ceed, CeedInt vlength, (*qf)->vlength = vlength; (*qf)->identity = 0; (*qf)->function = f; - ierr = CeedCalloc(strlen(source)+1, &source_copy); CeedChk(ierr); - strncpy(source_copy, source, strlen(source)); + size_t slen = strlen(source) + 1; + ierr = CeedMalloc(slen, &source_copy); CeedChk(ierr); + memcpy(source_copy, source, slen); (*qf)->sourcepath = source_copy; ierr = CeedCalloc(16, &(*qf)->inputfields); CeedChk(ierr); ierr = CeedCalloc(16, &(*qf)->outputfields); CeedChk(ierr); diff --git a/interface/ceed.c b/interface/ceed.c index 0ba0f0ad34..5236150dd0 100644 --- a/interface/ceed.c +++ b/interface/ceed.c @@ -519,11 +519,9 @@ int CeedSetObjectDelegate(Ceed ceed, Ceed delegate, const char *objname) { // Set object delegate ceed->objdelegates[count].delegate = delegate; - ierr = CeedCalloc(strlen(objname)+1, &ceed->objdelegates[count].objname); - CeedChk(ierr); - CeedInt len = strlen(ceed->objdelegates[count].objname); - strncpy(ceed->objdelegates[count].objname, objname, len); - ceed->objdelegates[count].objname[len-1] = 0; + size_t slen = strlen(objname) + 1; + ierr = CeedMalloc(slen, &ceed->objdelegates[count].objname); CeedChk(ierr); + memcpy(ceed->objdelegates[count].objname, objname, slen); // Set delegate parent delegate->parent = ceed;