diff --git a/include/tins/rsn_information.h b/include/tins/rsn_information.h index 916acf6..72822cf 100644 --- a/include/tins/rsn_information.h +++ b/include/tins/rsn_information.h @@ -153,13 +153,13 @@ public: * \brief Getter for the version field. * \return The version field. */ - uint16_t version() const { return Endian::le_to_host(_version); } + uint16_t version() const { return _version; } /** * \brief Getter for the capabilities field. * \return The version field. */ - uint16_t capabilities() const { return Endian::le_to_host(_capabilities); } + uint16_t capabilities() const { return _capabilities; } /** * \brief Getter for the pairwise cypher suite list. diff --git a/src/dot11/dot11_mgmt.cpp b/src/dot11/dot11_mgmt.cpp index 298f500..d61eeaa 100644 --- a/src/dot11/dot11_mgmt.cpp +++ b/src/dot11/dot11_mgmt.cpp @@ -497,6 +497,7 @@ Dot11ManagementFrame::fh_params_set Dot11ManagementFrame::fh_params_set::from_op throw malformed_option(); fh_params_set output; std::memcpy(&output.dwell_time, opt.data_ptr(), sizeof(uint16_t)); + output.dwell_time = Endian::le_to_host(output.dwell_time); output.hop_set = opt.data_ptr()[2]; output.hop_pattern = opt.data_ptr()[3]; output.hop_index = opt.data_ptr()[4]; @@ -512,6 +513,8 @@ Dot11ManagementFrame::cf_params_set Dot11ManagementFrame::cf_params_set::from_op output.cfp_period = opt.data_ptr()[1]; std::memcpy(&output.cfp_max_duration, &opt.data_ptr()[2], sizeof(uint16_t)); std::memcpy(&output.cfp_dur_remaining, &opt.data_ptr()[4], sizeof(uint16_t)); + output.cfp_max_duration = Endian::le_to_host(output.cfp_max_duration); + output.cfp_dur_remaining = Endian::le_to_host(output.cfp_dur_remaining); return output; } @@ -602,8 +605,9 @@ Dot11ManagementFrame::bss_load_type Dot11ManagementFrame::bss_load_type::from_op const uint8_t *ptr = opt.data_ptr(); std::memcpy(&output.station_count, ptr, sizeof(uint16_t)); - output.channel_utilization = ptr[2]; std::memcpy(&output.available_capacity, ptr + 3, sizeof(uint16_t)); + output.channel_utilization = ptr[2]; + output.station_count = Endian::le_to_host(output.station_count); output.available_capacity = Endian::le_to_host(output.available_capacity); return output; } diff --git a/src/rsn_information.cpp b/src/rsn_information.cpp index 23d9546..80c0770 100644 --- a/src/rsn_information.cpp +++ b/src/rsn_information.cpp @@ -116,11 +116,11 @@ void RSNInformation::group_suite(CypherSuites group) { } void RSNInformation::version(uint16_t ver) { - _version = Endian::host_to_le(ver); + _version = ver; } void RSNInformation::capabilities(uint16_t cap) { - _capabilities = Endian::host_to_le(cap); + _capabilities = cap; } RSNInformation::serialization_type RSNInformation::serialize() const { @@ -131,10 +131,11 @@ RSNInformation::serialization_type RSNInformation::serialize() const { uint16_t pairwise_cyphers_size = _pairwise_cyphers.size(); uint16_t akm_cyphers_size = _akm_cyphers.size(); uint16_t capabilities = Endian::host_to_le(_capabilities); + uint16_t version = Endian::host_to_le(_version); serialization_type buffer(size); serialization_type::value_type *ptr = &buffer[0]; - std::memcpy(ptr, &_version, sizeof(_version)); + std::memcpy(ptr, &version, sizeof(version)); ptr += sizeof(uint16_t); std::memcpy(ptr, &_group_suite, sizeof(uint32_t)); ptr += sizeof(uint32_t);