static int lldp_build_tlv_packet(tlv_packet **ret) {
_cleanup_tlv_packet_free_ tlv_packet *m = NULL;
const uint8_t lldp_dst[] = LLDP_MULTICAST_ADDR;
- struct ether_header ether;
+ struct ether_header ether = {
+ .ether_type = htons(ETHERTYPE_LLDP),
+ };
/* Append ethernet header */
- memset(ðer, 0, sizeof(ether));
memcpy(ðer.ether_dhost, lldp_dst, ETHER_ADDR_LEN);
memcpy(ðer.ether_shost, &mac_addr, ETHER_ADDR_LEN);
- ether.ether_type = htons(ETHERTYPE_LLDP);
assert_se(tlv_packet_new(&m) >= 0);
}
static int lldp_parse_port_id_tlv(tlv_packet *m) {
- char *str = NULL, *p;
+ _cleanup_free_ char *p = NULL;
+ char *str = NULL;
uint16_t length;
uint8_t subtype;
case LLDP_PORT_SUBTYPE_INTERFACE_NAME:
assert_se(tlv_packet_read_string(m, &str, &length) >= 0);
- p = malloc0(length + 1);
+ p = strndup(str, length-1);
assert_se(p);
- strncpy(p, str, length-1);
assert_se(streq(p, TEST_LLDP_PORT) == 1);
break;
}
static int lldp_parse_system_name_tlv(tlv_packet *m) {
- char *str = NULL, *p;
+ _cleanup_free_ char *p = NULL;
+ char *str = NULL;
uint16_t length;
assert_se(lldp_tlv_packet_enter_container(m, LLDP_TYPE_SYSTEM_NAME) >= 0);
assert_se(tlv_packet_read_string(m, &str, &length) >= 0);
- p = malloc0(length + 1);
+ p = strndup(str, length);
assert_se(p);
- strncpy(p, str, length);
assert_se(streq(p, TEST_LLDP_TYPE_SYSTEM_NAME) == 1);
}
static int lldp_parse_system_desc_tlv(tlv_packet *m) {
- char *str = NULL, *p;
+ _cleanup_free_ char *p = NULL;
+ char *str = NULL;
uint16_t length;
assert_se(lldp_tlv_packet_enter_container(m, LLDP_TYPE_SYSTEM_DESCRIPTION) >= 0);
assert_se(tlv_packet_read_string(m, &str, &length) >= 0);
- p = malloc0(length + 1);
+ p = strndup(str, length);
assert_se(p);
- strncpy(p, str, length);
assert_se(streq(p, TEST_LLDP_TYPE_SYSTEM_DESC) == 1);