diff --git a/headers/private/kernel/disk_device_manager/ddm_userland_interface.h b/headers/private/kernel/disk_device_manager/ddm_userland_interface.h index 1cde149f44..d5b282bfde 100644 --- a/headers/private/kernel/disk_device_manager/ddm_userland_interface.h +++ b/headers/private/kernel/disk_device_manager/ddm_userland_interface.h @@ -59,9 +59,6 @@ struct user_disk_device_job_info { char description[256]; }; -// Max size of parameter string buffers (including NULL terminator) -#define B_DISK_DEVICE_MAX_PARAMETER_SIZE (32 * 1024) - // iterating, retrieving device/partition data partition_id _kern_get_next_disk_device_id(int32 *cookie, size_t *neededSize = NULL); diff --git a/headers/private/storage/DiskDeviceDefs.h b/headers/private/storage/DiskDeviceDefs.h index cb510ae800..0537aa7e2b 100644 --- a/headers/private/storage/DiskDeviceDefs.h +++ b/headers/private/storage/DiskDeviceDefs.h @@ -148,6 +148,14 @@ enum { B_DISK_DEVICE_JOB_CAN_PAUSE = 0x08, }; +// string length constants, all of which include the NULL terminator +#define B_DISK_DEVICE_TYPE_LENGTH B_FILE_NAME_LENGTH +#define B_DISK_DEVICE_NAME_LENGTH B_FILE_NAME_LENGTH +#define B_DISK_SYSTEM_NAME_LENGTH B_PATH_NAME_LENGTH + +// max size of parameter string buffers, including NULL terminator +#define B_DISK_DEVICE_MAX_PARAMETER_SIZE (32 * 1024) + #ifdef __cplusplus } #endif diff --git a/src/kernel/core/disk_device_manager/ddm_userland_interface.cpp b/src/kernel/core/disk_device_manager/ddm_userland_interface.cpp index 83010a73f7..6a06d2e380 100644 --- a/src/kernel/core/disk_device_manager/ddm_userland_interface.cpp +++ b/src/kernel/core/disk_device_manager/ddm_userland_interface.cpp @@ -400,8 +400,8 @@ _kern_find_disk_system(const char *_name, user_disk_system_info *_info) { if (!_name || !_info) return B_BAD_VALUE; - char name[B_OS_NAME_LENGTH]; - status_t error = ddm_strlcpy(name, _name, B_OS_NAME_LENGTH); + char name[B_DISK_SYSTEM_NAME_LENGTH]; + status_t error = ddm_strlcpy(name, _name, B_DISK_SYSTEM_NAME_LENGTH); if (error) return error; KDiskDeviceManager *manager = KDiskDeviceManager::Default(); @@ -723,8 +723,8 @@ _kern_supports_initializing_partition(partition_id partitionID, { if (_diskSystemName) return false; - char diskSystemName[B_OS_NAME_LENGTH]; - status_t error = ddm_strlcpy(diskSystemName, _diskSystemName, B_OS_NAME_LENGTH); + char diskSystemName[B_DISK_SYSTEM_NAME_LENGTH]; + status_t error = ddm_strlcpy(diskSystemName, _diskSystemName, B_DISK_SYSTEM_NAME_LENGTH); if (error) return error; KDiskDeviceManager *manager = KDiskDeviceManager::Default(); @@ -868,8 +868,8 @@ _kern_validate_set_partition_name(partition_id partitionID, { if (!_name) return B_BAD_VALUE; - char name[B_FILE_NAME_LENGTH]; - status_t error = ddm_strlcpy(name, _name, B_FILE_NAME_LENGTH, true); + char name[B_DISK_DEVICE_NAME_LENGTH]; + status_t error = ddm_strlcpy(name, _name, B_DISK_DEVICE_NAME_LENGTH, true); if (error) return error; KDiskDeviceManager *manager = KDiskDeviceManager::Default(); @@ -882,7 +882,7 @@ _kern_validate_set_partition_name(partition_id partitionID, DeviceReadLocker locker(partition->Device(), true); error = validate_set_partition_name(partition, changeCounter, name); if (!error) - error = ddm_strlcpy(_name, name, B_FILE_NAME_LENGTH); + error = ddm_strlcpy(_name, name, B_DISK_DEVICE_NAME_LENGTH); return error; } @@ -893,8 +893,8 @@ _kern_validate_set_partition_content_name(partition_id partitionID, { if (!_name) return B_BAD_VALUE; - char name[B_FILE_NAME_LENGTH]; - status_t error = ddm_strlcpy(name, _name, B_FILE_NAME_LENGTH, true); + char name[B_DISK_DEVICE_NAME_LENGTH]; + status_t error = ddm_strlcpy(name, _name, B_DISK_DEVICE_NAME_LENGTH, true); if (error) return error; KDiskDeviceManager *manager = KDiskDeviceManager::Default(); @@ -907,7 +907,7 @@ _kern_validate_set_partition_content_name(partition_id partitionID, DeviceReadLocker locker(partition->Device(), true); error = validate_set_partition_content_name(partition, changeCounter, name); if (!error) - error = ddm_strlcpy(_name, name, B_FILE_NAME_LENGTH); + error = ddm_strlcpy(_name, name, B_DISK_DEVICE_NAME_LENGTH); return error; } @@ -918,8 +918,8 @@ _kern_validate_set_partition_type(partition_id partitionID, { if (!_type) return B_BAD_VALUE; - char type[B_FILE_NAME_LENGTH]; - status_t error = ddm_strlcpy(type, _type, B_FILE_NAME_LENGTH); + char type[B_DISK_DEVICE_TYPE_LENGTH]; + status_t error = ddm_strlcpy(type, _type, B_DISK_DEVICE_TYPE_LENGTH); if (error) return error; KDiskDeviceManager *manager = KDiskDeviceManager::Default(); @@ -943,12 +943,12 @@ _kern_validate_initialize_partition(partition_id partitionID, { if (!_diskSystemName || !_name || parametersSize > B_DISK_DEVICE_MAX_PARAMETER_SIZE) return B_BAD_VALUE; - char diskSystemName[B_OS_NAME_LENGTH]; - char name[B_FILE_NAME_LENGTH]; + char diskSystemName[B_DISK_SYSTEM_NAME_LENGTH]; + char name[B_DISK_DEVICE_NAME_LENGTH]; char *parameters = NULL; - status_t error = ddm_strlcpy(diskSystemName, _diskSystemName, B_OS_NAME_LENGTH); + status_t error = ddm_strlcpy(diskSystemName, _diskSystemName, B_DISK_SYSTEM_NAME_LENGTH); if (!error) - error = ddm_strlcpy(name, _name, B_FILE_NAME_LENGTH, true); + error = ddm_strlcpy(name, _name, B_DISK_DEVICE_NAME_LENGTH, true); if (error) return error; if (_parameters) { @@ -970,7 +970,7 @@ _kern_validate_initialize_partition(partition_id partitionID, diskSystemName, name, parameters); } if (!error) - error = ddm_strlcpy(_name, name, B_FILE_NAME_LENGTH); + error = ddm_strlcpy(_name, name, B_DISK_DEVICE_NAME_LENGTH); free(parameters); return error; } @@ -990,11 +990,11 @@ _kern_validate_create_child_partition(partition_id partitionID, } off_t offset; off_t size; - char type[B_FILE_NAME_LENGTH]; + char type[B_DISK_DEVICE_TYPE_LENGTH]; char *parameters = NULL; user_memcpy(&offset, _offset, sizeof(offset)); user_memcpy(&size, _size, sizeof(size)); - status_t error = ddm_strlcpy(type, _type, B_FILE_NAME_LENGTH); + status_t error = ddm_strlcpy(type, _type, B_DISK_DEVICE_TYPE_LENGTH); if (error) return error; if (_parameters) { @@ -1048,10 +1048,10 @@ _kern_get_next_supported_partition_type(partition_id partitionID, error = diskSystem ? B_OK : B_ENTRY_NOT_FOUND; if (!error) { // get the info - char type[B_FILE_NAME_LENGTH]; + char type[B_DISK_DEVICE_TYPE_LENGTH]; error = diskSystem->GetNextSupportedType(partition, &cookie, type); if (!error) { - error = ddm_strlcpy(_type, type, B_FILE_NAME_LENGTH); + error = ddm_strlcpy(_type, type, B_DISK_DEVICE_TYPE_LENGTH); } } } @@ -1068,8 +1068,8 @@ _kern_get_partition_type_for_content_type(disk_system_id diskSystemID, { if (!_contentType || !_type) return B_BAD_VALUE; - char contentType[B_FILE_NAME_LENGTH]; - status_t error = ddm_strlcpy(contentType, _contentType, B_FILE_NAME_LENGTH); + char contentType[B_DISK_DEVICE_TYPE_LENGTH]; + status_t error = ddm_strlcpy(contentType, _contentType, B_DISK_DEVICE_TYPE_LENGTH); if (error) return error; KDiskDeviceManager *manager = KDiskDeviceManager::Default(); @@ -1079,9 +1079,9 @@ _kern_get_partition_type_for_content_type(disk_system_id diskSystemID, return false; DiskSystemLoader loader(diskSystem, true); // get the info - char type[B_FILE_NAME_LENGTH]; + char type[B_DISK_DEVICE_TYPE_LENGTH]; if (diskSystem->GetTypeForContentType(contentType, type)) { - return ddm_strlcpy(_type, type, B_FILE_NAME_LENGTH); + return ddm_strlcpy(_type, type, B_DISK_DEVICE_TYPE_LENGTH); } return B_ERROR; } @@ -1303,8 +1303,8 @@ _kern_set_partition_name(partition_id partitionID, int32 changeCounter, { if (!_name) return B_BAD_VALUE; - char name[B_FILE_NAME_LENGTH]; - status_t error = ddm_strlcpy(name, _name, B_FILE_NAME_LENGTH); + char name[B_DISK_DEVICE_NAME_LENGTH]; + status_t error = ddm_strlcpy(name, _name, B_DISK_DEVICE_NAME_LENGTH); if (error) return error; KDiskDeviceManager *manager = KDiskDeviceManager::Default(); @@ -1316,7 +1316,7 @@ _kern_set_partition_name(partition_id partitionID, int32 changeCounter, PartitionRegistrar registrar2(partition->Device(), true); DeviceWriteLocker locker(partition->Device(), true); // check name - char proposedName[B_FILE_NAME_LENGTH]; + char proposedName[B_DISK_DEVICE_NAME_LENGTH]; strcpy(proposedName, name); error = validate_set_partition_name(partition, changeCounter, proposedName); @@ -1341,8 +1341,8 @@ _kern_set_partition_content_name(partition_id partitionID, int32 changeCounter, { if (!_name) return B_BAD_VALUE; - char name[B_FILE_NAME_LENGTH]; - status_t error = ddm_strlcpy(name, _name, B_FILE_NAME_LENGTH); + char name[B_DISK_DEVICE_NAME_LENGTH]; + status_t error = ddm_strlcpy(name, _name, B_DISK_DEVICE_NAME_LENGTH); if (error) return error; KDiskDeviceManager *manager = KDiskDeviceManager::Default(); @@ -1354,7 +1354,7 @@ _kern_set_partition_content_name(partition_id partitionID, int32 changeCounter, PartitionRegistrar registrar2(partition->Device(), true); DeviceWriteLocker locker(partition->Device(), true); // check name - char proposedName[B_FILE_NAME_LENGTH]; + char proposedName[B_DISK_DEVICE_NAME_LENGTH]; strcpy(proposedName, name); error = validate_set_partition_content_name(partition, changeCounter, proposedName); @@ -1379,8 +1379,8 @@ _kern_set_partition_type(partition_id partitionID, int32 changeCounter, { if (!_type) return B_BAD_VALUE; - char type[B_FILE_NAME_LENGTH]; - status_t error = ddm_strlcpy(type, _type, B_FILE_NAME_LENGTH); + char type[B_DISK_DEVICE_TYPE_LENGTH]; + status_t error = ddm_strlcpy(type, _type, B_DISK_DEVICE_TYPE_LENGTH); if (error) return error; KDiskDeviceManager *manager = KDiskDeviceManager::Default(); @@ -1498,12 +1498,12 @@ _kern_initialize_partition(partition_id partitionID, int32 changeCounter, { if (!_diskSystemName || !_name || parametersSize > B_DISK_DEVICE_MAX_PARAMETER_SIZE) return B_BAD_VALUE; - char diskSystemName[B_OS_NAME_LENGTH]; - char name[B_FILE_NAME_LENGTH]; + char diskSystemName[B_DISK_SYSTEM_NAME_LENGTH]; + char name[B_DISK_DEVICE_NAME_LENGTH]; char *parameters = NULL; - status_t error = ddm_strlcpy(diskSystemName, _diskSystemName, B_OS_NAME_LENGTH); + status_t error = ddm_strlcpy(diskSystemName, _diskSystemName, B_DISK_SYSTEM_NAME_LENGTH); if (!error) - error = ddm_strlcpy(name, _name, B_FILE_NAME_LENGTH); + error = ddm_strlcpy(name, _name, B_DISK_DEVICE_NAME_LENGTH); if (error) return error; if (_parameters) { @@ -1527,7 +1527,7 @@ _kern_initialize_partition(partition_id partitionID, int32 changeCounter, if (!error) { DiskSystemLoader loader(diskSystem, true); // check parameters - char proposedName[B_FILE_NAME_LENGTH]; + char proposedName[B_DISK_DEVICE_NAME_LENGTH]; strcpy(proposedName, name); error = validate_initialize_partition(partition, changeCounter, diskSystemName, proposedName, parameters); @@ -1583,9 +1583,9 @@ _kern_create_child_partition(partition_id partitionID, int32 changeCounter, { if (!_type || parametersSize > B_DISK_DEVICE_MAX_PARAMETER_SIZE) return B_BAD_VALUE; - char type[B_FILE_NAME_LENGTH]; + char type[B_DISK_DEVICE_TYPE_LENGTH]; char *parameters = NULL; - status_t error = ddm_strlcpy(type, _type, B_FILE_NAME_LENGTH); + status_t error = ddm_strlcpy(type, _type, B_DISK_DEVICE_TYPE_LENGTH); if (error) return error; if (_parameters) {