Skip to content

Commit

Permalink
Merge 06ab08d into b220bbd
Browse files Browse the repository at this point in the history
  • Loading branch information
gocarlos committed May 6, 2020
2 parents b220bbd + 06ab08d commit 319a6f9
Show file tree
Hide file tree
Showing 6 changed files with 96 additions and 20 deletions.
48 changes: 47 additions & 1 deletion CMakeLists.txt
Expand Up @@ -39,6 +39,45 @@ option(COSE_C_INCLUDE_SIGN "Include COSE_SIGN" ON)
option(COSE_C_INCLUDE_SIGN1 "Include COSE_SIGN1" ON)
option(COSE_C_INCLUDE_COUNTERSIGN "Include COSE_COUNTERSIGN" OFF)

set(COSE_C_USE_SANITIZER
"none"
CACHE
STRING
" \
Name of the sanitizer which the user whats to use \
This behaviour is the same is turning on one the sanitizer flags below \
This option is a convenience option \
")
set_property(
CACHE COSE_C_USE_SANITIZER
PROPERTY STRINGS
none
address
memory
leak
undefined)

set(COSE_C_USE_ADDRESS_SANITIZER OFF)
set(COSE_C_USE_MEMORY_SANITIZER OFF)
set(COSE_C_USE_LEAK_SANITIZER OFF)
set(COSE_C_USE_UNDEFINED_SANITIZER OFF)

if(COSE_C_USE_SANITIZER STREQUAL "address")
set(COSE_C_USE_ADDRESS_SANITIZER ON)
endif()

if(COSE_C_USE_SANITIZER STREQUAL "memory")
set(COSE_C_USE_MEMORY_SANITIZER ON)
endif()

if(COSE_C_USE_SANITIZER STREQUAL "leak")
set(COSE_C_USE_LEAK_SANITIZER ON)
endif()

if(COSE_C_USE_SANITIZER STREQUAL "undefined")
set(COSE_C_USE_UNDEFINED_SANITIZER ON)
endif()

# Set the output of the libraries and executables.
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
Expand Down Expand Up @@ -127,7 +166,7 @@ if(COSE_C_BUILD_DOCS)
endif()

###############################################################################
# DEPENDENCIES
# STATIC ANALYSIS
###############################################################################

if(COSE_C_RUN_CLANG_TIDY)
Expand All @@ -140,6 +179,8 @@ if(COSE_C_RUN_CLANG_TIDY)
endif()
endif(COSE_C_RUN_CLANG_TIDY)

include(sanitizers)

###############################################################################
# DEPENDENCIES
###############################################################################
Expand Down Expand Up @@ -271,6 +312,11 @@ message(STATUS "CMAKE_VERSION:...................${CMAKE_VERSION}")
message(STATUS "CMAKE_C_COMPILER:................${CMAKE_C_COMPILER}")
message(STATUS "CMAKE_CXX_COMPILER:..............${CMAKE_CXX_COMPILER}")
message(STATUS "CLANG_TIDY_EXE:..................${CLANG_TIDY_EXE}")
message(STATUS "COSE_C_USE_SANITIZER:............${COSE_C_USE_SANITIZER}")
message(STATUS "COSE_C_USE_ADDRESS_SANITIZER:....${COSE_C_USE_ADDRESS_SANITIZER}")
message(STATUS "COSE_C_USE_MEMORY_SANITIZER:.....${COSE_C_USE_MEMORY_SANITIZER}")
message(STATUS "COSE_C_USE_LEAK_SANITIZER:.......${COSE_C_USE_LEAK_SANITIZER}")
message(STATUS "COSE_C_USE_UNDEFINED_SANITIZER:..${COSE_C_USE_UNDEFINED_SANITIZER}")
message(STATUS "project_cn_cbor_SOURCE_DIR:......${project_cn_cbor_SOURCE_DIR}")
message(STATUS "project_cn_cbor_BINARY_DIR:......${project_cn_cbor_BINARY_DIR}")
message(STATUS "project_mbedtls_SOURCE_DIR:......${project_mbedtls_SOURCE_DIR}")
Expand Down
38 changes: 38 additions & 0 deletions cmake/sanitizers.cmake
@@ -0,0 +1,38 @@
if(COSE_C_USE_ADDRESS_SANITIZER)
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=address -g")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=address -g")
set(CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_LINKER_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=address ")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -fsanitize=address")
endif(COSE_C_USE_ADDRESS_SANITIZER)

if(COSE_C_USE_LEAK_SANITIZER)
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=leak -g")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=leak -g")
set(CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_LINKER_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=leak")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=leak ")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -fsanitize=leak ")
endif(COSE_C_USE_LEAK_SANITIZER)

if(COSE_C_USE_MEMORY_SANITIZER)
# NOTE: memory sanitizer can only run on x86_64 linux https://github.com/google/sanitizers/wiki/MemorySanitizer
# and only works with clang, no gcc support

