fix: strncpy reads out of bounds
This commit is contained in:
@@ -184,7 +184,7 @@ void DeviceDiscovery::OnBroadcast(const CommPacket &packet, apr_sockaddr_t *addr
|
|||||||
}
|
}
|
||||||
|
|
||||||
++port_count;
|
++port_count;
|
||||||
strncpy(lidar_info.broadcast_code, broadcast_code.c_str(), sizeof(lidar_info.broadcast_code));
|
strncpy(lidar_info.broadcast_code, broadcast_code.c_str(), sizeof(lidar_info.broadcast_code)-1);
|
||||||
lidar_info.cmd_port = kListenPort + kCmdPortOffset + port_count;
|
lidar_info.cmd_port = kListenPort + kCmdPortOffset + port_count;
|
||||||
lidar_info.data_port = kListenPort + kDataPortOffset + port_count;
|
lidar_info.data_port = kListenPort + kDataPortOffset + port_count;
|
||||||
lidar_info.sensor_port = kListenPort + kSensorPortOffset + port_count;
|
lidar_info.sensor_port = kListenPort + kSensorPortOffset + port_count;
|
||||||
|
|||||||
@@ -207,7 +207,7 @@ bool DeviceManager::AddListeningDevice(const string &broadcast_code, DeviceMode
|
|||||||
devices_[kHubDefaultHandle].connected = false;
|
devices_[kHubDefaultHandle].connected = false;
|
||||||
strncpy(devices_[kHubDefaultHandle].info.broadcast_code,
|
strncpy(devices_[kHubDefaultHandle].info.broadcast_code,
|
||||||
broadcast_code.c_str(),
|
broadcast_code.c_str(),
|
||||||
sizeof(devices_[kHubDefaultHandle].info.broadcast_code));
|
sizeof(devices_[kHubDefaultHandle].info.broadcast_code)-1);
|
||||||
devices_[kHubDefaultHandle].info.handle = kHubDefaultHandle;
|
devices_[kHubDefaultHandle].info.handle = kHubDefaultHandle;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -216,7 +216,7 @@ bool DeviceManager::AddListeningDevice(const string &broadcast_code, DeviceMode
|
|||||||
if (strlen(ite->info.broadcast_code) == 0) {
|
if (strlen(ite->info.broadcast_code) == 0) {
|
||||||
handle = ite - devices_.begin();
|
handle = ite - devices_.begin();
|
||||||
ite->connected = false;
|
ite->connected = false;
|
||||||
strncpy(ite->info.broadcast_code, broadcast_code.c_str(), sizeof(ite->info.broadcast_code));
|
strncpy(ite->info.broadcast_code, broadcast_code.c_str(), sizeof(ite->info.broadcast_code)-1);
|
||||||
ite->info.handle = handle;
|
ite->info.handle = handle;
|
||||||
return true;
|
return true;
|
||||||
} else if (strncmp(ite->info.broadcast_code, broadcast_code.c_str(), sizeof(ite->info.broadcast_code)) == 0) {
|
} else if (strncmp(ite->info.broadcast_code, broadcast_code.c_str(), sizeof(ite->info.broadcast_code)) == 0) {
|
||||||
|
|||||||
Reference in New Issue
Block a user