Ignore:
Timestamp:
Dec 20, 2016, 4:07:32 PM (7 years ago)
Author:
Bruno Cornec
Message:

New 3?3 banch for incorporation of latest busybox 1.25. Changing minor version to handle potential incompatibilities.

Location:
branches/3.3
Files:
1 edited
1 copied

Legend:

Unmodified
Added
Removed
  • branches/3.3/mindi-busybox/networking/interface.c

    r3232 r3621  
    9090static const char* FAST_FUNC INET_sprint(struct sockaddr *sap, int numeric)
    9191{
    92     static char *buff; /* defaults to NULL */
    93 
    94     free(buff);
    9592    if (sap->sa_family == 0xFFFF || sap->sa_family == 0)
    9693        return "[NONE SET]";
    97     buff = INET_rresolve((struct sockaddr_in *) sap, numeric, 0xffffff00);
    98     return buff;
     94    return auto_string(INET_rresolve((struct sockaddr_in *) sap, numeric, 0xffffff00));
    9995}
    10096
     
    172168static const char* FAST_FUNC INET6_sprint(struct sockaddr *sap, int numeric)
    173169{
    174     static char *buff;
    175 
    176     free(buff);
    177170    if (sap->sa_family == 0xFFFF || sap->sa_family == 0)
    178171        return "[NONE SET]";
    179     buff = INET6_rresolve((struct sockaddr_in6 *) sap, numeric);
    180     return buff;
     172    return auto_string(INET6_rresolve((struct sockaddr_in6 *) sap, numeric));
    181173}
    182174
     
    224216static char* FAST_FUNC UNSPEC_print(unsigned char *ptr)
    225217{
    226     static char *buff;
    227 
     218    char *buff;
    228219    char *pos;
    229220    unsigned int i;
    230221
    231     if (!buff)
    232         buff = xmalloc(sizeof(struct sockaddr) * 3 + 1);
     222    buff = auto_string(xmalloc(sizeof(struct sockaddr) * 3 + 1));
    233223    pos = buff;
    234224    for (i = 0; i < sizeof(struct sockaddr); i++) {
     
    713703static char* FAST_FUNC ether_print(unsigned char *ptr)
    714704{
    715     static char *buff;
    716 
    717     free(buff);
     705    char *buff;
    718706    buff = xasprintf("%02X:%02X:%02X:%02X:%02X:%02X",
    719707             (ptr[0] & 0377), (ptr[1] & 0377), (ptr[2] & 0377),
    720708             (ptr[3] & 0377), (ptr[4] & 0377), (ptr[5] & 0377)
    721709        );
    722     return buff;
    723 }
    724 
    725 static int FAST_FUNC ether_input(const char *bufp, struct sockaddr *sap);
     710    return auto_string(buff);
     711}
    726712
    727713static const struct hwtype ether_hwtype = {
     
    731717    .alen  = ETH_ALEN,
    732718    .print = ether_print,
    733     .input = ether_input
    734 };
    735 
    736 static unsigned hexchar2int(char c)
    737 {
    738     if (isdigit(c))
    739         return c - '0';
    740     c &= ~0x20; /* a -> A */
    741     if ((unsigned)(c - 'A') <= 5)
    742         return c - ('A' - 10);
    743     return ~0U;
    744 }
    745 
    746 /* Input an Ethernet address and convert to binary. */
    747 static int FAST_FUNC ether_input(const char *bufp, struct sockaddr *sap)
    748 {
    749     unsigned char *ptr;
    750     char c;
    751     int i;
    752     unsigned val;
    753 
    754     sap->sa_family = ether_hwtype.type;
    755     ptr = (unsigned char*) sap->sa_data;
    756 
    757     i = 0;
    758     while ((*bufp != '\0') && (i < ETH_ALEN)) {
    759         val = hexchar2int(*bufp++) * 0x10;
    760         if (val > 0xff) {
    761             errno = EINVAL;
    762             return -1;
    763         }
    764         c = *bufp;
    765         if (c == ':' || c == 0)
    766             val >>= 4;
    767         else {
    768             val |= hexchar2int(c);
    769             if (val > 0xff) {
    770                 errno = EINVAL;
    771                 return -1;
    772             }
    773         }
    774         if (c != 0)
    775             bufp++;
    776         *ptr++ = (unsigned char) val;
    777         i++;
    778 
    779         /* We might get a semicolon here - not required. */
    780         if (*bufp == ':') {
    781             bufp++;
    782         }
    783     }
    784     return 0;
    785 }
     719    .input = in_ether
     720};
    786721
    787722static const struct hwtype ppp_hwtype = {
     
    928863{
    929864    FILE *f;
    930     char addr6[40], devname[20];
     865    char addr6[40], devname[21];
    931866    struct sockaddr_in6 sap;
    932867    int plen, scope, dad_status, if_idx;
     
    947882                    addr6p[0], addr6p[1], addr6p[2], addr6p[3],
    948883                    addr6p[4], addr6p[5], addr6p[6], addr6p[7]);
     884            memset(&sap, 0, sizeof(sap));
    949885            inet_pton(AF_INET6, addr6,
    950886                      (struct sockaddr *) &sap.sin6_addr);
Note: See TracChangeset for help on using the changeset viewer.