aboutsummaryrefslogtreecommitdiff
path: root/programs
diff options
context:
space:
mode:
authorMichael Tuexen <tuexen@fh-muenster.de>2020-05-18 14:09:04 +0200
committerMichael Tuexen <tuexen@fh-muenster.de>2020-05-18 14:09:04 +0200
commitd98d2c4c6f4a6a8cafef2a6a2c81de0137a07da0 (patch)
tree600285fcf4330386fd6cc98a0dc63f44e09be67b /programs
parenta05154264872ec8e5d4143ac841a306f54ace231 (diff)
downloadusrsctp-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.c6
-rw-r--r--programs/daytime_server_upcall.c6
-rw-r--r--programs/discard_server.c6
-rw-r--r--programs/echo_server.c6
-rw-r--r--programs/ekr_loop_upcall.c4
-rw-r--r--programs/http_client.c12
-rw-r--r--programs/http_client_upcall.c12
-rw-r--r--programs/programs_helper.c17
-rw-r--r--programs/rtcweb.c6
-rw-r--r--programs/st_client.c3
-rw-r--r--programs/tsctp_upcall.c4
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;
}