Merge pull request #163 from jsalling/feature/move-makefile-output

Move Makefile output to build/ directory in Fixture (Thanks jsalling!)
This commit is contained in:
Mark VanderVoord
2016-02-18 06:50:15 -05:00
4 changed files with 53 additions and 6 deletions

View File

@ -166,7 +166,7 @@ static unsigned int heap_index;
typedef struct GuardBytes typedef struct GuardBytes
{ {
size_t size; size_t size;
char guard_space[4]; size_t guard_space;
} Guard; } Guard;
@ -202,6 +202,7 @@ void* unity_malloc(size_t size)
if (guard == NULL) return NULL; if (guard == NULL) return NULL;
malloc_count++; malloc_count++;
guard->size = size; guard->size = size;
guard->guard_space = 0;
mem = (char*)&(guard[1]); mem = (char*)&(guard[1]);
memcpy(&mem[size], end, sizeof(end)); memcpy(&mem[size], end, sizeof(end));
@ -214,7 +215,7 @@ static int isOverrun(void* mem)
char* memAsChar = (char*)mem; char* memAsChar = (char*)mem;
guard--; guard--;
return strcmp(&memAsChar[guard->size], end) != 0; return guard->guard_space != 0 || strcmp(&memAsChar[guard->size], end) != 0;
} }
static void release_memory(void* mem) static void release_memory(void* mem)

View File

@ -12,24 +12,27 @@ SRC = ../src/unity_fixture.c \
main/AllTests.c main/AllTests.c
INC_DIR = -I../src -I../../../src/ INC_DIR = -I../src -I../../../src/
TARGET = fixture_tests.exe TARGET = ../build/fixture_tests.exe
all: default noStdlibMalloc 32bits all: default noStdlibMalloc 32bits
default: default: ../build/
$(CC) $(CFLAGS) $(DEFINES) $(SRC) $(INC_DIR) -o $(TARGET) $(CC) $(CFLAGS) $(DEFINES) $(SRC) $(INC_DIR) -o $(TARGET)
@ echo "default build" @ echo "default build"
./$(TARGET) ./$(TARGET)
32bits: 32bits: ../build/
$(CC) $(CFLAGS) $(DEFINES) $(SRC) $(INC_DIR) -o $(TARGET) -m32 $(CC) $(CFLAGS) $(DEFINES) $(SRC) $(INC_DIR) -o $(TARGET) -m32
@ echo "32bits build" @ echo "32bits build"
./$(TARGET) ./$(TARGET)
noStdlibMalloc: noStdlibMalloc: ../build/
$(CC) $(CFLAGS) $(DEFINES) $(SRC) $(INC_DIR) -o $(TARGET) -D UNITY_EXCLUDE_STDLIB_MALLOC $(CC) $(CFLAGS) $(DEFINES) $(SRC) $(INC_DIR) -o $(TARGET) -D UNITY_EXCLUDE_STDLIB_MALLOC
@ echo "build with noStdlibMalloc" @ echo "build with noStdlibMalloc"
./$(TARGET) ./$(TARGET)
clangEverything: clangEverything:
$(CC) $(CFLAGS) $(DEFINES) $(SRC) $(INC_DIR) -o $(TARGET) -m64 -Weverything # || true #prevents make from failing $(CC) $(CFLAGS) $(DEFINES) $(SRC) $(INC_DIR) -o $(TARGET) -m64 -Weverything # || true #prevents make from failing
../build :
mkdir -p ../build

View File

@ -381,6 +381,47 @@ TEST(LeakDetection, BufferOverrunFoundDuringRealloc)
#endif #endif
} }
TEST(LeakDetection, BufferGuardWriteFoundDuringFree)
{
#ifndef USING_OUTPUT_SPY
UNITY_PRINT_EOL();
TEST_IGNORE();
#else
void* m = malloc(10);
TEST_ASSERT_NOT_NULL(m);
char* s = (char*)m;
s[-1] = (char)0x00; // Will not detect 0
s[-2] = (char)0x01;
UnityOutputCharSpy_Enable(1);
EXPECT_ABORT_BEGIN
free(m);
EXPECT_ABORT_END
UnityOutputCharSpy_Enable(0);
Unity.CurrentTestFailed = 0;
CHECK(strstr(UnityOutputCharSpy_Get(), "Buffer overrun detected during free()"));
#endif
}
TEST(LeakDetection, BufferGuardWriteFoundDuringRealloc)
{
#ifndef USING_OUTPUT_SPY
UNITY_PRINT_EOL();
TEST_IGNORE();
#else
void* m = malloc(10);
TEST_ASSERT_NOT_NULL(m);
char* s = (char*)m;
s[-1] = (char)0x0A;
UnityOutputCharSpy_Enable(1);
EXPECT_ABORT_BEGIN
m = realloc(m, 100);
EXPECT_ABORT_END
UnityOutputCharSpy_Enable(0);
Unity.CurrentTestFailed = 0;
CHECK(strstr(UnityOutputCharSpy_Get(), "Buffer overrun detected during realloc()"));
#endif
}
TEST_GROUP(InternalMalloc); TEST_GROUP(InternalMalloc);
TEST_SETUP(InternalMalloc) { } TEST_SETUP(InternalMalloc) { }

View File

@ -40,6 +40,8 @@ TEST_GROUP_RUNNER(LeakDetection)
RUN_TEST_CASE(LeakDetection, DetectsLeak); RUN_TEST_CASE(LeakDetection, DetectsLeak);
RUN_TEST_CASE(LeakDetection, BufferOverrunFoundDuringFree); RUN_TEST_CASE(LeakDetection, BufferOverrunFoundDuringFree);
RUN_TEST_CASE(LeakDetection, BufferOverrunFoundDuringRealloc); RUN_TEST_CASE(LeakDetection, BufferOverrunFoundDuringRealloc);
RUN_TEST_CASE(LeakDetection, BufferGuardWriteFoundDuringFree);
RUN_TEST_CASE(LeakDetection, BufferGuardWriteFoundDuringRealloc);
} }
TEST_GROUP_RUNNER(InternalMalloc) TEST_GROUP_RUNNER(InternalMalloc)