FreeBSD Bugzilla – Attachment 190463 Details for
Bug 218517
ppp fails adding route with error Value too large to be stored in data type
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
save errno and fix buffer size for copies of ncpaddr_ntoa/ncprange_ntoa result
ppp-buflen.diff (text/plain), 6.31 KB, created by
Eugene Grosbein
on 2018-02-09 17:55:11 UTC
(
hide
)
Description:
save errno and fix buffer size for copies of ncpaddr_ntoa/ncprange_ntoa result
Filename:
MIME Type:
Creator:
Eugene Grosbein
Created:
2018-02-09 17:55:11 UTC
Size:
6.31 KB
patch
obsolete
>Index: usr.sbin/ppp/defs.h >=================================================================== >--- usr.sbin/ppp/defs.h (revision 329069) >+++ usr.sbin/ppp/defs.h (working copy) >@@ -119,6 +119,8 @@ > > #define ROUNDUP(x) ((x) ? (1 + (((x) - 1) | (sizeof(long) - 1))) : sizeof(long)) > >+#define NCP_ASCIIBUFFERSIZE 52 >+ > #ifdef __NetBSD__ > extern void randinit(void); > #else >Index: usr.sbin/ppp/iface.c >=================================================================== >--- usr.sbin/ppp/iface.c (revision 329069) >+++ usr.sbin/ppp/iface.c (working copy) >@@ -209,7 +209,7 @@ iface_addr_Zap(const char *name, struct > #endif > struct sockaddr_in *me4, *msk4, *peer4; > struct sockaddr_storage ssme, sspeer, ssmsk; >- int res; >+ int res, saved_errno; > > ncprange_getsa(&addr->ifa, &ssme, &ssmsk); > ncpaddr_getsa(&addr->peer, &sspeer); >@@ -235,8 +235,9 @@ iface_addr_Zap(const char *name, struct > memcpy(peer4, &sspeer, sizeof *peer4); > > res = ID0ioctl(s, SIOCDIFADDR, &ifra); >+ saved_errno = errno; > if (log_IsKept(LogDEBUG)) { >- char buf[100]; >+ char buf[NCP_ASCIIBUFFERSIZE]; > > snprintf(buf, sizeof buf, "%s", ncprange_ntoa(&addr->ifa)); > log_Printf(LogWARN, "%s: DIFADDR %s -> %s returns %d\n", >@@ -260,12 +261,13 @@ iface_addr_Zap(const char *name, struct > ifra6.ifra_lifetime.ia6t_pltime = ND6_INFINITE_LIFETIME; > > res = ID0ioctl(s, SIOCDIFADDR_IN6, &ifra6); >+ saved_errno = errno; > break; > #endif > } > > if (res == -1) { >- char dst[40]; >+ char dst[NCP_ASCIIBUFFERSIZE]; > const char *end = > #ifndef NOINET6 > ncprange_family(&addr->ifa) == AF_INET6 ? "_IN6" : >@@ -274,11 +276,11 @@ iface_addr_Zap(const char *name, struct > > if (ncpaddr_family(&addr->peer) == AF_UNSPEC) > log_Printf(LogWARN, "iface rm: ioctl(SIOCDIFADDR%s, %s): %s\n", >- end, ncprange_ntoa(&addr->ifa), strerror(errno)); >+ end, ncprange_ntoa(&addr->ifa), strerror(saved_errno)); > else { > snprintf(dst, sizeof dst, "%s", ncpaddr_ntoa(&addr->peer)); > log_Printf(LogWARN, "iface rm: ioctl(SIOCDIFADDR%s, %s -> %s): %s\n", >- end, ncprange_ntoa(&addr->ifa), dst, strerror(errno)); >+ end, ncprange_ntoa(&addr->ifa), dst, strerror(saved_errno)); > } > } > >@@ -294,7 +296,7 @@ iface_addr_Add(const char *name, struct > #endif > struct sockaddr_in *me4, *msk4, *peer4; > struct sockaddr_storage ssme, sspeer, ssmsk; >- int res; >+ int res, saved_errno; > > ncprange_getsa(&addr->ifa, &ssme, &ssmsk); > ncpaddr_getsa(&addr->peer, &sspeer); >@@ -320,8 +322,9 @@ iface_addr_Add(const char *name, struct > memcpy(peer4, &sspeer, sizeof *peer4); > > res = ID0ioctl(s, SIOCAIFADDR, &ifra); >+ saved_errno = errno; > if (log_IsKept(LogDEBUG)) { >- char buf[100]; >+ char buf[NCP_ASCIIBUFFERSIZE]; > > snprintf(buf, sizeof buf, "%s", ncprange_ntoa(&addr->ifa)); > log_Printf(LogWARN, "%s: AIFADDR %s -> %s returns %d\n", >@@ -345,12 +348,13 @@ iface_addr_Add(const char *name, struct > ifra6.ifra_lifetime.ia6t_pltime = ND6_INFINITE_LIFETIME; > > res = ID0ioctl(s, SIOCAIFADDR_IN6, &ifra6); >+ saved_errno = errno; > break; > #endif > } > > if (res == -1) { >- char dst[40]; >+ char dst[NCP_ASCIIBUFFERSIZE]; > const char *end = > #ifndef NOINET6 > ncprange_family(&addr->ifa) == AF_INET6 ? "_IN6" : >@@ -359,11 +363,11 @@ iface_addr_Add(const char *name, struct > > if (ncpaddr_family(&addr->peer) == AF_UNSPEC) > log_Printf(LogWARN, "iface add: ioctl(SIOCAIFADDR%s, %s): %s\n", >- end, ncprange_ntoa(&addr->ifa), strerror(errno)); >+ end, ncprange_ntoa(&addr->ifa), strerror(saved_errno)); > else { > snprintf(dst, sizeof dst, "%s", ncpaddr_ntoa(&addr->peer)); > log_Printf(LogWARN, "iface add: ioctl(SIOCAIFADDR%s, %s -> %s): %s\n", >- end, ncprange_ntoa(&addr->ifa), dst, strerror(errno)); >+ end, ncprange_ntoa(&addr->ifa), dst, strerror(saved_errno)); > } > } > >Index: usr.sbin/ppp/ip.c >=================================================================== >--- usr.sbin/ppp/ip.c (revision 329069) >+++ usr.sbin/ppp/ip.c (working copy) >@@ -226,7 +226,7 @@ FilterCheck(const unsigned char *packet, > int match; /* true if condition matched */ > int mindata; /* minimum data size or zero */ > const struct filterent *fp = filter->rule; >- char dbuff[100], dstip[16]; >+ char dbuff[100], dstip[NCP_ASCIIBUFFERSIZE]; > struct ncpaddr srcaddr, dstaddr; > const char *payload; /* IP payload */ > int datalen; /* IP datagram length */ >Index: usr.sbin/ppp/ipv6cp.c >=================================================================== >--- usr.sbin/ppp/ipv6cp.c (revision 329069) >+++ usr.sbin/ppp/ipv6cp.c (working copy) >@@ -467,7 +467,7 @@ ipv6cp_LayerUp(struct fsm *fp) > { > /* We're now up */ > struct ipv6cp *ipv6cp = fsm2ipv6cp(fp); >- char tbuff[40]; >+ char tbuff[NCP_ASCIIBUFFERSIZE]; > > log_Printf(LogIPV6CP, "%s: LayerUp.\n", fp->link->name); > if (!ipv6cp_InterfaceUp(ipv6cp)) >@@ -524,7 +524,7 @@ ipv6cp_LayerDown(struct fsm *fp) > /* About to come down */ > struct ipv6cp *ipv6cp = fsm2ipv6cp(fp); > static int recursing; >- char addr[40]; >+ char addr[NCP_ASCIIBUFFERSIZE]; > > if (!recursing++) { > snprintf(addr, sizeof addr, "%s", ncpaddr_ntoa(&ipv6cp->myaddr)); >Index: usr.sbin/ppp/ncpaddr.c >=================================================================== >--- usr.sbin/ppp/ncpaddr.c (revision 329069) >+++ usr.sbin/ppp/ncpaddr.c (working copy) >@@ -78,8 +78,6 @@ > #define ncpaddr_ip6addr u.ip6addr > #endif > >-#define NCP_ASCIIBUFFERSIZE 52 >- > static struct in_addr > bits2mask4(int bits) > { >Index: usr.sbin/ppp/route.c >=================================================================== >--- usr.sbin/ppp/route.c (revision 329069) >+++ usr.sbin/ppp/route.c (working copy) >@@ -437,7 +437,7 @@ route_IfDelete(struct bundle *bundle, in > ) && > (all || (rtm->rtm_flags & RTF_GATEWAY))) { > if (log_IsKept(LogDEBUG)) { >- char gwstr[41]; >+ char gwstr[NCP_ASCIIBUFFERSIZE]; > struct ncpaddr gw; > ncprange_setsa(&range, sa[RTAX_DST], sa[RTAX_NETMASK]); > ncpaddr_setsa(&gw, sa[RTAX_GATEWAY]); >@@ -843,7 +843,7 @@ failed: > } > > if (log_IsKept(LogDEBUG)) { >- char gwstr[40]; >+ char gwstr[NCP_ASCIIBUFFERSIZE]; > > if (gw) > snprintf(gwstr, sizeof gwstr, "%s", ncpaddr_ntoa(gw));
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 218517
:
181690
|
181713
| 190463 |
190932