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)