diff --git a/CompilerDependencies.h b/CompilerDependencies.h index b6c0577..c89b125 100644 --- a/CompilerDependencies.h +++ b/CompilerDependencies.h @@ -146,7 +146,7 @@ #ifndef NOT_REFERENCED # define NOT_REFERENCED(x) (x = x) #endif -#ifdef _POSIX_ +#ifdef IS_POSIX typedef int SOCKET; #endif // #ifdef TPM_POSIX diff --git a/GpMacros.h b/GpMacros.h index ff4251d..3494b55 100644 --- a/GpMacros.h +++ b/GpMacros.h @@ -84,7 +84,7 @@ # define TEST_HASH(alg) #endif // SELF_TEST /* 5.11.3 For Failures */ -#if defined _POSIX_ +#if defined IS_POSIX # define FUNCTION_NAME 0 #else # define FUNCTION_NAME __FUNCTION__ diff --git a/TPMCmds.c b/TPMCmds.c index 173dcf7..0805575 100644 --- a/TPMCmds.c +++ b/TPMCmds.c @@ -110,7 +110,12 @@ Usage( /* This is the main entry point for the simulator. */ /* It registers the interface and starts listening for clients */ int -main( +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +main +#else +tpm_server_main +#endif /* FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION */ +( int argc, char *argv[] ) diff --git a/TcpServerPosix.c b/TcpServerPosix.c index be48607..8dfcbea 100644 --- a/TcpServerPosix.c +++ b/TcpServerPosix.c @@ -721,9 +721,11 @@ TpmServer( memcpy(&CommandResponseSizes.largestResponse, &OutputBuffer[6], sizeof(UINT32)); } +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION ok = WriteVarBytes(s, (char*) OutBuffer.Buffer, OutBuffer.BufferSize); +#endif /* FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION */ if(!ok) return TRUE; break; @@ -737,9 +739,11 @@ TpmServer( printf("Unsupported client version (0).\n"); return TRUE; } +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION ok &= WriteUINT32(s, ServerVersion); ok &= WriteUINT32(s, tpmInRawMode | tpmPlatformAvailable | tpmSupportsPP); +#endif /* FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION */ break; case TPM_SET_ALTERNATIVE_RESULT: @@ -760,7 +764,9 @@ TpmServer( printf("Unrecognized TPM interface command %08x\n", Command); return TRUE; } +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION ok = WriteUINT32(s,0); +#endif /* FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION */ if(!ok) return TRUE; } diff --git a/makefile b/makefile index cc3e410..c10ba5a 100644 --- a/makefile +++ b/makefile @@ -40,16 +40,19 @@ CC = /usr/bin/gcc +CC = clang +CXX = clang++ -CCFLAGS = -Wall \ +CCFLAGS = $(CFLAGS) -Wall \ -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \ - -Werror -Wsign-compare \ + -Wsign-compare \ -c -ggdb -O0 \ -DTPM_POSIX \ - -D_POSIX_ \ + -DIS_POSIX \ -DTPM_NUVOTON \ -I../utils \ - -I. + -I. \ + -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION LNFLAGS = -ggdb \ -DTPM_POSIX \ @@ -57,7 +60,8 @@ LNFLAGS = -ggdb \ -lcrypto \ -lpthread \ -lrt \ - -I. + -I. \ + -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION $(LIB_FUZZING_ENGINE) all: tpm_server @@ -75,9 +79,14 @@ TcpServerPosix.o : $(HEADERS) tpm_server: $(OBJFILES) $(CC) $(OBJFILES) $(LNFLAGS) -o tpm_server +fuzz_tpm_server: $(OBJFILES) fuzzer.o + $(CXX) $(CXXFLAGS) fuzzer.o $(OBJFILES) $(LNFLAGS) -o fuzz_tpm_server + clean: - rm -f *.o tpm_server *~ + rm -f *.o tpm_server fuzz_tpm_server *~ %.o: %.c $(CC) $(CCFLAGS) $< -o $@ +%.o: %.cc + $(CXX) $(CXXFLAGS) $(CCFLAGS) $(LIB_FUZZING_ENGINE) $< -o $@