diff --git a/libftl/ftl_private.h b/libftl/ftl_private.h index 62e5785..7df3d13 100644 --- a/libftl/ftl_private.h +++ b/libftl/ftl_private.h @@ -131,6 +131,8 @@ #define strcpy_s(dst, dstsz, src) strcpy(dst, src) #define _strdup(src) strdup(src) #define sscanf_s sscanf +#define memcpy_s(dst, dstsz, src, cnt) memcpy(dst, src, cnt) +#define vsnprintf_s(buf, bufsz, cnt, fmt, ...) vsnprintf(buf, cnt, fmt, __VA_ARGS__) #endif typedef enum { diff --git a/libftl/handshake.c b/libftl/handshake.c index cb4c70d..3e030bc 100644 --- a/libftl/handshake.c +++ b/libftl/handshake.c @@ -63,7 +63,11 @@ ftl_status_t _init_control_connection(ftl_stream_configuration_private_t *ftl) { return retval; } + // Suppressing getaddrinfo warning here, Windows prefers GetAddrInfoW,etc. but this doesn't exist on Linux + #pragma warning(push) + #pragma warning(disable:38026) err = getaddrinfo(ftl->ingest_hostname, ingest_port_str, &hints, &resolved_names); + #pragma warning(pop) if (err != 0) { FTL_LOG(ftl, FTL_LOG_ERROR, "getaddrinfo failed to look up ingest address %s.", ftl->ingest_hostname); FTL_LOG(ftl, FTL_LOG_ERROR, "gai error was: %s", gai_strerror(err)); @@ -366,7 +370,7 @@ static ftl_response_code_t _ftl_send_command(ftl_stream_configuration_private_t memset(buf, 0, buflen); - len = vsnprintf(buf, buflen, format, valist); + len = vsnprintf_s(buf, buflen, MAX_INGEST_COMMAND_LEN, format, valist); va_end(valist); diff --git a/libftl/ingest.c b/libftl/ingest.c index f0a1230..7b4b2ff 100644 --- a/libftl/ingest.c +++ b/libftl/ingest.c @@ -36,7 +36,12 @@ static int _ping_server(const char *hostname, int port) { snprintf(port_str, 10, "%d", port); + // Suppressing getaddrinfo warning here, Windows prefers GetAddrInfoW,etc. but this doesn't exist on Linux + #pragma warning(push) + #pragma warning(disable:38026) err = getaddrinfo(hostname, port_str, &hints, &resolved_names); + #pragma warning(pop) + if (err != 0) { return FTL_DNS_FAILURE; } diff --git a/libftl/logging.c b/libftl/logging.c index c7ef619..89b7ec1 100644 --- a/libftl/logging.c +++ b/libftl/logging.c @@ -22,6 +22,7 @@ * SOFTWARE. **/ +#include #include "ftl.h" #include "ftl_private.h" @@ -32,7 +33,7 @@ void ftl_log_msg(ftl_stream_configuration_private_t *ftl, ftl_log_severity_t log m.msg.log.log_level = log_level; va_start(args, fmt); - vsnprintf(m.msg.log.string, sizeof(m.msg.log.string), fmt, args); + vsnprintf_s(m.msg.log.string, sizeof(m.msg.log.string), _TRUNCATE, fmt, args); va_end(args); enqueue_status_msg(ftl, &m); diff --git a/libftl/media.c b/libftl/media.c index f32888a..2973547 100644 --- a/libftl/media.c +++ b/libftl/media.c @@ -842,7 +842,7 @@ static int _media_send_slot(ftl_stream_configuration_private_t *ftl, nack_slot_t int pkt_len; os_lock_mutex(&ftl->media.mutex); - memcpy(pkt, slot->packet, slot->len); + memcpy_s(pkt, sizeof(pkt) * MAX_PACKET_BUFFER, slot->packet, slot->len); pkt_len = slot->len; os_unlock_mutex(&ftl->media.mutex);