[common] numerious bad usage bug fixes

This commit is contained in:
Geoffrey McRae 2020-01-10 15:23:49 +11:00
parent 76fa390e3d
commit 22f04a926f
8 changed files with 32 additions and 14 deletions

View File

@ -1 +1 @@
B1-66-g0aa8711796+1
B1-67-g1ef406bbaf+1

View File

@ -32,4 +32,5 @@ struct IVSHMEM
void ivshmemOptionsInit();
bool ivshmemOpen(struct IVSHMEM * dev);
bool ivshmemOpenDev(struct IVSHMEM * dev, const char * shmDev);
void ivshmemClose(struct IVSHMEM * dev);

View File

@ -18,4 +18,5 @@ Place, Suite 330, Boston, MA 02111-1307 USA
*/
// sprintf but with buffer allocation
int alloc_sprintf(char ** str, const char * format, ...);
int alloc_sprintf(char ** str, const char * format, ...)
__attribute__ ((format (printf, 2, 3)));

View File

@ -600,7 +600,7 @@ void option_print()
maxLen = alloc_sprintf(
&line,
"%-*s | Short | %-*s | Description",
strlen(state.groups[g].module) + state.groups[g].pad + 1,
(int)(strlen(state.groups[g].module) + state.groups[g].pad + 1),
"Long",
valueLen,
"Value"

View File

@ -17,4 +17,7 @@ if(ENABLE_BACKTRACE)
target_link_libraries(lg_common_platform_code bfd)
endif()
target_link_libraries(lg_common_platform_code pthread)
target_link_libraries(lg_common_platform_code
lg_common
pthread
)

View File

@ -42,7 +42,6 @@ static int uioOpenFile(const char * shmDevice, const char * file)
{
char * path;
alloc_sprintf(&path, "/sys/class/uio/%s/%s", shmDevice, file);
int fd = open(path, O_RDONLY);
if (fd < 0)
{
@ -161,10 +160,14 @@ void ivshmemOptionsInit()
}
bool ivshmemOpen(struct IVSHMEM * dev)
{
return ivshmemOpenDev(dev, option_get_string("app", "shmFile"));
}
bool ivshmemOpenDev(struct IVSHMEM * dev, const char * shmDevice)
{
assert(dev);
const char * shmDevice = option_get_string("app", "shmFile");
unsigned int devSize;
int devFD;
@ -257,5 +260,7 @@ void ivshmemClose(struct IVSHMEM * dev)
close(info->fd);
free(info);
dev->mem = NULL;
dev->size = 0;
dev->opaque = NULL;
}

View File

@ -15,5 +15,6 @@ add_library(lg_common_platform_code STATIC
)
target_link_libraries(lg_common_platform_code
lg_common
setupapi
)

View File

@ -21,26 +21,24 @@ Place, Suite 330, Boston, MA 02111-1307 USA
#include <stdlib.h>
#include <stdarg.h>
int alloc_sprintf(char ** str, const char * format, ...)
static int valloc_sprintf(char ** str, const char * format, va_list ap)
{
if (!str)
return -1;
*str = NULL;
va_list ap;
va_start(ap, format);
int len = vsnprintf(NULL, 0, format, ap);
va_end(ap);
va_list ap1;
va_copy(ap1, ap);
int len = vsnprintf(NULL, 0, format, ap1);
va_end(ap1);
if (len < 0)
return len;
*str = malloc(len+1);
va_start(ap, format);
int ret = vsnprintf(*str, len + 1, format, ap);
va_end(ap);
if (ret < 0)
{
free(*str);
@ -50,3 +48,12 @@ int alloc_sprintf(char ** str, const char * format, ...)
return ret;
}
int alloc_sprintf(char ** str, const char * format, ...)
{
va_list ap;
va_start(ap, format);
int ret = valloc_sprintf(str, format, ap);
va_end(ap);
return ret;
}