Skip to content

Commit d16681e

Browse files
authored
test: enable ASan, remove valgrind, fix two bugs (#274)
1 parent 07173a9 commit d16681e

File tree

3 files changed

+19
-12
lines changed

3 files changed

+19
-12
lines changed

Makefile

+13-10
Original file line numberDiff line numberDiff line change
@@ -295,36 +295,39 @@ userland: libc
295295
.PHONY: userland
296296

297297
test: ## run unit tests
298-
test: CFLAGS += -fPIC -g3 -fsanitize=undefined
299-
test: CFLAGS_FOR_TESTS = -g3 -fsanitize=undefined -DENABLE_LOGS_FOR_TESTS -DTEST_ENV -I./test/ -I./src/ -I./src/arch/$(ARCH)/
300-
test: VALGRIND_OPTS = --track-origins=yes --leak-check=yes
298+
test: CFLAGS_WITHOUT_TARGET := $(filter-out --target=x86_64,$(CFLAGS))
299+
test: CFLAGS = $(CFLAGS_WITHOUT_TARGET)
300+
test: CFLAGS += -fPIC -g3 -fsanitize=undefined -fsanitize=address
301+
test: CFLAGS_FOR_TESTS += -g3 -fsanitize=undefined -fsanitize=address
302+
test: CFLAGS_FOR_TESTS += -DENABLE_LOGS_FOR_TESTS -DTEST_ENV
303+
test: CFLAGS_FOR_TESTS += -I./test/ -I./src/ -I./src/arch/$(ARCH)/
301304
test: libc
302305
# libc
303306
mkdir -p $(ARCH_BUILD_DIR)/libc/string
304307
for file in $(LIBC_TEST_FILES); do \
305308
echo ; \
306309
$(CC) -shared $(LIBC_OBJS_DIR)/src/$$file.o -o $(ARCH_BUILD_DIR)/$$file.so ; \
307-
$(CC) -I./test/ test/$$file.c -o $(ARCH_BUILD_DIR)/$$file ; \
310+
$(CC) -g3 -fsanitize=undefined -fsanitize=address -I./test/ test/$$file.c -o $(ARCH_BUILD_DIR)/$$file ; \
308311
LD_PRELOAD=./$(ARCH_BUILD_DIR)/$$file.so ./$(ARCH_BUILD_DIR)/$$file || exit 1 ; \
309312
done
310313
# fs/vfs
311314
$(CC) $(CFLAGS_FOR_TESTS) -I./test/proxies/ -o $(ARCH_BUILD_DIR)/vfs test/fs/vfs.c src/arch/$(ARCH)/fs/vfs.c
312-
valgrind --track-origins=yes --leak-check=yes ./$(ARCH_BUILD_DIR)/vfs
315+
./$(ARCH_BUILD_DIR)/vfs
313316
# fs/tar
314317
$(CC) $(CFLAGS_FOR_TESTS) -o $(ARCH_BUILD_DIR)/tar test/fs/tar.c src/arch/$(ARCH)/fs/tar.c src/arch/$(ARCH)/fs/vfs.c
315-
valgrind $(VALGRIND_OPTS) ./$(ARCH_BUILD_DIR)/tar
318+
./$(ARCH_BUILD_DIR)/tar
316319
# fs/proc
317320
$(CC) $(CFLAGS_FOR_TESTS) -I./test/proxies/ -o $(ARCH_BUILD_DIR)/proc test/fs/proc.c src/arch/$(ARCH)/fs/proc.c src/arch/$(ARCH)/fs/vfs.c
318-
valgrind $(VALGRIND_OPTS) ./$(ARCH_BUILD_DIR)/proc
321+
./$(ARCH_BUILD_DIR)/proc
319322
# fs/sock
320323
$(CC) $(CFLAGS_FOR_TESTS) -o $(ARCH_BUILD_DIR)/sock test/fs/sock.c src/arch/$(ARCH)/fs/sock.c src/arch/$(ARCH)/fs/vfs.c
321-
valgrind $(VALGRIND_OPTS) ./$(ARCH_BUILD_DIR)/sock
324+
./$(ARCH_BUILD_DIR)/sock
322325
# mmu/frame
323326
$(CC) $(CFLAGS_FOR_TESTS) -Wformat=0 -I./test/proxies/ -o $(ARCH_BUILD_DIR)/frame test/mmu/frame.c src/arch/$(ARCH)/mmu/frame.c src/arch/$(ARCH)/core/multiboot.c src/arch/$(ARCH)/mmu/bitmap.c
324-
valgrind $(VALGRIND_OPTS) ./$(ARCH_BUILD_DIR)/frame
327+
./$(ARCH_BUILD_DIR)/frame
325328
# config/inish
326329
$(CC) $(CFLAGS_FOR_TESTS) -I./test/proxies/ -o $(ARCH_BUILD_DIR)/inish test/config/inish.c src/arch/$(ARCH)/config/inish.c
327-
valgrind $(VALGRIND_OPTS) ./$(ARCH_BUILD_DIR)/inish
330+
./$(ARCH_BUILD_DIR)/inish
328331
# mmu/bitmap
329332
$(CC) $(CFLAGS_FOR_TESTS) -o $(ARCH_BUILD_DIR)/bitmap test/mmu/bitmap.c src/arch/$(ARCH)/mmu/bitmap.c
330333
./$(ARCH_BUILD_DIR)/bitmap

src/arch/x86_64/fs/tar.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -245,9 +245,8 @@ dirent_t* tar_readdir(inode_t inode, uint64_t num)
245245
i++;
246246
}
247247

248-
free(name);
249-
250248
if (!found) {
249+
free(name);
251250
free(dir);
252251

253252
return 0;
@@ -259,6 +258,7 @@ dirent_t* tar_readdir(inode_t inode, uint64_t num)
259258
dir->inode = nodes[i];
260259

261260
FS_DEBUG("returning directory entry=%s", dir->name);
261+
free(name);
262262

263263
return dir;
264264
}

src/arch/x86_64/fs/vfs.c

+4
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,10 @@ inode_t vfs_namei_mount(const char* path, inode_t root)
270270
current->driver = root->driver;
271271
current->data = root->data;
272272

273+
if (root->children != NULL) {
274+
free(root->children);
275+
}
276+
273277
free(root);
274278
}
275279

0 commit comments

Comments
 (0)