Android源码修改:dhcp兼容性漏洞修复
external\dhcpcd\dhcp.c
L1040:
修改前:
/* Regardless of RFC2132, we should always send a hostname * upto the first dot (the short hostname) as otherwise * confuses some DHCP servers when updating DNS. * The FQDN option should be used if a FQDN is required. */ if (ifo->options & DHCPCD_HOSTNAME && ifo->hostname[0]) { *p++ = DHO_HOSTNAME; hp = strchr(ifo->hostname, '.'); if (hp) len = hp - ifo->hostname; else len = strlen(ifo->hostname); *p++ = len; memcpy(p, ifo->hostname, len); p += len; }
修改后:
/* Regardless of RFC2132, we should always send a hostname * upto the first dot (the short hostname) as otherwise * confuses some DHCP servers when updating DNS. * The FQDN option should be used if a FQDN is required. */ if (ifo->options & DHCPCD_HOSTNAME && ifo->hostname[0]) { *p++ = DHO_HOSTNAME; hp = strchr(ifo->hostname, '.'); if (hp) len = hp - ifo->hostname; else len = strlen(ifo->hostname); if(len > 8) len = 8;//hostname too long may load dhcp fail on some router *p++ = len; memcpy(p, ifo->hostname, len); p += len; }