diff options
author | Michael Tuexen <tuexen@fh-muenster.de> | 2020-05-18 14:09:04 +0200 |
---|---|---|
committer | Michael Tuexen <tuexen@fh-muenster.de> | 2020-05-18 14:09:04 +0200 |
commit | d98d2c4c6f4a6a8cafef2a6a2c81de0137a07da0 (patch) | |
tree | 600285fcf4330386fd6cc98a0dc63f44e09be67b /programs | |
parent | a05154264872ec8e5d4143ac841a306f54ace231 (diff) | |
download | usrsctp-d98d2c4c6f4a6a8cafef2a6a2c81de0137a07da0.tar.gz |
Check return value of snprintf().
This should fix https://github.com/sctplab/usrsctp/issues/453.
Diffstat (limited to 'programs')
-rw-r--r-- | programs/daytime_server.c | 6 | ||||
-rw-r--r-- | programs/daytime_server_upcall.c | 6 | ||||
-rw-r--r-- | programs/discard_server.c | 6 | ||||
-rw-r--r-- | programs/echo_server.c | 6 | ||||
-rw-r--r-- | programs/ekr_loop_upcall.c | 4 | ||||
-rw-r--r-- | programs/http_client.c | 12 | ||||
-rw-r--r-- | programs/http_client_upcall.c | 12 | ||||
-rw-r--r-- | programs/programs_helper.c | 17 | ||||
-rw-r--r-- | programs/rtcweb.c | 6 | ||||
-rw-r--r-- | programs/st_client.c | 3 | ||||
-rw-r--r-- | programs/tsctp_upcall.c | 4 |
11 files changed, 56 insertions, 26 deletions
diff --git a/programs/daytime_server.c b/programs/daytime_server.c index 3e03dc1f..cab27554 100644 --- a/programs/daytime_server.c +++ b/programs/daytime_server.c @@ -111,10 +111,12 @@ main(int argc, char *argv[]) } time(&now); #ifdef _WIN32 - _snprintf(buffer, sizeof(buffer), "%s", ctime(&now)); + if (_snprintf(buffer, sizeof(buffer), "%s", ctime(&now)) < 0) { #else - snprintf(buffer, sizeof(buffer), "%s", ctime(&now)); + if (snprintf(buffer, sizeof(buffer), "%s", ctime(&now)) < 0) { #endif + buffer[0] = '\0'; + } sndinfo.snd_sid = 0; sndinfo.snd_flags = 0; sndinfo.snd_ppid = htonl(DAYTIME_PPID); diff --git a/programs/daytime_server_upcall.c b/programs/daytime_server_upcall.c index b85cb256..87017cf2 100644 --- a/programs/daytime_server_upcall.c +++ b/programs/daytime_server_upcall.c @@ -69,10 +69,12 @@ handle_accept(struct socket *sock, void *data, int flags) } time(&now); #ifdef _WIN32 - _snprintf(buffer, sizeof(buffer), "%s", ctime(&now)); + if (_snprintf(buffer, sizeof(buffer), "%s", ctime(&now)) < 0) { #else - snprintf(buffer, sizeof(buffer), "%s", ctime(&now)); + if (snprintf(buffer, sizeof(buffer), "%s", ctime(&now)) < 0) { #endif + buffer[0] = '\0'; + } sndinfo.snd_sid = 0; sndinfo.snd_flags = 0; sndinfo.snd_ppid = htonl(DAYTIME_PPID); diff --git a/programs/discard_server.c b/programs/discard_server.c index e469b363..b60c6921 100644 --- a/programs/discard_server.c +++ b/programs/discard_server.c @@ -86,10 +86,12 @@ receive_cb(struct socket *sock, union sctp_sockstore addr, void *data, #endif case AF_CONN: #ifdef _WIN32 - _snprintf(namebuf, INET6_ADDRSTRLEN, "%p", addr.sconn.sconn_addr); + if (_snprintf(namebuf, INET6_ADDRSTRLEN, "%p", addr.sconn.sconn_addr) < 0) { #else - snprintf(namebuf, INET6_ADDRSTRLEN, "%p", addr.sconn.sconn_addr); + if (snprintf(namebuf, INET6_ADDRSTRLEN, "%p", addr.sconn.sconn_addr) < 0) { #endif + namebuf[0] = '\0'; + } name = namebuf; port = ntohs(addr.sconn.sconn_port); break; diff --git a/programs/echo_server.c b/programs/echo_server.c index f59a99c8..38fa6f41 100644 --- a/programs/echo_server.c +++ b/programs/echo_server.c @@ -86,10 +86,12 @@ receive_cb(struct socket *sock, union sctp_sockstore addr, void *data, #endif case AF_CONN: #ifdef _WIN32 - _snprintf(namebuf, INET6_ADDRSTRLEN, "%p", addr.sconn.sconn_addr); + if (_snprintf(namebuf, INET6_ADDRSTRLEN, "%p", addr.sconn.sconn_addr) < 0) { #else - snprintf(namebuf, INET6_ADDRSTRLEN, "%p", addr.sconn.sconn_addr); + if (snprintf(namebuf, INET6_ADDRSTRLEN, "%p", addr.sconn.sconn_addr) < 0) { #endif + namebuf[0] = '\0'; + } name = namebuf; port = ntohs(addr.sconn.sconn_port); break; diff --git a/programs/ekr_loop_upcall.c b/programs/ekr_loop_upcall.c index d225fee9..717dfce5 100644 --- a/programs/ekr_loop_upcall.c +++ b/programs/ekr_loop_upcall.c @@ -121,7 +121,9 @@ conn_output(void *addr, void *buf, size_t length, uint8_t tos, uint8_t set_df) FILE *fp; char fname[128]; static int pktnum = 0; - snprintf(fname, sizeof(fname), "pkt-%d", pktnum++); + if (snprintf(fname, sizeof(fname), "pkt-%d", pktnum++) < 0) { + fname[0] = '\0'; + } fp = fopen(fname, "wb"); fwrite((char *)buf + 12, 1, length - 12, fp); fclose(fp); diff --git a/programs/http_client.c b/programs/http_client.c index def03849..03c92860 100644 --- a/programs/http_client.c +++ b/programs/http_client.c @@ -256,16 +256,20 @@ main(int argc, char *argv[]) if (argc > 6) { #ifdef _WIN32 - _snprintf(request, sizeof(request), "%s %s %s", request_prefix, argv[6], request_postfix); + if (_snprintf(request, sizeof(request), "%s %s %s", request_prefix, argv[6], request_postfix) < 0) { #else - snprintf(request, sizeof(request), "%s %s %s", request_prefix, argv[6], request_postfix); + if (snprintf(request, sizeof(request), "%s %s %s", request_prefix, argv[6], request_postfix) < 0) { #endif + request[0] = '\0'; + } } else { #ifdef _WIN32 - _snprintf(request, sizeof(request), "%s %s %s", request_prefix, "/", request_postfix); + if (_snprintf(request, sizeof(request), "%s %s %s", request_prefix, "/", request_postfix) < 0) { #else - snprintf(request, sizeof(request), "%s %s %s", request_prefix, "/", request_postfix); + if (snprintf(request, sizeof(request), "%s %s %s", request_prefix, "/", request_postfix) < 0) { #endif + request[0] = '\0'; + } } printf("\nHTTP request:\n%s\n", request); diff --git a/programs/http_client_upcall.c b/programs/http_client_upcall.c index 5583b54c..63916266 100644 --- a/programs/http_client_upcall.c +++ b/programs/http_client_upcall.c @@ -276,16 +276,20 @@ main(int argc, char *argv[]) if (argc > 6) { #ifdef _WIN32 - _snprintf(request, sizeof(request), "%s %s %s", request_prefix, argv[6], request_postfix); + if (_snprintf(request, sizeof(request), "%s %s %s", request_prefix, argv[6], request_postfix) < 0) { #else - snprintf(request, sizeof(request), "%s %s %s", request_prefix, argv[6], request_postfix); + if (snprintf(request, sizeof(request), "%s %s %s", request_prefix, argv[6], request_postfix) < 0) { #endif + request[0] = '\0'; + } } else { #ifdef _WIN32 - _snprintf(request, sizeof(request), "%s %s %s", request_prefix, "/", request_postfix); + if (_snprintf(request, sizeof(request), "%s %s %s", request_prefix, "/", request_postfix) < 0) { #else - snprintf(request, sizeof(request), "%s %s %s", request_prefix, "/", request_postfix); + if (snprintf(request, sizeof(request), "%s %s %s", request_prefix, "/", request_postfix) < 0) { #endif + request[0] = '\0'; + } } printf("\nHTTP request:\n%s\n", request); diff --git a/programs/programs_helper.c b/programs/programs_helper.c index 0883740f..a8dbd62f 100644 --- a/programs/programs_helper.c +++ b/programs/programs_helper.c @@ -65,8 +65,9 @@ debug_printf_stack(const char *format, ...) timersub(&time_now, &time_main, &time_delta); va_start(ap, format); - //vfprintf(stderr, format, ap); - vsnprintf(charbuf, 1024, format, ap); + if (vsnprintf(charbuf, 1024, format, ap) < 0) { + charbuf[0] = '\0'; + } va_end(ap); fprintf(stderr, "[S][%u.%03u] %s", (unsigned int) time_delta.tv_sec, (unsigned int) time_delta.tv_usec / 1000, charbuf); @@ -158,18 +159,22 @@ handle_peer_address_change_event(struct sctp_paddr_change *spc) case AF_CONN: sconn = (struct sockaddr_conn *)&spc->spc_aaddr; #ifdef _WIN32 - _snprintf(addr_buf, INET6_ADDRSTRLEN, "%p", sconn->sconn_addr); + if (_snprintf(addr_buf, INET6_ADDRSTRLEN, "%p", sconn->sconn_addr) < 0) { #else - snprintf(addr_buf, INET6_ADDRSTRLEN, "%p", sconn->sconn_addr); + if (snprintf(addr_buf, INET6_ADDRSTRLEN, "%p", sconn->sconn_addr) < 0) { #endif + addr_buf[0] = '\0'; + } addr = addr_buf; break; default: #ifdef _WIN32 - _snprintf(addr_buf, INET6_ADDRSTRLEN, "Unknown family %d", spc->spc_aaddr.ss_family); + if (_snprintf(addr_buf, INET6_ADDRSTRLEN, "Unknown family %d", spc->spc_aaddr.ss_family) < 0) { #else - snprintf(addr_buf, INET6_ADDRSTRLEN, "Unknown family %d", spc->spc_aaddr.ss_family); + if (snprintf(addr_buf, INET6_ADDRSTRLEN, "Unknown family %d", spc->spc_aaddr.ss_family) < 0) { #endif + addr_buf[0] = '\0'; + } addr = addr_buf; break; } diff --git a/programs/rtcweb.c b/programs/rtcweb.c index 1bf3b182..e0d3684a 100644 --- a/programs/rtcweb.c +++ b/programs/rtcweb.c @@ -927,10 +927,12 @@ handle_peer_address_change_event(struct sctp_paddr_change *spc) break; default: #ifdef _WIN32 - _snprintf(addr_buf, INET6_ADDRSTRLEN, "Unknown family %d", spc->spc_aaddr.ss_family); + if (_snprintf(addr_buf, INET6_ADDRSTRLEN, "Unknown family %d", spc->spc_aaddr.ss_family) < 0) { #else - snprintf(addr_buf, INET6_ADDRSTRLEN, "Unknown family %d", spc->spc_aaddr.ss_family); + if (snprintf(addr_buf, INET6_ADDRSTRLEN, "Unknown family %d", spc->spc_aaddr.ss_family) < 0) { #endif + addr_buf[0] = '\0'; + } addr = addr_buf; break; } diff --git a/programs/st_client.c b/programs/st_client.c index da5c53bc..49250bce 100644 --- a/programs/st_client.c +++ b/programs/st_client.c @@ -137,6 +137,9 @@ on_connect(struct socket* s) /* memset(buffer, 'A', BUFFER_SIZE); */ /* bufferlen = BUFFER_SIZE; */ bufferlen = snprintf(buffer, BUFFER_SIZE, "GET / HTTP/1.0\r\nUser-agent: libusrsctp\r\nConnection: close\r\n\r\n"); + if (bufferlen < 0) { + return; + } sndinfo.snd_sid = 0; sndinfo.snd_flags = 0; sndinfo.snd_ppid = htonl(DISCARD_PPID); diff --git a/programs/tsctp_upcall.c b/programs/tsctp_upcall.c index fab56891..21f6bba9 100644 --- a/programs/tsctp_upcall.c +++ b/programs/tsctp_upcall.c @@ -151,7 +151,9 @@ static const char *bytes2human(uint64_t bytes) } } - snprintf(output, sizeof(output), "%.02lf %s", human_size, suffix[i]); + if (snprintf(output, sizeof(output), "%.02lf %s", human_size, suffix[i]) < 0) { + output[0] = '\0'; + } return output; } |