fix: strncpy reads out of bounds #52

Merged
SirDifferential merged 1 commits from strncpy_oob_fix into master 2020-06-08 12:36:05 +02:00
2 changed files with 3 additions and 3 deletions
+1 -1
View File
@@ -184,7 +184,7 @@ void DeviceDiscovery::OnBroadcast(const CommPacket &packet, apr_sockaddr_t *addr
}
++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.data_port = kListenPort + kDataPortOffset + port_count;
lidar_info.sensor_port = kListenPort + kSensorPortOffset + port_count;
+2 -2
View File
@@ -207,7 +207,7 @@ bool DeviceManager::AddListeningDevice(const string &broadcast_code, DeviceMode
devices_[kHubDefaultHandle].connected = false;
strncpy(devices_[kHubDefaultHandle].info.broadcast_code,
broadcast_code.c_str(),
sizeof(devices_[kHubDefaultHandle].info.broadcast_code));
sizeof(devices_[kHubDefaultHandle].info.broadcast_code)-1);
devices_[kHubDefaultHandle].info.handle = kHubDefaultHandle;
return true;
}
@@ -216,7 +216,7 @@ bool DeviceManager::AddListeningDevice(const string &broadcast_code, DeviceMode
if (strlen(ite->info.broadcast_code) == 0) {
handle = ite - devices_.begin();
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;
return true;
} else if (strncmp(ite->info.broadcast_code, broadcast_code.c_str(), sizeof(ite->info.broadcast_code)) == 0) {