summaryrefslogtreecommitdiffstats
path: root/sys/netinet/libalias
diff options
context:
space:
mode:
authorbrian <brian@FreeBSD.org>2001-08-20 12:06:42 +0000
committerbrian <brian@FreeBSD.org>2001-08-20 12:06:42 +0000
commit600042995ae97655a86cbb858298dc63ffca800f (patch)
tree47724a9d16b77abde285bc3897d1f831050b7b6c /sys/netinet/libalias
parent98d3c6bc197eb678ca324345c95491f2226219c2 (diff)
downloadFreeBSD-src-600042995ae97655a86cbb858298dc63ffca800f.zip
FreeBSD-src-600042995ae97655a86cbb858298dc63ffca800f.tar.gz
Handle snprintf() returning -1
MFC after: 2 weeks
Diffstat (limited to 'sys/netinet/libalias')
-rw-r--r--sys/netinet/libalias/alias_irc.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/sys/netinet/libalias/alias_irc.c b/sys/netinet/libalias/alias_irc.c
index 84193e1..2f2c126 100644
--- a/sys/netinet/libalias/alias_irc.c
+++ b/sys/netinet/libalias/alias_irc.c
@@ -249,6 +249,7 @@ lFOUND_CTCP:
if ( dcc_link ) {
struct in_addr alias_address; /* Address from aliasing */
u_short alias_port; /* Port given by aliasing */
+ int n;
#ifndef NO_FW_PUNCH
/* Generate firewall hole as appropriate */
@@ -256,17 +257,26 @@ lFOUND_CTCP:
#endif
alias_address = GetAliasAddress(link);
- iCopy += snprintf(&newpacket[iCopy],
+ n = snprintf(&newpacket[iCopy],
sizeof(newpacket)-iCopy,
"%lu ", (u_long)htonl(alias_address.s_addr));
- if( iCopy >= sizeof(newpacket) ) { /* Truncated/fit exactly - bad news */
+ if( n < 0 ) {
+ DBprintf(("DCC packet construct failure.\n"));
+ goto lBAD_CTCP;
+ }
+ if( (iCopy += n) >= sizeof(newpacket) ) { /* Truncated/fit exactly - bad news */
DBprintf(("DCC constructed packet overflow.\n"));
goto lBAD_CTCP;
}
alias_port = GetAliasPort(dcc_link);
- iCopy += snprintf(&newpacket[iCopy],
+ n = snprintf(&newpacket[iCopy],
sizeof(newpacket)-iCopy,
"%u", htons(alias_port) );
+ if( n < 0 ) {
+ DBprintf(("DCC packet construct failure.\n"));
+ goto lBAD_CTCP;
+ }
+ iCopy += n;
/* Done - truncated cases will be taken care of by lBAD_CTCP */
DBprintf(("Aliased IP %lu and port %u\n", alias_address.s_addr, (unsigned)alias_port));
}
OpenPOWER on IntegriCloud