From 71b9faff4f000eb35504d898c5fda8bf5b341d78 Mon Sep 17 00:00:00 2001 From: Hugues Delorme Date: Wed, 18 Mar 2015 16:27:43 +0100 Subject: [PATCH] gmio_stl: fix sprintf() format issue --- CMakeLists.txt | 1 + src/gmio_stl/stla_write.c | 16 ++++++++-------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b50c67c..9441ca7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -82,6 +82,7 @@ if(MSVC) # Set warning level to /W4 string(REGEX REPLACE "/W[0-9]" "/W4" CMAKE_C_FLAGS ${CMAKE_C_FLAGS}) + #set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /analyze") # Treat warnings as errors set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /WX") diff --git a/src/gmio_stl/stla_write.c b/src/gmio_stl/stla_write.c index 50c4f43..42c6f06 100644 --- a/src/gmio_stl/stla_write.c +++ b/src/gmio_stl/stla_write.c @@ -93,7 +93,7 @@ static char* gmio_write_stdio_format(char* buffer, uint8_t prec) buffer[0] = '%'; buffer[1] = '.'; - prec_len = sprintf(buffer + 2, "%i", prec); + prec_len = sprintf(buffer + 2, "%u", prec); buffer[2 + prec_len] = 'E'; return buffer + 3 + prec_len; } @@ -131,14 +131,14 @@ int gmio_stla_write(const gmio_stl_mesh_t* mesh, int error = GMIO_NO_ERROR; /* Check validity of input parameters */ - gmio_check_transfer(&error, trsf); - gmio_stl_check_mesh(&error, mesh); - if (float32_prec == 0 || float32_prec > 9) - error = GMIO_STLA_WRITE_INVALID_REAL32_PREC_ERROR; - if (trsf->buffer_size < GMIO_STLA_FACET_SIZE_P2) - error = GMIO_INVALID_BUFFER_SIZE_ERROR; - if (gmio_error(error)) + if (!gmio_check_transfer(&error, trsf)) return error; + if (!gmio_stl_check_mesh(&error, mesh)) + return error; + if (float32_prec == 0 || float32_prec > 9) + return GMIO_STLA_WRITE_INVALID_REAL32_PREC_ERROR; + if (trsf->buffer_size < GMIO_STLA_FACET_SIZE_P2) + return GMIO_INVALID_BUFFER_SIZE_ERROR; { /* Create XYZ coords format string (for normal and vertex coords) */ char* coords_format_iterator = coords_format;