rem: for (; space > sizeof(ifr) && ifa; ifa = ifa->ifa_next) {
add: for (; space > (int) sizeof(ifr) && ifa; ifa = ifa->ifa_next) {
context: int ifconf(int cmd, caddr_t data){	struct ifconf *ifc = (struct ifconf*)data;	struct ifnet *ifp = devices;	struct ifaddr *ifa = NULL;	char *cp, *ep;	struct ifreq ifr, *ifrp;	int space = ifc->ifc_len; /* how big the buffer is */	void *copyptr = NULL;		ifrp = ifc->ifc_req;	ep = ifr.ifr_name + sizeof(ifr.ifr_name) - 2;		for (; space > sizeof(ifr) && ifp; ifp = ifp->if_next) {		strncpy(ifr.ifr_name, ifp->if_name, sizeof(ifr.ifr_name) - 2);		for (cp = ifr.ifr_name;cp < ep && *cp; cp++)			continue;		*cp = '\0';		if ((ifa = ifp->if_addrlist) == NULL) {			memset((caddr_t)&ifr.ifr_addr, 0, sizeof(ifr.ifr_addr));			copyptr = memcpy((caddr_t) ifrp, (caddr_t) &ifr, sizeof(ifr));			if (copyptr == NULL)				break;			space -= sizeof(ifr), ifrp++;		} else {			for (; space > sizeof(ifr) && ifa; ifa = ifa->ifa_next) {				struct sockaddr *sa = ifa->ifa_addr;				if (sa->sa_len <= sizeof(*sa)) {					printf("sa->sa_len = %d compared to %ld, sa->sa_family = %d\n", 						sa->sa_len, sizeof(*sa), sa->sa_family);											ifr.ifr_addr = *sa;					copyptr = memcpy((caddr_t)ifrp, (caddr_t)&ifr, sizeof(ifr));					ifrp++;				} else {					space -= sa->sa_len - sizeof(*sa);					if (space < sizeof(ifr))						break;					copyptr = memcpy((caddr_t)ifrp, (caddr_t)&ifr, sizeof(ifr.ifr_name));					if (copyptr != NULL)						copyptr = memcpy((caddr_t)&ifrp->ifr_addr, (caddr_t)sa, sa->sa_len);					ifrp = (struct ifreq*)(sa->sa_len + (caddr_t)&ifrp->ifr_addr);				}				if (copyptr == NULL)					break;				space -= sizeof(ifr);			}		}	}	ifc->ifc_len -= space;	/* Yuck! */	return (copyptr == NULL ? -1 : 0);}