hardware->h_ifname);
goto malformed;
}
- chassis->c_med_locsize = size - 5;
chassis->c_med_locformat =
*(u_int8_t*)(frame + f);
f += 1;
- if ((b = (char*)malloc(size - 5)) == NULL) {
+ if ((chassis->c_med_locdata =
+ (char*)malloc(size - 5)) == NULL) {
LLOG_WARN("unable to allocate memory "
"for LLDP-MED location for "
"frame received on %s",
hardware->h_ifname);
goto malformed;
}
- strlcpy(b,
+ memcpy(chassis->c_med_locdata,
(char*)(frame + f),
size - 5);
- chassis->c_med_locdata = b;
+ chassis->c_med_locdata_len = size - 5;
f += size - 5;
chassis->c_med_cap_enabled |=
LLDPMED_CAP_LOCATION;
printf("unknown location data format");
}
printf("\n data: %s\n", dump(chassis->c_med_locdata,
- chassis->c_med_locsize, 40, ' '));
+ chassis->c_med_locdata_len, 40, ' '));
}
printf("\n");
if (chassis->c_med_powtype) {
free(chassis->c_med_manuf);
free(chassis->c_med_model);
free(chassis->c_med_asset);
+ free(chassis->c_med_locdata);
#endif
free(chassis->c_id);
free(chassis->c_name);
u_int32_t c_mgmt_if;
#ifdef ENABLE_LLDPMED
-#define STRUCT_LLDPD_CHASSIS_MED "wwblwbsbwsssssss"
+#define STRUCT_LLDPD_CHASSIS_MED "wwblbCbwsssssss"
u_int16_t c_med_cap_available;
u_int16_t c_med_cap_enabled;
u_int8_t c_med_type;
u_int32_t c_med_policy;
- u_int16_t c_med_locsize;
u_int8_t c_med_locformat;
char *c_med_locdata;
+ int c_med_locdata_len;
u_int8_t c_med_powtype;
u_int16_t c_med_powval;
char *c_med_hw;