Mercurial > hg > toybox
comparison toys/pending/dhcp.c @ 1639:856b544f8fce draft
strncpy(optptr, hname, strlen(hname)) is really just strcpy().
author | Rob Landley <rob@landley.net> |
---|---|
date | Thu, 01 Jan 2015 16:49:55 -0600 |
parents | e0c9c5424864 |
children | 41efba077b75 |
comparison
equal
deleted
inserted
replaced
1638:184c98250cc5 | 1639:856b544f8fce |
---|---|
286 struct ifreq req; | 286 struct ifreq req; |
287 struct sockaddr_in *ip; | 287 struct sockaddr_in *ip; |
288 int fd = xsocket(AF_INET, SOCK_RAW, IPPROTO_RAW); | 288 int fd = xsocket(AF_INET, SOCK_RAW, IPPROTO_RAW); |
289 | 289 |
290 req.ifr_addr.sa_family = AF_INET; | 290 req.ifr_addr.sa_family = AF_INET; |
291 strncpy(req.ifr_name, interface, IFNAMSIZ); | 291 xstrncpy(req.ifr_name, interface, IFNAMSIZ); |
292 req.ifr_name[IFNAMSIZ-1] = '\0'; | 292 req.ifr_name[IFNAMSIZ-1] = '\0'; |
293 | 293 |
294 xioctl(fd, SIOCGIFFLAGS, &req); | 294 xioctl(fd, SIOCGIFFLAGS, &req); |
295 if (!(req.ifr_flags & IFF_UP)) return -1; | 295 if (!(req.ifr_flags & IFF_UP)) return -1; |
296 | 296 |
626 if (setsockopt(state->sockfd, SOL_SOCKET, SO_BROADCAST, &set, sizeof(set)) == -1) { | 626 if (setsockopt(state->sockfd, SOL_SOCKET, SO_BROADCAST, &set, sizeof(set)) == -1) { |
627 dbg("MODE APP : brodcast failed.\n"); | 627 dbg("MODE APP : brodcast failed.\n"); |
628 close(state->sockfd); | 628 close(state->sockfd); |
629 return -1; | 629 return -1; |
630 } | 630 } |
631 strncpy(ifr.ifr_name, state->iface, IFNAMSIZ); | 631 xstrncpy(ifr.ifr_name, state->iface, IFNAMSIZ); |
632 ifr.ifr_name[IFNAMSIZ -1] = '\0'; | 632 ifr.ifr_name[IFNAMSIZ -1] = '\0'; |
633 setsockopt(state->sockfd, SOL_SOCKET, SO_BINDTODEVICE, &ifr, sizeof(ifr)); | 633 setsockopt(state->sockfd, SOL_SOCKET, SO_BINDTODEVICE, &ifr, sizeof(ifr)); |
634 | 634 |
635 memset(&addr, 0, sizeof(addr)); | 635 memset(&addr, 0, sizeof(addr)); |
636 addr.sin_family = AF_INET; | 636 addr.sin_family = AF_INET; |
882 memcpy(optptr, &ipaddr->s_addr, 4); | 882 memcpy(optptr, &ipaddr->s_addr, 4); |
883 return optptr + 4; | 883 return optptr + 4; |
884 } | 884 } |
885 | 885 |
886 // adds hostname to dhcp packet. | 886 // adds hostname to dhcp packet. |
887 static uint8_t *dhcpc_addfdnname(uint8_t *optptr, char *hname) | 887 static uint8_t *dhcpc_addfdnname(uint8_t *optptr, char *hname) |
888 { | 888 { |
889 int size = strlen(hname); | 889 int size = strlen(hname); |
890 | |
890 *optptr++ = DHCP_OPTION_FQDN; | 891 *optptr++ = DHCP_OPTION_FQDN; |
891 *optptr++ = size + 3; | 892 *optptr++ = size + 3; |
892 *optptr++ = 0x1; //flags | 893 *optptr++ = 0x1; //flags |
893 optptr += 2; // two blank bytes | 894 optptr += 2; // two blank bytes |
894 strncpy((char*)optptr, hname, size); // name | 895 strcpy((char*)optptr, hname); // name |
896 | |
895 return optptr + size; | 897 return optptr + size; |
896 } | 898 } |
897 | 899 |
898 // adds request options using -o,-O flag to dhcp packet | 900 // adds request options using -o,-O flag to dhcp packet |
899 static uint8_t *dhcpc_addreqoptions(uint8_t *optptr) | 901 static uint8_t *dhcpc_addreqoptions(uint8_t *optptr) |