if(NOT CMAKE_C_COMPILER_ID MATCHES "Clang")
message(FATAL_ERROR "COSE_C_USE_MEMORY_SANITIZER is ON, but this option is only supported with clang compiler")
endif()

set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=memory -g")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=memory -g")
set(CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_LINKER_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=memory ")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=memory")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -fsanitize=memory")
endif(COSE_C_USE_MEMORY_SANITIZER)

if(COSE_C_USE_UNDEFINED_SANITIZER)
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=undefined -g")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=undefined -g")
set(CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_LINKER_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=undefined")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=undefined")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -fsanitize=undefined ")
endif(COSE_C_USE_UNDEFINED_SANITIZER)
16 changes: 6 additions & 10 deletions dumper/dumper.c
Expand Up @@ -235,9 +235,7 @@ void WrapPrintF(FILE* fp, char* format, ...)

void Indent(FILE* fp, int depth)
{
int i;

for (i = 0; i < depth; i++) {
for (int i = 0; i < depth; i++) {
WrapPrintF(fp, " ");
}
}
Expand All @@ -250,10 +248,9 @@ void PrintUsage()

void DumpBytes(FILE* fp, const cn_cbor* cbor)
{
int i;
int fText = true;
bool fText = true;

for (i = 0; i < cbor->length; i++) {
for (int i = 0; i < cbor->length; i++) {
if ((cbor->v.bytes[i] < 32) || (cbor->v.bytes[i] > 126) ||
(cbor->v.bytes[i] == '\'')) {
fText = false;
Expand All @@ -262,13 +259,13 @@ void DumpBytes(FILE* fp, const cn_cbor* cbor)

if (fText && (cbor->length > 0)) {
WrapPrintF(fp, "'");
for (i = 0; i < cbor->length; i++) {
for (int i = 0; i < cbor->length; i++) {
WrapPrintF(fp, "%c", cbor->v.bytes[i]);
}
WrapPrintF(fp, "'");
} else {
WrapPrintF(fp, "h'");
for (i = 0; i < cbor->length; i++) {
for (int i = 0; i < cbor->length; i++) {
WrapPrintF(fp, "%02x", cbor->v.bytes[i]);
}
WrapPrintF(fp, "'");
Expand Down Expand Up @@ -511,7 +508,6 @@ void DumpTree(const cn_cbor* cbor,

int main(int argc, char** argv)
{
int i;
FILE* in = NULL;
FILE* out = NULL;
byte* pb = NULL;
Expand All @@ -521,7 +517,7 @@ int main(int argc, char** argv)
int forXML = false;
FOO* root = NULL;

for (i = 1; i < argc; i++) {
for (int i = 1; i < argc; i++) {
if ((argv[i][0] == '-') || (argv[i][0] == '/')) {
if (strcmp(&argv[i][1], "someoption") == 0) {
} else if (strcmp(&argv[i][1], "xml=yes") == 0) {
Expand Down
5 changes: 2 additions & 3 deletions src/openssl.c
Expand Up @@ -1012,9 +1012,8 @@ bool HMAC_Validate(COSE_MacMessage *pcose,
HMAC_CTX *ctx = NULL;
const EVP_MD *pmd = NULL;
byte *rgbOut = NULL;
unsigned int cbOut;
unsigned int cbOut = 0 ;
bool f = false;
unsigned int i;
#ifdef USE_CBOR_CONTEXT
cn_cbor_context *context = &pcose->m_message.m_allocContext;
#endif
Expand Down Expand Up @@ -1052,7 +1051,7 @@ bool HMAC_Validate(COSE_MacMessage *pcose,
if (cn->length > (int)cbOut) {
return false;
}
for (i = 0; i < (unsigned int)TSize / 8; i++) {
for (unsigned int i = 0; i < (unsigned int)TSize / 8; i++) {
f |= (cn->v.bytes[i] != rgbOut[i]);
}

Expand Down
3 changes: 1 addition & 2 deletions test/json.c
Expand Up @@ -21,12 +21,11 @@ const cn_cbor *ParseString(char *rgch, int ib, int cch)
{
char ch;
int ib2;
cn_cbor *node = NULL;
cn_cbor *parent = NULL;
cn_cbor *root = NULL;

for (; ib < cch; ib++) {
node = NULL;
cn_cbor *node = NULL;
ch = rgch[ib];
switch (ch) {
case '{':
Expand Down
6 changes: 2 additions & 4 deletions test/test.c
Expand Up @@ -1218,11 +1218,9 @@ bool ProcessFile(const cn_cbor* pControl,
return true;
}

void RunFileTest(const char* szFileName)
static void RunFileTest(const char* szFileName)
{
const cn_cbor* pControl = NULL;

pControl = ParseJson(szFileName);
const cn_cbor* pControl = ParseJson(szFileName);

//
// If we are given a file name, then process the file name
Expand Down

0 comments on commit 319a6f9

Please sign in to comment.